update 标准法规入库_变更流程-发起流程

This commit is contained in:
liao
2023-11-03 11:45:55 +08:00
parent d3125a9620
commit 6910dc3a81
9 changed files with 230 additions and 63 deletions
@@ -23,6 +23,7 @@ public enum ProcessTypeEnum {
ES_ABOLISH("企标废止流程",13, "com.jero.modules.activiti.process.esAbolish.service.impl.ProcessEsAbolishServiceImpl"),
ES_ARCHIVE("企标封存流程",14, "com.jero.modules.activiti.process.esArchive.service.impl.ProcessEsArchiveServiceImpl"),
ES_ENABLE("已封存企标启用流程",15, "com.jero.modules.activiti.process.esEnable.service.impl.ProcessEsEnableServiceImpl"),
FB_ENTRY_CHANGE("标准法规入库/变更流程",16, "com.jero.modules.activiti.process.fb.service.impl.ProcessHandleServiceImpl"),
;
private String name;
@@ -0,0 +1,14 @@
package com.jero.modules.activiti.process.fb.common;
/**
* @Author: liao
* @Date: 2023/11/3 11:20
* @Description: 流程定义key
*/
public class ProcessDefinitionKey {
private ProcessDefinitionKey() {}
public static final String FB_ENTRY_CHANGE = "fb-entry-change";
}
@@ -5,6 +5,7 @@ import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.util.MessageUtils;
import com.jero.modules.activiti.process.fb.entity.ProcessFbEntryChange;
import com.jero.modules.activiti.process.fb.service.IProcessFbEntryChangeService;
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
import com.jero.modules.laws.common.constant.ResultCommon;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
@@ -57,4 +58,20 @@ public class ProcessFbEntryChangeController extends JeroController<ProcessFbEntr
return Result.OK(processFbEntryChange);
}
@AutoLog(value = "流程处理-启动流程")
@ApiOperation(value = "流程处理-启动流程", notes = "流程处理-启动流程")
@PostMapping(value = "/startProcess")
public Result<T> startProcess(@Validated @RequestBody ProcessInfoVO processInfoVO) {
processFbEntryChangeService.startProcess(processInfoVO);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
@AutoLog(value = "流程处理-保存为草稿")
@ApiOperation(value = "流程处理-保存为草稿", notes = "流程处理-保存为草稿")
@PostMapping(value = "/saveToDraft")
public Result<T> saveToDraft(@Validated @RequestBody ProcessInfoVO processInfoVO) {
processFbEntryChangeService.saveToDraft(processInfoVO);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
}
@@ -1,43 +0,0 @@
package com.jero.modules.activiti.process.fb.controller;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.util.MessageUtils;
import com.jero.modules.activiti.process.fb.entity.ProcessFbEntryChange;
import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
import com.jero.modules.laws.common.constant.ResultCommon;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author: liao
* @Date: 2023/11/2 16:56
* @Description: 流程处理
*/
@Api(tags="流程处理")
@RestController
@RequestMapping("/process/fb/handle")
@Slf4j
public class ProcessHandleController {
@Autowired
private IProcessHandleService processHandleService;
@AutoLog(value = "流程处理-启动流程")
@ApiOperation(value = "流程处理-启动流程", notes = "流程处理-启动流程")
@PostMapping(value = "/startProcess")
public Result<T> startProcess(@Validated @RequestBody ProcessInfoVO processInfoVO) {
processHandleService.startProcess(processInfoVO);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
}
@@ -2,6 +2,7 @@ package com.jero.modules.activiti.process.fb.service;
import com.jero.modules.activiti.process.fb.entity.ProcessFbEntryChange;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
import com.jero.modules.laws.dataCenter.entity.LawsDataCenterFile;
/**
@@ -31,4 +32,18 @@ public interface IProcessFbEntryChangeService extends IService<ProcessFbEntryCha
* @Description: 通过id查询
**/
ProcessFbEntryChange queryBusinessInfo(String id);
/**
* @Author: liao
* @Date: 2023/11/3 10:57
* @Description: 启动流程
**/
void startProcess(ProcessInfoVO processInfoVO);
/**
* @Author: liao
* @Date: 2023/11/3 10:58
* @Description: 保存为草稿
**/
void saveToDraft(ProcessInfoVO processInfoVO);
}
@@ -14,4 +14,32 @@ public interface IProcessHandleService {
* @Description: 启动流程
**/
void startProcess(ProcessInfoVO processInfoVO);
/**
* @Author: liao
* @Date: 2023/11/3 10:45
* @Description: 更新流程总表
**/
void updateProcessAll(ProcessInfoVO processInfoVO);
/**
* @Author: liao
* @Date: 2023/11/3 10:52
* @Description: 更新审批记录
**/
void updateApprovalRecord(ProcessInfoVO processInfoVO);
/**
* @Author: liao
* @Date: 2023/11/3 10:29
* @Description: 保存为草稿
**/
void saveToDraft(ProcessInfoVO processInfoVO);
/**
* @Author: liao
* @Date: 2023/11/3 11:13
* @Description: 根据流程定义key获取最新版本的流程定义id
**/
String getDefinitionIdByKey(String definitionKey);
}
@@ -1,15 +1,26 @@
package com.jero.modules.activiti.process.fb.service.impl;
import com.jero.modules.activiti.enums.ProcessTypeEnum;
import com.jero.modules.activiti.process.fb.common.ProcessDefinitionKey;
import com.jero.modules.activiti.process.fb.entity.ProcessFbEntryChange;
import com.jero.modules.activiti.process.fb.mapper.ProcessFbEntryChangeMapper;
import com.jero.modules.activiti.process.fb.service.IProcessFbEntryChangeService;
import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
import com.jero.modules.laws.common.constant.ResultCommon;
import com.jero.modules.laws.common.util.CurrentUserUtil;
import com.jero.modules.laws.dataCenter.entity.LawsDataCenterFile;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.jero.common.exception.JeroBootException;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import javax.annotation.Resource;
import java.util.Map;
import java.util.Objects;
/**
* @Description: 标准法规入库/变更流程
@@ -22,6 +33,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@Slf4j
public class ProcessFbEntryChangeServiceImpl extends ServiceImpl<ProcessFbEntryChangeMapper, ProcessFbEntryChange> implements IProcessFbEntryChangeService {
@Resource
private IProcessHandleService processHandleService;
/**
* @Author: liao
@@ -52,4 +65,51 @@ public class ProcessFbEntryChangeServiceImpl extends ServiceImpl<ProcessFbEntryC
public ProcessFbEntryChange queryBusinessInfo(String id) {
return getById(id);
}
/**
* @Author: liao
* @Date: 2023/11/3 10:58
* @Description: 启动流程
**/
@Override
public void startProcess(ProcessInfoVO processInfoVO) {
Map<String, Object> userInfoMap = processInfoVO.getUserInfoMap(); // 用户变量map
userInfoMap.put("engineer", CurrentUserUtil.getId()); // 第一个任务节点设置成自己
processInfoVO.setProcessDefinitionId(processHandleService.getDefinitionIdByKey(ProcessDefinitionKey.FB_ENTRY_CHANGE)); // 流程定义id
processInfoVO.setProcessName(getProcessNameByBusinessId(processInfoVO.getBusinessId())); // 流程名称
processInfoVO.setProcessType(ProcessTypeEnum.FB_ENTRY_CHANGE.getValue()); // 流程类型
processHandleService.startProcess(processInfoVO);
}
/**
* @Author: liao
* @Date: 2023/11/3 11:28
* @Description: 根据业务id获取流程名称
**/
private String getProcessNameByBusinessId(String businessId) {
if (StringUtils.isBlank(businessId)) {
throw new JeroBootException(ResultCommon.EMPTY_COMMON, "businessId");
}
ProcessFbEntryChange businessData = getById(businessId);
if (Objects.isNull(businessData)) {
throw new JeroBootException(ResultCommon.NO_CORRESPONDING_DATA_FOUND);
}
String processName = businessData.getStandardNumber() + "-" + businessData.getStandardName();
if ("1".equals(businessData.getOperateType())) { // 入库
processName = processName + "-" + "入库";
} else { // 变更
processName = processName + "-" + "变更";
}
return processName;
}
/**
* @Author: liao
* @Date: 2023/11/3 10:58
* @Description: 保存为草稿
**/
@Override
public void saveToDraft(ProcessInfoVO processInfoVO) {
processHandleService.saveToDraft(processInfoVO);
}
}
@@ -3,14 +3,18 @@ package com.jero.modules.activiti.process.fb.service.impl;
import com.jero.common.exception.JeroBootException;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.enums.ProcessTypeEnum;
import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.activiti.service.ProcessNodeLinkService;
import com.jero.modules.laws.common.util.CurrentUserUtil;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.springframework.beans.factory.annotation.Autowired;
@@ -36,9 +40,13 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
@Resource
private TaskService taskService;
@Resource
private RepositoryService repositoryService;
@Resource
private ProcessAllService processAllService; // 流程实例总表
@Resource
private ProcessApprovalRecordService processApprovalRecordService; // 任务审批表
@Resource
private ProcessNodeLinkService processNodeLinkService; // 流程实例节点关联用户表
/**
* @Author: liao
@@ -49,38 +57,87 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
public void startProcess(ProcessInfoVO processInfoVO) {
String processDefinitionId = processInfoVO.getProcessDefinitionId(); // 流程定义id
Map<String, Object> userInfoMap = processInfoVO.getUserInfoMap(); // 用户变量map
String userId = CurrentUserUtil.getId();
userInfoMap.put("engineer", userId); // 第一个任务节点设置成自己
// 根据流程定义id和变量map启动流程
ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinitionId, userInfoMap);
String processInstanceId = processInstance.getId(); // 流程实例id
// 根据流程实例id更新流程总表
ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId);
process.setCreateUserId(userId); // 流程创建人
process.setPrcName(processInfoVO.getProcessName()); // 流程名称
process.setMes(processInfoVO.getProcessDescription()); // 流程说明
process.setDueTime(processInfoVO.getProcessDueDate()); // 流程截止时间
process.setProjectId(processInfoVO.getBusinessId()); // 业务id
processAllService.updateById(process);
processInfoVO.setProcessInstanceId(processInstanceId);
updateProcessAll(processInfoVO);
// 保存选人信息
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, userInfoMap);
// 根据流程实例id和任务处理人查询任务
Task task = taskService.createTaskQuery()
.processInstanceId(processInstanceId)
.taskAssignee(userId).singleResult();
.taskAssignee(CurrentUserUtil.getId()).singleResult();
String taskId = task.getId();
// 更新审批记录
ProcessApprovalRecord approvalRecord = processApprovalRecordService.getToDoByTaskId(taskId);
approvalRecord.setCommitFlag(1); // 审批意见(1通过,2驳回)
approvalRecord.setCommitText(processInfoVO.getHandleText()); // 审批内容
approvalRecord.setCommitFile(processInfoVO.getHandleFile()); // 审批附件
approvalRecord.setFinishFlag(2); // 完成注记(1进行中,2已完成)
approvalRecord.setEndTime(new Date()); // 完成时间
processApprovalRecordService.updateById(approvalRecord);
processInfoVO.setTaskId(taskId);
processInfoVO.setCommitFlag(1); // 审批意见(1通过,2驳回)
processInfoVO.setFinishFlag(2); // 完成注记(1进行中,2已完成)
updateApprovalRecord(processInfoVO);
// 完成任务
taskService.complete(taskId);
}
/**
* @Author: liao
* @Date: 2023/11/3 10:46
* @Description: 更新流程总表
**/
@Override
public void updateProcessAll(ProcessInfoVO processInfoVO) {
ProcessAll process = processAllService.getByProcessInstanceId(processInfoVO.getProcessInstanceId());
process.setCreateUserId(CurrentUserUtil.getId()); // 流程创建人
process.setPrcName(processInfoVO.getProcessName()); // 流程名称
process.setMes(processInfoVO.getProcessDescription()); // 流程说明
process.setDueTime(processInfoVO.getProcessDueDate()); // 流程截止时间
process.setPrcType(processInfoVO.getProcessType()); // 流程类型
process.setProjectId(processInfoVO.getBusinessId()); // 业务id
processAllService.updateById(process);
}
/**
* @Author: liao
* @Date: 2023/11/3 10:53
* @Description: 更新审批记录
**/
@Override
public void updateApprovalRecord(ProcessInfoVO processInfoVO) {
ProcessApprovalRecord approvalRecord = processApprovalRecordService.getToDoByTaskId(processInfoVO.getTaskId());
approvalRecord.setCommitFlag(processInfoVO.getCommitFlag()); // 审批意见(1通过,2驳回)
approvalRecord.setCommitText(processInfoVO.getHandleText()); // 审批内容
approvalRecord.setCommitFile(processInfoVO.getHandleFile()); // 审批附件
approvalRecord.setFinishFlag(processInfoVO.getFinishFlag()); // 完成注记(1进行中,2已完成)
approvalRecord.setEndTime(new Date()); // 完成时间
processApprovalRecordService.updateById(approvalRecord);
}
/**
* @Author: liao
* @Date: 2023/11/3 10:30
* @Description: 保存为草稿
**/
@Override
public void saveToDraft(ProcessInfoVO processInfoVO) {
}
/**
* @Author: liao
* @Date: 2023/11/3 11:14
* @Description: 根据流程定义key获取最新版本的流程定义id
**/
@Override
public String getDefinitionIdByKey(String definitionKey) {
return repositoryService.createProcessDefinitionQuery() // 创建部署信息查询器
.processDefinitionKey(definitionKey) // 根据流程部署key查询
.orderByProcessDefinitionVersion().desc().latestVersion() // 根据版本倒序取最后一个版本
.singleResult().getId();
}
}
@@ -1,6 +1,8 @@
package com.jero.modules.activiti.process.fb.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -27,6 +29,25 @@ public class ProcessInfoVO {
/**流程实例id*/
@ApiModelProperty(value = "流程实例id")
private java.lang.String processInstanceId;
/**流程类型*/
@ApiModelProperty(value="流程类型")
private Integer processType;
/**任务id*/
@ApiModelProperty(value = "任务id")
private java.lang.String taskId;
/**
* 审批意见(0同意,1不同意)
*/
@Dict(dicCode = "commit_flag")
@ApiModelProperty(value = "审批意见(1通过,2驳回)")
private Integer commitFlag;
/**
* 完成注记(0未完成,1完成)
*/
@Dict(dicCode = "prc_node_status")
@ApiModelProperty(value = "完成注记(1进行中,2已完成)")
private Integer finishFlag;
/**流程信息-流程名称*/
@ApiModelProperty(value = "流程信息-流程名称")
@@ -46,9 +67,6 @@ public class ProcessInfoVO {
/**流程审批信息-附件*/
@ApiModelProperty(value = "流程审批信息-附件")
private java.lang.String handleFile;
/**流程审批信息-操作类型*/
@ApiModelProperty(value = "流程审批信息-操作类型")
private java.lang.String handleType;
/**业务id*/
@ApiModelProperty(value = "业务id")