diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/CertificationInventoryJob.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/CertificationInventoryJob.java index dfb58cd74..55523cda4 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/CertificationInventoryJob.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/CertificationInventoryJob.java @@ -211,20 +211,20 @@ public class CertificationInventoryJob implements Job { * @param projectLibraryBase */ private void remindDutyPerson(List projectCertificationInventoryEOS,ProjectLibraryBase projectLibraryBase) { - Map> certifycationInventoryListByDutyPersonMap = projectCertificationInventoryEOS.stream().filter(data -> { + // 结果待提交 、审查退回 + Map> toBeSubmittedCiEoListByDutyPersonMap = projectCertificationInventoryEOS.stream().filter(data -> { boolean flag = ( - StringUtils.equals(data.getFlowStatus(), CertificationInventoryFlowStatusEnum.TASK_TO_BE_CONFIRMED.getValue()) - || StringUtils.equals(data.getFlowStatus(), CertificationInventoryFlowStatusEnum.RESULTS_TO_BE_SUBMITTED.getValue()) + StringUtils.equals(data.getFlowStatus(), CertificationInventoryFlowStatusEnum.RESULTS_TO_BE_SUBMITTED.getValue()) || StringUtils.equals(data.getFlowStatus(), CertificationInventoryFlowStatusEnum.REVIEW_AND_RETURN.getValue()) ); return flag; }).collect(Collectors.groupingBy(ProjectCertificationInventoryEO::getDutyPerson)); - if(ObjectUtils.isNotEmpty(certifycationInventoryListByDutyPersonMap)){ + if(ObjectUtils.isNotEmpty(toBeSubmittedCiEoListByDutyPersonMap)){ List dutyPersonIdList = projectCertificationInventoryEOS.stream().map(ProjectCertificationInventoryEO::getDutyPerson).distinct().collect(Collectors.toList()); List dutyPersonList = this.sysUserService.querySysUserListByIdList(dutyPersonIdList); - for (Map.Entry> dataByDutyPersonMap : certifycationInventoryListByDutyPersonMap.entrySet()) { + for (Map.Entry> dataByDutyPersonMap : toBeSubmittedCiEoListByDutyPersonMap.entrySet()) { String dutyPersonUserId = dataByDutyPersonMap.getKey(); List dutyPersonDataList = dataByDutyPersonMap.getValue(); if(CollectionUtils.isEmpty(dutyPersonDataList)){ @@ -296,6 +296,78 @@ public class CertificationInventoryJob implements Job { } } } + + // 任务待确认 + Map> toBeConfirmedCiEoListByDutyPersonMap = projectCertificationInventoryEOS.stream().filter(data -> { + boolean flag = (StringUtils.equals(data.getFlowStatus(), CertificationInventoryFlowStatusEnum.TASK_TO_BE_CONFIRMED.getValue())); + return flag; + }).collect(Collectors.groupingBy(ProjectCertificationInventoryEO::getDutyPerson)); + + if(ObjectUtils.isNotEmpty(toBeConfirmedCiEoListByDutyPersonMap)){ + List dutyPersonIdList = projectCertificationInventoryEOS.stream().map(ProjectCertificationInventoryEO::getDutyPerson).distinct().collect(Collectors.toList()); + List dutyPersonList = this.sysUserService.querySysUserListByIdList(dutyPersonIdList); + + for (Map.Entry> dataByDutyPersonMap : toBeConfirmedCiEoListByDutyPersonMap.entrySet()) { + String dutyPersonUserId = dataByDutyPersonMap.getKey(); + List dutyPersonDataList = dataByDutyPersonMap.getValue(); + if(CollectionUtils.isEmpty(dutyPersonDataList)){ + continue; + } + + Map sendMsgDataListMap = this.disposeSendMsgDataListByTaskConfirmEndTime(dutyPersonDataList); + + // 十四天后结束的 + List fourteenDaysList = (List) sendMsgDataListMap.get("fourteenDaysList"); + if(CollectionUtils.isNotEmpty(fourteenDaysList)){ + this.sendLarkCardMsgByTemplate( + projectLibraryBase, + dutyPersonList, + dutyPersonUserId, + fourteenDaysList, + TemplateInfoEnum2.CERTIFICATION_MESSAGE19.getValue(), + fourteenDaysList.get(0).getTaskConfirmEndTime() + ); + } + + // 七天后结束的 + List sevenDaysList = (List) sendMsgDataListMap.get("sevenDaysList"); + if(CollectionUtils.isNotEmpty(sevenDaysList)){ + this.sendLarkCardMsgByTemplate( + projectLibraryBase, + dutyPersonList, + dutyPersonUserId, + sevenDaysList, + TemplateInfoEnum2.CERTIFICATION_MESSAGE20.getValue(), + sevenDaysList.get(0).getTaskConfirmEndTime() + ); + } + + // 当天结束的 + List currentDaysList = (List) sendMsgDataListMap.get("currentDaysList"); + if(CollectionUtils.isNotEmpty(currentDaysList)){ + this.sendLarkCardMsgByTemplate( + projectLibraryBase, + dutyPersonList, + dutyPersonUserId, + currentDaysList, + TemplateInfoEnum2.CERTIFICATION_MESSAGE21.getValue(), + currentDaysList.get(0).getTaskConfirmEndTime() + ); + } + // 逾期的 + List overdueList = (List) sendMsgDataListMap.get("overdueList"); + if(CollectionUtils.isNotEmpty(overdueList)){ + this.sendLarkCardMsgByTemplate( + projectLibraryBase, + dutyPersonList, + dutyPersonUserId, + overdueList, + TemplateInfoEnum2.CERTIFICATION_MESSAGE22.getValue(), + overdueList.get(0).getTaskConfirmEndTime() + ); + } + } + } } /** @@ -509,6 +581,101 @@ public class CertificationInventoryJob implements Job { return result; } + /** + * 处理需要发送消息的数据 + * @param pciEoList + * @return + */ + private Map disposeSendMsgDataListByTaskConfirmEndTime(List pciEoList) { + Map result = new HashMap<>(); + Date currentDate = new Date(); + + //获取后三天前的时间 + Calendar calendar=new GregorianCalendar(); + calendar.setTime(new Date()); + calendar.add(Calendar.DATE,3); + Date threeDays = calendar.getTime(); + + //获取后七天后的时间 + Calendar sevenCalendar=new GregorianCalendar(); + sevenCalendar.setTime(new Date()); + sevenCalendar.add(Calendar.DATE,7); + Date sevenDays = sevenCalendar.getTime(); + + //获取后十四天后的时间 + Calendar fourteenCalendar=new GregorianCalendar(); + fourteenCalendar.setTime(new Date()); + fourteenCalendar.add(Calendar.DATE,14); + Date fourteenDays = fourteenCalendar.getTime(); + + String threeDaysStr = sdf.format(threeDays); + String sevenDaysStr = sdf.format(sevenDays); + String fourteenDaysStr = sdf.format(fourteenDays); + String currentDateStr = sdf.format(currentDate); + + // 当天结束的 + List currentDaysList = pciEoList.stream().filter(data -> { + boolean flag = false; + //结束日期是当前日期 + if(data.getTaskConfirmEndTime() != null){ + if (StringUtils.equals(currentDateStr, sdf.format(data.getTaskConfirmEndTime()))) { + flag = true; + } + } + return flag; + }).collect(Collectors.toList()); + + // 三天后结束的 + List threeDaysList = pciEoList.stream().filter(data -> { + boolean flag = false; + if(data.getTaskConfirmEndTime() != null){ + if (StringUtils.equals(threeDaysStr, sdf.format(data.getTaskConfirmEndTime()))) { + flag = true; + } + } + return flag; + }).collect(Collectors.toList()); + + // 七天后结束的 + List sevenDaysList = pciEoList.stream().filter(data -> { + boolean flag = false; + if(data.getTaskConfirmEndTime()!=null){ + if (StringUtils.equals(sevenDaysStr, sdf.format(data.getTaskConfirmEndTime()))) { + flag = true; + } + } + return flag; + }).collect(Collectors.toList()); + + // 十四天后结束的 + List fourteenDaysList = pciEoList.stream().filter(data -> { + boolean flag = false; + if(data.getTaskConfirmEndTime() != null){ + if (StringUtils.equals(fourteenDaysStr, sdf.format(data.getTaskConfirmEndTime()))) { + flag = true; + } + } + return flag; + }).collect(Collectors.toList()); + + // 逾期的 + List overdueList = pciEoList.stream().filter(data -> { + // 只要早于当前日期都算逾期 + boolean flag = false; + if(data.getTaskConfirmEndTime() != null){ + flag = (data.getTaskConfirmEndTime().before(currentDate) && !StringUtils.equals(currentDateStr, sdf.format(data.getTaskConfirmEndTime()))); + } + return flag; + }).collect(Collectors.toList()); + + result.put("currentDaysList",currentDaysList); + result.put("threeDaysList",threeDaysList); + result.put("overdueList",overdueList); + result.put("sevenDaysList",sevenDaysList); + result.put("fourteenDaysList",fourteenDaysList); + return result; + } + /** * 根据模板 发送飞书消息 * @param projectLibraryBase