feat: 自动发起企标复审流程
This commit is contained in:
+6
@@ -73,6 +73,12 @@ public class ProcessEsRecheck implements Serializable {
|
||||
@ApiModelProperty(value = "流程实例Id")
|
||||
private String processInstanceId;
|
||||
|
||||
/**
|
||||
* 企标Id
|
||||
*/
|
||||
@ApiModelProperty(value = "企标Id")
|
||||
private String standardId;
|
||||
|
||||
/**
|
||||
* 企标编号
|
||||
*/
|
||||
|
||||
+2
@@ -13,6 +13,8 @@ public interface ProcessEsRecheckService extends IService<ProcessEsRecheck> {
|
||||
|
||||
void startProcess(ESRecheckDataVO recheckData);
|
||||
|
||||
void autoStartProcess(ESRecheckDataVO recheckData);
|
||||
|
||||
void saveToDraft(ESRecheckDataVO recheckData);
|
||||
|
||||
ESRecheckDataVO getHandleData(String taskId);
|
||||
|
||||
+39
@@ -87,6 +87,45 @@ public class ProcessEsRecheckServiceImpl extends ServiceImpl<ProcessEsRecheckMap
|
||||
actFlowCommonService.updateProcessAll(processInstanceId, userId, prcName, prcMes, prcType, dueTime);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void autoStartProcess(ESRecheckDataVO recheckData) {
|
||||
// 执行流程发起前的操作
|
||||
this.startRunTask(recheckData);
|
||||
// 流程Key
|
||||
String processDefinitionKey = ProcessType.ES_RECHECK.getProcessKey();
|
||||
// 业务数据
|
||||
ProcessEsRecheck esRecheck = recheckData.getData();
|
||||
// 通用数据
|
||||
CommonVO common = recheckData.getCommon();
|
||||
// 人员数据
|
||||
Map<String, Object> variables = recheckData.getFlowUser();
|
||||
// 当前数据的标准化工程师
|
||||
String standardEngineerId = variables.get("standardEngineer").toString();
|
||||
String standardizationUserId = variables.get("standardizationUser").toString();
|
||||
String userId = StrUtil.isNotBlank(standardizationUserId) ? standardizationUserId : standardEngineerId;
|
||||
// 设置流程变量
|
||||
Map<String, Object> 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<String, Object> setVariables(Map<String, Object> flowUser) {
|
||||
Map<String, Object> actVariables = new HashMap<>();
|
||||
for (Map.Entry<String, Object> entry : flowUser.entrySet()) {
|
||||
|
||||
+50
-1
@@ -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<LawsEnterpriseStandard> allEs = esService.list(new LambdaQueryWrapper<LawsEnterpriseStandard>().eq(LawsEnterpriseStandard::getDelFlag, YesOrNoEnum.NO.getValue()));
|
||||
@@ -55,7 +69,7 @@ public class ESRecheckPlanJob implements Job {
|
||||
if (plusMonths.isBefore(now)) {
|
||||
// 判断是否已经存在复审计划
|
||||
List<EnterpriseStandardRecheckPlan> 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<String, Object> map = new HashMap<>();
|
||||
map.put("standardizationUser", standardizationUser);
|
||||
map.put("standardEngineer", standardEngineer);
|
||||
esRecheckDataVO.setCommon(commonVO);
|
||||
esRecheckDataVO.setData(recheck);
|
||||
esRecheckDataVO.setFlowUser(map);
|
||||
return esRecheckDataVO;
|
||||
}
|
||||
}
|
||||
|
||||
+14
@@ -73,4 +73,18 @@ public interface ILawsContactManageService extends IService<LawsContactManage> {
|
||||
* @return
|
||||
*/
|
||||
LawsContactManage queryById(String id);
|
||||
|
||||
/**
|
||||
* 根据部门Id返回其联络人
|
||||
* @param deptId
|
||||
* @return
|
||||
*/
|
||||
String findContactUserByDept(String deptId);
|
||||
|
||||
/**
|
||||
* 根据部门Id返回其标准化工程师
|
||||
* @param deptId
|
||||
* @return
|
||||
*/
|
||||
String findStandardEngineerByDept(String deptId);
|
||||
}
|
||||
|
||||
+25
@@ -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<LawsContactManageM
|
||||
public LawsContactManage queryById(String id) {
|
||||
return getById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String findContactUserByDept(String deptId) {
|
||||
LambdaQueryWrapper<LawsContactManage> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(LawsContactManage::getDepartId, deptId);
|
||||
List<LawsContactManage> list = list(wrapper);
|
||||
if (list == null || list.isEmpty()) {
|
||||
return null;
|
||||
} else {
|
||||
return list.get(0).getContactId();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String findStandardEngineerByDept(String deptId) {
|
||||
LambdaQueryWrapper<LawsContactManage> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(LawsContactManage::getDepartId, deptId);
|
||||
List<LawsContactManage> list = list(wrapper);
|
||||
if (list == null || list.isEmpty()) {
|
||||
return null;
|
||||
} else {
|
||||
return list.get(0).getEngineerId();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user