Browse Source

优化人员上传-下发流程

qzyReal 2 years ago
parent
commit
e73cf9d761
59 changed files with 784 additions and 420 deletions
  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. 52 43
      business-system/epidemic-prevention/src/main/java/com/pj/TbManagerController.java
  5. 4 6
      business-system/face-identify/src/main/java/com/pj/biz/TbPersonVisitRecordController.java
  6. 63 20
      business-system/filing-system/src/main/java/com/pj/api/WxController.java
  7. 2 3
      business-system/filing-system/src/main/java/com/pj/biz/TbCarBlackController.java
  8. 2 3
      business-system/filing-system/src/main/java/com/pj/biz/TbCarFilingController.java
  9. 2 3
      business-system/filing-system/src/main/java/com/pj/biz/TbPersonBlackController.java
  10. 2 3
      business-system/filing-system/src/main/java/com/pj/biz/TbPersonFilingController.java
  11. 11 0
      business-system/monitor-system/src/main/java/com/pj/MonitorController.java
  12. 4 7
      business-system/venues-system/src/main/java/com/pj/biz/TbVenuesController.java
  13. 12 0
      sp-admin/src/main/java/com/pj/current/TestStartUp.java
  14. 5 6
      sp-admin/src/main/java/com/pj/project4sp/admin/SpAdminController.java
  15. 2 5
      sp-admin/src/main/java/com/pj/project4sp/admin4acc/SpAccAdminController.java
  16. 10 56
      sp-admin/src/main/java/com/pj/project4sp/admin4acc/SpAccAdminService.java
  17. 8 1
      sp-core/src/main/java/com/pj/current/SaPlusStartup.java
  18. 24 9
      sp-core/src/main/java/com/pj/current/netty/command/handler/impl/HealthlogHandler.java
  19. 4 8
      sp-core/src/main/java/com/pj/current/netty/command/handler/impl/UploadUserHandler.java
  20. 2 7
      sp-core/src/main/java/com/pj/current/netty/heart/HeartBeatHandler.java
  21. 1 1
      sp-core/src/main/java/com/pj/current/satoken/AuthConst.java
  22. 3 1
      sp-core/src/main/java/com/pj/current/satoken/SaTokenConfigure.java
  23. 45 8
      sp-core/src/main/java/com/pj/current/satoken/StpUserUtil.java
  24. 2 1
      sp-core/src/main/java/com/pj/project/sp_admin/SpAdmin.java
  25. 2 0
      sp-core/src/main/java/com/pj/project/sp_admin/SpAdminMapper.java
  26. 8 7
      sp-core/src/main/java/com/pj/project/sp_admin/SpAdminMapper.xml
  27. 80 13
      sp-core/src/main/java/com/pj/project/sp_admin/SpAdminService.java
  28. 3 2
      sp-core/src/main/java/com/pj/project/tb_car_black/TbCarBlackMapper.xml
  29. 2 0
      sp-core/src/main/java/com/pj/project/tb_car_filing/TbCarFilingMapper.java
  30. 9 8
      sp-core/src/main/java/com/pj/project/tb_car_filing/TbCarFilingMapper.xml
  31. 16 11
      sp-core/src/main/java/com/pj/project/tb_car_filing/TbCarFilingService.java
  32. 17 2
      sp-core/src/main/java/com/pj/project/tb_dept/TbDept.java
  33. 2 3
      sp-core/src/main/java/com/pj/project/tb_dept/TbDeptController.java
  34. 1 6
      sp-core/src/main/java/com/pj/project/tb_dept/TbDeptMapper.xml
  35. 7 15
      sp-core/src/main/java/com/pj/project/tb_dept/TbDeptService.java
  36. 17 8
      sp-core/src/main/java/com/pj/project/tb_gate_terminal/TbGateTerminalService.java
  37. 19 0
      sp-core/src/main/java/com/pj/project/tb_gate_terminal/bo/ResultDTO.java
  38. 47 0
      sp-core/src/main/java/com/pj/project/tb_gate_terminal/task/TestStateTask.java
  39. 3 8
      sp-core/src/main/java/com/pj/project/tb_manager/TbManagerMapper.xml
  40. 7 47
      sp-core/src/main/java/com/pj/project/tb_manager/TbManagerService.java
  41. 4 0
      sp-core/src/main/java/com/pj/project/tb_mini_user/TbMiniUser.java
  42. 2 0
      sp-core/src/main/java/com/pj/project/tb_mini_user/TbMiniUserService.java
  43. 3 2
      sp-core/src/main/java/com/pj/project/tb_person_black/TbPersonBlackMapper.xml
  44. 10 4
      sp-core/src/main/java/com/pj/project/tb_person_black/TbPersonBlackService.java
  45. 1 1
      sp-core/src/main/java/com/pj/project/tb_person_black/task/PersonBlackTask.java
  46. 2 0
      sp-core/src/main/java/com/pj/project/tb_person_filing/TbPersonFilingMapper.java
  47. 9 7
      sp-core/src/main/java/com/pj/project/tb_person_filing/TbPersonFilingMapper.xml
  48. 35 11
      sp-core/src/main/java/com/pj/project/tb_person_filing/TbPersonFilingService.java
  49. 25 0
      sp-core/src/main/java/com/pj/project/tb_person_filing/task/DelayIsuued.java
  50. 1 6
      sp-core/src/main/java/com/pj/project/tb_person_visit_record/TbPersonVisitRecordMapper.xml
  51. 18 0
      sp-core/src/main/java/com/pj/project/tb_terminal/MonitorDTO.java
  52. 2 0
      sp-core/src/main/java/com/pj/project/tb_terminal/TbTerminalMapper.java
  53. 22 8
      sp-core/src/main/java/com/pj/project/tb_terminal/TbTerminalMapper.xml
  54. 4 0
      sp-core/src/main/java/com/pj/project/tb_terminal/TbTerminalService.java
  55. 14 12
      sp-core/src/main/java/com/pj/project/tb_venues/TbVenuesMapper.java
  56. 0 1
      sp-core/src/main/java/com/pj/project/tb_venues/TbVenuesMapper.xml
  57. 9 1
      sp-start/src/main/java/com/pj/SpStartApplication.java
  58. 5 3
      sp-start/src/main/resources/application-dev.yml
  59. 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);

