Bladeren bron

修改提醒为截止时间前10分钟提醒。

tomatozq 5 jaren geleden
bovenliggende
commit
233f5bcf8f
1 gewijzigde bestanden met toevoegingen van 33 en 15 verwijderingen
  1. 33 15
      web/src/main/java/com/jpsoft/smart/schduled/UnmeasureTemperatureAlarmTask.java

+ 33 - 15
web/src/main/java/com/jpsoft/smart/schduled/UnmeasureTemperatureAlarmTask.java

@@ -64,14 +64,18 @@ public class UnmeasureTemperatureAlarmTask {
                 DateTime startTime = new DateTime(sdf.parse(date + " " + alarmConfig.getStartTime()));
                 DateTime endTime = new DateTime(sdf.parse(date + " " + alarmConfig.getEndTime()));
 
-                //截止时间前10分钟发提醒
-                endTime = endTime.plusMinutes(-10);
+                DateTime alarmTime = endTime.plusMinutes(-10);
 
+                //开始时间
                 if (weekdays.indexOf(String.valueOf(weekday)) != -1) {
-                    if (now.compareTo(endTime)>0 && now.compareTo(endTime.plusMinutes(intervalMinute))<0) {
-                            //todo 进行通知
-                            notice(alarmConfig.getCompanyId(),startTime,endTime);
-                            break;
+                    if (now.compareTo(alarmTime)>=0 && now.compareTo(alarmTime.plusMinutes(intervalMinute))<0) {
+                            //todo 通知个人
+                            noticePerson(alarmConfig.getCompanyId(),startTime,endTime);
+                    }
+
+                    if (now.compareTo(endTime)>=0 && now.compareTo(endTime.plusMinutes(intervalMinute))<0) {
+                        //todo 通知管理人员
+                        noticeManager(alarmConfig.getCompanyId(),startTime,endTime);
                     }
                 }
             }
@@ -81,7 +85,28 @@ public class UnmeasureTemperatureAlarmTask {
         }
     }
 
-    private void notice(String companyId, DateTime startTime, DateTime endTime) {
+    private void noticePerson(String companyId, DateTime startTime, DateTime endTime) {
+        CompanyInfo companyInfo = companyInfoService.get(companyId);
+
+        //todo 查询该单位当前时间段是否有人员未测体温
+        List<PersonInfo> unmeasuredList = personDeviceFilterLogService.queryUnmeasuredList(companyId,startTime.toDate(),endTime.toDate());
+
+        if (unmeasuredList.size()==0){
+            return;
+        }
+
+        //todo 给未测量人推送微信通知
+        for (PersonInfo personInfo : unmeasuredList) {
+            if (StringUtils.isNotEmpty(personInfo.getOpenId())) {
+                String message = "尊敬的用户:" + personInfo.getName()
+                        + ",请在" + startTime.toString("HH:mm") + "至" + endTime.toString("HH:mm") + "时间内测量体温!";
+
+                WechatMessageUtil.sendUnmeasureAlarmInfo(personInfo.getOpenId(), companyInfo.getName(), message, wxConfig.getAppId(), wxConfig.getAppSecret());
+            }
+        }
+    }
+
+    private void noticeManager(String companyId, DateTime startTime, DateTime endTime) {
         CompanyInfo companyInfo = companyInfoService.get(companyId);
 
         //todo 查询该单位当前时间段是否有人员未测体温
@@ -94,7 +119,7 @@ public class UnmeasureTemperatureAlarmTask {
         StringBuilder sb = new StringBuilder();
         int total = 0;
 
-        //todo 给未测量人推送微信通知
+        //todo 汇总未测温人
         for (PersonInfo personInfo : unmeasuredList) {
             if (sb.length() != 0) {
                 sb.append(",");
@@ -102,13 +127,6 @@ public class UnmeasureTemperatureAlarmTask {
 
             sb.append(personInfo.getName());
 
-            if (StringUtils.isNotEmpty(personInfo.getOpenId())) {
-                String message = "尊敬的用户:" + personInfo.getName()
-                        + ",您未在" + startTime.toString("HH:mm") + "至" + endTime.toString("HH:mm") + "测量体温,请及时补测!";
-
-                WechatMessageUtil.sendUnmeasureAlarmInfo(personInfo.getOpenId(), companyInfo.getName(), message, wxConfig.getAppId(), wxConfig.getAppSecret());
-            }
-
             total++;
         }