Эх сурвалжийг харах

通知,微信是否启用

qzyReal 2 жил өмнө
parent
commit
f8b0e34454
54 өөрчлөгдсөн 934 нэмэгдсэн , 324 устгасан
  1. 92 0
      business-system/alarm-system/src/main/java/com/pj/TbPersonAlarmController.java
  2. 47 0
      business-system/epidemic-prevention/src/main/java/com/pj/HealthStatusController.java
  3. 3 2
      business-system/epidemic-prevention/src/main/java/com/pj/TbManagerController.java
  4. 7 8
      business-system/face-identify/src/main/java/com/pj/biz/TbPersonVisitRecordController.java
  5. 23 3
      business-system/filing-system/src/main/java/com/pj/api/WxController.java
  6. 12 4
      sp-admin/src/main/java/com/pj/project4sp/admin/SpAdminController.java
  7. 2 2
      sp-admin/src/main/java/com/pj/project4sp/admin4acc/SpAccAdminController.java
  8. 2 3
      sp-admin/src/main/java/com/pj/project4sp/admin4acc/SpAccAdminService.java
  9. 3 2
      sp-admin/src/main/java/com/pj/project4sp/admin4password/SpAdminPasswordController.java
  10. 1 1
      sp-admin/src/main/java/com/pj/project4sp/role/SpRoleUtil.java
  11. 1 1
      sp-admin/src/main/java/com/pj/satoken/StpInterfaceImpl.java
  12. 38 0
      sp-core/src/main/java/com/pj/current/config/WxConfig.java
  13. 7 4
      sp-core/src/main/java/com/pj/current/netty/command/handler/impl/CheckLogHandler.java
  14. 107 19
      sp-core/src/main/java/com/pj/current/netty/command/handler/impl/HealthlogHandler.java
  15. 4 1
      sp-core/src/main/java/com/pj/current/netty/command/handler/impl/TerminalOptionHandler.java
  16. 6 3
      sp-core/src/main/java/com/pj/current/netty/command/handler/impl/UploadCommandHandler.java
  17. 9 0
      sp-core/src/main/java/com/pj/current/netty/command/handler/impl/UploadUserHandler.java
  18. 1 1
      sp-core/src/main/java/com/pj/current/netty/heart/HeartBeatHandler.java
  19. 3 1
      sp-core/src/main/java/com/pj/project/sp_admin/SpAdmin.java
  20. 5 1
      sp-core/src/main/java/com/pj/project/sp_admin/SpAdminMapper.java
  21. 9 3
      sp-core/src/main/java/com/pj/project/sp_admin/SpAdminMapper.xml
  22. 1 1
      sp-core/src/main/java/com/pj/project/sp_admin/SpAdminPasswordService.java
  23. 12 8
      sp-core/src/main/java/com/pj/project/sp_admin/SpAdminService.java
  24. 2 2
      sp-core/src/main/java/com/pj/project/sp_admin/SpAdminUtil.java
  25. 1 1
      sp-core/src/main/java/com/pj/project/tb_car_filing/TbCarFilingMapper.xml
  26. 4 0
      sp-core/src/main/java/com/pj/project/tb_car_visit_record/TbCarVisitRecord.java
  27. 6 0
      sp-core/src/main/java/com/pj/project/tb_car_visit_record/TbCarVisitRecordService.java
  28. 1 1
      sp-core/src/main/java/com/pj/project/tb_dept/TbDept.java
  29. 3 1
      sp-core/src/main/java/com/pj/project/tb_dept/TbDeptController.java
  30. 2 2
      sp-core/src/main/java/com/pj/project/tb_dept/TbDeptMapper.xml
  31. 9 2
      sp-core/src/main/java/com/pj/project/tb_dept/TbDeptService.java
  32. 2 0
      sp-core/src/main/java/com/pj/project/tb_gate_terminal/TbGateTerminal.java
  33. 30 20
      sp-core/src/main/java/com/pj/project/tb_gate_terminal/TbGateTerminalService.java
  34. 9 3
      sp-core/src/main/java/com/pj/project/tb_manager/TbManager.java
  35. 15 11
      sp-core/src/main/java/com/pj/project/tb_manager/TbManagerMapper.java
  36. 72 70
      sp-core/src/main/java/com/pj/project/tb_manager/TbManagerMapper.xml
  37. 112 29
      sp-core/src/main/java/com/pj/project/tb_manager/TbManagerService.java
  38. 14 12
      sp-core/src/main/java/com/pj/project/tb_mini_user/TbMiniUserMapper.java
  39. 74 44
      sp-core/src/main/java/com/pj/project/tb_mini_user/TbMiniUserService.java
  40. 30 2
      sp-core/src/main/java/com/pj/project/tb_person_black/TbPersonBlackService.java
  41. 36 0
      sp-core/src/main/java/com/pj/project/tb_person_black/task/PersonBlackTask.java
  42. 2 0
      sp-core/src/main/java/com/pj/project/tb_person_visit_record/TbPersonVisitRecord.java
  43. 14 12
      sp-core/src/main/java/com/pj/project/tb_person_visit_record/TbPersonVisitRecordMapper.java
  44. 1 0
      sp-core/src/main/java/com/pj/project/tb_person_visit_record/TbPersonVisitRecordMapper.xml
  45. 2 1
      sp-core/src/main/java/com/pj/project/tb_person_visit_record/TbPersonVisitRecordService.java
  46. 1 0
      sp-core/src/main/java/com/pj/project/tb_terminal/TbTerminalService.java
  47. 9 5
      sp-core/src/main/java/com/pj/project/tb_terminal/task/CommandDelayTask.java
  48. 26 0
      sp-core/src/main/java/com/pj/project/tb_terminal/task/FinishCommandTask.java
  49. 11 0
      sp-core/src/main/java/com/pj/project/tb_venues/TbVenues.java
  50. 35 35
      sp-core/src/main/java/com/pj/project/tb_venues/TbVenuesMapper.xml
  51. 1 0
      sp-core/src/main/java/com/pj/project/wx/WxService.java
  52. 4 0
      sp-core/src/main/java/com/pj/project/wx/task/TokenTask.java
  53. 5 1
      sp-core/src/main/java/com/pj/project4sp/spcfg/SpCfgUtil.java
  54. 6 2
      sp-start/src/main/resources/application-dev.yml

+ 92 - 0
business-system/alarm-system/src/main/java/com/pj/TbPersonAlarmController.java

@@ -0,0 +1,92 @@
+package com.pj;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.util.StrUtil;
+import com.pj.current.satoken.StpUserUtil;
+import com.pj.project.tb_manager.TbManager;
+import com.pj.project.tb_manager.TbManagerService;
+import com.pj.project4sp.SP;
+import com.pj.utils.sg.AjaxJson;
+import com.pj.utils.so.SoMap;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.stream.Collector;
+import java.util.stream.Collectors;
+
+
+/**
+ * Controller: tb_manager -- 防疫人员
+ *
+ * @author qzyReal
+ */
+@RestController
+@RequestMapping("/TbAlarmPerson/")
+public class TbPersonAlarmController {
+
+    /**
+     * 底层 Service 对象
+     */
+    @Autowired
+    TbManagerService tbManagerService;
+
+    /**
+     * 增
+     */
+    @RequestMapping("add")
+    @SaCheckPermission(TbManager.PERMISSION_ALARM_PERSON_ADD)
+    public AjaxJson addAlarm(TbManager t) {
+        tbManagerService.addAlarm(t);
+        return AjaxJson.getSuccessData(t);
+    }
+
+    /**
+     * 删
+     */
+    @RequestMapping("delete")
+    @SaCheckPermission(TbManager.PERMISSION_ALARM_PERSON_DEL)
+    public AjaxJson delete(Long id) {
+        tbManagerService.delete(id);
+        return AjaxJson.getSuccess();
+    }
+
+
+
+    /**
+     * 改
+     */
+    @RequestMapping("update")
+    @SaCheckPermission(TbManager.PERMISSION_ALARM_PERSON_EDIT)
+    public AjaxJson update(TbManager t) {
+        tbManagerService.update(t);
+        return AjaxJson.getSuccess();
+    }
+
+    /**
+     * 查 - 根据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();
+        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()));
+        }
+        List<TbManager> list = tbManagerService.getList(so.startPage());
+        return AjaxJson.getPageData(so.getDataCount(), list);
+    }
+
+
+}

+ 47 - 0
business-system/epidemic-prevention/src/main/java/com/pj/HealthStatusController.java

@@ -0,0 +1,47 @@
+package com.pj;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.util.XmlUtil;
+import com.pj.current.satoken.StpUserUtil;
+import com.pj.project.tb_person_visit_record.TbPersonVisitRecord;
+import com.pj.project.tb_person_visit_record.TbPersonVisitRecordService;
+import com.pj.utils.sg.AjaxJson;
+import com.pj.utils.so.SoMap;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+@RequestMapping("health-status")
+@RestController
+public class HealthStatusController {
+    /**
+     * 底层 Service 对象
+     */
+    @Autowired
+    TbPersonVisitRecordService tbPersonVisitRecordService;
+
+    /**
+     * 查集合 - 根据条件(参数为空时代表忽略指定条件)
+     */
+    @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()));
+        }
+        List<TbPersonVisitRecord> list = tbPersonVisitRecordService.getList(so.startPage());
+        return AjaxJson.getPageData(so.getDataCount(), list);
+    }
+    @RequestMapping("solve")
+    @SaCheckPermission(TbPersonVisitRecord.PERMISSION_CODE_UN_HEALTH_SOLVE)
+    public AjaxJson solve() {
+        SoMap soMap = SoMap.getRequestSoMap();
+        tbPersonVisitRecordService.solve(soMap);
+        return AjaxJson.getSuccess();
+    }
+}

+ 3 - 2
sp-core/src/main/java/com/pj/project/tb_manager/TbManagerController.java → business-system/epidemic-prevention/src/main/java/com/pj/TbManagerController.java

@@ -1,8 +1,10 @@
-package com.pj.project.tb_manager;
+package com.pj;
 
 import java.util.List;
 
 import cn.hutool.core.util.StrUtil;
+import com.pj.project.tb_manager.TbManager;
+import com.pj.project.tb_manager.TbManagerService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
@@ -30,7 +32,6 @@ TbManagerService tbManagerService;
     /** 增 */
     @RequestMapping("add")
     @SaCheckPermission(TbManager.PERMISSION_CODE_ADD)
