设计符合性确认定时器+催办调整

This commit is contained in:
CD
2022-11-02 14:15:16 +08:00
parent 53bae2d6d1
commit 02a8dcca28
5 changed files with 302 additions and 102 deletions
@@ -461,7 +461,7 @@ public class ProjectLawsInventoryEOController extends JeroController<ProjectLaws
@AutoLog(value = "任务清单催办") @AutoLog(value = "任务清单催办")
@ApiOperation(value="任务清单催办", notes="任务清单催办") @ApiOperation(value="任务清单催办", notes="任务清单催办")
@PostMapping(value = "/taskUrg") @PostMapping(value = "/taskUrg")
public Result<?> taskUrg(ProjectTaskUrgVo projectTaskUrgVo) { public Result<?> taskUrg(@RequestBody ProjectTaskUrgVo projectTaskUrgVo) {
return this.projectLawsInventoryEOService.taskUrg(projectTaskUrgVo); return this.projectLawsInventoryEOService.taskUrg(projectTaskUrgVo);
} }
@@ -155,13 +155,9 @@ public class TaskAffirmJob implements Job {
} }
//飞书跳转链接 //飞书跳转链接
String hrefFeishu = backUrl String hrefFeishu = backUrl
+ JumpLinkEnum.INVENTORY_AFFIRM_LINK.getLink() + JumpLinkEnum.TASK_AFFIRM_LINK.getLink();
+ projectLibraryBase.getId()
+ JumpLinkEnum.INVENTORY_AFFIRM_LINK.getType()
+ "&projectName=" + projectNameInfoEO.getProjectName() + "-"
+ projectYearNameInfoEO.getYearName()
+ "&targetMarket=" + projectLibraryBase.getTargetMarket();
//项目名称 //项目名称
String projectVersion = (com.jero.modules.system.util.StringUtils.isBlank(projectLibraryBase.getParentId()) && com.jero.modules.system.util.StringUtils.isBlank(projectLibraryBase.getProjectVersion())) ? "00" : projectLibraryBase.getProjectVersion(); String projectVersion = (com.jero.modules.system.util.StringUtils.isBlank(projectLibraryBase.getParentId()) && com.jero.modules.system.util.StringUtils.isBlank(projectLibraryBase.getProjectVersion())) ? "00" : projectLibraryBase.getProjectVersion();
@@ -1,7 +1,13 @@
package com.jero.modules.project.job; package com.jero.modules.project.job;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.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.feishu.vo.FeishuMsgVo;
import com.jero.modules.project.entity.*; import com.jero.modules.project.entity.*;
import com.jero.modules.project.enums.DesignComplianceStatusEnum; import com.jero.modules.project.enums.DesignComplianceStatusEnum;
@@ -13,8 +19,11 @@ import com.jero.modules.project.mapper.ProjectNameInfoEOMapper;
import com.jero.modules.project.mapper.ProjectYearNameInfoEOMapper; import com.jero.modules.project.mapper.ProjectYearNameInfoEOMapper;
import com.jero.modules.project.service.IProjectLawsInventoryEOService; import com.jero.modules.project.service.IProjectLawsInventoryEOService;
import com.jero.modules.project.service.IProjectTaskInventoryEOService; import com.jero.modules.project.service.IProjectTaskInventoryEOService;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysUserService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.quartz.Job; import org.quartz.Job;
import org.quartz.JobExecutionContext; import org.quartz.JobExecutionContext;
@@ -22,6 +31,7 @@ import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import java.io.IOException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -52,13 +62,20 @@ public class designComplianceJob implements Job {
@Value(value = "${jero.backUrl}") @Value(value = "${jero.backUrl}")
private String backUrl; private String backUrl;
@Autowired
private IBussDocumentLibraryEOService bussDocumentLibraryEOService;
@Autowired
private ISysUserService sysUserService;
@Autowired
private IFeishuService feishuService;
@Override @Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
log.info("设计符合性确认流程,定时任务开启 ====================================================="); log.info("设计符合性确认流程,定时任务开启 =====================================================");
//查询出已经启动了设计符合性流程的数据。 并且流程没有结束。 //查询出已经启动了设计符合性流程的数据。 并且流程没有结束。
QueryWrapper<ProjectTaskInventoryEO> queryProjectTaskInventoryWrapper = new QueryWrapper<>(); QueryWrapper<ProjectTaskInventoryEO> queryProjectTaskInventoryWrapper = new QueryWrapper<>();
queryProjectTaskInventoryWrapper.isNotNull("design_p_id"); queryProjectTaskInventoryWrapper.isNotNull("design_p_id");
queryProjectTaskInventoryWrapper.lambda().ne(ProjectTaskInventoryEO::getDesignStatus, DesignComplianceStatusEnum.REVIEW_COMPLETED.getValue()); queryProjectTaskInventoryWrapper.lambda().eq(ProjectTaskInventoryEO::getDesignStatus, DesignComplianceStatusEnum.TO_SUBMIT.getValue());
List<ProjectTaskInventoryEO> projectTaskInventoryEOList = projectTaskInventoryEOService.getBaseMapper().selectList(queryProjectTaskInventoryWrapper); List<ProjectTaskInventoryEO> projectTaskInventoryEOList = projectTaskInventoryEOService.getBaseMapper().selectList(queryProjectTaskInventoryWrapper);
if(CollectionUtils.isNotEmpty(projectTaskInventoryEOList)){ if(CollectionUtils.isNotEmpty(projectTaskInventoryEOList)){
@@ -79,15 +96,24 @@ public class designComplianceJob implements Job {
Date currentDate = new Date(); Date currentDate = new Date();
//获取后三天前的时间 //两周
Calendar calendar=new GregorianCalendar(); Calendar twoWeeksLaterCalendar=new GregorianCalendar();
calendar.setTime(new Date()); twoWeeksLaterCalendar.setTime(new Date());
calendar.add(Calendar.DATE,3); twoWeeksLaterCalendar.add(Calendar.DATE,14);
Date threeDays = calendar.getTime(); Date twoWeeksLaterDays = twoWeeksLaterCalendar.getTime();
String twoWeeksLaterDaysStr = sdf.format(twoWeeksLaterDays);
String threeDaysStr = sdf.format(threeDays); //一周
Calendar oneWeekLaterCalendar=new GregorianCalendar();
oneWeekLaterCalendar.setTime(new Date());
oneWeekLaterCalendar.add(Calendar.DATE,7);
Date oneWeekLaterDays = oneWeekLaterCalendar.getTime();
String oneWeekLaterDaysStr = sdf.format(oneWeekLaterDays);
//当天
String currentDateStr = sdf.format(currentDate); String currentDateStr = sdf.format(currentDate);
String msgTitle = MessageType2Enum.DESIGN_COMPLIANCE_CONFIRMATION.getCn() + "/" + MessageType2Enum.DESIGN_COMPLIANCE_CONFIRMATION.getEn();
for (ProjectLibraryBase projectLibraryBase : projectLibraryBaseList) { for (ProjectLibraryBase projectLibraryBase : projectLibraryBaseList) {
QueryWrapper<ProjectNameInfoEO> projectNameInfoEOQueryWrapper = new QueryWrapper<>(); QueryWrapper<ProjectNameInfoEO> projectNameInfoEOQueryWrapper = new QueryWrapper<>();
projectNameInfoEOQueryWrapper.lambda().eq(ProjectNameInfoEO::getId,projectLibraryBase.getProjectNameId()); projectNameInfoEOQueryWrapper.lambda().eq(ProjectNameInfoEO::getId,projectLibraryBase.getProjectNameId());
@@ -97,109 +123,249 @@ public class designComplianceJob implements Job {
projectYearInfoEOQueryWrapper.lambda().eq(ProjectYearNameInfoEO::getId,projectLibraryBase.getYearNameId()); projectYearInfoEOQueryWrapper.lambda().eq(ProjectYearNameInfoEO::getId,projectLibraryBase.getYearNameId());
ProjectYearNameInfoEO projectYearNameInfoEO = projectYearNameInfoEOMapper.selectOne(projectYearInfoEOQueryWrapper); ProjectYearNameInfoEO projectYearNameInfoEO = projectYearNameInfoEOMapper.selectOne(projectYearInfoEOQueryWrapper);
//项目名称
String projectVersion = (com.jero.modules.system.util.StringUtils.isBlank(projectLibraryBase.getParentId()) && com.jero.modules.system.util.StringUtils.isBlank(projectLibraryBase.getProjectVersion())) ? "00" : projectLibraryBase.getProjectVersion();
String projectName = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + "-" + projectLibraryBase.getTargetMarket() + "-" + projectVersion;
for (ProjectLawsInventoryEO projectLawsInventoryEO: projectLawsInventoryEOList) { for (ProjectLawsInventoryEO projectLawsInventoryEO: projectLawsInventoryEOList) {
List<String> threeDaysUserIdList = new ArrayList<>();
//法规中英文
String LAW_CN = projectLawsInventoryEO.getSerialNumber() + " " + projectLawsInventoryEO.getTitle();//法规
BussDocumentLibraryEO bussDocumentLibraryEO = bussDocumentLibraryEOService.queryById(projectLawsInventoryEO.getStandId());
String LAW_EN = "";
if (ObjectUtils.isEmpty(bussDocumentLibraryEO)) {
LAW_EN = LAW_CN;
} else {
LAW_EN = projectLawsInventoryEO.getSerialNumber() + " " + bussDocumentLibraryEO.getTitleEn();//法规
}
List<String> twoWeeksLaterUserIdList = new ArrayList<>();
List<String> oneWeeksLaterUserIdList = new ArrayList<>();
List<String> currentDaysUserIdList = new ArrayList<>(); List<String> currentDaysUserIdList = new ArrayList<>();
List<String> dueUserIdList = new ArrayList<>();
for (ProjectTaskInventoryEO projectTaskInventoryEO : projectTaskInventoryEOList) { if(StringUtils.equals(projectLawsInventoryEO.getProjectLibraryId(),projectLibraryBase.getId())){
if(StringUtils.equals(projectTaskInventoryEO.getProjectLawsInventoryId(),projectLawsInventoryEO.getId())){ //如果设计符合性 - 结束日期是当前日期
//如果设计符合性 - 结束日期是当前日期 if(projectLawsInventoryEO.getDesignDueDate() != null){
if(projectLawsInventoryEO.getDesignDueDate() != null){ if(StringUtils.equals(currentDateStr,sdf.format(projectLawsInventoryEO.getDesignDueDate()))){
if(StringUtils.equals(currentDateStr,sdf.format(projectLawsInventoryEO.getDesignDueDate()))){ if(StringUtils.isNotEmpty(projectLawsInventoryEO.getDesignDutyId())){
if(StringUtils.isEmpty(projectTaskInventoryEO.getDesignSendMsgFlag())){ currentDaysUserIdList.add(projectLawsInventoryEO.getDesignDutyId());
if(StringUtils.isNotEmpty(projectLawsInventoryEO.getDesignDutyId())){
currentDaysUserIdList.add(projectLawsInventoryEO.getDesignDutyId());
}if(StringUtils.isNotEmpty(projectLawsInventoryEO.getDesignInitiatorId())){
currentDaysUserIdList.add(projectLawsInventoryEO.getDesignInitiatorId());
}
projectTaskInventoryEO.setDesignSendMsgFlag(SendMsgFlagEnum.FALSE.getValue());
projectTaskInventoryEOService.updateById(projectTaskInventoryEO);
}
} }
}
//如果设计符合性 - 结束日期是三天后的日期 //如果设计符合性 - 结束日期是两周后的日期
if(StringUtils.equals(threeDaysStr,sdf.format(projectLawsInventoryEO.getDesignDueDate()))){ if(StringUtils.equals(twoWeeksLaterDaysStr,sdf.format(projectLawsInventoryEO.getDesignDueDate()))){
if(StringUtils.isEmpty(projectTaskInventoryEO.getDesignSendMsgCurrentFlag())){ if(StringUtils.isNotEmpty(projectLawsInventoryEO.getDesignDutyId())){
if(StringUtils.isNotEmpty(projectLawsInventoryEO.getDesignDutyId())){ twoWeeksLaterUserIdList.add(projectLawsInventoryEO.getDesignDutyId());
threeDaysUserIdList.add(projectLawsInventoryEO.getDesignDutyId()); }
}if(StringUtils.isNotEmpty(projectLawsInventoryEO.getDesignInitiatorId())){ }
threeDaysUserIdList.add(projectLawsInventoryEO.getDesignInitiatorId());
} //如果设计符合性 - 结束日期是一周后的日期
projectTaskInventoryEO.setDesignSendMsgCurrentFlag(SendMsgFlagEnum.FALSE.getValue()); if(StringUtils.equals(oneWeekLaterDaysStr,sdf.format(projectLawsInventoryEO.getDesignDueDate()))){
projectTaskInventoryEOService.updateById(projectTaskInventoryEO); if(StringUtils.isNotEmpty(projectLawsInventoryEO.getDesignDutyId())){
} oneWeeksLaterUserIdList.add(projectLawsInventoryEO.getDesignDutyId());
}
}
//逾期三天、七天、十四天
Calendar due3Days = new GregorianCalendar();
due3Days.setTime(projectLawsInventoryEO.getDesignDueDate());
due3Days.add(Calendar.DATE, 3);
Date overdue3Days = due3Days.getTime();
Calendar due7Days = new GregorianCalendar();
due7Days.setTime(projectLawsInventoryEO.getDesignDueDate());
due7Days.add(Calendar.DATE, 7);
Date overdue7Days = due7Days.getTime();
Calendar due14Days = new GregorianCalendar();
due14Days.setTime(projectLawsInventoryEO.getDesignDueDate());
due14Days.add(Calendar.DATE, 14);
Date overdue14Days = due14Days.getTime();
if (StringUtils.equals(sdf.format(overdue3Days), currentDateStr)
|| StringUtils.equals(sdf.format(overdue7Days), currentDateStr)
|| StringUtils.equals(sdf.format(overdue14Days), currentDateStr)) {
if(StringUtils.isNotEmpty(projectLawsInventoryEO.getDesignDutyId())){
dueUserIdList.add(projectLawsInventoryEO.getDesignDutyId());
} }
} }
} }
} }
if(CollectionUtils.isNotEmpty(threeDaysUserIdList)){
threeDaysUserIdList = threeDaysUserIdList.stream().distinct().collect(Collectors.toList());
String hrefFeishu = backUrl
+ JumpLinkEnum.DESIGN_AFFIRM_LINK.getLink()
+ projectLibraryBase.getId()
+ JumpLinkEnum.DESIGN_AFFIRM_LINK.getType()
+ "&projectName=" + projectNameInfoEO.getProjectName();
if (ObjectUtils.isNotEmpty(dueUserIdList)) {
dueUserIdList = dueUserIdList.stream().distinct().collect(Collectors.toList());
List<SysUser> sysUsers = sysUserService.listByIds(dueUserIdList);
List<String> 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("您好,您的任务已逾期,请尽快处理");
feishuMsgVo.setCnContentLower("项目: " + projectName +
"\n法规: " + LAW_CN +
"\n发起人: 系统通知"+
"\n截止时间: "+ sdf.format(projectLawsInventoryEO.getDesignDueDate()));
feishuMsgVo.setEnContentUpper("Hello! Your task is overdue. Please check and address it ASAP");
feishuMsgVo.setEnContentLower("Project: " + projectName +
"\nRegulation No: " + LAW_EN +
"\nInitiator: " + MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName()+
"\nDue Date: "+ sdf.format(projectLawsInventoryEO.getDesignDueDate()));
feishuMsgVo.setUrl(hrefFeishu);
feishuMsgVo.setColor(MsgColorEnum.YELLOW.getValue()); // 颜色
feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo);
} catch (IOException e) {
log.error("飞书消息推送失败");
}
}
if (ObjectUtils.isNotEmpty(oneWeeksLaterUserIdList)) {
oneWeeksLaterUserIdList = oneWeeksLaterUserIdList.stream().distinct().collect(Collectors.toList());
List<SysUser> sysUsers = sysUserService.listByIds(oneWeeksLaterUserIdList);
List<String> 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("您好,您的任务将于7天后结束,请及时查看处理");
feishuMsgVo.setCnContentLower("项目: " + projectName +
"\n法规: " + LAW_CN +
"\n发起人: 系统通知");
feishuMsgVo.setEnContentUpper("Hello! Your task will end in 7 days. Please check and address it in a timely manner");
feishuMsgVo.setEnContentLower("Project: " + projectName +
"\nRegulation No: " + LAW_EN +
"\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(CollectionUtils.isNotEmpty(twoWeeksLaterUserIdList)){
twoWeeksLaterUserIdList = twoWeeksLaterUserIdList.stream().distinct().collect(Collectors.toList());
List<SysUser> sysUsers = sysUserService.listByIds(twoWeeksLaterUserIdList);
List<String> 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("您好,您的任务将于14天后结束,请及时查看处理");
feishuMsgVo.setCnContentLower("项目: " + projectName +
"\n法规: " + LAW_CN +
"\n发起人: 系统通知");
feishuMsgVo.setEnContentUpper("Hello! Your task will end in 14 days. Please check and address it in a timely manner");
feishuMsgVo.setEnContentLower("Project: " + projectName +
"\nRegulation No: " + LAW_EN +
"\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("飞书消息推送失败");
}
//您XXX(项目名称)中GB 7258的设计符合性确认剩余处理时间还有3天,请及时查看处理 //您XXX(项目名称)中GB 7258的设计符合性确认剩余处理时间还有3天,请及时查看处理
String msgContentEN = "The remaining processing time for the design compliance confirmation for " //String msgContentEN = "The remaining processing time for the design compliance confirmation for "
+ projectLawsInventoryEO.getSerialNumber() + " in " + projectNameInfoEO.getProjectName() // + projectLawsInventoryEO.getSerialNumber() + " in " + projectNameInfoEO.getProjectName()
+ projectYearNameInfoEO.getYearName()+ " " // + projectYearNameInfoEO.getYearName()+ " "
+ projectLibraryBase.getTargetMarket() // + projectLibraryBase.getTargetMarket()
+ " are 3 days. Please check and address it in a timely manner."; // + " are 3 days. Please check and address it in a timely manner.";
String msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName()+ " " + projectLibraryBase.getTargetMarket() //String msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName()+ " " + projectLibraryBase.getTargetMarket()
+ ": You have a design compliance task to complete"; // + ": You have a design compliance task to complete";
FeishuMsgVo feishuMsgVo = new FeishuMsgVo(); //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.setContent("Hello! The remaining processing time for the task are 3 days. Please check and address it in a timely manner.");
feishuMsgVo.setTaskType("Design Compliance Confirmation"); //feishuMsgVo.setTaskType("Design Compliance Confirmation");
feishuMsgVo.setProject(projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket()); //feishuMsgVo.setProject(projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket());
feishuMsgVo.setRegulationNo(projectLawsInventoryEO.getSerialNumber()); //feishuMsgVo.setRegulationNo(projectLawsInventoryEO.getSerialNumber());
//飞书跳转链接 //飞书跳转链接
String hrefFeishu = backUrl + JumpLinkEnum.DESIGN_AFFIRM_LINK.getLink() + projectLibraryBase.getId() + JumpLinkEnum.DESIGN_AFFIRM_LINK.getType(); //String hrefFeishu = backUrl + JumpLinkEnum.DESIGN_AFFIRM_LINK.getLink() + projectLibraryBase.getId() + JumpLinkEnum.DESIGN_AFFIRM_LINK.getType();
//系统内部跳转链接 //系统内部跳转链接
String href = "<a href='" //String href = "<a href='"
+ JumpLinkEnum.DESIGN_AFFIRM_LINK.getLink() + projectLibraryBase.getId() + JumpLinkEnum.DESIGN_AFFIRM_LINK.getType() // + JumpLinkEnum.DESIGN_AFFIRM_LINK.getLink() + projectLibraryBase.getId() + JumpLinkEnum.DESIGN_AFFIRM_LINK.getType()
+ "'>" + " View details" + "</a>"; // + "'>" + " View details" + "</a>";
String contentInfo = msgContentEN + " " + href; //String contentInfo = msgContentEN + " " + href;
Map<String,Object> sendMessageMap = new HashMap<>(); //Map<String,Object> sendMessageMap = new HashMap<>();
sendMessageMap.put("hrefFeishu",hrefFeishu); //sendMessageMap.put("hrefFeishu",hrefFeishu);
sendMessageMap.put("contentInfo",contentInfo); //sendMessageMap.put("contentInfo",contentInfo);
//发送消息 //发送消息
projectLawsInventoryEOService.sendMessage(msgTitle, msgContentEN,threeDaysUserIdList,projectLawsInventoryEO.getId(),sendMessageMap, feishuMsgVo, MessageTypeEnum.COMPLIANCE_CONFIRMATION,MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName()); //projectLawsInventoryEOService.sendMessage(msgTitle, msgContentEN,threeDaysUserIdList,projectLawsInventoryEO.getId(),sendMessageMap, feishuMsgVo, MessageTypeEnum.COMPLIANCE_CONFIRMATION,MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName());
} }
if(CollectionUtils.isNotEmpty(currentDaysUserIdList)){ if(CollectionUtils.isNotEmpty(currentDaysUserIdList)){
currentDaysUserIdList = currentDaysUserIdList.stream().distinct().collect(Collectors.toList()); currentDaysUserIdList = currentDaysUserIdList.stream().distinct().collect(Collectors.toList());
List<SysUser> sysUsers = sysUserService.listByIds(currentDaysUserIdList);
List<String> 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("您好,您的任务将于今天到期,请及时查看处理");
feishuMsgVo.setCnContentLower("项目: " + projectName +
"\n法规: " + LAW_CN +
"\n发起人: 系统通知");
feishuMsgVo.setEnContentUpper("Hello! Your task will expire today. Please check and address it ASAP");
feishuMsgVo.setEnContentLower("Project: " + projectName +
"\nRegulation No: " + LAW_EN +
"\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("飞书消息推送失败");
}
//您XXX(项目名称)中GB 7258的设计符合性确认任务今天即将结束,请及时查看处理 //您XXX(项目名称)中GB 7258的设计符合性确认任务今天即将结束,请及时查看处理
String msgContentEN = "The design compliance confirmation of " //String msgContentEN = "The design compliance confirmation of "
+ projectLawsInventoryEO.getSerialNumber() + " in " + projectNameInfoEO.getProjectName() // + projectLawsInventoryEO.getSerialNumber() + " in " + projectNameInfoEO.getProjectName()
+ " will expire today. Please check and address it in time."; // + " will expire today. Please check and address it in time.";
String msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName()+ " " + projectLibraryBase.getTargetMarket() //String msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName()+ " " + projectLibraryBase.getTargetMarket()
+ ": You have a design compliance task to complete"; // + ": You have a design compliance task to complete";
FeishuMsgVo feishuMsgVo = new FeishuMsgVo(); //FeishuMsgVo feishuMsgVo = new FeishuMsgVo();
feishuMsgVo.setContent("Hello! The task will expire today. Please check and address it in a timely manner."); //feishuMsgVo.setContent("Hello! The task will expire today. Please check and address it in a timely manner.");
feishuMsgVo.setTaskType("Design Compliance Confirmation"); //feishuMsgVo.setTaskType("Design Compliance Confirmation");
feishuMsgVo.setProject(projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket()); //feishuMsgVo.setProject(projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket());
feishuMsgVo.setRegulationNo(projectLawsInventoryEO.getSerialNumber()); //feishuMsgVo.setRegulationNo(projectLawsInventoryEO.getSerialNumber());
//飞书跳转链接 //飞书跳转链接
String hrefFeishu = backUrl //String hrefFeishu = backUrl
+ JumpLinkEnum.DESIGN_AFFIRM_LINK.getLink() // + JumpLinkEnum.DESIGN_AFFIRM_LINK.getLink()
+ projectLibraryBase.getId() // + projectLibraryBase.getId()
+ JumpLinkEnum.DESIGN_AFFIRM_LINK.getType() // + JumpLinkEnum.DESIGN_AFFIRM_LINK.getType()
+ "&projectName=" + projectNameInfoEO.getProjectName(); // + "&projectName=" + projectNameInfoEO.getProjectName();
//系统内部跳转链接 //系统内部跳转链接
String href = "<a href='" //String href = "<a href='"
+ JumpLinkEnum.DESIGN_AFFIRM_LINK.getLink() + projectLibraryBase.getId() + JumpLinkEnum.DESIGN_AFFIRM_LINK.getType() // + JumpLinkEnum.DESIGN_AFFIRM_LINK.getLink() + projectLibraryBase.getId() + JumpLinkEnum.DESIGN_AFFIRM_LINK.getType()
+ "&projectName=" + projectNameInfoEO.getProjectName() // + "&projectName=" + projectNameInfoEO.getProjectName()
+ "'>" + " View details" + "</a>"; // + "'>" + " View details" + "</a>";
String contentInfo = msgContentEN + " " + href; //String contentInfo = msgContentEN + " " + href;
Map<String,Object> sendMessageMap = new HashMap<>(); //Map<String,Object> sendMessageMap = new HashMap<>();
sendMessageMap.put("hrefFeishu",hrefFeishu); //sendMessageMap.put("hrefFeishu",hrefFeishu);
sendMessageMap.put("contentInfo",contentInfo); //sendMessageMap.put("contentInfo",contentInfo);
//发送消息 //发送消息
projectLawsInventoryEOService.sendMessage(msgTitle, msgContentEN,currentDaysUserIdList,projectLawsInventoryEO.getId(),sendMessageMap, feishuMsgVo, MessageTypeEnum.COMPLIANCE_CONFIRMATION,MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName()); //projectLawsInventoryEOService.sendMessage(msgTitle, msgContentEN,currentDaysUserIdList,projectLawsInventoryEO.getId(),sendMessageMap, feishuMsgVo, MessageTypeEnum.COMPLIANCE_CONFIRMATION,MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName());
} }
} }
} }
@@ -9035,19 +9035,28 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
@Override @Override
public Result<?> taskUrg(ProjectTaskUrgVo projectTaskUrgVo) { public Result<?> taskUrg(ProjectTaskUrgVo projectTaskUrgVo) {
if (ObjectUtils.isEmpty(projectTaskUrgVo.getProjectLawsInventoryIds())) { if (ObjectUtils.isEmpty(projectTaskUrgVo.getProjectLawsInventoryIds())) {
throw new JeroBootException("请选择至少一条数据"); if (CutEnum.CN.getValue().equals(projectTaskUrgVo.getCut())) {
throw new JeroBootException("请选择至少一条数据");
} else {
throw new JeroBootException("Please select at least one piece of data");
}
} }
if (ObjectUtils.isEmpty(projectTaskUrgVo.getType())) { if (ObjectUtils.isEmpty(projectTaskUrgVo.getType())) {
throw new JeroBootException("请选择催办类型"); if (CutEnum.CN.getValue().equals(projectTaskUrgVo.getCut())) {
throw new JeroBootException("请选择催办类型");
} else {
throw new JeroBootException("Please select the type of reminder");
}
} }
String title = ""; String title = "";
if (FlowTypeEnum.SJFHXSHLC.getValue().equals(projectTaskUrgVo.getCut())) { if (FlowTypeEnum.SJFHXSHLC.getValue().equals(projectTaskUrgVo.getType())) {
title = MessageType2Enum.DESIGN_COMPLIANCE_CONFIRMATION.getCn() + "/" + MessageType2Enum.DESIGN_COMPLIANCE_CONFIRMATION.getEn(); title = MessageType2Enum.DESIGN_COMPLIANCE_CONFIRMATION.getCn() + "/" + MessageType2Enum.DESIGN_COMPLIANCE_CONFIRMATION.getEn();
} else if (FlowTypeEnum.PREHOMOQRLC.getValue().equals(projectTaskUrgVo.getCut())) { } else if (FlowTypeEnum.PREHOMOQRLC.getValue().equals(projectTaskUrgVo.getType())) {
title = MessageType2Enum.PRE_HOMO_CONFIRMATION.getCn() + "/" + MessageType2Enum.PRE_HOMO_CONFIRMATION.getEn(); title = MessageType2Enum.PRE_HOMO_CONFIRMATION.getCn() + "/" + MessageType2Enum.PRE_HOMO_CONFIRMATION.getEn();
} else if (FlowTypeEnum.YZFHXSCLC.getValue().equals(projectTaskUrgVo.getCut())) { } else if (FlowTypeEnum.YZFHXSCLC.getValue().equals(projectTaskUrgVo.getType())) {
title = MessageType2Enum.VALIDATION_COMPLIANCE_CONFIRMATION.getCn() + "/" + MessageType2Enum.VALIDATION_COMPLIANCE_CONFIRMATION.getEn(); title = MessageType2Enum.VALIDATION_COMPLIANCE_CONFIRMATION.getCn() + "/" + MessageType2Enum.VALIDATION_COMPLIANCE_CONFIRMATION.getEn();
} else { } else {
if (CutEnum.CN.getValue().equals(projectTaskUrgVo.getCut())) { if (CutEnum.CN.getValue().equals(projectTaskUrgVo.getCut())) {
@@ -9056,8 +9065,8 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
throw new JeroBootException("Please select the correct type of reminder"); throw new JeroBootException("Please select the correct type of reminder");
} }
} }
String[] ProjectLawsInventoryIds = projectTaskUrgVo.getProjectLawsInventoryIds().split(",");
ProjectLawsInventoryEO projectLawsInventoryEO = baseMapper.selectById(projectTaskUrgVo.getProjectLawsInventoryIds().get(0)); ProjectLawsInventoryEO projectLawsInventoryEO = baseMapper.selectById(ProjectLawsInventoryIds[0]);
if (ObjectUtils.isEmpty(projectLawsInventoryEO)) { if (ObjectUtils.isEmpty(projectLawsInventoryEO)) {
if (CutEnum.CN.getValue().equals(projectTaskUrgVo.getCut())) { if (CutEnum.CN.getValue().equals(projectTaskUrgVo.getCut())) {
throw new JeroBootException("程序异常,请刷新页面并重新操作"); throw new JeroBootException("程序异常,请刷新页面并重新操作");
@@ -9092,7 +9101,7 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
+ projectYearNameInfoEO.getYearName() + projectYearNameInfoEO.getYearName()
+ "&targetMarket=" + projectLibraryBase.getTargetMarket(); + "&targetMarket=" + projectLibraryBase.getTargetMarket();
for (String projectLawsInventoryId : projectTaskUrgVo.getProjectLawsInventoryIds()) { for (String projectLawsInventoryId : ProjectLawsInventoryIds) {
ProjectLawsInventoryEO lawsInventoryEO = baseMapper.selectById(projectLawsInventoryId); ProjectLawsInventoryEO lawsInventoryEO = baseMapper.selectById(projectLawsInventoryId);
if (ObjectUtils.isEmpty(lawsInventoryEO)) { if (ObjectUtils.isEmpty(lawsInventoryEO)) {
if (CutEnum.CN.getValue().equals(projectTaskUrgVo.getCut())) { if (CutEnum.CN.getValue().equals(projectTaskUrgVo.getCut())) {
@@ -9109,18 +9118,48 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
String userId = ""; String userId = "";
String dueDate = null; String dueDate = null;
if (FlowTypeEnum.SJFHXSHLC.getValue().equals(projectTaskUrgVo.getCut())) {
QueryWrapper<ProjectTaskInventoryEO> queryProjectTaskInventoryWrapper = new QueryWrapper<>();
queryProjectTaskInventoryWrapper.isNotNull("design_p_id");
queryProjectTaskInventoryWrapper.lambda().eq(ProjectTaskInventoryEO::getProjectLawsInventoryId, projectLawsInventoryId);
List<ProjectTaskInventoryEO> list = projectTaskInventoryEOService.list(queryProjectTaskInventoryWrapper);
if (FlowTypeEnum.SJFHXSHLC.getValue().equals(projectTaskUrgVo.getType())) {
dueDate = sdf.format(lawsInventoryEO.getDesignDueDate()); dueDate = sdf.format(lawsInventoryEO.getDesignDueDate());
if (DesignComplianceStatusEnum.TO_REVIEW.getValue().equals(list.get(0).getDesignStatus())
||DesignComplianceStatusEnum.REVIEW_COMPLETED.getValue().equals(list.get(0).getDesignStatus())) {
if (CutEnum.CN.getValue().equals(projectTaskUrgVo.getCut())) {
throw new JeroBootException(LAW_CN + "已提交,无法催办");
} else {
throw new JeroBootException(LAW_EN + "is committed,can't be urged");
}
}
if (ObjectUtils.isNotEmpty(lawsInventoryEO.getDesignDutyId())) { if (ObjectUtils.isNotEmpty(lawsInventoryEO.getDesignDutyId())) {
userId = lawsInventoryEO.getDesignDutyId(); userId = lawsInventoryEO.getDesignDutyId();
} }
} else if (FlowTypeEnum.PREHOMOQRLC.getValue().equals(projectTaskUrgVo.getCut())) { } else if (FlowTypeEnum.PREHOMOQRLC.getValue().equals(projectTaskUrgVo.getType())) {
dueDate = sdf.format(lawsInventoryEO.getPrehomoDueDate()); dueDate = sdf.format(lawsInventoryEO.getPrehomoDueDate());
if (DesignComplianceStatusEnum.TO_REVIEW.getValue().equals(list.get(0).getDesignStatus())
||DesignComplianceStatusEnum.REVIEW_COMPLETED.getValue().equals(list.get(0).getDesignStatus())) {
if (CutEnum.CN.getValue().equals(projectTaskUrgVo.getCut())) {
throw new JeroBootException(LAW_CN + "已提交,无法催办");
} else {
throw new JeroBootException(LAW_EN + "is committed,can't be urged");
}
}
if (ObjectUtils.isNotEmpty(lawsInventoryEO.getPrehomoDutyId())) { if (ObjectUtils.isNotEmpty(lawsInventoryEO.getPrehomoDutyId())) {
userId = lawsInventoryEO.getPrehomoDutyId(); userId = lawsInventoryEO.getPrehomoDutyId();
} }
} else if (FlowTypeEnum.YZFHXSCLC.getValue().equals(projectTaskUrgVo.getCut())) { } else if (FlowTypeEnum.YZFHXSCLC.getValue().equals(projectTaskUrgVo.getType())) {
dueDate = sdf.format(lawsInventoryEO.getVerifyDueDate()); dueDate = sdf.format(lawsInventoryEO.getVerifyDueDate());
if (DesignComplianceStatusEnum.TO_REVIEW.getValue().equals(list.get(0).getDesignStatus())
||DesignComplianceStatusEnum.REVIEW_COMPLETED.getValue().equals(list.get(0).getDesignStatus())) {
if (CutEnum.CN.getValue().equals(projectTaskUrgVo.getCut())) {
throw new JeroBootException(LAW_CN + "已提交,无法催办");
} else {
throw new JeroBootException(LAW_EN + "is committed,can't be urged");
}
}
if (ObjectUtils.isNotEmpty(lawsInventoryEO.getVerifyDutyId())) { if (ObjectUtils.isNotEmpty(lawsInventoryEO.getVerifyDutyId())) {
userId = lawsInventoryEO.getVerifyDutyId(); userId = lawsInventoryEO.getVerifyDutyId();
} }
@@ -2,14 +2,13 @@ package com.jero.modules.project.vo;
import lombok.Data; import lombok.Data;
import java.util.List;
@Data @Data
public class ProjectTaskUrgVo { public class ProjectTaskUrgVo {
private String cut; private String cut;
private List<String> projectLawsInventoryIds; private String projectLawsInventoryIds;
private String type; private String type;