Bläddra i källkod

Merge branch 'dev' into ocr

lzm 2 år sedan
förälder
incheckning
f6503c6b3f
71 ändrade filer med 1214 tillägg och 577 borttagningar
  1. 2 0
      .gitignore
  2. 6 4
      business-system/alarm-system/src/main/java/com/pj/TbPersonAlarmController.java
  3. 2 3
      business-system/epidemic-prevention/src/main/java/com/pj/HealthStatusController.java
  4. 32 0
      business-system/epidemic-prevention/src/main/java/com/pj/TacticsController.java
  5. 52 43
      business-system/epidemic-prevention/src/main/java/com/pj/TbManagerController.java
  6. 4 6
      business-system/face-identify/src/main/java/com/pj/biz/TbPersonVisitRecordController.java
  7. 63 20
      business-system/filing-system/src/main/java/com/pj/api/WxController.java
  8. 2 3
      business-system/filing-system/src/main/java/com/pj/biz/TbCarBlackController.java
  9. 2 3
      business-system/filing-system/src/main/java/com/pj/biz/TbCarFilingController.java
  10. 2 3
      business-system/filing-system/src/main/java/com/pj/biz/TbPersonBlackController.java
  11. 2 3
      business-system/filing-system/src/main/java/com/pj/biz/TbPersonFilingController.java
  12. 11 0
      business-system/monitor-system/src/main/java/com/pj/MonitorController.java
  13. 24 0
      business-system/venues-system/src/main/java/com/pj/api/TerminalApi.java
  14. 4 7
      business-system/venues-system/src/main/java/com/pj/biz/TbVenuesController.java
  15. 12 0
      sp-admin/src/main/java/com/pj/current/TestStartUp.java
  16. 5 6
      sp-admin/src/main/java/com/pj/project4sp/admin/SpAdminController.java
  17. 2 5
      sp-admin/src/main/java/com/pj/project4sp/admin4acc/SpAccAdminController.java
  18. 10 56
      sp-admin/src/main/java/com/pj/project4sp/admin4acc/SpAccAdminService.java
  19. 8 1
      sp-core/src/main/java/com/pj/current/SaPlusStartup.java
  20. 3 0
      sp-core/src/main/java/com/pj/current/config/MyConfig.java
  21. 1 0
      sp-core/src/main/java/com/pj/current/netty/command/constants/CommandType.java
  22. 47 30
      sp-core/src/main/java/com/pj/current/netty/command/handler/impl/HealthlogHandler.java
  23. 6 0
      sp-core/src/main/java/com/pj/current/netty/command/handler/impl/TerminalOptionHandler.java
  24. 25 21
      sp-core/src/main/java/com/pj/current/netty/command/handler/impl/UploadUserHandler.java
  25. 3 8
      sp-core/src/main/java/com/pj/current/netty/heart/HeartBeatHandler.java
  26. 1 1
      sp-core/src/main/java/com/pj/current/satoken/AuthConst.java
  27. 3 1
      sp-core/src/main/java/com/pj/current/satoken/SaTokenConfigure.java
  28. 45 8
      sp-core/src/main/java/com/pj/current/satoken/StpUserUtil.java
  29. 2 1
      sp-core/src/main/java/com/pj/project/sp_admin/SpAdmin.java
  30. 2 0
      sp-core/src/main/java/com/pj/project/sp_admin/SpAdminMapper.java
  31. 8 7
      sp-core/src/main/java/com/pj/project/sp_admin/SpAdminMapper.xml
  32. 80 13
      sp-core/src/main/java/com/pj/project/sp_admin/SpAdminService.java
  33. 3 2
      sp-core/src/main/java/com/pj/project/tb_car_black/TbCarBlackMapper.xml
  34. 2 0
      sp-core/src/main/java/com/pj/project/tb_car_filing/TbCarFilingMapper.java
  35. 9 8
      sp-core/src/main/java/com/pj/project/tb_car_filing/TbCarFilingMapper.xml
  36. 16 11
      sp-core/src/main/java/com/pj/project/tb_car_filing/TbCarFilingService.java
  37. 17 2
      sp-core/src/main/java/com/pj/project/tb_dept/TbDept.java
  38. 2 3
      sp-core/src/main/java/com/pj/project/tb_dept/TbDeptController.java
  39. 1 6
      sp-core/src/main/java/com/pj/project/tb_dept/TbDeptMapper.xml
  40. 7 15
      sp-core/src/main/java/com/pj/project/tb_dept/TbDeptService.java
  41. 24 8
      sp-core/src/main/java/com/pj/project/tb_gate_terminal/TbGateTerminalService.java
  42. 19 0
      sp-core/src/main/java/com/pj/project/tb_gate_terminal/bo/ResultDTO.java
  43. 47 0
      sp-core/src/main/java/com/pj/project/tb_gate_terminal/task/TestStateTask.java
  44. 3 8
      sp-core/src/main/java/com/pj/project/tb_manager/TbManagerMapper.xml
  45. 7 47
      sp-core/src/main/java/com/pj/project/tb_manager/TbManagerService.java
  46. 4 0
      sp-core/src/main/java/com/pj/project/tb_mini_user/TbMiniUser.java
  47. 2 0
      sp-core/src/main/java/com/pj/project/tb_mini_user/TbMiniUserService.java
  48. 3 2
      sp-core/src/main/java/com/pj/project/tb_person_black/TbPersonBlackMapper.xml
  49. 21 8
      sp-core/src/main/java/com/pj/project/tb_person_black/TbPersonBlackService.java
  50. 1 1
      sp-core/src/main/java/com/pj/project/tb_person_black/task/PersonBlackTask.java
  51. 2 0
      sp-core/src/main/java/com/pj/project/tb_person_filing/TbPersonFilingMapper.java
  52. 9 7
      sp-core/src/main/java/com/pj/project/tb_person_filing/TbPersonFilingMapper.xml
  53. 35 11
      sp-core/src/main/java/com/pj/project/tb_person_filing/TbPersonFilingService.java
  54. 25 0
      sp-core/src/main/java/com/pj/project/tb_person_filing/task/DelayIsuued.java
  55. 1 6
      sp-core/src/main/java/com/pj/project/tb_person_visit_record/TbPersonVisitRecordMapper.xml
  56. 2 1
      sp-core/src/main/java/com/pj/project/tb_terminal/TbTerminal.java
  57. 3 0
      sp-core/src/main/java/com/pj/project/tb_terminal/TbTerminalMapper.java
  58. 22 8
      sp-core/src/main/java/com/pj/project/tb_terminal/TbTerminalMapper.xml
  59. 86 13
      sp-core/src/main/java/com/pj/project/tb_terminal/TbTerminalService.java
  60. 16 0
      sp-core/src/main/java/com/pj/project/tb_terminal/bo/CheckBO.java
  61. 26 0
      sp-core/src/main/java/com/pj/project/tb_terminal/bo/CheckDataDTO.java
  62. 18 0
      sp-core/src/main/java/com/pj/project/tb_terminal/bo/MonitorDTO.java
  63. 5 0
      sp-core/src/main/java/com/pj/project/tb_venues/TbVenues.java
  64. 14 12
      sp-core/src/main/java/com/pj/project/tb_venues/TbVenuesMapper.java
  65. 0 1
      sp-core/src/main/java/com/pj/project/tb_venues/TbVenuesMapper.xml
  66. 18 4
      sp-core/src/main/java/com/pj/project/tb_venues/TbVenuesService.java
  67. 144 97
      sp-core/src/main/java/com/pj/project4sp/spcfg/SpCfgUtil.java
  68. 1 0
      sp-start/pom.xml
  69. 9 1
      sp-start/src/main/java/com/pj/SpStartApplication.java
  70. 11 6
      sp-start/src/main/resources/application-dev.yml
  71. 108 36
      sp-start/src/main/resources/logback.xml

+ 2 - 0
.gitignore

@@ -12,5 +12,7 @@ bin/
 .settings/
 unpackage/
 *.iml
+app.pid
+logs/
 
 

+ 6 - 4
business-system/alarm-system/src/main/java/com/pj/TbPersonAlarmController.java

@@ -12,6 +12,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collector;
 import java.util.stream.Collectors;
