|
@@ -106,19 +106,6 @@ public class AttendanceMessageTask {
|
|
|
}
|
|
|
//查询今天的考勤规则
|
|
|
List<AttendanceRuleDetails> ruleDetails = ruleCategoryService.getTodayRules();
|
|
|
-
|
|
|
-
|
|
|
-// WechatMessageLog log = wechatMessageLogService.getOne(
|
|
|
-// new QueryWrapper<WechatMessageLog>().lambda()
|
|
|
-// .select(WechatMessageLog.class, x -> VoToColumnUtil.fieldsToColumns(WechatMessageLog.class).contains(x.getProperty()))
|
|
|
-// .eq(WechatMessageLog::getSendTime, recentlyTime)
|
|
|
-// .eq(WechatMessageLog::getTemplateId, wechatTemplate)
|
|
|
-// );
|
|
|
-// if(log != null){//已经推送过,不再进行推送
|
|
|
-// return;
|
|
|
-// }
|
|
|
-
|
|
|
-
|
|
|
List<AttendanceMessageSet> list = messageSetService.list();
|
|
|
//判断是上午还是下午
|
|
|
Integer timePeriod = null;
|
|
@@ -142,16 +129,6 @@ public class AttendanceMessageTask {
|
|
|
//查询需要通知的人
|
|
|
|
|
|
for (AttendanceMessageSet messageSet : list) {
|
|
|
- List<XjrUser> userList = userService.list(
|
|
|
- new MPJLambdaWrapper<XjrUser>().distinct()
|
|
|
- .select(XjrUser::getId)
|
|
|
- .select(XjrUser.class, x -> VoToColumnUtil.fieldsToColumns(XjrUser.class).contains(x.getProperty()))
|
|
|
- .leftJoin(UserRoleRelation.class, UserRoleRelation::getUserId, XjrUser::getId)
|
|
|
- .leftJoin(AttendanceMessageUserRelation.class, AttendanceMessageUserRelation::getUserId, XjrUser::getId)
|
|
|
- .in(UserRoleRelation::getRoleId, roleTypes)
|
|
|
- .eq(AttendanceMessageUserRelation::getAttendanceMessageSetId, messageSet.getId())
|
|
|
- );
|
|
|
-
|
|
|
LocalDateTime recentlyTime = null;
|
|
|
String characterKey = "character_string18";
|
|
|
String wechatTemplate = weChatUtil.getAttendanceMsgLateTemplate();
|
|
@@ -160,16 +137,34 @@ public class AttendanceMessageTask {
|
|
|
characterKey = "character_string18";
|
|
|
//获取最近的时间
|
|
|
recentlyTime = getRecentlyTime(ruleDetails, now);
|
|
|
- if(!recentlyTime.isEqual(now)){
|
|
|
- log.info("未到时间,不需要提醒");
|
|
|
+ if(recentlyTime.getHour() != now.getHour() && Math.abs(recentlyTime.getMinute() - now.getMinute()) >= 2){
|
|
|
+ log.info("未到时间,不进行推送");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ long count = wechatMessageLogService.count(
|
|
|
+ new QueryWrapper<WechatMessageLog>().lambda()
|
|
|
+ .eq(WechatMessageLog::getSendTime, recentlyTime)
|
|
|
+ .eq(WechatMessageLog::getTemplateId, wechatTemplate)
|
|
|
+ );
|
|
|
+ if(count > 0){//已经推送过,不再进行推送
|
|
|
+ log.info("已推送过,不进行推送");
|
|
|
continue;
|
|
|
}
|
|
|
}else if(messageSet.getMessageCategory() != null && messageSet.getMessageCategory() == 3){
|
|
|
wechatTemplate = weChatUtil.getAttendanceMsgAbsenceTemplate();
|
|
|
recentlyTime = getRecentlyOverTime(ruleDetails, now);
|
|
|
characterKey = "character_string36";
|
|
|
- if(!recentlyTime.isEqual(now)){
|
|
|
- log.info("未到时间,不需要提醒");
|
|
|
+ if(recentlyTime.getHour() != now.getHour() && Math.abs(recentlyTime.getMinute() - now.getMinute()) >= 2){
|
|
|
+ log.info("未到时间,不进行推送");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ long count = wechatMessageLogService.count(
|
|
|
+ new QueryWrapper<WechatMessageLog>().lambda()
|
|
|
+ .eq(WechatMessageLog::getSendTime, recentlyTime)
|
|
|
+ .eq(WechatMessageLog::getTemplateId, wechatTemplate)
|
|
|
+ );
|
|
|
+ if(count > 0){//已经推送过,不再进行推送
|
|
|
+ log.info("已推送过,不进行推送");
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
@@ -178,6 +173,16 @@ public class AttendanceMessageTask {
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
+ List<XjrUser> userList = userService.list(
|
|
|
+ new MPJLambdaWrapper<XjrUser>().distinct()
|
|
|
+ .select(XjrUser::getId)
|
|
|
+ .select(XjrUser.class, x -> VoToColumnUtil.fieldsToColumns(XjrUser.class).contains(x.getProperty()))
|
|
|
+ .leftJoin(UserRoleRelation.class, UserRoleRelation::getUserId, XjrUser::getId)
|
|
|
+ .leftJoin(AttendanceMessageUserRelation.class, AttendanceMessageUserRelation::getUserId, XjrUser::getId)
|
|
|
+ .in(UserRoleRelation::getRoleId, roleTypes)
|
|
|
+ .eq(AttendanceMessageUserRelation::getAttendanceMessageSetId, messageSet.getId())
|
|
|
+ );
|
|
|
+
|
|
|
//没有需要通知的,直接跳过
|
|
|
if(userList.isEmpty()){
|
|
|
continue;
|
|
@@ -235,7 +240,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() == 3){
|
|
|
//教师总人数
|
|
@@ -280,7 +285,7 @@ public class AttendanceMessageTask {
|
|
|
for (XjrUser xjrUser : userList) {
|
|
|
weChatSendMessageDto.setMsgId(IdUtil.getSnowflakeNextId() + "");
|
|
|
weChatSendMessageDto.setUserId(xjrUser.getOpenId());
|
|
|
- weChatService.sendTemplateMessage(weChatSendMessageDto);
|
|
|
+// weChatService.sendTemplateMessage(weChatSendMessageDto);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -334,16 +339,25 @@ public class AttendanceMessageTask {
|
|
|
if(ruleDetail.getIsAllowInOutSchool() != null && ruleDetail.getIsAllowInOutSchool() == 1
|
|
|
&& ruleDetail.getIsAttendance() != null && ruleDetail.getIsAttendance() == 1){
|
|
|
if(ruleDetail.getAmStartTime() != null){
|
|
|
- LocalDateTime amStartTime = now.with(ruleDetail.getAmStartTime().toLocalTime()).plusMinutes(ruleDetail.getOverMinutes());
|
|
|
+ LocalDateTime amStartTime = now.with(ruleDetail.getAmStartTime().toLocalTime());
|
|
|
+ if(ruleDetail.getOverMinutes() != null){
|
|
|
+ amStartTime.plusMinutes(ruleDetail.getOverMinutes());
|
|
|
+ }
|
|
|
result.add(amStartTime);
|
|
|
}
|
|
|
if(ruleDetail.getPmStartTime() != null){
|
|
|
- LocalDateTime pmStartTime = now.with(ruleDetail.getPmStartTime().toLocalTime()).plusMinutes(ruleDetail.getOverMinutes());
|
|
|
+ LocalDateTime pmStartTime = now.with(ruleDetail.getPmStartTime().toLocalTime());
|
|
|
+ if(ruleDetail.getOverMinutes() != null){
|
|
|
+ pmStartTime.plusMinutes(ruleDetail.getOverMinutes());
|
|
|
+ }
|
|
|
result.add(pmStartTime);
|
|
|
}
|
|
|
|
|
|
if(ruleDetail.getEveningStartTime() != null){
|
|
|
- LocalDateTime eveningStartTime = now.with(ruleDetail.getEveningStartTime().toLocalTime()).plusMinutes(ruleDetail.getOverMinutes());
|
|
|
+ LocalDateTime eveningStartTime = now.with(ruleDetail.getEveningStartTime().toLocalTime());
|
|
|
+ if(ruleDetail.getOverMinutes() != null){
|
|
|
+ eveningStartTime.plusMinutes(ruleDetail.getOverMinutes());
|
|
|
+ }
|
|
|
result.add(eveningStartTime);
|
|
|
}
|
|
|
}
|