From dc298ede39ab081c4a401397c7ec0f188d51a469 Mon Sep 17 00:00:00 2001 From: CD <1103614279@qq.com> Date: Mon, 31 Oct 2022 15:36:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B3=95=E8=A7=84=E4=BB=BB=E5=8A=A1=E7=A1=AE?= =?UTF-8?q?=E8=AE=A4=E6=B6=88=E6=81=AF(=E5=89=A9=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=82=AC=E5=8A=9E)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/constant/enums/MsgColorEnum.java | 2 +- .../project/job/InventoryAffirmJob.java | 320 +++++++++++++----- .../modules/project/job/TaskAffirmJob.java | 271 +++++++++++++++ .../ProjectLawsInventoryEOServiceImpl.java | 125 ++++++- 4 files changed, 625 insertions(+), 93 deletions(-) create mode 100644 jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/TaskAffirmJob.java diff --git a/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/enums/MsgColorEnum.java b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/enums/MsgColorEnum.java index ba74f1908..f8064cc7e 100644 --- a/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/enums/MsgColorEnum.java +++ b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/enums/MsgColorEnum.java @@ -4,7 +4,7 @@ public enum MsgColorEnum { GREEN("其他","green"), RED("任务被拒绝","red"), - YELLOW("任务预期","yellow"); + YELLOW("任务逾期","yellow"); String label; String value; diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/InventoryAffirmJob.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/InventoryAffirmJob.java index 1fbef43a5..dae07a815 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/InventoryAffirmJob.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/InventoryAffirmJob.java @@ -1,7 +1,13 @@ package com.jero.modules.project.job; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.jero.common.constant.enums.MessageType2Enum; import com.jero.common.constant.enums.MessageTypeEnum; +import com.jero.common.constant.enums.MsgColorEnum; +import com.jero.modules.document.entity.BussDocumentLibraryEO; +import com.jero.modules.document.service.IBussDocumentLibraryEOService; +import com.jero.modules.feishu.service.IFeishuService; +import com.jero.modules.feishu.vo.FeishuMsg2Vo; import com.jero.modules.feishu.vo.FeishuMsgVo; import com.jero.modules.project.entity.ProjectLawsInventoryEO; import com.jero.modules.project.entity.ProjectLibraryBase; @@ -15,8 +21,11 @@ import com.jero.modules.project.mapper.ProjectLibraryBaseMapper; import com.jero.modules.project.mapper.ProjectNameInfoEOMapper; import com.jero.modules.project.mapper.ProjectYearNameInfoEOMapper; import com.jero.modules.project.service.IProjectLawsInventoryEOService; +import com.jero.modules.system.entity.SysUser; +import com.jero.modules.system.service.ISysUserService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.quartz.Job; import org.quartz.JobExecutionContext; @@ -24,6 +33,7 @@ import org.quartz.JobExecutionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import java.io.IOException; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -49,16 +59,24 @@ public class InventoryAffirmJob implements Job { @Autowired private ProjectYearNameInfoEOMapper projectYearNameInfoEOMapper; + @Autowired + private IFeishuService feishuService; + @Value(value = "${jero.backUrl}") private String backUrl; + @Autowired + private ISysUserService sysUserService; + @Autowired + private IBussDocumentLibraryEOService bussDocumentLibraryEOService; + /** * 清单任务到达截止时间后,给用户发送消息 */ @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { - log.info("清单确认流程,定时任务开启 ====================================================="); - //获取状态为待确认的数据 + log.info("清单确认流程,定时任务开启 ====================================================="); + /* //获取状态为待确认的数据 QueryWrapper queryWrapperInventory = new QueryWrapper<>(); queryWrapperInventory.lambda().eq(ProjectLawsInventoryEO::getInventoryAffirmStatus, InventoryAffirmStatusEnum.LIST_TO_CONFIRM.getValue()); List projectLawsInventoryEOList = projectLawsInventoryEOMapper.selectList(queryWrapperInventory); @@ -96,125 +114,269 @@ public class InventoryAffirmJob implements Job { projectYearInfoEOQueryWrapper.lambda().eq(ProjectYearNameInfoEO::getId,projectLibraryBase.getYearNameId()); ProjectYearNameInfoEO projectYearNameInfoEO = projectYearNameInfoEOMapper.selectOne(projectYearInfoEOQueryWrapper); - List threeDaysUserIdList = new ArrayList<>(); - List currentDaysUserIdList = new ArrayList<>(); + + Map> threeDaysMap = new HashMap<>(); + Map> currentDaysMap = new HashMap<>(); + Map> overdueMap = new HashMap<>(); for (ProjectLawsInventoryEO projectLawsInventoryEO : projectLawsInventoryEOList) { if(StringUtils.equals(projectLibraryBase.getId(),projectLawsInventoryEO.getProjectLibraryId())){ if(projectLawsInventoryEO.getInventoryAffirmDueDate() != null){ //如果清单确认结束日期是当前日期 if(StringUtils.equals(currentDateStr,sdf.format(projectLawsInventoryEO.getInventoryAffirmDueDate()))){ + List currentDaysUserIdList = new ArrayList<>(); if(StringUtils.isEmpty(projectLawsInventoryEO.getSendMsgFlag())){ - if(StringUtils.isNotEmpty(projectLawsInventoryEO.getRegulationOwnerId()) && StringUtils.isEmpty(projectLawsInventoryEO.getRegulationOwnerSubmitStatus())){ - currentDaysUserIdList.add(projectLawsInventoryEO.getRegulationOwnerId()); - } - if(StringUtils.isNotEmpty(projectLawsInventoryEO.getHomologationEngineerId()) && StringUtils.isEmpty(projectLawsInventoryEO.getHomologationEngineerSubmitStatus())){ - currentDaysUserIdList.add(projectLawsInventoryEO.getHomologationEngineerId()); + //if(StringUtils.isNotEmpty(projectLawsInventoryEO.getRegulationOwnerId()) && StringUtils.isEmpty(projectLawsInventoryEO.getRegulationOwnerSubmitStatus())){ + // currentDaysUserIdList.add(projectLawsInventoryEO.getRegulationOwnerId()); + //} + //if(StringUtils.isNotEmpty(projectLawsInventoryEO.getHomologationEngineerId()) && StringUtils.isEmpty(projectLawsInventoryEO.getHomologationEngineerSubmitStatus())){ + // currentDaysUserIdList.add(projectLawsInventoryEO.getHomologationEngineerId()); + //} + if (StringUtils.isNotEmpty(projectLawsInventoryEO.getHomologationEngineerSubmitStatus())||StringUtils.isNotEmpty(projectLawsInventoryEO.getRegulationOwnerSubmitStatus())) { + if (StringUtils.isNotEmpty(projectLawsInventoryEO.getEngineeringInterfacePerson())) { + currentDaysUserIdList.add(projectLawsInventoryEO.getEngineeringInterfacePerson()); + } } projectLawsInventoryEO.setSendMsgFlag(SendMsgFlagEnum.FALSE.getValue()); projectLawsInventoryEOMapper.updateById(projectLawsInventoryEO); } + if (ObjectUtils.isNotEmpty(currentDaysUserIdList)) { + currentDaysMap.put(projectLawsInventoryEO.getId(), currentDaysUserIdList); + } } //如果清单确认结束时间是当前系统时间后三天 if(StringUtils.equals(threeDaysStr,sdf.format(projectLawsInventoryEO.getInventoryAffirmDueDate()))){ + List threeDaysUserIdList = new ArrayList<>(); if(StringUtils.isEmpty(projectLawsInventoryEO.getSendMsgCurrentFlag())){ - if(StringUtils.isNotEmpty(projectLawsInventoryEO.getRegulationOwnerId()) && StringUtils.isEmpty(projectLawsInventoryEO.getRegulationOwnerSubmitStatus())){ - threeDaysUserIdList.add(projectLawsInventoryEO.getRegulationOwnerId()); - } - if(StringUtils.isNotEmpty(projectLawsInventoryEO.getHomologationEngineerId()) && StringUtils.isEmpty(projectLawsInventoryEO.getHomologationEngineerSubmitStatus())){ - threeDaysUserIdList.add(projectLawsInventoryEO.getHomologationEngineerId()); + //if(StringUtils.isNotEmpty(projectLawsInventoryEO.getRegulationOwnerId()) && StringUtils.isEmpty(projectLawsInventoryEO.getRegulationOwnerSubmitStatus())){ + // threeDaysUserIdList.add(projectLawsInventoryEO.getRegulationOwnerId()); + //} + //if(StringUtils.isNotEmpty(projectLawsInventoryEO.getHomologationEngineerId()) && StringUtils.isEmpty(projectLawsInventoryEO.getHomologationEngineerSubmitStatus())){ + // threeDaysUserIdList.add(projectLawsInventoryEO.getHomologationEngineerId()); + //} + if (StringUtils.isNotEmpty(projectLawsInventoryEO.getHomologationEngineerSubmitStatus())||StringUtils.isNotEmpty(projectLawsInventoryEO.getRegulationOwnerSubmitStatus())) { + if (StringUtils.isNotEmpty(projectLawsInventoryEO.getEngineeringInterfacePerson())) { + threeDaysUserIdList.add(projectLawsInventoryEO.getEngineeringInterfacePerson()); + } } projectLawsInventoryEO.setSendMsgCurrentFlag(SendMsgFlagEnum.FALSE.getValue()); projectLawsInventoryEOMapper.updateById(projectLawsInventoryEO); } + if (ObjectUtils.isNotEmpty(threeDaysUserIdList)) { + threeDaysMap.put(projectLawsInventoryEO.getId(), threeDaysUserIdList); + } } + + //逾期3天、七天、14天 + Calendar day3Later=new GregorianCalendar(); + day3Later.setTime(projectLawsInventoryEO.getInventoryAffirmDueDate()); + day3Later.add(Calendar.DATE,3); + Date overdue3Days = day3Later.getTime(); + + Calendar day7Later=new GregorianCalendar(); + day7Later.setTime(projectLawsInventoryEO.getInventoryAffirmDueDate()); + day7Later.add(Calendar.DATE,7); + Date overdue7Days = day7Later.getTime(); + + Calendar day14Later=new GregorianCalendar(); + day14Later.setTime(projectLawsInventoryEO.getInventoryAffirmDueDate()); + day14Later.add(Calendar.DATE,14); + Date overdue14Days = day14Later.getTime(); + + if(StringUtils.equals(sdf.format(overdue3Days),sdf.format(projectLawsInventoryEO.getInventoryAffirmDueDate())) + ||StringUtils.equals(sdf.format(overdue7Days),sdf.format(projectLawsInventoryEO.getInventoryAffirmDueDate())) + ||StringUtils.equals(sdf.format(overdue14Days),sdf.format(projectLawsInventoryEO.getInventoryAffirmDueDate()))){ + List overdueUserIdList = new ArrayList<>(); + if (StringUtils.isNotEmpty(projectLawsInventoryEO.getHomologationEngineerSubmitStatus())||StringUtils.isNotEmpty(projectLawsInventoryEO.getRegulationOwnerSubmitStatus())) { + if (StringUtils.isNotEmpty(projectLawsInventoryEO.getEngineeringInterfacePerson())) { + overdueUserIdList.add(projectLawsInventoryEO.getEngineeringInterfacePerson()); + } + } + if (ObjectUtils.isNotEmpty(overdueUserIdList)) { + overdueMap.put(projectLawsInventoryEO.getId(), overdueUserIdList); + } + } + } } } - if(CollectionUtils.isNotEmpty(threeDaysUserIdList)){ - threeDaysUserIdList = threeDaysUserIdList.stream().distinct().collect(Collectors.toList()); + //飞书跳转链接 + String hrefFeishu = backUrl + + JumpLinkEnum.INVENTORY_AFFIRM_LINK.getLink() + + projectLibraryBase.getId() + + JumpLinkEnum.INVENTORY_AFFIRM_LINK.getType() + + "&projectName=" + projectNameInfoEO.getProjectName() + "-" + + projectYearNameInfoEO.getYearName() + + "&targetMarket=" + projectLibraryBase.getTargetMarket(); - /*String msgContentCN = "您" + projectLibraryBase.getProjectName() + "(项目名称)法规清单的任务确认剩余处理时间还有3天,请及时查看处理";*/ + //项目名称 + String PRN = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + "-" + projectLibraryBase.getTargetMarket() + "-" + projectLibraryBase.getProjectVersion(); + if(!threeDaysMap.isEmpty()){ + for (String key : threeDaysMap.keySet()) { + List threeDaysUserIdList = threeDaysMap.get(key); + threeDaysUserIdList = threeDaysUserIdList.stream().distinct().collect(Collectors.toList()); + List thirdIdList = new ArrayList<>(); + List sysUsers = sysUserService.listByIds(threeDaysUserIdList); + if (ObjectUtils.isNotEmpty(sysUsers)) { + thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList()); + } + //法规中英文 + ProjectLawsInventoryEO projectLawsInventoryEO = projectLawsInventoryEOMapper.selectById(key); + BussDocumentLibraryEO bussDocumentLibraryEO = bussDocumentLibraryEOService.queryById(projectLawsInventoryEO.getStandId()); + try { + FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo(); + feishuMsgVo.setTitle(MessageType2Enum.REGULATION_TASK_CONFIRMATION.getCn() + "/" + MessageType2Enum.REGULATION_TASK_CONFIRMATION.getEn()); + feishuMsgVo.setCnContentUpper("您好,该任务将于3天后到期,请及时查看处理,谢谢!"); + feishuMsgVo.setCnContentLower("项目: " + PRN + + "\n法规: " + projectLawsInventoryEO.getSerialNumber() + " " + projectLawsInventoryEO.getTitle() + + "\n发起人: 系统通知"); + feishuMsgVo.setEnContentUpper("Hello! This task will expire in 3 days. Please check and address it in a timely manner. Thank you!"); + feishuMsgVo.setEnContentLower("Project:" + PRN + + "\nRegulation No: " + projectLawsInventoryEO.getSerialNumber() + " " + bussDocumentLibraryEO.getTitleEn() + + "\nInitiator: " + MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName()); + feishuMsgVo.setUrl(hrefFeishu); + feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色 + feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo); + } catch (IOException e) { + log.error("飞书消息推送失败"); + } + + } + + + *//*String msgContentCN = "您" + projectLibraryBase.getProjectName() + "(项目名称)法规清单的任务确认剩余处理时间还有3天,请及时查看处理";*//* // XXX . - String msgContentEN = "The remaining processing time for the regulation task confirmation for " - + projectNameInfoEO.getProjectName() + "-" - + projectYearNameInfoEO.getYearName()+ " " - + projectLibraryBase.getTargetMarket() - + " are 3 days. Please check and address it in a timely manner."; - String msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName()+ " " + projectLibraryBase.getTargetMarket() - + ": You have a regulation task confirmation to complete"; + //String msgContentEN = "The remaining processing time for the regulation task confirmation for " + // + projectNameInfoEO.getProjectName() + "-" + // + projectYearNameInfoEO.getYearName()+ " " + // + projectLibraryBase.getTargetMarket() + // + " are 3 days. Please check and address it in a timely manner."; + //String msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName()+ " " + projectLibraryBase.getTargetMarket() + // + ": You have a regulation task confirmation to complete"; + + //FeishuMsgVo feishuMsgVo = new FeishuMsgVo(); + //feishuMsgVo.setContent("Hello! The remaining processing time for the task are 3 days. Please check and address it in a timely manner."); + //feishuMsgVo.setTaskType("Regulation Task Confirmation"); + //feishuMsgVo.setProject(projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket()); - FeishuMsgVo feishuMsgVo = new FeishuMsgVo(); - feishuMsgVo.setContent("Hello! The remaining processing time for the task are 3 days. Please check and address it in a timely manner."); - feishuMsgVo.setTaskType("Regulation Task Confirmation"); - feishuMsgVo.setProject(projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket()); - //飞书跳转链接 - String hrefFeishu = backUrl - + JumpLinkEnum.INVENTORY_AFFIRM_LINK.getLink() - + projectLibraryBase.getId() - + JumpLinkEnum.INVENTORY_AFFIRM_LINK.getType() - + "&projectName=" + projectNameInfoEO.getProjectName() + "-" - + projectYearNameInfoEO.getYearName() - + "&targetMarket=" + projectLibraryBase.getTargetMarket(); //系统内部跳转链接 - String href = "" + " View details" + ""; - String contentInfo = msgContentEN + " " + href; - Map sendMessageMap = new HashMap<>(); - sendMessageMap.put("hrefFeishu",hrefFeishu); - sendMessageMap.put("contentInfo",contentInfo); + //String href = "" + " View details" + ""; + //String contentInfo = msgContentEN + " " + href; + //Map sendMessageMap = new HashMap<>(); + // sendMessageMap.put("hrefFeishu",hrefFeishu); + //sendMessageMap.put("contentInfo",contentInfo); //发送消息 - projectLawsInventoryEOService.sendMessage(msgTitle, msgContentEN, threeDaysUserIdList, projectLibraryBase.getId(), sendMessageMap, feishuMsgVo, MessageTypeEnum.LIST_CONFIRMATION,MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName()); + //projectLawsInventoryEOService.sendMessage(msgTitle, msgContentEN, threeDaysUserIdList, projectLibraryBase.getId(), sendMessageMap, feishuMsgVo, MessageTypeEnum.LIST_CONFIRMATION,MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName()); } - if(CollectionUtils.isNotEmpty(currentDaysUserIdList)){ - currentDaysUserIdList = currentDaysUserIdList.stream().distinct().collect(Collectors.toList()); + if(!currentDaysMap.isEmpty()){ + for (String key : currentDaysMap.keySet()) { + List currentDaysUserIdList = currentDaysMap.get(key); + currentDaysUserIdList = currentDaysUserIdList.stream().distinct().collect(Collectors.toList()); + List thirdIdList = new ArrayList<>(); + List sysUsers = sysUserService.listByIds(currentDaysUserIdList); + if (ObjectUtils.isNotEmpty(sysUsers)) { + thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList()); + } + //法规中英文 + ProjectLawsInventoryEO projectLawsInventoryEO = projectLawsInventoryEOMapper.selectById(key); + BussDocumentLibraryEO bussDocumentLibraryEO = bussDocumentLibraryEOService.queryById(projectLawsInventoryEO.getStandId()); + try { + FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo(); + feishuMsgVo.setTitle(MessageType2Enum.REGULATION_TASK_CONFIRMATION.getCn() + "/" + MessageType2Enum.REGULATION_TASK_CONFIRMATION.getEn()); + feishuMsgVo.setCnContentUpper("您好,该任务今天即将到期,请尽快查看处理,谢谢!"); + feishuMsgVo.setCnContentLower("项目: " + PRN + + "\n法规: " + projectLawsInventoryEO.getSerialNumber() + " " +projectLawsInventoryEO.getTitle() + + "\n发起人: 系统通知"); + feishuMsgVo.setEnContentUpper("Hello! This task will expire today. Please check and address the task ASAP. Thank you!"); + feishuMsgVo.setEnContentLower("Project:" + PRN + + "\nRegulation No: " + projectLawsInventoryEO.getSerialNumber() + " " + bussDocumentLibraryEO.getTitleEn() + + "\nInitiator: " + MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName()); + feishuMsgVo.setUrl(hrefFeishu); + feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色 + feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo); + } catch (IOException e) { + log.error("飞书消息推送失败"); + } + } - /*String msgContentCN = "您" + projectLibraryBase.getProjectName() + "(项目名称)法规清单的任务今天即将结束,请及时查看处理*/ - String msgContentEN = "The regulation task confirmation for " - + projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket() - + " will expire today. Please check and address it in a timely manner."; - String msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName()+ " " + projectLibraryBase.getTargetMarket() - + ": You have a regulation task confirmation to complete"; - FeishuMsgVo feishuMsgVo = new FeishuMsgVo(); - feishuMsgVo.setContent("Hello! The task will expire today. Please check and address it in a timely manner."); - feishuMsgVo.setTaskType("Regulation Task Confirmation"); - feishuMsgVo.setProject(projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket()); + *//*String msgContentCN = "您" + projectLibraryBase.getProjectName() + "(项目名称)法规清单的任务今天即将结束,请及时查看处理*//* + //String msgContentEN = "The regulation task confirmation for " + // + projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket() + // + " will expire today. Please check and address it in a timely manner."; + //String msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName()+ " " + projectLibraryBase.getTargetMarket() + // + ": You have a regulation task confirmation to complete"; + + //FeishuMsgVo feishuMsgVo = new FeishuMsgVo(); + //feishuMsgVo.setContent("Hello! The task will expire today. Please check and address it in a timely manner."); + //feishuMsgVo.setTaskType("Regulation Task Confirmation"); + //feishuMsgVo.setProject(projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket()); + - //飞书跳转链接 - String hrefFeishu = backUrl - + JumpLinkEnum.INVENTORY_AFFIRM_LINK.getLink() - + projectLibraryBase.getId() - + JumpLinkEnum.INVENTORY_AFFIRM_LINK.getType() - + "&projectName=" + projectNameInfoEO.getProjectName() + "-" - + projectYearNameInfoEO.getYearName() - + "&targetMarket=" + projectLibraryBase.getTargetMarket(); //系统内部跳转链接 - String href = "" + " View details" + ""; - String contentInfo = msgContentEN + " " + href; - Map sendMessageMap = new HashMap<>(); - sendMessageMap.put("hrefFeishu",hrefFeishu); - sendMessageMap.put("contentInfo",contentInfo); + //String href = "" + " View details" + ""; + //String contentInfo = msgContentEN + " " + href; + //Map sendMessageMap = new HashMap<>(); + //sendMessageMap.put("hrefFeishu",hrefFeishu); + //sendMessageMap.put("contentInfo",contentInfo); //发送消息 - projectLawsInventoryEOService.sendMessage(msgTitle, msgContentEN, currentDaysUserIdList, projectLibraryBase.getId(), sendMessageMap, feishuMsgVo, MessageTypeEnum.LIST_CONFIRMATION,MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName()); + //projectLawsInventoryEOService.sendMessage(msgTitle, msgContentEN, currentDaysUserIdList, projectLibraryBase.getId(), sendMessageMap, feishuMsgVo, MessageTypeEnum.LIST_CONFIRMATION,MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName()); } + + if(!overdueMap.isEmpty()){ + for (String key : overdueMap.keySet()) { + List overdueUserIdList = overdueMap.get(key); + overdueUserIdList = overdueUserIdList.stream().distinct().collect(Collectors.toList()); + List thirdIdList = new ArrayList<>(); + List sysUsers = sysUserService.listByIds(overdueUserIdList); + if (ObjectUtils.isNotEmpty(sysUsers)) { + thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList()); + } + //法规中英文 + ProjectLawsInventoryEO projectLawsInventoryEO = projectLawsInventoryEOMapper.selectById(key); + BussDocumentLibraryEO bussDocumentLibraryEO = bussDocumentLibraryEOService.queryById(projectLawsInventoryEO.getStandId()); + + String dueDate = sdf.format(projectLawsInventoryEO.getInventoryAffirmDueDate()); + try { + FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo(); + feishuMsgVo.setTitle(MessageType2Enum.REGULATION_TASK_CONFIRMATION.getCn() + "/" + MessageType2Enum.REGULATION_TASK_CONFIRMATION.getEn()); + feishuMsgVo.setCnContentUpper("您好,该任务已逾期,请尽快处理,谢谢!"); + feishuMsgVo.setCnContentLower("项目: " + PRN + + "\n法规: " + projectLawsInventoryEO.getSerialNumber() + " " + projectLawsInventoryEO.getTitle() + + "\n发起人: 系统通知" + + "\n截止时间: " + dueDate); + feishuMsgVo.setEnContentUpper("Hello! This task is overdue. Please address it ASAP. Thank you!"); + feishuMsgVo.setEnContentLower("Project:" + PRN + + "\nRegulation No: " + projectLawsInventoryEO.getSerialNumber() + " " + bussDocumentLibraryEO.getTitleEn() + + "\nInitiator: " + MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName() + + "\nDue Date: " + dueDate); + feishuMsgVo.setUrl(hrefFeishu); + feishuMsgVo.setColor(MsgColorEnum.YELLOW.getValue()); // 颜色 + feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo); + } catch (IOException e) { + log.error("飞书消息推送失败"); + } + } + } + } } - } + }*/ log.info("清单确认流程,定时任务结束 ====================================================="); } } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/TaskAffirmJob.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/TaskAffirmJob.java new file mode 100644 index 000000000..bd19f9e9b --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/TaskAffirmJob.java @@ -0,0 +1,271 @@ +package com.jero.modules.project.job; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.jero.common.constant.enums.MessageType2Enum; +import com.jero.common.constant.enums.MessageTypeEnum; +import com.jero.common.constant.enums.MsgColorEnum; +import com.jero.modules.document.entity.BussDocumentLibraryEO; +import com.jero.modules.document.service.IBussDocumentLibraryEOService; +import com.jero.modules.feishu.service.IFeishuService; +import com.jero.modules.feishu.vo.FeishuMsg2Vo; +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.ProjectYearNameInfoEO; +import com.jero.modules.project.enums.InventoryAffirmStatusEnum; +import com.jero.modules.project.enums.JumpLinkEnum; +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.mapper.ProjectYearNameInfoEOMapper; +import com.jero.modules.system.entity.SysUser; +import com.jero.modules.system.service.ISysUserService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.ObjectUtils; +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 org.springframework.beans.factory.annotation.Value; + +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +@Slf4j +public class TaskAffirmJob implements Job { + + @Autowired + private ProjectLawsInventoryEOMapper projectLawsInventoryEOMapper; + + @Autowired + private ProjectLibraryBaseMapper projectLibraryBaseMapper; + + @Autowired + private ProjectNameInfoEOMapper projectNameInfoEOMapper; + + @Autowired + private ProjectYearNameInfoEOMapper projectYearNameInfoEOMapper; + + @Autowired + private IFeishuService feishuService; + + @Value(value = "${jero.backUrl}") + private String backUrl; + + @Autowired + private ISysUserService sysUserService; + @Autowired + private IBussDocumentLibraryEOService bussDocumentLibraryEOService; + + + /** + * 任务确认流程定时 + * @param context + * @throws JobExecutionException + */ + @Override + public void execute(JobExecutionContext context) throws JobExecutionException { + log.info("任务确认流程,定时任务开启 ====================================================="); + + QueryWrapper queryWrapperInventory = new QueryWrapper<>(); + queryWrapperInventory.lambda().eq(ProjectLawsInventoryEO::getTaskAffirmStatus, InventoryAffirmStatusEnum.LIST_TO_CONFIRM.getValue()); + List projectLawsInventoryEOList = projectLawsInventoryEOMapper.selectList(queryWrapperInventory); + if (ObjectUtils.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 (ObjectUtils.isNotEmpty(projectLibraryBaseList)) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-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); + + QueryWrapper projectYearInfoEOQueryWrapper = new QueryWrapper<>(); + projectYearInfoEOQueryWrapper.lambda().eq(ProjectYearNameInfoEO::getId, projectLibraryBase.getYearNameId()); + ProjectYearNameInfoEO projectYearNameInfoEO = projectYearNameInfoEOMapper.selectOne(projectYearInfoEOQueryWrapper); + + + Map threeDaysMap = new HashMap<>(); + Map currentDaysMap = new HashMap<>(); + Map overdueMap = new HashMap<>(); + + for (ProjectLawsInventoryEO projectLawsInventoryEO : projectLawsInventoryEOList) { + if (StringUtils.equals(projectLibraryBase.getId(), projectLawsInventoryEO.getProjectLibraryId())) { + if (projectLawsInventoryEO.getTaskAffirmDueDate() != null) { + //结束日期是当前日期 + if (StringUtils.equals(currentDateStr, sdf.format(projectLawsInventoryEO.getTaskAffirmDueDate()))) { + if (StringUtils.isNotEmpty(projectLawsInventoryEO.getEngineeringInterfacePerson())) { + currentDaysMap.put(projectLawsInventoryEO.getId(), projectLawsInventoryEO.getEngineeringInterfacePerson()); + } + } + + //如果清单确认结束时间是当前系统时间后三天 + if (StringUtils.equals(threeDaysStr, sdf.format(projectLawsInventoryEO.getTaskAffirmDueDate()))) { + if (StringUtils.isNotEmpty(projectLawsInventoryEO.getEngineeringInterfacePerson())) { + threeDaysMap.put(projectLawsInventoryEO.getId(), projectLawsInventoryEO.getEngineeringInterfacePerson()); + } + } + + //逾期3天、七天、14天 + Calendar day3Later = new GregorianCalendar(); + day3Later.setTime(projectLawsInventoryEO.getTaskAffirmDueDate()); + day3Later.add(Calendar.DATE, 3); + Date overdue3Days = day3Later.getTime(); + + Calendar day7Later = new GregorianCalendar(); + day7Later.setTime(projectLawsInventoryEO.getTaskAffirmDueDate()); + day7Later.add(Calendar.DATE, 7); + Date overdue7Days = day7Later.getTime(); + + Calendar day14Later = new GregorianCalendar(); + day14Later.setTime(projectLawsInventoryEO.getTaskAffirmDueDate()); + day14Later.add(Calendar.DATE, 14); + Date overdue14Days = day14Later.getTime(); + + if (StringUtils.equals(sdf.format(overdue3Days), sdf.format(currentDate)) + || StringUtils.equals(sdf.format(overdue7Days), sdf.format(currentDate)) + || StringUtils.equals(sdf.format(overdue14Days), sdf.format(currentDate))) { + if (StringUtils.isNotEmpty(projectLawsInventoryEO.getEngineeringInterfacePerson())) { + overdueMap.put(projectLawsInventoryEO.getId(), projectLawsInventoryEO.getEngineeringInterfacePerson()); + } + } + + } + } + } + + //飞书跳转链接 + String hrefFeishu = backUrl + + JumpLinkEnum.INVENTORY_AFFIRM_LINK.getLink() + + projectLibraryBase.getId() + + JumpLinkEnum.INVENTORY_AFFIRM_LINK.getType() + + "&projectName=" + projectNameInfoEO.getProjectName() + "-" + + projectYearNameInfoEO.getYearName() + + "&targetMarket=" + projectLibraryBase.getTargetMarket(); + + //项目名称 + String PRN = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + "-" + projectLibraryBase.getTargetMarket() + "-" + projectLibraryBase.getProjectVersion(); + if (!threeDaysMap.isEmpty()) { + for (String key : threeDaysMap.keySet()) { + String[] ids = threeDaysMap.get(key).split(","); + List thirdIdList = new ArrayList<>(); + List sysUsers = sysUserService.listByIds(Arrays.asList(ids)); + if (ObjectUtils.isNotEmpty(sysUsers)) { + thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList()); + } + //法规中英文 + ProjectLawsInventoryEO projectLawsInventoryEO = projectLawsInventoryEOMapper.selectById(key); + BussDocumentLibraryEO bussDocumentLibraryEO = bussDocumentLibraryEOService.queryById(projectLawsInventoryEO.getStandId()); + try { + FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo(); + feishuMsgVo.setTitle(MessageType2Enum.REGULATION_TASK_CONFIRMATION.getCn() + "/" + MessageType2Enum.REGULATION_TASK_CONFIRMATION.getEn()); + feishuMsgVo.setCnContentUpper("您好,该任务将于3天后到期,请及时查看处理,谢谢!"); + feishuMsgVo.setCnContentLower("项目: " + PRN + + "\n法规: " + projectLawsInventoryEO.getSerialNumber() + " " + projectLawsInventoryEO.getTitle() + + "\n发起人: 系统通知"); + feishuMsgVo.setEnContentUpper("Hello! This task will expire in 3 days. Please check and address it in a timely manner. Thank you!"); + feishuMsgVo.setEnContentLower("Project:" + PRN + + "\nRegulation No: " + projectLawsInventoryEO.getSerialNumber() + " " + bussDocumentLibraryEO.getTitleEn() + + "\nInitiator: " + MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName()); + feishuMsgVo.setUrl(hrefFeishu); + feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色 + feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo); + } catch (IOException e) { + log.error("飞书消息推送失败"); + } + + } + } + + if (!currentDaysMap.isEmpty()) { + for (String key : currentDaysMap.keySet()) { + String[] ids = currentDaysMap.get(key).split(","); + List thirdIdList = new ArrayList<>(); + List sysUsers = sysUserService.listByIds(Arrays.asList(ids)); + if (ObjectUtils.isNotEmpty(sysUsers)) { + thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList()); + } + //法规中英文 + ProjectLawsInventoryEO projectLawsInventoryEO = projectLawsInventoryEOMapper.selectById(key); + BussDocumentLibraryEO bussDocumentLibraryEO = bussDocumentLibraryEOService.queryById(projectLawsInventoryEO.getStandId()); + try { + FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo(); + feishuMsgVo.setTitle(MessageType2Enum.REGULATION_TASK_CONFIRMATION.getCn() + "/" + MessageType2Enum.REGULATION_TASK_CONFIRMATION.getEn()); + feishuMsgVo.setCnContentUpper("您好,该任务今天即将到期,请尽快查看处理,谢谢!"); + feishuMsgVo.setCnContentLower("项目: " + PRN + + "\n法规: " + projectLawsInventoryEO.getSerialNumber() + " " + projectLawsInventoryEO.getTitle() + + "\n发起人: 系统通知"); + feishuMsgVo.setEnContentUpper("Hello! This task will expire today. Please check and address the task ASAP. Thank you!"); + feishuMsgVo.setEnContentLower("Project:" + PRN + + "\nRegulation No: " + projectLawsInventoryEO.getSerialNumber() + " " + bussDocumentLibraryEO.getTitleEn() + + "\nInitiator: " + MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName()); + feishuMsgVo.setUrl(hrefFeishu); + feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色 + feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo); + } catch (IOException e) { + log.error("飞书消息推送失败"); + } + } + } + + if (!overdueMap.isEmpty()) { + for (String key : overdueMap.keySet()) { + String[] ids = overdueMap.get(key).split(","); + List thirdIdList = new ArrayList<>(); + List sysUsers = sysUserService.listByIds(Arrays.asList(ids)); + if (ObjectUtils.isNotEmpty(sysUsers)) { + thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList()); + } + //法规中英文 + ProjectLawsInventoryEO projectLawsInventoryEO = projectLawsInventoryEOMapper.selectById(key); + BussDocumentLibraryEO bussDocumentLibraryEO = bussDocumentLibraryEOService.queryById(projectLawsInventoryEO.getStandId()); + + String dueDate = sdf.format(projectLawsInventoryEO.getInventoryAffirmDueDate()); + try { + FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo(); + feishuMsgVo.setTitle(MessageType2Enum.REGULATION_TASK_CONFIRMATION.getCn() + "/" + MessageType2Enum.REGULATION_TASK_CONFIRMATION.getEn()); + feishuMsgVo.setCnContentUpper("您好,该任务已逾期,请尽快处理,谢谢!"); + feishuMsgVo.setCnContentLower("项目: " + PRN + + "\n法规: " + projectLawsInventoryEO.getSerialNumber() + " " + projectLawsInventoryEO.getTitle() + + "\n发起人: 系统通知" + + "\n截止时间: " + dueDate); + feishuMsgVo.setEnContentUpper("Hello! This task is overdue. Please address it ASAP. Thank you!"); + feishuMsgVo.setEnContentLower("Project:" + PRN + + "\nRegulation No: " + projectLawsInventoryEO.getSerialNumber() + " " + bussDocumentLibraryEO.getTitleEn() + + "\nInitiator: " + MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName() + + "\nDue Date: " + dueDate); + feishuMsgVo.setUrl(hrefFeishu); + feishuMsgVo.setColor(MsgColorEnum.YELLOW.getValue()); // 颜色 + feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo); + } catch (IOException e) { + log.error("飞书消息推送失败"); + } + } + } + } + } + } + + log.info("任务确认流程,定时任务结束 ====================================================="); + } +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLawsInventoryEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLawsInventoryEOServiceImpl.java index 09d075aff..942f24020 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLawsInventoryEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLawsInventoryEOServiceImpl.java @@ -235,6 +235,9 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl" + " View details" + ""; + //href = "" + " View details" + ""; }else if(StringUtils.equals(msgType,MsgTypeEnum.DESIGN_START_MSG.getValue()) ||StringUtils.equals(msgType,MsgTypeEnum.PREHOMO_START_MSG.getValue()) ||StringUtils.equals(msgType,MsgTypeEnum.VERIFY_START_MSG.getValue()) @@ -2768,12 +2848,12 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl" + " View details" + ""; + //href = "" + " View details" + ""; } //String contentInfo = msgContentEN + " " + href; @@ -2783,6 +2863,25 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl sysUsers = sysUserService.listByIds(userIdList); + List thirdIdList = new ArrayList<>(); + if(CollectionUtils.isNotEmpty(sysUsers)){ + thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList()); + } + try { + FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo(); + feishuMsgVo.setTitle(msgTitle); + feishuMsgVo.setCnContentUpper(cnContentUpper); + feishuMsgVo.setCnContentLower(cnContentLower); + feishuMsgVo.setEnContentUpper(enContentUpper); + feishuMsgVo.setEnContentLower(enContentLower); + feishuMsgVo.setUrl(hrefFeishu); + feishuMsgVo.setColor(color); // 颜色 + feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo); + } catch (IOException e) { + log.error("飞书消息推送失败"); + } } }