| | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.flowable.engine.RuntimeService; |
| | | import org.flowable.engine.delegate.DelegateExecution; |
| | | import org.springblade.core.tool.utils.Func; |
| | | import org.springblade.mdm.flow.constants.FlowContants; |
| | | import org.springblade.mdm.flow.entity.ApproveRecord; |
| | | import org.springblade.mdm.flow.entity.FlowProgramFile; |
| | | import org.springblade.mdm.flow.service.ApproveRecordService; |
| | | import org.springblade.mdm.flow.service.FlowProgramFileService; |
| | | import org.springblade.mdm.flow.service.ReplaceFlowService; |
| | | import org.springblade.mdm.program.entity.NcNode; |
| | | import org.springblade.mdm.program.entity.NcProgramApproved; |
| | | import org.springblade.mdm.program.service.NcNodeService; |
| | | import org.springblade.mdm.program.service.NcProgramApprovedService; |
| | | import org.springblade.mdm.utils.EntityUtil; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | private ApproveRecordService approveRecordService; |
| | | @Autowired |
| | | private FlowProgramFileService flowProgramFileService; |
| | | |
| | | @Autowired |
| | | private NcProgramApprovedService ncProgramApprovedService; |
| | | @Autowired |
| | | private NcNodeService ncNodeService; |
| | | /** |
| | |
| | | * @param execution 执行对象 |
| | | */ |
| | | public void handle(DelegateExecution execution) { |
| | | ReplaceFlowService a; |
| | | // 执行业务逻辑 |
| | | String instId = execution.getProcessInstanceId(); |
| | | Long nodeId = runtimeService.getVariable(execution.getId(),ReplaceFlowService.NODE_ID,Long.class); |
| | | log.info("事件名称{},instid={}" , execution.getEventName(),instId); |
| | | List<FlowProgramFile> programFiles = flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId, instId).list(); |
| | | replaceProgram(nodeId,programFiles); |
| | | NcNode newProgramPackage = replaceProgram(nodeId,programFiles); |
| | | |
| | | |
| | | addToApproved(newProgramPackage,Func.toStr(execution.getVariables().get(FlowContants.TITLE))); |
| | | log.info("流程已完成 in replaceFinishListener"); |
| | | } |
| | | |
| | | /** |
| | | * 增加审批通过记录,供用户导出到工控网 |
| | | * @param newProgramPackage 新的程序包节点 |
| | | * @param title 标题 |
| | | */ |
| | | void addToApproved(NcNode newProgramPackage,String title){ |
| | | NcProgramApproved approve = new NcProgramApproved(); |
| | | approve.setProgramName(newProgramPackage.getName()); |
| | | approve.setNcNodeId(newProgramPackage.getId()); |
| | | approve.setTitle(title); |
| | | |
| | | ncProgramApprovedService.save(approve); |
| | | } |
| | | /** |
| | | * 替换原来程序的文件 |
| | | * @param programFiles 新的文件 |
| | | * @return 新的程序包名节点 |
| | | */ |
| | | void replaceProgram(Long nodeId, List<FlowProgramFile> programFiles){ |
| | | NcNode replaceProgram(Long nodeId, List<FlowProgramFile> programFiles){ |
| | | //原节点改为老版本 |
| | | NcNode oldPackageNode = ncNodeService.getById(nodeId); |
| | | oldPackageNode.setIsLastEdition(0); |
| | |
| | | node.setMachineCode(newPackageNode.getMachineCode()); |
| | | node.setProcessName(newPackageNode.getProcessName()); |
| | | node.setNodeType(NcNode.TYPE_PROGRAM_FILE); |
| | | node.setVersionNumber(1); |
| | | node.setVersionNumber(newPackageNode.getVersionNumber());//新版本,应为需要比对 |
| | | node.setCraftEdition(newPackageNode.getCraftEdition()); |
| | | node.setIsLocked(0); |
| | | |
| | | ncNodeService.save(node); |
| | | } |
| | | |
| | | return newPackageNode; |
| | | } |
| | | |
| | | void updateApproveRecordNodeId(NcNode pkgNode){ |