@@ -206,252 +206,252 @@ public class KukaJoinThread implements ApplicationRunner {
@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 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. getExtendArgFromCamline(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完成任务后, 把MesToPlc.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) {
// e. printStackTrace() ;
// logger.info(" 标签打印Event--- 出现异常 :"+e.toString()) ;
// }
// }
// },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)-1 ;
//
//
// //二. 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]) ;
// logger.info("bySubId"+ bySubId. toString()) ;
// //如果我们系统中找不到这块基板那么就去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, listSize)) {
// //出现混档
// boxId = getErrorBoxId( bySubId. getSapMaterial()) ;
// }else {
// //正常情况
// 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. 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()) ;
// woPackagingBox. setPackagingTime( 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) {
// e. printStackTrace() ;
// logger.info(" BOXID生成Event------- 出现异常:" + e.toString()) ;
// }
// }
// },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) {
// e. printStackTrace() ;
// logger.info(" 装箱单打印Event 出现异常------"+e.toString()) ;
// }
//
// }
// },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. getExtendArgFromCamline( 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完成任务后, 把MesToPlc.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 ) {
e . printStackTrace( ) ;
logger. info ( " 标签打印Event--- 出现异常 :" + e . toString ( ) ) ;
}
}
} , 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) - 1 ;
//二. 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 ] ) ;
logger. info ( " bySubId " + bySubId. toString( ) ) ;
//如果我们系统中找不到这块基板那么就去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, listSize) ) {
//出现混档
boxId = getErrorBoxId( bySubId. getSapMaterial( ) ) ;
} else {
//正常情况
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. 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 ( ) ) ;
woPackagingBox. setPackagingTime( 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 ) {
e . printStackTrace( ) ;
logger. info ( " BOXID生成Event------- 出现异常:" + e . toString ( ) ) ;
}
}
} , 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 ) {
e . printStackTrace( ) ;
logger. info ( " 装箱单打印Event 出现异常------" + e . toString ( ) ) ;
}
}
} , 1 , 1 , TimeUnit. SECONDS) ;
}