Browse Source

禁止通行原因

qzyReal 2 years ago
parent
commit
2bb46a1daa
24 changed files with 453 additions and 154 deletions
  1. 30 4
      business-system/filing-system/src/main/java/com/pj/api/WxController.java
  2. 9 0
      business-system/filing-system/src/main/java/com/pj/biz/TbCarFilingController.java
  3. 27 6
      business-system/filing-system/src/main/java/com/pj/biz/TbPersonFilingController.java
  4. 5 0
      pom.xml
  5. 0 1
      sp-admin/src/main/java/com/pj/current/TestStartUp.java
  6. 1 9
      sp-admin/src/main/java/com/pj/project4sp/test/TestController.java
  7. 0 1
      sp-core/src/main/java/com/pj/current/config/PerformConfigure.java
  8. 0 2
      sp-core/src/main/java/com/pj/current/mybatis/MybatisMapperDynamicLoader.java
  9. 0 3
      sp-core/src/main/java/com/pj/current/mybatis/MybatisStdOutImpl.java
  10. 7 1
      sp-core/src/main/java/com/pj/current/netty/command/handler/impl/HealthlogHandler.java
  11. 1 2
      sp-core/src/main/java/com/pj/current/sentinel/SentinelConfigure.java
  12. 45 8
      sp-core/src/main/java/com/pj/project/tb_car_filing/TbCarFiling.java
  13. 31 2
      sp-core/src/main/java/com/pj/project/tb_car_filing/TbCarFilingService.java
  14. 42 2
      sp-core/src/main/java/com/pj/project/tb_car_visit_record/TbCarVisitRecord.java
  15. 2 1
      sp-core/src/main/java/com/pj/project/tb_car_visit_record/TbCarVisitRecordMapper.xml
  16. 6 13
      sp-core/src/main/java/com/pj/project/tb_car_visit_record/TbCarVisitRecordService.java
  17. 18 2
      sp-core/src/main/java/com/pj/project/tb_gate_terminal/TbGateTerminalService.java
  18. 39 10
      sp-core/src/main/java/com/pj/project/tb_person_filing/TbPersonFiling.java
  19. 1 0
      sp-core/src/main/java/com/pj/project/tb_person_filing/TbPersonFilingMapper.xml
  20. 43 4
      sp-core/src/main/java/com/pj/project/tb_person_filing/TbPersonFilingService.java
  21. 146 80
      sp-core/src/main/java/com/pj/project4sp/uploadfile/UploadUtil.java
  22. 0 1
      sp-core/src/main/java/com/pj/utils/Ttime.java
  23. 0 1
      sp-core/src/main/java/com/pj/utils/sg/IpUtil.java
  24. 0 1
      sp-core/src/main/java/com/pj/utils/zkt/ZKTecoUtils.java

+ 30 - 4
business-system/filing-system/src/main/java/com/pj/api/WxController.java

