diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/MsgTypeEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/MsgTypeEnum.java index 83b5b50d5..d602fd513 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/MsgTypeEnum.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/MsgTypeEnum.java @@ -11,6 +11,10 @@ public enum MsgTypeEnum { DESIGN_ISSUE_DRE_MSG("设计符合性确认分配dre消息","designIssueDreMsg"), DESIGN_REMIND_MSG("设计符合性提醒办理","designRemindMsg"), + PREHOMO_ISSUE_DRE_MSG("prehomo分配dre消息","prehomoIssueDreMsg"), + PREHOMO_REMIND_MSG("prehomo提醒办理","prehomoRemindMsg"), + VERIFY_ISSUE_DRE_MSG("验证符合性确认分配dre消息","verifyIssueDreMsg"), + VERIFY_REMIND_MSG("验证符合性确认提醒办理","verifyRemindMsg"), ; String name; diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/PrehomoJob.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/PrehomoJob.java new file mode 100644 index 000000000..b78a7822c --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/PrehomoJob.java @@ -0,0 +1,150 @@ +package com.jero.modules.project.job; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.jero.modules.project.entity.ProjectLawsInventoryEO; +import com.jero.modules.project.entity.ProjectLibraryBase; +import com.jero.modules.project.entity.ProjectNameInfoEO; +import com.jero.modules.project.entity.ProjectTaskInventoryEO; +import com.jero.modules.project.enums.DesignComplianceStatusEnum; +import com.jero.modules.project.enums.SendMsgFlagEnum; +import com.jero.modules.project.mapper.ProjectLawsInventoryEOMapper; +import com.jero.modules.project.mapper.ProjectLibraryBaseMapper; +import com.jero.modules.project.mapper.ProjectNameInfoEOMapper; +import com.jero.modules.project.service.IProjectLawsInventoryEOService; +import com.jero.modules.project.service.IProjectTaskInventoryEOService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.springframework.beans.factory.annotation.Autowired; + +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +/** + * prehomo流程 - 定时器 + */ +@Slf4j +public class PrehomoJob implements Job { + @Autowired + private ProjectLawsInventoryEOMapper projectLawsInventoryEOMapper; + + @Autowired + private ProjectLibraryBaseMapper projectLibraryBaseMapper; + + @Autowired + private IProjectLawsInventoryEOService projectLawsInventoryEOService; + + @Autowired + private ProjectNameInfoEOMapper projectNameInfoEOMapper; + + @Autowired + private IProjectTaskInventoryEOService projectTaskInventoryEOService; + + @Override + public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { + + //查询出已经启动了prehomo流程的数据。 并且流程没有结束。 + QueryWrapper queryProjectTaskInventoryWrapper = new QueryWrapper<>(); + queryProjectTaskInventoryWrapper.isNotNull("prehomo_p_id"); + queryProjectTaskInventoryWrapper.lambda().ne(ProjectTaskInventoryEO::getPrehomoStatus, DesignComplianceStatusEnum.REVIEW_COMPLETED.getValue()); + List projectTaskInventoryEOList = projectTaskInventoryEOService.getBaseMapper().selectList(queryProjectTaskInventoryWrapper); + + if(CollectionUtils.isNotEmpty(projectTaskInventoryEOList)){ + List projectLawsInventoryIdList = projectTaskInventoryEOList.stream().distinct().map(ProjectTaskInventoryEO::getProjectLawsInventoryId).collect(Collectors.toList()); + //根据已经启动了prehomo流程的 法规清单id。查询法规清单 + QueryWrapper queryWrapperInventory = new QueryWrapper<>(); + queryWrapperInventory.lambda().in(ProjectLawsInventoryEO::getId, projectLawsInventoryIdList); + List projectLawsInventoryEOList = projectLawsInventoryEOMapper.selectList(queryWrapperInventory); + + if(CollectionUtils.isNotEmpty(projectLawsInventoryEOList)){ + List projectLibraryIdList = projectLawsInventoryEOList.stream().distinct().map(ProjectLawsInventoryEO::getProjectLibraryId).collect(Collectors.toList()); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().in(ProjectLibraryBase::getId,projectLibraryIdList); + List projectLibraryBaseList = projectLibraryBaseMapper.selectList(queryWrapper); + if(CollectionUtils.isNotEmpty(projectLibraryBaseList)){ + SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd"); + + Date currentDate = new Date(); + + //获取后三天前的时间 + Calendar calendar=new GregorianCalendar(); + calendar.setTime(new Date()); + calendar.add(Calendar.DATE,3); + Date threeDays = calendar.getTime(); + + String threeDaysStr = sdf.format(threeDays); + String currentDateStr = sdf.format(currentDate); + + for (ProjectLibraryBase projectLibraryBase : projectLibraryBaseList) { + QueryWrapper projectNameInfoEOQueryWrapper = new QueryWrapper<>(); + projectNameInfoEOQueryWrapper.lambda().eq(ProjectNameInfoEO::getId,projectLibraryBase.getProjectNameId()); + ProjectNameInfoEO projectNameInfoEO = projectNameInfoEOMapper.selectOne(projectNameInfoEOQueryWrapper); + + + for (ProjectLawsInventoryEO projectLawsInventoryEO: projectLawsInventoryEOList) { + List threeDaysUserIdList = new ArrayList<>(); + List currentDaysUserIdList = new ArrayList<>(); + + for (ProjectTaskInventoryEO projectTaskInventoryEO : projectTaskInventoryEOList) { + if(StringUtils.equals(projectTaskInventoryEO.getProjectLawsInventoryId(),projectLawsInventoryEO.getId())){ + //如果prehomo - 结束日期是当前日期 + if(StringUtils.equals(currentDateStr,sdf.format(projectLawsInventoryEO.getPrehomoDueDate()))){ + if(StringUtils.isEmpty(projectTaskInventoryEO.getPrehomoSendMsgFlag())){ + if(StringUtils.isNotEmpty(projectLawsInventoryEO.getPrehomoDutyId())){ + currentDaysUserIdList.add(projectLawsInventoryEO.getPrehomoDutyId()); + }if(StringUtils.isNotEmpty(projectLawsInventoryEO.getPrehomoInitiatorId())){ + currentDaysUserIdList.add(projectLawsInventoryEO.getPrehomoInitiatorId()); + } + projectTaskInventoryEO.setPrehomoSendMsgFlag(SendMsgFlagEnum.FALSE.getValue()); + projectTaskInventoryEOService.updateById(projectTaskInventoryEO); + } + } + //如果prehomo - 结束日期是三天后的日期 + if(StringUtils.equals(threeDaysStr,sdf.format(projectLawsInventoryEO.getPrehomoDueDate()))){ + if(StringUtils.isEmpty(projectTaskInventoryEO.getPrehomoSendMsgCurrentFlag())){ + if(StringUtils.isNotEmpty(projectLawsInventoryEO.getPrehomoDutyId())){ + threeDaysUserIdList.add(projectLawsInventoryEO.getPrehomoDutyId()); + }if(StringUtils.isNotEmpty(projectLawsInventoryEO.getPrehomoInitiatorId())){ + threeDaysUserIdList.add(projectLawsInventoryEO.getPrehomoInitiatorId()); + } + projectTaskInventoryEO.setPrehomoSendMsgCurrentFlag(SendMsgFlagEnum.FALSE.getValue()); + projectTaskInventoryEOService.updateById(projectTaskInventoryEO); + } + } + } + } + if(CollectionUtils.isNotEmpty(threeDaysUserIdList)){ + threeDaysUserIdList = threeDaysUserIdList.stream().distinct().collect(Collectors.toList()); + + //您XXX(项目名称)中GB 7258的Pre-Homo确认剩余处理时间还有3天,请及时查看处理 + //The remaining processing time for the Pre-Homo confirmation of GB 7258 in XXX (project name) is 3 days. Please check and handle it in time. + String msgContentEN = "The remaining processing time for the Pre-Homo confirmation of " + + projectLawsInventoryEO.getSerialNumber() + " in " + projectNameInfoEO.getProjectName() + + " (project name) is 3 days. Please check and handle it in time."; + //发送消息 + projectLawsInventoryEOService.sendMessage(msgContentEN,threeDaysUserIdList,projectLawsInventoryEO.getId()); + } + + if(CollectionUtils.isNotEmpty(currentDaysUserIdList)){ + currentDaysUserIdList = currentDaysUserIdList.stream().distinct().collect(Collectors.toList()); + + //您XXX(项目名称)中GB 7258的Pre-Homo确认任务今天即将结束,请及时查看处理 + //The the Pre-Homo confirmation of GB 7258 in XXX (project name) is coming to an end today. Please check and deal with it in time + String msgContentEN = "The the Pre-Homo confirmation of " + + projectLawsInventoryEO.getSerialNumber() + " in " + projectNameInfoEO.getProjectName() + + " (project name) is coming to an end today. Please check and deal with it in time."; + //发送消息 + projectLawsInventoryEOService.sendMessage(msgContentEN,currentDaysUserIdList,projectLawsInventoryEO.getId()); + } + } + } + } + } + } + } +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/VerifyComplianceJob.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/VerifyComplianceJob.java new file mode 100644 index 000000000..286ac52c4 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/VerifyComplianceJob.java @@ -0,0 +1,150 @@ +package com.jero.modules.project.job; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.jero.modules.project.entity.ProjectLawsInventoryEO; +import com.jero.modules.project.entity.ProjectLibraryBase; +import com.jero.modules.project.entity.ProjectNameInfoEO; +import com.jero.modules.project.entity.ProjectTaskInventoryEO; +import com.jero.modules.project.enums.DesignComplianceStatusEnum; +import com.jero.modules.project.enums.SendMsgFlagEnum; +import com.jero.modules.project.mapper.ProjectLawsInventoryEOMapper; +import com.jero.modules.project.mapper.ProjectLibraryBaseMapper; +import com.jero.modules.project.mapper.ProjectNameInfoEOMapper; +import com.jero.modules.project.service.IProjectLawsInventoryEOService; +import com.jero.modules.project.service.IProjectTaskInventoryEOService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.springframework.beans.factory.annotation.Autowired; + +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 验证符合性 - 定时器 + */ +@Slf4j +public class VerifyComplianceJob implements Job { + @Autowired + private ProjectLawsInventoryEOMapper projectLawsInventoryEOMapper; + + @Autowired + private ProjectLibraryBaseMapper projectLibraryBaseMapper; + + @Autowired + private IProjectLawsInventoryEOService projectLawsInventoryEOService; + + @Autowired + private ProjectNameInfoEOMapper projectNameInfoEOMapper; + + @Autowired + private IProjectTaskInventoryEOService projectTaskInventoryEOService; + + @Override + public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { + + //查询出已经启动了验证符合性流程的数据。 并且流程没有结束。 + QueryWrapper queryProjectTaskInventoryWrapper = new QueryWrapper<>(); + queryProjectTaskInventoryWrapper.isNotNull("verify_p_id"); + queryProjectTaskInventoryWrapper.lambda().ne(ProjectTaskInventoryEO::getVerifyStatus, DesignComplianceStatusEnum.REVIEW_COMPLETED.getValue()); + List projectTaskInventoryEOList = projectTaskInventoryEOService.getBaseMapper().selectList(queryProjectTaskInventoryWrapper); + + if(CollectionUtils.isNotEmpty(projectTaskInventoryEOList)){ + List projectLawsInventoryIdList = projectTaskInventoryEOList.stream().distinct().map(ProjectTaskInventoryEO::getProjectLawsInventoryId).collect(Collectors.toList()); + //根据已经启动了验证符合性流程的 法规清单id。查询法规清单 + QueryWrapper queryWrapperInventory = new QueryWrapper<>(); + queryWrapperInventory.lambda().in(ProjectLawsInventoryEO::getId, projectLawsInventoryIdList); + List projectLawsInventoryEOList = projectLawsInventoryEOMapper.selectList(queryWrapperInventory); + + if(CollectionUtils.isNotEmpty(projectLawsInventoryEOList)){ + List projectLibraryIdList = projectLawsInventoryEOList.stream().distinct().map(ProjectLawsInventoryEO::getProjectLibraryId).collect(Collectors.toList()); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().in(ProjectLibraryBase::getId,projectLibraryIdList); + List projectLibraryBaseList = projectLibraryBaseMapper.selectList(queryWrapper); + if(CollectionUtils.isNotEmpty(projectLibraryBaseList)){ + SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd"); + + Date currentDate = new Date(); + + //获取后三天前的时间 + Calendar calendar=new GregorianCalendar(); + calendar.setTime(new Date()); + calendar.add(Calendar.DATE,3); + Date threeDays = calendar.getTime(); + + String threeDaysStr = sdf.format(threeDays); + String currentDateStr = sdf.format(currentDate); + + for (ProjectLibraryBase projectLibraryBase : projectLibraryBaseList) { + QueryWrapper projectNameInfoEOQueryWrapper = new QueryWrapper<>(); + projectNameInfoEOQueryWrapper.lambda().eq(ProjectNameInfoEO::getId,projectLibraryBase.getProjectNameId()); + ProjectNameInfoEO projectNameInfoEO = projectNameInfoEOMapper.selectOne(projectNameInfoEOQueryWrapper); + + + for (ProjectLawsInventoryEO projectLawsInventoryEO: projectLawsInventoryEOList) { + List threeDaysUserIdList = new ArrayList<>(); + List currentDaysUserIdList = new ArrayList<>(); + + for (ProjectTaskInventoryEO projectTaskInventoryEO : projectTaskInventoryEOList) { + if(StringUtils.equals(projectTaskInventoryEO.getProjectLawsInventoryId(),projectLawsInventoryEO.getId())){ + //如果验证符合性 - 结束日期是当前日期 + if(StringUtils.equals(currentDateStr,sdf.format(projectLawsInventoryEO.getVerifyDueDate()))){ + if(StringUtils.isEmpty(projectTaskInventoryEO.getVerifySendMsgFlag())){ + if(StringUtils.isNotEmpty(projectLawsInventoryEO.getVerifyDutyId())){ + currentDaysUserIdList.add(projectLawsInventoryEO.getVerifyDutyId()); + }if(StringUtils.isNotEmpty(projectLawsInventoryEO.getVerifyInitiatorId())){ + currentDaysUserIdList.add(projectLawsInventoryEO.getVerifyInitiatorId()); + } + projectTaskInventoryEO.setVerifySendMsgFlag(SendMsgFlagEnum.FALSE.getValue()); + projectTaskInventoryEOService.updateById(projectTaskInventoryEO); + } + } + //如果验证符合性 - 结束日期是三天后的日期 + if(StringUtils.equals(threeDaysStr,sdf.format(projectLawsInventoryEO.getVerifyDueDate()))){ + if(StringUtils.isEmpty(projectTaskInventoryEO.getVerifySendMsgCurrentFlag())){ + if(StringUtils.isNotEmpty(projectLawsInventoryEO.getVerifyDutyId())){ + threeDaysUserIdList.add(projectLawsInventoryEO.getVerifyDutyId()); + }if(StringUtils.isNotEmpty(projectLawsInventoryEO.getVerifyInitiatorId())){ + threeDaysUserIdList.add(projectLawsInventoryEO.getVerifyInitiatorId()); + } + projectTaskInventoryEO.setVerifySendMsgCurrentFlag(SendMsgFlagEnum.FALSE.getValue()); + projectTaskInventoryEOService.updateById(projectTaskInventoryEO); + } + } + } + } + if(CollectionUtils.isNotEmpty(threeDaysUserIdList)){ + threeDaysUserIdList = threeDaysUserIdList.stream().distinct().collect(Collectors.toList()); + + //您XXX(项目名称)中GB 7258的验证符合性确认剩余处理时间还有3天,请及时查看处理 + //The remaining processing time for the Verify compliance confirmation of GB 7258 in XXX (project name) is 3 days. Please check and handle it in time. + String msgContentEN = "The remaining processing time for the Verify compliance confirmation of " + + projectLawsInventoryEO.getSerialNumber() + " in " + projectNameInfoEO.getProjectName() + + " (project name) is 3 days. Please check and handle it in time."; + //发送消息 + projectLawsInventoryEOService.sendMessage(msgContentEN,threeDaysUserIdList,projectLawsInventoryEO.getId()); + } + + if(CollectionUtils.isNotEmpty(currentDaysUserIdList)){ + currentDaysUserIdList = currentDaysUserIdList.stream().distinct().collect(Collectors.toList()); + + //您XXX(项目名称)中GB 7258的验证符合性确认任务今天即将结束,请及时查看处理 + //The the Verify compliance confirmation of GB 7258 in XXX (project name) is coming to an end today. Please check and deal with it in time + String msgContentEN = "The the Verify compliance confirmation of " + + projectLawsInventoryEO.getSerialNumber() + " in " + projectNameInfoEO.getProjectName() + + " (project name) is coming to an end today. Please check and deal with it in time."; + //发送消息 + projectLawsInventoryEOService.sendMessage(msgContentEN,currentDaysUserIdList,projectLawsInventoryEO.getId()); + } + } + } + } + } + } + } +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectTaskInventoryDetailEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectTaskInventoryDetailEOServiceImpl.java index 7ee6a67b2..bd9558389 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectTaskInventoryDetailEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectTaskInventoryDetailEOServiceImpl.java @@ -195,8 +195,20 @@ public class ProjectTaskInventoryDetailEOServiceImpl extends ServiceImpl