diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/listener/MyGlobalEventListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/listener/MyGlobalEventListener.java index e4cb0bf8..51c5d03b 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/listener/MyGlobalEventListener.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/listener/MyGlobalEventListener.java @@ -20,6 +20,7 @@ import com.jero.modules.activiti.service.ProcessApprovalRecordService; import com.jero.modules.activiti.service.ProcessNodeService; import com.jero.modules.activiti.util.SpringContextUtil; import com.jero.modules.laws.common.util.CurrentUserUtil; +import lombok.Synchronized; import lombok.extern.slf4j.Slf4j; import org.activiti.engine.delegate.event.ActivitiEvent; import org.activiti.engine.delegate.event.ActivitiEventListener; diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectnotmet/job/NotMetWarningJob.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectnotmet/job/NotMetWarningJob.java new file mode 100644 index 00000000..8f39010b --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectnotmet/job/NotMetWarningJob.java @@ -0,0 +1,85 @@ +package com.jero.modules.activiti.process.projectnotmet.job; + +import cn.hutool.core.date.DateField; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.jero.common.api.dto.message.SendMessageDTO; +import com.jero.common.api.vo.SendMessageAPI; +import com.jero.modules.activiti.entity.ProcessAll; +import com.jero.modules.activiti.entity.ProcessApprovalRecord; +import com.jero.modules.activiti.enums.FinishFlagEnum; +import com.jero.modules.activiti.process.projectnotmet.entity.ProcessProjectNotMet; +import com.jero.modules.activiti.process.projectnotmet.service.ProcessProjectNotMetService; +import com.jero.modules.activiti.service.ProcessAllService; +import com.jero.modules.activiti.service.ProcessApprovalRecordService; +import com.jero.modules.laws.common.constant.MessageTemplateCodeCommon; +import com.jero.modules.projectLibrary.common.AssessCommon; +import com.jero.modules.projectLibrary.entity.LawsEvaluationNotMet; +import com.jero.modules.projectLibrary.service.ILawsEvaluationNotMetService; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author liJiaRao + * @date 2024-02-01 18:40 + */ +public class NotMetWarningJob implements Job { + @Resource + private SendMessageAPI sendMessageAPI; + @Resource + private ILawsEvaluationNotMetService lawsEvaluationNotMetService; + @Resource + private ProcessAllService processAllService; + @Resource + private ProcessProjectNotMetService processProjectNotMetService; + @Resource + private ProcessApprovalRecordService processApprovalRecordService; + @Override + public void execute(JobExecutionContext context) throws JobExecutionException { + DateTime date = DateUtil.parseDateTime(DateUtil.formatDateTime(new Date())); + date = date + .setField(DateField.HOUR_OF_DAY,0) + .setField(DateField.MINUTE,0) + .setField(DateField.SECOND,0); + //预计整改完成日期前一天 + DateTime theDayBefore = DateUtil.offsetDay(date, -1); + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(LawsEvaluationNotMet::getExpectedTime,theDayBefore); + wrapper.eq(LawsEvaluationNotMet::getState,AssessCommon.RECTIFICATION); + List notMetList = lawsEvaluationNotMetService.list(wrapper); + for (LawsEvaluationNotMet notMet : notMetList) { + String processInstanceId = notMet.getProcessInstanceId(); + ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId); + if (processAll == null){ + continue; + } + String projectId = processAll.getProjectId(); + ProcessProjectNotMet processProjectNotMet = processProjectNotMetService.getById(projectId); + List userIdList = new ArrayList<>(); + userIdList.add(processProjectNotMet.getManagerLeaderId()); + LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); + wrapper1.eq(ProcessApprovalRecord::getProcessInstanceId,processInstanceId); + wrapper1.eq(ProcessApprovalRecord::getFinishFlag, FinishFlagEnum.INCOMPLETE.getValue()); + ProcessApprovalRecord approvalRecord = processApprovalRecordService.getOne(wrapper1); + userIdList.add(approvalRecord.getUserId()); + //发送消息 + SendMessageDTO sendMessageDTO = new SendMessageDTO(); + sendMessageDTO.setTemplateCode(MessageTemplateCodeCommon.NOT_MET_WARNING); + String userIds = userIdList.stream().distinct().collect(Collectors.joining(",")); + sendMessageDTO.setToUserId(userIds); + Map sendMap = new HashMap<>(); + sendMap.put("prcName", processAll.getPrcName()); + sendMap.put("prcNum", processAll.getPrcNum()); + sendMessageDTO.setMap(sendMap); + sendMessageAPI.sendMessage(sendMessageDTO); + } + + } +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectnotmet/service/ProcessProjectNotMetService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectnotmet/service/ProcessProjectNotMetService.java index 60f65fda..08b2b14f 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectnotmet/service/ProcessProjectNotMetService.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectnotmet/service/ProcessProjectNotMetService.java @@ -129,12 +129,15 @@ public class ProcessProjectNotMetService extends ServiceImpl processInfoVO) { - + //保存标准分发的设计工程师 + Map userInfoMap = processInfoVO.getUserInfoMap(); ProcessProjectNotMetVO businessInfoDTO = processInfoVO.getBusinessInfoDTO(); ProcessProjectNotMet processProjectNotMet = businessInfoDTO.getProcessProjectNotMet(); if (processProjectNotMet == null){ processProjectNotMet = new ProcessProjectNotMet(); } + String managerLeader = (String) userInfoMap.get(ProcessProjectNotMetCommon.MANAGER_LEADER); + processProjectNotMet.setManagerLeaderId(managerLeader); this.save(processProjectNotMet); String processProjectNotMetId = processProjectNotMet.getId(); processInfoVO.setBusinessId(processProjectNotMetId); @@ -153,8 +156,7 @@ public class ProcessProjectNotMetService extends ServiceImpl userInfoMap = processInfoVO.getUserInfoMap(); + //启动流程 BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO(); //改为手动流程名称 @@ -163,7 +165,6 @@ public class ProcessProjectNotMetService extends ServiceImpl wrapper = new LambdaUpdateWrapper<>(); wrapper.set(LawsEvaluationNotMet::getState, RECTIFICATION); wrapper.set(LawsEvaluationNotMet::getPrcNum, processAll.getPrcNum()); + wrapper.set(LawsEvaluationNotMet::getProcessInstanceId, processAll.getProcessInstanceId()); wrapper.in(LawsEvaluationNotMet::getId,projectNotMetIdList); lawsEvaluationNotMetService.update(wrapper); //start 先保存一份初始草稿 @@ -210,10 +212,10 @@ public class ProcessProjectNotMetService extends ServiceImpl variables = new HashMap<>(); if (!pass){ - String businessId = processInfoVO.getBusinessId(); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(ProcessProjectNotMetLink::getProcessId,businessId); wrapper.last("limit 1"); @@ -238,6 +240,10 @@ public class ProcessProjectNotMetService extends ServiceImpl userIdList = new ArrayList<>(); userIdList.add(userId); processHandleService.saveNodeUserLink(processDTO.getProcessInstanceId(), ProcessProjectNotMetCommon.ZGJLDSP, userIdList); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(ProcessProjectNotMet::getId,businessId); + updateWrapper.set(ProcessProjectNotMet::getManagerLeaderId,userId); + update(updateWrapper); } } @@ -271,6 +277,7 @@ public class ProcessProjectNotMetService extends ServiceImpl wrapper1 = new LambdaUpdateWrapper<>(); wrapper1.set(LawsEvaluationNotMet::getPrcNum, processAll.getPrcNum()); + wrapper1.set(LawsEvaluationNotMet::getProcessInstanceId, processAll.getProcessInstanceId()); wrapper1.set(LawsEvaluationNotMet::getFileId, processProjectNotMetLink.getFileId()); wrapper1.set(LawsEvaluationNotMet::getDescription, processProjectNotMetLink.getDescription()); wrapper1.in(LawsEvaluationNotMet::getId,processProjectNotMetLink.getProjectNotMetId()); diff --git a/laws-modules/src/main/java/com/jero/modules/laws/common/constant/MessageTemplateCodeCommon.java b/laws-modules/src/main/java/com/jero/modules/laws/common/constant/MessageTemplateCodeCommon.java index 1daed6fe..11cd454d 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/common/constant/MessageTemplateCodeCommon.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/common/constant/MessageTemplateCodeCommon.java @@ -29,5 +29,6 @@ public class MessageTemplateCodeCommon { public static final String ES_REVISION_ADVICE = "es_revision_advice"; // 【企标修订】征求意见 public static final String ES_ANNUAL_REPORT_CONTACT_USER = "es_annual_report_contact_user"; // 【企标年度制修订-各部门主动上报】部门联络人下发 public static final String FB_STANDARD_PURCHASE = "fb_standard_purchase"; // 【法规采购】流程结束 + public static final String NOT_MET_WARNING = "not_met_warning"; // 【未符合项跟踪流程】超期预警 } diff --git a/laws-modules/src/main/java/com/jero/modules/projectLibrary/entity/LawsEvaluationNotMet.java b/laws-modules/src/main/java/com/jero/modules/projectLibrary/entity/LawsEvaluationNotMet.java index 89a72287..21ba4c36 100644 --- a/laws-modules/src/main/java/com/jero/modules/projectLibrary/entity/LawsEvaluationNotMet.java +++ b/laws-modules/src/main/java/com/jero/modules/projectLibrary/entity/LawsEvaluationNotMet.java @@ -136,10 +136,13 @@ public class LawsEvaluationNotMet implements Serializable { private String orgCode; /**所属流程*/ - @Dict(dictTable = "process_all", dicText = "process_instance_id", dicCode = "prc_num") @ApiModelProperty(value = "所属流程") private String prcNum; + /**流程实例id*/ + @ApiModelProperty(value = "流程实例id") + private String processInstanceId; + /** * 依据描述 */