@@ -30,7 +30,9 @@ import org.aspectj.weaver.loadtime.Aj;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 @RequestMapping("wx")
@@ -62,6 +64,23 @@ public class WxController {
     private TbDeptService tbDeptService;
 
 
+    @RequestMapping(value = "getNeedJudgeNum")
+    public AjaxJson getNeedJudgeNum() {
+        Map<String,Integer>result=new HashMap<>();
+        int num=0;
+        int personNum=0;
+        if (StpUserUtil.isAdmin()){
+            num = tbCarFilingService.getNeedJudgeNum(null);
+            personNum = tbPersonFilingService.getNeedJudgeNum(null);
+        }else  if (StpUserUtil.isJudgeAdmin()) {
+             num = tbCarFilingService.getNeedJudgeNum(StpUserUtil.getDepartmentId());
+             personNum = tbPersonFilingService.getNeedJudgeNum(StpUserUtil.getDepartmentId());
+        }
+        result.put("carNum",num);
+        result.put("personNum",personNum);
+        return AjaxJson.getSuccessData(result);
+    }
+
     @GetMapping(value = "getRedirectUrl")
     public AjaxJson getRedirectUrl(String path, @RequestParam(required = false) String state) {
         return AjaxJson.getSuccessData(wxService.getRedirectUrl(path, state));
@@ -139,10 +158,13 @@ public class WxController {
         if (!StpUtil.isLogin()) {
             throw new AjaxError("请先登录");
         }
+        if (StrUtil.isEmpty(tbPersonFiling.getPhoto())){
+            return AjaxJson.getError("请上传人脸");
+        }
         TbPersonFiling db = tbPersonFilingService.findByIdCard(tbPersonFiling.getIdCard());
         if (db != null) {
             tbPersonFiling = db;
-        }else {
+        } else {
             tbPersonFilingService.add(tbPersonFiling);
         }
         ReMiniUserPersonFiling reMiniUserPersonFiling = new ReMiniUserPersonFiling();
@@ -153,16 +175,17 @@ public class WxController {
     }
 
     @RequestMapping("judgePersonFiling")
-    public AjaxJson judge(TbPersonFiling filing){
+    public AjaxJson judge(TbPersonFiling filing) {
         tbPersonFilingService.judge(filing);
         return AjaxJson.getSuccess();
     }
 
     @RequestMapping("judgeCarFiling")
-    public AjaxJson judgeCarFiling(TbCarFiling filing){
+    public AjaxJson judgeCarFiling(TbCarFiling filing) {
         tbCarFilingService.judge(filing);
         return AjaxJson.getSuccess();
     }
+
     /**
      * 编辑备案
      *
@@ -171,6 +194,9 @@ public class WxController {
      */
     @PostMapping("editPersonFiling")
     public AjaxJson editPersonFiling(TbPersonFiling tbPersonFiling) {
+        if (StrUtil.isEmpty(tbPersonFiling.getPhoto())){
+            return AjaxJson.getError("请上传人脸");
+        }
         tbPersonFilingService.update(tbPersonFiling);
         return AjaxJson.getSuccess();
     }
@@ -223,7 +249,7 @@ public class WxController {
     @GetMapping("car-filing")
     public AjaxJson getCarFiling() {
         SoMap so = SoMap.getRequestSoMap();
-        StaticLog.info("is admin:{},{}",StpUserUtil.isAdmin(),StpUserUtil.isJudgeAdmin());
+        StaticLog.info("is admin:{},{}", StpUserUtil.isAdmin(), StpUserUtil.isJudgeAdmin());
         if (StpUserUtil.isAdmin()) {//超级管理员---看所有
             List<TbCarFiling> list = tbCarFilingService.getList(so.startPage());
             return AjaxJson.getPageData(so.getDataCount(), list);

+ 9 - 0
business-system/filing-system/src/main/java/com/pj/biz/TbCarFilingController.java

@@ -94,6 +94,15 @@ public class TbCarFilingController {
         List<TbCarFiling> list = tbCarFilingService.getList(so.startPage());
         return AjaxJson.getPageData(so.getDataCount(), list);
     }
+    @RequestMapping("export")
+    public AjaxJson export() {
+        SoMap so = SoMap.getRequestSoMap();
+        if (!StpUserUtil.isAdmin()) {
+            so.put("deptIdList",StpUserUtil.getDeptIdList());
+        }
+
+        return AjaxJson.getSuccessData(tbCarFilingService.export(so));
+    }
 
     @RequestMapping("judge")
     @SaCheckPermission(TbCarFiling.PERMISSION_CODE_JUDGE)

+ 27 - 6
business-system/filing-system/src/main/java/com/pj/biz/TbPersonFilingController.java

@@ -94,7 +94,7 @@ public class TbPersonFilingController {
     public AjaxJson getList() {
         SoMap so = SoMap.getRequestSoMap();
         if (!StpUserUtil.isAdmin()) {
-            so.put("deptIdList",StpUserUtil.getDeptIdList());
+            so.put("deptIdList", StpUserUtil.getDeptIdList());
         }
         List<TbPersonFiling> list = tbPersonFilingService.getList(so.startPage());
         return AjaxJson.getPageData(so.getDataCount(), list);
@@ -102,33 +102,54 @@ public class TbPersonFilingController {
 
     @RequestMapping("import")
     @SaCheckPermission(TbPersonFiling.PERMISSION_CODE_IMPORT)
-    public AjaxJson importExcel(@RequestPart MultipartFile file) throws Exception{
+    public AjaxJson importExcel(@RequestPart MultipartFile file) throws Exception {
         tbPersonFilingService.importExcel(file);
         return AjaxJson.getSuccess();
     }
+
+    @RequestMapping("export")
+    @SaCheckPermission(TbPersonFiling.PERMISSION_CODE_EXPORT)
+    public AjaxJson export() {
+        SoMap so = SoMap.getRequestSoMap();
+        if (!StpUserUtil.isAdmin()) {
+            so.put("deptIdList", StpUserUtil.getDeptIdList());
+        }
+        return AjaxJson.getSuccessData(tbPersonFilingService.export(so));
+    }
+
     @RequestMapping("importFace")
     @SaCheckPermission(TbPersonFiling.PERMISSION_CODE_IMPORT)
-    public AjaxJson importFace(@RequestPart MultipartFile file) throws Exception{
+    public AjaxJson importFace(@RequestPart MultipartFile file) throws Exception {
         tbPersonFilingService.importFace(file);
         return AjaxJson.getSuccess();
     }
 
     @RequestMapping("judge")
     @SaCheckPermission(TbPersonFiling.PERMISSION_CODE_JUDGE)
-    public AjaxJson judge(TbPersonFiling filing){
+    public AjaxJson judge(TbPersonFiling filing) {
         tbPersonFilingService.judge(filing);
         return AjaxJson.getSuccess();
     }
 
     @RequestMapping("issued")
     @SaCheckPermission(TbPersonFiling.PERMISSION_CODE_ISSUED)
-    public AjaxJson issued(TbPersonFiling filing){
+    public AjaxJson issued(TbPersonFiling filing) {
         tbPersonFilingService.issued(filing);
         return AjaxJson.getSuccess();
     }
+
     @RequestMapping("getShopCodeList")
-    public AjaxJson getShopCodeList(){
+    public AjaxJson getShopCodeList() {
         return AjaxJson.getSuccessData(tbPersonFilingService.getShopCodeList());
     }
 
+
+    @RequestMapping("rota")
+    public AjaxJson rota() {
+        SoMap soMap = SoMap.getRequestSoMap();
+        String id = soMap.getString("id");
+        int rota = soMap.getInt("rota");
+        tbPersonFilingService.rota(id,rota);
+        return AjaxJson.getSuccess();
+    }
 }

+ 5 - 0
pom.xml

@@ -49,6 +49,11 @@
 		    <artifactId>mybatis-plus-boot-starter</artifactId>
 			<version>3.4.2</version>
 		</dependency>
+		<dependency>
+			<groupId>com.drewnoakes</groupId>
+			<artifactId>metadata-extractor</artifactId>
+			<version>2.18.0</version>
+		</dependency>
 		
         <!-- pagehelper分页插件 -->
         <dependency>

+ 0 - 1
sp-admin/src/main/java/com/pj/current/TestStartUp.java

@@ -7,6 +7,5 @@ import org.springframework.stereotype.Component;
 public class TestStartUp implements CommandLineRunner {
     @Override
     public void run(String... args) throws Exception {
-        System.out.println("启动===========================admin");
     }
 }

+ 1 - 9
sp-admin/src/main/java/com/pj/project4sp/test/TestController.java

@@ -13,15 +13,7 @@ import com.pj.utils.sg.AjaxJson;
 public class TestController {
 
 	
-	/**
-	 * 测试请求,如果能正常访问此路由,则证明项目已经部署成功 
-	 * @return
-	 */
-	@RequestMapping("/test")
-	public AjaxJson test() {
-		System.out.println("------------------ 成功进入请求 ------------------");
-		return AjaxJson.getSuccess("请求成功");
-	}
+
 
 	
 }

+ 0 - 1
sp-core/src/main/java/com/pj/current/config/PerformConfigure.java

@@ -24,7 +24,6 @@ public class PerformConfigure implements WebMvcConfigurer {
 
     @Override
     public void addInterceptors(InterceptorRegistry registry) {
-    	System.out.println("\n---------------------- 演示模式启动 \n");
         registry.addInterceptor(new SaRouteInterceptor((req, res, handler)->{
         	// 演示模式校验 
 			SaRouter.match(

+ 0 - 2
sp-core/src/main/java/com/pj/current/mybatis/MybatisMapperDynamicLoader.java

@@ -56,8 +56,6 @@ public class MybatisMapperDynamicLoader implements InitializingBean, Application
                     try {
                         if (scanner.isChanged()) {
                             // System.out.println("load mapper.xml");
-                        	String now = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
-                        	System.out.println("mapper.xml热刷新成功,当前时间:" + now);
                             scanner.reloadXml();
                         }
                     } catch (Exception e) {

+ 0 - 3
sp-core/src/main/java/com/pj/current/mybatis/MybatisStdOutImpl.java

@@ -55,7 +55,6 @@ public class MybatisStdOutImpl implements Log {
 //			s = s.replaceAll("==>  Preparing: ", "");
 //			s = "==>  Preparing: " + s;
 		}
-		System.out.println(s);
 	}
 
 	/** 
@@ -63,12 +62,10 @@ public class MybatisStdOutImpl implements Log {
 	 */
 	@Override
 	public void trace(String s) {
-		System.out.println(s);
 	}
 
 	@Override
 	public void warn(String s) {
-		System.out.println(s);
 	}
 
 

+ 7 - 1
sp-core/src/main/java/com/pj/current/netty/command/handler/impl/HealthlogHandler.java

@@ -3,10 +3,12 @@ package com.pj.current.netty.command.handler.impl;
 import cn.hutool.cache.CacheUtil;
 import cn.hutool.cache.impl.TimedCache;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.img.ImgUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
+import com.drew.imaging.ImageMetadataReader;
 import com.pj.current.config.MyConfig;
 import com.pj.current.config.WxConfig;
 import com.pj.current.netty.command.constants.CommandType;
@@ -43,6 +45,7 @@ import com.pj.project.wx.bo.MsgDataBO;
 import com.pj.project4sp.sms.DuanXinBaoSMSService;
 import com.pj.project4sp.spcfg.SpCfgUtil;
 import com.pj.utils.cache.RedisUtil;
+import com.sun.javafx.iio.ImageMetadata;
 import io.netty.channel.ChannelHandlerContext;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -168,10 +171,12 @@ public class HealthlogHandler implements IHandler {
                             .forEach(tbGateTerminal -> openGate(tbGateTerminal.getId(), channelId));
                 }
                 if (resultDTO.getResult() != null && resultDTO.getResult() == 0) {
+                    resultDTO.setReason("人脸识别放行");
                     this.updateCarRecord(resultDTO, dto, tbPersonFiling);
                 }
             } else if (resultDTO.getResult() != null && resultDTO.getResult() == 1 && allowPass) {
                 openGate(resultDTO.getGateTerminalId(), channelId);
+                resultDTO.setReason("人车识别一致放行");
                 this.updateCarRecord(resultDTO, dto, tbPersonFiling);
             }
         }
@@ -192,9 +197,10 @@ public class HealthlogHandler implements IHandler {
             } else if (!TbPersonVisitRecord.HealthEnum.GREEN.getDesc().equals(dto.getHealth_status())) {
                 record.setReason(dto.getHealth_status());
             } else {
-                record.setReason("行程未知");
+                record.setReason("行程或核酸未知");
             }
         }
+
         tbPersonVisitRecordService.saveOrUpdate(record);
         tbTerminal.setLastOnLine(DateUtil.now());
         tbTerminalService.updateById(tbTerminal);

+ 1 - 2
sp-core/src/main/java/com/pj/current/sentinel/SentinelConfigure.java

@@ -34,8 +34,7 @@ public class SentinelConfigure {
 	 * 初始化降级规则 
 	 */
 	private static void initFlowRules() {
-		System.out.println("----------------------- 初始化限流规则 !!!");
-		
+
         List<FlowRule> rules = new ArrayList<>();
 
         // 规则  qps > 1 时,触发降级 

+ 45 - 8
sp-core/src/main/java/com/pj/project/tb_car_filing/TbCarFiling.java

@@ -5,6 +5,8 @@ import java.util.Date;
 
 import cn.hutool.core.util.IdcardUtil;
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
 import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import lombok.EqualsAndHashCode;
@@ -39,6 +41,7 @@ public class TbCarFiling extends Model<TbCarFiling> implements Serializable {
 	public static final String PERMISSION_CODE_DEL = "tb-car-filing-del";
 	public static final String PERMISSION_CODE_EDIT = "tb-car-filing-edit";
 	public static final String PERMISSION_CODE_JUDGE = "tb-car-filing-judge";
+	public static final String PERMISSION_CODE_EXPORT = "tb-car-filing-export";
 
 
 	// ---------- 表中字段 ----------
@@ -46,111 +49,145 @@ public class TbCarFiling extends Model<TbCarFiling> implements Serializable {
 	 *  
 	 */
 	@TableId(type = IdType.AUTO)
+	@ExcelIgnore
 	private Long id;
-
+	@ExcelIgnore
 	private String departmentId;
 	/**
 	 * 场所ID
 	 */
+	@ExcelIgnore
 	private Long venuesId;
 
 	/**
 	 * 组织ID
 	 */
+	@ExcelIgnore
 	private Long deptId;	
-	private String deptName;
+
 
 	/**
 	 * 车牌号
 	 */
+	@ExcelProperty(index = 0,value = "车牌号")
 	private String carNo;
-
+	@ExcelProperty(index = 1,value = "备案组织")
+	private String deptName;
 	/**
 	 * 类型(1=临时,2=内部)
 	 */
+	@ExcelIgnore
 	private int type=1;
 
 	/**
 	 * 联系人
 	 */
+	@ExcelProperty(index = 2,value = "备案司机")
 	private String driverName;
 	/**
 	 * 司机工号
 	 */
+	@ExcelIgnore
 	private String driverPin;
 	/**
 	 * 司机人脸
 	 */
+	@ExcelIgnore
 	private String driverPhoto;
 
 	/**
 	 * 联系电话 
 	 */
+	@ExcelProperty(index = 3,value = "联系号码")
 	private String driverContact;	
 
 	/**
 	 * 联系人身份证 
 	 */
+	@ExcelIgnore
 	private String driverIdCard;	
 
 	/**
 	 * 预计来访时间 
 	 */
+	@ExcelIgnore
 	private Date preComeTime;
 
 	/**
 	 * 预计结束时间 
 	 */
+	@ExcelIgnore
 	private Date preLeaveTime;
 
 	/**
 	 * 状态 0未到访,1已来防
 	 */
+	@ExcelIgnore
 	private int visit;
-
+	@ExcelProperty(index =7,value = "商铺号")
 	private String shopCode;
 	/**
 	 * 备注 
 	 */
-	private String remark;	
+	@ExcelIgnore
+	private String remark;
+
+	/**
+	 * 备案过期时间
+	 */
+	@ExcelProperty(index =8,value = "有效期")
+	private Date endTime;
 
 	/**
 	 * 创建时间 
 	 */
 	@TableField(fill = FieldFill.INSERT)
+	@ExcelProperty(index =9,value = "创建时间")
 	private Date createTime;
 
 	/**
 	 * 创建人 
 	 */
 	@TableField(fill = FieldFill.INSERT)
+	@ExcelIgnore
 	private String createBy;	
 
 	/**
 	 * 更新时间 
 	 */
 	@TableField(fill = FieldFill.UPDATE)
+	@ExcelIgnore
 	private Date updateTime;
 
 	/**
 	 * 更新人 
 	 */
 	@TableField(fill = FieldFill.UPDATE)
+	@ExcelIgnore
 	private String updateBy;
-
+	@ExcelIgnore
 	private Integer judgeState=0;
+	@ExcelProperty(index =10,value = "审核时间")
 	private Date judgeTime;
+	@ExcelProperty(index =11,value = "审核人")
 	private String judgeBy;
-
+	/**
+	 * 审核意见
+	 */
+	@ExcelProperty(index =12,value = "审核意见")
+	private String judgeContent;
 	@TableField(exist = false)
+	@ExcelProperty(index =6,value = "审核部门")
 	private String departmentName;
 
 	@TableField(exist = false)
+	@ExcelProperty(index =5,value = "备案场所")
 	private String venuesName;
 
 	@TableField(exist = false)
+	@ExcelProperty(index =4,value = "司机身份证")
 	private String driverIdCardStr;
-
+	@ExcelIgnore
 	@TableField(exist = false)
 	private String note;
 

+ 31 - 2
sp-core/src/main/java/com/pj/project/tb_car_filing/TbCarFilingService.java

@@ -13,6 +13,7 @@ import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
+import com.alibaba.excel.EasyExcel;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -75,7 +76,8 @@ public class TbCarFilingService extends ServiceImpl<TbCarFilingMapper, TbCarFili
     private WxService wxService;
     @Resource
     private TbMiniUserService tbMiniUserService;
-
+    @Resource
+    private UploadConfig uploadConfig;
 
     /**
      * 增
@@ -268,7 +270,7 @@ public class TbCarFilingService extends ServiceImpl<TbCarFilingMapper, TbCarFili
         List<TbMiniUser> miniUsers = tbMiniUserService.findByCarFilingId(t.getId());
         miniUsers.parallelStream().forEach(tbMiniUser -> {
             MsgDataBO data = new MsgDataBO("您有一个备案审核提醒", judgeState == 2 ? "不通过" : "通过"
-                    , tbMiniUser.getName(), t.getCarNo() + "人员备案", "审核时间:" + DateUtil.now());
+                    , tbMiniUser.getName(), t.getCarNo() + "车辆备案", "审核时间:" + DateUtil.now());
             wxService.sendTemplateMsg(wxConfig.getJudgeResultTemplate(), tbMiniUser.getOpenid(), data);
         });
     }
@@ -284,4 +286,31 @@ public class TbCarFilingService extends ServiceImpl<TbCarFilingMapper, TbCarFili
         ew.lambda().eq(TbCarFiling::getCarNo, carNo);
         return list(ew);
     }
+
+    public String export(SoMap so) {
+        List<TbCarFiling>list=tbCarFilingMapper.getList(so);
+        String flieTypeFolder = "/export/";
+        String currDateFolder = DateUtil.today();
+        String fileName = "car-filing-" + RandomUtil.randomNumbers(6) + ".xlsx";
+        String fileFolder = new File(uploadConfig.rootFolder).getAbsolutePath() +
+                uploadConfig.httpPrefix + flieTypeFolder + currDateFolder + "/";
+        if (!FileUtil.exist(fileFolder)) {
+            FileUtil.mkdir(fileFolder);
+        }
+        EasyExcel.write(fileFolder + fileName, TbCarFiling.class).sheet("车辆备案信息")
+                .doWrite(() -> list);
+        return SystemObject.config.getDomain() + uploadConfig.httpPrefix + flieTypeFolder + currDateFolder + "/" + fileName;
+    }
+
+    /**
+     * 需要审核的数量
+     * @param departmentId
+     * @return
+     */
+    public int getNeedJudgeNum(String departmentId) {
+        QueryWrapper<TbCarFiling>ew=new QueryWrapper<>();
+        ew.lambda().eq(StrUtil.isNotEmpty(departmentId),TbCarFiling::getDepartmentId,departmentId)
+                .eq(TbCarFiling::getJudgeState,0);
+        return this.count(ew);
+    }
 }

+ 42 - 2
sp-core/src/main/java/com/pj/project/tb_car_visit_record/TbCarVisitRecord.java

@@ -3,6 +3,8 @@ package com.pj.project.tb_car_visit_record;
 import java.io.Serializable;
 import java.util.Date;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
 import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import lombok.EqualsAndHashCode;
@@ -44,81 +46,119 @@ public class TbCarVisitRecord extends Model<TbCarVisitRecord> implements Seriali
 	 * 主键 
 	 */
 	@TableId(type = IdType.AUTO)
-	private Long id;	
-
+	@ExcelIgnore
+	private Long id;
+	@ExcelIgnore
 	private String departmentId;
+	@ExcelIgnore
 	private Long venuesId;
 	/**
 	 * 通道 
 	 */
+	@ExcelIgnore
 	private Long channelId;
+	@ExcelIgnore
 	private Long deptId;
+
+	@ExcelProperty(index = 1,value = "备案组织")
 	private String deptName;
+	@ExcelProperty(index = 2,value = "通道")
 	private String channel;
 
 	/**
 	 * 车牌 
 	 */
+	@ExcelProperty(index = 0,value = "车牌号")
 	private String carNo;	
 
 	/**
 	 * 通过时间 
 	 */
+	@ExcelProperty(index = 3,value = "通行时间")
 	private Date visitTime;
 
 	/**
 	 * 方向(1=入,2=出) 
 	 */
+	@ExcelIgnore
 	private Integer direction;	
 
 	/**
 	 * 图片 
 	 */
+	@ExcelIgnore
 	private String image;	
 
 	/**
 	 * 类型(1=临时,2=内部) 
 	 */
+	@ExcelIgnore
 	private Integer type=1;
 
 	/**
 	 * 联系人 
 	 */
+	@ExcelProperty(index = 4,value = "联系人")
 	private String driverName;	
 
 	/**
 	 * 联系电话 
 	 */
+	@ExcelProperty(index = 5,value = "联系电话")
 	private String driverContact;	
 
 	/**
 	 * 联系人身份证 
 	 */
+	@ExcelIgnore
 	private String driverIdCard;
+	@ExcelProperty(index = 6,value = "禁行原因")
 	private String reason;
 
 	/**
 	 * 方式(1=手动,2=自动) 
 	 */
+	@ExcelIgnore
 	private Integer recordType=1;
 	@TableField(fill = FieldFill.INSERT)
+	@ExcelIgnore
 	private Date createTime;
 	@TableField(fill = FieldFill.UPDATE)
+	@ExcelIgnore
 	private Date updateTime;
 	/**
 	 * 是否允许通行
 	 */
+	@ExcelIgnore
 	private Integer allowPass=1;
 
 	@TableField(exist = false)
+	@ExcelProperty(index = 7,value = "分类")
 	private String typeStr;
 	@TableField(exist = false)
+	@ExcelProperty(index = 8,value = "方向")
 	private String directionStr;
 
 	@TableField(exist = false)
+	@ExcelProperty(index = 9,value = "场所")
 	private String venuesName;
 
+	@TableField(exist = false)
+	@ExcelIgnore
+	private transient String startTime;
+	@TableField(exist = false)
+	@ExcelIgnore
+	private transient String endTime;
+
 
+
+	@TableField(exist = false)
+	@ExcelProperty(index = 10,value = "是否通行")
+	private  String allowPassStr;
+
+	public String getAllowPassStr() {
+		return allowPass==1?"允许通行":"禁止通行";
+	}
 	public String getTypeStr() {
 		return recordType == 1 ? "补录" : "设备上传";
 	}

+ 2 - 1
sp-core/src/main/java/com/pj/project/tb_car_visit_record/TbCarVisitRecordMapper.xml

@@ -38,7 +38,8 @@
 			<if test=' this.has("deptId") '> and dept_id = #{deptId} </if>
 			<if test=' this.has("departmentId") '>and department_id = #{departmentId}</if>
 			<if test=' this.has("carNo") '> and car_no like concat('%',#{carNo},'%') </if>
-			<if test=' this.has("visitTime") '> and visit_time = #{visitTime} </if>
+			<if test=' this.has("startTime") '>and date_format(visit_time,'%Y-%m-%d %H:%i:%s') &gt;= #{startTime}</if>
+			<if test=' this.has("endTime") '>and date_format(visit_time,'%Y-%m-%d %H:%i:%s') &lt;= #{endTime}</if>
 			<if test=' this.has("direction") '> and direction = #{direction} </if>
 			<if test=' this.has("type") '> and type = #{type} </if>
 			<if test=' this.has("driverName") '> and driver_name like concat('%',#{driverName} '%')</if>

+ 6 - 13
sp-core/src/main/java/com/pj/project/tb_car_visit_record/TbCarVisitRecordService.java

@@ -6,13 +6,16 @@ import java.util.List;
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.util.RandomUtil;
 import cn.hutool.poi.excel.ExcelUtil;
 import cn.hutool.poi.excel.ExcelWriter;
+import com.alibaba.excel.EasyExcel;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.pj.current.config.SystemObject;
 import com.pj.project.tb_dept.TbDept;
 import com.pj.project.tb_dept.TbDeptService;
+import com.pj.project.tb_person_filing.TbPersonFiling;
 import com.pj.project.tb_person_visit_record.TbPersonVisitRecord;
 import com.pj.project.tb_venues.TbVenues;
 import com.pj.project.tb_venues.TbVenuesService;
@@ -103,24 +106,14 @@ public class TbCarVisitRecordService extends ServiceImpl<TbCarVisitRecordMapper,
         List<TbCarVisitRecord> list = this.getList(soMap);
         String flieTypeFolder = "/export/";
         String currDateFolder = DateUtil.today();
-        String fileName = "carRecord-" + DateUtil.format(new Date(), "yyyyMMddHHmmss") + ".xlsx";
+        String fileName = "car-record-" + RandomUtil.randomNumbers(6) + ".xlsx";
         String fileFolder = new File(uploadConfig.rootFolder).getAbsolutePath() +
                 uploadConfig.httpPrefix + flieTypeFolder + currDateFolder + "/";
         if (!FileUtil.exist(fileFolder)) {
             FileUtil.mkdir(fileFolder);
         }
-        ExcelWriter writer = ExcelUtil.getWriter(fileFolder + fileName);
-        writer.addHeaderAlias("deptName", "部门");
-        writer.addHeaderAlias("driverName", "联系人");
-        writer.addHeaderAlias("driverContact", "联系号码");
-        writer.addHeaderAlias("channel", "通道");
-        writer.addHeaderAlias("carNo", "车牌");
-        writer.addHeaderAlias("visitTime", "时间");
-        writer.addHeaderAlias("typeStr", "补录/自动");
-        writer.addHeaderAlias("directionStr", "入场/离场");
-        writer.setOnlyAlias(true);
-        writer.write(list, true);
-        writer.close();
+        EasyExcel.write(fileFolder + fileName, TbCarVisitRecord.class).sheet("车辆出入记录")
+                .doWrite(() -> list);
         return SystemObject.config.getDomain() + uploadConfig.httpPrefix + flieTypeFolder + currDateFolder + "/" + fileName;
     }
 

+ 18 - 2
sp-core/src/main/java/com/pj/project/tb_gate_terminal/TbGateTerminalService.java

@@ -340,6 +340,7 @@ public class TbGateTerminalService extends ServiceImpl<TbGateTerminalMapper, TbG
      * @param recordId
      */
     private void cacheResult(String carNo, String now, TbGateTerminal tbGateTerminal, Long recordId) {
+       TbCarVisitRecord carVisitRecord= tbCarVisitRecordService.getById(recordId);
         Long channelId = tbGateTerminal.getChannelId();
         Long venuesId = tbGateTerminal.getVenuesId();
         TbCarBlack tbCarBlack = tbCarBlackService.findByCarNo(carNo, now);
@@ -351,7 +352,8 @@ public class TbGateTerminalService extends ServiceImpl<TbGateTerminalMapper, TbG
         if (tbCarBlack != null
                 &&nowTime<=tbCarBlack.getEndTime().getTime()
                 &&nowTime>=tbCarBlack.getStartTime().getTime()) {
-            dto.setReason("黑名单车辆");
+            carVisitRecord.setReason("黑名单车辆");
+            tbCarVisitRecordService.updateById(carVisitRecord);
             RedisUtil.set(key, JSONUtil.toJsonStr(dto));
             log.error("黑名单车辆:{}", carNo);
             return;
@@ -360,6 +362,8 @@ public class TbGateTerminalService extends ServiceImpl<TbGateTerminalMapper, TbG
         if (channel.getStatus() == 0) {
             RedisUtil.set(key, JSONUtil.toJsonStr(dto));
             dto.setReason("防疫策略不开放");
+            carVisitRecord.setReason("防疫策略不开放");
+            tbCarVisitRecordService.updateById(carVisitRecord);
             log.error("防疫策略不开放:{}", carNo);
             return;
         }
@@ -369,9 +373,19 @@ public class TbGateTerminalService extends ServiceImpl<TbGateTerminalMapper, TbG
         if (carFilingList.isEmpty()) {
             RedisUtil.set(key, JSONUtil.toJsonStr(dto));
             dto.setReason("车辆未备案");
+            carVisitRecord.setReason("车辆未备案");
+            tbCarVisitRecordService.updateById(carVisitRecord);
             log.error("车辆未备案:{}", carNo);
             return;
         }
+       long count= carFilingList.stream().filter(tbCarFiling -> tbCarFiling.getEndTime()!=null&&tbCarFiling.getEndTime().getTime()>nowTime).count();
+        if (count==0){
+            RedisUtil.set(key, JSONUtil.toJsonStr(dto));
+            dto.setReason("备案已过期");
+            carVisitRecord.setReason("备案已过期");
+            tbCarVisitRecordService.updateById(carVisitRecord);
+            log.error("备案已过期:{}", carNo);
+        }
         //设备所在场所
         TbVenues terminalVenues = tbVenuesService.getById(venuesId);
         //找出备案等级比之高的场所
@@ -382,7 +396,9 @@ public class TbGateTerminalService extends ServiceImpl<TbGateTerminalMapper, TbG
         //备案场所的等级低于入场的场所===>不给通行
         if (!optionalTbVenues.isPresent()) {
             RedisUtil.set(key, JSONUtil.toJsonStr(dto));
-            dto.setReason("备案场所等级不足");
+            dto.setReason("备案场所不匹配");
+            carVisitRecord.setReason("备案场所不匹配");
+            tbCarVisitRecordService.updateById(carVisitRecord);
             log.error("备案场所等级不足,无法进入:{}", carNo);
             return;
         }

+ 39 - 10
sp-core/src/main/java/com/pj/project/tb_person_filing/TbPersonFiling.java

@@ -5,6 +5,8 @@ import java.util.Date;
 
 import cn.hutool.core.util.IdcardUtil;
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
 import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.fasterxml.jackson.annotation.JsonFormat;
@@ -46,6 +48,7 @@ public class TbPersonFiling extends Model<TbPersonFiling> implements Serializabl
     public static final String PERMISSION_CODE_JUDGE = "tb-person-filing-judge";
     public static final String PERMISSION_CODE_ISSUED = "tb-person-filing-issued";
     public static final String PERMISSION_CODE_IMPORT = "tb-person-filing-import";
+    public static final String PERMISSION_CODE_EXPORT = "tb-person-filing-export";
 
 
     // ---------- 表中字段 ----------
@@ -53,111 +56,136 @@ public class TbPersonFiling extends Model<TbPersonFiling> implements Serializabl
      *
      */
     @TableId(type = IdType.AUTO)
+    @ExcelIgnore
     private Long id;
     /**
      * 场所ID
      */
+    @ExcelIgnore
     private Long venuesId;
     /**
      * 部门ID
      */
+    @ExcelIgnore
     private String departmentId;
     /**
      * 组织ID
      */
+    @ExcelIgnore
     private Long deptId;
 
     /**
      * 姓名
      */
+    @ExcelProperty(index = 0,value = "姓名")
     private String name;
     /**
      * 工号
      */
+    @ExcelIgnore
     private String pin;
+    @ExcelProperty(index = 1,value = "手机号")
     private String phone;
 
 
     /**
      * 类型(1=临时,2=内部)
      */
+    @ExcelIgnore
     private Integer type = 1;
 
     /**
      * 身份证
      */
+    @ExcelIgnore
     private String idCard;
     /**
      * 身份证图片url
      */
+    @ExcelIgnore
     private String idCardUrl;
 
     /**
      * 来访事由
      */
+    @ExcelIgnore
     private String visitReason;
 
     /**
      * 预计来访时间
      */
+    @ExcelIgnore
     private Date preComeTime;
 
     /**
      * 预计结束时间
      */
+    @ExcelIgnore
     private Date preLeaveTime;
 
     /**
      * 状态
      */
+    @ExcelIgnore
     private String visit;
-
+    @ExcelIgnore
     private String photo;
 
     /**
      * 备注
      */
+    @ExcelIgnore
     private String remark;
 
     /**
      * 创建时间
      */
     @TableField(fill = FieldFill.INSERT)
+    @ExcelProperty(index = 6,value = "申请时间")
     private Date createTime;
 
     /**
      * 创建人
      */
     @TableField(fill = FieldFill.INSERT)
+    @ExcelIgnore
     private String createBy;
 
     /**
      * 更新时间
      */
     @TableField(fill = FieldFill.UPDATE)
+    @ExcelIgnore
     private Date updateTime;
 
     /**
      * 更新人
      */
     @TableField(fill = FieldFill.UPDATE)
+    @ExcelIgnore
     private String updateBy;
-
+    @ExcelIgnore
     private int judgeState;
+    @ExcelProperty(index = 8,value = "审核时间")
     private Date judgeTime;
+    @ExcelProperty(index = 7,value = "审核人")
     private String judgeBy;
+    @ExcelIgnore
     private String openid;
     /**
      * 边民证号
      */
+    @ExcelProperty(value = "边民证")
     private String icCard;
     /**
      * 边民证图片url
      */
+    @ExcelIgnore
     private String icCardUrl;
     /**
      * 边民证或身份证图片url
      */
+    @ExcelIgnore
     private String cardUrl;
     /**
      * 边民证有效期,起始日期
@@ -165,38 +193,39 @@ public class TbPersonFiling extends Model<TbPersonFiling> implements Serializabl
 
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ExcelIgnore
     private Date icCardStartTime;
     /**
      * 边民证有效期,到期时间
      */
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ExcelProperty(index=9,value = "边民证有效期")
     private Date icCardEndTime;
-
+    @ExcelProperty(index=10,value = "商铺号")
     private String shopCode;
-
+    @ExcelProperty(index=11,value = "备案有效期")
     private Date endTime;
     /**
      * 审核意见
      */
+    @ExcelProperty(value = "审核意见")
     private String judgeContent;
 
 
-
-
-
-
-
-
     @TableField(exist = false)
+    @ExcelProperty(index = 4,value = "备案组织")
     private String deptName;
 
     @TableField(exist = false)
+    @ExcelProperty(index = 2,value = "身份证")
     private String idCadStr;
     @TableField(exist = false)
+    @ExcelProperty(index = 3,value = "备案场所")
     private String venuesName;
 
     @TableField(exist = false)
+    @ExcelProperty(index = 5,value = "审核单位")
     private String departmentName;
 
     public String getIdCadStr() {

+ 1 - 0
sp-core/src/main/java/com/pj/project/tb_person_filing/TbPersonFilingMapper.xml

@@ -40,6 +40,7 @@
             <if test=' this.has("id") '>and id = #{id}</if>
             <if test=' this.has("deptId") '> and dept_id = #{deptId} </if>
             <if test=' this.has("departmentId") '>and department_id = #{departmentId}</if>
+            <if test=' this.has("phone") '>and phone like concat('%',#{phone},'%')</if>
             <if test=' this.has("deptIdList") '>
             and dept_id in
             <foreach collection="deptIdList" open="(" close=")" separator="," item="deptId">

+ 43 - 4
sp-core/src/main/java/com/pj/project/tb_person_filing/TbPersonFilingService.java

@@ -429,10 +429,10 @@ public class TbPersonFilingService extends ServiceImpl<TbPersonFilingMapper, TbP
         List<TbMiniUser> miniUsers = tbMiniUserService.findByPersonFilingId(filing.getId());
         miniUsers.parallelStream().forEach(tbMiniUser -> {
             MsgDataBO data = new MsgDataBO(
-                    "您有一个备案审核提醒", judgeState == 2 ? "不通过" : "通过" ,
+                    "您有一个备案审核提醒", judgeState == 2 ? "不通过" : "通过",
                     tbMiniUser.getName(),
                     db.getName() + "人员备案",
-                    "审核时间:" + DateUtil.now()+";"+filing.getJudgeContent());
+                    "审核时间:" + DateUtil.now() + ";" + filing.getJudgeContent());
             wxService.sendTemplateMsg(wxConfig.getJudgeResultTemplate(), tbMiniUser.getOpenid(), data);
         });
     }
@@ -595,11 +595,50 @@ public class TbPersonFilingService extends ServiceImpl<TbPersonFilingMapper, TbP
 
     /**
      * 查找过期
+     *
      * @return
      */
     public List<TbPersonFiling> findExpire() {
-        QueryWrapper<TbPersonFiling>ew=new QueryWrapper<>();
-        ew.le("date_format(end_time,'%Y-%m-%d')",DateUtil.today());
+        QueryWrapper<TbPersonFiling> ew = new QueryWrapper<>();
+        ew.le("date_format(end_time,'%Y-%m-%d')", DateUtil.today());
         return list(ew);
     }
+
+    public String export(SoMap so) {
+        List<TbPersonFiling> list = this.getList(so);
+        String flieTypeFolder = "/export/";
+        String currDateFolder = DateUtil.today();
+        String fileName = "filing-" + RandomUtil.randomNumbers(6) + ".xlsx";
+        String fileFolder = new File(uploadConfig.rootFolder).getAbsolutePath() +
+                uploadConfig.httpPrefix + flieTypeFolder + currDateFolder + "/";
+        if (!FileUtil.exist(fileFolder)) {
+            FileUtil.mkdir(fileFolder);
+        }
+        EasyExcel.write(fileFolder + fileName, TbPersonFiling.class).sheet("人员备案信息")
+                .doWrite(() -> list);
+        return SystemObject.config.getDomain() + uploadConfig.httpPrefix + flieTypeFolder + currDateFolder + "/" + fileName;
+    }
+
+    public int getNeedJudgeNum(String departmentId) {
+        QueryWrapper<TbPersonFiling> ew = new QueryWrapper<>();
+        ew.lambda().eq(TbPersonFiling::getJudgeState, 0)
+                .eq(StrUtil.isNotEmpty(departmentId), TbPersonFiling::getDepartmentId, departmentId);
+        return this.count(ew);
+    }
+
+    public void rota(String id, int rota) {
+        TbPersonFiling tbPersonFiling = this.getById(id);
+        String photo = tbPersonFiling.getPhoto();
+        String rootPath = uploadConfig.rootFolder;
+        String domain = SystemObject.config.getDomain();
+        String httpPrefix = StrUtil.sub(photo, 0, photo.lastIndexOf("/") + 1);
+        String filePath = new File(rootPath + photo.replace(domain, "")).getAbsolutePath();
+        String dirPath = StrUtil.sub(filePath, 0, filePath.lastIndexOf(File.separator) + 1);
+        String newFilename = RandomUtil.randomNumbers(32) + ".jpg";
+        ImgUtil.rotate(new File(filePath),rota,new File(dirPath+newFilename));
+        FileUtil.del(new File(filePath));
+        tbPersonFiling.setPhoto(httpPrefix+newFilename);
+        this.updateById(tbPersonFiling);
+        this.issued(tbPersonFiling);
+    }
 }

+ 146 - 80
sp-core/src/main/java/com/pj/project4sp/uploadfile/UploadUtil.java

@@ -1,106 +1,172 @@
 package com.pj.project4sp.uploadfile;
 
 import java.io.File;
+import java.io.InputStream;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Random;
+import java.util.concurrent.atomic.AtomicInteger;
 
+import cn.hutool.core.img.ImgUtil;
+import cn.hutool.log.StaticLog;
+import com.drew.imaging.ImageMetadataReader;
+import com.drew.metadata.Metadata;
+import com.drew.metadata.MetadataException;
+import com.drew.metadata.exif.ExifDirectoryBase;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.web.multipart.MultipartFile;
 
 import com.pj.current.config.SystemObject;
 
+import javax.sound.midi.Soundbank;
+
 /**
  * 文件上传工具类(基于应用服务器的文件上传)
- * @author kong
  *
+ * @author kong
  */
 @Component
 public class UploadUtil {
 
-	/** 注入配置  */
-	public static UploadConfig uploadConfig;
-	@Autowired
-	public void setUploadConfig(UploadConfig uploadConfig) {
-		UploadUtil.uploadConfig = uploadConfig;
-	}
-	
-	/** 将文件名保存在服务器硬盘上,并把文件对应的http地址返回给前台  */
-	public static String saveFile(MultipartFile file, String flieTypeFolder) {
-		
-		// 1、计算路径  
-		// 根据日期计算需要保存的文件夹 
-		String currDateFolder = getCurrDateFolder();		
-		// 文件名 
-		String fileName = getMarking28() + '.' + getSuffixName(file.getOriginalFilename());				
-		// 需要保存到的文件夹地址 
-		String fileFolder = new File(uploadConfig.rootFolder).getAbsolutePath() + "/" +
-				uploadConfig.httpPrefix + flieTypeFolder + currDateFolder + "/";	
-		// 对外暴露的http路径
-		String httpUrl = getDoMain() + uploadConfig.httpPrefix + flieTypeFolder + currDateFolder + "/" + fileName;	
-		
-		// 2、如果文件夹不存在,则先创建 
-		File dirFile = new File(fileFolder);
-		if(dirFile.exists() == false) {
-			dirFile.mkdirs();
-		}
-
-		// 3、开始转存文件 
-		try {
-			File outFile = new File(fileFolder + fileName);
-	        file.transferTo(outFile);		
+    /**
+     * 注入配置
+     */
+    public static UploadConfig uploadConfig;
+
+    @Autowired
+    public void setUploadConfig(UploadConfig uploadConfig) {
+        UploadUtil.uploadConfig = uploadConfig;
+    }
+
+    /**
+     * 将文件名保存在服务器硬盘上,并把文件对应的http地址返回给前台
+     */
+    public static String saveFile(MultipartFile file, String flieTypeFolder) {
+        AtomicInteger rote = new AtomicInteger(1);
+        try (InputStream is = file.getInputStream()) {
+            Metadata metadata = ImageMetadataReader.readMetadata(is);
+            metadata.getDirectories().forEach(directory -> {
+                if (directory.getName().equals("Exif IFD0")) {
+                    directory.getTags().forEach(tag -> {
+                        try {
+                            rote.set(directory.getInt(tag.getTagType()));
+                        } catch (MetadataException e) {
+                            e.printStackTrace();
+                        }
+                    });
+                }
+            });
+        } catch (Exception e) {
+
+        }
+        // 1、计算路径
+        // 根据日期计算需要保存的文件夹
+        String currDateFolder = getCurrDateFolder();
+        // 文件名
+        String fileName = getMarking28() + '.' + getSuffixName(file.getOriginalFilename());
+        // 需要保存到的文件夹地址
+        String fileFolder = new File(uploadConfig.rootFolder).getAbsolutePath() + "/" +
+                uploadConfig.httpPrefix + flieTypeFolder + currDateFolder + "/";
+        // 对外暴露的http路径
+        String httpPrefix = getDoMain() + uploadConfig.httpPrefix + flieTypeFolder + currDateFolder + "/";
+        String httpUrl;
+        // 2、如果文件夹不存在,则先创建
+        File dirFile = new File(fileFolder);
+        if (dirFile.exists() == false) {
+            dirFile.mkdirs();
+        }
+
+        // 3、开始转存文件
+        try {
+            File outFile = new File(fileFolder + fileName);
+            file.transferTo(outFile);
+            httpUrl = judgeRote(outFile, rote.get(), httpPrefix, fileFolder, fileName);
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
-		
-		// 4、将文件外网地址返回给前台
-		return httpUrl;
-	}
-	
-	/** 验证文件大小  */
-	static void checkFileSize(MultipartFile file) {
-		// 文件大小(B)
-		long size = file.getSize();
+        // 4、将文件外网地址返回给前台
+        return httpUrl;
+    }
+
+    /**
+     * 1	0°
+     * 3	180°
+     * 6	顺时针90°
+     * 8	逆时针90°
+     *
+     * @param inFile
+     * @param i
+     * @return
+     */
+    private static String judgeRote(File inFile, int i, String httpUrl, String fileFolder, String filename) {
+        String newFilename = getMarking28() + ".jpg";
+        File outFile = new File(fileFolder + newFilename);
+        if (i == 1) {
+            return httpUrl + filename;
+        } else if (i == 3) {
+            ImgUtil.rotate(inFile, 180, outFile);
+        } else if (i == 6) {
+            ImgUtil.rotate(inFile, 90, outFile);
+        } else {
+            ImgUtil.rotate(inFile, -90, outFile);
+        }
+        return httpUrl + newFilename;
+    }
+
+    /**
+     * 验证文件大小
+     */
+    static void checkFileSize(MultipartFile file) {
+        // 文件大小(B)
+        long size = file.getSize();
         if (size > uploadConfig.maxSize) {
-        	throw new RuntimeException("文件大小超出限制");
+            throw new RuntimeException("文件大小超出限制");
+        }
+    }
+
+    /**
+     * 验证指定文件名是否存在于指定后缀列表中
+     * 参数:文件名、后缀列表
+     * case:checkSubffix("123.jpg", "jpg,png,gif")	验证通过
+     */
+    static void checkSubffix(String fileName, String suffixList) {
+        // 获取后缀,并转为小写
+        String ext = getSuffixName(fileName).toLowerCase();
+        // 去空格,加逗号
+        String yxSuffix = suffixList.replace(" ", "") + ",";
+        if (yxSuffix.indexOf(ext + ",") == -1) {
+            throw new RuntimeException("文件后缀验证未通过:" + ext);
         }
-	}
-	
-	/** 
-	 * 验证指定文件名是否存在于指定后缀列表中 
-	 * 参数:文件名、后缀列表	
-	 * case:checkSubffix("123.jpg", "jpg,png,gif")	验证通过  
-	 */
-	static void checkSubffix(String fileName, String suffixList) {
-		// 获取后缀,并转为小写 
-		String ext = getSuffixName(fileName).toLowerCase();	
-		// 去空格,加逗号   
-		String yxSuffix = suffixList.replace(" ", "") + ",";		
-		if(yxSuffix.indexOf(ext + ",") == -1) {
-			throw new RuntimeException("文件后缀验证未通过:" + ext);
-		}
-	}
-	
-	/** 返回随机生成的唯一标示28位唯一标示符 */
-	static String getMarking28() {
-		return System.currentTimeMillis() + "" + new Random().nextInt(Integer.MAX_VALUE);
-	}
-
-	/** 取文件后缀 */
-	static String getSuffixName(String fileName) {
-		return fileName.substring(fileName.lastIndexOf(".") + 1);
-	}
-	
-	/** 返回今天的日期文件夹  */
-	static String getCurrDateFolder() {
-		String currDateFolder = new SimpleDateFormat("/yyyy/MM-dd").format(new Date()); 
-		return currDateFolder;
-	}
-	
-	/** 返回本服务器域名信息  */
-	static String getDoMain() {
-		return SystemObject.config.getDomain();
-	}
-	
+    }
+
+    /**
+     * 返回随机生成的唯一标示28位唯一标示符
+     */
+    static String getMarking28() {
+        return System.currentTimeMillis() + "" + new Random().nextInt(Integer.MAX_VALUE);
+    }
+
+    /**
+     * 取文件后缀
+     */
+    static String getSuffixName(String fileName) {
+        return fileName.substring(fileName.lastIndexOf(".") + 1);
+    }
+
+    /**
+     * 返回今天的日期文件夹
+     */
+    static String getCurrDateFolder() {
+        String currDateFolder = new SimpleDateFormat("/yyyy/MM-dd").format(new Date());
+        return currDateFolder;
+    }
+
+    /**
+     * 返回本服务器域名信息
+     */
+    static String getDoMain() {
+        return SystemObject.config.getDomain();
+    }
+
 }

+ 0 - 1
sp-core/src/main/java/com/pj/utils/Ttime.java

@@ -43,7 +43,6 @@ public class Ttime {
 	 * 格式化输出结果
 	 */
 	public void outTime() {
-		System.out.println(this.toString());
 	}
 	
 	/**

+ 0 - 1
sp-core/src/main/java/com/pj/utils/sg/IpUtil.java

@@ -46,7 +46,6 @@ public class IpUtil {
 					+ "&ip=" + ip;
 			String body = OkHttps.sync(url).get().getBody().toString();
 			SoMap so = SoMap.getSoMap().setJsonString(body);
-			System.out.println(so);
 			String addr = so.getString("addr");
 			
 			// 如果是局域网,则返回 unknown 

+ 0 - 1
sp-core/src/main/java/com/pj/utils/zkt/ZKTecoUtils.java

@@ -90,7 +90,6 @@ public class ZKTecoUtils {
             }
             return len;
         } catch (Exception e) {
-            System.out.println("recvBlock timeout!");
             // System.out.println("Error:"+e);
             return -1;
         }