-    @Transactional(rollbackFor = Exception.class)
     public AjaxJson add(TbManager t){
         tbManagerService.add(t);
         return AjaxJson.getSuccessData(t);

+ 7 - 8
business-system/face-identify/src/main/java/com/pj/biz/TbPersonVisitRecordController.java

@@ -1,6 +1,7 @@
 package com.pj.biz;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 import cn.hutool.core.util.StrUtil;
 import com.pj.project.tb_person_visit_record.TbPersonVisitRecord;
@@ -109,7 +110,7 @@ public class TbPersonVisitRecordController {
         SoMap so = SoMap.getRequestSoMap();
         String deptId = StpUserUtil.getDeptId();
         if (!StrUtil.equals(String.valueOf(StpUserUtil.ADMIN_DEPT_ID), deptId)) {
-            so.put("deptIdList", StrUtil.splitTrim(deptId,","));
+            so.put("deptIdList", StrUtil.splitTrim(deptId,",").stream().map(Long::valueOf).collect(Collectors.toList()));
         }
         List<TbPersonVisitRecord> list = tbPersonVisitRecordService.getList(so.startPage());
         return AjaxJson.getPageData(so.getDataCount(), list);
@@ -118,16 +119,14 @@ 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()));
+        }
         return AjaxJson.getSuccessData(tbPersonVisitRecordService.export(soMap));
     }
 
-    @RequestMapping("solve")
-    @SaCheckPermission(TbPersonVisitRecord.PERMISSION_CODE_UN_HEALTH_SOLVE)
-    public AjaxJson solve() {
-        SoMap soMap = SoMap.getRequestSoMap();
-        tbPersonVisitRecordService.solve(soMap);
-        return AjaxJson.getSuccess();
-    }
+
 
 
 }

+ 23 - 3
business-system/filing-system/src/main/java/com/pj/api/WxController.java

@@ -1,6 +1,7 @@
 package com.pj.api;
 
 
+import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.util.StrUtil;
 import com.pj.current.satoken.StpUserUtil;
@@ -14,6 +15,8 @@ import com.pj.project.tb_mini_user.TbMiniUser;
 import com.pj.project.tb_mini_user.TbMiniUserService;
 import com.pj.project.tb_person_filing.TbPersonFiling;
 import com.pj.project.tb_person_filing.TbPersonFilingService;
+import com.pj.project.tb_person_visit_record.TbPersonVisitRecord;
+import com.pj.project.tb_person_visit_record.TbPersonVisitRecordService;
 import com.pj.project.wx.WxService;
 import com.pj.utils.sg.AjaxJson;
 import com.pj.utils.so.SoMap;
@@ -23,6 +26,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @RequestMapping("wx")
 @RestController
@@ -40,6 +44,8 @@ public class WxController {
     private TbCarFilingService tbCarFilingService;
     @Resource
     private ReMiniUserCarFilingService reMiniUserCarFilingService;
+    @Resource
+    private TbPersonVisitRecordService tbPersonVisitRecordService;
 
 
     @GetMapping(value = "getRedirectUrl")
@@ -77,7 +83,7 @@ public class WxController {
         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, ","));
+            so.put("deptIdList", StrUtil.splitTrim(deptId, ",").stream().map(Long::valueOf).collect(Collectors.toList()));
         }
         List<TbPersonFiling> list = tbPersonFilingService.getForWx(so.startPage());
         return AjaxJson.getPageData(so.getDataCount(), list);
@@ -119,7 +125,7 @@ public class WxController {
         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, ","));
+            so.put("deptIdList", StrUtil.splitTrim(deptId, ",").stream().map(Long::valueOf).collect(Collectors.toList()));
         }
         List<TbCarFiling> list = tbCarFilingService.getForWx(so.startPage());
         return AjaxJson.getPageData(so.getDataCount(), list);
@@ -130,5 +136,19 @@ public class WxController {
         tbCarFilingService.delete(id);
         return AjaxJson.getSuccess();
     }
-
+    @PostMapping("loginByOpenid")
+    public AjaxJson loginByOpenid(){
+        SoMap soMap=SoMap.getRequestSoMap();
+        String openid=soMap.getString("openid");
+        if (StrUtil.isEmpty(openid)){
+            return AjaxJson.getError("参数异常");
+        }
+        return  tbMiniUserService.loginByOpenid(openid);
+    }
+    @RequestMapping("solve")
+    public AjaxJson solve() {
+        SoMap soMap = SoMap.getRequestSoMap();
+        tbPersonVisitRecordService.solve(soMap);
+        return AjaxJson.getSuccess();
+    }
 }

+ 12 - 4
sp-admin/src/main/java/com/pj/project4sp/admin/SpAdminController.java

@@ -4,14 +4,13 @@ import java.util.List;
 
 import cn.hutool.core.util.StrUtil;
 import com.pj.current.satoken.StpUserUtil;
+import com.pj.project.sp_admin.*;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import com.pj.current.satoken.AuthConst;
 import com.pj.project4sp.SP;
-import com.pj.project4sp.admin4password.SpAdminPasswordService;
 import com.pj.project4sp.role.SpRoleUtil;
 import com.pj.utils.sg.AjaxError;
 import com.pj.utils.sg.AjaxJson;
@@ -29,10 +28,10 @@ import cn.dev33.satoken.stp.StpUtil;
 public class SpAdminController {
 
 	@Autowired
-	SpAdminMapper spAdminMapper;
+    SpAdminMapper spAdminMapper;
 	
 	@Autowired
-	SpAdminService spAdminService;
+    SpAdminService spAdminService;
 	
 	@Autowired
 	SpAdminPasswordService spAdminPasswordService;
@@ -193,4 +192,13 @@ public class SpAdminController {
 	}
 
 
+	@RequestMapping("updateDept")
+	public AjaxJson updateDept(){
+		SoMap so = SoMap.getRequestSoMap();
+		Long id=so.getLong("id");
+		String  deptId=so.getString("deptId");
+		spAdminService.updateDept(id,deptId);
+		return AjaxJson.getSuccess();
+	}
+
 }

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

@@ -9,8 +9,8 @@ import org.springframework.web.bind.annotation.RestController;
 
 import com.alibaba.csp.sentinel.annotation.SentinelResource;
 import com.alibaba.csp.sentinel.slots.block.BlockException;
-import com.pj.project4sp.admin.SpAdmin;
-import com.pj.project4sp.admin.SpAdminUtil;
+import com.pj.project.sp_admin.SpAdmin;
+import com.pj.project.sp_admin.SpAdminUtil;
 import com.pj.project4sp.role4permission.SpRolePermissionService;
 import com.pj.project4sp.spcfg.SpCfgUtil;
 import com.pj.utils.sg.AjaxJson;

+ 2 - 3
sp-admin/src/main/java/com/pj/project4sp/admin4acc/SpAccAdminService.java

@@ -10,14 +10,13 @@ import cn.hutool.core.util.RandomUtil;
 import com.pj.current.satoken.StpUserUtil;
 import com.pj.project.tb_mini_user.TbMiniUser;
 import com.pj.project.tb_mini_user.TbMiniUserService;
-import org.aspectj.weaver.loadtime.Aj;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import com.pj.current.config.SystemObject;
-import com.pj.project4sp.admin.SpAdmin;
-import com.pj.project4sp.admin.SpAdminMapper;
+import com.pj.project.sp_admin.SpAdmin;
+import com.pj.project.sp_admin.SpAdminMapper;
 import com.pj.project4sp.admin4login.SpAdminLogin;
 import com.pj.project4sp.admin4login.SpAdminLoginMapper;
 import com.pj.project4sp.role4permission.SpRolePermissionService;

+ 3 - 2
sp-admin/src/main/java/com/pj/project4sp/admin4password/SpAdminPasswordController.java

@@ -1,12 +1,13 @@
 package com.pj.project4sp.admin4password;
 
+import com.pj.project.sp_admin.SpAdminPasswordService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import com.pj.current.config.SystemObject;
-import com.pj.project4sp.admin.SpAdmin;
-import com.pj.project4sp.admin.SpAdminUtil;
+import com.pj.project.sp_admin.SpAdmin;
+import com.pj.project.sp_admin.SpAdminUtil;
 import com.pj.utils.sg.AjaxJson;
 import com.pj.utils.sg.NbUtil;
 

+ 1 - 1
sp-admin/src/main/java/com/pj/project4sp/role/SpRoleUtil.java

@@ -4,7 +4,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import com.pj.current.satoken.AuthConst;
-import com.pj.project4sp.admin.SpAdminUtil;
+import com.pj.project.sp_admin.SpAdminUtil;
 import com.pj.utils.sg.AjaxError;
 import com.pj.utils.sg.AjaxJson;
 import com.pj.utils.sg.NbUtil;

+ 1 - 1
sp-admin/src/main/java/com/pj/satoken/StpInterfaceImpl.java

@@ -5,7 +5,7 @@ import java.util.List;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import com.pj.project4sp.admin.SpAdminMapper;
+import com.pj.project.sp_admin.SpAdminMapper;
 import com.pj.project4sp.role.SpRoleUtil;
 import com.pj.project4sp.role4permission.SpRolePermissionService;
 

+ 38 - 0
sp-core/src/main/java/com/pj/current/config/WxConfig.java

