| ÎļþÃû´Ó blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/DispatchFinishListener.java ÐÞ¸Ä |
| | |
| | | package org.springblade.mdm.flow.excution; |
| | | package org.springblade.mdm.flow.excution.dispatch; |
| | | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.flowable.engine.RuntimeService; |
| | | import org.flowable.engine.delegate.DelegateExecution; |
| | | import org.flowable.engine.history.HistoricProcessInstance; |
| | | 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.FlowCommonService; |
| | | import org.springblade.mdm.flow.service.FlowProgramFileService; |
| | | import org.springblade.mdm.flow.service.FlowProgramProperties; |
| | | import org.springblade.mdm.program.entity.NcNode; |
| | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 派工审æ¹éè¿æ§è¡çäºä»¶ï¼åè½ï¼æå
¥å®¡æ¹è¡¨æ°æ® |
| | | * æ®éæ´¾å·¥å®ææ°æ®å¤çå¨ï¼åè½ï¼æå
¥å®¡æ¹è¡¨æ°æ®ï¼DispatchFinishListenerè°ç¨ |
| | | */ |
| | | @Slf4j |
| | | @Component("dispatchFinishListener") |
| | | public class DispatchFinishListener { |
| | | @Autowired |
| | | private RuntimeService runtimeService; |
| | | @Component("normalDispatchFinishDataHandler") |
| | | public class NormalFinishDataHandler implements FinishDataHandler{ |
| | | @Autowired |
| | | private NcProgramApprovedService approvedService; |
| | | @Autowired |
| | |
| | | @Autowired |
| | | private FlowProgramFileService flowProgramFileService; |
| | | @Autowired |
| | | private FlowCommonService flowCommonService; |
| | | @Autowired |
| | | private NcNodeService ncNodeService; |
| | | @Autowired |
| | | private NcNodeAutoCreateService ncNodeAutoCreateService; |
| | | /** |
| | | * 卿µç¨ç»ææ¶èªå¨è°ç¨,ï¼é
ç½®å¨å®¡æ¹ç»æäºä»¶çexecutelistenerä¸äºï¼ |
| | | * @param execution æ§è¡å¯¹è±¡ |
| | | * DispatchFinishListenerä¸è°ç¨ |
| | | * @param props æ§è¡å¯¹è±¡ |
| | | */ |
| | | public void handle(DelegateExecution execution) { |
| | | public void handleData(FlowProgramProperties props) { |
| | | // æ§è¡ä¸å¡é»è¾ |
| | | String instId = execution.getProcessInstanceId(); |
| | | log.info("äºä»¶åç§°{}ï¼instid={}" , execution.getEventName(),instId); |
| | | String instId = props.getProcessInstanceId(); |
| | | |
| | | FlowProgramProperties props = flowCommonService.getProgramProperties(instId); |
| | | |
| | | String programPkgName = NcNodeService.genProgramName(props.getDrawingNo(),props.getProcessNo()); |
| | | createProgramNodes(props); |
| | | |
| | | String programName = NcNodeService.genProgramName(props.getDrawingNo(),props.getProcessNo()); |
| | | NcNode packageNode = ncNodeService.getProgramPackageByName(programName); |
| | | //TODO å离åï¼åå·²ç»åºåçç¨åºï¼æ²¡æå¤ç,:å·²ç»å¤ç没æéªè¯ |
| | | NcNode packageNode; |
| | | if(FlowContants.Y.equals(props.getHasCuredProgram()) && FlowContants.Y.equals(props.getCureProgramUseable())){ |
| | | //æåºåï¼ä¸ç¨åºå¯ç¨ï¼ä»åºåæ æ¥è¯¢èç¹ |
| | | packageNode = ncNodeService.getLastEditionCuredProgramPackage(programPkgName); |
| | | }else if(Func.isNotBlank(props.getDeviation())){ |
| | | //æå离å |
| | | packageNode = ncNodeService.getLastEditionDeviationProgramPackage(programPkgName); |
| | | }else{ |
| | | //æ®éè¯åï¼æè
æåºåä¸å¯ç¨ |
| | | packageNode = ncNodeService.getLastEditionTryingProgramPackage(programPkgName); |
| | | } |
| | | |
| | | addApproveTable(packageNode,props); |
| | | |
| | | updateApproveRecordNodeId(instId,packageNode.getId()); |
| | | |
| | | log.info("æµç¨å·²å®æin DispatchFinishListener"); |
| | | updateApproveRecordNodeId(instId, packageNode.getId()); |
| | | log.info("æ®éæµç¨å·²å®æin DispatchFinishListener"); |
| | | } |
| | | |
| | | /** |
| | |
| | | * @param progProperties æµç¨å±æ§ |
| | | */ |
| | | void createProgramNodes(FlowProgramProperties progProperties){ |
| | | if(!FlowContants.Y.equals(progProperties.getHasCuredProgram())) { |
| | | //è¯åæè
å离 |
| | | if(FlowContants.N.equals(progProperties.getHasCuredProgram())) { |
| | | //æ åºå(è¯åæè
å离) |
| | | ncNodeAutoCreateService.createNodeTreeWithProgram(progProperties); |
| | | }else{ |
| | | //æåºå |
| | | //TODO è¿è¦åºåæ¯å¦å¯ç¨å¤å®æ¯å¦å¯ç¨ãå¯ç¨ç |
| | | //æåºåï¼ç¨åºä¸å¯ç¨ |
| | | if(FlowContants.N.equals(progProperties.getCureProgramUseable())) { |
| | | //åºåç¨åºä¸å¯ç¨ï¼éè¦éæ°å»ºç«ç¨åºå
ååæä»¶èç¹;å¯ç¨æ
åµå¨æµç¨å®¡æ¹ä¸å·²ç»å级è¿èç¹äº |
| | | NcNode curedProgramPackage = ncNodeService.getById(Func.toLong(progProperties.getCuredNodeId())); |