From e2ebee91cf0afb4e2c16072362f62d0ddf42f2bf Mon Sep 17 00:00:00 2001 From: caihaohan Date: Mon, 27 Nov 2023 10:42:27 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=87=AA=E5=8A=A8=E5=8F=91=E8=B5=B7?= =?UTF-8?q?=E4=BC=81=E6=A0=87=E5=A4=8D=E5=AE=A1=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../esRecheck/entity/ProcessEsRecheck.java | 6 +++ .../service/ProcessEsRecheckService.java | 2 + .../impl/ProcessEsRecheckServiceImpl.java | 39 ++++++++++++++ .../laws/enterprise/job/ESRecheckPlanJob.java | 51 ++++++++++++++++++- .../service/ILawsContactManageService.java | 14 +++++ .../impl/LawsContactManageServiceImpl.java | 25 +++++++++ 6 files changed, 136 insertions(+), 1 deletion(-) diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/entity/ProcessEsRecheck.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/entity/ProcessEsRecheck.java index 82ad2182..4e7bf89c 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/entity/ProcessEsRecheck.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/entity/ProcessEsRecheck.java @@ -73,6 +73,12 @@ public class ProcessEsRecheck implements Serializable { @ApiModelProperty(value = "流程实例Id") private String processInstanceId; + /** + * 企标Id + */ + @ApiModelProperty(value = "企标Id") + private String standardId; + /** * 企标编号 */ diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/service/ProcessEsRecheckService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/service/ProcessEsRecheckService.java index e1aeb42a..60edcf2c 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/service/ProcessEsRecheckService.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/service/ProcessEsRecheckService.java @@ -13,6 +13,8 @@ public interface ProcessEsRecheckService extends IService { void startProcess(ESRecheckDataVO recheckData); + void autoStartProcess(ESRecheckDataVO recheckData); + void saveToDraft(ESRecheckDataVO recheckData); ESRecheckDataVO getHandleData(String taskId); diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/service/impl/ProcessEsRecheckServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/service/impl/ProcessEsRecheckServiceImpl.java index b0afd780..8e1c75af 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/service/impl/ProcessEsRecheckServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esRecheck/service/impl/ProcessEsRecheckServiceImpl.java @@ -87,6 +87,45 @@ public class ProcessEsRecheckServiceImpl extends ServiceImpl variables = recheckData.getFlowUser(); + // 当前数据的标准化工程师 + String standardEngineerId = variables.get("standardEngineer").toString(); + String standardizationUserId = variables.get("standardizationUser").toString(); + String userId = StrUtil.isNotBlank(standardizationUserId) ? standardizationUserId : standardEngineerId; + // 设置流程变量 + Map actVariables = this.setVariables(variables); + // 启动流程 + ProcessInstance processInstance = actFlowCommonService.startProcess(processDefinitionKey, actVariables); + // 获取流程实例ID + String processDefinitionId = processInstance.getProcessDefinitionId(); + String processInstanceId = processInstance.getId(); + // 手动设置所有流程变量 + actFlowCommonService.setProcessVariables(processInstanceId, actVariables); + // 设置流程实例Id + esRecheck.setProcessInstanceId(processInstanceId); + // 保存到业务流程表 + saveOrUpdate(esRecheck); + // 保存选人信息 + processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(variables)); + // 根据流程实例id更新流程总表 + String prcName = common.getPrcName(); + String prcMes = common.getPrcMes(); + Date dueTime = common.getDueTime(); + Integer prcType = ProcessTypeEnum.ES_RECHECK.getValue(); + actFlowCommonService.updateProcessAll(processInstanceId, userId, prcName, prcMes, prcType, dueTime); + } + public Map setVariables(Map flowUser) { Map actVariables = new HashMap<>(); for (Map.Entry entry : flowUser.entrySet()) { diff --git a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/ESRecheckPlanJob.java b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/ESRecheckPlanJob.java index 34b4c037..2849d991 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/ESRecheckPlanJob.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/enterprise/job/ESRecheckPlanJob.java @@ -1,12 +1,19 @@ package com.jero.modules.laws.enterprise.job; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.jero.common.constant.enums.YesOrNoEnum; +import com.jero.modules.activiti.process.common.entity.CommonVO; +import com.jero.modules.activiti.process.esRecheck.entity.ProcessEsRecheck; +import com.jero.modules.activiti.process.esRecheck.entity.vo.ESRecheckDataVO; +import com.jero.modules.activiti.process.esRecheck.service.ProcessEsRecheckService; import com.jero.modules.laws.enterprise.entity.EnterpriseStandardRecheckPlan; import com.jero.modules.laws.enterprise.service.EnterpriseStandardRecheckPlanService; import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; +import com.jero.modules.laws.system.service.ILawsContactManageService; import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; @@ -16,6 +23,7 @@ import java.time.LocalDate; import java.time.ZoneId; import java.time.ZonedDateTime; import java.util.Date; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -34,6 +42,12 @@ public class ESRecheckPlanJob implements Job { @Resource private ILawsEnterpriseStandardService esService; + @Resource + private ILawsContactManageService contactManageService; + + @Resource + private ProcessEsRecheckService recheckService; + @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { List allEs = esService.list(new LambdaQueryWrapper().eq(LawsEnterpriseStandard::getDelFlag, YesOrNoEnum.NO.getValue())); @@ -55,7 +69,7 @@ public class ESRecheckPlanJob implements Job { if (plusMonths.isBefore(now)) { // 判断是否已经存在复审计划 List recheckPlans = recheckPlanMap.get(es.getId()); - if (recheckPlans == null || recheckPlans.size() == 0) { + if (recheckPlans == null || recheckPlans.isEmpty()) { // 企标已经达到35个月,需要重新复审 EnterpriseStandardRecheckPlan recheckPlan = new EnterpriseStandardRecheckPlan(); recheckPlan.setStandardId(es.getId()); @@ -66,9 +80,44 @@ public class ESRecheckPlanJob implements Job { Date recheckDate = Date.from(zdtRecheck.toInstant()); recheckPlan.setRecheckDate(recheckDate); esRecheckPlanService.save(recheckPlan); + // 自动发起流程 + // 找到各自企标的联络人,如果找不到联络人则发给标准化工程师 + String deptId = es.getMainDraftingUnit(); + if (StrUtil.isBlank(deptId)) { + log.error("企标复审流程发起失败,企标Id为{}的企标部门ID为空,无法找到其联络人", deptId); + continue; + } + String standardizationUser = contactManageService.findContactUserByDept(deptId); + String standardEngineer = null; + if (StrUtil.isBlank(standardizationUser)) { + standardEngineer = contactManageService.findStandardEngineerByDept(deptId); + } + if (StrUtil.isBlank(standardizationUser) && StrUtil.isBlank(standardEngineer)) { + log.error("企标复审流程发起失败,无法找到企标Id为{}的联络人和标准化工程师", deptId); + continue; + } + // 构建发起流程数据 + ESRecheckDataVO esRecheckDataVO = this.getEsRecheckDataVO(es, standardizationUser, standardEngineer); + // 发起流程 + recheckService.autoStartProcess(esRecheckDataVO); } } } log.info("企标复审计划定时任务执行完成"); } + + private ESRecheckDataVO getEsRecheckDataVO(LawsEnterpriseStandard es, String standardizationUser, String standardEngineer) { + ESRecheckDataVO esRecheckDataVO = new ESRecheckDataVO(); + ProcessEsRecheck recheck = new ProcessEsRecheck(); + recheck.setStandardId(es.getId()); + CommonVO commonVO = new CommonVO(); + commonVO.setPrcName(es.getStandardNumber() + "-" + es.getStandardName() + "-复审"); + Map map = new HashMap<>(); + map.put("standardizationUser", standardizationUser); + map.put("standardEngineer", standardEngineer); + esRecheckDataVO.setCommon(commonVO); + esRecheckDataVO.setData(recheck); + esRecheckDataVO.setFlowUser(map); + return esRecheckDataVO; + } } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/system/service/ILawsContactManageService.java b/laws-modules/src/main/java/com/jero/modules/laws/system/service/ILawsContactManageService.java index ec8c1cb1..8a0e9e7c 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/system/service/ILawsContactManageService.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/system/service/ILawsContactManageService.java @@ -73,4 +73,18 @@ public interface ILawsContactManageService extends IService { * @return */ LawsContactManage queryById(String id); + + /** + * 根据部门Id返回其联络人 + * @param deptId + * @return + */ + String findContactUserByDept(String deptId); + + /** + * 根据部门Id返回其标准化工程师 + * @param deptId + * @return + */ + String findStandardEngineerByDept(String deptId); } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/system/service/impl/LawsContactManageServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/system/service/impl/LawsContactManageServiceImpl.java index 6846cb40..c3d0b27b 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/system/service/impl/LawsContactManageServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/system/service/impl/LawsContactManageServiceImpl.java @@ -1,5 +1,6 @@ package com.jero.modules.laws.system.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.jero.modules.laws.system.entity.LawsContactManage; import com.jero.modules.laws.system.mapper.LawsContactManageMapper; @@ -115,4 +116,28 @@ public class LawsContactManageServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(LawsContactManage::getDepartId, deptId); + List list = list(wrapper); + if (list == null || list.isEmpty()) { + return null; + } else { + return list.get(0).getContactId(); + } + } + + @Override + public String findStandardEngineerByDept(String deptId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(LawsContactManage::getDepartId, deptId); + List list = list(wrapper); + if (list == null || list.isEmpty()) { + return null; + } else { + return list.get(0).getEngineerId(); + } + } }