@@ -38,7 +40,8 @@ public class TbPersonAlarmController {
     @RequestMapping("add")
     @SaCheckPermission(TbManager.PERMISSION_ALARM_PERSON_ADD)
     public AjaxJson addAlarm(TbManager t) {
-        tbManagerService.addAlarm(t);
+        t.setAlarm(1);
+        tbManagerService.add(t);
         return AjaxJson.getSuccessData(t);
     }
 
@@ -80,9 +83,8 @@ public class TbPersonAlarmController {
     public AjaxJson getList() {
         SoMap so = SoMap.getRequestSoMap();
         so.put("alarm",1);
-        String deptId = StpUserUtil.getDeptId();
-        if (!StrUtil.equals(String.valueOf(StpUserUtil.ADMIN_DEPT_ID), deptId)) {
-            so.put("deptIdList", StrUtil.splitTrim(",",deptId).stream().map(Long::valueOf).collect(Collectors.toList()));
+        if (!StpUserUtil.isSuperAdmin()) {
+            so.put("deptId",StpUserUtil.getDeptId());
         }
         List<TbManager> list = tbManagerService.getList(so.startPage());
         return AjaxJson.getPageData(so.getDataCount(), list);

+ 2 - 3
business-system/epidemic-prevention/src/main/java/com/pj/HealthStatusController.java

@@ -30,9 +30,8 @@ public class HealthStatusController {
     @RequestMapping("getList")
     public AjaxJson getList() {
         SoMap so = SoMap.getRequestSoMap();
-        String deptId = StpUserUtil.getDeptId();
-        if (!StrUtil.equals(String.valueOf(StpUserUtil.ADMIN_DEPT_ID), deptId)) {
-            so.put("deptIdList", StrUtil.splitTrim(deptId,",").stream().map(Long::valueOf).collect(Collectors.toList()));
+        if (!StpUserUtil.isSuperAdmin()) {
+            so.put("deptId",StpUserUtil.getDeptId());
         }
         List<TbPersonVisitRecord> list = tbPersonVisitRecordService.getList(so.startPage());
         return AjaxJson.getPageData(so.getDataCount(), list);

+ 32 - 0
business-system/epidemic-prevention/src/main/java/com/pj/TacticsController.java

@@ -0,0 +1,32 @@
+package com.pj;
+
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.pj.project.tb_venues.TbVenues;
+import com.pj.project.tb_venues.TbVenuesService;
+import com.pj.utils.sg.AjaxJson;
+import com.pj.utils.so.SoMap;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+@RestController
+@RequestMapping("tactics")
+public class TacticsController {
+
+    @Resource
+    private TbVenuesService tbVenuesService;
+
+    /**
+     * 防疫策略设置
+     * @return
+     */
+    @RequestMapping("setting")
+    @SaCheckPermission(TbVenues.TB_TACTICS_SETTING)
+    public AjaxJson setting() {
+        SoMap soMap = SoMap.getRequestSoMap();
+        tbVenuesService.setting(soMap.getLong("id"), soMap.getInt("status"));
+        return AjaxJson.getSuccess();
+    }
+}

+ 52 - 43
business-system/epidemic-prevention/src/main/java/com/pj/TbManagerController.java

@@ -1,5 +1,6 @@
 package com.pj;
 
+import java.util.Collections;
 import java.util.List;
 
 import cn.hutool.core.util.StrUtil;
@@ -18,76 +19,84 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
 
 
 /**
-* Controller: tb_manager -- 防疫人员
-* @author qzyReal
-*/
+ * Controller: tb_manager -- 防疫人员
+ *
+ * @author qzyReal
+ */
 @RestController
 @RequestMapping("/TbManager/")
 public class TbManagerController {
 
-/** 底层 Service 对象 */
-@Autowired
-TbManagerService tbManagerService;
+    /**
+     * 底层 Service 对象
+     */
+    @Autowired
+    TbManagerService tbManagerService;
 
-    /** 增 */
+    /**
+     * 增
+     */
     @RequestMapping("add")
     @SaCheckPermission(TbManager.PERMISSION_CODE_ADD)
-    public AjaxJson add(TbManager t){
+    public AjaxJson add(TbManager t) {
+        t.setAlarm(0);
         tbManagerService.add(t);
         return AjaxJson.getSuccessData(t);
     }
 
-    /** 删 */
+    /**
+     * 删
+     */
     @RequestMapping("delete")
     @SaCheckPermission(TbManager.PERMISSION_CODE_DEL)
-    public AjaxJson delete(Long id){
+    public AjaxJson delete(Long id) {
         tbManagerService.delete(id);
         return AjaxJson.getSuccess();
     }
 
-    /** 删 - 根据id列表 */
+    /**
+     * 删 - 根据id列表
+     */
     @RequestMapping("deleteByIds")
-	@SaCheckPermission(TbManager.PERMISSION_CODE_DEL)
-    public AjaxJson deleteByIds(){
+    @SaCheckPermission(TbManager.PERMISSION_CODE_DEL)
+    public AjaxJson deleteByIds() {
         List<Long> ids = SoMap.getRequestSoMap().getListByComma("ids", long.class);
         int line = SP.publicMapper.deleteByIds(TbManager.TABLE_NAME, ids);
         return AjaxJson.getByLine(line);
-	}
+    }
 
-	/** 改 */
-	@RequestMapping("update")
+    /**
+     * 改
+     */
+    @RequestMapping("update")
     @SaCheckPermission(TbManager.PERMISSION_CODE_EDIT)
-	public AjaxJson update(TbManager t){
-		tbManagerService.update(t);
-	    return AjaxJson.getSuccess();
-	}
+    public AjaxJson update(TbManager t) {
+        tbManagerService.update(t);
+        return AjaxJson.getSuccess();
+    }
 
-	/** 查 - 根据id */
-	@RequestMapping("getById")
-	public AjaxJson getById(Long id){
+    /**
+     * 查 - 根据id
+     */
+    @RequestMapping("getById")
+    public AjaxJson getById(Long id) {
         TbManager t = tbManagerService.getById(id);
         return AjaxJson.getSuccessData(t);
-	}
+    }
 
-	/** 查集合 - 根据条件(参数为空时代表忽略指定条件) */
-	@RequestMapping("getList")
-	public AjaxJson getList() {
-	    SoMap so = SoMap.getRequestSoMap();
-        String deptId = StpUserUtil.getDeptId();
-        if (!StrUtil.equals(String.valueOf(StpUserUtil.ADMIN_DEPT_ID), deptId)) {
-            so.put("deptId", deptId);
+    /**
+     * 查集合 - 根据条件(参数为空时代表忽略指定条件)
+     */
+    @RequestMapping("getList")
+    public AjaxJson getList() {
+        SoMap so = SoMap.getRequestSoMap();
+        if (!StpUserUtil.isSuperAdmin()) {
+            so.put("deptId", StpUserUtil.getDeptId());
         }
-		List<TbManager> list = tbManagerService.getList(so.startPage());
-	    return AjaxJson.getPageData(so.getDataCount(), list);
-	}
-
-
-
-
-
-
-
-
+        so.put("alarm", 0);
+        List<TbManager> list = tbManagerService.getList(so.startPage());
+        return AjaxJson.getPageData(so.getDataCount(), list);
+    }
 
 
-			}
+}

+ 4 - 6
business-system/face-identify/src/main/java/com/pj/biz/TbPersonVisitRecordController.java

@@ -108,9 +108,8 @@ public class TbPersonVisitRecordController {
     @RequestMapping("getList")
     public AjaxJson getList() {
         SoMap so = SoMap.getRequestSoMap();
-        String deptId = StpUserUtil.getDeptId();
-        if (!StrUtil.equals(String.valueOf(StpUserUtil.ADMIN_DEPT_ID), deptId)) {
-            so.put("deptIdList", StrUtil.splitTrim(deptId,",").stream().map(Long::valueOf).collect(Collectors.toList()));
+        if (!StpUserUtil.isSuperAdmin()) {
+            so.put("deptId",StpUserUtil.getDeptId());
         }
         List<TbPersonVisitRecord> list = tbPersonVisitRecordService.getList(so.startPage());
         return AjaxJson.getPageData(so.getDataCount(), list);
@@ -119,9 +118,8 @@ public class TbPersonVisitRecordController {
     @SaCheckPermission(TbPersonVisitRecord.PERMISSION_CODE_EXPORT)
     public AjaxJson export() {
         SoMap soMap = SoMap.getRequestSoMap();
-        String deptId = StpUserUtil.getDeptId();
-        if (!StrUtil.equals(String.valueOf(StpUserUtil.ADMIN_DEPT_ID), deptId)) {
-            soMap.put("deptIdList", StrUtil.splitTrim(deptId,",").stream().map(Long::valueOf).collect(Collectors.toList()));
+        if (!StpUserUtil.isSuperAdmin()) {
+            soMap.put("deptId",StpUserUtil.getDeptId());
         }
         return AjaxJson.getSuccessData(tbPersonVisitRecordService.export(soMap));
     }

+ 63 - 20
business-system/filing-system/src/main/java/com/pj/api/WxController.java

@@ -9,6 +9,7 @@ import com.pj.project.re_mini_user_car_filing.ReMiniUserCarFiling;
 import com.pj.project.re_mini_user_car_filing.ReMiniUserCarFilingService;
 import com.pj.project.re_mini_user_person_filing.ReMiniUserPersonFiling;
 import com.pj.project.re_mini_user_person_filing.ReMiniUserPersonFilingService;
+import com.pj.project.sp_admin.SpAdminService;
 import com.pj.project.tb_car_filing.TbCarFiling;
 import com.pj.project.tb_car_filing.TbCarFilingService;
 import com.pj.project.tb_mini_user.TbMiniUser;
@@ -47,6 +48,9 @@ public class WxController {
     @Resource
     private TbPersonVisitRecordService tbPersonVisitRecordService;
 
+    @Resource
+    private SpAdminService spAdminService;
+
 
     @GetMapping(value = "getRedirectUrl")
     public AjaxJson getRedirectUrl(String path, @RequestParam(required = false) String state) {
@@ -68,6 +72,8 @@ public class WxController {
             StpUserUtil.setDeptId(tbMiniUser.getDeptId() + "");
             StpUserUtil.setAdmin(tbMiniUser.getName(), tbMiniUser.getPhone());
             StpUserUtil.setMiniUserId(tbMiniUser.getId());
+            StpUserUtil.setMiniUserType(tbMiniUser.getType());
+            StpUserUtil.setAdminType(tbMiniUser.getSuperAdmin() + "");
         }
         return AjaxJson.getSuccessData(tbMiniUser);
     }
@@ -80,31 +86,47 @@ public class WxController {
     @GetMapping(value = "person-filing")
     public AjaxJson getPersonFiling() {
         SoMap so = SoMap.getRequestSoMap();
-        so.put("loginId", StpUserUtil.getLoginIdAsLong());
-        String deptId = StpUserUtil.getDeptId();
-        if (!StrUtil.equals(String.valueOf(StpUserUtil.ADMIN_DEPT_ID), deptId)) {
-            so.put("deptIdList", StrUtil.splitTrim(deptId, ",").stream().map(Long::valueOf).collect(Collectors.toList()));
+        if (StpUserUtil.isInnerMiniUser()) {
+            //内部人员 自己备案的+部门的备案
+            so.put("loginId", StpUserUtil.getLoginIdAsLong());
+            if (!StpUserUtil.isSuperAdmin()) {
+                so.put("deptId", StpUserUtil.getDeptId());
+            }
+            List<TbPersonFiling> list = tbPersonFilingService.getForWx(so.startPage());
+            return AjaxJson.getPageData(so.getDataCount(), list);
+        } else {
+            //备案自己的+帮别人备案的
+            so.put("miniUserId", StpUserUtil.getMiniUserId());
+            List<TbPersonFiling> list = tbPersonFilingService.getOuterList(so.startPage());
+            return AjaxJson.getPageData(so.getDataCount(), list);
         }
-        List<TbPersonFiling> list = tbPersonFilingService.getForWx(so.startPage());
-        return AjaxJson.getPageData(so.getDataCount(), list);
     }
 
     @PostMapping("addPersonFiling")
     public AjaxJson addPersonFiling(TbPersonFiling tbPersonFiling) {
-        tbPersonFilingService.add(tbPersonFiling);
+        if (!StpUserUtil.isInnerMiniUser()) {
+            tbPersonFiling.setDeptId(StpUserUtil.getDeptId());
+        }
+        TbPersonFiling db = tbPersonFilingService.findByIdCard(tbPersonFiling.getIdCard());
+        if (db!=null){
+            tbPersonFiling=db;
+        }else {
+            tbPersonFilingService.add(tbPersonFiling);
+        }
         ReMiniUserPersonFiling reMiniUserPersonFiling = new ReMiniUserPersonFiling();
         reMiniUserPersonFiling.setFilingPersonId(tbPersonFiling.getId())
                 .setMiniUserId(StpUserUtil.getMiniUserId());
         reMiniUserPersonFilingService.save(reMiniUserPersonFiling);
         return AjaxJson.getSuccess();
     }
+
     @PostMapping("editPersonFiling")
     public AjaxJson editPersonFiling(TbPersonFiling tbPersonFiling) {
         tbPersonFilingService.update(tbPersonFiling);
         return AjaxJson.getSuccess();
     }
 
-   @PostMapping("deletePersonFiling")
+    @PostMapping("deletePersonFiling")
     public AjaxJson deletePersonFiling(Integer id) {
         tbPersonFilingService.delete(id);
         return AjaxJson.getSuccess();
@@ -112,6 +134,9 @@ public class WxController {
 
     @PostMapping("addCarFiling")
     public AjaxJson addCarFiling(TbCarFiling tbCarFiling) {
+        if (!StpUserUtil.isInnerMiniUser()) {
+            tbCarFiling.setDeptId(StpUserUtil.getDeptId());
+        }
         tbCarFilingService.add(tbCarFiling);
         ReMiniUserCarFiling reMiniUserCarFiling = new ReMiniUserCarFiling();
         reMiniUserCarFiling.setFilingCarId(tbCarFiling.getId())
@@ -119,36 +144,54 @@ public class WxController {
         reMiniUserCarFilingService.save(reMiniUserCarFiling);
         return AjaxJson.getSuccess();
     }
+
     @GetMapping("car-filing")
     public AjaxJson getCarFiling() {
         SoMap so = SoMap.getRequestSoMap();
-        so.put("loginId", StpUserUtil.getLoginIdAsLong());
-        String deptId = StpUserUtil.getDeptId();
-        if (!StrUtil.equals(String.valueOf(StpUserUtil.ADMIN_DEPT_ID), deptId)) {
-            so.put("deptIdList", StrUtil.splitTrim(deptId, ",").stream().map(Long::valueOf).collect(Collectors.toList()));
+        if (StpUserUtil.isInnerMiniUser()) {
+            //内部人员 自己备案的+部门的备案
+            so.put("loginId", StpUserUtil.getLoginIdAsLong());
+            if (!StpUserUtil.isSuperAdmin()) {
+                so.put("deptId", StpUserUtil.getDeptId());
+            }
+            List<TbCarFiling> list = tbCarFilingService.getForWx(so.startPage());
+            return AjaxJson.getPageData(so.getDataCount(), list);
+        } else {
+            //备案自己的+帮别人备案的
+            so.put("miniUserId", StpUserUtil.getMiniUserId());
+            List<TbCarFiling> list = tbCarFilingService.getOuterList(so.startPage());
+            return AjaxJson.getPageData(so.getDataCount(), list);
         }
-        List<TbCarFiling> list = tbCarFilingService.getForWx(so.startPage());
-        return AjaxJson.getPageData(so.getDataCount(), list);
+
+
     }
 
     @PostMapping("deleteCarFiling")
-    public AjaxJson deleteCarFiling(Long id){
+    public AjaxJson deleteCarFiling(Long id) {
         tbCarFilingService.delete(id);
         return AjaxJson.getSuccess();
     }
+
     @PostMapping("loginByOpenid")
-    public AjaxJson loginByOpenid(){
-        SoMap soMap=SoMap.getRequestSoMap();
-        String openid=soMap.getString("openid");
-        if (StrUtil.isEmpty(openid)){
+    public AjaxJson loginByOpenid() {
+        SoMap soMap = SoMap.getRequestSoMap();
+        String openid = soMap.getString("openid");
+        if (StrUtil.isEmpty(openid)) {
             return AjaxJson.getError("参数异常");
         }
-        return  tbMiniUserService.loginByOpenid(openid);
+        return tbMiniUserService.loginByOpenid(openid);
     }
+
     @RequestMapping("solve")
     public AjaxJson solve() {
         SoMap soMap = SoMap.getRequestSoMap();
         tbPersonVisitRecordService.solve(soMap);
         return AjaxJson.getSuccess();
     }
+
+
+    @PostMapping("bind")
+    public AjaxJson bind(String openid, String key, String password, Integer type, String name) {
+        return spAdminService.bindUser(openid, key, password, type, name);
+    }
 }

+ 2 - 3
business-system/filing-system/src/main/java/com/pj/biz/TbCarBlackController.java

@@ -89,9 +89,8 @@ public class TbCarBlackController {
     @RequestMapping("getList")
     public AjaxJson getList() {
         SoMap so = SoMap.getRequestSoMap();
-        String deptId = StpUserUtil.getDeptId();
-        if (!StrUtil.equals(String.valueOf(StpUserUtil.ADMIN_DEPT_ID), deptId)) {
-            so.put("deptId", deptId);
+        if (!StpUserUtil.isSuperAdmin()) {
+            so.put("deptId",StpUserUtil.getDeptId());
         }
         List<TbCarBlack> list = tbCarBlackService.getList(so.startPage());
         return AjaxJson.getPageData(so.getDataCount(), list);

+ 2 - 3
business-system/filing-system/src/main/java/com/pj/biz/TbCarFilingController.java

@@ -88,9 +88,8 @@ public class TbCarFilingController {
     @RequestMapping("getList")
     public AjaxJson getList() {
         SoMap so = SoMap.getRequestSoMap();
-        String deptId = StpUserUtil.getDeptId();
-        if (!StrUtil.equals(String.valueOf(StpUserUtil.ADMIN_DEPT_ID), deptId)) {
-            so.put("deptId", deptId);
+        if (!StpUserUtil.isSuperAdmin()) {
+            so.put("deptId",StpUserUtil.getDeptId());
         }
         List<TbCarFiling> list = tbCarFilingService.getList(so.startPage());
         return AjaxJson.getPageData(so.getDataCount(), list);

+ 2 - 3
business-system/filing-system/src/main/java/com/pj/biz/TbPersonBlackController.java

@@ -89,9 +89,8 @@ public class TbPersonBlackController {
     @RequestMapping("getList")
     public AjaxJson getList() {
         SoMap so = SoMap.getRequestSoMap();
-        String deptId = StpUserUtil.getDeptId();
-        if (!StrUtil.equals(String.valueOf(StpUserUtil.ADMIN_DEPT_ID), deptId)) {
-            so.put("deptId", deptId);
+        if (!StpUserUtil.isSuperAdmin()) {
+            so.put("deptId",StpUserUtil.getDeptId());
         }
         List<TbPersonBlack> list = tbPersonBlackService.getList(so.startPage());
         return AjaxJson.getPageData(so.getDataCount(), list);

+ 2 - 3
business-system/filing-system/src/main/java/com/pj/biz/TbPersonFilingController.java

@@ -89,9 +89,8 @@ public class TbPersonFilingController {
     @RequestMapping("getList")
     public AjaxJson getList() {
         SoMap so = SoMap.getRequestSoMap();
-        String deptId = StpUserUtil.getDeptId();
-        if (!StrUtil.equals(String.valueOf(StpUserUtil.ADMIN_DEPT_ID), deptId)) {
-            so.put("deptId", deptId);
+        if (!StpUserUtil.isSuperAdmin()) {
+            so.put("deptId",StpUserUtil.getDeptId());
         }
         List<TbPersonFiling> list = tbPersonFilingService.getList(so.startPage());
         return AjaxJson.getPageData(so.getDataCount(), list);

+ 11 - 0
business-system/monitor-system/src/main/java/com/pj/MonitorController.java

@@ -1,11 +1,14 @@
 package com.pj;
 
 import com.pj.project.tb_person_visit_record.TbPersonVisitRecordService;
+import com.pj.project.tb_terminal.bo.MonitorDTO;
+import com.pj.project.tb_terminal.TbTerminalService;
 import com.pj.utils.sg.AjaxJson;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import java.util.List;
 
 @RestController
 @RequestMapping("monitor")
@@ -14,8 +17,16 @@ public class MonitorController {
     @Resource
     private TbPersonVisitRecordService tbPersonVisitRecordService;
 
+    @Resource
+    private TbTerminalService tbTerminalService;
+
     @RequestMapping("watch")
     public AjaxJson monitor(){
         return AjaxJson.getSuccessData(tbPersonVisitRecordService.getMonitor());
     }
+    @RequestMapping("terminal")
+    public AjaxJson monitorTerminal(){
+      List<MonitorDTO>list= tbTerminalService.getMonitor();
+        return AjaxJson.getSuccessData(list);
+    }
 }

+ 24 - 0
business-system/venues-system/src/main/java/com/pj/api/TerminalApi.java

@@ -0,0 +1,24 @@
+package com.pj.api;
+
+import com.pj.project.tb_terminal.bo.CheckBO;
+import com.pj.project.tb_terminal.TbTerminalService;
+import com.pj.utils.sg.AjaxJson;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+@RequestMapping("api/terminal")
+@RestController
+public class TerminalApi {
+
+    @Resource
+    private TbTerminalService tbTerminalService;
+
+    @PostMapping(value = "check")
+    public AjaxJson check(@RequestBody CheckBO checkBO){
+        return tbTerminalService.check(checkBO);
+    }
+}

+ 4 - 7
business-system/venues-system/src/main/java/com/pj/biz/TbVenuesController.java

@@ -1,6 +1,8 @@
 package com.pj.biz;
 
 import java.util.List;
+import java.util.stream.Collector;
+import java.util.stream.Collectors;
 
 import cn.hutool.core.util.StrUtil;
 import com.pj.project.tb_venues.TbVenues;
@@ -79,9 +81,8 @@ public class TbVenuesController {
     @RequestMapping("getList")
     public AjaxJson getList() {
         SoMap so = SoMap.getRequestSoMap();
-        String deptId = StpUserUtil.getDeptId();
-        if (!StrUtil.equals(String.valueOf(StpUserUtil.ADMIN_DEPT_ID), deptId)) {
-            so.put("deptId", deptId);
+        if (!StpUserUtil.isSuperAdmin()) {
+            so.put("deptId",StpUserUtil.getDeptId());
         }
         List<TbVenues> list = tbVenuesService.getList(so.startPage());
         return AjaxJson.getPageData(so.getDataCount(), list);
@@ -94,10 +95,6 @@ public class TbVenuesController {
     public AjaxJson getTree() {
         // 获取记录
         SoMap so = SoMap.getRequestSoMap();
-        String deptId = StpUserUtil.getDeptId();
-        if (!StrUtil.equals(String.valueOf(StpUserUtil.ADMIN_DEPT_ID), deptId)) {
-            so.put("deptId", deptId);
-        }
         List<TbVenues> list = tbVenuesService.getList(so);
         // 转为tree结构,并返回
         List<SoMap> listMap = SoMap.getSoMapByList(list);

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

@@ -0,0 +1,12 @@
+package com.pj.current;
+
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.stereotype.Component;
+
+@Component
+public class TestStartUp implements CommandLineRunner {
+    @Override
+    public void run(String... args) throws Exception {
+        System.out.println("启动===========================admin");
+    }
+}

+ 5 - 6
sp-admin/src/main/java/com/pj/project4sp/admin/SpAdminController.java

@@ -104,7 +104,7 @@ public class SpAdminController {
 	
 	/** 改状态  */
 	@RequestMapping("updateStatus")
-	@SaCheckPermission({AuthConst.ADMIN_LIST, AuthConst.DEV})
+	@SaCheckPermission({AuthConst.ADMIN_LIST})
 	public AjaxJson updateStatus(long id, int status) {
 
 		// 验证对方是否为超管 
@@ -123,7 +123,7 @@ public class SpAdminController {
 	
 	/** 改角色  */
 	@RequestMapping("updateRole")
-	@SaCheckPermission({AuthConst.ADMIN_LIST, AuthConst.DEV})
+	@SaCheckPermission({AuthConst.ADMIN_LIST})
 	AjaxJson updateRole(long id, String roleId){
 		// 改角色 
 		int line = SP.publicMapper.updateColumnById("sp_admin", "role_id", roleId, id);
@@ -156,9 +156,8 @@ public class SpAdminController {
 	@SaCheckPermission(AuthConst.ADMIN_LIST)
 	AjaxJson getList(){
 		SoMap so = SoMap.getRequestSoMap();
-		String deptId = StpUserUtil.getDeptId();
-		if (!StrUtil.equals(String.valueOf(StpUserUtil.ADMIN_DEPT_ID), deptId)) {
-			so.put("deptId", deptId);
+		if (!StpUserUtil.isSuperAdmin()) {
+			so.put("deptId",StpUserUtil.getDeptId());
 		}
 		List<SpAdmin> list = spAdminMapper.getList(so.startPage());
 		return AjaxJson.getPageData(so.getDataCount(), list);
@@ -196,7 +195,7 @@ public class SpAdminController {
 	public AjaxJson updateDept(){
 		SoMap so = SoMap.getRequestSoMap();
 		Long id=so.getLong("id");
-		String  deptId=so.getString("deptId");
+		Long  deptId=so.getLong("deptId");
 		spAdminService.updateDept(id,deptId);
 		return AjaxJson.getSuccess();
 	}

+ 2 - 5
sp-admin/src/main/java/com/pj/project4sp/admin4acc/SpAccAdminController.java

@@ -30,7 +30,7 @@ import cn.dev33.satoken.stp.StpUtil;
 public class SpAccAdminController {
 
 	@Autowired
-	SpAccAdminService spAccAdminService;
+    SpAccAdminService spAccAdminService;
 	
 	@Autowired
 	SpRolePermissionService spRolePermissionService;
@@ -71,8 +71,5 @@ public class SpAccAdminController {
 		return AjaxJson.getSuccessData(map); 
 	}
 
-	@PostMapping("bind")
-	public AjaxJson bind(String openid,String key,String password,Integer type,String name){
-		return spAccAdminService.bindUser(openid,key,password,type,name);
-	}
+
 }

+ 10 - 56
sp-admin/src/main/java/com/pj/project4sp/admin4acc/SpAccAdminService.java

@@ -2,12 +2,16 @@ package com.pj.project4sp.admin4acc;
 
 
 import java.util.Date;
+import java.util.List;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 
 import cn.hutool.core.util.RandomUtil;
+import cn.hutool.core.util.StrUtil;
 import com.pj.current.satoken.StpUserUtil;
+import com.pj.project.tb_dept.TbDept;
+import com.pj.project.tb_dept.TbDeptService;
 import com.pj.project.tb_mini_user.TbMiniUser;
 import com.pj.project.tb_mini_user.TbMiniUserService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -46,8 +50,7 @@ public class SpAccAdminService {
 
     @Autowired
     SpAdminLoginMapper sysLoginLogMapper;
-    @Resource
-    private TbMiniUserService tbMiniUserService;
+
 
     /**
      * 登录
@@ -61,7 +64,7 @@ public class SpAccAdminService {
 
         // 0、判断 way (1=ID, 2=昵称,3=手机号  )
         int way = 2;
-        if (NbUtil.isNumber(key) == true) {
+        if (NbUtil.isNumber(key)) {
             way = 1;
             if (key.length() == 11) {
                 way = 3;
@@ -89,7 +92,7 @@ public class SpAccAdminService {
             return AjaxJson.getError("此账号尚未设置密码,无法登陆");
         }
         String md5Password = SystemObject.getPasswordMd5(admin.getId(), password);
-        if (admin.getPassword2().equals(md5Password) == false) {
+        if (!admin.getPassword2().equals(md5Password)) {
             return AjaxJson.getError("密码错误");
         }
 
@@ -102,7 +105,8 @@ public class SpAccAdminService {
         StpUtil.login(admin.getId());
         String tokenValue = StpUtil.getTokenValue();
         successLogin(admin, tokenValue);
-        StpUserUtil.setDeptId(admin.getDeptId());
+        StpUserUtil.setAdminType(admin.getSuperAdmin()+"");
+        StpUserUtil.setDeptId(admin.getDeptId()+"");
         StpUserUtil.setAdmin(admin.getNickname(), admin.getPhone());
         // 组织返回参数
         SoMap map = new SoMap();
@@ -113,6 +117,7 @@ public class SpAccAdminService {
         return AjaxJson.getSuccessData(map);
     }
 
+
     /**
      * 指定id的账号成功登录一次 (修改最后登录时间等数据 )
      *
@@ -143,55 +148,4 @@ public class SpAccAdminService {
         sysLoginLogMapper.add(al);
     }
 
-    public AjaxJson bindUser(String openid, String key, String password, Integer type,String name) {
-        TbMiniUser db = tbMiniUserService.findByOpenid(openid);
-        if (db != null) {
-            return AjaxJson.getError("您已绑定其他账户");
-        }
-        if (TbMiniUser.TypeEnum.INTERIOR_TYPE.getType().equals(type)) {
-            SpAdmin spAdmin = spAdminMapper.getByName(key);
-            if (spAdmin == null) {
-                return AjaxJson.getError("账号错误");
-            }
-            String md5Password = SystemObject.getPasswordMd5(spAdmin.getId(), password);
-            if (!spAdmin.getPassword2().equals(md5Password)) {
-                return AjaxJson.getError("密码错误");
-            }
-            // 4、是否禁用
-            if (spAdmin.getStatus() == 2) {
-                return AjaxJson.getError("此账号已被禁用");
-            }
-            if (spAdmin.getBind() == 1) {
-                return AjaxJson.getError("此账号已被占用");
-            }
-            spAdmin.setOpenid(openid);
-            spAdminMapper.bindUser(spAdmin);
-            TbMiniUser tbMiniUser = buildMiniUser(spAdmin, openid);
-            tbMiniUserService.save(tbMiniUser);
-            return AjaxJson.getSuccessData(tbMiniUser);
-        } else {
-            TbMiniUser tbMiniUser = createMiniUser(key,openid,name);
-            return AjaxJson.getSuccessData(tbMiniUser);
-        }
-    }
-
-    private TbMiniUser createMiniUser(String key, String openid,String name) {
-        TbMiniUser tbMiniUser = new TbMiniUser();
-        tbMiniUser.setCreateTime(new Date()).setSpAdminId(RandomUtil.randomLong(100000,999999))
-                .setOpenid(openid).setDeptId("-1")
-                .setPhone(key).setType(TbMiniUser.TypeEnum.TEMPORARY_TYPE.getType())
-                .setName(name);
-        tbMiniUserService.save(tbMiniUser);
-        return tbMiniUser;
-    }
-    private TbMiniUser buildMiniUser(SpAdmin spAdmin, String openid) {
-        TbMiniUser tbMiniUser = new TbMiniUser();
-        tbMiniUser.setCreateTime(new Date())
-                .setDeptId(spAdmin.getDeptId())
-                .setOpenid(openid).setSpAdminId(spAdmin.getId())
-                .setPhone(spAdmin.getPhone())
-                .setType(2)
-                .setName(spAdmin.getNickname());
-        return tbMiniUser;
-    }
 }

+ 8 - 1
sp-core/src/main/java/com/pj/current/SaPlusStartup.java

@@ -1,5 +1,6 @@
 package com.pj.current;
 
+import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.text.SimpleDateFormat;
 import java.util.Date;
@@ -41,7 +42,13 @@ public class SaPlusStartup implements CommandLineRunner {
 
    
     @Override
-    public void run(String... args) {
+    public void run(String... args) throws Exception{
+        String ip = InetAddress.getLocalHost().getHostAddress();
+        String str = "\n------------- " + applicationName + " (" + active + ") 启动成功 --by " + getNow() + " -------------\n" +
+                "\t- Local:   http://localhost:" + port + path + "\n" +
+                "\t- Local2:  http://127.0.0.1:" + port + path + "\n" +
+                "\t- Network: http://" + ip + ":" + port + path + "\n";
+        System.out.println(str);
         InetSocketAddress commandAddress = new InetSocketAddress(myConfig.getIp(),myConfig.getCommandPort());
         CommandNettyServer commandNettyServer=  new CommandNettyServer(commandAddress);
         commandNettyServer.setDaemon(true);

+ 3 - 0
sp-core/src/main/java/com/pj/current/config/MyConfig.java

@@ -53,10 +53,13 @@ public class MyConfig {
 
 
 	private String ip;
+	private String netIp;
 	private int heartPort;
 	private int commandPort;
 	private String commandPrefix;
 	private String heartPrefix;
 	private int gatePort;
 
+	private long limitUserCount;
+
 }

+ 1 - 0
sp-core/src/main/java/com/pj/current/netty/command/constants/CommandType.java

@@ -32,6 +32,7 @@ public enum CommandType {
     ISSUED_FINISH_COMMAND("cmd.device.finish","后台命令下发结束"),
     ISSUED_NORMALOPEN_COMMAND("cmd.device.normalopen","远程开门"),
     SYNC_TIME_COMMAND("cmd.device.sync.time","同步时间"),
+    TRAFFIC_COMMAND("cmd.device.traffic","下发控制参数"),
 
     ;
 

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

@@ -13,15 +13,18 @@ import com.pj.current.netty.command.handler.dto.HealthlogDTO;
 import com.pj.current.netty.dto.OKMsg;
 import com.pj.current.netty.dto.RequestPackageDTO;
 import com.pj.current.task.TaskService;
+import com.pj.project.tb_car_visit_record.TbCarVisitRecord;
 import com.pj.project.tb_car_visit_record.TbCarVisitRecordService;
 import com.pj.project.tb_dept.TbDept;
 import com.pj.project.tb_dept.TbDeptService;
 import com.pj.project.tb_gate_terminal.TbGateTerminal;
 import com.pj.project.tb_gate_terminal.TbGateTerminalService;
+import com.pj.project.tb_gate_terminal.bo.ResultDTO;
 import com.pj.project.tb_manager.TbManager;
 import com.pj.project.tb_manager.TbManagerService;
 import com.pj.project.tb_person_filing.TbPersonFiling;
 import com.pj.project.tb_person_filing.TbPersonFilingService;
+import com.pj.project.tb_person_filing.task.Base64ToImage;
 import com.pj.project.tb_person_visit_record.TbPersonVisitRecord;
 import com.pj.project.tb_person_visit_record.TbPersonVisitRecordService;
 import com.pj.project.tb_person_visit_record.task.ConvertBase64ToImage;
@@ -86,45 +89,55 @@ public class HealthlogHandler implements IHandler {
         JSONObject params = JSONUtil.parseObj(packageDTO.getPayload().getParams());
         String str = params.getStr("log");
         HealthlogDTO dto = JSONUtil.toBean(str, HealthlogDTO.class);
-        String sn = params.getStr("sn");
-        TbTerminal tbTerminal = tbTerminalService.findBySN(sn);
         String idCard = dto.getIdentity_number();
         TbPersonFiling tbPersonFiling = tbPersonFilingService.findByIdCard(idCard);
-        if (tbPersonFiling == null && !dto.isAllow_through()) {
-            log.error("异常核验记录");
-            ctx.write(OKMsg.ok());
-            ctx.flush();
-            return;
-        }
+        boolean needJudge = (SpCfgUtil.fillingNeedJudge());
         if (tbPersonFiling == null) {
-            //todo 增加人员信息
-            TbDept tbDept = tbDeptService.findOneByPassType(TbDept.PassTypeEnum.BLOW.getType());
-            tbPersonFiling = new TbPersonFiling();
+            if (!SpCfgUtil.termianlFilling()) {
+                log.error("系统不允许设备端进行备案============>删除设备端自动备份的信息,:{}",idCard);
+                tbPersonFilingService.deleteTerminalWhilte(idCard);
+                ctx.write(OKMsg.ok());
+                ctx.flush();
+                return;
+            }
+            //增加人员信息
             Date now = new Date();
-            String pin = RandomUtil.randomNumbers(9);
-            tbPersonFiling.setPin(pin).setIdCard(dto.getIdentity_number())
-                    .setName(dto.getName()).setCreateBy("设备上传").setCreateTime(now).setUpdateTime(now)
-                    .setDeptId(tbDept.getId()).setJudgeState(1).setJudgeBy("设备上传").setJudgeTime(now);
+            TbDept dept = tbDeptService.findTheDept(TbDept.AdminTypeEnum.TEMP_TYPE.getType());
+            tbPersonFiling = new TbPersonFiling();
+            tbPersonFiling.setPin(idCard).setIdCard(dto.getIdentity_number())
+                    .setName(dto.getName()).setCreateBy("设备上传")
+                    .setCreateTime(now).setUpdateTime(now)
+                    .setDeptId(dept.getId()).setJudgeState(needJudge ? 0 : 1)
+                    .setJudgeBy("设备上传").setJudgeTime(needJudge ? null : now);
             tbPersonFilingService.save(tbPersonFiling);
+            taskService.addTask(new Base64ToImage(RandomUtil.randomNumbers(10), 50, tbPersonFiling.getId(), dto.getPicture()));
+            return;
         }
         Long deptId = tbPersonFiling.getDeptId();
         TbDept tbDept = tbDeptService.getById(deptId);
-        //车辆道闸判断结果 存在则放行 terminaiId
+        String sn = params.getStr("sn");
+        TbTerminal tbTerminal = tbTerminalService.findBySN(sn);
         Long venuesId = tbTerminal.getChannelId();
         TbVenues tbVenues = tbVenuesService.getById(venuesId);
-        if (TbVenues.TypeEnum.CAR_CHANNEL.getType().equals(tbVenues.getType())) {
-            String gateTerminalId = RedisUtil.get("result:" + venuesId);
-            RedisUtil.del("result:" + venuesId);
-            if (dto.isAllow_through()) {
-                if (TbDept.PassTypeEnum.ONE.getType().equals(tbDept.getPassType())) {
-                    List<TbGateTerminal> gateTerminals = tbGateTerminalService.findByVenuesId(venuesId);
-                    // 找到入口的设备,开闸
-                    gateTerminals.stream().filter(tbGateTerminal -> tbGateTerminal.getDirection() == 1)
-                            .forEach(tbGateTerminal -> openGate(tbGateTerminal.getId(), venuesId));
-                } else if (StrUtil.isNotEmpty(gateTerminalId)) {
-                    openGate(Long.valueOf(gateTerminalId), venuesId);
+        //车辆道闸判断
+        if (tbVenues != null && TbVenues.TypeEnum.CAR_CHANNEL.getType().equals(tbVenues.getType())) {
+            String key = "result:" + venuesId;
+            String resultStr = RedisUtil.get(key);
+            ResultDTO resultDTO = JSONUtil.toBean(resultStr, ResultDTO.class);
+            if (TbDept.PassTypeEnum.ONE.getType().equals(tbDept.getPassType())) {
+                List<TbGateTerminal> gateTerminals = tbGateTerminalService.findByVenuesId(venuesId);
+                // 找到入口的设备,开闸
+                gateTerminals.stream().filter(tbGateTerminal -> tbGateTerminal.getDirection() == 1)
+                        .forEach(tbGateTerminal -> openGate(tbGateTerminal.getId(), venuesId));
+                if (resultDTO.getResult() != null && resultDTO.getResult() == 0) {
+                    Long recordId = resultDTO.getRecordId();
+                    TbCarVisitRecord tbCarVisitRecord = tbCarVisitRecordService.getById(recordId);
+                    tbCarVisitRecord.setDriverIdCard(dto.getIdentity_number()).setDriverName(dto.getName())
+                            .setDriverContact(tbPersonFiling.getPhone()).setAllowPass(1);
+                    tbCarVisitRecordService.updateById(tbCarVisitRecord);
                 }
-
+            } else if (resultDTO.getResult() != null && resultDTO.getResult() == 1) {
+                openGate(resultDTO.getGateTerminalId(), venuesId);
             }
         }
 
@@ -150,12 +163,16 @@ public class HealthlogHandler implements IHandler {
             return;
         }
         //预警人员
+        if (tbVenues == null) {
+            log.error("设备未绑定场所,不进行预警==========");
+            return;
+        }
         List<TbManager> managers = tbManagerService.findAlarmPersonByVenuesId(tbVenues.getPId());
         managers = managers.stream().filter(tbManager -> StrUtil.isNotEmpty(tbManager.getOpenid())).collect(Collectors.toList());
-        String minTemperature = SpCfgUtil.getMinTemperature();
+        double minTemperature = SpCfgUtil.getMinTemperature();
         String healthStatus = dto.getHealth_status();
         String now = DateUtil.now();
-        if (Double.valueOf(minTemperature) < Double.valueOf(dto.getTemperature())) {
+        if (minTemperature < Double.valueOf(dto.getTemperature())) {
             log.info("发送体温异常提醒============");
             MsgDataBO msgDataBO = new MsgDataBO("您收到一条人员体温异常提醒", dto.getName(), dto.getTemperature(), now, "请及时处理");
             //todo 触发体温预警

+ 6 - 0
sp-core/src/main/java/com/pj/current/netty/command/handler/impl/TerminalOptionHandler.java

@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.XmlUtil;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
+import com.pj.current.config.MyConfig;
 import com.pj.current.netty.command.constants.CommandType;
 import com.pj.current.netty.command.handler.IHandler;
 import com.pj.current.netty.dto.OKMsg;
@@ -25,6 +26,8 @@ public class TerminalOptionHandler implements IHandler {
 
     @Resource
     private TbTerminalService tbTerminalService;
+    @Resource
+    private MyConfig myConfig;
 
     @Override
     public CommandType commandType() {
@@ -41,6 +44,9 @@ public class TerminalOptionHandler implements IHandler {
         TbTerminal tbTerminal = tbTerminalService.findBySN(sn);
         tbTerminal.setPersonNum(userCount).setIpAddress(ip).setLastOnLine(DateUtil.now());
         tbTerminalService.updateById(tbTerminal);
+        if (myConfig.getLimitUserCount()<=userCount) {
+
+        }
         ctx.write(OKMsg.ok());
         ctx.flush();
     }

+ 25 - 21
sp-core/src/main/java/com/pj/current/netty/command/handler/impl/UploadUserHandler.java

@@ -16,8 +16,10 @@ import com.pj.project.tb_dept.TbDeptService;
 import com.pj.project.tb_person_filing.TbPersonFiling;
 import com.pj.project.tb_person_filing.TbPersonFilingService;
 import com.pj.project.tb_person_filing.task.Base64ToImage;
+import com.pj.project.tb_person_filing.task.DelayIsuued;
 import com.pj.project.tb_terminal.TbTerminal;
 import com.pj.project.tb_terminal.TbTerminalService;
+import com.pj.project4sp.spcfg.SpCfgUtil;
 import io.netty.channel.ChannelHandlerContext;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -43,7 +45,6 @@ public class UploadUserHandler implements IHandler {
     private TbDeptService tbDeptService;
 
 
-
     @Override
     public CommandType commandType() {
         return CommandType.UPLOAD_USER;
@@ -51,11 +52,11 @@ public class UploadUserHandler implements IHandler {
 
     @Override
     public void handler(ChannelHandlerContext ctx, RequestPackageDTO packageDTO) {
-        log.info("设备上传人员信息:{}",JSONUtil.toJsonStr(packageDTO));
+        log.info("设备上传人员信息:{}", JSONUtil.toJsonStr(packageDTO));
         JSONObject params = JSONUtil.parseObj(packageDTO.getPayload().getParams());
         String sn = params.getStr("sn");
         TbTerminal tbTerminal = tbTerminalService.findBySN(sn);
-        if (tbTerminal == null ) {
+        if (tbTerminal == null) {
             log.error("========设备不存在=========:{}", sn);
             return;
         }
@@ -63,36 +64,39 @@ public class UploadUserHandler implements IHandler {
         tbTerminalService.updateById(tbTerminal);
         ctx.write(OKMsg.ok());
         ctx.flush();
+        boolean terminalFilling = SpCfgUtil.termianlFilling();
+        if (!terminalFilling) {
+            log.error("系统不允许设备端进行备案================");
+            return;
+        }
         WhitelistDTO uploadUserDTO = JSONUtil.toBean(params.getStr("users"), WhitelistDTO.class);
-        TbPersonFiling personFiling = tbPersonFilingService.findByIdCard(uploadUserDTO.getIdentity_number());
+        String idCarNo=uploadUserDTO.getIdentity_number();
+        TbPersonFiling personFiling = tbPersonFilingService.findByIdCard(idCarNo);
+        //是否允许设备端备案
         if (personFiling == null) {
-            TbPersonFiling   tbPersonFiling = new TbPersonFiling();
-           List<TbDept>deptList= tbDeptService.list();
-           deptList.stream().filter(tbDept -> tbDept.getPassType()==TbDept.PassTypeEnum.BLOW.getType()).findAny()
-                   .ifPresent(tbDept -> tbPersonFiling.setDeptId(tbDept.getId()));
+            TbPersonFiling tbPersonFiling = new TbPersonFiling();
+            TbDept dept = tbDeptService.findTheDept(TbDept.AdminTypeEnum.TEMP_TYPE.getType());
             Date now = new Date();
+            boolean needJudge = SpCfgUtil.fillingNeedJudge();
             tbPersonFiling.setCreateTime(now)
                     .setUpdateTime(now)
                     .setPin(uploadUserDTO.getPin())
-                    .setCreateBy("设备上传")
-                    .setIdCard(uploadUserDTO.getIdentity_number())
-                    .setJudgeState(1).setJudgeTime(now).setJudgeBy("终端备案上传")
+                    .setCreateBy("设备上传").setDeptId(dept.getId()).setDeptName(dept.getName())
+                    .setPin(idCarNo)
+                    .setIdCard(idCarNo)
+                    .setJudgeState(needJudge?0:1).setJudgeTime(needJudge?null:now).setJudgeBy(needJudge?"":"终端备案上传")
                     .setName(uploadUserDTO.getName());
             tbPersonFilingService.save(tbPersonFiling);
             //转换图片
-            taskService.addTask(new Base64ToImage(RandomUtil.randomNumbers(10),2000,tbPersonFiling.getId(),uploadUserDTO.getPhoto()));
-        }else {
-            if (!StrUtil.equals(personFiling.getPin(),uploadUserDTO.getPin())){
+            taskService.addTask(new Base64ToImage(RandomUtil.randomNumbers(10), 50, tbPersonFiling.getId(), uploadUserDTO.getPhoto()));
+            //分发人员信息到其他终端
+            taskService.addTask(new DelayIsuued(RandomUtil.randomNumbers(11), 4000, tbPersonFiling.getId(), sn));
+        } else {
+            if (!StrUtil.equals(personFiling.getPin(), uploadUserDTO.getPin())) {//更新pin
                 personFiling.setPin(uploadUserDTO.getPin());
                 tbPersonFilingService.updateById(personFiling);
+                taskService.addTask(new DelayIsuued(RandomUtil.randomNumbers(10), 4000, personFiling.getId(), sn));
             }
         }
-        List<TbTerminal> list = tbTerminalService.list();
-        //分发人员信息,不分发上传设备
-        list.stream().filter(t -> !StrUtil.equals(t.getSn(), sn))
-                .forEach(t -> {
-                    tbTerminalService.setCommand(CommandType.ISSUED_USER_COMMAND.getFuncId(), params, t);
-                    tbTerminalService.startHeartCommand(sn);
-                });
     }
 }

+ 3 - 8
sp-core/src/main/java/com/pj/current/netty/heart/HeartBeatHandler.java

@@ -64,11 +64,9 @@ public class HeartBeatHandler extends ChannelInboundHandlerAdapter {
     public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
         String body = JSONUtil.toJsonStr(msg);
         RequestPackageDTO dto = JSONUtil.toBean(body, RequestPackageDTO.class);
-        log.info("心跳包:{}", body);
         MyConfig myConfig = SpringUtil.getBean(MyConfig.class);
         //心跳包
         String sn = JSONUtil.parseObj(dto.getPayload().getParams()).getStr("sn");
-        STATE_CACHE.put(sn, sn);
         String commandStr = RedisUtil.get(myConfig.getHeartPrefix() + sn);
         if (StrUtil.isNotEmpty(commandStr)) {
             this.channelWrite(ctx, commandStr);
@@ -76,20 +74,19 @@ public class HeartBeatHandler extends ChannelInboundHandlerAdapter {
             return;
         }
         //todo 检查是否存在库里
-        TbTerminalService tbTerminalService = SpringUtil.getBean(TbTerminalService.class);
         InetSocketAddress insocket = (InetSocketAddress) ctx.channel().remoteAddress();
         String clientIp = insocket.getAddress().getHostAddress();
+        TbTerminalService tbTerminalService = SpringUtil.getBean(TbTerminalService.class);
         tbTerminalService.initTerminal(sn, clientIp);
         ResponsePackageDTO responseDTO = new ResponsePackageDTO();
         ParamsDTO paramsDTO = new ParamsDTO();
-        paramsDTO.setIp(myConfig.getIp()).setPort(myConfig.getCommandPort());
+        paramsDTO.setIp(myConfig.getNetIp()).setPort(myConfig.getCommandPort());
         ResponsePackageDTO.PayloadBean payloadBean = new ResponsePackageDTO.PayloadBean();
         payloadBean.setParams(paramsDTO);
         responseDTO.setPayload(payloadBean);
         String response = JSONUtil.toJsonStr(responseDTO);
-
-        log.info("回复心跳:{}", response);
         this.channelWrite(ctx, response);
+        STATE_CACHE.put(sn, sn);
     }
 
     /**
@@ -131,8 +128,6 @@ public class HeartBeatHandler extends ChannelInboundHandlerAdapter {
      */
     @Override
     public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
-
-        System.out.println();
         ctx.close();
         log.info(ctx.channel().id() + " 发生了错误,此连接被关闭" + "此时连通数量: " + CHANNEL_MAP.size());
         cause.printStackTrace();

+ 1 - 1
sp-core/src/main/java/com/pj/current/satoken/AuthConst.java

@@ -27,7 +27,7 @@ public final class AuthConst {
 	public static final String ROLE_LIST = "role-list";		    // 权限管理 - 角色管理
 	public static final String MENU_LIST = "menu-list";		   // 权限管理 - 菜单列表
 	public static final String ADMIN_LIST = "admin-list";		   // 权限管理 - 管理员列表
-	public static final String ADMIN_ADD = "admin-add";		   // 权限管理 - 管理员添加
+	public static final String ADMIN_ADD = "sp-admin-add";		   // 权限管理 - 管理员添加
 
 	public static final String CONSOLE = "console";		   // 监控中心
 	public static final String SQL_CONSOLE = "sql-console";		      // 监控中心 - SQL监控

+ 3 - 1
sp-core/src/main/java/com/pj/current/satoken/SaTokenConfigure.java

@@ -62,7 +62,9 @@ public class SaTokenConfigure implements WebMvcConfigurer {
         			
         			// 如果是预检请求,则立即返回到前端 
         			SaRouter.match(SaHttpMethod.OPTIONS)
-        				.free(r -> System.out.println("--------OPTIONS预检请求,不做处理"))
+        				.free(r -> {}
+
+						)
         				.back();
         		})
         		;

+ 45 - 8
sp-core/src/main/java/com/pj/current/satoken/StpUserUtil.java

@@ -1,6 +1,7 @@
 package com.pj.current.satoken;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 import cn.dev33.satoken.SaManager;
 import cn.dev33.satoken.fun.SaFunction;
@@ -12,6 +13,7 @@ import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
+import com.pj.project.tb_mini_user.TbMiniUser;
 import com.pj.utils.cache.RedisUtil;
 
 /**
@@ -20,18 +22,18 @@ import com.pj.utils.cache.RedisUtil;
  * @author kong
  */
 public class StpUserUtil {
-    public static final long ADMIN_DEPT_ID = 9999999L;
 
-    public static void setMiniUserId(Long userId){
+    public static void setMiniUserId(Long userId) {
         String key = "mini:" + StpUtil.getLoginIdAsString();
-        String id=userId+"";
+        String id = userId + "";
         if (StrUtil.isNotEmpty(id)) {
             RedisUtil.set(key, id);
         }
     }
-    public static Long getMiniUserId(){
+
+    public static Long getMiniUserId() {
         String key = "mini:" + StpUtil.getLoginIdAsString();
-       return Long.valueOf(RedisUtil.get(key));
+        return Long.valueOf(RedisUtil.get(key));
     }
 
     public static void setDeptId(String deptId) {
@@ -41,9 +43,44 @@ public class StpUserUtil {
         }
     }
 
-    public static String getDeptId() {
+    /**
+     * 内部 临时
+     * @param type
+     */
+    public static void setMiniUserType(Integer type) {
+        String key = "miniType:" + StpUtil.getLoginIdAsString();
+        RedisUtil.set(key, type + "");
+    }
+
+    /**
+     * 是否是内部人员
+     * @return
+     */
+    public static boolean isInnerMiniUser() {
+        String key = "miniType:" + StpUtil.getLoginIdAsString();
+        String type = RedisUtil.get(key);
+        return TbMiniUser.TypeEnum.INTERIOR_TYPE.getType().toString().equals(type);
+    }
+
+    /**
+     * 是否是管理组织
+     * @param type
+     */
+    public static void setAdminType(String type) {
+        String key = "adminType:" + StpUtil.getLoginIdAsString();
+        RedisUtil.set(key, type);
+    }
+
+    public static boolean isSuperAdmin() {
+        String key = "adminType:" + StpUtil.getLoginIdAsString();
+        return Integer.parseInt(RedisUtil.get(key)) == 1;
+    }
+
+
+    public static Long getDeptId() {
         String key = "dept:" + StpUtil.getLoginIdAsString();
-        return RedisUtil.get(key);
+        String deptId = RedisUtil.get(key);
+        return Long.valueOf(deptId);
     }
 
     public static void setAdmin(String name, String phone) {
@@ -59,7 +96,7 @@ public class StpUserUtil {
             String cacheObJ = RedisUtil.get(key);
             return JSONUtil.parseObj(cacheObJ).getStr("name");
         } catch (Exception e) {
-            return "";
+            return "系统";
         }
     }
 

+ 2 - 1
sp-core/src/main/java/com/pj/project/sp_admin/SpAdmin.java

@@ -25,7 +25,8 @@ public class SpAdmin implements Serializable  {
 	/** admin名称 */
 	public String name;	
 	public String nickname;
-	private String deptId;
+	private Long deptId;
+	private Integer superAdmin;
 
 	/** 头像地址 */
 	public String avatar;	

+ 2 - 0
sp-core/src/main/java/com/pj/project/sp_admin/SpAdminMapper.java

@@ -79,4 +79,6 @@ public interface SpAdminMapper {
     void updateDept(@Param("id")Long id, @Param("deptId")String deptId);
 
     void removeByPhone(@Param("phone")String phone);
+
+	void updateDept(SpAdmin spAdmin);
 }

+ 8 - 7
sp-core/src/main/java/com/pj/project/sp_admin/SpAdminMapper.xml

@@ -6,8 +6,8 @@
 	<!-- 增 -->
 	<insert id="add">
 		insert into
-		sp_admin(name, avatar,nickname,dept_id, dept_name, phone, role_id, create_by_aid, create_time)
-		values (#{name}, #{avatar},#{nickname},#{deptId}, #{deptName}, #{phone}, #{roleId}, #{createByAid}, now())
+		sp_admin(name, avatar,nickname,dept_id, dept_name,super_admin, phone, role_id, create_by_aid, create_time)
+		values (#{name}, #{avatar},#{nickname},#{deptId}, #{deptName},#{superAdmin}, #{phone}, #{roleId}, #{createByAid}, now())
 	</insert>
 
 
@@ -41,7 +41,8 @@
 		<result property="id" column="id" />
 		<result property="name" column="name" />
 		<result property="deptId" column="dept_id" />
-        <result property="deptName" column="deptName" />
+		<result property="superAdmin" column="super_admin" />
+        <result property="deptName" column="dept_name" />
 		<result property="avatar" column="avatar" />
 		<result property="password" column="password" />
 		<!-- <result property="pw" column="pw" /> -->
@@ -59,8 +60,7 @@
 	<!-- 查询sql -->
 	<sql id="select_sql">
 		select *,
-		(select name from sp_role where id = sp_admin.role_id) as role_name,
-		(select name from tb_dept where id=sp_admin.dept_id) as deptName
+		(select name from sp_role where id = sp_admin.role_id) as role_name
 		from sp_admin 
 	</sql>
 
@@ -89,7 +89,8 @@
 		<include refid="select_sql"></include>
 		where 1=1
 		<if test=' this.has("id")  '>and id = #{id} </if>
-		<if test=' this.has("deptId")  '>and dept_id in (${deptId}) </if>
+		<if test=' this.has("deptId")  '>and dept_id = #{deptId} </if>
+
 		<if test=' this.has("name")  '>and name like concat('%', #{name}, '%')  </if>
 		<if test=' this.has("roleId")  '>and role_id = #{roleId} </if>
 		order by 
@@ -114,7 +115,7 @@
 		update sp_admin set openid=#{openid},bind=1,bind_time=now() where id=#{id}
 	</update>
     <update id="updateDept">
-		update sp_admin set dept_id=#{deptId} where id=#{id}
+		update sp_admin set dept_id=#{deptId},dept_name=#{deptName},super_admin=#{superAdmin} where id=#{id}
 	</update>
 
 

+ 80 - 13
sp-core/src/main/java/com/pj/project/sp_admin/SpAdminService.java

@@ -1,10 +1,15 @@
 package com.pj.project.sp_admin;
 
 import cn.hutool.core.util.PhoneUtil;
+import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
+import com.pj.current.config.SystemObject;
 import com.pj.current.global.BusinessException;
 import com.pj.project.tb_dept.TbDept;
 import com.pj.project.tb_dept.TbDeptService;
+import com.pj.project.tb_mini_user.TbMiniUser;
+import com.pj.project.tb_mini_user.TbMiniUserService;
+import com.pj.utils.sg.AjaxJson;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
@@ -14,6 +19,7 @@ import com.pj.project4sp.SP;
 import cn.dev33.satoken.stp.StpUtil;
 
 import javax.annotation.Resource;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -22,6 +28,7 @@ import java.util.List;
  * @author kong
  */
 @Service
+@Transactional(rollbackFor = Exception.class)
 public class SpAdminService {
 
 
@@ -33,13 +40,16 @@ public class SpAdminService {
     @Resource
     private TbDeptService tbDeptService;
 
+    @Resource
+    private TbMiniUserService tbMiniUserService;
+
+
     /**
      * 管理员添加一个管理员
      *
      * @param admin
      * @return
      */
-    @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
     public long add(SpAdmin admin) {
         String phone = admin.getPhone();
         if (!PhoneUtil.isPhone(phone)) {
@@ -52,16 +62,7 @@ public class SpAdminService {
         // 创建人,为当前账号
         admin.setCreateByAid(StpUtil.getLoginIdAsLong());
         // 开始添加
-        StringBuilder deptName = new StringBuilder();
-        List<String> deptIdList = StrUtil.splitTrim(admin.getDeptId(), ",");
-        for (String deptId : deptIdList) {
-            TbDept tbDept = tbDeptService.getById(deptId);
-            tbDept.setPeopleNum(tbDept.getPeopleNum() + 1);
-            tbDeptService.updateById(tbDept);
-            deptName.append(tbDept.getName()).append("、");
-        }
-        deptName = new StringBuilder(deptName.substring(0, deptName.length() - 1));
-        admin.setDeptName(deptName.toString());
+        handlerDept(admin, admin.getDeptId());
         spAdminMapper.add(admin);
         // 获取主键
         long id = SP.publicMapper.getPrimarykey();
@@ -73,11 +74,77 @@ public class SpAdminService {
     }
 
 
-    public void updateDept(Long id, String deptId) {
-        spAdminMapper.updateDept(id,deptId);
+    public void updateDept(Long id, Long deptId) {
+        SpAdmin spAdmin = spAdminMapper.getById(id);
+        handlerDept(spAdmin, deptId);
+        spAdminMapper.updateDept(spAdmin);
+    }
+
+    private void handlerDept(SpAdmin spAdmin, Long deptId) {
+        int superAdmin = 0;
+        TbDept tbDept = tbDeptService.getById(deptId);
+        if (TbDept.AdminTypeEnum.ADMIN_TYPE.getType().equals(tbDept.getAdminType())) {
+            superAdmin = 1;
+        }
+        spAdmin.setDeptName(tbDept.getName()).setSuperAdmin(superAdmin);
     }
 
     public void removeByPhone(String phone) {
         spAdminMapper.removeByPhone(phone);
     }
+
+
+    public AjaxJson bindUser(String openid, String key, String password, Integer type, String name) {
+        TbMiniUser db = tbMiniUserService.findByOpenid(openid);
+        if (db != null) {
+            return AjaxJson.getError("您已绑定其他账户");
+        }
+        if (TbMiniUser.TypeEnum.INTERIOR_TYPE.getType().equals(type)) {
+            SpAdmin spAdmin = spAdminMapper.getByName(key);
+            if (spAdmin == null) {
+                return AjaxJson.getError("账号错误");
+            }
+            String md5Password = SystemObject.getPasswordMd5(spAdmin.getId(), password);
+            if (!spAdmin.getPassword2().equals(md5Password)) {
+                return AjaxJson.getError("密码错误");
+            }
+            // 4、是否禁用
+            if (spAdmin.getStatus() == 2) {
+                return AjaxJson.getError("此账号已被禁用");
+            }
+            if (spAdmin.getBind() == 1) {
+                return AjaxJson.getError("此账号已被占用");
+            }
+            spAdmin.setOpenid(openid);
+            spAdminMapper.bindUser(spAdmin);
+            TbMiniUser tbMiniUser = buildMiniUser(spAdmin, openid);
+            tbMiniUserService.save(tbMiniUser);
+            return AjaxJson.getSuccessData(tbMiniUser);
+        } else {
+            TbMiniUser tbMiniUser = createMiniUser(key, openid, name);
+            return AjaxJson.getSuccessData(tbMiniUser);
+        }
+    }
+
+    private TbMiniUser createMiniUser(String key, String openid, String name) {
+       TbDept dept= tbDeptService.findTheDept(TbDept.AdminTypeEnum.TEMP_TYPE.getType());
+        TbMiniUser tbMiniUser = new TbMiniUser();
+        tbMiniUser.setCreateTime(new Date()).setSpAdminId(RandomUtil.randomLong(100000, 999999))
+                .setOpenid(openid).setDeptId(dept.getId()+"").setSuperAdmin(0)
+                .setPhone(key).setType(TbMiniUser.TypeEnum.TEMPORARY_TYPE.getType())
+                .setName(name);
+        tbMiniUserService.save(tbMiniUser);
+        return tbMiniUser;
+    }
+
+    private TbMiniUser buildMiniUser(SpAdmin spAdmin, String openid) {
+        TbMiniUser tbMiniUser = new TbMiniUser();
+        tbMiniUser.setCreateTime(new Date()).setSuperAdmin(spAdmin.getSuperAdmin())
+                .setDeptId(spAdmin.getDeptId()+"")
+                .setOpenid(openid).setSpAdminId(spAdmin.getId())
+                .setPhone(spAdmin.getPhone())
+                .setType(2)
+                .setName(spAdmin.getNickname());
+        return tbMiniUser;
+    }
 }

+ 3 - 2
sp-core/src/main/java/com/pj/project/tb_car_black/TbCarBlackMapper.xml

@@ -32,8 +32,9 @@
 	<select id="getList" resultType="com.pj.project.tb_car_black.TbCarBlack">
 		<include refid="select_sql"></include>
 		<where>
-						<if test=' this.has("id") '> and id = #{id} </if>
-			<if test=' this.has("deptId") '> and dept_id in (${deptId}) </if>
+			<if test=' this.has("id") '> and id = #{id} </if>
+			<if test=' this.has("deptId") '> and dept_id = #{deptId} </if>
+
 			<if test=' this.has("carNo") '> and car_no like concat('%', #{carNo}, '%') </if>
 			<if test=' this.has("reason") '> and reason = #{reason} </if>
 			<if test=' this.has("startTime") '> and start_time = #{startTime} </if>

+ 2 - 0
sp-core/src/main/java/com/pj/project/tb_car_filing/TbCarFilingMapper.java

@@ -30,4 +30,6 @@ public interface TbCarFilingMapper extends BaseMapper<TbCarFiling> {
     TbCarFiling getById(Long id);
 
     List<TbCarFiling> getForWx(SoMap soMap);
+
+    List<TbCarFiling> getOuterList(SoMap soMap);
 }

+ 9 - 8
sp-core/src/main/java/com/pj/project/tb_car_filing/TbCarFilingMapper.xml

@@ -37,8 +37,8 @@
 	<select id="getList" resultMap="model">
 		<include refid="select_sql"></include>
 		<where>
-						<if test=' this.has("id") '> and id = #{id} </if>
-			<if test=' this.has("deptId") '> and dept_id in (${deptId}) </if>
+			<if test=' this.has("id") '> and id = #{id} </if>
+			<if test=' this.has("deptId") '> and dept_id = #{deptId} </if>
 			<if test=' this.has("carNo") '> and car_no  like concat('%',#{carNo} ,'%')</if>
 			<if test=' this.has("type") '> and type = #{type} </if>
 			<if test=' this.has("judgeState") '> and judge_state = #{judgeState} </if>
@@ -85,15 +85,16 @@
 		)
 		UNION ALL
 		( SELECT * FROM tb_car_filing where 1=1
-		<if test="deptIdList !=null and deptIdList.size>0">
-			and dept_id in
-			<foreach collection="deptIdList" item="deptId" open="(" close=")" separator=",">
-				#{deptId}
-			</foreach>
-		</if>
+		<if test=' this.has("deptId") '> and dept_id = #{deptId} </if>
 		)) c
 		order by c.create_time
 	</select>
+    <select id="getOuterList" resultType="com.pj.project.tb_car_filing.TbCarFiling">
+		 SELECT a.* FROM tb_car_filing a, re_mini_user_car_filing b
+		WHERE a.id = b.filing_car_id
+		AND b.mini_user_id = #{miniUserId}
+		order by a.id desc
+	</select>
 
 
 </mapper>

+ 16 - 11
sp-core/src/main/java/com/pj/project/tb_car_filing/TbCarFilingService.java

@@ -32,6 +32,7 @@ import javax.annotation.Resource;
  * @author qzyReal
  */
 @Service
+@Transactional(rollbackFor = Exception.class)
 public class TbCarFilingService extends ServiceImpl<TbCarFilingMapper, TbCarFiling> implements IService<TbCarFiling> {
 
     /**
@@ -44,23 +45,21 @@ public class TbCarFilingService extends ServiceImpl<TbCarFilingMapper, TbCarFili
     private TbDeptService tbDeptService;
     @Resource
     private TbPersonFilingService tbPersonFilingService;
-    @Resource
-    private TbCarBlackService tbCarBlackService;
 
 
     /**
      * 增
      */
     public void add(TbCarFiling t) {
-        String carNo=t.getCarNo().toUpperCase();
+        String carNo = t.getCarNo().toUpperCase();
         String idCarNo = t.getDriverIdCard();
         //原来是否录入过
         TbCarFiling checkFiling = this.findByDriverIdCar(idCarNo);
         if (checkFiling != null) {
             throw new BusinessException("司机已备案其他车辆");
         }
-        TbCarFiling carNoCheckFiling=this.findByCarNo(carNo);
-        if (carNoCheckFiling!=null){
+        TbCarFiling carNoCheckFiling = this.findByCarNo(carNo);
+        if (carNoCheckFiling != null) {
             throw new BusinessException("车辆已备案");
         }
         String needJudge = SpCfgUtil.getFillingJudge();
@@ -83,7 +82,8 @@ public class TbCarFilingService extends ServiceImpl<TbCarFilingMapper, TbCarFili
         TbPersonFiling t = tbPersonFilingService.findByIdCard(idCarNo);
         Date now = new Date();
         if (t == null) {
-            String pin = RandomUtil.randomNumbers(9);
+           // String pin = RandomUtil.randomNumbers(9);
+            String pin=tbCarFiling.getDriverIdCard();
             tbCarFiling.setDriverPin(pin);
             t = new TbPersonFiling();
             t.setDeptId(tbCarFiling.getDeptId()).setPhoto(tbCarFiling.getDriverPhoto()).setPin(pin)
@@ -96,7 +96,7 @@ public class TbCarFilingService extends ServiceImpl<TbCarFilingMapper, TbCarFili
             //下发司机白名单
             tbPersonFilingService.issued(t);
         } else {
-            tbCarFiling.setDriverPin(t.getPin());
+            tbCarFiling.setDriverPin(t.getIdCard());
         }
     }
 
@@ -114,7 +114,7 @@ public class TbCarFilingService extends ServiceImpl<TbCarFilingMapper, TbCarFili
 
     private void handler(TbCarFiling t) {
         if (!IdcardUtil.isValidCard(t.getDriverIdCard())) {
-           // throw new BusinessException("身份证不正确");
+            // throw new BusinessException("身份证不正确");
         }
         TbDept tbDept = tbDeptService.getById(t.getDeptId());
         if (tbDept == null) {
@@ -127,6 +127,7 @@ public class TbCarFilingService extends ServiceImpl<TbCarFilingMapper, TbCarFili
         t.setCarNo(t.getCarNo().toUpperCase());
     }
 
+
     /**
      * 删
      */
@@ -147,9 +148,9 @@ public class TbCarFilingService extends ServiceImpl<TbCarFilingMapper, TbCarFili
      */
     public void update(TbCarFiling t) {
         handler(t);
-        String carNo=t.getCarNo();
-        TbCarFiling carNoCheck=this.findByCarNo(carNo);
-        if (carNoCheck!=null&&t.getId().longValue()!=carNoCheck.getId().longValue()){
+        String carNo = t.getCarNo();
+        TbCarFiling carNoCheck = this.findByCarNo(carNo);
+        if (carNoCheck != null && t.getId().longValue() != carNoCheck.getId().longValue()) {
             throw new BusinessException("车辆已备案");
         }
         TbCarFiling db = this.getById(t.getId());
@@ -199,4 +200,8 @@ public class TbCarFilingService extends ServiceImpl<TbCarFilingMapper, TbCarFili
 
         return tbCarFilingMapper.getForWx(soMap);
     }
+
+    public List<TbCarFiling> getOuterList(SoMap soMap) {
+        return tbCarFilingMapper.getOuterList(soMap);
+    }
 }

+ 17 - 2
sp-core/src/main/java/com/pj/project/tb_dept/TbDept.java

@@ -90,13 +90,19 @@ public class TbDept extends Model<TbDept> implements Serializable {
 	/**
 	 * 更新人 
 	 */
-	private String updateBy;	
+	private String updateBy;
+
+
 
 	/**
 	 * 备注 
 	 */
 	private String remark;
 	private Integer passType=1;
+	/**
+	 * (0=临时,1=普通,2=管理组织)
+	 */
+	private Integer adminType=0;
 
 
 
@@ -108,7 +114,16 @@ public class TbDept extends Model<TbDept> implements Serializable {
 		;
 		private Integer type;
 		private String desc;
-
+	}
+	@Getter
+	@AllArgsConstructor
+	public static enum AdminTypeEnum{
+		TEMP_TYPE(0,"临时"),
+		NORMAL_TYPE(1,"普通"),
+		ADMIN_TYPE(2,"管理"),
+		;
+		private Integer type;
+		private String desc;
 	}
 
 

+ 2 - 3
sp-core/src/main/java/com/pj/project/tb_dept/TbDeptController.java

@@ -89,9 +89,8 @@ public class TbDeptController {
     @RequestMapping("getList")
     public AjaxJson getList() {
         SoMap so = SoMap.getRequestSoMap();
-        String deptId = StpUserUtil.getDeptId();
-        if (!StrUtil.equals(String.valueOf(StpUserUtil.ADMIN_DEPT_ID), deptId)) {
-            so.put("deptIdList", StrUtil.splitTrim(deptId,",").stream().map(Long::valueOf).collect(Collectors.toList()));
+        if (!StpUserUtil.isSuperAdmin()) {
+            so.put("deptId",StpUserUtil.getDeptId());
         }
         List<TbDept> list = tbDeptService.getList(so.startPage());
         return AjaxJson.getPageData(so.getDataCount(), list);

+ 1 - 6
sp-core/src/main/java/com/pj/project/tb_dept/TbDeptMapper.xml

@@ -44,12 +44,7 @@
 			<if test=' this.has("updateTime") '> and update_time = #{updateTime} </if>
 			<if test=' this.has("updateBy") '> and update_by = #{updateBy} </if>
 			<if test=' this.has("remark") '> and remark = #{remark} </if>
-			<if test="deptIdList !=null and deptIdList.size>0">
-			 	and id in
-				 <foreach collection="deptIdList" item="deptId" open="(" close=")" index=",">
-					 #{deptId}
-				 </foreach>
-			</if>
+			<if test=' this.has("deptId") '> and id = #{deptId} </if>
 		order by
 		<choose>
 			<when test='sortType == 1'> id desc </when>

+ 7 - 15
sp-core/src/main/java/com/pj/project/tb_dept/TbDeptService.java

@@ -49,16 +49,6 @@ public class TbDeptService extends ServiceImpl<TbDeptMapper, TbDept> implements
      * 删
      */
     void delete(Long id) {
-        TbDept db = super.getById(id);
-        if (db.getPeopleNum() > 0) {
-            throw new BusinessException("部门有用户数据,不能删除");
-        }
-        SoMap soMap = new SoMap();
-        soMap.put("deptId", id);
-        List<TbTerminal> tbTerminals = tbTerminalService.getList(soMap);
-        if (!tbTerminals.isEmpty()) {
-            throw new BusinessException("部门存在设备,不能删除");
-        }
         this.removeById(id);
     }
 
@@ -84,10 +74,12 @@ public class TbDeptService extends ServiceImpl<TbDeptMapper, TbDept> implements
     }
 
 
-    public TbDept findOneByPassType(Integer passType) {
-        QueryWrapper<TbDept> ew = new QueryWrapper<>();
-        ew.lambda().eq(TbDept::getPassType, passType);
-        List<TbDept> deptList = list(ew);
-        return deptList.isEmpty() ? null : deptList.get(0);
+
+
+    public TbDept findTheDept(Integer adminType) {
+        QueryWrapper<TbDept>ew=new QueryWrapper<>();
+        ew.lambda().eq(TbDept::getAdminType,adminType);
+        List<TbDept>list=list(ew);
+        return list.isEmpty()?null:list.get(0);
     }
 }

+ 24 - 8
sp-core/src/main/java/com/pj/project/tb_gate_terminal/TbGateTerminalService.java

@@ -32,6 +32,7 @@ import com.pj.project.tb_dept.TbDeptService;
 import com.pj.project.tb_gate_command_log.TbGateCommandLog;
 import com.pj.project.tb_gate_command_log.TbGateCommandLogService;
 import com.pj.project.tb_gate_terminal.bo.ReqBO;
+import com.pj.project.tb_gate_terminal.bo.ResultDTO;
 import com.pj.project.tb_gate_terminal.task.GateTerminalBase64ToImage;
 import com.pj.project.tb_venues.TbVenues;
 import com.pj.project.tb_venues.TbVenuesService;
@@ -114,10 +115,11 @@ public class TbGateTerminalService extends ServiceImpl<TbGateTerminalMapper, TbG
      * @return
      * @throws Exception
      */
-    private String getSn(String ip) throws Exception {
+    public String getSn(String ip) throws Exception {
         Socket socket = new Socket();
         socket.connect(new InetSocketAddress(ip, myConfig.getGatePort()), 4000);
         String result = ZKTecoUtils.sendAndGetResult(socket, GateCommandUtils.getSn());
+        socket.close();
         return JSONUtil.parseObj(result).getStr("value");
     }
 
@@ -193,10 +195,13 @@ public class TbGateTerminalService extends ServiceImpl<TbGateTerminalMapper, TbG
         if (code == null || code != 200) {
             throw new BusinessException("开闸失败");
         }
+        socket.close();
         TbGateCommandLog log = new TbGateCommandLog();
+        String createBy = StpUserUtil.getAdminName();
+        createBy = StrUtil.isEmpty(createBy) ? "系统下发" : createBy;
         log.setTerminalName(tbGateTerminal.getName()).setVenuesName(tbVenues.getName())
                 .setCommand(GateCommandUtils.openCommand()).setResponseContent(result).setSn(tbGateTerminal.getSn())
-                .setCreateBy(StpUserUtil.getAdminName()).setCreateTime(new Date());
+                .setCreateBy(createBy).setCreateTime(new Date());
         tbGateCommandLogService.save(log);
     }
 
@@ -218,7 +223,7 @@ public class TbGateTerminalService extends ServiceImpl<TbGateTerminalMapper, TbG
         Long terminalId = tbGateTerminal.getId();
         String cacheCarNo = RECORD_CACHE.get(terminalId);
         if (StrUtil.isNotEmpty(cacheCarNo)) {
-            log.error("===========40秒内重复识别:{}============", carNo);
+            log.error("===========10秒内重复识别:{}============", carNo);
             return;
         }
         if (tbGateTerminal.getDirection().equals(2)) {
@@ -243,8 +248,8 @@ public class TbGateTerminalService extends ServiceImpl<TbGateTerminalMapper, TbG
         String base64Image = plateResultBean.getImageFragmentFile();
         String carNo = plateResultBean.getLicense();
         String now = DateUtil.now();
-        TbCarVisitRecord carVisitRecord=  saveRecord(carNo, base64Image, tbGateTerminal, 1, 0);
-        cacheResult(carNo, now, tbGateTerminal.getVenuesId(), tbGateTerminal.getId(),carVisitRecord.getId());
+        TbCarVisitRecord carVisitRecord = saveRecord(carNo, base64Image, tbGateTerminal, 1, 0);
+        cacheResult(carNo, now, tbGateTerminal.getVenuesId(), tbGateTerminal.getId(), carVisitRecord.getId());
     }
 
     /**
@@ -299,16 +304,27 @@ public class TbGateTerminalService extends ServiceImpl<TbGateTerminalMapper, TbG
     }
 
 
-    private void cacheResult(String carNo, String now, Long venuesId, Long terminalId,Long recordId) {
+    private void cacheResult(String carNo, String now, Long venuesId, Long terminalId, Long recordId) {
+
         TbCarBlack tbCarBlack = tbCarBlackService.findByCarNo(carNo, now);
+        String key = "result:" + venuesId;
         //是否在黑名单上
+        ResultDTO dto = new ResultDTO(recordId, terminalId, 0);
         if (tbCarBlack != null) {
+            RedisUtil.set(key, JSONUtil.toJsonStr(dto));
             log.error("黑名单车辆:{}", carNo);
             return;
         }
+        TbVenues tbVenues=  tbVenuesService.getById(venuesId);
+        if (tbVenues.getStatus()==0){
+            RedisUtil.set(key, JSONUtil.toJsonStr(dto));
+            log.error("防疫策略不开放:{}", carNo);
+            return;
+        }
         TbCarFiling tbCarFiling = tbCarFilingService.findByCarNo(carNo);
         //是否备案
         if (tbCarFiling == null) {
+            RedisUtil.set(key, JSONUtil.toJsonStr(dto));
             log.error("车辆未备案:{}", carNo);
             return;
         }
@@ -324,8 +340,8 @@ public class TbGateTerminalService extends ServiceImpl<TbGateTerminalMapper, TbG
                 log.error("开闸失败:{}", e.getMessage());
             }
         }
-        RedisUtil.set("result:" + venuesId, terminalId + "");
-        RedisUtil.set("record:" + venuesId, recordId + "");
+        dto = new ResultDTO(recordId, terminalId, 1);
+        RedisUtil.set(key, JSONUtil.toJsonStr(dto));
     }
 
     public List<TbGateTerminal> findByVenuesId(Long venuesId) {

+ 19 - 0
sp-core/src/main/java/com/pj/project/tb_gate_terminal/bo/ResultDTO.java

@@ -0,0 +1,19 @@
+package com.pj.project.tb_gate_terminal.bo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+@Data
+@Accessors(chain = true)
+@NoArgsConstructor
+@AllArgsConstructor
+public class ResultDTO implements Serializable {
+    private Long recordId;
+    private Long gateTerminalId;
+    private Integer result;
+
+}

+ 47 - 0
sp-core/src/main/java/com/pj/project/tb_gate_terminal/task/TestStateTask.java

@@ -0,0 +1,47 @@
+package com.pj.project.tb_gate_terminal.task;
+
+import com.pj.current.config.MyConfig;
+import com.pj.project.tb_gate_terminal.TbGateTerminal;
+import com.pj.project.tb_gate_terminal.TbGateTerminalService;
+import com.pj.utils.zkt.GateCommandUtils;
+import com.pj.utils.zkt.ZKTecoUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.net.Socket;
+import java.util.Date;
+import java.util.List;
+
+@Component
+@Slf4j
+public class TestStateTask {
+    @Resource
+    private TbGateTerminalService tbGateTerminalService;
+
+    @Resource
+    private MyConfig myConfig;
+
+    @Scheduled(fixedRate = 45000)
+    @Async
+    public void testState() {
+        List<TbGateTerminal> list = tbGateTerminalService.list();
+        list.parallelStream().forEach(tbGateTerminal -> {
+            Socket socket = new Socket();
+            try {
+                socket.connect(new InetSocketAddress(tbGateTerminal.getIp(), myConfig.getGatePort()), 4000);
+                tbGateTerminal.setState("在线").setLastOnlineTime(new Date());
+            } catch (IOException e) {
+                log.error("检测在线异常:{}", e.getMessage());
+                tbGateTerminal.setState("离线");
+            }
+        });
+        if (!list.isEmpty()) {
+            tbGateTerminalService.updateBatchById(list);
+        }
+    }
+}

+ 3 - 8
sp-core/src/main/java/com/pj/project/tb_manager/TbManagerMapper.xml

@@ -37,6 +37,7 @@
         <include refid="select_sql"></include>
         <where>
             <if test=' this.has("id") '>and id = #{id}</if>
+            <if test=' this.has("deptId") '>and dept_id = #{deptId}</if>
             <if test=' this.has("name") '>and name = #{name}</if>
             <if test=' this.has("phone") '>and phone = #{phone}</if>
             <if test=' this.has("position") '>and position = #{position}</if>
@@ -49,13 +50,7 @@
             <if test=' this.has("createBy") '>and create_by = #{createBy}</if>
             <if test=' this.has("updateTime") '>and update_time = #{updateTime}</if>
             <if test=' this.has("updateBy") '>and update_by = #{updateBy}</if>
-            <if test=' this.has("alarm") '>and alarm = #{alarm}</if>
-            <if test="deptIdList !=null and deptIdList.size>0">
-                and dept_id in
-                <foreach collection="deptIdList" open="(" separator="," close=")" item="deptId">
-                    #{deptId}
-                </foreach>
-            </if>
+            <if test=' this.has("alarm") '>and alarm =#{alarm} </if>
         </where>
         order by
         <choose>
@@ -78,7 +73,7 @@
     </select>
     <select id="findAlarmPersonByVenuesId" resultType="com.pj.project.tb_manager.TbManager">
 		select *,(select openid from tb_mini_user where phone=tb_manager.phone) as openid from tb_manager
-		where venues_id = #{venuesId} and alarm=1
+		where venues_id = #{venuesId}
 	</select>
 
 

+ 7 - 47
sp-core/src/main/java/com/pj/project/tb_manager/TbManagerService.java

@@ -37,8 +37,6 @@ public class TbManagerService extends ServiceImpl<TbManagerMapper, TbManager> im
     TbManagerMapper tbManagerMapper;
 
     @Resource
-    private SpAdminService spAdminService;
-    @Resource
     private TbMiniUserService tbMiniUserService;
 
 
@@ -50,23 +48,16 @@ public class TbManagerService extends ServiceImpl<TbManagerMapper, TbManager> im
         t.setCreateTime(now).setUpdateTime(now)
                 .setCreateBy(StpUserUtil.getAdminName())
                 .setUpdateBy(StpUserUtil.getAdminName());
-        TbManager db = findByPhone(t.getPhone());
+        TbManager db = findByPhoneAndType(t.getPhone(),t.getAlarm());
         if (db != null) {
             throw new BusinessException("手机号被占用");
         }
-        SpAdmin spAdmin = new SpAdmin();
-        String phone = t.getPhone();
-        spAdmin.setNickname(t.getName())
-                .setPhone(phone)
-                .setName(phone)
-                .setPassword(phone).setDeptId(t.getDeptId() + "");
-        spAdminService.add(spAdmin);
         this.save(t);
     }
 
-    public TbManager findByPhone(String phone) {
+    public TbManager findByPhoneAndType(String phone,int type) {
         QueryWrapper<TbManager> ew = new QueryWrapper<>();
-        ew.lambda().eq(TbManager::getPhone, phone);
+        ew.lambda().eq(TbManager::getPhone, phone).eq(TbManager::getAlarm,type);
         return getOne(ew);
     }
 
@@ -74,9 +65,8 @@ public class TbManagerService extends ServiceImpl<TbManagerMapper, TbManager> im
      * 删
      */
     public void delete(Long id) {
-      TbManager tbManager=  this.getById(id);
-      spAdminService.removeByPhone(tbManager.getPhone());
-      tbMiniUserService.removeByPhone(tbManager.getPhone());
+        TbManager tbManager = this.getById(id);
+        tbMiniUserService.removeByPhone(tbManager.getPhone());
         this.removeById(id);
     }
 
@@ -85,7 +75,7 @@ public class TbManagerService extends ServiceImpl<TbManagerMapper, TbManager> im
      */
     public void update(TbManager t) {
         t.setUpdateTime(new Date()).setUpdateBy(StpUserUtil.getAdminName());
-        TbManager db = findByPhone(t.getPhone());
+        TbManager db = findByPhoneAndType(t.getPhone(),t.getAlarm());
         if (db != null && t.getId().longValue() != db.getId().longValue()) {
             throw new BusinessException("手机号被占用");
         }
@@ -107,38 +97,8 @@ public class TbManagerService extends ServiceImpl<TbManagerMapper, TbManager> im
     }
 
 
-    /**
-     * 添加预警对象
-     *
-     * @param t
-     */
-    public void addAlarm(TbManager t) {
-        String phone = t.getPhone();
-        String name = t.getName();
-        TbManager db = findByPhone(phone);
-        if (db != null && !StrUtil.equals(name, db.getName())) {
-            throw new BusinessException("存在手机号相同,但是姓名不一致的数据");
-        }
-        if (db != null && StrUtil.equals(name, db.getName())) {
-            db.setAlarm(1);
-            this.updateById(db);
-            return;
-        }
-        Date now = new Date();
-        t.setCreateTime(now).setUpdateTime(now).setAlarm(1)
-                .setCreateBy(StpUserUtil.getAdminName())
-                .setUpdateBy(StpUserUtil.getAdminName());
-        SpAdmin spAdmin = new SpAdmin();
-        spAdmin.setNickname(t.getName())
-                .setPhone(phone)
-                .setName(phone)
-                .setPassword(phone).setDeptId(t.getDeptId() + "");
-        spAdminService.add(spAdmin);
-        this.save(t);
-    }
-
     public List<TbManager> findAlarmPersonByVenuesId(Long venuesId) {
-        return   tbManagerMapper.findAlarmPersonByVenuesId(venuesId);
+        return tbManagerMapper.findAlarmPersonByVenuesId(venuesId);
 
     }
 }

+ 4 - 0
sp-core/src/main/java/com/pj/project/tb_mini_user/TbMiniUser.java

@@ -54,8 +54,12 @@ public class TbMiniUser extends Model<TbMiniUser> implements Serializable {
 
     /**
      * 类型(1=临时,2=内部)
+     * 临时人员只能看到自己的和自己备案的信息,看不到与部门有关的信息
+     *
+     *
      */
     private Integer type;
+    private Integer superAdmin;
 
     /**
      * 联系号码

+ 2 - 0
sp-core/src/main/java/com/pj/project/tb_mini_user/TbMiniUserService.java

@@ -89,6 +89,8 @@ public class TbMiniUserService extends ServiceImpl<TbMiniUserMapper, TbMiniUser>
         StpUserUtil.setDeptId(tbMiniUser.getDeptId() + "");
         StpUserUtil.setAdmin(tbMiniUser.getName(), tbMiniUser.getPhone());
         StpUserUtil.setMiniUserId(tbMiniUser.getId());
+        StpUserUtil.setMiniUserType(tbMiniUser.getType());
+        StpUserUtil.setAdminType(tbMiniUser.getSuperAdmin() + "");
         return AjaxJson.getSuccessData(tbMiniUser);
     }
 }

+ 3 - 2
sp-core/src/main/java/com/pj/project/tb_person_black/TbPersonBlackMapper.xml

@@ -33,8 +33,9 @@
 	<select id="getList" resultType="com.pj.project.tb_person_black.TbPersonBlack">
 		<include refid="select_sql"></include>
 		<where>
-						<if test=' this.has("id") '> and id = #{id} </if>
-			<if test=' this.has("deptId") '> and dept_id in (${deptId}) </if>
+			<if test=' this.has("id") '> and id = #{id} </if>
+			<if test=' this.has("deptId") '> and dept_id = #{deptId} </if>
+
 			<if test=' this.has("name") '> and name like concat('%', #{name}, '%') </if>
 			<if test=' this.has("idCard") '> and id_card = #{idCard} </if>
 			<if test=' this.has("reason") '> and reason = #{reason} </if>

+ 21 - 8
sp-core/src/main/java/com/pj/project/tb_person_black/TbPersonBlackService.java

@@ -10,6 +10,7 @@ import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.util.IdcardUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -19,6 +20,7 @@ import com.pj.current.netty.command.handler.dto.BlackPersonDTO;
 import com.pj.project.tb_person_filing.TbPersonFiling;
 import com.pj.project.tb_terminal.TbTerminal;
 import com.pj.project.tb_terminal.TbTerminalService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
@@ -33,6 +35,8 @@ import javax.annotation.Resource;
  * @author qzyReal
  */
 @Service
+@Transactional
+@Slf4j
 public class TbPersonBlackService extends ServiceImpl<TbPersonBlackMapper, TbPersonBlack> implements IService<TbPersonBlack> {
 
     /**
@@ -53,7 +57,7 @@ public class TbPersonBlackService extends ServiceImpl<TbPersonBlackMapper, TbPer
         if (!IdcardUtil.isValidCard(t.getIdCard())) {
             throw new BusinessException("身份证不正确");
         }
-        TbPersonBlack db = findByIdCardAndDeptId(t.getIdCard(), t.getDeptId());
+        TbPersonBlack db = findByIdCard(t.getIdCard());
         if (db != null) {
             throw new BusinessException("人员已经存在");
         }
@@ -67,12 +71,13 @@ public class TbPersonBlackService extends ServiceImpl<TbPersonBlackMapper, TbPer
 
     private void handlerIssued(TbPersonBlack t) {
         LocalDateTime startTime = t.getStartTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
-        LocalDateTime endTime=t.getEndTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
-        LocalDateTime now=LocalDateTime.now();
-        if (startTime.isBefore(now)&&endTime.isAfter(now)) {
+        LocalDateTime endTime = t.getEndTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+        LocalDateTime now = LocalDateTime.now();
+        if (startTime.isBefore(now) && endTime.isAfter(now)) {
+
             issued(t);
         }
-        if (now.isAfter(endTime)){
+        if (now.isAfter(endTime)) {
             deleteTerminalBlack(t);
         }
     }
@@ -93,7 +98,7 @@ public class TbPersonBlackService extends ServiceImpl<TbPersonBlackMapper, TbPer
         if (!IdcardUtil.isValidCard(t.getIdCard())) {
             throw new BusinessException("身份证不正确");
         }
-        TbPersonBlack idCardDb = findByIdCardAndDeptId(t.getIdCard(), t.getDeptId());
+        TbPersonBlack idCardDb = findByIdCard(t.getIdCard());
         if (idCardDb != null && !idCardDb.getId().equals(t.getId())) {
             throw new BusinessException("人员已存在");
         }
@@ -166,6 +171,7 @@ public class TbPersonBlackService extends ServiceImpl<TbPersonBlackMapper, TbPer
         List<TbTerminal> terminals = tbTerminalService.list();
         JSONObject users = builderData(tbPersonBlack);
         terminals.forEach(tbTerminal -> {
+            log.error("下发黑名单,users:{},{}", tbTerminal.getSn(), JSONUtil.toJsonStr(users));
             tbTerminalService.setCommand(CommandType.ISSUED_BLACKLIST_COMMAND.getFuncId(), users, tbTerminal);
             tbTerminalService.startHeartCommand(tbTerminal.getSn());
         });
@@ -197,9 +203,8 @@ public class TbPersonBlackService extends ServiceImpl<TbPersonBlackMapper, TbPer
         return list(ew);
     }
 
-    public TbPersonBlack findByIdCardAndDeptId(String idCard, Long deptId) {
+    public TbPersonBlack findByIdCard(String idCard) {
         QueryWrapper<TbPersonBlack> ew = new QueryWrapper<>();
-        ew.eq("dept_id", deptId);
         ew.eq("id_card", idCard);
         return getOne(ew);
     }
@@ -217,4 +222,12 @@ public class TbPersonBlackService extends ServiceImpl<TbPersonBlackMapper, TbPer
                 .le("date_format('end_time','%Y-%m-%d %h:%s')", eTime);
         return list(ew);
     }
+
+    public TbPersonBlack findByIdCardAndTime(String idCard, String now) {
+        QueryWrapper<TbPersonBlack> ew = new QueryWrapper<>();
+        ew.lambda().eq(TbPersonBlack::getIdCard, idCard);
+        ew.ge("date_format('end_time','%Y-%m-%d %h:%s:%i')", now)
+                .le("date_format('end_time','%Y-%m-%d %h:%s:%i')", now);
+        return getOne(ew);
+    }
 }

+ 1 - 1
sp-core/src/main/java/com/pj/project/tb_person_black/task/PersonBlackTask.java

@@ -23,7 +23,7 @@ public class PersonBlackTask implements Serializable {
     public void task() {
         //提前5分钟下发黑名单
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm");
-        LocalDateTime fiveMinutes = LocalDateTime.now().minusMinutes(5);
+        LocalDateTime fiveMinutes = LocalDateTime.now().minusMinutes(1);
         LocalDateTime sixMinutes = fiveMinutes.minusMinutes(1);
         List<TbPersonBlack> personBlacks = tbPersonBlackService.finRecordStartTimeInTimes(sixMinutes.format(formatter), fiveMinutes.format(formatter));
         personBlacks.forEach(tbPersonBlack -> {

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

@@ -29,4 +29,6 @@ public interface TbPersonFilingMapper extends BaseMapper<TbPersonFiling> {
     TbPersonFiling getById(Integer id);
 
     List<TbPersonFiling> getForWx(SoMap soMap);
+
+    List<TbPersonFiling> getOuterList(SoMap soMap);
 }

+ 9 - 7
sp-core/src/main/java/com/pj/project/tb_person_filing/TbPersonFilingMapper.xml

@@ -36,7 +36,8 @@
         <include refid="select_sql"></include>
         <where>
             <if test=' this.has("id") '>and id = #{id}</if>
-            <if test=' this.has("deptId") '>and dept_id in (${deptId})</if>
+            <if test=' this.has("deptId") '>and dept_id = #{deptId}</if>
+
             <if test=' this.has("name") '>and name = #{name}</if>
             <if test=' this.has("type") '>and type = #{type}</if>
             <if test=' this.has("idCard") '>and id_card = #{idCard}</if>
@@ -80,15 +81,16 @@
         )
         UNION ALL
         ( SELECT * FROM tb_person_filing where 1=1
-        <if test="deptIdList !=null and deptIdList.size>0">
-            and a.dept_id in
-            <foreach collection="deptIdList" item="deptId" open="(" close=")" separator=",">
-                #{deptId}
-            </foreach>
-        </if>
+        <if test=' this.has("deptId") '>and dept_id = #{deptId}</if>
         )) c
         order by c.create_time desc
 	</select>
+    <select id="getOuterList" resultType="com.pj.project.tb_person_filing.TbPersonFiling">
+         SELECT a.* FROM tb_person_filing a, re_mini_user_person_filing b
+         WHERE a.id = b.filing_person_id
+         AND b.mini_user_id = #{miniUserId}
+         order by a.id desc
+    </select>
 
 
 </mapper>

+ 35 - 11
sp-core/src/main/java/com/pj/project/tb_person_filing/TbPersonFilingService.java

@@ -70,14 +70,14 @@ public class TbPersonFilingService extends ServiceImpl<TbPersonFilingMapper, TbP
     public void add(TbPersonFiling t) {
         String idCard = t.getIdCard();
         if (!IdcardUtil.isValidCard(idCard)) {
-            //throw new BusinessException("身份证不正确");
+            throw new BusinessException("身份证不正确");
         }
         TbPersonFiling db = findByIdCard(idCard);
         if (db != null) {
             throw new BusinessException("人员已存在");
         }
-        String pin = RandomUtil.randomNumbers(9);
-        t.setPin(pin);
+        //String pin = RandomUtil.randomNumbers(9);
+        t.setPin(idCard);
         String needJudge = SpCfgUtil.getFillingJudge();
         if (StrUtil.equals(needJudge, "2")) {
             t.setJudgeState(1).setJudgeTime(new Date()).setJudgeBy("系统自动审核");
@@ -117,9 +117,7 @@ public class TbPersonFilingService extends ServiceImpl<TbPersonFilingMapper, TbP
         handlerTime(t);
         //改了身份证或者名字,部门,要把旧的人员信息清除,下发新的
         if (!StrUtil.equals(t.getIdCard(), db.getIdCard())
-                || !StrUtil.equals(t.getName(), db.getName())
-                || !t.getDeptId().equals(db.getDeptId())
-        ) {
+                || !StrUtil.equals(t.getName(), db.getName())) {
             //删除旧的
             deleteTerminalWhilte(db.getPin());
             //下发新的
@@ -172,6 +170,27 @@ public class TbPersonFilingService extends ServiceImpl<TbPersonFilingMapper, TbP
         });
     }
 
+    /**
+     * 排除设备下发
+     *
+     * @param id
+     * @param sn
+     */
+    public void issuedNotTerminal(Integer id, String sn) {
+        TbPersonFiling filing = this.getById(id);
+        if (filing.getJudgeState() != 1) {
+            log.error("人员白名单未审核通过,不下发:{}", JSONUtil.toJsonStr(filing));
+            return;
+        }
+        List<TbTerminal> tbTerminalList = tbTerminalService.list();
+
+        JSONObject params = builderParams(filing);
+        tbTerminalList.stream().filter(t -> !StrUtil.equals(t.getSn(), sn)).forEach(tbTerminal -> {
+            tbTerminalService.setCommand(CommandType.ISSUED_USER_COMMAND.getFuncId(), params, tbTerminal);
+            tbTerminalService.startHeartCommand(tbTerminal.getSn());
+        });
+    }
+
 
     /**
      * 下发所有人员白名单到单个设备
@@ -190,7 +209,6 @@ public class TbPersonFilingService extends ServiceImpl<TbPersonFilingMapper, TbP
 
     /**
      * 删除设备某个人的白名单
-     *
      */
     public void deleteTerminalWhilte(String pin) {
         List<TbTerminal> tbTerminalList = tbTerminalService.list();
@@ -245,10 +263,11 @@ public class TbPersonFilingService extends ServiceImpl<TbPersonFilingMapper, TbP
 
     /**
      * 审核
+     *
      * @param filing
      */
     public void judge(TbPersonFiling filing) {
-        TbPersonFiling db=this.getById(filing.getId());
+        TbPersonFiling db = this.getById(filing.getId());
         db.setJudgeBy(StpUserUtil.getAdminName()).setJudgeTime(new Date()).setJudgeState(filing.getJudgeState());
         this.updateById(db);
         issued(db);
@@ -256,16 +275,21 @@ public class TbPersonFilingService extends ServiceImpl<TbPersonFilingMapper, TbP
 
     /**
      * 根据openid查找
+     *
      * @param openid
      * @return
      */
-    public TbPersonFiling findByOpenid(String openid){
-        QueryWrapper<TbPersonFiling>ew=new QueryWrapper<>();
-        ew.eq("openid",openid);
+    public TbPersonFiling findByOpenid(String openid) {
+        QueryWrapper<TbPersonFiling> ew = new QueryWrapper<>();
+        ew.eq("openid", openid);
         return getOne(ew);
     }
 
     public List<TbPersonFiling> getForWx(SoMap so) {
         return tbPersonFilingMapper.getForWx(so);
     }
+
+    public List<TbPersonFiling> getOuterList(SoMap startPage) {
+        return tbPersonFilingMapper.getOuterList(startPage);
+    }
 }

+ 25 - 0
sp-core/src/main/java/com/pj/project/tb_person_filing/task/DelayIsuued.java

@@ -0,0 +1,25 @@
+package com.pj.project.tb_person_filing.task;
+
+import cn.hutool.extra.spring.SpringUtil;
+import com.pj.current.task.Task;
+import com.pj.project.tb_person_filing.TbPersonFilingService;
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+public class DelayIsuued extends Task {
+    private Integer id;
+    private String sn;
+
+    public DelayIsuued(String taskId, long delayInMilliseconds,Integer id,String sn) {
+        super(taskId, delayInMilliseconds);
+        this.id=id;
+        this.sn=sn;
+    }
+
+    @Override
+    public void run() {
+        log.info("延迟下发人脸:{},{}",id,sn);
+        TbPersonFilingService tbPersonFilingService= SpringUtil.getBean(TbPersonFilingService.class);
+        tbPersonFilingService.issuedNotTerminal(id,sn);
+    }
+}

+ 1 - 6
sp-core/src/main/java/com/pj/project/tb_person_visit_record/TbPersonVisitRecordMapper.xml

@@ -17,6 +17,7 @@
 		<include refid="select_sql"></include>
 		<where>
 			<if test=' this.has("id") '> and id = #{id} </if>
+			<if test=' this.has("deptId") '> and dept_id = #{deptId} </if>
 			<if test=' this.has("direction") '> and direction = #{direction} </if>
 			<if test=' this.has("deptName") '> and dept_name = #{deptName} </if>
 			<if test=' this.has("name") '> and name like concat('%',#{name},'%') </if>
@@ -34,12 +35,6 @@
             <if test=' this.has("unhealthy") '> and health_status != '绿码' </if>
             <if test='dataType == 0'> and health_status = '绿码' </if>
             <if test='dataType == 1'> and health_status != '绿码' </if>
-             <if test="deptIdList !=null and deptIdList.size>0">
-             and dept_id in
-				 <foreach collection="deptIdList" open="(" separator="," close=")" item="deptId">
-					 #{deptId}
-				 </foreach>
-			 </if>
         </where>
 		order by id desc
 	</select>

+ 2 - 1
sp-core/src/main/java/com/pj/project/tb_terminal/TbTerminal.java

@@ -76,7 +76,8 @@ public class TbTerminal extends Model<TbTerminal> implements Serializable {
 	/**
 	 * 场所ID 
 	 */
-	private Long venuesId;	
+	private Long venuesId;
+
 	private Integer direction;
 
 	/**

+ 3 - 0
sp-core/src/main/java/com/pj/project/tb_terminal/TbTerminalMapper.java

@@ -2,6 +2,7 @@ package com.pj.project.tb_terminal;
 
 import java.util.List;
 
+import com.pj.project.tb_terminal.bo.MonitorDTO;
 import org.apache.ibatis.annotations.Mapper;
 
 import com.pj.utils.so.*;
@@ -26,4 +27,6 @@ List<TbTerminal> getList(SoMap so);
 
 
     void unbind(Long id);
+
+    List<MonitorDTO> getMonitor();
 }

+ 22 - 8
sp-core/src/main/java/com/pj/project/tb_terminal/TbTerminalMapper.xml

@@ -74,14 +74,28 @@
 			<otherwise> id desc </otherwise>
 		</choose>
 	</select>
-
-
-
-
-
-
-
-
+    <select id="getMonitor" resultType="com.pj.project.tb_terminal.bo.MonitorDTO">
+		SELECT
+			NAME,
+			ip_address AS ip,
+			direction,
+			state,
+			channel_name,
+			last_on_line AS last_online_time,
+			 '人脸道闸设备' as type
+		FROM
+			tb_terminal UNION ALL
+		SELECT
+			NAME,
+			ip,
+			direction,
+			state,
+			( SELECT `name` FROM tb_venues WHERE id = tb_gate_terminal.venues_id ) AS channel_name,
+			last_online_time,
+			 '车辆道闸设备' as type
+		FROM
+			tb_gate_terminal
+	</select>
 
 
 </mapper>

+ 86 - 13
sp-core/src/main/java/com/pj/project/tb_terminal/TbTerminalService.java

@@ -2,34 +2,40 @@ package com.pj.project.tb_terminal;
 
 import java.util.Date;
 import java.util.List;
-import java.util.Set;
 
 import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.Update;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.pj.current.config.MyConfig;
 import com.pj.current.global.BusinessException;
 import com.pj.current.netty.command.constants.CommandType;
-import com.pj.current.netty.dto.ParamsDTO;
 import com.pj.current.netty.dto.RequestPackageDTO;
-import com.pj.current.netty.dto.ResponsePackageDTO;
 import com.pj.current.netty.heart.HeartBeatHandler;
 import com.pj.current.satoken.StpUserUtil;
 import com.pj.project.tb_command_log.TbCommandLog;
 import com.pj.project.tb_command_log.TbCommandLogService;
+import com.pj.project.tb_dept.TbDept;
+import com.pj.project.tb_dept.TbDeptService;
+import com.pj.project.tb_person_black.TbPersonBlack;
 import com.pj.project.tb_person_black.TbPersonBlackService;
+import com.pj.project.tb_person_filing.TbPersonFiling;
 import com.pj.project.tb_person_filing.TbPersonFilingService;
+import com.pj.project.tb_person_visit_record.TbPersonVisitRecord;
+import com.pj.project.tb_terminal.bo.CheckBO;
+import com.pj.project.tb_terminal.bo.CheckDataDTO;
+import com.pj.project.tb_terminal.bo.MonitorDTO;
 import com.pj.project.tb_venues.TbVenues;
 import com.pj.project.tb_venues.TbVenuesService;
+import com.pj.project4sp.spcfg.SpCfgUtil;
 import com.pj.utils.cache.RedisUtil;
-import io.netty.channel.ChannelHandlerContext;
+import com.pj.utils.sg.AjaxJson;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -67,6 +73,8 @@ public class TbTerminalService extends ServiceImpl<TbTerminalMapper, TbTerminal>
 
     @Resource
     private TbPersonBlackService tbPersonBlackService;
+    @Resource
+    private TbDeptService tbDeptService;
 
 
     /**
@@ -123,6 +131,9 @@ public class TbTerminalService extends ServiceImpl<TbTerminalMapper, TbTerminal>
             tbTerminal.setIpAddress(clientIp).setState(TbTerminal.StateType.ONLINE.getState())
                     .setSn(sn).setCreateTime(new Date());
             this.save(tbTerminal);
+            tbPersonFilingService.issued(tbTerminal);
+            tbPersonBlackService.issued(tbTerminal);
+            this.startHeartCommand(tbTerminal.getSn());
             return;
         }
         if (!StrUtil.equals(tbTerminal.getState(), TbTerminal.StateType.ONLINE.getState())) {
@@ -190,6 +201,7 @@ public class TbTerminalService extends ServiceImpl<TbTerminalMapper, TbTerminal>
 
     /**
      * 查看设备属性,不记录日志
+     *
      * @param funcId
      * @param sn
      */
@@ -223,7 +235,7 @@ public class TbTerminalService extends ServiceImpl<TbTerminalMapper, TbTerminal>
      */
     public void unbind(Long id) {
         TbTerminal tbTerminal = this.getById(id);
-        if (StrUtil.equals(tbTerminal.getState(),TbTerminal.StateType.OFFLINE.getState())){
+        if (StrUtil.equals(tbTerminal.getState(), TbTerminal.StateType.OFFLINE.getState())) {
             throw new BusinessException("设备已离线");
         }
         tbTerminalMapper.unbind(id);
@@ -236,7 +248,7 @@ public class TbTerminalService extends ServiceImpl<TbTerminalMapper, TbTerminal>
      */
     public void clearData(Long id) {
         TbTerminal tbTerminal = this.getById(id);
-        if (StrUtil.equals(tbTerminal.getState(),TbTerminal.StateType.OFFLINE.getState())){
+        if (StrUtil.equals(tbTerminal.getState(), TbTerminal.StateType.OFFLINE.getState())) {
             throw new BusinessException("设备已离线");
         }
         this.clearData(tbTerminal);
@@ -255,7 +267,6 @@ public class TbTerminalService extends ServiceImpl<TbTerminalMapper, TbTerminal>
     }
 
 
-
     /**
      * 清空所有数据
      *
@@ -268,12 +279,13 @@ public class TbTerminalService extends ServiceImpl<TbTerminalMapper, TbTerminal>
 
     /**
      * 远程开门
+     *
      * @param id
      */
     public void open(Long id) {
         log.info("==========远程开闸============");
         TbTerminal tbTerminal = this.getById(id);
-        if (StrUtil.equals(tbTerminal.getState(),TbTerminal.StateType.OFFLINE.getState())){
+        if (StrUtil.equals(tbTerminal.getState(), TbTerminal.StateType.OFFLINE.getState())) {
             throw new BusinessException("设备已离线");
         }
         setCommand(CommandType.ISSUED_NORMALOPEN_COMMAND.getFuncId(), null, tbTerminal);
@@ -282,15 +294,16 @@ public class TbTerminalService extends ServiceImpl<TbTerminalMapper, TbTerminal>
 
     /**
      * 同步时间
+     *
      * @param id
      */
-    public void asyncTime(Long id){
+    public void asyncTime(Long id) {
         TbTerminal tbTerminal = this.getById(id);
-        if (StrUtil.equals(tbTerminal.getState(),TbTerminal.StateType.OFFLINE.getState())){
+        if (StrUtil.equals(tbTerminal.getState(), TbTerminal.StateType.OFFLINE.getState())) {
             throw new BusinessException("设备已离线");
         }
-        JSONObject params=new JSONObject();
-        params.set("time",System.currentTimeMillis()/1000);
+        JSONObject params = new JSONObject();
+        params.set("time", System.currentTimeMillis() / 1000);
         setCommand(CommandType.SYNC_TIME_COMMAND.getFuncId(), params, tbTerminal);
         startHeartCommand(tbTerminal.getSn());
 
@@ -301,4 +314,64 @@ public class TbTerminalService extends ServiceImpl<TbTerminalMapper, TbTerminal>
         ew.eq("channel_id", channelId);
         return list(ew);
     }
+
+    public List<MonitorDTO> getMonitor() {
+        return tbTerminalMapper.getMonitor();
+    }
+
+    /**
+     * 终端请求是否放行
+     *
+     * @param checkBO
+     * @return
+     */
+    public AjaxJson check(CheckBO checkBO) {
+        log.info("设备请求放行接口:{}", JSONUtil.toJsonStr(checkBO));
+        int acidLimit = SpCfgUtil.getAcidLimit();
+        int tourLimit = SpCfgUtil.getTourLimit();
+        String now = DateUtil.now();
+        String idCard = checkBO.getIdentity_number();
+        CheckDataDTO checkDataDTO = new CheckDataDTO();
+        checkDataDTO.setNucleic_restrict(acidLimit)
+                .setTrip_restrict(tourLimit).setIs_pass(0);
+        //是否备案、备案是否通过审核
+        TbPersonFiling tbPersonFiling = tbPersonFilingService.findByIdCard(idCard);
+        if (tbPersonFiling == null || tbPersonFiling.getJudgeState() == 0) {
+            log.info("返回信息:{},{}", "人员未备案", JSONUtil.toJsonStr(checkDataDTO));
+            return AjaxJson.getSuccess("人员未备案", checkDataDTO);
+        }
+        TbDept tbDept = tbDeptService.getById(tbPersonFiling.getDeptId());
+        String msg = tbDept.getName() + tbPersonFiling.getName();
+        //体温是否异常
+        double minTemperature = SpCfgUtil.getMinTemperature();
+        if (minTemperature < checkBO.getTemperature()) {
+            log.info("返回信息体温过高:{},{}", msg, JSONUtil.toJsonStr(checkDataDTO));
+            return AjaxJson.getSuccess(msg, checkDataDTO);
+        }
+        //健康码是否绿码
+        if (!StrUtil.equals(TbPersonVisitRecord.HealthEnum.GREEN.getStatus(), checkBO.getHealth_status())) {
+            log.info("返回信息健康码异常:{},{}", msg, JSONUtil.toJsonStr(checkDataDTO));
+            return AjaxJson.getSuccess(msg, checkDataDTO);
+        }
+        //黑名单用户
+        TbPersonBlack black = tbPersonBlackService.findByIdCardAndTime(idCard, now);
+        if (black != null) {
+            log.info("返回信息黑名单:{},{}", msg, JSONUtil.toJsonStr(checkDataDTO));
+            return AjaxJson.getSuccess(msg, checkDataDTO);
+        }
+        //通道是否开放
+        TbTerminal tbTerminal = this.findBySN(checkBO.getSn());
+        if (tbTerminal==null){
+            log.info("返回信息非法设备:{},{}", msg, JSONUtil.toJsonStr(checkDataDTO));
+            return AjaxJson.getSuccess("非法设备", checkDataDTO);
+        }
+        TbVenues tbVenues = tbVenuesService.getById(tbTerminal.getChannelId());
+        if (tbVenues.getStatus()==0){
+            log.info("返回信息通道关闭放行:{},{}", msg, JSONUtil.toJsonStr(checkDataDTO));
+            return AjaxJson.getSuccess(msg, checkDataDTO);
+        }
+        checkDataDTO.setIs_pass(1);
+        return AjaxJson.getSuccess(msg, checkDataDTO);
+    }
+
 }

+ 16 - 0
sp-core/src/main/java/com/pj/project/tb_terminal/bo/CheckBO.java

@@ -0,0 +1,16 @@
+package com.pj.project.tb_terminal.bo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class CheckBO implements Serializable {
+    private String identity_number;
+    private String name;
+    private String sn;
+    private String health_status;
+    private Double temperature;
+    private Date date;
+}

+ 26 - 0
sp-core/src/main/java/com/pj/project/tb_terminal/bo/CheckDataDTO.java

@@ -0,0 +1,26 @@
+package com.pj.project.tb_terminal.bo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+@Data
+@Accessors(chain = true)
+@NoArgsConstructor
+@AllArgsConstructor
+public class CheckDataDTO implements Serializable {
+    /**
+     * 核酸限制
+     */
+    private int nucleic_restrict;
+    /**
+     * 行程卡限制
+     */
+    private int trip_restrict;
+    /**
+     * 是否通行
+     */
+    private int is_pass;
+}

+ 18 - 0
sp-core/src/main/java/com/pj/project/tb_terminal/bo/MonitorDTO.java

@@ -0,0 +1,18 @@
+package com.pj.project.tb_terminal.bo;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+@Data
+@Accessors(chain = true)
+public class MonitorDTO implements Serializable {
+    private String name;
+    private String ip;
+    private int direction;
+    private String state;
+    private String channelName;
+    private String lastOnlineTime;
+    private String type;
+
+}

+ 5 - 0
sp-core/src/main/java/com/pj/project/tb_venues/TbVenues.java

@@ -39,6 +39,7 @@ public class TbVenues extends Model<TbVenues> implements Serializable {
     public static final String PERMISSION_CODE_ADD = "tb-venues-add";
     public static final String PERMISSION_CODE_EDIT = "tb-venues-edit";
     public static final String PERMISSION_CODE_DEL = "tb-venues-del";
+    public static final String TB_TACTICS_SETTING = "tb-tactics-setting";
 
 
     // ---------- 表中字段 ----------
@@ -65,6 +66,10 @@ public class TbVenues extends Model<TbVenues> implements Serializable {
      * 1人行 2 车行
      */
     private Integer type;
+    /**
+     * 状态 0 关闭 1开启
+     */
+    private Integer status=1;
 
     /**
      * 创建时间

+ 14 - 12
sp-core/src/main/java/com/pj/project/tb_venues/TbVenuesMapper.java

@@ -5,24 +5,26 @@ import java.util.List;
 import org.apache.ibatis.annotations.Mapper;
 
 import com.pj.utils.so.*;
-	import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springframework.stereotype.Repository;
 
 /**
-* Mapper: tb_venues -- 场所管理
-* @author qzyReal
-*/
+ * Mapper: tb_venues -- 场所管理
+ *
+ * @author qzyReal
+ */
 
 @Mapper
 @Repository
-public interface TbVenuesMapper extends BaseMapper <TbVenues> {
-
-/**
-* 查集合 - 根据条件(参数为空时代表忽略指定条件)
-* @param so 参数集合
-* @return 数据列表
-*/
-List<TbVenues> getList(SoMap so);
+public interface TbVenuesMapper extends BaseMapper<TbVenues> {
+
+    /**
+     * 查集合 - 根据条件(参数为空时代表忽略指定条件)
+     *
+     * @param so 参数集合
+     * @return 数据列表
+     */
+    List<TbVenues> getList(SoMap so);
 
 
     List<TbVenues> getInnerList(SoMap so);

+ 0 - 1
sp-core/src/main/java/com/pj/project/tb_venues/TbVenuesMapper.xml

@@ -33,7 +33,6 @@
         order by
         <choose>
             <when test='sortType == 1'>id desc</when>
-
             <when test='sortType == 4'>p_id desc</when>
             <when test='sortType == 5'>name desc</when>
             <when test='sortType == 6'>create_time desc</when>

+ 18 - 4
sp-core/src/main/java/com/pj/project/tb_venues/TbVenuesService.java

@@ -109,19 +109,33 @@ public class TbVenuesService extends ServiceImpl<TbVenuesMapper, TbVenues> imple
         List<TbTerminal> tbTerminalList = tbTerminalService.findByChannelId(id);
         tbTerminalList.forEach(tbTerminal -> tbTerminalService.open(tbTerminal.getId()));
         List<TbGateTerminal> tbGateTerminals = tbGateTerminalService.findByVenuesId(id);
-        boolean flag=!tbTerminalList.isEmpty()&&!tbGateTerminals.isEmpty();
-        if (!flag){
+        boolean flag = !tbTerminalList.isEmpty() && !tbGateTerminals.isEmpty();
+        if (!flag) {
             return AjaxJson.getError("该通道无设备");
         }
-        tbGateTerminals.stream().filter(tbGateTerminal -> tbGateTerminal.getDirection()==1)
+        tbGateTerminals.stream().filter(tbGateTerminal -> tbGateTerminal.getDirection() == 1)
                 .forEach(tbGateTerminal -> {
                     try {
                         tbGateTerminalService.open(tbGateTerminal.getId());
                     } catch (Exception e) {
-                       log.error("开道闸失败:{}",e.getMessage());
+                        log.error("开道闸失败:{}", e.getMessage());
                         throw new BusinessException("道闸通讯异常");
                     }
                 });
         return AjaxJson.getSuccess();
     }
+
+    public void setting(long id, int status) {
+        TbVenues tbVenues = this.getById(id);
+        tbVenues.setStatus(status).setUpdateTime(new Date());
+        List<TbVenues> list = findByPid(id);
+        list.forEach(v -> v.setStatus(status).setUpdateTime(new Date()));
+        if (tbVenues.getPId() != -1 && status == 1) {
+            TbVenues parent = this.getById(tbVenues.getPId());
+            parent.setStatus(status);
+            list.add(parent);
+        }
+        list.add(tbVenues);
+        this.updateBatchById(list);
+    }
 }

+ 144 - 97
sp-core/src/main/java/com/pj/project4sp/spcfg/SpCfgUtil.java

@@ -2,6 +2,7 @@ package com.pj.project4sp.spcfg;
 
 import java.util.Map;
 
+import cn.hutool.core.util.StrUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -10,106 +11,152 @@ import com.pj.utils.sg.NbUtil;
 
 /**
  * DB活动配置操作工具类
- * 
- * @author kong
  *
+ * @author kong
  */
 @Component
 public class SpCfgUtil {
 
-	private static SpCfgService sysCfgService;
-	@Autowired
-	public void setSysCfgService(SpCfgService sysCfgService) {
-		SpCfgUtil.sysCfgService = sysCfgService;
-	}
-
-	
-	// ====================== 快捷读取 DB 配置信息 ========================== 
-
-	/**
-	 * 获取指定【cfgName】的配置,指定key项,并转化为String值 , 取不到值时,给默认值【defaultValue】
-	 * @param cfgName
-	 * @param key
-	 * @param defaultValue
-	 * @return
-	 */
-	@SuppressWarnings({ "unchecked", "rawtypes" })
-	private static String getCfgBy(String cfgName, String key, String defaultValue) {
-		// 1、获取配置字符串 
-		String cfgJson = sysCfgService.getCfgValue(cfgName);
-		// 2、转换成Map
-		Map<String, Object> maps = (Map)JSON.parse(cfgJson);
-		// 3、取值
-		Object value = maps.get(key);
-		if (value == null) {
-			return defaultValue;
-		}
-		return value.toString();
-	}
-	
-	/**
-	 * 获取server端指定配置信息 
-	 * @param key
-	 * @param defaultValue
-	 * @return
-	 */
-	public static String getServerCfg(String key, String defaultValue) {
-		return SpCfgUtil.getCfgBy("server_cfg", key, defaultValue);
-	}
-	
-	/**
-	 * 获取App端指定配置信息 
-	 * @param key
-	 * @param defaultValue
-	 * @return
-	 */
-	public static String getAppCfg(String key, String defaultValue) {
-		return SpCfgUtil.getCfgBy("app_cfg", key, defaultValue);
-	}
-	// 获取配置信息:备案审核 1审核 2不审核
-	public static String getFillingJudge() {
-		return SpCfgUtil.getServerCfg("fillingJudge", "1");
-	}
-	// 获取配置信息:备案审核 1审核 2不审核
-	public static String getMinTemperature() {
-		return SpCfgUtil.getServerCfg("minTemperature", "37.5");
-	}
-	// 获取配置信息:备案审核 1审核 2不审核
-	public static String getAlarmConfig() {
-		return SpCfgUtil.getServerCfg("sendAlarm", "1");
-	}
-	
-	// ====================== 获取指定配置 ========================== 
-
-	/** 获取app端全部配置信息 */
-	public static String getAppCfg() {
-		return sysCfgService.getCfgValue("app_cfg");
-	}
-
-	// --- app  
-	/** 获取配置信息:系统名称  */
-	public static String appName() {
-		return SpCfgUtil.getAppCfg("appName", "");
-	}
-	/** 获取配置信息:版本号  */
-	public static String appVersionNo() {
-		return SpCfgUtil.getAppCfg("appVersionNo", "");
-	}
-
-	// --- server  
-	/** 预留信息  */
-	public static String reserveInfo() {
-		return SpCfgUtil.getServerCfg("reserveInfo", "");
-	}
-
-	/** 随机返回一个:新用户头像地址 */
-	public static String userDefaultAvatar() {
-		String[] avatarArray = SpCfgUtil.getServerCfg("userDefaultAvatar", "").split(",");
-		int index = NbUtil.getRandom(0, avatarArray.length - 1);
-		return avatarArray[index];
-	}
-	
-	
-	
-	
+    private static SpCfgService sysCfgService;
+
+    @Autowired
+    public void setSysCfgService(SpCfgService sysCfgService) {
+        SpCfgUtil.sysCfgService = sysCfgService;
+    }
+
+
+    // ====================== 快捷读取 DB 配置信息 ==========================
+
+    /**
+     * 获取指定【cfgName】的配置,指定key项,并转化为String值 , 取不到值时,给默认值【defaultValue】
+     *
+     * @param cfgName
+     * @param key
+     * @param defaultValue
+     * @return
+     */
+    @SuppressWarnings({"unchecked", "rawtypes"})
+    private static String getCfgBy(String cfgName, String key, String defaultValue) {
+        // 1、获取配置字符串
+        String cfgJson = sysCfgService.getCfgValue(cfgName);
+        // 2、转换成Map
+        Map<String, Object> maps = (Map) JSON.parse(cfgJson);
+        // 3、取值
+        Object value = maps.get(key);
+        if (value == null) {
+            return defaultValue;
+        }
+        return value.toString();
+    }
+
+    /**
+     * 获取server端指定配置信息
+     *
+     * @param key
+     * @param defaultValue
+     * @return
+     */
+    public static String getServerCfg(String key, String defaultValue) {
+        return SpCfgUtil.getCfgBy("server_cfg", key, defaultValue);
+    }
+
+    /**
+     * 获取App端指定配置信息
+     *
+     * @param key
+     * @param defaultValue
+     * @return
+     */
+    public static String getAppCfg(String key, String defaultValue) {
+        return SpCfgUtil.getCfgBy("app_cfg", key, defaultValue);
+    }
+
+    // 获取配置信息:备案审核 1审核 2不审核
+    public static String getFillingJudge() {
+        return SpCfgUtil.getServerCfg("fillingJudge", "1");
+    }
+
+    // 获取配置信息:行程卡限制
+    public static boolean tourLimit() {
+        return StrUtil.equals(SpCfgUtil.getServerCfg("tourLimit", "1"), "1");
+    }
+
+    // 获取配置信息:行程卡限制
+    public static int getTourLimit() {
+        return Integer.parseInt(SpCfgUtil.getServerCfg("tourLimit", "1"));
+    }
+
+    // 获取配置信息:设备端是否能备案
+    public static boolean termianlFilling() {
+        return StrUtil.equals(SpCfgUtil.getServerCfg("termianlFilling", "1"), "1");
+    }
+
+    // 获取配置信息:核酸限制0 24
+    public static int getAcidLimit() {
+        return Integer.valueOf(SpCfgUtil.getServerCfg("acidLimit", "24"));
+    }
+
+    /**
+     * 是否需要审核
+     *
+     * @return
+     */
+    public static boolean fillingNeedJudge() {
+        return StrUtil.equals(SpCfgUtil.getServerCfg("fillingJudge", "1"), "1");
+    }
+
+    // 获取配置信息:备案审核 1审核 2不审核
+    public static double getMinTemperature() {
+        return Double.valueOf(SpCfgUtil.getServerCfg("minTemperature", "36.5"));
+    }
+
+    // 获取配置信息:备案审核 1审核 2不审核
+    public static String getAlarmConfig() {
+        return SpCfgUtil.getServerCfg("sendAlarm", "1");
+    }
+
+    // ====================== 获取指定配置 ==========================
+
+    /**
+     * 获取app端全部配置信息
+     */
+    public static String getAppCfg() {
+        return sysCfgService.getCfgValue("app_cfg");
+    }
+
+    // --- app
+
+    /**
+     * 获取配置信息:系统名称
+     */
+    public static String appName() {
+        return SpCfgUtil.getAppCfg("appName", "");
+    }
+
+    /**
+     * 获取配置信息:版本号
+     */
+    public static String appVersionNo() {
+        return SpCfgUtil.getAppCfg("appVersionNo", "");
+    }
+
+    // --- server
+
+    /**
+     * 预留信息
+     */
+    public static String reserveInfo() {
+        return SpCfgUtil.getServerCfg("reserveInfo", "");
+    }
+
+    /**
+     * 随机返回一个:新用户头像地址
+     */
+    public static String userDefaultAvatar() {
+        String[] avatarArray = SpCfgUtil.getServerCfg("userDefaultAvatar", "").split(",");
+        int index = NbUtil.getRandom(0, avatarArray.length - 1);
+        return avatarArray[index];
+    }
+
+
 }

+ 1 - 0
sp-start/pom.xml

@@ -77,6 +77,7 @@
 
 	<!-- 构建配置 -->
     <build>
+        <finalName>face-system</finalName>
         <plugins>
             <!-- 打包jar文件时,配置manifest文件,加入lib包的jar依赖 -->
             <plugin>

+ 9 - 1
sp-start/src/main/java/com/pj/SpStartApplication.java

@@ -2,11 +2,15 @@ package com.pj;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.context.ApplicationPidFileWriter;
 import org.springframework.cache.annotation.EnableCaching;
 import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 
+import java.io.File;
+import java.util.Properties;
+
 /**
  * 启动 
  * @author kong 
@@ -19,7 +23,11 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
 public class SpStartApplication {
 
 	public static void main(String[] args) {
-		SpringApplication.run(SpStartApplication.class, args);
+		Properties properties = System.getProperties();
+		String rootPath = properties.getProperty("user.dir");
+		SpringApplication application = new SpringApplication(SpStartApplication.class);
+		application.addListeners(new ApplicationPidFileWriter(rootPath + File.separator + "app.pid"));
+		application.run(args);
 	}
 	
 }

+ 11 - 6
sp-start/src/main/resources/application-dev.yml

@@ -1,7 +1,8 @@
 # 端口
 server:
     port: 8099
-
+    servlet:
+        context-path: /pro
 spring: 
     # 数据源配置
     datasource: 
@@ -45,13 +46,15 @@ spring:
     # 项目自定义配置
     myconfig:
         # 本项目部署到的服务器域名(文件上传等等模块  要用到)
-        domain: http://192.168.1.4:8099
-        ip: 192.168.1.4
+        domain: http://192.168.1.3:8099
+        ip: 192.168.3.27
+        net-ip: 192.168.3.22
         heart-port: 9999
         command-port: 8888
         command-prefix: "command:"
         heart-prefix: "heart:"
         gate-port: 8131
+        limit-user-count: 45000
 wx:
     enable: true
 #    app-id: wxd40a34141872bf0c
@@ -65,7 +68,9 @@ wx:
     js-api-token-url: https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi
     openid-url: https://api.weixin.qq.com/sns/oauth2/access_token?appid=${wx.app-id}&secret=${wx.app-secret}&code=CODE&grant_type=authorization_code
     send-msg-url: https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
-    domain: https://127.0.0.1:8080/h5
+    domain: https://192.168.1.4:8080/h5
     report-detail: ${wx.domain}/pages/detail/report-detail
-    temperature-error-template: WtTlUMCtJp6dSPXLJg_RdsmX4811aDkEkHuX0Txfgfg
-    health-status-template: IEzVk2HCvctwXZzaGaElWQpRskolYlZSahTZXbJhuVM
+#    temperature-error-template: WtTlUMCtJp6dSPXLJg_RdsmX4811aDkEkHuX0Txfgfg
+#    health-status-template: IEzVk2HCvctwXZzaGaElWQpRskolYlZSahTZXbJhuVM
+    temperature-error-template: 3DBqZsC6x4IMmkzZNkSCh47slBUhuoyMlpC0wgW_9-w
+    health-status-template: 3DBqZsC6x4IMmkzZNkSCh47slBUhuoyMlpC0wgW_9-w

+ 108 - 36
sp-start/src/main/resources/logback.xml

@@ -1,51 +1,123 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<configuration xmlns="http://ch.qos.logback/xml/ns/logback"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://ch.qos.logback/xml/ns/logback https://raw.githubusercontent.com/enricopulatzo/logback-XSD/master/src/main/xsd/logback.xsd">
-	
-	<!-- 定义日志打印的根目录,不同的项目之间一般只用改这个属性值就够了 -->
-	<property name="LOG_HOME" value="/log/sp-server" />
-	
-	<!-- 输出到控制台 -->
+<configuration>
+	<contextName>pco</contextName>
+	<property name="LOG_PATH" value="logs"/>
+	<property name="APP_DIR" value="face"/>
+	<property name="log.maxFileSize" value="10MB"/>
+	<property name="log.maxFileCnt" value="30"/>
+	<property name="log.totalSizeCap" value="5GB"/>
+
+	<appender name="FILE_DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${LOG_PATH}/${APP_DIR}/log_debug.log</file>
+		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+			<fileNamePattern>${LOG_PATH}/${APP_DIR}/debug/debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+			<maxFileSize>${log.maxFileSize}</maxFileSize>
+			<maxHistory>${log.maxFileCnt}</maxHistory>
+			<totalSizeCap>${log.totalSizeCap}</totalSizeCap>
+		</rollingPolicy>
+		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}|%-5level{10}[%25.25thread{24}]%-40.40logger{39}|-Line:%-3L:%msg%n
+			</pattern>
+			<charset>utf-8</charset>
+		</encoder>
+		<filter class="ch.qos.logback.classic.filter.LevelFilter">
+			<level>debug</level>
+			<onMatch>ACCEPT</onMatch>
+			<!--            <onMismatch>DENY</onMismatch>-->
+		</filter>
+	</appender>
+
+	<appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${LOG_PATH}/${APP_DIR}/log_info.log</file>
+		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+			<fileNamePattern>${LOG_PATH}/${APP_DIR}/info/info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+			<maxFileSize>${log.maxFileSize}</maxFileSize>
+			<maxHistory>${log.maxFileCnt}</maxHistory>
+			<totalSizeCap>${log.totalSizeCap}</totalSizeCap>
+		</rollingPolicy>
+		<append>true</append>
+		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}|%-5level{10}[%25.25thread{24}]%-40.40logger{39}|-Line:%-3L:%msg%n
+			</pattern>
+			<charset>UTF-8</charset>
+		</encoder>
+		<filter class="ch.qos.logback.classic.filter.LevelFilter">
+			<level>info</level>
+			<onMatch>ACCEPT</onMatch>
+			<onMismatch>DENY</onMismatch>
+		</filter>
+	</appender>
+
 	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-		<!-- 输出的格式 -->
+		<!--encoder 默认配置为PatternLayoutEncoder-->
+		<encoder>
+			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}|%highlight(%-5level{10})[%boldYellow(%25.25thread{24})]%gray(%-50.50logger{49})|-Line:%boldYellow(%-3L):%msg%n
+			</pattern>
+			<charset>UTF-8</charset>
+		</encoder>
+		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+			<level>info</level>
+		</filter>
+	</appender>
+
+	<appender name="COMM_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${LOG_PATH}/${APP_DIR}/comm_info.log</file>
+		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+			<fileNamePattern>${LOG_PATH}/${APP_DIR}/comm/comm_info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+			<maxFileSize>${log.maxFileSize}</maxFileSize>
+			<maxHistory>${log.maxFileCnt}</maxHistory>
+			<totalSizeCap>${log.totalSizeCap}</totalSizeCap>
+		</rollingPolicy>
+		<append>true</append>
 		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
-			<pattern>%-25d{yyyy-MM-dd HH:mm:ss.SSS} %green(%-5level) %boldBlue(-->)  %msg%n</pattern>
-			<!-- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] --> <!-- %logger{50}: %msg%n</pattern> -->
+			<pattern>%msg%n</pattern>
+			<charset>UTF-8</charset>
 		</encoder>
+		<filter class="ch.qos.logback.classic.filter.LevelFilter">
+			<level>info</level>
+			<onMatch>ACCEPT</onMatch>
+			<onMismatch>DENY</onMismatch>
+		</filter>
 	</appender>
+	<logger name="com.cryann.hsms.driver.netty" additivity="false">
+		<appender-ref ref="COMM_LOG"/>
+	</logger>
 
-	<!-- 文件输出 -->
-	<appender name="FILE"
-		class="ch.qos.logback.core.rolling.RollingFileAppender">
-		<!-- 配置滚动的策略 -->
+	<appender name="SXFX_info_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${LOG_PATH}/${APP_DIR}/SxFx_info.log</file>
 		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-			<!-- 日志名称的格式:LOG_HOME/年_月/年_月_日/年_月_日_时(索引).log -->
-			<fileNamePattern>${LOG_HOME}/%d{yyyy_MM}/%d{yyyy_MM_dd}/%d{yyyy_MM_dd_HH}(%i).log</fileNamePattern>
-			<!-- 单log文件最大大小 -->
-			<maxFileSize>1MB</maxFileSize> 
-			<!-- 保存的最长时间:天数 -->
-			<maxHistory>3650</maxHistory>
+			<fileNamePattern>${LOG_PATH}/${APP_DIR}/SxFx/SxFx_info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+			<maxFileSize>${log.maxFileSize}</maxFileSize>
+			<maxHistory>${log.maxFileCnt}</maxHistory>
+			<totalSizeCap>${log.totalSizeCap}</totalSizeCap>
 		</rollingPolicy>
+		<append>true</append>
 		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
-			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] --> : %msg%n</pattern>
+			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}|%highlight(%-5level{10})[%boldYellow(%25.25thread{24})]%gray(%-50.50logger{49})|-Line:%boldYellow(%-3L):%msg%n
+			</pattern>
+			<charset>UTF-8</charset>
 		</encoder>
+		<filter class="ch.qos.logback.classic.filter.LevelFilter">
+			<level>info</level>
+			<onMatch>ACCEPT</onMatch>
+			<onMismatch>DENY</onMismatch>
+		</filter>
 	</appender>
 
 
-	<!-- 相当于logger元素,只是name值已经确定为root了 -->
+	<logger name="org.springframework" level="WARN"/>
+	<logger name="org.hibernate" level="WARN"/>
+	<logger name="com.apache.ibatis" level="TRACE"/>
+	<logger name="java.sql.Connection" level="DEBUG"/>
+	<logger name="java.sql.Statement" level="DEBUG"/>
+	<logger name="java.sql.PreparedStatement" level="DEBUG"/>
+
+	<!-- 生产环境下,将此级别配置为适合的级别,以免日志文件太多或影响程序性能 -->
 	<root level="INFO">
-		<appender-ref ref="STDOUT" />
-		<appender-ref ref="FILE" />
+		<!-- 生产环境将请stdout,testfile去掉 -->
+		<appender-ref ref="STDOUT"/>
+		<appender-ref ref="FILE_DEBUG"/>
+		<!--<appender-ref ref="FILEWARN"/>-->
+		<appender-ref ref="FILE_INFO"/>
 	</root>
-	
-	<!-- 可以设置具体到某个包的日志打印规则 -->
-	<!-- 注意: level属性也可以直接写在logger上,如: <logger name="ws.log.logback.LogbackTest" 
-		additivity="false" level="INFO"> <appender-ref ref="STDOUT" /> </logger> -->
-	<!-- <logger name="com.cr.utils.FC" additivity="false">
-		<level value="DEBUG" />
-		<appender-ref ref="STDOUT" />
-		<appender-ref ref="FILE" />
-	</logger> -->
-	
-</configuration>
+</configuration>