diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/enums/ProcessTypeEnum.java b/laws-modules/src/main/java/com/jero/modules/activiti/enums/ProcessTypeEnum.java index 2cb2b4da..5c8c85e7 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/enums/ProcessTypeEnum.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/enums/ProcessTypeEnum.java @@ -16,16 +16,16 @@ public enum ProcessTypeEnum { STANDARD_COMPLIANCE_CHECK("法规符合性排查流程", 3, "com.jero.modules.activiti.process.standardComplianceCheck.service.StandardComplianceCheckFlow", "/workCenter/RegulatoryComplianceCheckProcess", "/workCenter/RegulatoryComplianceCheckProcess"), MARKET_STANDARD_PUBLISH("市场清单发布流程", 4, "com.jero.modules.activiti.process.ms.service.impl.ProcessMarketStandardReleaseServiceImpl", "/workCenter/MarketListReleaseProcess", "/workCenter/MarketListReleaseProcess"), ENTERPRISE_STANDARD_ABOLISH_PUBLISH("企标废止发布流程", 5, "com.jero.modules.activiti.process.abolish.service.impl.ProcessAbolishReleaseServiceImpl", "/workCenter/AbolishReleaseProcess", "/workCenter/AbolishReleaseProcess"), - ES_REVISION_ADVICE("企业标准制修订及征求意见流程", 6, "com.jero.modules.activiti.process.esRevisionAdvice.service.impl.EsRevisionServiceImpl","/workCenter/enterpriseStandardRevision/enterpriseStandardRevisionFlow","/workCenter/enterpriseStandardRevision"), + ES_REVISION_ADVICE("企业标准制修订及征求意见流程", 6, "com.jero.modules.activiti.process.esRevisionAdvice.service.impl.EsRevisionServiceImpl","/workCenter/EsRevisionAndConsultationProcess","/workCenter/EsRevisionAndConsultationProcess"), ANNUAL_INIT("企业标准年度制修订计划流程", 7, "com.jero.modules.activiti.process.annualinit.service.ProcessAnnualInitService","/workCenter/ESAnnualRevisionPlanProcess","/workCenter/ESAnnualRevisionPlanProcess"), DOMESTIC_VEHICLE_CONTROL_PUBLISH("国内整车型号和VIN前八位管控流程", 8, "com.jero.modules.activiti.process.vehicledomestic.service.impl.ProcessVehicleDomesticReleaseServiceImpl","/workCenter/VehicleDomesticReleaseProcess","/workCenter/VehicleDomesticReleaseProcess"), PLAN_CHANGE("企业标准计划变更流程", 9, "com.jero.modules.activiti.process.planchange.service.ProcessPlanChangeService","/workCenter/enterpriseStandardRevision/enterpriseStandardRevisionFlow","/workCenter/enterpriseStandardRevision"), INTERNATIONAL_VEHICLE_CONTROL_PUBLISH("国际整车型号和VIN前八位管控流程", 10, "com.jero.modules.activiti.process.vehicleinternational.service.impl.ProcessVehicleDomesticReleaseServiceImpl","/workCenter/VehicleInternationalReleaseProcess","/workCenter/VehicleInternationalReleaseProcess"), PART_TYPE_APPLY("关键零部件型号申请流程", 11, "com.jero.modules.activiti.process.part.service.impl.ProcessPartTypeApplyServiceImpl","/workCenter/KeyComponentModelRequestProcess","/workCenter/KeyComponentModelRequestProcess"), - SPECIAL_ES_APPROVAL("专业技术企业标准报批流程", 12, "com.jero.modules.activiti.process.specialEsApproval.service.impl.specialEsApprovalServiceImpl", "/workCenter/specialEsApproval/specialEsApprovalFlow","/workCenter/enterpriseStandardRevision"), - MACHINE_ES_APPROVAL("产品标准-整车企业标准报批流程", 13, "com.jero.modules.activiti.process.esRevisionAdvice.service.impl.EsRevisionServiceImpl", "/workCenter/enterpriseStandardRevision/enterpriseStandardRevisionFlow","/workCenter/enterpriseStandardRevision"), - ES_CAR_APPROVAL("产品标准-整机企业标准报批流程", 14, "com.jero.modules.activiti.process.esRevisionAdvice.service.impl.EsRevisionServiceImpl", "/workCenter/enterpriseStandardRevision/enterpriseStandardRevisionFlow","/workCenter/enterpriseStandardRevision"), - ES_RECHECK("企标复审流程", 15, "com.jero.modules.activiti.process.esRecheck.service.impl.EsRecheckServiceImpl", "/workCenter/enterpriseStandardRecheck/enterpriseStandardRecheckFlow","/workCenter/enterpriseStandardRecheck") + SPECIAL_ES_APPROVAL("专业技术企业标准报批流程", 12, "com.jero.modules.activiti.process.specialEsApproval.service.impl.specialEsApprovalServiceImpl", "/workCenter/specialEsApproval/specialEsApprovalFlow","/workCenter/specialEsApprovalFlow"), + MACHINE_ES_APPROVAL("产品标准-整车企业标准报批流程", 13, "com.jero.modules.activiti.process.machineEsApproval.service.impl.machineEsApprovalServiceImpl", "/workCenter/enterpriseStandardRevision/enterpriseStandardRevisionFlow","/workCenter/enterpriseStandardRevision"), + CAR_ES_APPROVAL("产品标准-整机企业标准报批流程", 14, "com.jero.modules.activiti.process.carEsApproval.service.impl.carEsApprovalServiceImpl", "/workCenter/enterpriseStandardRevision/enterpriseStandardRevisionFlow","/workCenter/enterpriseStandardRevision"), + ES_RECHECK("企标复审流程", 15, "com.jero.modules.activiti.process.esRecheck.service.impl.esRecheckServiceImpl", "/workCenter/enterpriseStandardRecheck/enterpriseStandardRecheckFlow","/workCenter/enterpriseStandardRecheck") ; private final String name; diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/machineEsApproval/common/MachineEsApprovalTaskNodeIdConstant.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/machineEsApproval/common/MachineEsApprovalTaskNodeIdConstant.java new file mode 100644 index 00000000..544a7406 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/machineEsApproval/common/MachineEsApprovalTaskNodeIdConstant.java @@ -0,0 +1,23 @@ +package com.jero.modules.activiti.process.machineEsApproval.common; + +/** + * @author: Mzaxd + * @Date: 2023/12/19 15:14 + */ +public class MachineEsApprovalTaskNodeIdConstant { + + /** 法规工程师确认是否开启征求意见 */ + 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/machineEsApproval/controller/MachineEsApprovalController.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/machineEsApproval/controller/MachineEsApprovalController.java new file mode 100644 index 00000000..e57157ee --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/machineEsApproval/controller/MachineEsApprovalController.java @@ -0,0 +1,90 @@ +package com.jero.modules.activiti.process.machineEsApproval.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.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.machineEsApproval.entity.ProcessMachineEsApproval; +import com.jero.modules.activiti.process.machineEsApproval.service.MachineEsApprovalService; +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/machineEsApproval") +public class MachineEsApprovalController { + + @Resource + private MachineEsApprovalService 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/machineEsApproval/entity/ProcessMachineEsApproval.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/machineEsApproval/entity/ProcessMachineEsApproval.java new file mode 100644 index 00000000..035f6b68 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/machineEsApproval/entity/ProcessMachineEsApproval.java @@ -0,0 +1,83 @@ +package com.jero.modules.activiti.process.machineEsApproval.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_machine_es_approval + */ +@TableName(value ="process_machine_es_approval") +@Data +public class ProcessMachineEsApproval 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/machineEsApproval/listener/ProcessMachineEsApprovalEndListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/machineEsApproval/listener/ProcessMachineEsApprovalEndListener.java new file mode 100644 index 00000000..4a5a6a65 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/machineEsApproval/listener/ProcessMachineEsApprovalEndListener.java @@ -0,0 +1,90 @@ +package com.jero.modules.activiti.process.machineEsApproval.listener; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +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.activiti.process.machineEsApproval.service.MachineEsApprovalService; +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 ProcessMachineEsApprovalEndListener implements ExecutionListener { + + @Resource + private MachineEsApprovalService 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/machineEsApproval/mapper/ProcessMachineEsApprovalMapper.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/machineEsApproval/mapper/ProcessMachineEsApprovalMapper.java new file mode 100644 index 00000000..24775646 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/machineEsApproval/mapper/ProcessMachineEsApprovalMapper.java @@ -0,0 +1,18 @@ +package com.jero.modules.activiti.process.machineEsApproval.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.jero.modules.activiti.process.machineEsApproval.entity.ProcessMachineEsApproval; + +/** +* @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 ProcessMachineEsApprovalMapper extends BaseMapper { + +} + + + + diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/machineEsApproval/service/MachineEsApprovalService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/machineEsApproval/service/MachineEsApprovalService.java new file mode 100644 index 00000000..137f8ed9 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/machineEsApproval/service/MachineEsApprovalService.java @@ -0,0 +1,23 @@ +package com.jero.modules.activiti.process.machineEsApproval.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; +import com.jero.modules.activiti.process.machineEsApproval.entity.ProcessMachineEsApproval; + +/** + * @author ThinkBook + * @description 针对表【process_es_revision】的数据库操作Service + * @createDate 2023-12-19 11:58:59 + */ +public interface MachineEsApprovalService 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/machineEsApproval/service/impl/MachineEsApprovalServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/machineEsApproval/service/impl/MachineEsApprovalServiceImpl.java new file mode 100644 index 00000000..b9945fee --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/machineEsApproval/service/impl/MachineEsApprovalServiceImpl.java @@ -0,0 +1,242 @@ +package com.jero.modules.activiti.process.machineEsApproval.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.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.machineEsApproval.entity.ProcessMachineEsApproval; +import com.jero.modules.activiti.process.machineEsApproval.mapper.ProcessMachineEsApprovalMapper; +import com.jero.modules.activiti.process.machineEsApproval.service.MachineEsApprovalService; +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 MachineEsApprovalServiceImpl extends ServiceImpl + implements MachineEsApprovalService { + + @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.MACHINE_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(); + ProcessMachineEsApproval 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); + // 获取分发人 + 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(ProcessMachineEsApproval::getProcessInstanceId, processInstanceId); + ProcessMachineEsApproval 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(); + ProcessMachineEsApproval data = processInfoVO.getBusinessInfoDTO(); + // 根据流程实例Id获取流程定义ID + ProcessInstance processInstance = runtimeService.createProcessInstanceQuery() + .processInstanceId(processInstanceId).singleResult(); + // 获取数据库中的流程信息 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ProcessMachineEsApproval::getProcessInstanceId, processInstanceId); + ProcessMachineEsApproval 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)) { + // 获取数据库中的流程信息 + ProcessMachineEsApproval data = processInfoVO.getBusinessInfoDTO(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ProcessMachineEsApproval::getProcessInstanceId, processInstanceId); + ProcessMachineEsApproval 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/specialEsApproval/controller/SpecialEsApprovalController.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/specialEsApproval/controller/SpecialEsApprovalController.java index 1175a3fd..6c2c49a8 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/specialEsApproval/controller/SpecialEsApprovalController.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/specialEsApproval/controller/SpecialEsApprovalController.java @@ -64,7 +64,7 @@ public class SpecialEsApprovalController { @GetMapping("/handle/{taskId}") @Translation public Result handle(@PathVariable("taskId") String taskId) { - ProcessDraft draft = actFlowCommonService.getExistDraftByTaskId(taskId, ProcessTypeEnum.ES_REVISION_ADVICE); + ProcessDraft draft = actFlowCommonService.getExistDraftByTaskId(taskId, ProcessTypeEnum.SPECIAL_ES_APPROVAL); if (draft != null) { return Result.OK(draft); } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/specialEsApproval/entity/ProcessSpecialEsApproval.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/specialEsApproval/entity/ProcessSpecialEsApproval.java index 0625112b..5fc596b3 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/specialEsApproval/entity/ProcessSpecialEsApproval.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/specialEsApproval/entity/ProcessSpecialEsApproval.java @@ -12,7 +12,7 @@ import java.util.Date; /** * - * @TableName process_es_revision + * @TableName process_special_es_approval */ @TableName(value ="process_special_es_approval") @Data