+ 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.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);
+    }
 }

+ 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);

+ 24 - 9
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;
@@ -98,33 +101,41 @@ public class HealthlogHandler implements IHandler {
         }
         if (tbPersonFiling == null) {
             //todo 增加人员信息
-            TbDept tbDept = tbDeptService.findOneByPassType(TbDept.PassTypeEnum.BLOW.getType());
+            TbDept dept = tbDeptService.findTheDept(TbDept.AdminTypeEnum.TEMP_TYPE.getType());
             tbPersonFiling = new TbPersonFiling();
             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);
+                    .setDeptId(dept.getId()).setJudgeState(1).setJudgeBy("设备上传").setJudgeTime(now);
             tbPersonFilingService.save(tbPersonFiling);
+            taskService.addTask(new Base64ToImage(RandomUtil.randomNumbers(10),50,tbPersonFiling.getId(),dto.getPicture()));
         }
         Long deptId = tbPersonFiling.getDeptId();
         TbDept tbDept = tbDeptService.getById(deptId);
-        //车辆道闸判断结果 存在则放行 terminaiId
         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 (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 (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 (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,6 +161,10 @@ 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();

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

@@ -16,6 +16,7 @@ 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 io.netty.channel.ChannelHandlerContext;
@@ -80,19 +81,14 @@ public class UploadUserHandler implements IHandler {
                     .setName(uploadUserDTO.getName());
             tbPersonFilingService.save(tbPersonFiling);
             //转换图片
-            taskService.addTask(new Base64ToImage(RandomUtil.randomNumbers(10),2000,tbPersonFiling.getId(),uploadUserDTO.getPhoto()));
+            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())){
                 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);
-                });
     }
 }

+ 2 - 7
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,9 +74,9 @@ 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();
@@ -87,9 +85,8 @@ public class HeartBeatHandler extends ChannelInboundHandlerAdapter {
         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);
     }
 }

+ 17 - 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);
     }
 
@@ -219,7 +224,7 @@ public class TbGateTerminalService extends ServiceImpl<TbGateTerminalMapper, TbG
         String cacheCarNo = RECORD_CACHE.get(terminalId);
         if (StrUtil.isNotEmpty(cacheCarNo)) {
             log.error("===========40秒内重复识别:{}============", carNo);
-            return;
+            //return;
         }
         if (tbGateTerminal.getDirection().equals(2)) {
             handlerOut(tbGateTerminal, bo);
@@ -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,20 @@ 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;
         }
         TbCarFiling tbCarFiling = tbCarFilingService.findByCarNo(carNo);
         //是否备案
         if (tbCarFiling == null) {
+            RedisUtil.set(key, JSONUtil.toJsonStr(dto));
             log.error("车辆未备案:{}", carNo);
             return;
         }
@@ -324,8 +333,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>

+ 10 - 4
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> {
 
     /**
@@ -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);
         }
     }
@@ -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());
         });

+ 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>

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

@@ -0,0 +1,18 @@
+package com.pj.project.tb_terminal;
+
+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;
+
+}

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

@@ -26,4 +26,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.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>

+ 4 - 0
sp-core/src/main/java/com/pj/project/tb_terminal/TbTerminalService.java

@@ -301,4 +301,8 @@ public class TbTerminalService extends ServiceImpl<TbTerminalMapper, TbTerminal>
         ew.eq("channel_id", channelId);
         return list(ew);
     }
+
+    public List<MonitorDTO> getMonitor() {
+        return tbTerminalMapper.getMonitor();
+    }
 }

+ 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>

+ 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);
 	}
 	
 }

+ 5 - 3
sp-start/src/main/resources/application-dev.yml

@@ -63,7 +63,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>