@@ -7,6 +7,10 @@ import com.cnbm.dispatch.enums.kuka.step2.Step2Mes2PlcVar;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				import   com.cnbm.dispatch.enums.kuka.step2.Step2Plc2MesVar ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				import   com.cnbm.dispatch.enums.kuka.step3.Step3Mes2PlcVar ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				import   com.cnbm.dispatch.enums.kuka.step3.Step3Plc2MesVar ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				import   com.cnbm.packing.dto.CamlineExtendArgDTO ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				import   com.cnbm.packing.entity.WoPackagingBox ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				import   com.cnbm.packing.entity.WoPackagingBoxSubstrate ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				import   com.cnbm.packing.entity.WoPowerLevel ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				import   com.cnbm.packing.service.* ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				import   com.cnbm.s7.s7connector.enmuc.S7Client ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				import   com.cnbm.s7.s7connector.type.PlcVar ; 
 
			
		 
		
	
	
		
			
				
					
					
						
					 
				
			
			 
			 
			
				@@ -18,6 +22,8 @@ import org.springframework.boot.ApplicationRunner;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				import   org.springframework.core.annotation.Order ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				import   org.springframework.stereotype.Component ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				import   java.time.LocalDateTime ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				import   java.util.Arrays ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				import   java.util.Date ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				import   java.util.concurrent.Executors ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				import   java.util.concurrent.ScheduledExecutorService ; 
 
			
		 
		
	
	
		
			
				
					
					
						
					 
				
			
			 
			 
			
				@@ -153,196 +159,188 @@ public class KukaJoinThread implements ApplicationRunner {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         kukaStep1 . scheduleAtFixedRate ( new   Runnable ( )   { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             @Override 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             public   void   run ( )   { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 logger . info ( " =================  现在开始执行 过程一 任务   ================== " ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //调度开始 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                logger.info(""); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                logger.info("=================  现在开始执行 过程一 任务   =================="); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 Integer   subArrived   =   waitingForTarget ( Step1Plc2MesVar . SubArrivedToMes ,   true ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 if ( subArrived   ! =   1 ) { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     logger . info ( " 失败 " + "  ---  " + "  MES监听 Step1Plc2MesVar.SubArrivedToMes 是否 等于 1 失败 " ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //一. 从plc 中获取 subId 和 lineNum 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 String   subId   =   ( String )   read ( S7Client . S7_KUKA , Step1Plc2MesVar . SubIdToMes ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 Integer   lineNum   =   ( Integer )   read ( S7Client . S7_KUKA , Step1Plc2MesVar . LineNum ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //二. MES 业务 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //===============           MES 业务 开始         ================= 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //1. 从comline数据库中获取 实际pmpp 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 float   pmppBySubId   =   service . getPMPPBySubId ( subId ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //2. 匹配和计算补偿功率 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 float   actualPMPP   =   compensationPowerServiceBiz . calculCompensationPMPP ( pmppBySubId , lineNum ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //3. 依据补偿功率,  获取工艺参数,  并且把这些工艺参数传给kuka 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 WoPowerLevel   argByPMPP   =   levelServiceBiz . getArgByPMPP ( actualPMPP ,   lineNum ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 write ( S7Client . S7_KUKA , Step1Mes2PlcVar . dLable_Pnom , Integer . valueOf ( argByPMPP . getPowerClass ( ) ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 write ( S7Client . S7_KUKA , Step1Mes2PlcVar . dLable_Voc , argByPMPP . getLableVoc ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 write ( S7Client . S7_KUKA , Step1Mes2PlcVar . dLable_Isc , argByPMPP . getLableIsc ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 write ( S7Client . S7_KUKA , Step1Mes2PlcVar . dLable_Vmpp , argByPMPP . getLableVmpp ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 write ( S7Client . S7_KUKA , Step1Mes2PlcVar . dLable_Impp , argByPMPP . getLableImpp ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 logger . info ( " 采集到 基板ID:  " + subId + " , 线边号: " + lineNum + " ,dLable_Pnom:  " + argByPMPP . getPowerClass ( )   + " ,dLable_Voc:  " + argByPMPP . getLableVoc ( ) + " ,dLable_Isc:  " + argByPMPP . getLableIsc ( ) + " ,dLable_Vmpp:  " + argByPMPP . getLableVmpp ( ) + " ,dLable_Impp:  " + argByPMPP . getLableImpp ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //4. 把基板录到数据库 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 WoPackagingBoxSubstrate   woPackagingBoxSubstrate   =   new   WoPackagingBoxSubstrate ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setLineBody ( lineNum ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setPowerLevel ( argByPMPP . getPowerClass ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setSapMaterial ( argByPMPP . getSapMaterialNum ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setWoSubstrateId ( subId ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //5. 从camline那里获取可变字段 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 CamlineExtendArgDTO   extendArgFromCamline   =   service . getExtendArgFromCamline ( subId ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setLastUpdateTime ( extendArgFromCamline . getLastUpdateTime ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setPmpp ( actualPMPP ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setOrderName ( extendArgFromCamline . getOrderName ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setBinclassFl1 ( extendArgFromCamline . getBinclassFl1 ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setBinclassFl2 ( extendArgFromCamline . getBinclassFl2 ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setEtaFl1 ( extendArgFromCamline . getEtaFl1 ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setEtaFl2 ( extendArgFromCamline . getEtaFl2 ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setFfFl1 ( extendArgFromCamline . getFfFl1 ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setFfFl2 ( extendArgFromCamline . getFfFl2 ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setImppFl1 ( extendArgFromCamline . getImppFl1 ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setImppFl2 ( extendArgFromCamline . getImppFl2 ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setInsolflashcontrolFl1 ( extendArgFromCamline . getInsolflashcontrolFl1 ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setInsolflashcontrolFl2 ( extendArgFromCamline . getInsolflashcontrolFl2 ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setInsolmppFl1 ( extendArgFromCamline . getInsolmppFl1 ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setInsolmppFl2 ( extendArgFromCamline . getInsolmppFl2 ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setInsolvocFl1 ( extendArgFromCamline . getInsolvocFl1 ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setInsolvocFl2 ( extendArgFromCamline . getInsolvocFl2 ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setInsolFl1 ( extendArgFromCamline . getInsolFl1 ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setInsolFl2 ( extendArgFromCamline . getInsolFl2 ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setIscFl1 ( extendArgFromCamline . getIscFl1 ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setIscFl2 ( extendArgFromCamline . getIscFl2 ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setMeasTimeFl1 ( extendArgFromCamline . getMeasTimeFl1 ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setMeasTimeFl2 ( extendArgFromCamline . getMeasTimeFl2 ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setPmppFl1 ( extendArgFromCamline . getPmppFl1 ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setPmppFl2 ( extendArgFromCamline . getPmppFl2 ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setTcellFl1 ( extendArgFromCamline . getTcellFl1 ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setTcellFl2 ( extendArgFromCamline . getTcellFl2 ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setTmonicellFl1 ( extendArgFromCamline . getTmonicellFl1 ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setTmonicellFl2 ( extendArgFromCamline . getTmonicellFl2 ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setUmppFl1 ( extendArgFromCamline . getUmppFl1 ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setUmppFl2 ( extendArgFromCamline . getUmppFl2 ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setUocFl1 ( extendArgFromCamline . getUocFl1 ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBoxSubstrate . setUocFl1 ( extendArgFromCamline . getUocFl2 ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 substrateServiceBiz . insert ( woPackagingBoxSubstrate ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //===============           MES 业务 结束         ================= 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //三. 当MES完成任务后,  把MesToPlc.SubArrivedFinish变量置为true,  告诉plc,  我操作完成了 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 write ( S7Client . S7_KUKA , Step1Mes2PlcVar . SubArrivedFinish , true ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //四. mes 监控 到PlcToMes.SubArrived==false,  就把MesToPlc.SubArrivedFinish置为false 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 Integer   subArrived2   =   waitingForTarget ( Step1Plc2MesVar . SubArrivedToMes ,   false ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 if ( subArrived2   ! =   1 ) { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     logger . info ( " 失败 " + "  ---  " + " MES监听 Step1Plc2MesVar.SubArrivedToMes 是否 等于 1 失败 " ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 write ( S7Client . S7_KUKA , Step1Mes2PlcVar . SubArrivedFinish , false ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         } , 1 , 1 ,   TimeUnit . SECONDS ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         kukaStep2 . scheduleAtFixedRate ( new   Runnable ( )   { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             @Override 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             public   void   run ( )   { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //调度开始 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//        kukaStep1.scheduleAtFixedRate(new Runnable() { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//             @Override 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//             public void run() { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 //调度开始 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				////                logger.info(""); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				////                 logger.info("=================  现在开始执行 过程一 任务   =================="); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 Integer subArrived = waitingForTarget( Step1 Plc2MesVar.SubArrivedToMes, true) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                if(subArrived != 1){  
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     logger.info("失败"+" --- "+" MES监听 Step1Plc2MesVar.SubArrivedToMes 是否 等于 1 失败") ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                //一. 从plc 中获取 subId 和 lineNum 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 String subId = (String) read(S7Client.S7_KUKA,Step1Plc2MesVar.SubIdToMes); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 Integer lineNum = (Integer) read(S7Client.S7_KUKA,Step1Plc2MesVar.LineNum); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 logger.info("采集到 基板ID: "+subId+", 线边号:"+lineNum) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 //二. MES 业务 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 //===============           MES 业务 开始         ================= 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 //1. 从comline数据库中获取 实际pmpp 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 float pmppBySubId = service.getPMPPBySubId(subId); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 //2. 匹配和计算补偿功率 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 float actualPMPP = compensationPowerServiceBiz.calculCompensationPMPP(pmppBySubId,lineNum) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 //3. 依据补偿功率,  获取工艺参数,  并且把这些工艺参数传给kuka 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 WoPowerLevel argByPMPP = levelServiceBiz.getArgByPMPP(actualPMPP, lineNum); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 write(S7Client.S7_KUKA,Step1Mes2PlcVar.dLable_Pnom,Integer.valueOf(argByPMPP.getPowerClass())) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 write(S7Client.S7_KUKA,Step1Mes2PlcVar.dLable_Voc,argByPMPP.getLableVoc()); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 write(S7Client.S7_KUKA,Step1Mes2PlcVar.dLable_Isc,argByPMPP.getLableIsc()) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 write(S7Client.S7_KUKA,Step1Mes2PlcVar.dLable_Vmpp,argByPMPP.getLableVmpp()) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 write(S7Client.S7_KUKA,Step1Mes2PlcVar.dLable_Impp,argByPMPP.getLableImpp()) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 //4. 把基板录到数据库 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 WoPackagingBoxSubstrate woPackagingBoxSubstrate = new WoPackagingBoxSubstrate(); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 woPackagingBoxSubstrate.setLineBody(lineNum) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 woPackagingBoxSubstrate.setPowerLevel(argByPMPP.getPowerClass()) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 woPackagingBoxSubstrate.setSapMaterial(argByPMPP.getSapMaterialNum()) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                woPackagingBoxSubstrate.setWoSubstrateId(subId); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 //5 . 从camline那里获取可变字段 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 CamlineExtendArgDTO extendArgFromCamline = service.getExtendArgFromCamline(subId) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                woPackagingBoxSubstrate.setLastUpdateTime(extendArgFromCamline.getLastUpdateTime()); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 woPackagingBoxSubstrate.setPmpp(actualPMPP); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 woPackagingBoxSubstrate.setOrderName(extendArgFromCamline.getOrderName()) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                woPackagingBoxSubstrate.setBinclassFl1(extendArgFromCamline.getBinclassFl1()); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 woPackagingBoxSubstrate.setBinclassFl2(extendArgFromCamline.getBinclassFl2()); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 woPackagingBoxSubstrate.setEtaFl1(extendArgFromCamline.getEtaFl1()) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 woPackagingBoxSubstrate.setEtaFl2(extendArgFromCamline.getEtaFl2()); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 woPackagingBoxSubstrate.setFfFl1(extendArgFromCamline.getFfFl1()) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 woPackagingBoxSubstrate.setFfFl2(extendArgFromCamline.getFfFl2()); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 woPackagingBoxSubstrate.setImppFl1(extendArgFromCamline.getImppFl1()) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 woPackagingBoxSubstrate.setImppFl2(extendArgFromCamline.getImppFl2()); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                woPackagingBoxSubstrate.setInsolflashcontrolFl1(extendArgFromCamline.getInsolflashcontrolFl1()) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                woPackagingBoxSubstrate.setInsolflashcontrolFl2(extendArgFromCamline.getInsolflashcontrolFl2()); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                woPackagingBoxSubstrate.setInsolmppFl1(extendArgFromCamline.getInsolmppFl1()); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 woPackagingBoxSubstrate.setInsolmppFl2(extendArgFromCamline.getInsolmppFl2()); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 woPackagingBoxSubstrate.setInsolvocFl1(extendArgFromCamline.getInsolvocFl1()); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 woPackagingBoxSubstrate.setInsolvocFl2(extendArgFromCamline.getInsolvocFl2()); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 woPackagingBoxSubstrate.setInsolFl1(extendArgFromCamline.getInsolFl1()); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 woPackagingBoxSubstrate.setInsolFl2(extendArgFromCamline.getInsolFl2()) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 woPackagingBoxSubstrate.setIscFl1(extendArgFromCamline.getIscFl1()); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 woPackagingBoxSubstrate.setIscFl2(extendArgFromCamline.getIscFl2()) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 woPackagingBoxSubstrate.setMeasTimeFl1(extendArgFromCamline.getMeasTimeFl1()); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                woPackagingBoxSubstrate.setMeasTimeFl2(extendArgFromCamline.getMeasTimeFl2()); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 woPackagingBoxSubstrate.setPmppFl1(extendArgFromCamline.getPmppFl1()); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 woPackagingBoxSubstrate.setPmppFl2(extendArgFromCamline.getPmppFl2()) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 woPackagingBoxSubstrate.setTcellFl1(extendArgFromCamline.getTcellFl1()) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 woPackagingBoxSubstrate.setTcellFl2(extendArgFromCamline.getTcellFl2()) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                woPackagingBoxSubstrate.setTmonicellFl1(extendArgFromCamline.getTmonicellFl1()); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 woPackagingBoxSubstrate.setTmonicellFl2(extendArgFromCamline.getTmonicellFl2()); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                woPackagingBoxSubstrate.setUmppFl1(extendArgFromCamline.getUmppFl1()); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 woPackagingBoxSubstrate.setUmppFl2(extendArgFromCamline.getUmppFl2()); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 woPackagingBoxSubstrate.setUocFl1(extendArgFromCamline.getUocFl1()) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                woPackagingBoxSubstrate.setUocFl1(extendArgFromCamline.getUocFl2()); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                substrateServiceBiz.insert(woPackagingBoxSubstrate); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 //===============           MES 业务 结束         ================= 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                //三. 当MES完成任务后,  把MesToPlc.SubArrivedFinish变量置为true,  告诉plc,  我操作完成了 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 write(S7Client.S7_KUKA,Step1 Mes2 PlcVar .SubArrivedFinish,true); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 //四. mes 监控 到PlcToMes.SubArrived==false,  就把MesToPlc.SubArrivedFinish置为false 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 Integer subArrived2 = waitingForTarget( Step1 Plc2MesVar.SubArrivedToMes, false) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 if(subArrived2 != 1){ 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     logger.info("失败"+" --- "+"MES监听 Step1Plc2MesVar.SubArrivedToMes 是否 等于 1 失败") ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                write(S7Client.S7_KUKA,Step1Mes2PlcVar.SubArrivedFinish,false); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//             }
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//         },1,1,  TimeUnit. SECONDS) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//        kukaStep2.scheduleAtFixedRate(new Runnable() { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//            @Override 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//            public void run() { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                //调度开始 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                Integer shelfIsFull = waitingForTarget(Step2Plc2MesVar.ShelfIsFull, true); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                if(shelfIsFull != 1){ 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                    logger.info("失败"+" --- "+"MES监听 Step2Plc2MesVar.ShelfIsFull 是否 等于 1 失败"); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                //一. 从plc 中获取 subIdList 和 lineNum 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                String[] subIdList = (String[])read(S7Client.S7_KUKA,Step2Plc2MesVar.SubIdList); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				////                Integer lineNum = (Integer) read(S7Client.S7_KUKA,Step2Plc2MesVar.LineNum); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                logger.info("获取到基板列表:"+ Arrays.toString(subIdList)); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                //二. MES 业务 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                //===============           MES 业务 开始         ================= 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                //1.MES 生成BoxId 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                if(subIdList.length<=0){ 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                    logger.info("失败"+" --- "+"从plc里面获取到的基板列表 为空"); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                WoPackagingBoxSubstrate bySubId = substrateServiceBiz.getBySubId(subIdList[0]); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                String boxId = getBoxId(bySubId.getSapMaterial()); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                logger.info("mes 生成的boxId :"+ boxId); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                //2. 依次update 基板表,  把boxId 赋予这些基板 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                for(int i=0;i<subIdList.length;i++){ 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                    substrateServiceBiz.updatePackagingBoxIdByWoSubstrateId(boxId,subIdList[i]); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                //3.去camline数据库 查询此基板ID 对应的订单 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                String orderNameBySubId = service.getOrderNameBySubId(subIdList[0]); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                //4. box信息录入到box表 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                WoPackagingBox woPackagingBox = new WoPackagingBox(); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                woPackagingBox.setBoxNo(boxId); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                woPackagingBox.setPackagingTime(LocalDateTime.now()); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                woPackagingBox.setPowerLevel(bySubId.getPowerLevel()); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                woPackagingBox.setLineBody(bySubId.getLineBody()); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                woPackagingBox.setSapMaterial(bySubId.getSapMaterial()); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                woPackagingBox.setOrderNum(orderNameBySubId); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                //1-手动模式,  2-自动模式 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                woPackagingBox.setModel(2); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                boxServiceBiz.insert(woPackagingBox); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                //===============           MES 业务 结束         ================= 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                //三. 把生成的BoxId 告诉kuka 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                write(S7Client.S7_KUKA,Step2Mes2PlcVar.BoxId,boxId); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                //四. 当MES完成任务后,  把MesToPlc.ShelfIsFullFinish变量置为true,  告诉plc,  我操作完成了 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                write(S7Client.S7_KUKA,Step2Mes2PlcVar.ShelfIsFullFinish,true); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                //四. mes 监控 到PlcToMes.SubArrived==false,  就把MesToPlc.SubArrivedFinish置为false 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                Integer subArrived2 = waitingForTarget(Step2Plc2MesVar.ShelfIsFull, false); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                if(subArrived2 != 1){ 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                    logger.info("失败"+" --- "+"步骤1.  MES监听 Step1Plc2MesVar.SubArrivedToMes 是否 等于 1 失败"); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                write(S7Client.S7_KUKA,Step2Mes2PlcVar.ShelfIsFullFinish,false); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//            } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//        },1,1, TimeUnit.SECONDS); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//        kukaStep3.scheduleAtFixedRate(new Runnable() { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//            @Override 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//            public void run() { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                //调度开始 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                Integer shelfIsFull = waitingForTarget(Step3Plc2MesVar.ShelfIsFullArrived, true); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                if(shelfIsFull != 1){ 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                    logger.info("失败"+" --- "+"MES监听 Step3Plc2MesVar.ShelfIsFullArrived 是否 等于 1 失败"); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                //一. 从plc 中获取 subIdList 和 lineNum 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                String boxId = (String)read(S7Client.S7_KUKA,Step3Plc2MesVar.BoxId); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                Integer lineNum = (Integer) read(S7Client.S7_KUKA,Step3Plc2MesVar.LineNum); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                logger.info("到达站台的boxId :"+boxId); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                //二. MES 业务 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                //===============           MES 业务 开始         ================= 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                //1. box信息录入到box表 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                boxServiceBiz.updateIsArrivedByBoxNo(1,boxId); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                //===============           MES 业务 结束         ================= 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                //四. 当MES完成任务后,  把MesToPlc.ShelfIsFullArrivedFinish变量置为true,  告诉plc,  我操作完成了 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                write(S7Client.S7_KUKA,Step3Mes2PlcVar.ShelfIsFullArrivedFinish,true); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                //四. mes 监控 到PlcToMes.SubArrived==false,  就把MesToPlc.SubArrivedFinish置为false 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                Integer subArrived2 = waitingForTarget(Step3Plc2MesVar.ShelfIsFullArrived, false); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                if(subArrived2 != 1){ 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                    logger.info("失败"+" --- "+"步骤1.  MES监听 Step3Plc2MesVar.ShelfIsFullArrived 是否 等于 1 失败"); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                write(S7Client.S7_KUKA,Step3Mes2PlcVar.ShelfIsFullArrivedFinish,false); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//            } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//        },1,1, TimeUnit.SECONDS); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 Integer   shelfIsFull   =   waitingForTarget ( Step2Plc2MesVar . ShelfIsFull ,   true ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 if ( shelfIsFull   ! =   1 ) { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     logger . info ( " 失败 " + "  ---  " + " MES监听 Step2Plc2MesVar.ShelfIsFull 是否 等于 1 失败 " ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //一. 从plc 中获取 subIdList 和 lineNum 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 String [ ]   subIdList   =   ( String [ ] ) read ( S7Client . S7_KUKA ,  Step2 Plc2MesVar. SubIdList )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                Integer lineNum = (Integer) read(S7Client.S7_KUKA,Step2Plc2MesVar.LineNum);  
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                  logger. info ( " 获取到基板列表: " +   Arrays . toString ( subIdList ) )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //二. MES 业务 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //===============           MES 业务 开始         ================= 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //1.MES 生成BoxId 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 if ( subIdList . length < = 0 ) { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      logger. info ( " 失败 " + "  ---  " + " 从plc里面获取到的基板列表 为空 " )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 WoPackagingBoxSubstrate   bySubId   =   substrateServiceBiz . getBySubId ( subIdList [ 0 ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 String   boxId   =   getBoxId ( bySubId . getSapMaterial ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 logger . info ( " mes 生成的boxId : " +   boxId ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //2. 依次update 基板表,  把boxId 赋予这些基板 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 for ( int   i = 0 ; i < subIdList . length ; i + + ) { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      substrateServiceBiz . updatePackagingBoxIdByWoSubstrateId ( boxId , subIdList [ i ] )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //3.去camline数据库 查询此基板ID 对应的订单 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 String   orderNameBySubId   =   service . getOrderNameBySubId ( subIdList [ 0 ] )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //4. box信息录入到box表 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 WoPackagingBox   woPackagingBox   =   new   WoPackagingBox ( )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBox . setBoxNo ( boxId )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBox . setPackagingTime ( LocalDateTime . now ( ) )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBox . setPowerLevel ( bySubId . getPowerLevel ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBox . setLineBody ( bySubId . getLineBody ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBox . setSapMaterial ( bySubId . getSapMaterial ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 woPackagingBox . setOrderNum ( orderNameBySubId ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //1-手动模式,  2-自动模式 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                  woPackagingBox. setModel ( 2 )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                  woPackagingBox. setCreateTime ( LocalDateTime . now ( ) )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 boxServiceBiz . insert ( woPackagingBox )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //===============           MES 业务 结束         ================= 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                  //三 . 把生成的BoxId 告诉kuka 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 write ( S7Client . S7_KUKA , Step2Mes2PlcVar . BoxId , boxId )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //四. 当MES完成任务后,  把MesToPlc.ShelfIsFullFinish变量置为true,  告诉plc,  我操作完成了 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 write ( S7Client . S7_KUKA , Step2Mes2PlcVar . ShelfIsFullFinish , true )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //四. mes 监控 到PlcToMes.SubArrived==false,  就把MesToPlc.SubArrivedFinish置为false 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 Integer   subArrived2   =   waitingForTarget ( Step2Plc2MesVar . ShelfIsFull ,   false )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 if ( subArrived2   ! =   1 ) { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     logger . info ( " 失败 " + "  ---  " + " 步骤1.  MES监听 Step1Plc2MesVar.SubArrivedToMes 是否 等于 1 失败 " )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 write ( S7Client . S7_KUKA , Step2Mes2PlcVar . ShelfIsFullFinish , false )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         } , 1 , 1 ,   TimeUnit . SECONDS )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         kukaStep3 . scheduleAtFixedRate ( new   Runnable ( )   { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             @Override 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             public   void   run ( )   { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //调度开始 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 Integer   shelfIsFull   =   waitingForTarget ( Step3Plc2MesVar . ShelfIsFullArrived ,   true )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 if ( shelfIsFull   ! =   1 ) { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     logger . info ( " 失败 " + "  ---  " + " MES监听 Step3Plc2MesVar.ShelfIsFullArrived 是否 等于 1 失败 " )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //一. 从plc 中获取 subIdList 和 lineNum 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 String   boxId   =   ( String ) read ( S7Client . S7_KUKA , Step3Plc2MesVar . BoxId )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 Integer   lineNum   =   ( Integer )   read ( S7Client . S7_KUKA , Step3Plc2MesVar . LineNum )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 logger . info ( " 到达站台的boxId : " + boxId )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //二. MES 业务 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //===============           MES 业务 开始         ================= 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //1. box信息录入到box表 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 boxServiceBiz . updateIsArrivedByBoxNo ( 1 , boxId )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //===============           MES 业务 结束         ================= 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //四. 当MES完成任务后,  把MesToPlc.ShelfIsFullArrivedFinish变量置为true,  告诉plc,  我操作完成了 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 write ( S7Client . S7_KUKA , Step3Mes2PlcVar . ShelfIsFullArrivedFinish , true ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 //四. mes 监控 到PlcToMes.SubArrived==false,  就把 MesTo Plc.SubArrivedFinish置为false 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 Integer   subArrived2   =   waitingForTarget ( Step3Plc2MesVar . ShelfIsFullArrived ,   false ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 if ( subArrived2   ! =   1 ) { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      logger . info ( " 失败 " + "  ---  " + " 步骤1.  MES监听  Step3 Plc2MesVar.ShelfIsFullArrived 是否 等于 1 失败 " )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 write ( S7Client . S7_KUKA , Step3Mes2PlcVar . ShelfIsFullArrivedFinish , false )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				              }
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         } , 1 , 1 ,    TimeUnit.  SECONDS)  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     }