From ae0a635edc3fae29d8f93e2fbba036c833c23621 Mon Sep 17 00:00:00 2001 From: caihaohan Date: Thu, 10 Oct 2024 15:53:35 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=95=B4=E8=BD=A6=E4=BC=81=E4=B8=9A?= =?UTF-8?q?=E6=A0=87=E5=87=86=E6=8A=A5=E6=89=B9=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CarEsApprovalTaskNodeIdConstant.java | 23 ++ .../controller/CarEsApprovalController.java | 90 +++++++ .../entity/ProcessCarEsApproval.java | 83 ++++++ .../ProcessCarEsApprovalEndListener.java | 90 +++++++ .../mapper/ProcessCarEsApprovalMapper.java | 18 ++ .../service/CarEsApprovalService.java | 22 ++ .../impl/CarEsApprovalServiceImpl.java | 243 ++++++++++++++++++ .../process/common/enums/ProcessType.java | 2 +- 8 files changed, 570 insertions(+), 1 deletion(-) create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/carEsApproval/common/CarEsApprovalTaskNodeIdConstant.java create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/carEsApproval/controller/CarEsApprovalController.java create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/carEsApproval/entity/ProcessCarEsApproval.java create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/carEsApproval/listener/ProcessCarEsApprovalEndListener.java create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/carEsApproval/mapper/ProcessCarEsApprovalMapper.java create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/carEsApproval/service/CarEsApprovalService.java create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/carEsApproval/service/impl/CarEsApprovalServiceImpl.java diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/carEsApproval/common/CarEsApprovalTaskNodeIdConstant.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/carEsApproval/common/CarEsApprovalTaskNodeIdConstant.java new file mode 100644 index 00000000..0d25ce6f --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/carEsApproval/common/CarEsApprovalTaskNodeIdConstant.java @@ -0,0 +1,23 @@ +package com.jero.modules.activiti.process.carEsApproval.common; + +/** + * @author: Mzaxd + * @Date: 2023/12/19 15:14 + */ +public class CarEsApprovalTaskNodeIdConstant { + + /** 法规工程师确认是否开启征求意见 */ + public static final String START = "Activity_1siuksf"; + /** 设计工程师填写意见 */ + public static final String ONE = "Activity_04m430n"; + /** 法规工程师汇总数据 */ + public static final String TWO = "Activity_1riqzkp"; + /** 法规工程师派号 */ + public static final String THREE = "Activity_11uuyg0"; + /** 主起草人 */ + public static final String FOUR = "mainDraftUser"; + /** 法规工程师 */ + public static final String FIVE = "standardEngineer"; + /** 征求意见人员 */ + public static final String SIX = "adviceUserList"; +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/carEsApproval/controller/CarEsApprovalController.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/carEsApproval/controller/CarEsApprovalController.java new file mode 100644 index 00000000..f845070f --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/carEsApproval/controller/CarEsApprovalController.java @@ -0,0 +1,90 @@ +package com.jero.modules.activiti.process.carEsApproval.controller; + +import com.jero.common.api.vo.Result; +import com.jero.common.aspect.annotation.AutoLog; +import com.jero.common.aspect.annotation.Translation; +import com.jero.modules.activiti.enums.ProcessTypeEnum; +import com.jero.modules.activiti.process.carEsApproval.service.CarEsApprovalService; +import com.jero.modules.activiti.process.common.entity.ProcessDraft; +import com.jero.modules.activiti.process.common.service.ActFlowCommonService; +import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; +import com.jero.modules.activiti.process.carEsApproval.entity.ProcessCarEsApproval; +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.web.bind.annotation.*; + +import javax.annotation.Resource; + + +/** + * @author: Mzaxd + * @Date: 2023/10/18 10:44 + */ +@Slf4j +@RestController +@Api(tags = "整车企业标准报批流程") +@RequestMapping("/process/es/carEsApproval") +public class CarEsApprovalController { + + @Resource + private CarEsApprovalService flowService; + + @Resource + private ActFlowCommonService actFlowCommonService; + + /** + * 整车企业标准报批流程 + * + * @param processInfoVO + */ + @AutoLog(value = "整车企业标准报批流程-发起流程") + @ApiOperation(value="整车企业标准报批流程-发起流程", notes="整车企业标准报批流程-发起流程") + @PostMapping("/start") + public Result startProcess(@RequestBody ProcessInfoVO processInfoVO) { + flowService.startProcess(processInfoVO); + return Result.OK(); + } + + @AutoLog(value = "整车企业标准报批流程-提交") + @ApiOperation(value = "整车企业标准报批流程-提交", notes = "整车企业标准报批流程-提交") + @PostMapping("/submit") + public Result submit(@RequestBody ProcessInfoVO processInfoVO) { + flowService.submit(processInfoVO); + return Result.OK(); + } + + /** + * 保存到待办 + * @param taskId + */ + @AutoLog(value = "整车企业标准报批流程-办理") + @ApiOperation(value="整车企业标准报批流程-办理", notes="整车企业标准报批流程-办理") + @GetMapping("/handle/{taskId}") + @Translation + public Result handle(@PathVariable("taskId") String taskId) { + ProcessDraft draft = actFlowCommonService.getExistDraftByTaskId(taskId, ProcessTypeEnum.MACHINE_ES_APPROVAL); + if (draft != null) { + return Result.OK(draft); + } + return Result.OK(flowService.getHandleData(taskId)); + } + + @AutoLog(value = "整车企业标准报批流程-同意") + @ApiOperation(value = "整车企业标准报批流程-同意", notes = "整车企业标准报批流程-同意") + @PostMapping("/agree") + public Result agree(@RequestBody ProcessInfoVO processInfoVO) { + flowService.approveTask(processInfoVO, true); + return Result.OK(); + } + + @AutoLog(value = "整车企业标准报批流程-驳回") + @ApiOperation(value = "整车企业标准报批流程-驳回", notes = "整车企业标准报批流程-驳回") + @PostMapping("/reject") + public Result reject(@RequestBody ProcessInfoVO processInfoVO) { + flowService.approveTask(processInfoVO, false); + return Result.OK(); + } + +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/carEsApproval/entity/ProcessCarEsApproval.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/carEsApproval/entity/ProcessCarEsApproval.java new file mode 100644 index 00000000..621f05d8 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/carEsApproval/entity/ProcessCarEsApproval.java @@ -0,0 +1,83 @@ +package com.jero.modules.activiti.process.carEsApproval.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * + * @TableName process_car_es_approval + */ +@TableName(value ="process_car_es_approval") +@Data +public class ProcessCarEsApproval implements Serializable { + /** + * 主键ID + */ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键ID") + private String id; + + /** + * 创建人 + */ + @ApiModelProperty(value = "创建人") + private String createBy; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间") + private Date createTime; + + /** + * 更新人 + */ + @ApiModelProperty(value = "更新人") + private String updateBy; + + /** + * 更新时间 + */ + @ApiModelProperty(value = "更新时间") + private Date updateTime; + + /** + * 所属部门 + */ + @ApiModelProperty(value = "所属部门") + private String orgCode; + + /** + * 0表示未删除,1表示删除 + */ + @ApiModelProperty(value = "0表示未删除,1表示删除") + private Integer delFlag; + + /** + * 流程实例Id + */ + @ApiModelProperty(value = "流程实例Id") + private String processInstanceId; + + /** + * 在线编辑文件id + */ + @ApiModelProperty(value = "在线编辑文件id") + private String onEditFile; + + /** + * 业务json数据 + */ + @ApiModelProperty(value = "业务JSON数据") + private String businessJson; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/carEsApproval/listener/ProcessCarEsApprovalEndListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/carEsApproval/listener/ProcessCarEsApprovalEndListener.java new file mode 100644 index 00000000..69607e5d --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/carEsApproval/listener/ProcessCarEsApprovalEndListener.java @@ -0,0 +1,90 @@ +package com.jero.modules.activiti.process.carEsApproval.listener; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.jero.modules.activiti.process.carEsApproval.service.CarEsApprovalService; +import com.jero.modules.activiti.process.common.enums.StandardStateEnum; +import com.jero.modules.activiti.process.esRevisionAdvice.service.EsRevisionAdviceService; +import com.jero.modules.activiti.process.machineEsApproval.entity.ProcessMachineEsApproval; +import com.jero.modules.laws.common.constant.FieldCommon; +import com.jero.modules.laws.common.service.ILawsCommonService; +import com.jero.modules.oss.service.IOSSFileService; +import com.jero.modules.tag.enums.TableNameEnum; +import lombok.SneakyThrows; +import org.activiti.engine.delegate.DelegateExecution; +import org.activiti.engine.delegate.ExecutionListener; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Map; + +/** + * @author: Mzaxd + * @Date: 2023/12/19 11:59 + */ +@Component +public class ProcessCarEsApprovalEndListener implements ExecutionListener { + + @Resource + private CarEsApprovalService esRevisionService; + + @Resource + private EsRevisionAdviceService esAdviceService; + + @Resource + private ILawsCommonService lawsCommonService; + + @Resource + private IOSSFileService ossFileService; + + @Resource + private EsRevisionAdviceService revisionAdviceService; + + @Value(value = "${jero.uploadType}") + private String uploadType; + + @SneakyThrows + @Override + public void notify(DelegateExecution delegateExecution) { +// // 获取流程实例Id +// String processInstanceId = delegateExecution.getProcessInstanceId(); +// // 根据流程Id获取业务数据 +// LambdaQueryWrapper revisionWrapper = new LambdaQueryWrapper<>(); +// revisionWrapper.eq(ProcessSpecialEsApproval::getProcessInstanceId, processInstanceId); +// // 获取企标相关数据 +// ProcessSpecialEsApproval data = esRevisionService.getOne(revisionWrapper); +// // 将数据转换为Map +// Map variables = transMap(data); +// Date adviceDeadline = data.getAdviceDeadline(); +// if (adviceDeadline != null) { +// // 制作征求意见稿 +// String draftFileId = this.makeDraftFile(data); +// variables.put(FieldCommon.FILE_DRAFT_FOR_COMMENT, draftFileId); +// } +// // 发布企标 +// String esId = lawsCommonService.commonAdd(variables); +// // 所有意见设置标准Id +// LambdaQueryWrapper adviceWrapper = new LambdaQueryWrapper<>(); +// adviceWrapper.eq(EsRevisionAdvice::getProcessInstanceId, processInstanceId); +// List list = esAdviceService.list(adviceWrapper); +// if (!list.isEmpty()) { +// list.forEach(item -> item.setStandardId(esId)); +// esAdviceService.updateBatchById(list); +// } +// // 更改企标计划状态 + } + + private Map transMap(ProcessMachineEsApproval data) { + Map variables = JSON.parseObject(data.getBusinessJson(), Map.class); + variables.put(FieldCommon.MODULE, TableNameEnum.ENTERPRISE_STANDARDS.getValue()); + // 标准状态 + variables.put(FieldCommon.STANDARD_STATE, StandardStateEnum.SEEK_FOR_OPINIONS.getStateValue()); + String standardId = IdWorker.getIdStr(); + variables.put(FieldCommon.ID, standardId); + String onEditFile = data.getOnEditFile(); + // 发布稿 + variables.put(FieldCommon.FILE_PUBLISH_OF_ORIGINAL, onEditFile); + return variables; + } +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/carEsApproval/mapper/ProcessCarEsApprovalMapper.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/carEsApproval/mapper/ProcessCarEsApprovalMapper.java new file mode 100644 index 00000000..8698db5d --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/carEsApproval/mapper/ProcessCarEsApprovalMapper.java @@ -0,0 +1,18 @@ +package com.jero.modules.activiti.process.carEsApproval.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.jero.modules.activiti.process.carEsApproval.entity.ProcessCarEsApproval; + +/** +* @author ThinkBook +* @description 针对表【process_es_revision】的数据库操作Mapper +* @createDate 2023-12-19 11:58:59 +* @Entity com.jero.modules.activiti.process.esRevision.entity.EsRevision +*/ +public interface ProcessCarEsApprovalMapper extends BaseMapper { + +} + + + + diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/carEsApproval/service/CarEsApprovalService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/carEsApproval/service/CarEsApprovalService.java new file mode 100644 index 00000000..e4ea403a --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/carEsApproval/service/CarEsApprovalService.java @@ -0,0 +1,22 @@ +package com.jero.modules.activiti.process.carEsApproval.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; +import com.jero.modules.activiti.process.carEsApproval.entity.ProcessCarEsApproval; + +/** + * @author ThinkBook + * @description 针对表【process_es_revision】的数据库操作Service + * @createDate 2023-12-19 11:58:59 + */ +public interface CarEsApprovalService extends IService { + + ProcessInfoVO getHandleData(String taskId); + + void startProcess(ProcessInfoVO processInfoVO); + + void submit(ProcessInfoVO processInfoVO); + + void approveTask(ProcessInfoVO processInfoVO, boolean pass); +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/carEsApproval/service/impl/CarEsApprovalServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/carEsApproval/service/impl/CarEsApprovalServiceImpl.java new file mode 100644 index 00000000..8c5abc5d --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/carEsApproval/service/impl/CarEsApprovalServiceImpl.java @@ -0,0 +1,243 @@ +package com.jero.modules.activiti.process.carEsApproval.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.common.api.vo.ResultCommon; +import com.jero.common.exception.JeroBootException; +import com.jero.modules.activiti.entity.ProcessApprovalRecord; +import com.jero.modules.activiti.enums.CommitFlagEnum; +import com.jero.modules.activiti.enums.ProcessTypeEnum; +import com.jero.modules.activiti.process.carEsApproval.mapper.ProcessCarEsApprovalMapper; +import com.jero.modules.activiti.process.carEsApproval.service.CarEsApprovalService; +import com.jero.modules.activiti.process.common.enums.ProcessType; +import com.jero.modules.activiti.process.common.service.ActFlowCommonService; +import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO; +import com.jero.modules.activiti.process.fb.dto.BasicTaskInfoDTO; +import com.jero.modules.activiti.process.fb.service.IProcessHandleService; +import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; +import com.jero.modules.activiti.process.carEsApproval.entity.ProcessCarEsApproval; +import com.jero.modules.activiti.service.ProcessApprovalRecordService; +import com.jero.modules.activiti.service.ProcessNodeLinkService; +import com.jero.modules.sys.utils.UserUtils; +import lombok.extern.slf4j.Slf4j; +import org.activiti.engine.RuntimeService; +import org.activiti.engine.TaskService; +import org.activiti.engine.runtime.ProcessInstance; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.Map; + +import static com.jero.modules.activiti.common.ActivitiCommon.*; +import static com.jero.modules.activiti.process.specialEsApproval.common.SpecialEsApprovalTaskNodeIdConstant.TWO; + +/** + * @author ThinkBook + * @description 针对表【process_es_revision】的数据库操作Service实现 + * @createDate 2023-12-19 11:58:59 + */ +@Service +@Slf4j +@Transactional(rollbackFor = JeroBootException.class) +public class CarEsApprovalServiceImpl extends ServiceImpl + implements CarEsApprovalService { + + @Resource + private ActFlowCommonService actFlowCommonService; + + @Resource + private ProcessNodeLinkService processNodeLinkService; + + @Resource + private RuntimeService runtimeService; + + @Resource + private IProcessHandleService processHandleService; + + @Resource + private TaskService taskService; + + @Resource + private ProcessApprovalRecordService approvalRecordService; + + @Override + public void startProcess(ProcessInfoVO processInfoVO) { + // 流程Key + String processDefinitionKey = ProcessType.CAR_ES_APPROVAL.getProcessKey(); + // 流程信息 + BasicProcessInfoDTO processInfo = processInfoVO.getBasicProcessInfoDTO(); + // 任务信息 + BasicTaskInfoDTO processTask = processInfoVO.getBasicTaskInfoDTO(); + // 人员信息 + Map userInfoMap = processInfoVO.getUserInfoMap(); + // 当前用户Id + String userId = UserUtils.getUserId(); + // 设置流程变量 + Map actVariables = this.setVariables(processInfoVO); + // 删除草稿 + actFlowCommonService.getExistDraftAndRemove(processInfoVO.getDraftId()); + // 启动流程 + ProcessInstance processInstance = actFlowCommonService.startProcess(processDefinitionKey, actVariables); + // 获取流程实例ID + String processDefinitionId = processInstance.getProcessDefinitionId(); + String processInstanceId = processInstance.getId(); + processInfo.setProcessInstanceId(processInstanceId); + processInfo.setProcessDefinitionId(processDefinitionId); + processInfo.setProcessType(ProcessTypeEnum.MACHINE_ES_APPROVAL.getValue()); + // 第一个节点业务数据处理 + this.startNodeBusProcess(processInfoVO); + // 保存选人信息 + processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, userInfoMap); + // 获取第一个任务的taskId + String taskId = actFlowCommonService.getFirstTaskId(processInstanceId, userId, processDefinitionId); + processTask.setTaskId(taskId); + // 保存第一个节点的草稿 + processHandleService.saveToDraft(processInfoVO, userId); + // 保存第一个节点的快照 + processHandleService.saveToSnapshot(processInfoVO, userId); + // 更新审批表为完成,填充数据 + actFlowCommonService.updateApprovalInfo(processTask, taskId); + // 根据流程实例id更新流程总表 + actFlowCommonService.updateProcessAll(processInfo); + // 自动完成第一个任务 + actFlowCommonService.completeTask(taskId, userId); + } + + private void startNodeBusProcess(ProcessInfoVO processInfoVO) { + String processInstanceId = processInfoVO.getBasicProcessInfoDTO().getProcessInstanceId(); + ProcessCarEsApproval processInfo = processInfoVO.getBusinessInfoDTO(); + processInfo.setProcessInstanceId(processInstanceId); + save(processInfo); + } + + private Map setVariables(ProcessInfoVO processInfoVO) { + Map userInfoMap = processInfoVO.getUserInfoMap(); + Map result = new HashMap<>(); + // 将所有多选人员转换为List后放入map中 + userInfoMap.put(MAIN_DRAFT_USER, userInfoMap.get(MAIN_DRAFT_USER)); + actFlowCommonService.convertAndPutList(result, userInfoMap, USER_ONE_List); + actFlowCommonService.convertAndPutList(result, userInfoMap, USER_TWO_List); + actFlowCommonService.convertAndPutList(result, userInfoMap, USER_THREE_List); + actFlowCommonService.convertAndPutList(result, userInfoMap, USER_FOUR_List); + actFlowCommonService.convertAndPutList(result, userInfoMap, USER_FIVE_List); + actFlowCommonService.convertAndPutList(result, userInfoMap, USER_SIX_List); + actFlowCommonService.convertAndPutList(result, userInfoMap, USER_SEVEN_List); + // 获取分发人 + return result; + } + + @Override + public ProcessInfoVO getHandleData(String taskId) { + if (!actFlowCommonService.taskExists(taskId)) { + throw new JeroBootException(ResultCommon.TASK_NOT_EXISTS); + } + ProcessInfoVO result = new ProcessInfoVO<>(); + // 使用流程引擎根据taskId找到流程实例Id + String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); + result.setBasicProcessInfoDTO(actFlowCommonService.getProcessInfo(processInstanceId)); + // 获取当前流程数据 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ProcessCarEsApproval::getProcessInstanceId, processInstanceId); + ProcessCarEsApproval processVo = getOne(queryWrapper); + // 设置流程信息 + result.setBusinessInfoDTO(processVo); + return result; + } + + @Override + public void submit(ProcessInfoVO processInfoVO) { + BasicTaskInfoDTO processTask = processInfoVO.getBasicTaskInfoDTO(); + String taskId = processTask.getTaskId(); + // 校验是否有权限操作此待办 + processHandleService.validTask(taskId); + // 获取当前节点的id + String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); + BasicProcessInfoDTO processInfo = new BasicProcessInfoDTO(); + // 使用流程引擎根据taskId找到流程实例Id + processInfo.setProcessInstanceId(processInstanceId); + processInfoVO.setBasicProcessInfoDTO(processInfo); + // 更新审批表为完成,填充数据 + actFlowCommonService.updateApprovalInfo(processTask, taskId); + String curUserId = UserUtils.getUserId(); + ProcessCarEsApproval data = processInfoVO.getBusinessInfoDTO(); + // 根据流程实例Id获取流程定义ID + ProcessInstance processInstance = runtimeService.createProcessInstanceQuery() + .processInstanceId(processInstanceId).singleResult(); + // 获取数据库中的流程信息 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ProcessCarEsApproval::getProcessInstanceId, processInstanceId); + ProcessCarEsApproval dataFromDb = getOne(queryWrapper); + if (dataFromDb != null) { + data.setId(dataFromDb.getId()); + } + // 获取流程实例ID + String processDefinitionId = processInstance.getProcessDefinitionId(); + // 判断是否开启征求意见子流程 设置流程变量 + Map actVariable = this.setVariables(processInfoVO); + taskService.setVariables(taskId, actVariable); + // 保存流程数据 + saveOrUpdate(data); + processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, processInfoVO.getUserInfoMap()); + // 完成任务 + actFlowCommonService.completeTask(taskId, curUserId); + // 更新审批表为完成,填充数据 + actFlowCommonService.updateApprovalInfo(processTask, taskId); + // 删除草稿 + actFlowCommonService.removeDraft(curUserId, taskId, processInstanceId); + // 保存快照 + processHandleService.saveToSnapshot(processInfoVO, curUserId); + } + + @Override + public void approveTask(ProcessInfoVO processInfoVO, boolean pass) { + // 获取task + BasicTaskInfoDTO processTask = processInfoVO.getBasicTaskInfoDTO(); + String taskId = processTask.getTaskId(); + // 校验是否有权限操作此待办 + processHandleService.validTask(taskId); + String prcId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); + BasicProcessInfoDTO processInfo = new BasicProcessInfoDTO(); + processInfo.setProcessInstanceId(prcId); + processInfoVO.setBasicProcessInfoDTO(processInfo); + // 获取当前节点的id + ProcessApprovalRecord record = actFlowCommonService.getNodeIdByTaskId(taskId); + String xmlNodeId = record.getNodeId(); + String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); + // 更新审批表为完成,填充数据 + actFlowCommonService.updateApprovalInfo(processTask, taskId); + String curUserId = UserUtils.getUserId(); + if (xmlNodeId.equals(TWO)) { + // 获取数据库中的流程信息 + ProcessCarEsApproval data = processInfoVO.getBusinessInfoDTO(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ProcessCarEsApproval::getProcessInstanceId, processInstanceId); + ProcessCarEsApproval dataFromDb = getOne(queryWrapper); + if (dataFromDb != null) { + data.setId(dataFromDb.getId()); + } + // 保存数据 + updateById(data); + } + // 设置流程变量 + runtimeService.setVariable(processInstanceId, PASS, pass); + // 会签节点驳回后修改其他节点的状态 + approvalRecordService.updateApprovalRecordFinishFlag(pass, taskId, xmlNodeId, processInstanceId); + // 保存快照 + processHandleService.saveToSnapshot(processInfoVO, curUserId); + // 审批节点 + actFlowCommonService.completeTask(taskId, curUserId); + // 驳回,结束所有节点 + approvalRecordService.updateApprovalRecordFinishFlag(pass, taskId, xmlNodeId, processInstanceId); + // 更新审批表为完成,填充数据 + processTask.setCommitFlag(pass ? CommitFlagEnum.PASS.getValue() : CommitFlagEnum.REJECT.getValue()); + actFlowCommonService.updateApprovalInfo(processTask, taskId); + // 删除草稿 + actFlowCommonService.removeDraft(curUserId, taskId, processInstanceId); + } +} + + + + diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/common/enums/ProcessType.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/common/enums/ProcessType.java index 85b5b956..86b79cae 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/common/enums/ProcessType.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/common/enums/ProcessType.java @@ -24,7 +24,7 @@ public enum ProcessType { PART_TYPE_APPLY("关键零部件型号申请流程", "11", "part_type_apply","ProcessPartTypeApplyServiceImpl"), SPECIAL_ES_APPROVAL("专业技术企业标准报批流程", "12", "special_es_approval", "ProcessSpecialEsApprovalServiceImpl"), MACHINE_ES_APPROVAL("产品标准-整车企业标准报批流程", "13", "machine_es_approval", "ProcessMachineEsApprovalServiceImpl"), - ES_CAR_APPROVAL("产品标准-整机企业标准报批流程", "14", "es_car_approval", "ProcessEsCarApprovalServiceImpl"), + CAR_ES_APPROVAL("产品标准-整机企业标准报批流程", "14", "car_es_approval", "ProcessEsCarApprovalServiceImpl"), ES_RECHECK("企标复审流程", "15", "es_recheck", "ProcessEsRecheckServiceImpl"), ;