Explorar el Código

Merge remote-tracking branch 'origin/dev' into dev

fanxp hace 1 año
padre
commit
6afaa82e0b

+ 2 - 1
src/main/java/com/xjrsoft/module/hikvision/util/DataUtil.java

@@ -422,7 +422,8 @@ public class DataUtil {
             paramJson.addProperty("personType", 1);
 
             int gender;
-            switch (objectMap.get("gender").toString()) {
+            String genderData = objectMap.get("gender") == null ? "" : objectMap.get("gender").toString();
+            switch (genderData) {
                 case "SB10001":
                     gender = 1;
                     break;

+ 29 - 26
src/main/java/com/xjrsoft/module/job/AttenDanceWarnNoticeTask.java

@@ -1,10 +1,11 @@
 package com.xjrsoft.module.job;
 
 import cn.hutool.core.util.IdUtil;
+import cn.hutool.db.Entity;
 import cn.hutool.extra.spring.SpringUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
 import com.xjrsoft.common.utils.WeChatUtil;
 import com.xjrsoft.module.attendance.entity.AttendanceRuleDetails;
 import com.xjrsoft.module.attendance.entity.AttendanceUserRelation;
@@ -13,8 +14,6 @@ import com.xjrsoft.module.attendance.service.IAttendanceRuleCategoryService;
 import com.xjrsoft.module.concat.service.IXjrUserService;
 import com.xjrsoft.module.organization.dto.WeChatSendMessageDto;
 import com.xjrsoft.module.organization.service.IWeChatService;
-import com.xjrsoft.module.system.entity.WechatMessageLog;
-import com.xjrsoft.module.system.service.IWechatMessageLogService;
 import com.xjrsoft.module.teacher.entity.XjrUser;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -56,9 +55,6 @@ public class AttenDanceWarnNoticeTask {
     @Autowired
     private WeChatUtil weChatUtil;
 
-    @Autowired
-    private IWechatMessageLogService wechatMessageLogService;
-
     @Scheduled(cron = "0 */1 * * * ?")
     public void RefreshConnectionPool() {
         String active = SpringUtil.getActiveProfile();
@@ -101,17 +97,18 @@ public class AttenDanceWarnNoticeTask {
 
         //获取最近的时间
         LocalDateTime recentlyTime = getRecentlyTime(ruleDetailsList, now);
-        if(recentlyTime.getHour() != now.getHour() && Math.abs(recentlyTime.getMinute() - now.getMinute()) >= 2){
+        long minute = Math.abs(ChronoUnit.MINUTES.between(now, recentlyTime));
+        if(minute >= 1){
             log.info("未到时间,不进行推送");
             return;
         }
         String wechatTemplate = weChatUtil.getAttenDanceWarnTemplate();
-        List<WechatMessageLog> list = wechatMessageLogService.list(
-                new QueryWrapper<WechatMessageLog>().lambda()
-                        .select(WechatMessageLog.class, x -> VoToColumnUtil.fieldsToColumns(WechatMessageLog.class).contains(x.getProperty()))
-                        .eq(WechatMessageLog::getSendTime, recentlyTime)
-                        .eq(WechatMessageLog::getTemplateId, wechatTemplate)
-        );
+//        List<WechatMessageLog> list = wechatMessageLogService.list(
+//                new QueryWrapper<WechatMessageLog>().lambda()
+//                        .select(WechatMessageLog.class, x -> VoToColumnUtil.fieldsToColumns(WechatMessageLog.class).contains(x.getProperty()))
+//                        .eq(WechatMessageLog::getSendTime, recentlyTime)
+//                        .eq(WechatMessageLog::getTemplateId, wechatTemplate)
+//        );
 //        if(!list.isEmpty()){//已经推送过,不再进行推送
 //            return;
 //        }
@@ -121,10 +118,6 @@ public class AttenDanceWarnNoticeTask {
         //判断所有当前时间下,哪几条规则需要进行提醒
         Map<Long, Integer> ruleDetailsJudgeMap = judgeExecuteNotice(now, ruleDetailsList, recentlyTime);
 
-        WechatMessageLog messageLog = new WechatMessageLog();
-        messageLog.setTemplateId(wechatTemplate);
-        messageLog.setSendTime(recentlyTime);
-
         List<XjrUser> userList = getUserList(allTodyRule.keySet());
         for (XjrUser xjrUser : userList) {
             AttendanceRuleDetails ruleDetails = allTodyRule.get(xjrUser.getId());
@@ -173,9 +166,13 @@ public class AttenDanceWarnNoticeTask {
 
         }
 
-        messageLog.setCreateDate(new Date());
-        messageLog.setContent("消息推送人数:" + userList.size());
-        wechatMessageLogService.save(messageLog);
+        String table = "wechat_message_log";
+        Entity entity = Entity.create(table);
+        entity.set("content", "消息推送人数:" + userList.size());
+        entity.set("create_date", new Date());
+        entity.set("template_id", wechatTemplate);
+        entity.set("send_time", recentlyTime);
+        SqlRunnerAdapter.db().dynamicInsert(table, entity);
 
     }
 
@@ -193,18 +190,22 @@ public class AttenDanceWarnNoticeTask {
                 if(ruleDetails.getAmStartTime() != null){
                     LocalDateTime amStartTime = judgeTime.with(ruleDetails.getAmStartTime().toLocalTime());
                     Long amBetween = Math.abs(ChronoUnit.MINUTES.between(judgeTime, amStartTime));
-                    if(recentlyTime.isEqual(amStartTime.plusMinutes(- ruleDetails.getAgoMinutes())) && amBetween >= ruleDetails.getAgoMinutes() - 1 && amBetween <= ruleDetails.getAgoMinutes() + 1){//相差分钟数小于0
+                    if(ruleDetails.getAgoMinutes() != null && recentlyTime.isEqual(amStartTime.plusMinutes(- ruleDetails.getAgoMinutes()))
+                            && amBetween >= ruleDetails.getAgoMinutes() - 1 && amBetween <= ruleDetails.getAgoMinutes() + 1){//相差分钟数小于0
                         result.put(ruleDetails.getId(), 1);
-                    }else if(recentlyTime.isEqual(amStartTime.plusMinutes(ruleDetails.getOverMinutes())) && amBetween >= ruleDetails.getOverMinutes() - 1 && amBetween <= ruleDetails.getOverMinutes() + 1){
+                    }else if(ruleDetails.getOverMinutes() != null && recentlyTime.isEqual(amStartTime.plusMinutes(ruleDetails.getOverMinutes()))
+                            && amBetween >= ruleDetails.getOverMinutes() - 1 && amBetween <= ruleDetails.getOverMinutes() + 1){
                         result.put(ruleDetails.getId(), 2);
                     }
                 }
                 if(ruleDetails.getPmStartTime() != null){
                     LocalDateTime pmStartTime = judgeTime.with(ruleDetails.getPmStartTime().toLocalTime());
                     Long pmBetween = Math.abs(ChronoUnit.MINUTES.between(judgeTime, pmStartTime));
-                    if(recentlyTime.isEqual(pmStartTime.plusMinutes(- ruleDetails.getAgoMinutes())) && pmBetween >= ruleDetails.getAgoMinutes() - 1 && pmBetween <= ruleDetails.getAgoMinutes() + 1){//相差分钟数小于0
+                    if(ruleDetails.getAgoMinutes() != null && recentlyTime.isEqual(pmStartTime.plusMinutes(- ruleDetails.getAgoMinutes()))
+                            && pmBetween >= ruleDetails.getAgoMinutes() - 1 && pmBetween <= ruleDetails.getAgoMinutes() + 1){//相差分钟数小于0
                         result.put(ruleDetails.getId(), 1);
-                    }else if(recentlyTime.isEqual(pmStartTime.plusMinutes(ruleDetails.getOverMinutes())) && pmBetween >= ruleDetails.getOverMinutes() - 1 && pmBetween <= ruleDetails.getOverMinutes() + 1){
+                    }else if(ruleDetails.getOverMinutes() != null && recentlyTime.isEqual(pmStartTime.plusMinutes(ruleDetails.getOverMinutes()))
+                            && pmBetween >= ruleDetails.getOverMinutes() - 1 && pmBetween <= ruleDetails.getOverMinutes() + 1){
                         result.put(ruleDetails.getId(), 2);
                     }
                 }
@@ -212,9 +213,11 @@ public class AttenDanceWarnNoticeTask {
                 if(ruleDetails.getEveningStartTime() != null){
                     LocalDateTime eveningStartTime = judgeTime.with(ruleDetails.getEveningStartTime().toLocalTime());
                     Long eveningBetween = Math.abs(ChronoUnit.MINUTES.between(judgeTime, eveningStartTime));
-                    if(recentlyTime.isEqual(eveningStartTime.plusMinutes(- ruleDetails.getAgoMinutes())) && eveningBetween >= ruleDetails.getAgoMinutes() - 1 && eveningBetween <= ruleDetails.getAgoMinutes() + 1){//相差分钟数小于0
+                    if(ruleDetails.getAgoMinutes() != null && recentlyTime.isEqual(eveningStartTime.plusMinutes(- ruleDetails.getAgoMinutes()))
+                            && eveningBetween >= ruleDetails.getAgoMinutes() - 1 && eveningBetween <= ruleDetails.getAgoMinutes() + 1){//相差分钟数小于0
                         result.put(ruleDetails.getId(), 1);
-                    }else if(recentlyTime.isEqual(eveningStartTime.plusMinutes(ruleDetails.getOverMinutes())) && eveningBetween >= ruleDetails.getOverMinutes() - 1 && eveningBetween <= ruleDetails.getOverMinutes() + 1){
+                    }else if(ruleDetails.getOverMinutes() != null && recentlyTime.isEqual(eveningStartTime.plusMinutes(ruleDetails.getOverMinutes()))
+                            && eveningBetween >= ruleDetails.getOverMinutes() - 1 && eveningBetween <= ruleDetails.getOverMinutes() + 1){
                         result.put(ruleDetails.getId(), 2);
                     }
                 }

+ 6 - 4
src/main/java/com/xjrsoft/module/job/AttendanceMessageTask.java

@@ -137,7 +137,8 @@ public class AttendanceMessageTask {
                 characterKey = "character_string18";
                 //获取最近的时间
                 recentlyTime = getRecentlyTime(ruleDetails, now);
-                if(recentlyTime.getHour() != now.getHour() && Math.abs(recentlyTime.getMinute() - now.getMinute()) >= 2){
+                long minute = Math.abs(ChronoUnit.MINUTES.between(now, recentlyTime));
+                if(minute >= 1){
                     log.info("未到时间,不进行推送");
                     continue;
                 }
@@ -154,7 +155,8 @@ public class AttendanceMessageTask {
                 wechatTemplate = weChatUtil.getAttendanceMsgAbsenceTemplate();
                 recentlyTime = getRecentlyOverTime(ruleDetails, now);
                 characterKey = "character_string36";
-                if(recentlyTime.getHour() != now.getHour() && Math.abs(recentlyTime.getMinute() - now.getMinute()) >= 2){
+                long minute = Math.abs(ChronoUnit.MINUTES.between(now, recentlyTime));
+                if(minute >= 1){
                     log.info("未到时间,不进行推送");
                     continue;
                 }
@@ -240,7 +242,7 @@ public class AttendanceMessageTask {
                 for (XjrUser xjrUser : userList) {
                     weChatSendMessageDto.setMsgId(IdUtil.getSnowflakeNextId() + "");
                     weChatSendMessageDto.setUserId(xjrUser.getOpenId());
-//                    weChatService.sendTemplateMessage(weChatSendMessageDto);
+                    weChatService.sendTemplateMessage(weChatSendMessageDto);
                 }
             }else if(messageSet.getRoleType() != null && messageSet.getRoleType() == 2){
                 //教师总人数
@@ -285,7 +287,7 @@ public class AttendanceMessageTask {
                 for (XjrUser xjrUser : userList) {
                     weChatSendMessageDto.setMsgId(IdUtil.getSnowflakeNextId() + "");
                     weChatSendMessageDto.setUserId(xjrUser.getOpenId());
-//                    weChatService.sendTemplateMessage(weChatSendMessageDto);
+                    weChatService.sendTemplateMessage(weChatSendMessageDto);
                 }
             }