| | |
| | | package org.springblade.mdm.flow.task.cure; |
| | | |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.flowable.engine.delegate.DelegateExecution; |
| | | import org.springblade.mdm.flow.service.FlowCommonService; |
| | | import org.springblade.mdm.flow.service.FlowProgramProperties; |
| | | import org.springblade.mdm.program.entity.NcNode; |
| | | import org.springblade.mdm.program.entity.NcProgram; |
| | | import org.springblade.mdm.program.service.NcNodeAutoCreateService; |
| | | import org.springblade.mdm.program.service.NcNodeService; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Slf4j |
| | | @Component("cureFinishOperateTask") |
| | | @AllArgsConstructor |
| | | public class CureFinishOperateTask { |
| | | |
| | | private final NcNodeService nodeService; |
| | | private final NcNodeAutoCreateService ncNodeAutoCreateService; |
| | | private final FlowCommonService flowCommonService; |
| | | /** |
| | | * 固化审批通过处理任务, |
| | | * @param execution 流程execution |
| | | */ |
| | | public void execute(DelegateExecution execution) { |
| | | log.info("执行固化程序任务服务,流程实例id={}", execution.getProcessInstanceId()); |
| | | //固化程序检查有效期, |
| | | String hasCuredProgram = (String)execution.getVariable("hasCuredProgram"); |
| | | NcProgram ncProgram = (NcProgram)execution.getVariable("curedNcProgram"); |
| | | //1.将流程设置 |
| | | dealWithNode(execution.getProcessInstanceId()); |
| | | |
| | | System.out.println("执行固化程序任务服务"); |
| | | } |
| | | |
| | | /** |
| | | * 处理node状态。 |
| | | * @param processInstanceId 流程实例id |
| | | */ |
| | | void dealWithNode(String processInstanceId) { |
| | | //程序包节点和下属程序节点(包括历史节点非最新版本的)从试切挪到固化下面 |
| | | //程序包节点 设置未已固化 |
| | | NcNode pkgNode = nodeService.lambdaQuery().eq(NcNode::getProcessInstanceId, processInstanceId).one(); |
| | | pkgNode.setIsCured(1); |
| | | |
| | | List<NcNode> historyNodes = nodeService.getNodeHistorys(pkgNode); |
| | | moveNodeToCuredTree(pkgNode,historyNodes,flowCommonService.getProgramProperties(processInstanceId)); |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 将节点和历史节点挪动到固化的同级节点下 |
| | | * @param historyNodes |
| | | */ |
| | | void moveNodeToCuredTree(NcNode pkgNode,List<NcNode> historyNodes, FlowProgramProperties programProperties) { |
| | | NcNode node = historyNodes.get(0); |
| | | //创建节点到机床级别.(固化树) |
| | | NcNode machineNode = ncNodeAutoCreateService.createNodeTreeToMachine(programProperties); |
| | | |
| | | //移动到固化树下的机床节点下层 |
| | | String newParentIds = machineNode.getParentIds()+","+machineNode.getId(); |
| | | for(NcNode hisNode : historyNodes){ |
| | | if(!hisNode.getId().equals(pkgNode.getId())){ |
| | | hisNode.setIsLastEdition(0); |
| | | } |
| | | hisNode.setParentId(machineNode.getParentId()); |
| | | hisNode.setParentIds(newParentIds); |
| | | |
| | | //处理程序包下层的程序节点 |
| | | List<NcNode> pragramNodes = nodeService.lambdaQuery().eq(NcNode::getParentId,hisNode.getId()).list(); |
| | | for(NcNode pragramNode : pragramNodes){ |
| | | pragramNode.setParentIds(hisNode.getParentIds()+","+hisNode.getId()); |
| | | } |
| | | nodeService.updateBatchById(pragramNodes); |
| | | } |
| | | nodeService.updateBatchById(historyNodes); |
| | | |
| | | |
| | | |
| | | } |
| | | } |