@@ -9,6 +9,7 @@ import org.springframework.stereotype.Component;
 @Data
 public class WxConfig {
 
+    private boolean enable;
     private String appId;
     private String appSecret;
     private String domain;
@@ -19,4 +20,41 @@ public class WxConfig {
     private String  accessTokenUrl;
     private String jsApiTokenUrl;
     private String sendMsgUrl;
+    /**
+     * 体温异常提醒
+     *模板ID
+     * WtTlUMCtJp6dSPXLJg_RdsmX4811aDkEkHuX0Txfgfg
+     * 开发者调用模板消息接口时需提供模板ID
+     * 标题
+     * 体温异常提醒
+     * 行业
+     * IT科技 - IT软件与服务
+     * 详细内容
+     * {{first.DATA}}
+     * 姓名:{{keyword1.DATA}}
+     * 体温:{{keyword2.DATA}}
+     * 日期:{{keyword3.DATA}}
+     * {{remark.DATA}}
+     *
+     */
+    private String temperatureErrorTemplate;
+    /**
+     * 模板ID
+     * IEzVk2HCvctwXZzaGaElWQpRskolYlZSahTZXbJhuVM
+     * 开发者调用模板消息接口时需提供模板ID
+     * 标题
+     * 人员健康码异常通知
+     * 行业
+     * IT科技 - IT软件与服务
+     * 详细内容
+     * {{first.DATA}}
+     * 姓名:{{keyword1.DATA}}
+     * 时间:{{keyword2.DATA}}
+     * 设备:{{keyword3.DATA}}
+     * 异常原因:{{keyword4.DATA}}
+     * 地点:{{keyword5.DATA}}
+     * {{remark.DATA}}
+     */
+    private String healthStatusTemplate;
+    private String reportDetail;
 }

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

@@ -11,6 +11,8 @@ import com.pj.current.netty.dto.RequestPackageDTO;
 import com.pj.current.task.TaskService;
 import com.pj.project.tb_dept.TbDept;
 import com.pj.project.tb_dept.TbDeptService;
+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_visit_record.TbPersonVisitRecord;
@@ -18,6 +20,8 @@ import com.pj.project.tb_person_visit_record.TbPersonVisitRecordService;
 import com.pj.project.tb_person_visit_record.task.ConvertBase64ToImage;
 import com.pj.project.tb_terminal.TbTerminal;
 import com.pj.project.tb_terminal.TbTerminalService;
+import com.pj.project.tb_venues.TbVenues;
+import com.pj.project.tb_venues.TbVenuesService;
 import com.pj.project4sp.spcfg.SpCfgUtil;
 import io.netty.channel.ChannelHandlerContext;
 import lombok.extern.slf4j.Slf4j;
@@ -27,6 +31,7 @@ import javax.annotation.Resource;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 人脸核验记录
@@ -46,6 +51,7 @@ public class CheckLogHandler implements IHandler {
     @Resource
     private TbDeptService tbDeptService;
 
+
     @Override
     public CommandType commandType() {
         return CommandType.UPLOAD_CHECK_LOG;
@@ -79,10 +85,7 @@ public class CheckLogHandler implements IHandler {
         tbPersonVisitRecordService.saveOrUpdate(record);
         ctx.write(OKMsg.ok());
         ctx.flush();
-        String minTemperature= SpCfgUtil.getMinTemperature();
-        if (Double.valueOf(minTemperature)<Double.valueOf(dto.getTemperature())){
-            //todo 触发体温预警
-        }
+
         taskService.addTask(new ConvertBase64ToImage(RandomUtil.randomNumbers(8), 2000, record.getId(), dto.getPicture()));
     }
 }

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

@@ -5,6 +5,7 @@ import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
+import com.pj.current.config.WxConfig;
 import com.pj.current.netty.command.constants.CommandType;
 import com.pj.current.netty.command.handler.IHandler;
 import com.pj.current.netty.command.handler.dto.ChecklogDTO;
@@ -12,8 +13,13 @@ 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.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_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_visit_record.TbPersonVisitRecord;
@@ -21,6 +27,11 @@ import com.pj.project.tb_person_visit_record.TbPersonVisitRecordService;
 import com.pj.project.tb_person_visit_record.task.ConvertBase64ToImage;
 import com.pj.project.tb_terminal.TbTerminal;
 import com.pj.project.tb_terminal.TbTerminalService;
+import com.pj.project.tb_venues.TbVenues;
+import com.pj.project.tb_venues.TbVenuesService;
+import com.pj.project.wx.WxService;
+import com.pj.project.wx.bo.MsgDataBO;
+import com.pj.project4sp.spcfg.SpCfgUtil;
 import com.pj.utils.cache.RedisUtil;
 import io.netty.channel.ChannelHandlerContext;
 import lombok.extern.slf4j.Slf4j;
@@ -31,6 +42,8 @@ import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 健康核查记录上传
@@ -49,6 +62,19 @@ public class HealthlogHandler implements IHandler {
     @Resource
     private TaskService taskService;
 
+    @Resource
+    private TbManagerService tbManagerService;
+    @Resource
+    private TbVenuesService tbVenuesService;
+    @Resource
+    private TbGateTerminalService tbGateTerminalService;
+    @Resource
+    private WxConfig wxConfig;
+    @Resource
+    private WxService wxService;
+    @Resource
+    private TbCarVisitRecordService tbCarVisitRecordService;
+
     @Override
     public CommandType commandType() {
         return CommandType.UPLOAD_HEALTH_LOG;
@@ -56,7 +82,7 @@ public class HealthlogHandler implements IHandler {
 
     @Override
     public void handler(ChannelHandlerContext ctx, RequestPackageDTO packageDTO) {
-        log.info("========健康核查记录上传===========");
+        log.info("========健康核查记录上传===========:{}", JSONUtil.toJsonStr(packageDTO));
         JSONObject params = JSONUtil.parseObj(packageDTO.getPayload().getParams());
         String str = params.getStr("log");
         HealthlogDTO dto = JSONUtil.toBean(str, HealthlogDTO.class);
@@ -64,28 +90,45 @@ public class HealthlogHandler implements IHandler {
         TbTerminal tbTerminal = tbTerminalService.findBySN(sn);
         String idCard = dto.getIdentity_number();
         TbPersonFiling tbPersonFiling = tbPersonFilingService.findByIdCard(idCard);
-        Long deptId=tbPersonFiling.getDeptId();
+        if (tbPersonFiling == null && !dto.isAllow_through()) {
+            log.error("异常核验记录");
+            ctx.write(OKMsg.ok());
+            ctx.flush();
+            return;
+        }
+        if (tbPersonFiling == null) {
+            //todo 增加人员信息
+            TbDept tbDept = tbDeptService.findOneByPassType(TbDept.PassTypeEnum.BLOW.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);
+            tbPersonFilingService.save(tbPersonFiling);
+        }
+        Long deptId = tbPersonFiling.getDeptId();
         TbDept tbDept = tbDeptService.getById(deptId);
-        //车辆道闸判断结果 0 不通行 1 可放行
-        String carJudgeResult = RedisUtil.get("result:" + tbTerminal.getVenuesId());
-        //可放行
-        if (dto.isAllow_through()){
-            if (TbDept.PassTypeEnum.ONE.getType().equals(tbDept.getPassType())
-                    ||(StrUtil.equals(carJudgeResult, "1"))){
-                try {
-                    tbTerminalService.open(tbTerminal.getId());
-                } catch (Exception e) {
-                    log.error("开闸失败:{}", e.getMessage());
+        //车辆道闸判断结果 存在则放行 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 (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);
                 }
+
             }
         }
-        Date date = dto.getDate();
-        LocalDateTime dayTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
-        Integer direction = dto.getDirection();
-        TbPersonVisitRecord record = tbPersonVisitRecordService.findTheNearRecord(idCard, deptId, direction, dayTime.minusSeconds(8));
-        if (record == null) {
-            record = new TbPersonVisitRecord();
-        }
+
+        TbPersonVisitRecord record = new TbPersonVisitRecord();
         record.setDeptId(deptId).setType(TbPersonVisitRecord.TypeEnum.UPLOAD.getType())
                 .setVenues(tbTerminal.getVenuesName()).setChannel(tbTerminal.getChannelName())
                 .setTerminalName(tbTerminal.getName()).setVisitDate(dto.getDate()).setCreateTime(new Date())
@@ -93,9 +136,54 @@ public class HealthlogHandler implements IHandler {
                 .setDirection(dto.getDirection()).setTemperature(dto.getTemperature()).setDeptName(tbDept.getName())
                 .setName(tbPersonFiling.getName()).setPhone(tbPersonFiling.getPhone()).setIdCard(tbPersonFiling.getIdCard());
         tbPersonVisitRecordService.saveOrUpdate(record);
+        tbTerminal.setLastOnLine(DateUtil.now());
+        tbTerminalService.updateById(tbTerminal);
+        log.info("回复健康记录上传:{}", OKMsg.ok());
         ctx.write(OKMsg.ok());
         ctx.flush();
+
+
         taskService.addTask(new ConvertBase64ToImage(RandomUtil.randomNumbers(8), 2000, record.getId(), dto.getPicture()));
+        String alarm = SpCfgUtil.getAlarmConfig();
+        if (Integer.parseInt(alarm) == 0) {
+            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();
+        String healthStatus = dto.getHealth_status();
+        String now = DateUtil.now();
+        if (Double.valueOf(minTemperature) < Double.valueOf(dto.getTemperature())) {
+            log.info("发送体温异常提醒============");
+            MsgDataBO msgDataBO = new MsgDataBO("您收到一条人员体温异常提醒", dto.getName(), dto.getTemperature(), now, "请及时处理");
+            //todo 触发体温预警
+            managers.forEach(tbManager -> {
+                String detailUrl = wxConfig.getReportDetail() + "?=" + record.getId() + "&openid=" + tbManager.getOpenid();
+                wxService.sendTemplateMsg(wxConfig.getTemperatureErrorTemplate(), tbManager.getOpenid(), msgDataBO, detailUrl);
+            });
+        }
+        if (!healthStatus.equals(TbPersonVisitRecord.HealthEnum.GREEN.getStatus())) {
+            log.info("发送健康码异常提醒============");
+            // todo 黄码,红码预警
+            MsgDataBO msgDataBO = new MsgDataBO("您收到一条人员健康码异常提醒", dto.getName(), now, tbTerminal.getName(), healthStatus, tbVenues.getName(), "请及时处理");
+            //todo 触发体温预警
+            managers.forEach(tbManager -> {
+                String detailUrl = wxConfig.getReportDetail() + "?=" + record.getId() + "&openid=" + tbManager.getOpenid();
+                wxService.sendTemplateMsg(wxConfig.getTemperatureErrorTemplate(), tbManager.getOpenid(), msgDataBO, detailUrl);
+            });
+        }
+    }
 
+    private void openGate(Long gateTerminalId, Long venuesId) {
+        try {
+            tbGateTerminalService.open(gateTerminalId);
+            String recordId = RedisUtil.get("record:" + venuesId);
+            RedisUtil.del("record:" + venuesId);
+            tbCarVisitRecordService.updatePass(Long.valueOf(recordId));
+        } catch (Exception e) {
+            log.error("开闸失败:{}", e.getMessage());
+        }
     }
 }

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

@@ -1,5 +1,7 @@
 package com.pj.current.netty.command.handler.impl;
 
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.XmlUtil;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.pj.current.netty.command.constants.CommandType;
@@ -32,11 +34,12 @@ public class TerminalOptionHandler implements IHandler {
     @Override
     public void handler(ChannelHandlerContext ctx, RequestPackageDTO packageDTO) {
         JSONObject params = JSONUtil.parseObj(packageDTO.getPayload().getParams());
+        log.info("上传设备属性:{}",params.toJSONString(0));
         String sn = params.getStr("sn");
         Long userCount = params.getLong("UserCount");
         String ip = params.getStr("IPAddress");
         TbTerminal tbTerminal = tbTerminalService.findBySN(sn);
-        tbTerminal.setPersonNum(userCount).setIpAddress(ip);
+        tbTerminal.setPersonNum(userCount).setIpAddress(ip).setLastOnLine(DateUtil.now());
         tbTerminalService.updateById(tbTerminal);
         ctx.write(OKMsg.ok());
         ctx.flush();

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

@@ -1,5 +1,6 @@
 package com.pj.current.netty.command.handler.impl;
 
+import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
@@ -9,6 +10,7 @@ import com.pj.current.netty.command.handler.IHandler;
 import com.pj.current.netty.dto.RequestPackageDTO;
 import com.pj.current.task.TaskService;
 import com.pj.project.tb_terminal.task.CommandDelayTask;
+import com.pj.project.tb_terminal.task.FinishCommandTask;
 import com.pj.utils.cache.RedisUtil;
 import io.netty.channel.ChannelHandlerContext;
 import lombok.extern.slf4j.Slf4j;
@@ -43,11 +45,12 @@ public class UploadCommandHandler implements IHandler {
         long delay = Long.parseLong(RandomUtil.randomNumbers(3));
         for (String command : list) {
             RequestPackageDTO requestPackageDTO = JSONUtil.toBean(command, RequestPackageDTO.class);
-            String taskId=RandomUtil.randomNumbers(16);
-            String msgId=requestPackageDTO.getMsgId();
-            taskService.addTask(new CommandDelayTask(taskId, delay, ctx, command,msgId));
+            String taskId = RandomUtil.randomNumbers(16);
+            String msgId = requestPackageDTO.getMsgId();
+            taskService.addTask(new CommandDelayTask(taskId, delay, ctx, command, msgId));
             delay = delay + 1000;
         }
+        taskService.addTask(new FinishCommandTask(RandomUtil.randomNumbers(10), delay + 300, ctx));
         RedisUtil.del(key);
     }
 }

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

@@ -1,5 +1,6 @@
 package com.pj.current.netty.command.handler.impl;
 
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONObject;
@@ -50,6 +51,7 @@ public class UploadUserHandler implements IHandler {
 
     @Override
     public void handler(ChannelHandlerContext ctx, RequestPackageDTO packageDTO) {
+        log.info("设备上传人员信息:{}",JSONUtil.toJsonStr(packageDTO));
         JSONObject params = JSONUtil.parseObj(packageDTO.getPayload().getParams());
         String sn = params.getStr("sn");
         TbTerminal tbTerminal = tbTerminalService.findBySN(sn);
@@ -57,6 +59,8 @@ public class UploadUserHandler implements IHandler {
             log.error("========设备不存在=========:{}", sn);
             return;
         }
+        tbTerminal.setLastOnLine(DateUtil.now());
+        tbTerminalService.updateById(tbTerminal);
         ctx.write(OKMsg.ok());
         ctx.flush();
         WhitelistDTO uploadUserDTO = JSONUtil.toBean(params.getStr("users"), WhitelistDTO.class);
@@ -77,6 +81,11 @@ public class UploadUserHandler implements IHandler {
             tbPersonFilingService.save(tbPersonFiling);
             //转换图片
             taskService.addTask(new Base64ToImage(RandomUtil.randomNumbers(10),2000,tbPersonFiling.getId(),uploadUserDTO.getPhoto()));
+        }else {
+            if (!StrUtil.equals(personFiling.getPin(),uploadUserDTO.getPin())){
+                personFiling.setPin(uploadUserDTO.getPin());
+                tbPersonFilingService.updateById(personFiling);
+            }
         }
         List<TbTerminal> list = tbTerminalService.list();
         //分发人员信息,不分发上传设备

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

@@ -135,7 +135,7 @@ public class HeartBeatHandler extends ChannelInboundHandlerAdapter {
         System.out.println();
         ctx.close();
         log.info(ctx.channel().id() + " 发生了错误,此连接被关闭" + "此时连通数量: " + CHANNEL_MAP.size());
-        //cause.printStackTrace();
+        cause.printStackTrace();
     }
 
 }

+ 3 - 1
sp-admin/src/main/java/com/pj/project4sp/admin/SpAdmin.java → sp-core/src/main/java/com/pj/project/sp_admin/SpAdmin.java

@@ -1,4 +1,4 @@
-package com.pj.project4sp.admin;
+package com.pj.project.sp_admin;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -6,12 +6,14 @@ import java.util.Date;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 
 import lombok.Data;
+import lombok.experimental.Accessors;
 
 /**
  * Model: 系统管理员表
  * @author kong
  */
 @Data
+@Accessors(chain = true)
 public class SpAdmin implements Serializable  {
 
 	private static final long serialVersionUID = 1L;

+ 5 - 1
sp-admin/src/main/java/com/pj/project4sp/admin/SpAdminMapper.java → sp-core/src/main/java/com/pj/project/sp_admin/SpAdminMapper.java

@@ -1,4 +1,4 @@
-package com.pj.project4sp.admin;
+package com.pj.project.sp_admin;
 
 import java.util.List;
 
@@ -75,4 +75,8 @@ public interface SpAdminMapper {
 
 
     void bindUser(SpAdmin spAdmin);
+
+    void updateDept(@Param("id")Long id, @Param("deptId")String deptId);
+
+    void removeByPhone(@Param("phone")String phone);
 }

+ 9 - 3
sp-admin/src/main/java/com/pj/project4sp/admin/SpAdminMapper.xml → sp-core/src/main/java/com/pj/project/sp_admin/SpAdminMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.pj.project4sp.admin.SpAdminMapper">
+<mapper namespace="com.pj.project.sp_admin.SpAdminMapper">
 
 
 	<!-- 增 -->
@@ -23,7 +23,10 @@
 		name = #{name} 
 		where id = #{id} 
 	</delete>
-	
+	<delete id="removeByPhone">
+		delete  from sp_admin where phone=#{phone}
+	</delete>
+
 	<!-- 自己改自己 -->
 	<!-- <delete id="updateBy">
 		update sp_admin set 
@@ -34,7 +37,7 @@
 	<!-- =================== 查询相关 =================== -->
 
 	<!-- 通用映射 -->
-	<resultMap id="model" type="com.pj.project4sp.admin.SpAdmin">
+	<resultMap id="model" type="com.pj.project.sp_admin.SpAdmin">
 		<result property="id" column="id" />
 		<result property="name" column="name" />
 		<result property="deptId" column="dept_id" />
@@ -110,6 +113,9 @@
     <update id="bindUser">
 		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>
 
 
 </mapper>

+ 1 - 1
sp-admin/src/main/java/com/pj/project4sp/admin4password/SpAdminPasswordService.java → sp-core/src/main/java/com/pj/project/sp_admin/SpAdminPasswordService.java

@@ -1,4 +1,4 @@
-package com.pj.project4sp.admin4password;
+package com.pj.project.sp_admin;
 
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;

+ 12 - 8
sp-admin/src/main/java/com/pj/project4sp/admin/SpAdminService.java → sp-core/src/main/java/com/pj/project/sp_admin/SpAdminService.java

@@ -1,18 +1,15 @@
-package com.pj.project4sp.admin;
+package com.pj.project.sp_admin;
 
 import cn.hutool.core.util.PhoneUtil;
 import cn.hutool.core.util.StrUtil;
 import com.pj.current.global.BusinessException;
 import com.pj.project.tb_dept.TbDept;
 import com.pj.project.tb_dept.TbDeptService;
-import com.pj.utils.sg.AjaxJson;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 import com.pj.project4sp.SP;
-import com.pj.project4sp.admin4password.SpAdminPasswordService;
 
 import cn.dev33.satoken.stp.StpUtil;
 
@@ -55,16 +52,16 @@ public class SpAdminService {
         // 创建人,为当前账号
         admin.setCreateByAid(StpUtil.getLoginIdAsLong());
         // 开始添加
-        String deptName = "";
+        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 += tbDept.getName() + "、";
+            deptName.append(tbDept.getName()).append("、");
         }
-        deptName = deptName.substring(0, deptName.length()-1);
-        admin.setDeptName(deptName);
+        deptName = new StringBuilder(deptName.substring(0, deptName.length() - 1));
+        admin.setDeptName(deptName.toString());
         spAdminMapper.add(admin);
         // 获取主键
         long id = SP.publicMapper.getPrimarykey();
@@ -76,4 +73,11 @@ public class SpAdminService {
     }
 
 
+    public void updateDept(Long id, String deptId) {
+        spAdminMapper.updateDept(id,deptId);
+    }
+
+    public void removeByPhone(String phone) {
+        spAdminMapper.removeByPhone(phone);
+    }
 }

+ 2 - 2
sp-admin/src/main/java/com/pj/project4sp/admin/SpAdminUtil.java → sp-core/src/main/java/com/pj/project/sp_admin/SpAdminUtil.java

@@ -1,4 +1,4 @@
-package com.pj.project4sp.admin;
+package com.pj.project.sp_admin;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -39,7 +39,7 @@ public class SpAdminUtil {
 	 * @param name
 	 * @return
 	 */
-	public static boolean checkName(long adminId, String name) {
+	public static boolean checkName(Long adminId, String name) {
 		if(NbUtil.isNull(name)) {
 			throw AjaxError.get("账号名称不能为空");
 		}

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

@@ -86,7 +86,7 @@
 		UNION ALL
 		( SELECT * FROM tb_car_filing where 1=1
 		<if test="deptIdList !=null and deptIdList.size>0">
-			and a.dept_id in
+			and dept_id in
 			<foreach collection="deptIdList" item="deptId" open="(" close=")" separator=",">
 				#{deptId}
 			</foreach>

+ 4 - 0
sp-core/src/main/java/com/pj/project/tb_car_visit_record/TbCarVisitRecord.java

@@ -101,6 +101,10 @@ public class TbCarVisitRecord extends Model<TbCarVisitRecord> implements Seriali
 
 	private Date createTime;
 	private Date updateTime;
+	/**
+	 * 是否允许通行
+	 */
+	private Integer allowPass=1;
 
 	@TableField(exist = false)
 	private String typeStr;

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

@@ -113,4 +113,10 @@ public class TbCarVisitRecordService extends ServiceImpl<TbCarVisitRecordMapper,
         writer.close();
         return SystemObject.config.getDomain() + uploadConfig.httpPrefix + flieTypeFolder + currDateFolder + "/" + fileName;
     }
+
+    public void updatePass(Long recordId) {
+       TbCarVisitRecord record= getById(recordId);
+       record.setAllowPass(1);
+       this.updateById(record);
+    }
 }

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

@@ -55,7 +55,7 @@ public class TbDept extends Model<TbDept> implements Serializable {
 	/**
 	 * 人数 
 	 */
-	private Integer peopleNum;
+	private Integer peopleNum=0;
 
 	/**
 	 * 描述 

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

@@ -1,6 +1,8 @@
 package com.pj.project.tb_dept;
 
 import java.util.List;
+import java.util.stream.Collector;
+import java.util.stream.Collectors;
 
 import cn.hutool.core.util.StrUtil;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -89,7 +91,7 @@ public class TbDeptController {
         SoMap so = SoMap.getRequestSoMap();
         String deptId = StpUserUtil.getDeptId();
         if (!StrUtil.equals(String.valueOf(StpUserUtil.ADMIN_DEPT_ID), deptId)) {
-            so.put("deptIdList", StrUtil.splitTrim(deptId,","));
+            so.put("deptIdList", StrUtil.splitTrim(deptId,",").stream().map(Long::valueOf).collect(Collectors.toList()));
         }
         List<TbDept> list = tbDeptService.getList(so.startPage());
         return AjaxJson.getPageData(so.getDataCount(), list);

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

@@ -45,8 +45,8 @@
 			<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">
-			 	adn id in
-				 <foreach collection="deptIdList" item="deptId" open="(" close=")">
+			 	and id in
+				 <foreach collection="deptIdList" item="deptId" open="(" close=")" index=",">
 					 #{deptId}
 				 </foreach>
 			</if>

+ 9 - 2
sp-core/src/main/java/com/pj/project/tb_dept/TbDeptService.java

@@ -4,6 +4,7 @@ import java.util.Date;
 import java.util.List;
 
 import cn.dev33.satoken.stp.StpUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.pj.current.global.BusinessException;
@@ -48,8 +49,8 @@ public class TbDeptService extends ServiceImpl<TbDeptMapper, TbDept> implements
      * 删
      */
     void delete(Long id) {
-        TbDept db=super.getById(id);
-        if (db.getPeopleNum()>0){
+        TbDept db = super.getById(id);
+        if (db.getPeopleNum() > 0) {
             throw new BusinessException("部门有用户数据,不能删除");
         }
         SoMap soMap = new SoMap();
@@ -83,4 +84,10 @@ 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);
+    }
 }

+ 2 - 0
sp-core/src/main/java/com/pj/project/tb_gate_terminal/TbGateTerminal.java

@@ -91,6 +91,8 @@ public class TbGateTerminal extends Model<TbGateTerminal> implements Serializabl
 	 */
 	private Date updateTime;
 
+	private Date lastOnlineTime;
+
 	@TableField(exist = false)
 	private String venuesName;
 

+ 30 - 20
sp-core/src/main/java/com/pj/project/tb_gate_terminal/TbGateTerminalService.java

@@ -185,6 +185,7 @@ public class TbGateTerminalService extends ServiceImpl<TbGateTerminalMapper, TbG
     public void open(Long id) throws Exception {
         TbGateTerminal tbGateTerminal = this.getById(id);
         TbVenues tbVenues = tbVenuesService.getById(tbGateTerminal.getVenuesId());
+        log.info("开启道闸========:{}", tbVenues.getName());
         Socket socket = new Socket();
         socket.connect(new InetSocketAddress(tbGateTerminal.getIp(), myConfig.getGatePort()), 4000);
         String result = ZKTecoUtils.sendAndGetResult(socket, GateCommandUtils.openCommand());
@@ -199,13 +200,17 @@ public class TbGateTerminalService extends ServiceImpl<TbGateTerminalMapper, TbG
         tbGateCommandLogService.save(log);
     }
 
-    private static TimedCache<Long, String> RECORD_CACHE = CacheUtil.newTimedCache(40000);
+    private static TimedCache<Long, String> RECORD_CACHE = CacheUtil.newTimedCache(10000);
 
     public void record(ReqBO bo) {
         String ip = bo.getIpaddr();
         TbGateTerminal tbGateTerminal = this.findByIp(ip);
         ReqBO.ResultBean.PlateResultBean plateResultBean = bo.getResult().getPlateResult();
         String carNo = plateResultBean.getLicense();
+        if (StrUtil.contains(carNo, "无")) {
+            log.info("车牌识别错误=======无法处理:{}", carNo);
+            return;
+        }
         if (tbGateTerminal == null) {
             log.error("===========非法设备============");
             return;
@@ -222,8 +227,9 @@ public class TbGateTerminalService extends ServiceImpl<TbGateTerminalMapper, TbG
         } else {
             handlerIn(tbGateTerminal, bo);
         }
-
         RECORD_CACHE.put(tbGateTerminal.getId(), carNo);
+        tbGateTerminal.setLastOnlineTime(new Date());
+        this.updateById(tbGateTerminal);
     }
 
     /**
@@ -237,8 +243,8 @@ public class TbGateTerminalService extends ServiceImpl<TbGateTerminalMapper, TbG
         String base64Image = plateResultBean.getImageFragmentFile();
         String carNo = plateResultBean.getLicense();
         String now = DateUtil.now();
-        cacheResult(carNo, now, tbGateTerminal.getVenuesId(),tbGateTerminal.getId());
-        saveRecord(carNo, base64Image, tbGateTerminal, 1);
+        TbCarVisitRecord carVisitRecord=  saveRecord(carNo, base64Image, tbGateTerminal, 1, 0);
+        cacheResult(carNo, now, tbGateTerminal.getVenuesId(), tbGateTerminal.getId(),carVisitRecord.getId());
     }
 
     /**
@@ -251,7 +257,11 @@ public class TbGateTerminalService extends ServiceImpl<TbGateTerminalMapper, TbG
         String base64Image = plateResultBean.getImageFragmentFile();
         String carNo = plateResultBean.getLicense();
         log.info("车辆离场:{}", carNo);
-        saveRecord(carNo, base64Image, tbGateTerminal, 2);
+        if (StrUtil.contains(carNo, "无")) {
+            log.info("车牌识别错误=======无法处理:{}", carNo);
+            return;
+        }
+        saveRecord(carNo, base64Image, tbGateTerminal, 2, 1);
         try {
             this.open(tbGateTerminal.getId());
         } catch (Exception e) {
@@ -267,60 +277,60 @@ public class TbGateTerminalService extends ServiceImpl<TbGateTerminalMapper, TbG
      * @param tbGateTerminal
      * @param direction
      */
-    private void saveRecord(String carNo, String base64Image, TbGateTerminal tbGateTerminal, Integer direction) {
+    private TbCarVisitRecord saveRecord(String carNo, String base64Image, TbGateTerminal tbGateTerminal, Integer direction, int allowPass) {
         Long channelId = tbGateTerminal.getVenuesId();
         Date now = new Date();
         TbVenues tbVenues = tbVenuesService.getById(channelId);
         TbCarVisitRecord tbCarVisitRecord = new TbCarVisitRecord();
-        tbCarVisitRecord.setCarNo(carNo)
+        tbCarVisitRecord.setCarNo(carNo).setAllowPass(allowPass)
                 .setChannelId(tbGateTerminal.getVenuesId())
                 .setChannel(tbVenues.getName()).setDirection(direction)
                 .setVisitTime(now).setUpdateTime(now).setCreateTime(now).setRecordType(2);
         TbCarFiling carFiling = tbCarFilingService.findByCarNo(carNo);
         if (carFiling != null) {
-            TbDept tbDept=tbDeptService.getById(carFiling.getDeptId());
+            TbDept tbDept = tbDeptService.getById(carFiling.getDeptId());
             tbCarVisitRecord.setDriverName(carFiling.getDriverName()).setDeptId(carFiling.getDeptId()).setDeptName(tbDept.getName())
                     .setDriverIdCard(carFiling.getDriverIdCard()).setType(carFiling.getType())
                     .setDriverContact(carFiling.getDriverContact());
         }
         tbCarVisitRecordService.save(tbCarVisitRecord);
         taskService.addTask(new GateTerminalBase64ToImage(RandomUtil.randomNumbers(5), 1423, tbCarVisitRecord.getId(), base64Image));
+        return tbCarVisitRecord;
     }
 
 
-    private void cacheResult(String carNo, String now, Long venuesId,Long terminalId) {
+    private void cacheResult(String carNo, String now, Long venuesId, Long terminalId,Long recordId) {
         TbCarBlack tbCarBlack = tbCarBlackService.findByCarNo(carNo, now);
         //是否在黑名单上
         if (tbCarBlack != null) {
-            log.error("黑名单车辆:{}",carNo);
-            RedisUtil.set("result:" + venuesId, "0");
+            log.error("黑名单车辆:{}", carNo);
             return;
         }
         TbCarFiling tbCarFiling = tbCarFilingService.findByCarNo(carNo);
         //是否备案
         if (tbCarFiling == null) {
-            log.error("车辆未备案:{}",carNo);
-            //没备案
-            RedisUtil.set("result:" + venuesId, "0");
+            log.error("车辆未备案:{}", carNo);
             return;
         }
         //备案车,如果属于的组织只需要满足一个条件的直接放行
         Long deptId = tbCarFiling.getDeptId();
         TbDept tbDept = tbDeptService.getById(deptId);
-        if (TbDept.PassTypeEnum.ONE.getType().equals(tbDept.getPassType())){
-            log.error("组织满足条件二,直接放行:{}",carNo);
+        if (TbDept.PassTypeEnum.ONE.getType().equals(tbDept.getPassType())) {
+            log.error("组织满足条件二,直接放行:{}", carNo);
             try {
                 open(terminalId);
+                tbCarVisitRecordService.updatePass(recordId);
             } catch (Exception e) {
-                log.error("开闸失败:{}",e.getMessage());
+                log.error("开闸失败:{}", e.getMessage());
             }
         }
-        RedisUtil.set("result:" + venuesId, "1");
+        RedisUtil.set("result:" + venuesId, terminalId + "");
+        RedisUtil.set("record:" + venuesId, recordId + "");
     }
 
     public List<TbGateTerminal> findByVenuesId(Long venuesId) {
-        QueryWrapper<TbGateTerminal>ew=new QueryWrapper<>();
-        ew.eq("venues_id",venuesId);
+        QueryWrapper<TbGateTerminal> ew = new QueryWrapper<>();
+        ew.eq("venues_id", venuesId);
         return list(ew);
     }
 }

+ 9 - 3
sp-core/src/main/java/com/pj/project/tb_manager/TbManager.java

@@ -38,6 +38,9 @@ public class TbManager extends Model<TbManager> implements Serializable {
     public static final String PERMISSION_CODE_ADD = "tb-manager-add";
     public static final String PERMISSION_CODE_DEL = "tb-manager-del";
     public static final String PERMISSION_CODE_EDIT = "tb-manager-edit";
+    public static final String PERMISSION_ALARM_PERSON_ADD = "tb-alarm-person-add";
+    public static final String PERMISSION_ALARM_PERSON_EDIT = "tb-alarm-person-edit";
+    public static final String PERMISSION_ALARM_PERSON_DEL = "tb-alarm-person-del";
 
 
 	// ---------- 表中字段 ----------
@@ -60,7 +63,7 @@ public class TbManager extends Model<TbManager> implements Serializable {
 	/**
 	 * 部门ID 
 	 */
-	private String deptId;
+	private Long deptId;
     private String deptName;
 
 	/**
@@ -71,7 +74,7 @@ public class TbManager extends Model<TbManager> implements Serializable {
 	/**
 	 * 场所ID 
 	 */
-	private String venuesId;
+	private Long venuesId;
 
 	/**
 	 * 值班地点 
@@ -111,9 +114,12 @@ public class TbManager extends Model<TbManager> implements Serializable {
 	/**
 	 * 更新人 
 	 */
-	private String updateBy;	
+	private String updateBy;
+	private Integer alarm=0;
 
 
+	@TableField(exist = false)
+	private String openid;
 
 
 

+ 15 - 11
sp-core/src/main/java/com/pj/project/tb_manager/TbManagerMapper.java

@@ -5,24 +5,28 @@ 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.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
 /**
-* Mapper: tb_manager -- 防疫人员
-* @author qzyReal
-*/
+ * Mapper: tb_manager -- 防疫人员
+ *
+ * @author qzyReal
+ */
 
 @Mapper
 @Repository
-public interface TbManagerMapper extends BaseMapper <TbManager> {
+public interface TbManagerMapper extends BaseMapper<TbManager> {
 
-/**
-* 查集合 - 根据条件(参数为空时代表忽略指定条件)
-* @param so 参数集合
-* @return 数据列表
-*/
-List<TbManager> getList(SoMap so);
+    /**
+     * 查集合 - 根据条件(参数为空时代表忽略指定条件)
+     *
+     * @param so 参数集合
+     * @return 数据列表
+     */
+    List<TbManager> getList(SoMap so);
 
 
+    List<TbManager> findAlarmPersonByVenuesId(@Param("venuesId") Long venuesId);
 }

+ 72 - 70
sp-core/src/main/java/com/pj/project/tb_manager/TbManagerMapper.xml

@@ -3,81 +3,83 @@
 <mapper namespace="com.pj.project.tb_manager.TbManagerMapper">
 
 
-	<!-- ================================== 查询相关 ================================== -->
-			<!-- select id, name, phone, dept_id, position, venues_id, venues_name, work_start_time, work_end_time, remark, create_time, create_by, update_time, update_by from tb_manager  -->
-
-		<!-- 通用映射:手动模式 -->
-		<resultMap id="model" type="com.pj.project.tb_manager.TbManager">
-				<result property="id" column="id" />
-				<result property="name" column="name" />
-				<result property="phone" column="phone" />
-				<result property="deptId" column="dept_id" />
-				<result property="position" column="position" />
-				<result property="venuesId" column="venues_id" />
-				<result property="venuesName" column="venues_name" />
-				<result property="workStartTime" column="work_start_time" />
-				<result property="workEndTime" column="work_end_time" />
-				<result property="remark" column="remark" />
-				<result property="createTime" column="create_time" />
-				<result property="createBy" column="create_by" />
-				<result property="updateTime" column="update_time" />
-				<result property="updateBy" column="update_by" />
-		</resultMap>
-
-	<!-- 公共查询sql片段 -->
-	<sql id="select_sql">
-		select *
+    <!-- ================================== 查询相关 ================================== -->
+    <!-- select id, name, phone, dept_id, position, venues_id, venues_name, work_start_time, work_end_time, remark, create_time, create_by, update_time, update_by from tb_manager  -->
+
+    <!-- 通用映射:手动模式 -->
+    <resultMap id="model" type="com.pj.project.tb_manager.TbManager">
+        <result property="id" column="id"/>
+        <result property="name" column="name"/>
+        <result property="phone" column="phone"/>
+        <result property="deptId" column="dept_id"/>
+        <result property="position" column="position"/>
+        <result property="venuesId" column="venues_id"/>
+        <result property="venuesName" column="venues_name"/>
+        <result property="workStartTime" column="work_start_time"/>
+        <result property="workEndTime" column="work_end_time"/>
+        <result property="remark" column="remark"/>
+        <result property="createTime" column="create_time"/>
+        <result property="createBy" column="create_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="updateBy" column="update_by"/>
+    </resultMap>
+
+    <!-- 公共查询sql片段 -->
+    <sql id="select_sql">
+		select *,(select  name from tb_dept where id=tb_manager.dept_id) as deptName,
+		(select name from tb_venues where id=tb_manager.venues_id) as venuesName
 		from tb_manager
 	</sql>
 
 
-
-	<!-- 查集合 - 根据条件(参数为空时代表忽略指定条件) [G] -->
-	<select id="getList" resultMap="model">
-		<include refid="select_sql"></include>
-		<where>
-						<if test=' this.has("id") '> and id = #{id} </if>
-			<if test=' this.has("name") '> and name = #{name} </if>
-			<if test=' this.has("phone") '> and phone = #{phone} </if>
-            <if test=' this.has("deptId") '> and dept_id in (${deptId}) </if>
-			<if test=' this.has("position") '> and position = #{position} </if>
-			<if test=' this.has("venuesId") '> and venues_id = #{venuesId} </if>
-			<if test=' this.has("venuesName") '> and venues_name = #{venuesName} </if>
-			<if test=' this.has("workStartTime") '> and work_start_time = #{workStartTime} </if>
-			<if test=' this.has("workEndTime") '> and work_end_time = #{workEndTime} </if>
-			<if test=' this.has("remark") '> and remark = #{remark} </if>
-			<if test=' this.has("createTime") '> and create_time = #{createTime} </if>
-			<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>
-		</where>
-		order by
-		<choose>
-						<when test='sortType == 1'> id desc </when>
-			<when test='sortType == 2'> name desc </when>
-			<when test='sortType == 3'> phone desc </when>
-			<when test='sortType == 4'> dept_id desc </when>
-			<when test='sortType == 5'> position desc </when>
-			<when test='sortType == 6'> venues_id desc </when>
-			<when test='sortType == 7'> venues_name desc </when>
-			<when test='sortType == 8'> work_start_time desc </when>
-			<when test='sortType == 9'> work_end_time desc </when>
-			<when test='sortType == 10'> remark desc </when>
-			<when test='sortType == 11'> create_time desc </when>
-			<when test='sortType == 12'> create_by desc </when>
-			<when test='sortType == 13'> update_time desc </when>
-			<when test='sortType == 14'> update_by desc </when>
-			<otherwise> id desc </otherwise>
-		</choose>
+    <!-- 查集合 - 根据条件(参数为空时代表忽略指定条件) [G] -->
+    <select id="getList" resultType="com.pj.project.tb_manager.TbManager">
+        <include refid="select_sql"></include>
+        <where>
+            <if test=' this.has("id") '>and id = #{id}</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>
+            <if test=' this.has("venuesId") '>and venues_id = #{venuesId}</if>
+            <if test=' this.has("venuesName") '>and venues_name = #{venuesName}</if>
+            <if test=' this.has("workStartTime") '>and work_start_time = #{workStartTime}</if>
+            <if test=' this.has("workEndTime") '>and work_end_time = #{workEndTime}</if>
+            <if test=' this.has("remark") '>and remark = #{remark}</if>
+            <if test=' this.has("createTime") '>and create_time = #{createTime}</if>
+            <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>
+        </where>
+        order by
+        <choose>
+            <when test='sortType == 1'>id desc</when>
+            <when test='sortType == 2'>name desc</when>
+            <when test='sortType == 3'>phone desc</when>
+            <when test='sortType == 4'>dept_id desc</when>
+            <when test='sortType == 5'>position desc</when>
+            <when test='sortType == 6'>venues_id desc</when>
+            <when test='sortType == 7'>venues_name desc</when>
+            <when test='sortType == 8'>work_start_time desc</when>
+            <when test='sortType == 9'>work_end_time desc</when>
+            <when test='sortType == 10'>remark desc</when>
+            <when test='sortType == 11'>create_time desc</when>
+            <when test='sortType == 12'>create_by desc</when>
+            <when test='sortType == 13'>update_time desc</when>
+            <when test='sortType == 14'>update_by desc</when>
+            <otherwise>id desc</otherwise>
+        </choose>
+    </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
 	</select>
 
 
-
-
-
-
-
-
-
-
 </mapper>

+ 112 - 29
sp-core/src/main/java/com/pj/project/tb_manager/TbManagerService.java

@@ -2,11 +2,18 @@ package com.pj.project.tb_manager;
 
 import java.util.Date;
 import java.util.List;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.pj.current.global.BusinessException;
 import com.pj.current.satoken.StpUserUtil;
+import com.pj.project.sp_admin.SpAdmin;
+import com.pj.project.sp_admin.SpAdminService;
 import com.pj.project.tb_dept.TbDept;
 import com.pj.project.tb_dept.TbDeptService;
+import com.pj.project.tb_mini_user.TbMiniUserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -16,46 +23,122 @@ import javax.annotation.Resource;
 
 /**
  * Service: tb_manager -- 防疫人员
- * @author qzyReal 
+ *
+ * @author qzyReal
  */
 @Service
 @Transactional(rollbackFor = Exception.class)
-public class TbManagerService extends ServiceImpl<TbManagerMapper, TbManager> implements IService<TbManager>{
+public class TbManagerService extends ServiceImpl<TbManagerMapper, TbManager> implements IService<TbManager> {
+
+    /**
+     * 底层 Mapper 对象
+     */
+    @Resource
+    TbManagerMapper tbManagerMapper;
 
-	/** 底层 Mapper 对象 */
-	@Resource
-	TbManagerMapper tbManagerMapper;
     @Resource
-    TbDeptService tbDeptService;
+    private SpAdminService spAdminService;
+    @Resource
+    private TbMiniUserService tbMiniUserService;
+
+
+    /**
+     * 增
+     */
+    public void add(TbManager t) {
+        Date now = new Date();
+        t.setCreateTime(now).setUpdateTime(now)
+                .setCreateBy(StpUserUtil.getAdminName())
+                .setUpdateBy(StpUserUtil.getAdminName());
+        TbManager db = findByPhone(t.getPhone());
+        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) {
+        QueryWrapper<TbManager> ew = new QueryWrapper<>();
+        ew.lambda().eq(TbManager::getPhone, phone);
+        return getOne(ew);
+    }
 
+    /**
+     * 删
+     */
+    public void delete(Long id) {
+      TbManager tbManager=  this.getById(id);
+      spAdminService.removeByPhone(tbManager.getPhone());
+      tbMiniUserService.removeByPhone(tbManager.getPhone());
+        this.removeById(id);
+    }
 
+    /**
+     * 改
+     */
+    public void update(TbManager t) {
+        t.setUpdateTime(new Date()).setUpdateBy(StpUserUtil.getAdminName());
+        TbManager db = findByPhone(t.getPhone());
+        if (db != null && t.getId().longValue() != db.getId().longValue()) {
+            throw new BusinessException("手机号被占用");
+        }
+        this.updateById(t);
+    }
 
-	/** 增 */
-	void add(TbManager t){
-        t.setCreateTime(new Date());
-	    this.save( t);
-	}
+    /**
+     * 查
+     */
+    public TbManager getById(Long id) {
+        return super.getById(id);
+    }
 
-	/** 删 */
-	void delete(Long id){
-	this.removeById(id);
-	}
+    /**
+     * 查集合 - 根据条件(参数为空时代表忽略指定条件)
+     */
+    public List<TbManager> getList(SoMap so) {
+        return tbManagerMapper.getList(so);
+    }
 
-	/** 改 */
-	void update(TbManager t){
-	    t.setUpdateTime(new Date());
-	    this.updateById(t);
-	}
 
-	/** 查 */
-	TbManager getById(Long id){
-	return super.getById(id);
-	}
+    /**
+     * 添加预警对象
+     *
+     * @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);
+    }
 
-	/** 查集合 - 根据条件(参数为空时代表忽略指定条件) */  
-	List<TbManager> getList(SoMap so) { 
-		return tbManagerMapper.getList(so);	
-	}
-	
+    public List<TbManager> findAlarmPersonByVenuesId(Long venuesId) {
+        return   tbManagerMapper.findAlarmPersonByVenuesId(venuesId);
 
+    }
 }

+ 14 - 12
sp-core/src/main/java/com/pj/project/tb_mini_user/TbMiniUserMapper.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_mini_user -- h5端用户
-* @author qzyReal
-*/
+ * Mapper: tb_mini_user -- h5端用户
+ *
+ * @author qzyReal
+ */
 
 @Mapper
 @Repository
-public interface TbMiniUserMapper extends BaseMapper <TbMiniUser> {
-
-/**
-* 查集合 - 根据条件(参数为空时代表忽略指定条件)
-* @param so 参数集合
-* @return 数据列表
-*/
-List<TbMiniUser> getList(SoMap so);
+public interface TbMiniUserMapper extends BaseMapper<TbMiniUser> {
+
+    /**
+     * 查集合 - 根据条件(参数为空时代表忽略指定条件)
+     *
+     * @param so 参数集合
+     * @return 数据列表
+     */
+    List<TbMiniUser> getList(SoMap so);
 
 
 }

+ 74 - 44
sp-core/src/main/java/com/pj/project/tb_mini_user/TbMiniUserService.java

@@ -2,9 +2,11 @@ package com.pj.project.tb_mini_user;
 
 import java.util.List;
 
+import cn.dev33.satoken.stp.StpUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.pj.current.satoken.StpUserUtil;
 import com.pj.utils.sg.AjaxJson;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -15,50 +17,78 @@ import javax.annotation.Resource;
 
 /**
  * Service: tb_mini_user -- h5端用户
- * @author qzyReal 
+ *
+ * @author qzyReal
  */
 @Service
-public class TbMiniUserService extends ServiceImpl<TbMiniUserMapper, TbMiniUser> implements IService<TbMiniUser>{
-
-	/** 底层 Mapper 对象 */
-	@Autowired
-	TbMiniUserMapper tbMiniUserMapper;
-
-
-
-
-	/** 增 */
-	public void add(TbMiniUser t){
-	this.save( t);
-	}
-
-	/** 删 */
-	public void delete(Long id){
-	this.removeById(id);
-	}
-
-	/** 改 */
-	public void update(TbMiniUser t){
-	this.updateById(t);
-	}
-
-	/** 查 */
-	public TbMiniUser getById(Long id){
-	return super.getById(id);
-	}
-
-	/** 查集合 - 根据条件(参数为空时代表忽略指定条件) */
-	public List<TbMiniUser> getList(SoMap so) {
-		return tbMiniUserMapper.getList(so);	
-	}
-
-
-	public TbMiniUser findByOpenid(String openid) {
-		QueryWrapper<TbMiniUser>ew=new QueryWrapper<>();
-		ew.eq("openid",openid);
-		return getOne(ew);
-	}
-
-
-
+public class TbMiniUserService extends ServiceImpl<TbMiniUserMapper, TbMiniUser> implements IService<TbMiniUser> {
+
+    /**
+     * 底层 Mapper 对象
+     */
+    @Autowired
+    TbMiniUserMapper tbMiniUserMapper;
+
+
+    /**
+     * 增
+     */
+    public void add(TbMiniUser t) {
+        this.save(t);
+    }
+
+    /**
+     * 删
+     */
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+    /**
+     * 改
+     */
+    public void update(TbMiniUser t) {
+        this.updateById(t);
+    }
+
+    /**
+     * 查
+     */
+    public TbMiniUser getById(Long id) {
+        return super.getById(id);
+    }
+
+    /**
+     * 查集合 - 根据条件(参数为空时代表忽略指定条件)
+     */
+    public List<TbMiniUser> getList(SoMap so) {
+        return tbMiniUserMapper.getList(so);
+    }
+
+
+    public TbMiniUser findByOpenid(String openid) {
+        QueryWrapper<TbMiniUser> ew = new QueryWrapper<>();
+        ew.lambda().eq(TbMiniUser::getOpenid, openid);
+        return getOne(ew);
+    }
+
+
+    public void removeByPhone(String phone) {
+        QueryWrapper<TbMiniUser> ew = new QueryWrapper<>();
+        ew.lambda().eq(TbMiniUser::getPhone, phone);
+        this.remove(ew);
+    }
+
+    public AjaxJson loginByOpenid(String openid) {
+        TbMiniUser tbMiniUser = this.findByOpenid(openid);
+        if (tbMiniUser == null) {
+            return AjaxJson.getError("用户不存在");
+        }
+        StpUtil.login(tbMiniUser.getSpAdminId());
+        tbMiniUser.setToken(StpUtil.getTokenValue());
+        StpUserUtil.setDeptId(tbMiniUser.getDeptId() + "");
+        StpUserUtil.setAdmin(tbMiniUser.getName(), tbMiniUser.getPhone());
+        StpUserUtil.setMiniUserId(tbMiniUser.getId());
+        return AjaxJson.getSuccessData(tbMiniUser);
+    }
 }

+ 30 - 2
sp-core/src/main/java/com/pj/project/tb_person_black/TbPersonBlackService.java

@@ -1,5 +1,7 @@
 package com.pj.project.tb_person_black;
 
+import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.util.Collections;
 import java.util.Date;
 import java.util.List;
@@ -60,8 +62,19 @@ public class TbPersonBlackService extends ServiceImpl<TbPersonBlackMapper, TbPer
         String loginId = StpUtil.getLoginIdAsString();
         t.setCreateTime(now).setCreateBy(loginId).setUpdateBy(loginId).setUpdateTime(now);
         this.save(t);
-        // todo 下发黑名单信息
-        issued(t);
+        handlerIssued(t);
+    }
+
+    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)) {
+            issued(t);
+        }
+        if (now.isAfter(endTime)){
+            deleteTerminalBlack(t);
+        }
     }
 
     /**
@@ -96,6 +109,7 @@ public class TbPersonBlackService extends ServiceImpl<TbPersonBlackMapper, TbPer
             deleteTerminalBlack(db);
             issued(t);
         }
+        handlerIssued(t);
         this.updateById(t);
     }
 
@@ -189,4 +203,18 @@ public class TbPersonBlackService extends ServiceImpl<TbPersonBlackMapper, TbPer
         ew.eq("id_card", idCard);
         return getOne(ew);
     }
+
+    public List<TbPersonBlack> finRecordStartTimeInTimes(String bTime, String eTime) {
+        QueryWrapper<TbPersonBlack> ew = new QueryWrapper<>();
+        ew.ge("date_format('start_time','%Y-%m-%d %h:%s')", bTime)
+                .le("date_format('start_time','%Y-%m-%d %h:%s')", eTime);
+        return list(ew);
+    }
+
+    public List<TbPersonBlack> finRecordEndTimeInTimes(String bTime, String eTime) {
+        QueryWrapper<TbPersonBlack> ew = new QueryWrapper<>();
+        ew.ge("date_format('end_time','%Y-%m-%d %h:%s')", bTime)
+                .le("date_format('end_time','%Y-%m-%d %h:%s')", eTime);
+        return list(ew);
+    }
 }

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

@@ -0,0 +1,36 @@
+package com.pj.project.tb_person_black.task;
+
+import com.pj.project.tb_person_black.TbPersonBlack;
+import com.pj.project.tb_person_black.TbPersonBlackService;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.springframework.scheduling.annotation.Scheduled;
+
+import javax.annotation.Resource;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+
+@Data
+@Accessors(chain = true)
+public class PersonBlackTask implements Serializable {
+
+    @Resource
+    private TbPersonBlackService tbPersonBlackService;
+
+    @Scheduled(fixedRate = 45000)
+    public void task() {
+        //提前5分钟下发黑名单
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm");
+        LocalDateTime fiveMinutes = LocalDateTime.now().minusMinutes(5);
+        LocalDateTime sixMinutes = fiveMinutes.minusMinutes(1);
+        List<TbPersonBlack> personBlacks = tbPersonBlackService.finRecordStartTimeInTimes(sixMinutes.format(formatter), fiveMinutes.format(formatter));
+        personBlacks.forEach(tbPersonBlack -> {
+            tbPersonBlackService.issued(tbPersonBlack);
+        });
+        //5分钟之后删除
+        List<TbPersonBlack> deleteList = tbPersonBlackService.finRecordEndTimeInTimes(sixMinutes.format(formatter), fiveMinutes.format(formatter));
+        deleteList.forEach(tbPersonBlack -> tbPersonBlackService.deleteTerminalBlack(tbPersonBlack));
+    }
+}

+ 2 - 0
sp-core/src/main/java/com/pj/project/tb_person_visit_record/TbPersonVisitRecord.java

@@ -136,6 +136,8 @@ public class TbPersonVisitRecord extends Model<TbPersonVisitRecord> implements S
     private Integer IsSolve;
 
     private String way;
+    private String solveBy;
+    private Date solveTime;
 
     @TableField(exist = false)
     private String idCadStr;

+ 14 - 12
sp-core/src/main/java/com/pj/project/tb_person_visit_record/TbPersonVisitRecordMapper.java

@@ -5,26 +5,28 @@ 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.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
 /**
-* Mapper: tb_person_visit_record -- 人员出入记录
-* @author qzyReal
-*/
+ * Mapper: tb_person_visit_record -- 人员出入记录
+ *
+ * @author qzyReal
+ */
 
 @Mapper
 @Repository
-public interface TbPersonVisitRecordMapper extends BaseMapper <TbPersonVisitRecord> {
+public interface TbPersonVisitRecordMapper extends BaseMapper<TbPersonVisitRecord> {
 
-/**
-* 查集合 - 根据条件(参数为空时代表忽略指定条件)
-* @param so 参数集合
-* @return 数据列表
-*/
-List<TbPersonVisitRecord> getList(SoMap so);
+    /**
+     * 查集合 - 根据条件(参数为空时代表忽略指定条件)
+     *
+     * @param so 参数集合
+     * @return 数据列表
+     */
+    List<TbPersonVisitRecord> getList(SoMap so);
 
 
-	long getMonitor(@Param("bDate") String bDate, @Param("eDate")String eDate,@Param("healthStatus")int healthStatus);
+    long getMonitor(@Param("bDate") String bDate, @Param("eDate") String eDate, @Param("healthStatus") int healthStatus);
 }

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

@@ -21,6 +21,7 @@
 			<if test=' this.has("deptName") '> and dept_name = #{deptName} </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("allowPass") '> and allow_pass = #{allowPass} </if>
 			<if test=' this.has("channel") '> and channel = #{channel} </if>
 			<if test=' this.has("venues") '> and venues = #{venues} </if>
 			<if test=' this.has("temperature") '> and temperature = #{temperature} </if>

+ 2 - 1
sp-core/src/main/java/com/pj/project/tb_person_visit_record/TbPersonVisitRecordService.java

@@ -24,6 +24,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.pj.current.config.SystemObject;
 import com.pj.current.global.BusinessException;
+import com.pj.current.satoken.StpUserUtil;
 import com.pj.project.tb_venues.TbVenues;
 import com.pj.project.tb_venues.TbVenuesService;
 import com.pj.project4sp.uploadfile.UploadConfig;
@@ -167,7 +168,7 @@ public class TbPersonVisitRecordService extends ServiceImpl<TbPersonVisitRecordM
         String id = so.getString("id");
         String way = so.getString("way");
         TbPersonVisitRecord t = getById(id);
-        t.setWay(way).setIsSolve(2);
+        t.setWay(way).setIsSolve(2).setSolveTime(new Date()).setSolveBy(StpUserUtil.getAdminName());
         this.updateById(t);
     }
 

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

@@ -271,6 +271,7 @@ public class TbTerminalService extends ServiceImpl<TbTerminalMapper, TbTerminal>
      * @param id
      */
     public void open(Long id) {
+        log.info("==========远程开闸============");
         TbTerminal tbTerminal = this.getById(id);
         if (StrUtil.equals(tbTerminal.getState(),TbTerminal.StateType.OFFLINE.getState())){
             throw new BusinessException("设备已离线");

+ 9 - 5
sp-core/src/main/java/com/pj/project/tb_terminal/task/CommandDelayTask.java

@@ -1,7 +1,11 @@
 package com.pj.project.tb_terminal.task;
 
+import cn.hutool.core.util.StrUtil;
 import cn.hutool.extra.spring.SpringUtil;
 
+import com.alibaba.fastjson.JSONObject;
+import com.pj.current.config.MyConfig;
+import com.pj.current.netty.command.constants.CommandType;
 import com.pj.current.task.Task;
 
 import com.pj.utils.cache.RedisUtil;
@@ -12,25 +16,25 @@ import lombok.extern.slf4j.Slf4j;
 public class CommandDelayTask extends Task {
 
     private ChannelHandlerContext cx;
-    private String content;
+    private String command;
     private String msgId;
 
 
 
-    public CommandDelayTask(String id, long delayInMilliseconds, ChannelHandlerContext cx, String content, String msgId) {
+    public CommandDelayTask(String id, long delayInMilliseconds, ChannelHandlerContext cx, String command, String msgId) {
         super(id, delayInMilliseconds);
         this.cx = cx;
-        this.content = content;
+        this.command = command;
         this.msgId = msgId;
 
     }
 
     @Override
     public void run() {
-        log.info("延迟发送命令:{}",content);
+        log.info("延迟发送命令:{}",command);
         String channelId = cx.channel().id().asShortText();
         RedisUtil.setBySecond(channelId, msgId, 20);
-        cx.write(content);
+        cx.write(command);
         cx.flush();
     }
 }

+ 26 - 0
sp-core/src/main/java/com/pj/project/tb_terminal/task/FinishCommandTask.java

@@ -0,0 +1,26 @@
+package com.pj.project.tb_terminal.task;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.pj.current.netty.command.constants.CommandType;
+import com.pj.current.task.Task;
+import io.netty.channel.ChannelHandlerContext;
+
+import java.io.Serializable;
+
+public class FinishCommandTask extends Task {
+    private ChannelHandlerContext cx;
+
+    public FinishCommandTask(String id, long delayInMilliseconds,ChannelHandlerContext cx) {
+        super(id, delayInMilliseconds);
+        this.cx=cx;
+    }
+
+    @Override
+    public void run() {
+        JSONObject finishCommand=new JSONObject();
+        finishCommand.put("funcId", CommandType.ISSUED_FINISH_COMMAND.getFuncId());
+        cx.write(finishCommand.toJSONString());
+        cx.flush();
+    }
+}

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

@@ -5,9 +5,11 @@ import java.util.Date;
 
 import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.AllArgsConstructor;
 import lombok.EqualsAndHashCode;
 
 import lombok.Data;
+import lombok.Getter;
 import lombok.experimental.Accessors;
 
 /**
@@ -88,5 +90,14 @@ public class TbVenues extends Model<TbVenues> implements Serializable {
     @TableField(exist = false)
     private String parentName;
 
+    @Getter
+    @AllArgsConstructor
+    public static enum TypeEnum{
+        CAR_CHANNEL(2,"车行通道"),
+        PERSON_CHANNEL(1,"人行通道");
+        private Integer type;
+        private String desc;
+    }
+
 
 }

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

@@ -3,46 +3,46 @@
 <mapper namespace="com.pj.project.tb_venues.TbVenuesMapper">
 
 
-	<!-- ================================== 查询相关 ================================== -->
-
-		<!-- 通用映射:手动模式 -->
-		<resultMap id="model" type="com.pj.project.tb_venues.TbVenues">
-				<result property="id" column="id" />
-				<result property="pId" column="p_id" />
-				<result property="name" column="name" />
-				<result property="createTime" column="create_time" />
-				<result property="createBy" column="create_by" />
-				<result property="updateTime" column="update_time" />
-				<result property="updateBy" column="update_by" />
-		</resultMap>
-
-	<!-- 公共查询sql片段 -->
-	<sql id="select_sql">
+    <!-- ================================== 查询相关 ================================== -->
+
+    <!-- 通用映射:手动模式 -->
+    <resultMap id="model" type="com.pj.project.tb_venues.TbVenues">
+        <result property="id" column="id"/>
+        <result property="pId" column="p_id"/>
+        <result property="name" column="name"/>
+        <result property="createTime" column="create_time"/>
+        <result property="createBy" column="create_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="updateBy" column="update_by"/>
+    </resultMap>
+
+    <!-- 公共查询sql片段 -->
+    <sql id="select_sql">
 		select *
 		from tb_venues
 	</sql>
 
 
-
-	<!-- 查集合 - 根据条件(参数为空时代表忽略指定条件) [G] -->
-	<select id="getList" resultType="com.pj.project.tb_venues.TbVenues">
-		<include refid="select_sql"></include>
-		<where>
-			<if test=' this.has("name") '> and name like concat('%', #{name},'%') and p_id=-1 </if>
-		</where>
-		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>
-			<when test='sortType == 7'> create_by desc </when>
-			<when test='sortType == 8'> update_time desc </when>
-			<when test='sortType == 9'> update_by desc </when>
-			<otherwise> id asc </otherwise>
-		</choose>
-	</select>
+    <!-- 查集合 - 根据条件(参数为空时代表忽略指定条件) [G] -->
+    <select id="getList" resultType="com.pj.project.tb_venues.TbVenues">
+        <include refid="select_sql"></include>
+        <where>
+            <if test=' this.has("name") '>and name like concat('%', #{name},'%') and p_id=-1</if>
+            <if test=' this.has("pId") '>and p_id =#{pId}</if>
+        </where>
+        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>
+            <when test='sortType == 7'>create_by desc</when>
+            <when test='sortType == 8'>update_time desc</when>
+            <when test='sortType == 9'>update_by desc</when>
+            <otherwise>id asc</otherwise>
+        </choose>
+    </select>
     <select id="getInnerList" resultType="com.pj.project.tb_venues.TbVenues">
 		SELECT b.name,b.id,a.name as parentName from tb_venues a INNER JOIN tb_venues b on a.id=b.p_id
 	</select>

+ 1 - 0
sp-core/src/main/java/com/pj/project/wx/WxService.java

@@ -96,4 +96,5 @@ public class WxService {
 
     }
 
+
 }

+ 4 - 0
sp-core/src/main/java/com/pj/project/wx/task/TokenTask.java

@@ -22,6 +22,10 @@ public class TokenTask {
     @Scheduled(fixedRate = 6000000)
     @Async
     public void task() {
+        if (!wxConfig.isEnable()) {
+            log.error("===============:{}","微信未启用");
+            return;
+        }
         String tokenKey = wxConfig.getAccessTokenKey();
         String ticketKey = wxConfig.getJsApiTicketKey();
         String tokenUrl = wxConfig.getAccessTokenUrl();

+ 5 - 1
sp-core/src/main/java/com/pj/project4sp/spcfg/SpCfgUtil.java

@@ -72,7 +72,11 @@ public class SpCfgUtil {
 	}
 	// 获取配置信息:备案审核 1审核 2不审核
 	public static String getMinTemperature() {
-		return SpCfgUtil.getServerCfg("minTemperature", "37");
+		return SpCfgUtil.getServerCfg("minTemperature", "37.5");
+	}
+	// 获取配置信息:备案审核 1审核 2不审核
+	public static String getAlarmConfig() {
+		return SpCfgUtil.getServerCfg("sendAlarm", "1");
 	}
 	
 	// ====================== 获取指定配置 ========================== 

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

@@ -45,7 +45,7 @@ spring:
     # 项目自定义配置
     myconfig:
         # 本项目部署到的服务器域名(文件上传等等模块  要用到)
-        domain: http://192.168.1.3:8099
+        domain: http://192.168.1.4:8099
         ip: 192.168.1.4
         heart-port: 9999
         command-port: 8888
@@ -53,6 +53,7 @@ spring:
         heart-prefix: "heart:"
         gate-port: 8131
 wx:
+    enable: true
     app-id: wxd40a34141872bf0c
     app-secret: 2e6a69fab1fbab60369ebd21b0882f3e
     access-token-key: wechat:base_token_key
@@ -62,4 +63,7 @@ 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://192.168.1.3:8080/h5
+    domain: https://127.0.0.1:8080/h5
+    report-detail: ${wx.domain}/pages/detail/report-detail
+    temperature-error-template: WtTlUMCtJp6dSPXLJg_RdsmX4811aDkEkHuX0Txfgfg
+    health-status-template: IEzVk2HCvctwXZzaGaElWQpRskolYlZSahTZXbJhuVM