feat: 立项变更草稿和草稿办理接口
This commit is contained in:
+82
@@ -1,5 +1,7 @@
|
||||
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.exception.JeroBootException;
|
||||
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.enums.CommitFlagEnum;
|
||||
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.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.service.ProcessAllService;
|
||||
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.service.EnterpriseStandardPlanService;
|
||||
import com.jero.modules.sys.utils.UserUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.activiti.engine.RepositoryService;
|
||||
import org.activiti.engine.RuntimeService;
|
||||
@@ -60,6 +66,9 @@ public class ActFlowCommonService {
|
||||
@Resource
|
||||
private EnterpriseStandardPlanService espService;
|
||||
|
||||
@Resource
|
||||
private ProcessDraftService processDraftService;
|
||||
|
||||
/**
|
||||
* 启动流程实例
|
||||
*/
|
||||
@@ -150,6 +159,15 @@ public class ActFlowCommonService {
|
||||
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) {
|
||||
if (StrUtil.isBlank(taskId)) {
|
||||
return null;
|
||||
}
|
||||
// 使用流程引擎根据taskId找到流程实例Id
|
||||
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
|
||||
return task.getProcessInstanceId();
|
||||
@@ -322,4 +343,65 @@ public class ActFlowCommonService {
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
+15
@@ -14,6 +14,7 @@ import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService;
|
||||
import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil;
|
||||
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.*;
|
||||
import javax.annotation.Resource;
|
||||
@@ -96,6 +97,20 @@ public class ProcessESInitChangeController {
|
||||
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));
|
||||
}
|
||||
|
||||
/**
|
||||
* 同意
|
||||
*
|
||||
|
||||
+6
@@ -534,6 +534,12 @@ public class ProcessEsInitChange implements Serializable {
|
||||
@ApiModelProperty(value = "配合单位")
|
||||
private String cooperationUnit;
|
||||
|
||||
/**
|
||||
* 流程业务统一Id
|
||||
*/
|
||||
@ApiModelProperty(value = "流程业务统一Id")
|
||||
private String businessId;
|
||||
|
||||
@TableField(exist = false)
|
||||
private static final long serialVersionUID = 1781238971297838971L;
|
||||
}
|
||||
+8
@@ -47,4 +47,12 @@ public interface ProcessEsInitChangeService extends IService<ProcessEsInitChange
|
||||
* @return
|
||||
*/
|
||||
InitChangeDataVO getHandleData(String taskId);
|
||||
|
||||
/**
|
||||
* 获取草稿数据
|
||||
* @param draftId
|
||||
* @return
|
||||
*/
|
||||
InitChangeDataVO getDraftData(String draftId, String businessId);
|
||||
|
||||
}
|
||||
|
||||
+43
-40
@@ -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.service.ProcessAllService;
|
||||
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.util.EnterpriseStandardUtil;
|
||||
import com.jero.modules.sys.utils.UserUtils;
|
||||
@@ -54,9 +53,6 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
|
||||
@Resource
|
||||
private EnterpriseStandardUtil esUtil;
|
||||
|
||||
@Resource
|
||||
private ProcessDraftService processDraftService;
|
||||
|
||||
@Resource
|
||||
private ProcessNodeLinkService processNodeLinkService;
|
||||
|
||||
@@ -89,6 +85,10 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
|
||||
actFlowCommonService.autoCompleteFirstTask(userId, processInstanceId, processDefinitionId, commonVO);
|
||||
// 设置流程实例Id
|
||||
esInitChangeList.forEach(e -> e.setProcessInstanceId(processInstanceId));
|
||||
// 生成唯一的businessId
|
||||
String newBusinessId = actFlowCommonService.getNewBusinessId();
|
||||
// 新增业务表数据
|
||||
esInitChangeList.forEach(e -> e.setBusinessId(newBusinessId));
|
||||
// 保存到业务流程表
|
||||
saveBatch(esInitChangeList);
|
||||
// 保存选人信息
|
||||
@@ -143,7 +143,8 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
|
||||
commonVO.setDueTime(process.getDueTime());
|
||||
commonVO.setProcessDefinitionId(processDefinitionId);
|
||||
commonVO.setProcessInstanceId(processInstanceId);
|
||||
commonVO.setNodeId(process.getNodeId());
|
||||
// 获取节点ID
|
||||
commonVO.setNodeId(actFlowCommonService.getNodeIdByTaskId(taskId));
|
||||
initChangeDataVO.setCommonVO(commonVO);
|
||||
// 获取流程实例数据
|
||||
LambdaQueryWrapper<ProcessEsInitChange> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
@@ -154,6 +155,25 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
|
||||
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
|
||||
public void approvalInitChange(InitChangeDataVO initChangeDataVO, boolean pass) {
|
||||
String userId = UserUtils.getUserId();
|
||||
@@ -189,43 +209,26 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
|
||||
@Override
|
||||
public void saveToDraft(InitChangeDataVO initChangeData) {
|
||||
CommonVO commonVO = initChangeData.getCommonVO();
|
||||
String taskId = commonVO.getTaskId();
|
||||
List<ProcessEsInitChange> esInitChange = initChangeData.getDataList();
|
||||
saveOrUpdateBatch(esInitChange);
|
||||
List<ProcessEsInitChange> dataList = initChangeData.getDataList();
|
||||
|
||||
// 先删后增
|
||||
LambdaUpdateWrapper<ProcessDraft> draftWrapper = new LambdaUpdateWrapper<>();
|
||||
if (StrUtil.isBlank(taskId)) {
|
||||
// 第一个节点点击保存没有taskId
|
||||
List<ProcessDraft> draftList = new ArrayList<>();
|
||||
for (ProcessEsInitChange esInitChangeItem : esInitChange) {
|
||||
ProcessDraft draft = new ProcessDraft();
|
||||
draft.setProjectId(esInitChangeItem.getId());
|
||||
draft.setPrcName(commonVO.getPrcName());
|
||||
draft.setPrcType(ProcessTypeEnum.ES_INIT_CHANGE.getValue());
|
||||
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
|
||||
ProcessDraft existDraft = actFlowCommonService.getExistDraftAndRemove(commonVO, ProcessTypeEnum.ES_INIT_CHANGE);
|
||||
if (existDraft != null) {
|
||||
// 根据原来的businessId删除业务主表数据
|
||||
String businessId = existDraft.getProjectId();
|
||||
LambdaUpdateWrapper<ProcessEsInitChange> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
updateWrapper.eq(ProcessEsInitChange::getBusinessId, businessId);
|
||||
updateWrapper.set(ProcessEsInitChange::getDelFlag, YesOrNoEnum.YES.getValue());
|
||||
update(updateWrapper);
|
||||
}
|
||||
// 生成唯一的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) {
|
||||
|
||||
Reference in New Issue
Block a user