fix: 草稿办理发起流程报错

This commit is contained in:
2023-11-23 16:09:38 +08:00
parent 74f1460dd1
commit c070581cdd
9 changed files with 61 additions and 56 deletions
@@ -76,7 +76,7 @@ public class ProcessEsAbolishServiceImpl extends ServiceImpl<ProcessEsAbolishMap
// 设置流程实例Id
esAbolish.setProcessInstanceId(processInstanceId);
// 保存到业务流程表
save(esAbolish);
saveOrUpdate(esAbolish);
// 保存选人信息
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(variables));
// 根据流程实例id更新流程总表
@@ -76,7 +76,7 @@ public class ProcessEsArchiveServiceImpl extends ServiceImpl<ProcessEsArchiveMap
// 设置流程实例Id
esArchive.setProcessInstanceId(processInstanceId);
// 保存到业务流程表
save(esArchive);
saveOrUpdate(esArchive);
// 保存选人信息
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(variables));
// 根据流程实例id更新流程总表
@@ -9,6 +9,7 @@ import com.jero.modules.activiti.process.esChange.entity.vo.ESChangeDataVO;
import com.jero.modules.activiti.process.esChange.service.ProcessEsChangeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
@@ -106,4 +107,18 @@ public class ESChangeController {
return Result.OK();
}
/**
* 草稿办理
* @param draftId
* @param projectId
*/
@AutoLog(value = "企标更改流程-草稿办理")
@ApiOperation(value="企标更改流程-草稿办理", notes="企标更改流程-草稿办理")
@GetMapping("/draftHandle")
@Translation
public Result<?> draftHandle(@RequestParam("draftId") @ApiParam("草稿Id") String draftId,
@RequestParam("projectId") @ApiParam("业务数据Id") String projectId) {
return Result.OK(changeService.getDraftData(draftId, projectId));
}
}
@@ -1,5 +1,6 @@
package com.jero.modules.activiti.process.esChange.service;
import com.jero.modules.activiti.process.esArchive.entity.vo.ESArchiveDataVO;
import com.jero.modules.activiti.process.esChange.entity.ProcessEsChange;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.modules.activiti.process.esChange.entity.vo.ESChangeDataVO;
@@ -18,4 +19,7 @@ public interface ProcessEsChangeService extends IService<ProcessEsChange> {
ESChangeDataVO getHandleData(String taskId);
void approval(ESChangeDataVO changeData, boolean pass);
ESChangeDataVO getDraftData(String draftId, String projectId);
}
@@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.api.vo.ResultCommon;
import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.modules.activiti.entity.ProcessAll;
@@ -13,6 +14,8 @@ 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.service.ActFlowCommonService;
import com.jero.modules.activiti.process.common.service.ProcessDraftService;
import com.jero.modules.activiti.process.esArchive.entity.ProcessEsArchive;
import com.jero.modules.activiti.process.esArchive.entity.vo.ESArchiveDataVO;
import com.jero.modules.activiti.process.esChange.entity.ProcessEsChange;
import com.jero.modules.activiti.process.esChange.entity.vo.ESChangeDataVO;
import com.jero.modules.activiti.process.esChange.service.ProcessEsChangeService;
@@ -41,21 +44,12 @@ import java.util.*;
public class ProcessEsChangeServiceImpl extends ServiceImpl<ProcessEsChangeMapper, ProcessEsChange>
implements ProcessEsChangeService {
@Resource
private ProcessAllService processAllService;
@Resource
private ActFlowCommonService actFlowCommonService;
@Resource
private ProcessDraftService processDraftService;
@Resource
private ProcessNodeLinkService processNodeLinkService;
@Resource
private ProcessNodeService processNodeService;
@Resource
private RuntimeService runtimeService;
@@ -87,7 +81,7 @@ public class ProcessEsChangeServiceImpl extends ServiceImpl<ProcessEsChangeMappe
// 设置流程实例Id
esChange.setProcessInstanceId(processInstanceId);
// 保存到业务流程表
save(esChange);
saveOrUpdate(esChange);
// 保存选人信息
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(variables));
// 根据流程实例id更新流程总表
@@ -122,35 +116,12 @@ public class ProcessEsChangeServiceImpl extends ServiceImpl<ProcessEsChangeMappe
@Override
public void saveToDraft(ESChangeDataVO changeData) {
CommonVO commonVO = changeData.getCommon();
String taskId = commonVO.getTaskId();
ProcessEsChange esChange = changeData.getData();
ProcessDraft existDraft = actFlowCommonService.getExistDraftAndRemove(commonVO, ProcessTypeEnum.ES_ARCHIVE);
if (existDraft != null) esChange.setId(existDraft.getProjectId());
// TODO 底下表格
saveOrUpdate(esChange);
// 先删后增
LambdaUpdateWrapper<ProcessDraft> draftWrapper = new LambdaUpdateWrapper<>();
if (StrUtil.isBlank(taskId)) {
// 第一个节点点击保存没有taskId
draftWrapper.eq(ProcessDraft::getPrcType, ProcessTypeEnum.ES_CHANGE.getValue());
draftWrapper.eq(ProcessDraft::getCreateBy, UserUtils.getUserId());
processDraftService.remove(draftWrapper);
List<ProcessDraft> draftList = new ArrayList<>();
ProcessDraft draft = new ProcessDraft();
draft.setProjectId(esChange.getId());
draft.setPrcType(ProcessTypeEnum.ES_CHANGE.getValue());
draftList.add(draft);
processDraftService.saveBatch(draftList);
} else {
String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
draftWrapper.eq(ProcessDraft::getProjectId, esChange.getId());
processDraftService.remove(draftWrapper);
List<ProcessDraft> draftList = new ArrayList<>();
ProcessDraft draft = new ProcessDraft();
draft.setProjectId(esChange.getId());
draft.setProcessInstanceId(processInstanceId);
draft.setPrcName(commonVO.getPrcName());
draft.setPrcType(ProcessTypeEnum.ES_CHANGE.getValue());
draftList.add(draft);
processDraftService.saveBatch(draftList);
}
actFlowCommonService.addDraft(commonVO, ProcessTypeEnum.ES_ARCHIVE, esChange.getId());
}
public void startRunTask(ESChangeDataVO changeData) {
@@ -160,21 +131,12 @@ public class ProcessEsChangeServiceImpl extends ServiceImpl<ProcessEsChangeMappe
@Override
public ESChangeDataVO getHandleData(String taskId) {
if (!actFlowCommonService.taskExists(taskId)) {
throw new JeroBootException("任务不存在");
throw new JeroBootException(ResultCommon.TASK_NOT_EXISTS);
}
ESChangeDataVO changeData = new ESChangeDataVO();
// 使用流程引擎根据taskId找到流程实例Id
String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
String processDefinitionId = actFlowCommonService.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.setNodeId(process.getNodeId());
changeData.setCommon(commonVO);
changeData.setCommon(actFlowCommonService.getHandleCommon(taskId));
// 获取流程实例数据
LambdaQueryWrapper<ProcessEsChange> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(ProcessEsChange::getProcessInstanceId, processInstanceId);
@@ -190,7 +152,7 @@ public class ProcessEsChangeServiceImpl extends ServiceImpl<ProcessEsChangeMappe
CommonVO commonVO = changeData.getCommon();
String taskId = commonVO.getTaskId();
if (StrUtil.isBlank(taskId) && !actFlowCommonService.taskExists(taskId)) {
throw new JeroBootException("taskId为空或任务不存在");
throw new JeroBootException(ResultCommon.TASK_NOT_EXISTS);
}
String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
// 设置流程变量
@@ -199,6 +161,28 @@ public class ProcessEsChangeServiceImpl extends ServiceImpl<ProcessEsChangeMappe
actFlowCommonService.updateApprovalInfo(commonVO, taskId, pass);
// 审批节点
actFlowCommonService.completeTask(taskId, userId);
// 删除草稿
actFlowCommonService.removeDraft(commonVO);
}
@Override
public ESChangeDataVO getDraftData(String draftId, String businessId) {
ProcessDraft draft = actFlowCommonService.getExistDraft(draftId, businessId, ProcessTypeEnum.ES_CHANGE);
if (draft == null) {
throw new JeroBootException(ResultCommon.DRAFT_NOT_EXISTS);
} else {
ESChangeDataVO changeDataVO = new ESChangeDataVO();
// 获取流程通用数据
CommonVO commonVO = actFlowCommonService.getDraftCommon(draft);
changeDataVO.setCommon(commonVO);
// 获取流程实例数据
LambdaQueryWrapper<ProcessEsChange> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(ProcessEsChange::getId, businessId);
lambdaQueryWrapper.eq(ProcessEsChange::getDelFlag, YesOrNoEnum.NO.getValue());
ProcessEsChange data = getOne(lambdaQueryWrapper);
changeDataVO.setData(data);
return changeDataVO;
}
}
}
@@ -76,7 +76,7 @@ public class ProcessEsEnableServiceImpl extends ServiceImpl<ProcessEsEnableMappe
// 设置流程实例Id
esEnable.setProcessInstanceId(processInstanceId);
// 保存到业务流程表
save(esEnable);
saveOrUpdate(esEnable);
// 保存选人信息
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(variables));
// 根据流程实例id更新流程总表
@@ -87,7 +87,7 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
// 新增业务表数据
esInitChangeList.forEach(e -> e.setBusinessId(newBusinessId));
// 保存到业务流程表
saveBatch(esInitChangeList);
saveOrUpdateBatch(esInitChangeList);
// 保存选人信息
// 人员
Map<String, Object> flowUserInfoVO = initChangeData.getFlowUserInfoVO();
@@ -104,12 +104,14 @@ public class ProcessEsRecheck implements Serializable {
/**
* 主起草人
*/
@Dict(dicCode = "user_id")
@ApiModelProperty(value = "主起草人")
private String mainDraftingUser;
/**
* 主起草单位
*/
@Dict(dicCode = "org_code")
@ApiModelProperty(value = "主起草单位")
private String mainDraftingUnit;
@@ -55,7 +55,7 @@ public class ProcessEsRecheckServiceImpl extends ServiceImpl<ProcessEsRecheckMap
// 当前用户Id
String userId = UserUtils.getUserId();
// 业务数据
ProcessEsRecheck esArchive = recheckData.getData();
ProcessEsRecheck esRecheck = recheckData.getData();
// 通用数据
CommonVO common = recheckData.getCommon();
// 人员数据
@@ -74,9 +74,9 @@ public class ProcessEsRecheckServiceImpl extends ServiceImpl<ProcessEsRecheckMap
// 自动完成第一个任务
actFlowCommonService.autoCompleteFirstTask(userId, processInstanceId, processDefinitionId, common);
// 设置流程实例Id
esArchive.setProcessInstanceId(processInstanceId);
esRecheck.setProcessInstanceId(processInstanceId);
// 保存到业务流程表
save(esArchive);
saveOrUpdate(esRecheck);
// 保存选人信息
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(variables));
// 根据流程实例id更新流程总表