update 标准法规入库_变更流程-发起流程
This commit is contained in:
@@ -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;
|
||||
|
||||
+14
@@ -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";
|
||||
|
||||
}
|
||||
+17
@@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
-43
@@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
+15
@@ -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);
|
||||
}
|
||||
|
||||
+28
@@ -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);
|
||||
}
|
||||
|
||||
+60
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
+74
-17
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+21
-3
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user