feat: scc流程各部门接口人分发获取数据接口

This commit is contained in:
2024-07-11 17:59:35 +08:00
parent 451b6752c6
commit 1e7c0f4705
3 changed files with 110 additions and 168 deletions
@@ -2,25 +2,21 @@ package com.jero.modules.activiti.process.common.service;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.jero.common.api.vo.ResultCommon;
import com.jero.common.exception.JeroBootException;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.enums.CommitFlagEnum;
import com.jero.modules.activiti.enums.FinishFlagEnum;
import com.jero.modules.activiti.enums.ProcessTypeEnum;
import com.jero.modules.activiti.process.common.common.DraftCommon;
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.ProcessSnapshot;
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.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService;
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
@@ -256,20 +252,6 @@ public class ActFlowCommonService {
return task.getProcessInstanceId();
}
public String getProcessDefId(String processInstanceId) {
ProcessInstance processInstance =
runtimeService.createProcessInstanceQuery()
.processInstanceId(processInstanceId)
.singleResult();
// 从ProcessInstance对象中获取processDefId
if (processInstance != null) {
return processInstance.getProcessDefinitionId();
} else {
throw new JeroBootException("未找到流程定义Id");
}
}
/**
* 更新流程主表
*
@@ -284,48 +266,6 @@ public class ActFlowCommonService {
processAllService.updateById(process);
}
/**
* 更新流程主表
*
* @param processInstanceId
* @param userId
* @param prcName
* @param prcMes
* @param prcType
* @param dueTime
*/
public void updateProcessAllWithUserId(String processInstanceId, String userId, String prcName, String prcMes, Integer prcType, Date dueTime) {
ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId);
process.setCreateUserId(userId);
process.setPrcName(prcName);
process.setPrcMes(prcMes);
process.setDueTime(dueTime);
process.setPrcType(prcType);
processAllService.updateById(process);
}
public void updateProcessAllWithProjectId(String processInstanceId, String prcName, String prcMes,
Integer prcType, Date dueTime, String projectId) {
ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId);
process.setPrcName(prcName);
process.setPrcMes(prcMes);
process.setDueTime(dueTime);
process.setPrcType(prcType);
process.setProjectId(projectId);
processAllService.updateById(process);
}
public StandTypeVO getStandTypeByStandNo(String standardNo) {
LambdaUpdateWrapper<EnterpriseStandardPlan> espWrapper = new LambdaUpdateWrapper<>();
espWrapper.eq(EnterpriseStandardPlan::getNewEnStandardNo, standardNo);
EnterpriseStandardPlan one = espService.getOne(espWrapper);
StandTypeVO standTypeVO = new StandTypeVO();
if (one != null) {
standTypeVO.setStandardType(one.getStandardType());
}
return standTypeVO;
}
public ProcessDraft getExistDraft(String draftId) {
String userId = UserUtils.getUserId();
LambdaQueryWrapper<ProcessDraft> draftWrapper = new LambdaQueryWrapper<>();
@@ -355,24 +295,6 @@ public class ActFlowCommonService {
}
}
public CommonVO getHandleCommon(String taskId) {
String processInstanceId = this.getProcessInstanceIdByTaskId(taskId);
String processDefinitionId = this.getProcessDefId(processInstanceId);
// 获取流程通用数据
ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId);
CommonVO commonVO = new CommonVO();
commonVO.setPrcName(process.getPrcName());
commonVO.setTaskId(process.getTaskId());
commonVO.setPrcMes(process.getPrcMes());
commonVO.setDueTime(process.getDueTime());
commonVO.setProcessDefinitionId(processDefinitionId);
commonVO.setProcessInstanceId(processInstanceId);
// 获取节点ID
ProcessApprovalRecord record = this.getNodeIdByTaskId(taskId);
commonVO.setNodeId(record.getNodeId());
return commonVO;
}
public void removeDraft(CommonVO commonVO) {
String userId = UserUtils.getUserId();
String taskId = commonVO.getTaskId();
@@ -385,22 +307,6 @@ public class ActFlowCommonService {
processDraftService.remove(draftWrapper);
}
/**
* 会签节点驳回后,将其余节点recode设置为 未处理 状态
*
* @param prcId
* @param nodeName
*/
public void updateOtherCountersignRecodeStatus(String prcId, String nodeName) {
LambdaUpdateWrapper<ProcessApprovalRecord> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(ProcessApprovalRecord::getProcessInstanceId, prcId);
updateWrapper.eq(ProcessApprovalRecord::getFinishFlag, FinishFlagEnum.INCOMPLETE.getValue());
updateWrapper.eq(ProcessApprovalRecord::getTaskName, nodeName);
updateWrapper.set(ProcessApprovalRecord::getCommitText, CommitFlagEnum.UNDISPOSED.getName());
updateWrapper.set(ProcessApprovalRecord::getFinishFlag, null);
processApprovalRecordService.update(updateWrapper);
}
public String getOriginTaskAssignee(String taskId) {
ProcessApprovalRecord approvalRecord = processApprovalRecordService.getToDoByTaskId(taskId);
return approvalRecord.getOriginUserId();
@@ -441,4 +347,19 @@ public class ActFlowCommonService {
draftWrapper.eq(ProcessSnapshot::getId, snapshotId);
return processSnapshotService.getOne(draftWrapper);
}
public BasicProcessInfoDTO getProcessInfo(String taskId) {
String processInstanceId = this.getProcessInstanceIdByTaskId(taskId);
// 获取流程通用数据
ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId);
BasicProcessInfoDTO basicProcessInfoDTO = new BasicProcessInfoDTO();
// 获取节点ID
basicProcessInfoDTO.setProcessInstanceId(processInstanceId);
basicProcessInfoDTO.setProcessDescription(process.getPrcMes());
basicProcessInfoDTO.setProcessName(process.getPrcName());
basicProcessInfoDTO.setProcessDueDate(process.getDueTime());
basicProcessInfoDTO.setProcessType(process.getPrcType());
basicProcessInfoDTO.setProcessDefinitionId(process.getProcessDefinitionId());
return basicProcessInfoDTO;
}
}
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -117,6 +118,7 @@ public class ProcessStandardComplianceCheck implements Serializable {
* 适用市场
*/
@ApiModelProperty(value = "适用市场")
@Dict(dictTable = "laws_market_standard", dicText = "manifest_name", dicCode = "id")
private String applicableMarket;
/**
@@ -128,7 +128,7 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
processTask.setTaskId(taskId);
// 保存第一个节点的草稿
processHandleService.saveToDraft(processInfoVO, userId);
// 保存第一个节点的草稿
// 保存第一个节点的快照
processHandleService.saveToSnapshot(processInfoVO, userId);
// 更新审批表为完成,填充数据
actFlowCommonService.updateApprovalInfo(processTask, taskId);
@@ -267,6 +267,98 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
return this.saveAllDetailData(modelExcelVOList, detailInfoList);
}
@Override
public ProcessInfoVO<ProcessSccVO> getHandleData(String taskId) {
if (!actFlowCommonService.taskExists(taskId)) {
throw new JeroBootException("任务不存在");
}
ProcessInfoVO<ProcessSccVO> result = new ProcessInfoVO<>();
ProcessSccVO processSccVO = new ProcessSccVO();
result.setBasicProcessInfoDTO(actFlowCommonService.getProcessInfo(taskId));
String userId = actFlowCommonService.getOriginTaskAssignee(taskId);
String executionId = taskService.createTaskQuery().taskId(taskId).singleResult().getExecutionId();
// 使用流程引擎根据taskId找到流程实例Id
String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
// 获取流程通用数据
ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId);
ProcessApprovalRecord record = actFlowCommonService.getNodeIdByTaskId(taskId);
// 获取当前流程数据
LambdaQueryWrapper<ProcessStandardComplianceCheck> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ProcessStandardComplianceCheck::getProcessInstanceId, processInstanceId);
ProcessStandardComplianceCheck scc = getOne(queryWrapper);
LambdaQueryWrapper<ProcessStandardComplianceCheckDetail> detailQueryWrapper = new LambdaQueryWrapper<>();
detailQueryWrapper.eq(ProcessStandardComplianceCheckDetail::getCheckId, scc.getId());
List<ProcessStandardComplianceCheckDetail> detailList = sccDetailService.list(detailQueryWrapper);
String xmlNodeId = record.getNodeId();
// 设置流程信息
switch (xmlNodeId) {
case DEPT_USER_DISTRIBUTE:
processSccVO.setStandardInfo(scc);
processSccVO.setDetailInfoList(detailList);
break;
case MAIN_CHECK_USER_COLLECT:
break;
case COUNTERSIGN:
break;
case MANAGER_APPROVAL:
break;
}
result.setBusinessInfoDTO(processSccVO);
return result;
}
@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:
}
}
private MultipartFile getFileById(String fileId) {
List<OSSFile> fileInfos = ossFileService.getFileInfos(fileId);
if (fileInfos == null || fileInfos.isEmpty()) {
@@ -423,79 +515,6 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
}
return modelExcelVOList;
}
@Override
public ProcessInfoVO<ProcessSccVO> getHandleData(String taskId) {
if (!actFlowCommonService.taskExists(taskId)) {
throw new JeroBootException("任务不存在");
}
ProcessInfoVO<ProcessSccVO> result = new ProcessInfoVO<>();
String userId = actFlowCommonService.getOriginTaskAssignee(taskId);
String executionId = taskService.createTaskQuery().taskId(taskId).singleResult().getExecutionId();
// 使用流程引擎根据taskId找到流程实例Id
String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
// 获取流程通用数据
ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId);
ProcessApprovalRecord record = actFlowCommonService.getNodeIdByTaskId(taskId);
String xmlNodeId = record.getNodeId();
// 设置流程信息
switch (xmlNodeId) {
//TODO
}
return result;
}
@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:
}
}
}