@@ -152,7 +152,7 @@ public class KukaJoinThread implements ApplicationRunner {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     public   String   getBoxId ( String   sapMaterial ) { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         Integer   todayBoxNum   =   service . getTodayBoxNum ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         Integer   todayBoxNum   =   service . getTodayBoxNum ( ) + 1 ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         String   nowTime   =   DateUtil . format ( new   Date ( ) ,   " yyMMdd " ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         todayBoxNum + = 500 ; 
 
			
		 
		
	
	
		
			
				
					
					
						
					 
				
			
			 
			 
			
				@@ -160,6 +160,15 @@ public class KukaJoinThread implements ApplicationRunner {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         return   res ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     public   String   getErrorBoxId ( String   sapMaterial ) { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         String   nowTime   =   DateUtil . format ( new   Date ( ) ,   " yyMMdd " ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         String   mixBoxError   =   " 001 " ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         String   res   =   " Err " + sapMaterial + nowTime + mixBoxError ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         return   res ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     public   String   removeKG ( String   str ) { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         return   str . substring ( 0 , 17 ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     } 
 
			
		 
		
	
	
		
			
				
					
					
						
					 
				
			
			 
			 
			
				@@ -174,240 +183,270 @@ public class KukaJoinThread implements ApplicationRunner {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         return   f1 . format ( a ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     //return true 出现混档了,  return false 没有出现混档 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     private   boolean   isMixLevel ( String [ ]   subIds ) { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         String   correctLevel   =   substrateServiceBiz . getBySubId ( subIds [ 0 ] ) . getPowerLevel ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         String   errMsg   =   " 以下基板ID出现混档:  " ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         boolean   res   =   false ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         for ( int   i = 1 ; i < subIds . length ; i + + ) { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             String   powerLevel   =   substrateServiceBiz . getBySubId ( subIds [ i ] ) . getPowerLevel ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             if ( ! powerLevel . equals ( correctLevel ) ) { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 errMsg + = " 基板ID: " + subIds [ i ] + "  档位: " + powerLevel + " ,  " ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 res   =   true ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         if ( res ) { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             logger . error ( errMsg ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         return   res ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     @Override 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     public   void   run ( ApplicationArguments   args )   throws   Exception   { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//         kukaStep1. scheduleAtFixedRate(new Runnable()  {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//             @Override
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//             public void run()  {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 try  {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     //调度开始
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				////                 logger.info(""); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				////                 logger.info("=================  现在开始执行 过程一 任务   =================="); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     Integer  subArrived =  waitingForTarget( Step1Plc2MesVar. SubArrivedToMes, true) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     if( subArrived != 1) {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                         logger.info("标签打印Event---  失败"+" --- "+"  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) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     //把基板ID字符串的空格去掉,  因为plc中设置的20位,  但实际基板ID就是17位,  因为带空格去数据库查询 有问题的。
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     subId = removeKG(subId) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     //二. 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(" 标签打印Event--- 采集到 基板ID: "+subId+", 线边号:"+lineNum+",  从camline 获取到实际pmpp"+pmppBySubId+",计算后 补偿功率:"+actualPMPP+" ,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) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     woPackagingBoxSubstrate. setActualPmpp(pmppBySubId) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     woPackagingBoxSubstrate. setCreateTime( LocalDateTime.now()) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                    //5. 从camline那里获取可变字段 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     CamlineExtendArgDTO extendArgFromCamline = service.getExtendArgFromCamline(subId); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     logger.info("标签打印Event--- 基板ID: "+subId+", 从camline获取PID16~PID22 的实测数据 成功, 数据内容:"+e xtendArgFromCamline.toString()) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     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); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     logger.info("标签打印Event--- 基板ID: "+subId+", 录入数据库成功") ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     //===============           MES 业务 结束         ================= 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                    //三. 当MES完成任务后,  把MesToPlc.SubArrivedFinish变量置为true,  告诉plc,  我操作完成了 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     write(S7Client.S7_KUKA,Step1 Mes2 PlcVar .SubArrivedFinish,true); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     logger.info("标签打印Event--- 基板ID: "+subId+",  SubArrivedFinish,  置为true 成功") ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     //四. mes 监控 到PlcToMes.SubArrived==false,  就把MesToPlc. SubArrivedFinish置为false 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     Integer subArrived2 = waitingForTarget(Step1Plc2MesVar .SubArrivedToMes,  false); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     if(subArrived2 != 1){ 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                         logger.info("标签打印Event--- 失败"+" --- "+"MES监听 Step1Plc2MesVar.SubArrivedToMes 是否 等于 1 失败"); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                    write(S7Client.S7_KUKA,Step1Mes2PlcVar.SubArrivedFinish,false); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     logger.info("标签打印Event--- 基板ID: "+subId+", SubArrivedFinish,  置为 false 成功, Event1 成功结束") ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                }catch (Throwable e){ 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     logger.info("标签打印Event---  :"+e.getMessage()); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//             }
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//         },1,1, TimeUnit.SECONDS); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//         kukaStep2. scheduleAtFixedRate(new Runnable()  {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//             @Override
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//             public void run()  {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 try  {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     //调度开始
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     Integer  shelfIsFull =  waitingForTarget( Step2Plc2MesVar. ShelfIsFull, true) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     if( shelfIsFull != 1) {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                         logger.info(" BOXID生成Event-------失败"+" --- "+" MES监听 Step2Plc2MesVar.ShelfIsFull 是否 等于 1 失败") ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     }
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     //一. 从plc 中获取 subIdList 和 lineNum
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     String[] subIdList = (String[])read( S7Client. S7_KUKA, Step2Plc2MesVar. SubIdList) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     Integer  listSize = (Integer)read( S7Client. S7_KUKA, Step2Plc2MesVar. PackageNumberSet) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     //二. MES 业务
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     //===============           MES 业务 开始         =================
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     //1.MES 生成BoxId
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     if( subIdList. length<=0) {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                         logger.info(" BOXID生成Event-------失败"+" --- "+" 从plc里面获取到的基板列表 为空") ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                         throw new  Exception(" BOXID生成Event-------kuka机械手 取到了空箱") ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     }
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     //真实的基板ID 就是17位的,  plc读取过来,  有空格,  要把后面3位空格去掉就行了。
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     for(int i=0;i< subIdList. length;i++) {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                         subIdList[i] =  removeKG( subIdList[i]) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     }
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     logger.info(" BOXID生成Event-------获取到基板列表:"+  Arrays. toString( subIdList)+",基板数量:"+ listSize) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     WoPackagingBoxSubstrate  bySubId =  substrateServiceBiz. getBySubId( subIdList[0]) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     //如果我们系统中找不到这块基板那么就去camline里面找
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     if(bySubId == null) {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                         //todo
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                         CamlineSubIdDTO  subIdByCamline =  service. getSubIdByCamline( subIdList[0]) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                         bySubId = new  WoPackagingBoxSubstrate() ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                         bySubId. setPowerLevel( subIdByCamline. getPowerLevel()) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                         bySubId. setSapMaterial( subIdByCamline. getSapMaterial()) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                         bySubId. setLineBody(2) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     }
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     String boxId = getBoxId(bySubId.getSapMaterial()) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     logger.info("BOXID生成Event-------mes 生成的boxId :"+ boxId); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     //2. 依次update 基板表,  把boxId 赋予这些基板 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     for(int i=0;i<listSize;i++){ 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                         substrateServiceBiz.updatePackagingBoxIdAndSlotByWoSubstrateId(boxId,(i+1),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); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     logger.info("BOXID生成Event-------boxId :"+ boxId+"写入数据库成功") ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                    //===============           MES 业务 结束         ================= 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     //三. 把生成的BoxId 告诉kuka 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     write(S7Client.S7_KUKA,Step2Mes2PlcVar.BoxId,boxId) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     logger.info("BOXID生成Event-------boxId :"+ boxId+"传给PLC 成功") ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     //四. 当MES完成任务后,  把MesToPlc.ShelfIsFullFinish变量置为true,  告诉plc,  我操作完成了 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     write(S7Client.S7_KUKA,Step2Mes2PlcVar.ShelfIsFullFinish,true); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     logger.info("BOXID生成Event-------boxId :"+ boxId+"ShelfIsFullFinish 置为true 成功") ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     //四. mes 监控 到PlcToMes.SubArrived==false,  就把MesToPlc.SubArrivedFinish置为false 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     Integer subArrived2 = waitingForTarget(Step2Plc2MesVar.ShelfIsFull, false) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     if(subArrived2 != 1){ 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                         logger.info("BOXID生成Event-------失败"+" --- "+"步骤1.  MES监听 Step1Plc2MesVar.SubArrivedToMes 是否 等于 1 失败"); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                    } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     write(S7Client.S7_KUKA,Step2Mes2PlcVar.ShelfIsFullFinish,false); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     logger.info("BOXID生成Event-------boxId :"+ boxId+"ShelfIsFullFinish 置为false 成功,Event2 成功结束") ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 }catch (Throwable e){ 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                    logger.info("BOXID生成Event------- :" + e.getMessage()); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//             } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//         },1,1, TimeUnit.SECONDS) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//        kukaStep3.scheduleAtFixedRate(new Runnable()  {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//            @Override 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//             public void run() { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 try { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     //调度开始 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     Integer shelfIsFull = waitingForTarget(Step3Plc2MesVar.ShelfIsFullArrived, true) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     if(shelfIsFull != 1){ 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                        logger.info("装箱单打印Event------失败"+" --- "+"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("装箱单打印Event------到达站台的boxId :"+boxId); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     //二. MES 业务 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     //===============           MES 业务 开始         ================= 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     //1. box信息录入到box表 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     boxServiceBiz.updateIsArrivedByBoxNo(1,boxId) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     logger.info("装箱单打印Event------boxId :"+boxId+"更新数据库成功"); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                    //===============           MES 业务 结束         ================= 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     //四. 当MES完成任务后,  把MesToPlc.ShelfIsFullArrivedFinish变量置为true,  告诉plc,  我操作完成了 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     write(S7Client.S7_KUKA,Step3Mes2PlcVar.ShelfIsFullArrivedFinish,true) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                    logger.info("装箱单打印Event------boxId :"+boxId+",   ShelfIsFullArrivedFinish置为true 成功"); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     //四 . mes 监控 到PlcToMes.SubArrived==false,  就把MesToPlc.SubArrivedFinish置为false 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                    Integer subArrived2 = waitingForTarget(Step3Plc2MesVar.ShelfIsFullArrived, false); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     if(subArrived2 != 1){ 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                         logger.info("装箱单打印Event------失败"+" --- "+"步骤1.  MES监听 Step3Plc2MesVar.ShelfIsFullArrived 是否 等于 1 失败") ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                    logger.info("装箱单打印Event------boxId :"+boxId+",   监听到subArrived=false 成功"); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                    write(S7Client.S7_KUKA,Step3Mes2PlcVar.ShelfIsFullArrivedFinish,false); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                    logger.info("装箱单打印Event------boxId :"+boxId+",   Even3 成功"); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 }catch (Throwable e){ 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                     logger.info("装箱单打印Event------"+e.getMessage()) ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                 } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				// 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//             } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//        },1,1, TimeUnit.SECONDS); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				          kukaStep1.  scheduleAtFixedRate( new   Runnable ( )    {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				              @Override
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				              public  void   run ( )    {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                  try   {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      //调度开始
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                logger.info(""); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				//                logger.info("=================  现在开始执行 过程一 任务   =================="); 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      Integer   subArrived  =    waitingForTarget(  Step1Plc2MesVar.  SubArrivedToMes,   true )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     if (  subArrived  ! =   1 )  {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                          logger. info ( " 标签打印Event---  失败 " + "  ---  " + "   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)  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      //把基板ID字符串的空格去掉,  因为plc中设置的20位,  但实际基板ID就是17位,  因为带空格去数据库查询 有问题的。
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      subId  =   removeKG ( subId )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      //二. MES 业务
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      //===============           MES 业务 开始         =================
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      //1. 从comline数据库中获取 实际pmpp
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      float  pmppActual   =    service.  getPMPPBySubId( subId )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      //2. 匹配和计算补偿功率
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      float  pmppCompensation   =    compensationPowerServiceBiz.  calculCompensationPMPP( pmppActual ,  lineNum)  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      //3. 依据补偿功率,  获取工艺参数,  并且把这些工艺参数传给kuka
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      WoPowerLevel   argByPMPP  =    levelServiceBiz.  getArgByPMPP( pmppCompensation ,    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 ( "  标签打印Event--- 采集到 基板ID: " + subId + " , 线边号: " + lineNum + " ,  从camline 获取到实际pmpp" + pmppActual + " ,计算后 补偿功率: " + pmppCompensation + "  ,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 )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      woPackagingBoxSubstrate.  setActualPmpp( pmppActual )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      woPackagingBoxSubstrate.  setCreateTime(  LocalDateTime. now ( ) )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     woPackagingBoxSubstrate . setPmpp ( pmppCompensation ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     //5. 从camline那里获取可变字段 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     CamlineExtendArgDTO   extendArgFromCamline   =   service . getE xtendArgFromCamline( subId )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     logger . info ( " 标签打印Event--- 基板ID:  " + subId + " , 从camline获取PID16~PID22 的实测数据 成功, 数据内容: " + extendArgFromCamline . toString ( ) )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      woPackagingBoxSubstrate. setLastUpdateTime ( extendArgFromCamline . getLastUpdateTime ( ) )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      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 )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     logger . info ( " 标签打印Event--- 基板ID:  " + subId + " , 录入数据库成功 " ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     //===============           MES 业务 结束         ================= 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     //三. 当MES完成任务后,  把 MesTo Plc.SubArrivedFinish变量置为true,  告诉plc,  我操作完成了 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     write ( S7Client . S7_KUKA , Step1Mes2PlcVar .  SubArrivedFinish, true )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      logger . info ( " 标签打印Event--- 基板ID:  " + subId + " ,  SubArrivedFinish,  置为true 成功 " ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     //四. mes 监控 到PlcToMes.SubArrived==false,  就把MesToPlc .SubArrivedFinish置为 false
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     Integer   subArrived2   =   waitingForTarget ( Step1Plc2MesVar . SubArrivedToMes ,   false ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     if ( subArrived2   ! =   1 ) { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                         logger . info ( " 标签打印Event--- 失败 " + "  ---  " + " MES监听 Step1Plc2MesVar.SubArrivedToMes 是否 等于 1 失败 " ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     write ( S7Client . S7_KUKA , Step1Mes2PlcVar . SubArrivedFinish , false )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     logger . info ( " 标签打印Event--- 基板ID:  " + subId + " , SubArrivedFinish,  置为 false 成功, Event1 成功结束 " ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 } catch   ( Throwable   e ) { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     logger . info ( " 标签打印Event---  : " + e . getMessage ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                  }
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				              } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         } , 1 , 1 ,   TimeUnit . SECONDS ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				          kukaStep2.  scheduleAtFixedRate( new   Runnable ( )    {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				              @Override
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				              public  void   run ( )    {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                  try   {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      //调度开始
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      Integer   shelfIsFull  =    waitingForTarget(  Step2Plc2MesVar.  ShelfIsFull,   true )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     if (  shelfIsFull  ! =   1 )  {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                          logger. info ( "  BOXID生成Event-------失败" + "  ---  " + "  MES监听 Step2Plc2MesVar.ShelfIsFull 是否 等于 1 失败" )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      }
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      //一. 从plc 中获取 subIdList 和 lineNum
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      String[ ]   subIdList   =   ( String [ ] ) read (  S7Client.  S7_KUKA,  Step2Plc2MesVar.  SubIdList)  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      Integer   listSize  =   ( Integer ) read (  S7Client.  S7_KUKA,  Step2Plc2MesVar.  PackageNumberSet)  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      //二. MES 业务
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      //===============           MES 业务 开始         =================
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      //1.MES 生成BoxId
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     if (  subIdList.  length< = 0 )  {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                          logger. info ( "  BOXID生成Event-------失败" + "  ---  " + "  从plc里面获取到的基板列表 为空" )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                          throw  new    Exception( "  BOXID生成Event-------kuka机械手 取到了空箱" )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      }
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      //真实的基板ID 就是17位的,  plc读取过来,  有空格,  要把后面3位空格去掉就行了。
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      for( int   i = 0 ; i <  subIdList.  length; i + + )  {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                          subIdList[ i ]   =    removeKG(  subIdList[ i ] )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      }
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      logger. info ( "  BOXID生成Event-------获取到基板列表:" +    Arrays.  toString(  subIdList) + " ,基板数量: " +  listSize)  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      WoPackagingBoxSubstrate   bySubId  =    substrateServiceBiz.  getBySubId(  subIdList[ 0 ] )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      //如果我们系统中找不到这块基板那么就去camline里面找
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     if ( bySubId   = =   null )  {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                          //todo
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                          CamlineSubIdDTO   subIdByCamline  =    service.  getSubIdByCamline(  subIdList[ 0 ] )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                          bySubId  =   new    WoPackagingBoxSubstrate( )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                          bySubId.  setPowerLevel(  subIdByCamline.  getPowerLevel( ) )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                          bySubId.  setSapMaterial(  subIdByCamline.  getSapMaterial( ) )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                          bySubId.  setLineBody( 2 )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      }
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     //校验是否存在混档位情况 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      String  boxId   =   " "  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     if ( isMixLevel ( subIdList ) ) { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                          //出现混档 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                         boxId   =   getBoxId ( bySubId . getSapMaterial ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     } else   { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                         //正常情况 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                         boxId   =   getErrorBoxId ( bySubId . getSapMaterial ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     logger . info ( " BOXID生成Event-------mes 生成的boxId : " +   boxId )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     //2. 依次update 基板表,  把boxId 赋予这些基板 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     for ( int   i = 0 ; i < listSize ; i + + ) { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                         substrateServiceBiz . updatePackagingBoxIdAndSlotByWoSubstrateId ( boxId , ( i + 1 ) , subIdList [ i ] )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     //3.去camline数据库 查询此基板ID 对应的订单 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     String   orderNameBySubId   =   service . getOrderNameBySubId ( subIdList [ 0 ] )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     //4. box信息录入到box表 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     WoPackagingBox   woPackagingBox   =   new   WoPackagingBox ( )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     woPackagingBox . setBoxNo ( boxId ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     woPackagingBox . setSubstrateQuantity ( listSize ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     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 )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     logger . info ( " BOXID生成Event-------boxId : " +   boxId + " 写入数据库成功 " ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     //===============           MES 业务 结束         ================= 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     //三. 把生成的BoxId 告诉kuka 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     write ( S7Client . S7_KUKA , Step2Mes2PlcVar . BoxId , boxId )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      logger . info ( " BOXID生成Event-------boxId : " +   boxId + " 传给PLC 成功 " ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     //四. 当MES完成任务后,  把MesToPlc.ShelfIsFullFinish变量置为true,  告诉plc,  我操作完成了 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     write ( S7Client . S7_KUKA , Step2Mes2PlcVar . ShelfIsFullFinish , true ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      logger . info ( " BOXID生成Event-------boxId : " +   boxId + " ShelfIsFullFinish 置为true 成功 " )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     //四. mes 监控 到PlcToMes.SubArrived==false,  就把MesToPlc.SubArrivedFinish置为false 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     Integer   subArrived2   =   waitingForTarget ( Step2Plc2MesVar . ShelfIsFull ,   false ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     if ( subArrived2   ! =   1 )  {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                         logger . info ( " BOXID生成Event-------失败 " + "  ---  " + " 步骤1.  MES监听 Step1Plc2MesVar.SubArrivedToMes 是否 等于 1 失败 " ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     write ( S7Client . S7_KUKA , Step2Mes2PlcVar . ShelfIsFullFinish , false ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     logger . info ( " BOXID生成Event-------boxId : " +   boxId + " ShelfIsFullFinish 置为false 成功,Event2 成功结束 " ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 } catch   ( Throwable   e ) { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     logger . info ( " BOXID生成Event------- : "   +   e . getMessage ( ) )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         } , 1 , 1 ,   TimeUnit . SECONDS ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         kukaStep3 . scheduleAtFixedRate ( new   Runnable ( )   { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             @Override 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             public   void   run ( )   { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 try   { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     //调度开始 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     Integer   shelfIsFull   =   waitingForTarget ( Step3Plc2MesVar . ShelfIsFullArrived ,   true ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     if ( shelfIsFull   ! =   1 ) { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                         logger . info ( " 装箱单打印Event------失败 " + "  ---  " + " 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 ( " 装箱单打印Event------到达站台的boxId : " + boxId )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      //二 . MES 业务 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     //===============           MES 业务 开始         ================= 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     //1. box信息录入到box表 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     boxServiceBiz . updateIsArrivedByBoxNo ( 1 , boxId )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     logger . info ( " 装箱单打印Event------boxId : " + boxId + " 更新数据库成功 " ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     //===============           MES 业务 结束         ================= 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     //四. 当MES完成任务后,  把MesToPlc.ShelfIsFullArrivedFinish变量置为true,  告诉plc,  我操作完成了 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     write ( S7Client . S7_KUKA , Step3Mes2PlcVar . ShelfIsFullArrivedFinish , true )  ;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     logger . info ( " 装箱单打印Event------boxId : " + boxId + " ,   ShelfIsFullArrivedFinish置为true 成功" ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     //四. mes 监控 到PlcToMes.SubArrived==false,  就把MesToPlc.SubArrivedFinish置为false 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                      Integer   subArrived2   =   waitingForTarget ( Step3Plc2MesVar . ShelfIsFullArrived ,   false ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     if ( subArrived2   ! =   1 ) { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                         logger . info ( " 装箱单打印Event------失败 " + "  ---  " + " 步骤1.  MES监听 Step3Plc2MesVar.ShelfIsFullArrived 是否 等于 1 失败 " ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     logger . info ( " 装箱单打印Event------boxId : " + boxId + " ,   监听到subArrived=false 成功" ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     write ( S7Client . S7_KUKA , Step3Mes2PlcVar . ShelfIsFullArrivedFinish , false ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     logger . info ( " 装箱单打印Event------boxId : " + boxId + " ,   Even3 成功" ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 } catch   ( Throwable   e ) { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                     logger . info ( " 装箱单打印Event------ " + e . getMessage ( ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         } , 1 , 1 ,   TimeUnit . SECONDS ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     }