feat: 法规符合性排查流程-流程发起

This commit is contained in:
2024-07-05 16:10:30 +08:00
parent 478d7f0f54
commit 0fc132ebf5
8 changed files with 192 additions and 67 deletions
@@ -12,6 +12,7 @@ import lombok.Getter;
public enum ProcessType {
STANDARD_INTERPRET("标准解读流程", "2", "standard_interpret", "StandardInterpretFlowServiceImpl"),
STANDARD_COMPLIANCE_CHECK("法规符合性评估流程", "3", "laws-evaluation-main", "ProcessStandardComplianceCheckServiceImpl"),
;
private final String name;
@@ -15,6 +15,9 @@ import com.jero.modules.activiti.process.common.entity.CommonVO;
import com.jero.modules.activiti.process.common.entity.ProcessDraft;
import com.jero.modules.activiti.process.common.entity.StandTypeVO;
import com.jero.modules.activiti.process.common.enums.StandardStateEnum;
import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO;
import com.jero.modules.activiti.process.fb.dto.BasicTaskInfoDTO;
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan;
@@ -128,30 +131,16 @@ public class ActFlowCommonService {
}
}
/**
* 循环设置流程变量
*
* @param processInstanceId
* @param variables
*/
public void setProcessVariables(String processInstanceId, Map<String, Object> variables) {
for (Map.Entry<String, Object> entry : variables.entrySet()) {
String key = entry.getKey();
runtimeService.setVariable(processInstanceId, key, entry.getValue());
}
}
/**
* 更新审批表为完成,填充数据
*
* @param commonVO
* @param processTask
* @param taskId
* @param pass
*/
public void updateApprovalInfo(CommonVO commonVO, String taskId, boolean pass) {
public void updateApprovalInfo(BasicTaskInfoDTO processTask, String taskId) {
ProcessApprovalRecord approvalRecord = processApprovalRecordService.getToDoByTaskId(taskId);
approvalRecord.setCommitText(commonVO.getCommitText());
approvalRecord.setCommitFile(commonVO.getCommitFile());
approvalRecord.setCommitText(processTask.getHandleText());
approvalRecord.setCommitFile(processTask.getHandleFile());
approvalRecord.setFinishFlag(FinishFlagEnum.COMPLETE.getValue());
approvalRecord.setEndTime(new Date());
// 使用流程引擎根据TaskId找到NodeId
@@ -294,19 +283,14 @@ public class ActFlowCommonService {
/**
* 更新流程主表
*
* @param processInstanceId
* @param userId
* @param prcName
* @param prcMes
* @param prcType
* @param dueTime
* @param processInfo
*/
public void updateProcessAll(String processInstanceId, String userId, String prcName, String prcMes, Integer prcType, Date dueTime) {
ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId);
process.setPrcName(prcName);
process.setPrcMes(prcMes);
process.setDueTime(dueTime);
process.setPrcType(prcType);
public void updateProcessAll(BasicProcessInfoDTO processInfo) {
ProcessAll process = processAllService.getByProcessInstanceId(processInfo.getProcessInstanceId());
process.setPrcName(processInfo.getProcessName());
process.setPrcMes(processInfo.getProcessDescription());
process.setDueTime(processInfo.getProcessDueDate());
process.setPrcType(processInfo.getProcessType());
processAllService.updateById(process);
}
@@ -375,10 +359,10 @@ public class ActFlowCommonService {
return null;
}
public void getExistDraftAndRemove(CommonVO common, ProcessTypeEnum processTypeEnum) {
public void getExistDraftAndRemove(String draftId) {
// 删除草稿表数据
if (StrUtil.isNotBlank(common.getDraftId())) {
processDraftService.removeById(common.getDraftId());
if (StrUtil.isNotBlank(draftId)) {
processDraftService.removeById(draftId);
}
}
@@ -466,19 +450,10 @@ public class ActFlowCommonService {
/**
* 强制撤回流程-保存草稿
*
* @param common
* @param processTypeEnum
* @param jsonData
* @param processInfoVO
* @param userId
*/
public void saveFirstNodeDraft(CommonVO common, ProcessTypeEnum processTypeEnum, Object data) {
}
public void saveFirstNodeDraft(CommonVO common, ProcessTypeEnum processTypeEnum, String jsonData) {
}
public void saveFirstNodeDraftCustomUserId(CommonVO common, ProcessTypeEnum processTypeEnum, String jsonData, String userId) {
public void saveFirstNodeDraft(ProcessInfoVO processInfoVO, String userId) {
}
@@ -42,8 +42,7 @@ public class ProcessDemoService extends ServiceImpl<ProcessDemoMapper, ProcessDe
private ISysBaseAPI sysBaseAPI;
@Resource
private IProcessHandleService processHandleService;
@Resource
private ProcessAllService processAllService;
@Resource private ProcessAllService processAllService;
@Resource
private TaskService taskService;
@Resource
@@ -8,23 +8,15 @@ package com.jero.modules.activiti.process.fb.common;
public class ProcessDefinitionKey {
private ProcessDefinitionKey() {}
public static final String FB_ENTRY_CHANGE = "fb-entry-change"; // 标准法规入库/变更流程
public static final String FB_STANDARD_CONSULTATION = "fb-standard-consultation"; // 标准征求意见流程
public static final String FB_STANDARD_PURCHASE = "fb-standard-purchase"; // 法规采购流程
public static final String FB_STANDARD_COMPLIANCE_ASSESSMENT = "fb-standard-compliance-assessment"; // 法规合规评估流程
//项目合规评估流程
public static final String PROJECT_ASSESS = "project-assessment";
//项目合规评估流程
public static final String PROJECT_NOT_MET = "project-not-met";
//项目合规评估流程
public static final String PROJECT_STANDARD = "standard-assessment";
//demo流程
public static final String DEMO_MAIN = "demo_main";
public static final String DEMO_JDR = "demo_jdr";
public static final String DEMO_CXFF = "demo_cxff";
// 法规符合性排查流程-主流程
public static final String STANDARD_COMPLIANCE_CHECK_MAIN = "standard_compliance_check_main";
// 法规符合性排查流程-分发
public static final String STANDARD_COMPLIANCE_CHECK_DISTRIBUTE = "standard_compliance_check_distribute";
// 法规符合性排查流程-重新分发
public static final String STANDARD_COMPLIANCE_CHECK_REDISTRIBUTE = "standard_compliance_check_redistribute";
}
@@ -8,6 +8,7 @@ import com.jero.modules.activiti.enums.ProcessTypeEnum;
import com.jero.modules.activiti.process.common.entity.ProcessDraft;
import com.jero.modules.activiti.process.common.entity.TransferVO;
import com.jero.modules.activiti.process.common.service.ActFlowCommonService;
import com.jero.modules.activiti.process.demo.vo.ProcessDemoVO;
import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
import com.jero.modules.activiti.process.standardComplianceCheck.entity.ProcessStandardComplianceCheck;
@@ -67,6 +68,14 @@ public class ProcessStandardComplianceCheckController extends JeroController<Pro
return Result.OK();
}
@AutoLog(value = "法规符合性排查流程-提交")
@ApiOperation(value = "法规符合性排查流程-提交", notes = "法规符合性排查流程-提交")
@PostMapping("/submit")
public Result<T> submit(@Validated @RequestBody ProcessInfoVO<ProcessSccVO> processInfoVO) {
sccService.submit(processInfoVO);
return Result.OK();
}
/**
* 转办
*
@@ -1,18 +1,26 @@
package com.jero.modules.activiti.process.standardComplianceCheck.listener;
import com.jero.modules.activiti.process.demo.service.ProcessDemoService;
import com.jero.modules.activiti.util.SpringContextUtil;
import com.jero.modules.activiti.process.standardComplianceCheck.service.IProcessStandardComplianceCheckService;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* @author liJiaRao
* @date 2023-06-18 15:43
*/
@Slf4j
@Component
public class ProcessSCCCreateListener implements TaskListener {
@Resource
private IProcessStandardComplianceCheckService sccService;
@Override
public void notify(DelegateTask delegateTask) {
ProcessDemoService demoService = SpringContextUtil.getBean(ProcessDemoService.class);
demoService.createAutoTaskListener(delegateTask);
sccService.createAutoTaskListener(delegateTask);
}
}
@@ -4,6 +4,7 @@ import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
import com.jero.modules.activiti.process.standardComplianceCheck.entity.ProcessStandardComplianceCheck;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.modules.activiti.process.standardComplianceCheck.entity.vo.ProcessSccVO;
import org.activiti.engine.delegate.DelegateTask;
/**
* @author ThinkBook
@@ -17,4 +18,8 @@ public interface IProcessStandardComplianceCheckService extends IService<Process
void approveTask(ProcessInfoVO<ProcessSccVO> processInfoVO, boolean b);
ProcessInfoVO<ProcessSccVO> getHandleData(String taskId);
void createAutoTaskListener(DelegateTask delegateTask);
void submit(ProcessInfoVO<ProcessSccVO> processInfoVO);
}
@@ -1,13 +1,34 @@
package com.jero.modules.activiti.process.standardComplianceCheck.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.modules.activiti.common.ActivitiCommon;
import com.jero.modules.activiti.enums.ProcessTypeEnum;
import com.jero.modules.activiti.process.common.enums.ProcessType;
import com.jero.modules.activiti.process.common.service.ActFlowCommonService;
import com.jero.modules.activiti.process.demo.common.ProcessDemoCommon;
import com.jero.modules.activiti.process.demo.vo.ProcessDemoVO;
import com.jero.modules.activiti.process.fb.common.ProcessDefinitionKey;
import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO;
import com.jero.modules.activiti.process.fb.dto.BasicTaskInfoDTO;
import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
import com.jero.modules.activiti.process.standardComplianceCheck.entity.ProcessStandardComplianceCheck;
import com.jero.modules.activiti.process.standardComplianceCheck.entity.vo.ProcessSccVO;
import com.jero.modules.activiti.process.standardComplianceCheck.service.IProcessStandardComplianceCheckService;
import com.jero.modules.activiti.process.standardComplianceCheck.mapper.ProcessStandardComplianceCheckMapper;
import com.jero.modules.activiti.process.standardComplianceCheck.service.IProcessStandardComplianceCheckService;
import com.jero.modules.activiti.service.ProcessNodeLinkService;
import com.jero.modules.sys.utils.UserUtils;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.runtime.ProcessInstance;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static com.jero.modules.activiti.process.standardComplianceCheck.common.ProcessStandardComplianceCheckConstants.*;
/**
* @author ThinkBook
* @description 针对表【process_standard_compliance_check】的数据库操作Service实现
@@ -17,13 +38,76 @@ import org.springframework.stereotype.Service;
public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<ProcessStandardComplianceCheckMapper, ProcessStandardComplianceCheck>
implements IProcessStandardComplianceCheckService {
@Resource
private IProcessHandleService processHandleService;
@Resource
private ActFlowCommonService actFlowCommonService;
@Resource
private ProcessNodeLinkService processNodeLinkService;
@Override
public void startProcess(ProcessInfoVO<ProcessSccVO> processInfoVO) {
// 流程Key
String processDefinitionKey = ProcessType.STANDARD_COMPLIANCE_CHECK.getProcessKey();
// 流程信息
BasicProcessInfoDTO processInfo = processInfoVO.getBasicProcessInfoDTO();
// 任务信息
BasicTaskInfoDTO processTask = processInfoVO.getBasicTaskInfoDTO();
// 人员信息
Map<String, Object> userInfoMap = processInfoVO.getUserInfoMap();
// 业务数据
ProcessSccVO businessInfoDTO = processInfoVO.getBusinessInfoDTO();
// 当前用户Id
String userId = UserUtils.getUserId();
// 设置流程变量
Map<String, Object> actVariables = this.setVariables(businessInfoDTO);
// 删除草稿
actFlowCommonService.getExistDraftAndRemove(processInfoVO.getDraftId());
// 启动流程
ProcessInstance processInstance = actFlowCommonService.startProcess(processDefinitionKey, actVariables);
// 获取流程实例ID
String processDefinitionId = processInstance.getProcessDefinitionId();
String processInstanceId = processInstance.getId();
processInfo.setProcessInstanceId(processInstanceId);
processInfo.setProcessDefinitionId(processDefinitionId);
processInfo.setProcessType(ProcessTypeEnum.STANDARD_COMPLIANCE_CHECK.getValue());
// 保存数据
// dataList.forEach(data -> data.setProcessInstanceId(processInstanceId));
// dataList.forEach(ProcessEsAnnualInit::setDateEditFlag);
// saveOrUpdateBatch(dataList);
// 保存选人信息
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(userInfoMap));
// 获取第一个任务的taskId
String taskId = actFlowCommonService.getFirstTaskId(processInstanceId, userId, processDefinitionId);
// 保存第一个节点的草稿
actFlowCommonService.saveFirstNodeDraft(processInfoVO, userId);
// 更新审批表为完成,填充数据
actFlowCommonService.updateApprovalInfo(processTask, taskId);
// 自动完成第一个任务
actFlowCommonService.completeTask(taskId, userId);
// 根据流程实例id更新流程总表
actFlowCommonService.updateProcessAll(processInfo);
}
private Map<String, Object> setVariables(ProcessSccVO businessInfoDTO) {
// TODO 转List
return new HashMap<>();
}
private Map<String, Object> getUserMap(Map<String, Object> map) {
// TODO 转逗号拼接
return map;
}
@Override
public void approveTask(ProcessInfoVO<ProcessSccVO> processInfoVO, boolean pass) {
}
@Override
public void approveTask(ProcessInfoVO<ProcessSccVO> processInfoVO, boolean b) {
public void submit(ProcessInfoVO<ProcessSccVO> processInfoVO) {
}
@@ -31,6 +115,58 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
public ProcessInfoVO<ProcessSccVO> getHandleData(String taskId) {
return null;
}
@Override
public void createAutoTaskListener(DelegateTask delegateTask) {
String taskId = delegateTask.getId();
String taskDefinitionKey = delegateTask.getTaskDefinitionKey();
String processInstanceId = delegateTask.getProcessInstanceId();
Map<String, Object> userInfoMap = new HashMap<>();
ProcessInfoVO<ProcessDemoVO> processInfoVO = new ProcessInfoVO<>();
BasicProcessInfoDTO basicProcessInfoDTO = new BasicProcessInfoDTO();
String mainInstanceId =(String) delegateTask.getVariable(ActivitiCommon.MAIN_INSTANCE_ID);
//保存父子关联信息
Map<String, Object> variables = new HashMap<>();
variables.put(ActivitiCommon.MAIN_INSTANCE_ID, mainInstanceId != null ? mainInstanceId : processInstanceId);
variables.put(ActivitiCommon.PARENT_TASK_ID, taskId);
switch (taskDefinitionKey) {
//主排查人分批下发后自动任务
case AUTO_TASK_1:
case AUTO_TASK_3:
// TODO
List<String> interpreterList = (List<String>) delegateTask.getVariable(ProcessDemoCommon.INTERPRETER);
for (String interpreter : interpreterList) {
userInfoMap.put(ProcessDemoCommon.INTERPRETER, interpreter);
// 流程定义id
String definitionId = processHandleService.getDefinitionIdByKey(ProcessDefinitionKey.STANDARD_COMPLIANCE_CHECK_DISTRIBUTE);
basicProcessInfoDTO.setProcessDefinitionId(definitionId);
basicProcessInfoDTO.setProcessType(ProcessTypeEnum.STANDARD_COMPLIANCE_CHECK.getValue()); // 流程类型
processInfoVO.setBasicProcessInfoDTO(basicProcessInfoDTO);
processInfoVO.setProcessVariables(variables);
processInfoVO.setUserInfoMap(userInfoMap);
processHandleService.startChildrenProcess(processInfoVO);
}
break;
//设计工程师驳回后自动任务
case AUTO_TASK_2:
// TODO
String mainInterpreter = (String) delegateTask.getVariable(ProcessDemoCommon.MAIN_INTERPRETER);
userInfoMap.put(ProcessDemoCommon.MAIN_INTERPRETER, mainInterpreter);
// 流程定义id
String definitionId = processHandleService.getDefinitionIdByKey(ProcessDefinitionKey.STANDARD_COMPLIANCE_CHECK_REDISTRIBUTE);
basicProcessInfoDTO.setProcessDefinitionId(definitionId);
basicProcessInfoDTO.setProcessType(ProcessTypeEnum.STANDARD_COMPLIANCE_CHECK.getValue()); // 流程类型
processInfoVO.setBasicProcessInfoDTO(basicProcessInfoDTO);
processInfoVO.setProcessVariables(variables);
processInfoVO.setUserInfoMap(userInfoMap);
processHandleService.startChildrenProcess(processInfoVO);
break;
default:
}
}
}