fix: 修复流程保存报错
This commit is contained in:
+17
-1
@@ -2,6 +2,8 @@ package com.jero.modules.activiti.process.common.service;
|
|||||||
|
|
||||||
import com.jero.common.exception.JeroBootException;
|
import com.jero.common.exception.JeroBootException;
|
||||||
import com.jero.common.system.api.ISysBaseAPI;
|
import com.jero.common.system.api.ISysBaseAPI;
|
||||||
|
import com.jero.modules.activiti.entity.ProcessNode;
|
||||||
|
import com.jero.modules.activiti.service.ProcessNodeService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.activiti.engine.RepositoryService;
|
import org.activiti.engine.RepositoryService;
|
||||||
import org.activiti.engine.RuntimeService;
|
import org.activiti.engine.RuntimeService;
|
||||||
@@ -33,7 +35,7 @@ public class ActFlowCommonService {
|
|||||||
private TaskService taskService;
|
private TaskService taskService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private ISysBaseAPI sysBaseAPI;
|
private ProcessNodeService processNodeService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 启动流程实例
|
* 启动流程实例
|
||||||
@@ -170,4 +172,18 @@ public class ActFlowCommonService {
|
|||||||
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
|
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
|
||||||
return task.getProcessInstanceId();
|
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");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+67
-22
@@ -1,5 +1,6 @@
|
|||||||
package com.jero.modules.activiti.process.esInitChange.service.impl;
|
package com.jero.modules.activiti.process.esInitChange.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
@@ -7,6 +8,7 @@ import com.jero.common.constant.enums.YesOrNoEnum;
|
|||||||
import com.jero.common.exception.JeroBootException;
|
import com.jero.common.exception.JeroBootException;
|
||||||
import com.jero.modules.activiti.entity.ProcessAll;
|
import com.jero.modules.activiti.entity.ProcessAll;
|
||||||
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
|
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
|
||||||
|
import com.jero.modules.activiti.entity.ProcessNode;
|
||||||
import com.jero.modules.activiti.enums.CommitFlagEnum;
|
import com.jero.modules.activiti.enums.CommitFlagEnum;
|
||||||
import com.jero.modules.activiti.enums.FinishFlagEnum;
|
import com.jero.modules.activiti.enums.FinishFlagEnum;
|
||||||
import com.jero.modules.activiti.enums.ProcessTypeEnum;
|
import com.jero.modules.activiti.enums.ProcessTypeEnum;
|
||||||
@@ -23,6 +25,7 @@ import com.jero.modules.activiti.process.esInitChange.mapper.ProcessEsInitChange
|
|||||||
import com.jero.modules.activiti.service.ProcessAllService;
|
import com.jero.modules.activiti.service.ProcessAllService;
|
||||||
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
|
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
|
||||||
import com.jero.modules.activiti.service.ProcessNodeLinkService;
|
import com.jero.modules.activiti.service.ProcessNodeLinkService;
|
||||||
|
import com.jero.modules.activiti.service.ProcessNodeService;
|
||||||
import com.jero.modules.laws.enterprise.service.ESSequenceNumberProvider;
|
import com.jero.modules.laws.enterprise.service.ESSequenceNumberProvider;
|
||||||
import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil;
|
import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil;
|
||||||
import com.jero.modules.sys.utils.UserUtils;
|
import com.jero.modules.sys.utils.UserUtils;
|
||||||
@@ -56,9 +59,6 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
|
|||||||
@Resource
|
@Resource
|
||||||
private ProcessApprovalRecordService processApprovalRecordService;
|
private ProcessApprovalRecordService processApprovalRecordService;
|
||||||
|
|
||||||
@Resource
|
|
||||||
private TaskService taskService;
|
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private EnterpriseStandardUtil esUtil;
|
private EnterpriseStandardUtil esUtil;
|
||||||
|
|
||||||
@@ -68,11 +68,15 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
|
|||||||
@Resource
|
@Resource
|
||||||
private ProcessNodeLinkService processNodeLinkService;
|
private ProcessNodeLinkService processNodeLinkService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ProcessNodeService processNodeService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public InitChangeDataVO getHandleData(String taskId) {
|
public InitChangeDataVO getHandleData(String taskId) {
|
||||||
InitChangeDataVO initChangeDataVO = new InitChangeDataVO();
|
InitChangeDataVO initChangeDataVO = new InitChangeDataVO();
|
||||||
// 使用流程引擎根据taskId找到流程实例Id
|
// 使用流程引擎根据taskId找到流程实例Id
|
||||||
String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
|
String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
|
||||||
|
String processDefinitionId = actFlowCommonService.getProcessDefId(processInstanceId);
|
||||||
// 获取流程通用数据
|
// 获取流程通用数据
|
||||||
ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId);
|
ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId);
|
||||||
CommonVO commonVO = new CommonVO();
|
CommonVO commonVO = new CommonVO();
|
||||||
@@ -86,7 +90,19 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
|
|||||||
lambdaQueryWrapper.eq(ProcessEsInitChange::getDelFlag, YesOrNoEnum.NO.getValue());
|
lambdaQueryWrapper.eq(ProcessEsInitChange::getDelFlag, YesOrNoEnum.NO.getValue());
|
||||||
List<ProcessEsInitChange> dataList = list(lambdaQueryWrapper);
|
List<ProcessEsInitChange> dataList = list(lambdaQueryWrapper);
|
||||||
initChangeDataVO.setDataList(dataList);
|
initChangeDataVO.setDataList(dataList);
|
||||||
// TODO 选人组件内容填充
|
// 选人组件内容填充
|
||||||
|
List<ProcessNode> nodeList = processNodeService.getNodeList(processDefinitionId, processInstanceId);
|
||||||
|
FlowUserInfoVO flowUserInfoVO = new FlowUserInfoVO();
|
||||||
|
Map<String, ProcessNode> userMap = nodeList.stream().collect(Collectors.toMap(ProcessNode::getVariableName, node -> node));
|
||||||
|
flowUserInfoVO.setCreateUser(userMap.get("createUser").getLinkUserIds());
|
||||||
|
flowUserInfoVO.setCreateUser(userMap.get("contactUser").getLinkUserIds());
|
||||||
|
flowUserInfoVO.setCreateUser(userMap.get("mainDraftUserLeader").getLinkUserIds());
|
||||||
|
flowUserInfoVO.setCreateUser(userMap.get("mainDraftUserLeaderLeader").getLinkUserIds());
|
||||||
|
flowUserInfoVO.setCreateUser(userMap.get("standardizationApprovalUser").getLinkUserIds());
|
||||||
|
flowUserInfoVO.setCreateUser(userMap.get("newMainDraftUserLeaderLeader").getLinkUserIds());
|
||||||
|
flowUserInfoVO.setCreateUser(userMap.get("newMainDraftUserLeader").getLinkUserIds());
|
||||||
|
flowUserInfoVO.setCreateUser(userMap.get("copyUser").getLinkUserIds());
|
||||||
|
initChangeDataVO.setFlowUserInfoVO(flowUserInfoVO);
|
||||||
return initChangeDataVO;
|
return initChangeDataVO;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -117,7 +133,7 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
|
|||||||
// 保存到业务流程表
|
// 保存到业务流程表
|
||||||
saveBatch(esInitChangeList);
|
saveBatch(esInitChangeList);
|
||||||
// 保存选人信息
|
// 保存选人信息
|
||||||
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, variables);
|
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(variables));
|
||||||
|
|
||||||
// 根据流程实例id更新流程总表
|
// 根据流程实例id更新流程总表
|
||||||
ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId);
|
ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId);
|
||||||
@@ -136,10 +152,13 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void approvalInitChange(InitChangeDataVO initChangeDataVO, boolean pass) {
|
public void approvalInitChange(InitChangeDataVO initChangeDataVO, boolean pass) {
|
||||||
|
String userId = UserUtils.getUserId();
|
||||||
CommonVO commonVO = initChangeDataVO.getCommonVO();
|
CommonVO commonVO = initChangeDataVO.getCommonVO();
|
||||||
String taskId = commonVO.getTaskId();
|
String taskId = commonVO.getTaskId();
|
||||||
List<ProcessEsInitChange> esInitChangeList = initChangeDataVO.getDataList();
|
List<ProcessEsInitChange> esInitChangeList = initChangeDataVO.getDataList();
|
||||||
Map<String, Object> map = new HashMap<>();
|
Map<String, Object> variables = new HashMap<>();
|
||||||
|
String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
|
||||||
|
String processDefinitionId = actFlowCommonService.getProcessDefId(processInstanceId);
|
||||||
if (pass) {
|
if (pass) {
|
||||||
// 校验企标编号是否冲突
|
// 校验企标编号是否冲突
|
||||||
if (!esUtil.verifyEnStandardNumber(esInitChangeList.get(0).getOriginEnStandardNo())) {
|
if (!esUtil.verifyEnStandardNumber(esInitChangeList.get(0).getOriginEnStandardNo())) {
|
||||||
@@ -147,10 +166,13 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
|
|||||||
}
|
}
|
||||||
// 更新业务流程数据
|
// 更新业务流程数据
|
||||||
saveOrUpdateBatch(esInitChangeList);
|
saveOrUpdateBatch(esInitChangeList);
|
||||||
map = setVariables(initChangeDataVO);
|
variables = setVariables(initChangeDataVO);
|
||||||
|
// 保存选人信息
|
||||||
|
Map<String, Object> userMap = this.getUserMap(variables);
|
||||||
|
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, userMap);
|
||||||
}
|
}
|
||||||
// 设置流程变量
|
// 设置流程变量
|
||||||
map.put("pass", pass);
|
variables.put("pass", pass);
|
||||||
//更新审批表为完成,填充数据
|
//更新审批表为完成,填充数据
|
||||||
ProcessApprovalRecord approvalRecord = processApprovalRecordService.getToDoByTaskId(taskId);
|
ProcessApprovalRecord approvalRecord = processApprovalRecordService.getToDoByTaskId(taskId);
|
||||||
approvalRecord.setCommitFlag(pass ? CommitFlagEnum.PASS.getValue() : CommitFlagEnum.REJECT.getValue());
|
approvalRecord.setCommitFlag(pass ? CommitFlagEnum.PASS.getValue() : CommitFlagEnum.REJECT.getValue());
|
||||||
@@ -160,7 +182,14 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
|
|||||||
approvalRecord.setEndTime(new Date());
|
approvalRecord.setEndTime(new Date());
|
||||||
processApprovalRecordService.updateById(approvalRecord);
|
processApprovalRecordService.updateById(approvalRecord);
|
||||||
//审批节点
|
//审批节点
|
||||||
taskService.complete(taskId, map);
|
actFlowCommonService.completeTask(taskId, userId, variables);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Map<String, Object> getUserMap(Map<String, Object> variables) {
|
||||||
|
variables.remove("pass");
|
||||||
|
variables.remove("applicationCategory");
|
||||||
|
variables.remove("projectType");
|
||||||
|
return variables;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -170,20 +199,36 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
|
|||||||
List<ProcessEsInitChange> esInitChange = initChangeData.getDataList();
|
List<ProcessEsInitChange> esInitChange = initChangeData.getDataList();
|
||||||
saveOrUpdateBatch(esInitChange);
|
saveOrUpdateBatch(esInitChange);
|
||||||
// 先删后增
|
// 先删后增
|
||||||
String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
|
if (StrUtil.isBlank(taskId)) {
|
||||||
LambdaUpdateWrapper<ProcessDraft> draftWrapper = new LambdaUpdateWrapper<>();
|
// 第一个节点点击保存没有taskId
|
||||||
draftWrapper.in(ProcessDraft::getProjectId, esInitChange.stream().map(ProcessEsInitChange::getId).collect(Collectors.toList()));
|
LambdaUpdateWrapper<ProcessDraft> draftWrapper = new LambdaUpdateWrapper<>();
|
||||||
processDraftService.remove(draftWrapper);
|
draftWrapper.eq(ProcessDraft::getPrcType, ProcessTypeEnum.B.getValue());
|
||||||
List<ProcessDraft> draftList = new ArrayList<>();
|
draftWrapper.eq(ProcessDraft::getCreateBy, UserUtils.getUserId());
|
||||||
for (ProcessEsInitChange esInitChangeItem : esInitChange) {
|
processDraftService.remove(draftWrapper);
|
||||||
ProcessDraft draft = new ProcessDraft();
|
List<ProcessDraft> draftList = new ArrayList<>();
|
||||||
draft.setProjectId(esInitChangeItem.getId());
|
for (ProcessEsInitChange esInitChangeItem : esInitChange) {
|
||||||
draft.setProcessInstanceId(processInstanceId);
|
ProcessDraft draft = new ProcessDraft();
|
||||||
draft.setPrcName(commonVO.getPrcName());
|
draft.setProjectId(esInitChangeItem.getId());
|
||||||
draft.setPrcType(ProcessTypeEnum.B.getValue());
|
draft.setPrcType(ProcessTypeEnum.B.getValue());
|
||||||
draftList.add(draft);
|
draftList.add(draft);
|
||||||
|
}
|
||||||
|
processDraftService.saveBatch(draftList);
|
||||||
|
} else {
|
||||||
|
String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
|
||||||
|
LambdaUpdateWrapper<ProcessDraft> draftWrapper = new LambdaUpdateWrapper<>();
|
||||||
|
draftWrapper.in(ProcessDraft::getProjectId, esInitChange.stream().map(ProcessEsInitChange::getId).collect(Collectors.toList()));
|
||||||
|
processDraftService.remove(draftWrapper);
|
||||||
|
List<ProcessDraft> draftList = new ArrayList<>();
|
||||||
|
for (ProcessEsInitChange esInitChangeItem : esInitChange) {
|
||||||
|
ProcessDraft draft = new ProcessDraft();
|
||||||
|
draft.setProjectId(esInitChangeItem.getId());
|
||||||
|
draft.setProcessInstanceId(processInstanceId);
|
||||||
|
draft.setPrcName(commonVO.getPrcName());
|
||||||
|
draft.setPrcType(ProcessTypeEnum.B.getValue());
|
||||||
|
draftList.add(draft);
|
||||||
|
}
|
||||||
|
processDraftService.saveBatch(draftList);
|
||||||
}
|
}
|
||||||
processDraftService.saveBatch(draftList);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<String, Object> setVariables(InitChangeDataVO initChangeData) {
|
public Map<String, Object> setVariables(InitChangeDataVO initChangeData) {
|
||||||
|
|||||||
Reference in New Issue
Block a user