feat: 立项变更草稿和草稿办理接口

This commit is contained in:
2023-11-22 11:21:58 +08:00
parent 1e26fddcd8
commit fcc7b77cbf
5 changed files with 154 additions and 40 deletions
@@ -1,5 +1,7 @@
package com.jero.modules.activiti.process.common.service; 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.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.jero.common.exception.JeroBootException; import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser; import com.jero.common.system.vo.LoginUser;
@@ -7,13 +9,17 @@ 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.mapper.ProcessNodeMapper; import com.jero.modules.activiti.mapper.ProcessNodeMapper;
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.entity.StandTypeVO; import com.jero.modules.activiti.process.common.entity.StandTypeVO;
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.laws.common.util.CurrentUserUtil;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan; import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService; import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService;
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;
@@ -60,6 +66,9 @@ public class ActFlowCommonService {
@Resource @Resource
private EnterpriseStandardPlanService espService; private EnterpriseStandardPlanService espService;
@Resource
private ProcessDraftService processDraftService;
/** /**
* 启动流程实例 * 启动流程实例
*/ */
@@ -150,6 +159,15 @@ public class ActFlowCommonService {
processApprovalRecordService.updateById(approvalRecord); processApprovalRecordService.updateById(approvalRecord);
} }
public String getNodeIdByTaskId(String taskId) {
ProcessApprovalRecord approvalRecord = processApprovalRecordService.getToDoByTaskId(taskId);
if (approvalRecord == null) {
throw new JeroBootException("找不到对应的审批记录");
} else {
return approvalRecord.getNodeId();
}
}
/** /**
* 完成提交任务 * 完成提交任务
*/ */
@@ -273,6 +291,9 @@ public class ActFlowCommonService {
} }
public String getProcessInstanceIdByTaskId(String taskId) { public String getProcessInstanceIdByTaskId(String taskId) {
if (StrUtil.isBlank(taskId)) {
return null;
}
// 使用流程引擎根据taskId找到流程实例Id // 使用流程引擎根据taskId找到流程实例Id
Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
return task.getProcessInstanceId(); return task.getProcessInstanceId();
@@ -322,4 +343,65 @@ public class ActFlowCommonService {
} }
return standTypeVO; return standTypeVO;
} }
public String getNewBusinessId() {
return UUID.randomUUID().toString().replace("-", "");
}
public ProcessDraft getExistDraft(String draftId, String businessId, ProcessTypeEnum processTypeEnum) {
String userId = UserUtils.getUserId();
LambdaQueryWrapper<ProcessDraft> draftWrapper = new LambdaQueryWrapper<>();
draftWrapper.eq(ProcessDraft::getPrcType, ProcessTypeEnum.ES_INIT_CHANGE.getValue());
draftWrapper.eq(ProcessDraft::getUserId, userId);
draftWrapper.eq(ProcessDraft::getId, draftId);
draftWrapper.eq(ProcessDraft::getProjectId, businessId);
return processDraftService.getOne(draftWrapper);
}
public ProcessDraft getExistDraftAndRemove(CommonVO common, ProcessTypeEnum processTypeEnum) {
String taskId = common.getTaskId();
String userId = UserUtils.getUserId();
String processInstanceId = common.getProcessInstanceId();
LambdaQueryWrapper<ProcessDraft> draftWrapper = new LambdaQueryWrapper<>();
draftWrapper.eq(ProcessDraft::getPrcType, processTypeEnum.getValue());
draftWrapper.eq(ProcessDraft::getUserId, userId);
draftWrapper.eq(StrUtil.isNotBlank(processInstanceId), ProcessDraft::getProcessInstanceId, processInstanceId);
draftWrapper.eq(StrUtil.isNotBlank(taskId), ProcessDraft::getTaskId, taskId);
ProcessDraft draft = processDraftService.getOne(draftWrapper);
// 删除草稿表数据
processDraftService.remove(draftWrapper);
return draft;
}
public void addDraft(CommonVO common, ProcessTypeEnum processTypeEnum, String newBusinessId) {
String taskId = common.getTaskId();
String processInstanceId = common.getProcessInstanceId();
// 新增草稿表数据
ProcessDraft draft = new ProcessDraft();
if (StrUtil.isNotBlank(taskId) && StrUtil.isNotBlank(processInstanceId)) {
draft.setProcessInstanceId(processInstanceId);
draft.setTaskId(taskId);
}
draft.setPrcName(common.getPrcName());
draft.setPrcType(processTypeEnum.getValue());
draft.setHandleText(common.getCommitText()); // 流程审批信息-备注
draft.setHandleFile(common.getCommitFile()); // 流程审批信息-附件
draft.setUserId(CurrentUserUtil.getId()); // 用户id
draft.setProjectId(newBusinessId);
processDraftService.save(draft);
}
public CommonVO getDraftCommon(ProcessDraft draft) {
String taskId = draft.getTaskId();
CommonVO commonVO = new CommonVO();
commonVO.setPrcName(draft.getPrcName());
commonVO.setCommitText(draft.getHandleText());
commonVO.setCommitFile(draft.getHandleFile());
commonVO.setTaskId(taskId);
commonVO.setProcessInstanceId(draft.getProcessInstanceId());
if (StrUtil.isNotBlank(taskId)) {
commonVO.setNodeId(this.getNodeIdByTaskId(taskId));
}
return commonVO;
}
} }
@@ -14,6 +14,7 @@ import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService;
import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil; import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
@@ -96,6 +97,20 @@ public class ProcessESInitChangeController {
return Result.OK(initChangeService.getHandleData(taskId)); return Result.OK(initChangeService.getHandleData(taskId));
} }
/**
* 保存到待办
* @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(initChangeService.getDraftData(draftId, projectId));
}
/** /**
* 同意 * 同意
* *
@@ -534,6 +534,12 @@ public class ProcessEsInitChange implements Serializable {
@ApiModelProperty(value = "配合单位") @ApiModelProperty(value = "配合单位")
private String cooperationUnit; private String cooperationUnit;
/**
* 流程业务统一Id
*/
@ApiModelProperty(value = "流程业务统一Id")
private String businessId;
@TableField(exist = false) @TableField(exist = false)
private static final long serialVersionUID = 1781238971297838971L; private static final long serialVersionUID = 1781238971297838971L;
} }
@@ -47,4 +47,12 @@ public interface ProcessEsInitChangeService extends IService<ProcessEsInitChange
* @return * @return
*/ */
InitChangeDataVO getHandleData(String taskId); InitChangeDataVO getHandleData(String taskId);
/**
* 获取草稿数据
* @param draftId
* @return
*/
InitChangeDataVO getDraftData(String draftId, String businessId);
} }
@@ -20,7 +20,6 @@ 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.ProcessNodeLinkService; import com.jero.modules.activiti.service.ProcessNodeLinkService;
import com.jero.modules.laws.common.util.CurrentUserUtil;
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;
@@ -54,9 +53,6 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
@Resource @Resource
private EnterpriseStandardUtil esUtil; private EnterpriseStandardUtil esUtil;
@Resource
private ProcessDraftService processDraftService;
@Resource @Resource
private ProcessNodeLinkService processNodeLinkService; private ProcessNodeLinkService processNodeLinkService;
@@ -89,6 +85,10 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
actFlowCommonService.autoCompleteFirstTask(userId, processInstanceId, processDefinitionId, commonVO); actFlowCommonService.autoCompleteFirstTask(userId, processInstanceId, processDefinitionId, commonVO);
// 设置流程实例Id // 设置流程实例Id
esInitChangeList.forEach(e -> e.setProcessInstanceId(processInstanceId)); esInitChangeList.forEach(e -> e.setProcessInstanceId(processInstanceId));
// 生成唯一的businessId
String newBusinessId = actFlowCommonService.getNewBusinessId();
// 新增业务表数据
esInitChangeList.forEach(e -> e.setBusinessId(newBusinessId));
// 保存到业务流程表 // 保存到业务流程表
saveBatch(esInitChangeList); saveBatch(esInitChangeList);
// 保存选人信息 // 保存选人信息
@@ -143,7 +143,8 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
commonVO.setDueTime(process.getDueTime()); commonVO.setDueTime(process.getDueTime());
commonVO.setProcessDefinitionId(processDefinitionId); commonVO.setProcessDefinitionId(processDefinitionId);
commonVO.setProcessInstanceId(processInstanceId); commonVO.setProcessInstanceId(processInstanceId);
commonVO.setNodeId(process.getNodeId()); // 获取节点ID
commonVO.setNodeId(actFlowCommonService.getNodeIdByTaskId(taskId));
initChangeDataVO.setCommonVO(commonVO); initChangeDataVO.setCommonVO(commonVO);
// 获取流程实例数据 // 获取流程实例数据
LambdaQueryWrapper<ProcessEsInitChange> lambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<ProcessEsInitChange> lambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -154,6 +155,25 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
return initChangeDataVO; return initChangeDataVO;
} }
@Override
public InitChangeDataVO getDraftData(String draftId, String businessId) {
ProcessDraft draft = actFlowCommonService.getExistDraft(draftId, businessId, ProcessTypeEnum.ES_INIT_CHANGE);
if (draft != null) {
InitChangeDataVO initChangeDataVO = new InitChangeDataVO();
// 获取流程通用数据
CommonVO commonVO = actFlowCommonService.getDraftCommon(draft);
initChangeDataVO.setCommonVO(commonVO);
// 获取流程实例数据
LambdaQueryWrapper<ProcessEsInitChange> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(ProcessEsInitChange::getBusinessId, businessId);
lambdaQueryWrapper.eq(ProcessEsInitChange::getDelFlag, YesOrNoEnum.NO.getValue());
List<ProcessEsInitChange> dataList = list(lambdaQueryWrapper);
initChangeDataVO.setDataList(dataList);
return initChangeDataVO;
}
return null;
}
@Override @Override
public void approvalInitChange(InitChangeDataVO initChangeDataVO, boolean pass) { public void approvalInitChange(InitChangeDataVO initChangeDataVO, boolean pass) {
String userId = UserUtils.getUserId(); String userId = UserUtils.getUserId();
@@ -189,43 +209,26 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
@Override @Override
public void saveToDraft(InitChangeDataVO initChangeData) { public void saveToDraft(InitChangeDataVO initChangeData) {
CommonVO commonVO = initChangeData.getCommonVO(); CommonVO commonVO = initChangeData.getCommonVO();
String taskId = commonVO.getTaskId(); List<ProcessEsInitChange> dataList = initChangeData.getDataList();
List<ProcessEsInitChange> esInitChange = initChangeData.getDataList();
saveOrUpdateBatch(esInitChange);
// 先删后增 // 先删后增
LambdaUpdateWrapper<ProcessDraft> draftWrapper = new LambdaUpdateWrapper<>(); // 先找到原来的businessId
if (StrUtil.isBlank(taskId)) { ProcessDraft existDraft = actFlowCommonService.getExistDraftAndRemove(commonVO, ProcessTypeEnum.ES_INIT_CHANGE);
// 第一个节点点击保存没有taskId if (existDraft != null) {
List<ProcessDraft> draftList = new ArrayList<>(); // 根据原来的businessId删除业务主表数据
for (ProcessEsInitChange esInitChangeItem : esInitChange) { String businessId = existDraft.getProjectId();
ProcessDraft draft = new ProcessDraft(); LambdaUpdateWrapper<ProcessEsInitChange> updateWrapper = new LambdaUpdateWrapper<>();
draft.setProjectId(esInitChangeItem.getId()); updateWrapper.eq(ProcessEsInitChange::getBusinessId, businessId);
draft.setPrcName(commonVO.getPrcName()); updateWrapper.set(ProcessEsInitChange::getDelFlag, YesOrNoEnum.YES.getValue());
draft.setPrcType(ProcessTypeEnum.ES_INIT_CHANGE.getValue()); update(updateWrapper);
draft.setHandleText(commonVO.getCommitText()); // 流程审批信息-备注
draft.setHandleFile(commonVO.getCommitFile()); // 流程审批信息-附件
draftList.add(draft);
}
processDraftService.saveBatch(draftList);
} else {
String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
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.ES_INIT_CHANGE.getValue());
draft.setTaskId(taskId); // 任务id
draft.setHandleText(commonVO.getCommitText()); // 流程审批信息-备注
draft.setHandleFile(commonVO.getCommitFile()); // 流程审批信息-附件
draft.setUserId(CurrentUserUtil.getId()); // 用户id
draftList.add(draft);
}
processDraftService.saveBatch(draftList);
} }
// 生成唯一的businessId
String newBusinessId = actFlowCommonService.getNewBusinessId();
// 新增业务表数据
dataList.forEach(e -> e.setBusinessId(newBusinessId));
saveBatch(dataList);
// 新增草稿表数据
actFlowCommonService.addDraft(commonVO, ProcessTypeEnum.ES_INIT_CHANGE, newBusinessId);
} }
public void startRunTask(InitChangeDataVO initChangeData) { public void startRunTask(InitChangeDataVO initChangeData) {