fix: 修复流程发起报错Bug

This commit is contained in:
2023-10-26 14:12:34 +08:00
parent e9b86e72c1
commit 1532ef07e5
6 changed files with 63 additions and 47 deletions
@@ -1,8 +1,10 @@
package com.jero.modules.activiti.process.common.entity; package com.jero.modules.activiti.process.common.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date; import java.util.Date;
@@ -18,47 +20,49 @@ public class CommonVO {
* 任务ID * 任务ID
*/ */
@ApiModelProperty("任务ID") @ApiModelProperty("任务ID")
String taskId; private String taskId;
/** /**
* 备注 * 备注
*/ */
@ApiModelProperty("备注") @ApiModelProperty("备注")
String commitText; private String commitText;
/** /**
* 附件 * 附件
*/ */
@ApiModelProperty("附件") @ApiModelProperty("附件")
String commitFile; private String commitFile;
/** /**
* 同意驳回标识 * 同意驳回标识
*/ */
@ApiModelProperty("同意驳回标识") @ApiModelProperty("同意驳回标识")
Integer commitFlag; private Integer commitFlag;
/** /**
* 同意驳回标识 * 同意驳回标识
*/ */
@ApiModelProperty("同意驳回标识") @ApiModelProperty("同意驳回标识")
boolean pass; private boolean pass;
/** /**
* 流程名称 * 流程名称
*/ */
@ApiModelProperty("流程名称") @ApiModelProperty("流程名称")
String prcName; private String prcName;
/** /**
* 截止日期 * 截止日期
*/ */
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty("截止日期") @ApiModelProperty("截止日期")
Date dueTime; private Date dueTime;
/** /**
* 流程描述 * 流程描述
*/ */
@ApiModelProperty("流程描述") @ApiModelProperty("流程描述")
String prcMes; private String prcMes;
} }
@@ -2,12 +2,6 @@ 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.common.system.vo.LoginUser;
import com.jero.modules.activiti.process.common.entity.CenterQueryVO;
import com.jero.modules.activiti.process.common.enums.ProcessType;
import com.jero.modules.activiti.process.esInitChange.entity.vo.InitChangeDataVO;
import com.jero.modules.activiti.util.SpringContextUtil;
import com.jero.modules.sys.utils.UserUtils;
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;
@@ -152,7 +146,7 @@ public class ActFlowCommonService {
return processDefinition.getKey(); return processDefinition.getKey();
} }
public void autoCompleteFirstTask(String userId, String processInstanceId, String processDefinitionId) { public void autoCompleteFirstTask(String userId, String processInstanceId, String processDefinitionId, Map<String, Object> variables) {
// 自动完成第一个任务 // 自动完成第一个任务
List<Map<String, Object>> taskList = this.myTaskList(userId); List<Map<String, Object>> taskList = this.myTaskList(userId);
if (!CollectionUtils.isEmpty(taskList)) { if (!CollectionUtils.isEmpty(taskList)) {
@@ -164,10 +158,16 @@ public class ActFlowCommonService {
log.info("当前用户ID:{},相关联的流程定义ID:{}", userId, map.get("processDefinitionId").toString()); log.info("当前用户ID:{},相关联的流程定义ID:{}", userId, map.get("processDefinitionId").toString());
log.info("匹配到的任务ID:{}", map.get("taskId").toString()); log.info("匹配到的任务ID:{}", map.get("taskId").toString());
this.completeTask(map.get("taskId").toString(), userId, map); this.completeTask(map.get("taskId").toString(), userId, variables);
break; break;
} }
} }
} }
} }
public String getProcessInstanceIdByTaskId(String taskId) {
// 使用流程引擎根据taskId找到流程实例Id
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
return task.getProcessInstanceId();
}
} }
@@ -88,7 +88,7 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
// 流程实例Id // 流程实例Id
String processInstanceId = processInstance.getProcessInstanceId(); String processInstanceId = processInstance.getProcessInstanceId();
// 自动完成第一个任务 // 自动完成第一个任务
actFlowCommonService.autoCompleteFirstTask(userId, processDefinitionId, processInstanceId); actFlowCommonService.autoCompleteFirstTask(userId, processDefinitionId, processInstanceId, variables);
// TODO 保存数据 // TODO 保存数据
log.info("【启动流程】- 成功,processDefinitionId:{}", processDefinitionId); log.info("【启动流程】- 成功,processDefinitionId:{}", processDefinitionId);
} }
@@ -70,16 +70,13 @@ public class ProcessESInitChangeController {
/** /**
* 保存到待办 * 保存到待办
* @param taskId * @param initChangeDataVO
* @param esInitChangeList
*/ */
@AutoLog(value = "企标立项变更流程-保存") @AutoLog(value = "企标立项变更流程-保存")
@ApiOperation(value="企标立项变更流程-保存", notes="企标立项变更流程-保存") @ApiOperation(value="企标立项变更流程-保存", notes="企标立项变更流程-保存")
@PostMapping("/save") @PostMapping("/save")
public Result<?> save(@RequestParam(value = "taskId", required = false) String taskId, public Result<?> save(@RequestBody InitChangeDataVO initChangeDataVO) {
@RequestBody List<ProcessEsInitChange> esInitChangeList) { initChangeService.saveToDraft(initChangeDataVO);
// TODO 按照Demo重写
initChangeService.saveToDraft(taskId, esInitChangeList);
return Result.OK(); return Result.OK();
} }
@@ -37,10 +37,9 @@ public interface ProcessEsInitChangeService extends IService<ProcessEsInitChange
/** /**
* 保存到草稿 * 保存到草稿
* *
* @param taskId * @param initChangeData
* @param esInitChange
*/ */
void saveToDraft(String taskId, List<ProcessEsInitChange> esInitChange); void saveToDraft(InitChangeDataVO initChangeData);
/** /**
* 软删除实例数据 * 软删除实例数据
@@ -9,9 +9,12 @@ 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.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.process.common.entity.CommonVO; 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.enums.ProcessType; import com.jero.modules.activiti.process.common.enums.ProcessType;
import com.jero.modules.activiti.process.common.service.ActFlowCommonService; import com.jero.modules.activiti.process.common.service.ActFlowCommonService;
import com.jero.modules.activiti.process.common.service.ProcessDraftService;
import com.jero.modules.activiti.process.esInitChange.entity.ProcessEsInitChange; import com.jero.modules.activiti.process.esInitChange.entity.ProcessEsInitChange;
import com.jero.modules.activiti.process.esInitChange.entity.vo.FlowUserInfoVO; import com.jero.modules.activiti.process.esInitChange.entity.vo.FlowUserInfoVO;
import com.jero.modules.activiti.process.esInitChange.entity.vo.InitChangeDataVO; import com.jero.modules.activiti.process.esInitChange.entity.vo.InitChangeDataVO;
@@ -19,15 +22,16 @@ import com.jero.modules.activiti.process.esInitChange.service.ProcessEsInitChang
import com.jero.modules.activiti.process.esInitChange.mapper.ProcessEsInitChangeMapper; import com.jero.modules.activiti.process.esInitChange.mapper.ProcessEsInitChangeMapper;
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.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;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.TaskService; import org.activiti.engine.TaskService;
import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -58,12 +62,17 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
@Resource @Resource
private EnterpriseStandardUtil esUtil; private EnterpriseStandardUtil esUtil;
@Resource
private ProcessDraftService processDraftService;
@Resource
private ProcessNodeLinkService processNodeLinkService;
@Override @Override
public InitChangeDataVO getHandleData(String taskId) { public InitChangeDataVO getHandleData(String taskId) {
InitChangeDataVO initChangeDataVO = new InitChangeDataVO(); InitChangeDataVO initChangeDataVO = new InitChangeDataVO();
// 使用流程引擎根据taskId找到流程实例Id // 使用流程引擎根据taskId找到流程实例Id
Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
String processInstanceId = task.getProcessInstanceId();
// 获取流程通用数据 // 获取流程通用数据
ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId); ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId);
CommonVO commonVO = new CommonVO(); CommonVO commonVO = new CommonVO();
@@ -100,17 +109,19 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
String processDefinitionId = processInstance.getProcessDefinitionId(); String processDefinitionId = processInstance.getProcessDefinitionId();
String processInstanceId = processInstance.getId(); String processInstanceId = processInstance.getId();
// 自动完成第一个任务 // 自动完成第一个任务
actFlowCommonService.autoCompleteFirstTask(userId, processInstanceId, processDefinitionId); actFlowCommonService.autoCompleteFirstTask(userId, processInstanceId, processDefinitionId, variables);
// 设置流程实例Id // 设置流程实例Id
for (ProcessEsInitChange esInitChange : esInitChangeList) { for (ProcessEsInitChange esInitChange : esInitChangeList) {
esInitChange.setProcessInstanceId(processInstance.getId()); esInitChange.setProcessInstanceId(processInstance.getId());
} }
// 保存到业务流程表 // 保存到业务流程表
saveBatch(esInitChangeList); saveBatch(esInitChangeList);
// 保存选人信息
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, variables);
// 根据流程实例id更新流程总表 // 根据流程实例id更新流程总表
ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId); ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId);
process.setCreateUserId(UserUtils.getUserId()); process.setCreateUserId(userId);
process.setPrcName(initChangeData.getCommonVO().getPrcName()); process.setPrcName(initChangeData.getCommonVO().getPrcName());
process.setPrcMes(initChangeData.getCommonVO().getPrcMes()); process.setPrcMes(initChangeData.getCommonVO().getPrcMes());
process.setDueTime(initChangeData.getCommonVO().getDueTime()); process.setDueTime(initChangeData.getCommonVO().getDueTime());
@@ -142,7 +153,7 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
map.put("pass", pass); map.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());
approvalRecord.setCommitText(commonVO.getCommitText()); approvalRecord.setCommitText(commonVO.getCommitText());
approvalRecord.setCommitFile(commonVO.getCommitFile()); approvalRecord.setCommitFile(commonVO.getCommitFile());
approvalRecord.setFinishFlag(FinishFlagEnum.COMPLETE.getValue()); approvalRecord.setFinishFlag(FinishFlagEnum.COMPLETE.getValue());
@@ -153,21 +164,26 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
} }
@Override @Override
public void saveToDraft(String taskId, List<ProcessEsInitChange> esInitChange) { public void saveToDraft(InitChangeDataVO initChangeData) {
// saveOrUpdateBatch(esInitChange); CommonVO commonVO = initChangeData.getCommonVO();
// // 先删后增 String taskId = commonVO.getTaskId();
// LambdaUpdateWrapper<ProcessDraft> draftWrapper = new LambdaUpdateWrapper<>(); List<ProcessEsInitChange> esInitChange = initChangeData.getDataList();
// draftWrapper.in(ProcessDraft::getBusinessId, esInitChange.stream().map(ProcessEsInitChange::getId).collect(Collectors.toList())); saveOrUpdateBatch(esInitChange);
// processDraftService.remove(draftWrapper); // 先删后增
// List<ProcessDraft> draftList = new ArrayList<>(); String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
// for (ProcessEsInitChange esInitChangeItem : esInitChange) { LambdaUpdateWrapper<ProcessDraft> draftWrapper = new LambdaUpdateWrapper<>();
// ProcessDraft draft = new ProcessDraft(); draftWrapper.in(ProcessDraft::getProjectId, esInitChange.stream().map(ProcessEsInitChange::getId).collect(Collectors.toList()));
// draft.setDraftId(UUID.randomUUID().toString()); processDraftService.remove(draftWrapper);
// draft.setBusinessId(esInitChangeItem.getId()); List<ProcessDraft> draftList = new ArrayList<>();
// draft.setProcessKey(ProcessType.ES_INIT_CHANGE.getProcessKey()); for (ProcessEsInitChange esInitChangeItem : esInitChange) {
// draftList.add(draft); ProcessDraft draft = new ProcessDraft();
// } draft.setProjectId(esInitChangeItem.getId());
// processDraftService.saveBatch(draftList); draft.setProcessInstanceId(processInstanceId);
draft.setPrcName(commonVO.getPrcName());
draft.setPrcType(ProcessTypeEnum.B.getValue());
draftList.add(draft);
}
processDraftService.saveBatch(draftList);
} }
public Map<String, Object> setVariables(InitChangeDataVO initChangeData) { public Map<String, Object> setVariables(InitChangeDataVO initChangeData) {