| | |
| | | package com.jcdm.main.plcserver.sub; |
| | | |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.jcdm.common.core.domain.BaseEntity; |
| | | import com.jcdm.main.bs.domain.BsTechnologyRouteChildInfo; |
| | | import com.jcdm.main.bs.orderScheduling.domain.BsOrderScheduling; |
| | | import com.jcdm.main.bs.orderScheduling.service.IBsOrderSchedulingService; |
| | | import com.jcdm.main.bs.technologyRouteChild.service.IBsTechnologyRouteChildInfoService; |
| | | import com.jcdm.main.da.collectionParamConf.domain.DaCollectionParamConf; |
| | | import com.jcdm.main.da.collectionParamConf.service.IDaCollectionParamConfService; |
| | | import com.jcdm.main.da.opcuaconfig.domain.DaOpcuaConfig; |
| | | import com.jcdm.main.da.paramCollection.domain.DaParamCollection; |
| | | import com.jcdm.main.da.paramCollection.service.IDaParamCollectionService; |
| | | import com.jcdm.main.da.passingStationCollection.domain.DaPassingStationCollection; |
| | | import com.jcdm.main.da.passingStationCollection.domain.ProductNewPassStation; |
| | | import com.jcdm.main.da.passingStationCollection.service.ProductNewPassStationService; |
| | | import com.jcdm.main.da.passingStationCollection.service.impl.DaPassingStationCollectionServiceImpl; |
| | | import com.jcdm.main.plcserver.conf.OPCElement; |
| | | import com.jcdm.main.rm.repairRecord.domain.RmRepairRecord; |
| | | import com.jcdm.main.rm.repairRecord.service.IRmRepairRecordService; |
| | | import com.kangaroohy.milo.model.ReadWriteEntity; |
| | | import com.kangaroohy.milo.runner.subscription.SubscriptionCallback; |
| | | import com.kangaroohy.milo.service.MiloService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.ObjectUtils; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.math.BigDecimal; |
| | | import java.sql.Time; |
| | | import java.time.LocalDateTime; |
| | | import java.util.*; |
| | | import java.util.concurrent.TimeUnit; |
| | | import java.util.stream.Collectors; |
| | | |
| | | |
| | | @Slf4j |
| | | @Component |
| | | public class OPCUaSubscription implements SubscriptionCallback { |
| | | |
| | | private static final Logger logger = LoggerFactory.getLogger("sys-user"); |
| | | public static MiloService miloService; |
| | | |
| | | public IDaCollectionParamConfService collectionParamConfService; |
| | | |
| | | public IDaParamCollectionService daParamCollectionService; |
| | | |
| | | public DaPassingStationCollectionServiceImpl passingStationCollectionServiceImpl; |
| | | |
| | | public List<DaOpcuaConfig> lists; |
| | | |
| | | public static final HashMap<String,Integer> map = new HashMap<>(); |
| | | |
| | | public IBsOrderSchedulingService bsOrderSchedulingService; |
| | | |
| | | public IRmRepairRecordService rmRepairRecordService; |
| | | |
| | | public IBsTechnologyRouteChildInfoService bsTechnologyRouteChildInfoService; |
| | | public ProductNewPassStationService productNewPassStationService; |
| | | |
| | | public HashMap<String,List<DaCollectionParamConf>> allCollectParamList = new HashMap<>(); |
| | | |
| | | public OPCUaSubscription(MiloService miloService, |
| | | IDaCollectionParamConfService collectionParamConfService, |
| | | IDaParamCollectionService daParamCollectionService) { |
| | | IDaParamCollectionService daParamCollectionService, |
| | | DaPassingStationCollectionServiceImpl passingStationCollectionServiceImpl, |
| | | IBsOrderSchedulingService bsOrderSchedulingService, |
| | | List<DaOpcuaConfig> lists, |
| | | IRmRepairRecordService rmRepairRecordService, |
| | | IBsTechnologyRouteChildInfoService bsTechnologyRouteChildInfoService, |
| | | ProductNewPassStationService productNewPassStationService) { |
| | | OPCUaSubscription.miloService = miloService; |
| | | this.collectionParamConfService = collectionParamConfService; |
| | | this.daParamCollectionService = daParamCollectionService; |
| | | this.passingStationCollectionServiceImpl = passingStationCollectionServiceImpl; |
| | | this.bsOrderSchedulingService = bsOrderSchedulingService; |
| | | this.lists = lists; |
| | | this.rmRepairRecordService = rmRepairRecordService; |
| | | this.bsTechnologyRouteChildInfoService = bsTechnologyRouteChildInfoService; |
| | | this.productNewPassStationService = productNewPassStationService; |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public void onSubscribe(String identifier, Object value) { |
| | | String ecpStr = "";//异常记录标记 |
| | | try { |
| | | if(null != value) { |
| | | if(null != value && "1".equals(value.toString())) { |
| | | //1、检索SN号 |
| | | //2、过站参数采集 |
| | | //3、扫码枪数据回传 |
| | | List<String> collect1 = lists.stream().filter(x -> OPCElement.SN_CHECK.equals(x.getrFunction())) |
| | | .map(DaOpcuaConfig::getNode).collect(Collectors.toList()); |
| | | List<String> collect2 = lists.stream().filter(x -> OPCElement.SAVE_DATA.equals(x.getrFunction())) |
| | | .map(DaOpcuaConfig::getNode).collect(Collectors.toList()); |
| | | if (collect1.contains(identifier)){ |
| | | logger.info("-------监听到,{}的CODE_CHECK的信号",identifier); |
| | | //logger.info("-------time--------------,{}",LocalDateTime.now()); |
| | | //sn |
| | | if (OPCElement.OP010_CODE_CHECK.equals(identifier)){ |
| | | ReadWriteEntity entity = new ReadWriteEntity("CFL4HX.OP010.CodeCheckFeed", 1); |
| | | OPCUaSubscription.miloService.writeToOpcByte(entity);//写完成 |
| | | } else if (OPCElement.OP020_CODE_CHECK.equals(identifier)) { |
| | | ReadWriteEntity entity = new ReadWriteEntity("CFL4HX.OP020.CodeCheckFeed", 1); |
| | | OPCUaSubscription.miloService.writeToOpcByte(entity);//写完成 |
| | | } else if (OPCElement.OP030_CODE_CHECK.equals(identifier)) { |
| | | ReadWriteEntity entity = new ReadWriteEntity("CFL4HX.OP030.CodeCheckFeed", 1); |
| | | OPCUaSubscription.miloService.writeToOpcByte(entity);//写完成 |
| | | Object SNCodeObject = miloService.readFromOpcUa("CFL4HX.OP030.Code").getValue(); |
| | | if (ObjectUtil.isNotEmpty(SNCodeObject)){ |
| | | String snCode = SNCodeObject.toString(); |
| | | if (StrUtil.isNotBlank(snCode)){ |
| | | String type = productNewFlag(snCode); |
| | | if ("280".equals(type) || "380".equals(type)){ |
| | | //获取箱体码 |
| | | ProductNewPassStation productNewPassStation = new ProductNewPassStation(); |
| | | productNewPassStation.setFinishFlag(OPCElement.UN_FINISH); |
| | | productNewPassStation.setSfcCode(snCode); |
| | | List<ProductNewPassStation> productPassStationList = productNewPassStationService.getProductPassStationList(productNewPassStation); |
| | | if (CollUtil.isNotEmpty(productPassStationList)){ |
| | | List<ProductNewPassStation> collect = productPassStationList.stream().sorted(Comparator.comparing(ProductNewPassStation::getCreateTime).reversed()).collect(Collectors.toList()); |
| | | ProductNewPassStation productNewPassStation1 = collect.get(0); |
| | | String boxCode = productNewPassStation1.getBoxCode(); |
| | | passingStationCollectionServiceImpl.sendMessage(type+"*"+boxCode,"OP030"); |
| | | } |
| | | |
| | | //OP010保存请求 |
| | | if (identifier.equals(OPCElement.OP010_SaveRequest) && null != value && "1".equals(value.toString())) { |
| | | SaveData(OPCElement.OP010_SaveRequest); |
| | | ReadWriteEntity entity = new ReadWriteEntity(OPCElement.OP010_MesSaveFeed, 1); |
| | | miloService.writeToOpcByte(entity); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } else if (OPCElement.OP040_CODE_CHECK.equals(identifier)) { |
| | | ReadWriteEntity entity = new ReadWriteEntity("CFL4HX.OP040.CodeCheckFeed", 1); |
| | | OPCUaSubscription.miloService.writeToOpcByte(entity);//写完成 |
| | | //推送数据 |
| | | log.info("进入OP040.CodeCheck"); |
| | | tile2("CFL4HX.OP040.CodeCheck"); |
| | | } else { |
| | | this.SNRetrieval(identifier,value.toString()); |
| | | if (identifier.equals(OPCElement.OP120_ZZ_CODE_CHECK) && "1".equals(value.toString())){ |
| | | //总装上线扫码传输数据 |
| | | logger.info("-------监听到,{}的扫码枪扫码的CODE_CHECK的信号",identifier); |
| | | scannerGunMessage(); |
| | | } |
| | | } |
| | | |
| | | } |
| | | //OP010请求检索条码 |
| | | else if (identifier.equals(OPCElement.OP010_CodeCheck) && null != value && "1".equals(value.toString())) { |
| | | ReadWriteEntity entity = new ReadWriteEntity(OPCElement.OP010_MesCodeCheckFeed, 1); |
| | | miloService.writeToOpcByte(entity); |
| | | if (collect2.contains(identifier)){ |
| | | if ("1".equals(value.toString())){ |
| | | logger.info("-------监听到,{}的SAVE_REQUEST_LAST的信号",identifier); |
| | | //logger.info("-------time--------------,{}",LocalDateTime.now()); |
| | | //HX线改装 |
| | | if (OPCElement.OP010_REQUEST_PRODUCT_TYPE.equals(identifier)){ |
| | | Object SNCodeObject = miloService.readFromOpcUa("CFL4HX.OP010.Code").getValue(); |
| | | if (ObjectUtil.isNotEmpty(SNCodeObject)){ |
| | | String snCode = SNCodeObject.toString(); |
| | | ReadWriteEntity entity3 = new ReadWriteEntity("CFL4HX.OP010.ProductTypeSN",snCode); |
| | | OPCUaSubscription.miloService.writeToOpcUa(entity3);//写产品SN号反馈 |
| | | ReadWriteEntity entity2 = new ReadWriteEntity("CFL4HX.OP010.SNDone", 1); |
| | | OPCUaSubscription.miloService.writeToOpcByte(entity2);//写完成 |
| | | |
| | | } |
| | | } else if (OPCElement.OP010_SAVE_REQUEST.equals(identifier)) { |
| | | ReadWriteEntity entity2 = new ReadWriteEntity("CFL4HX.OP010.SaveFeed", 1); |
| | | OPCUaSubscription.miloService.writeToOpcByte(entity2);//写完成 |
| | | } else if (OPCElement.OP020_PRINT_REQUEST.equals(identifier)) { |
| | | Object SNCodeObject = miloService.readFromOpcUa("CFL4HX.OP020.Code").getValue(); |
| | | if (ObjectUtil.isNotEmpty(SNCodeObject)){ |
| | | String snCode = SNCodeObject.toString(); |
| | | DaPassingStationCollection passingStationCollectionCheck = new DaPassingStationCollection(); |
| | | passingStationCollectionCheck.setLocationCode("OP020"); |
| | | passingStationCollectionCheck.setSfcCode(snCode); |
| | | List<DaPassingStationCollection> checkList = passingStationCollectionServiceImpl.selectDaPassingStationCollectionList(passingStationCollectionCheck); |
| | | if (CollUtil.isNotEmpty(checkList)){ |
| | | if (snCode.startsWith("380")){ |
| | | log.info("enter-380"); |
| | | String[] split = snCode.split(StrUtil.SPACE); |
| | | if (split.length>1){ |
| | | ReadWriteEntity entity = new ReadWriteEntity("CFL4HX.OP020.PrintSN1", split[0]); |
| | | OPCUaSubscription.miloService.writeToOpcUa(entity);//写完成 |
| | | ReadWriteEntity entity2 = new ReadWriteEntity("CFL4HX.OP020.PrintSN2", "☆"+split[1]+"☆"); |
| | | OPCUaSubscription.miloService.writeToOpcUa(entity2);//写完成 |
| | | ReadWriteEntity entity3 = new ReadWriteEntity("CFL4HX.OP020.SendSNDone", 2); |
| | | OPCUaSubscription.miloService.writeToOpcByte(entity3);//写完成 |
| | | } |
| | | } else { |
| | | ReadWriteEntity entity = new ReadWriteEntity("CFL4HX.OP020.PrintSN1", snCode); |
| | | OPCUaSubscription.miloService.writeToOpcByte(entity);//写完成 |
| | | ReadWriteEntity entity3 = new ReadWriteEntity("CFL4HX.OP020.SendSNDone", 2); |
| | | OPCUaSubscription.miloService.writeToOpcByte(entity3);//写完成 |
| | | } |
| | | } else { |
| | | if (snCode.startsWith("380")){ |
| | | log.info("enter-380"); |
| | | String[] split = snCode.split(StrUtil.SPACE); |
| | | if (split.length>1){ |
| | | ReadWriteEntity entity = new ReadWriteEntity("CFL4HX.OP020.PrintSN1", split[0]); |
| | | OPCUaSubscription.miloService.writeToOpcUa(entity);//写完成 |
| | | ReadWriteEntity entity2 = new ReadWriteEntity("CFL4HX.OP020.PrintSN2", "☆"+split[1]+"☆"); |
| | | OPCUaSubscription.miloService.writeToOpcUa(entity2);//写完成 |
| | | ReadWriteEntity entity3 = new ReadWriteEntity("CFL4HX.OP020.SendSNDone", 1); |
| | | OPCUaSubscription.miloService.writeToOpcByte(entity3);//写完成 |
| | | } |
| | | } else { |
| | | ReadWriteEntity entity = new ReadWriteEntity("CFL4HX.OP020.PrintSN1", snCode); |
| | | OPCUaSubscription.miloService.writeToOpcByte(entity);//写完成 |
| | | ReadWriteEntity entity3 = new ReadWriteEntity("CFL4HX.OP020.SendSNDone", 1); |
| | | OPCUaSubscription.miloService.writeToOpcByte(entity3);//写完成 |
| | | } |
| | | } |
| | | |
| | | } |
| | | } else if (OPCElement.OP030_SAVE_REQUEST.equals(identifier)) { |
| | | cleanForm("CFL4HX.OP030.SaveFeed"); |
| | | ReadWriteEntity entity2 = new ReadWriteEntity("CFL4HX.OP030.SaveFeed", 1); |
| | | OPCUaSubscription.miloService.writeToOpcByte(entity2);//写完成 |
| | | |
| | | } else if (OPCElement.OP040_SAVE_REQUEST.equals(identifier)) { |
| | | cleanForm040(OPCElement.OP040_SAVE_REQUEST); |
| | | ReadWriteEntity entity2 = new ReadWriteEntity("CFL4HX.OP040.SaveFeed", 1); |
| | | OPCUaSubscription.miloService.writeToOpcByte(entity2);//写完成 |
| | | } else { |
| | | this.SaveData(identifier); |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | } catch (Exception e) { |
| | | |
| | | System.out.println(e.getMessage()); |
| | | } finally { |
| | | if (!"".equals(ecpStr)) { |
| | | System.out.println(ecpStr + "\r\n"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | private void scannerGunMessage() throws Exception { |
| | | String[] parts = OPCElement.OP120_ZZ_CODE_CHECK.split("[.]"); |
| | | Object SNCodeObject = miloService.readFromOpcUa(parts[0] + "." + parts[1] + ".Code1").getValue(); |
| | | if (null == SNCodeObject){ |
| | | SNCodeObject = miloService.readFromOpcUa(parts[0] + "." + parts[1] + ".Code").getValue(); |
| | | } |
| | | if (null != SNCodeObject){ |
| | | String SNCode = SNCodeObject.toString(); |
| | | passingStationCollectionServiceImpl.sendMessage(SNCode,"OP120"); |
| | | } |
| | | } |
| | | |
| | | public void SNRetrieval(String Node, String value) throws Exception { |
| | | String[] parts = Node.split("[.]"); |
| | | if(value.equals("1")) { |
| | | //SN号检索 |
| | | Object SNCodeObject = miloService.readFromOpcUa(parts[0] + "." + parts[1] + ".Code").getValue(); |
| | | if(null != SNCodeObject) { |
| | | String SNCode=SNCodeObject.toString(); |
| | | // String a=passingStationCollectionServiceImpl.SelectSN(SNCode,parts[1]); |
| | | String a; |
| | | BsOrderScheduling bsOrderSchedulingQuery = new BsOrderScheduling(); |
| | | bsOrderSchedulingQuery.setEngineNo(SNCode); |
| | | List<BsOrderScheduling> queryOrderList = bsOrderSchedulingService.selectBsOrderSchedulingList(bsOrderSchedulingQuery); |
| | | if (CollUtil.isNotEmpty(queryOrderList)){ |
| | | a = "1"; |
| | | //如果是老车型,判断是否重复扫码 |
| | | if (OPCElement.OP050_CODE_CHECK.equals(Node)){ |
| | | String type = productNewFlag(SNCode); |
| | | if (!"280".equals(type) && !"380".equals(type)){ |
| | | DaPassingStationCollection passCheck = new DaPassingStationCollection(); |
| | | passCheck.setSfcCode(SNCode); |
| | | passCheck.setLocationCode("OP060"); |
| | | List<DaPassingStationCollection> passCheckList = passingStationCollectionServiceImpl.selectDaPassingStationCollectionList(passCheck); |
| | | if (CollUtil.isNotEmpty(passCheckList)){ |
| | | //是否返修 |
| | | a = "5"; |
| | | // RmRepairRecord repairRecordCheck = new RmRepairRecord(); |
| | | // repairRecordCheck.setBoxCode(SNCode); |
| | | // repairRecordCheck.setProcessesCode("OP050"); |
| | | // List<RmRepairRecord> repairCheckList = rmRepairRecordService.selectRmRepairRecordList(repairRecordCheck); |
| | | // if (CollUtil.isEmpty(repairCheckList)){ |
| | | // |
| | | // } |
| | | } |
| | | } |
| | | } |
| | | }else { |
| | | a = "4"; |
| | | } |
| | | //如果是返修工位需要传输返修工位号 |
| | | List<DaPassingStationCollection> daPassingStationCollections = new ArrayList<>(); |
| | | List<RmRepairRecord> rmRepairRecords = new ArrayList<>(); |
| | | if (OPCElement.OP465_ZZ_CODE_CHECK.equals(Node) || OPCElement.OP355_ZZ_CODE_CHECK.equals(Node) |
| | | || OPCElement.OP695_ZZ_CODE_CHECK.equals(Node) || OPCElement.OP755_ZZ_CODE_CHECK.equals(Node)){ |
| | | //过站记录 |
| | | DaPassingStationCollection PassingStationCollection=new DaPassingStationCollection(); |
| | | PassingStationCollection.setSfcCode(SNCode); |
| | | daPassingStationCollections = passingStationCollectionServiceImpl.selectDaPassingStationCollectionList(PassingStationCollection); |
| | | // if (CollUtil.isNotEmpty(daPassingStationCollections)){ |
| | | // DaPassingStationCollection lastOne = daPassingStationCollections.get(daPassingStationCollections.size() - 1); |
| | | // String outRsSign = lastOne.getOutRsSign(); |
| | | // if ("合格".equals(outRsSign)){ |
| | | // a = "1"; |
| | | // }else { |
| | | // a = "2"; |
| | | // } |
| | | // } |
| | | RmRepairRecord rmRepairRecord = new RmRepairRecord(); |
| | | rmRepairRecord.setBoxCode(SNCode); |
| | | rmRepairRecords = rmRepairRecordService.selectRmRepairRecordList(rmRepairRecord); |
| | | if (CollUtil.isNotEmpty(rmRepairRecords)){ |
| | | a = "1"; |
| | | }else { |
| | | a = "2"; |
| | | } |
| | | } |
| | | logger.info("-----返回codeCheckFeed-----,{}",a); |
| | | // String a="1"; |
| | | //zz上线工位查询hx线是否过站合格 |
| | | if (OPCElement.OP120_ZZ_CODE_CHECK.equals(Node)){ |
| | | //过站记录 |
| | | DaPassingStationCollection PassingStationCollection=new DaPassingStationCollection(); |
| | | PassingStationCollection.setSfcCode(SNCode); |
| | | PassingStationCollection.setLocationCode("OP160"); |
| | | List<DaPassingStationCollection> ZZOP120PassCheck = passingStationCollectionServiceImpl.selectDaPassingStationCollectionList(PassingStationCollection); |
| | | if (CollUtil.isEmpty(ZZOP120PassCheck)){ |
| | | a = ""; |
| | | } else { |
| | | DaPassingStationCollection passingStationCollection = ZZOP120PassCheck.get(0); |
| | | String outRsSign = passingStationCollection.getOutRsSign(); |
| | | if (!OPCElement.QUALIFIED.equals(outRsSign)){ |
| | | a = ""; |
| | | } |
| | | } |
| | | } |
| | | // 1:OK可生产 2:NG不可生产 3:NG可返工 4:PC检索失败(无记录)5:PC检索失败(软件) |
| | | if (StrUtil.isNotBlank(a)){ |
| | | int input = Integer.parseInt(a); |
| | | ReadWriteEntity entity = new ReadWriteEntity(parts[0]+"."+parts[1]+".CodeCheckFeed", input); |
| | | logger.info("发动机号:{},监听到{}的CodeCheck的信号",SNCode,Node); |
| | | miloService.writeToOpcByte(entity); |
| | | logger.info("监听到返回codecheckfeed信号,{}",entity); |
| | | //首站传输订单号 |
| | | // if (OPCElement.OP050_HX_CODE_CHECK.equals(Node)){ |
| | | // //查询订单号 |
| | | // BsOrderScheduling bsOrderScheduling = new BsOrderScheduling(); |
| | | // bsOrderScheduling.setEngineNo(SNCode); |
| | | // List<BsOrderScheduling> tempList = bsOrderSchedulingService.selectBsOrderSchedulingList(bsOrderScheduling); |
| | | // String orderNum = ""; |
| | | // if (CollUtil.isNotEmpty(tempList)){ |
| | | // BsOrderScheduling bsOrderScheduling1 = tempList.get(0); |
| | | // orderNum = bsOrderScheduling1.getOrderNo(); |
| | | // } |
| | | // ReadWriteEntity entity2 = new ReadWriteEntity(parts[0]+"."+parts[1]+".OrderNumber", orderNum); |
| | | // miloService.writeToOpcUa(entity2); |
| | | // } |
| | | //如果是返修工位需要传输返修工位号 |
| | | if (OPCElement.OP465_ZZ_CODE_CHECK.equals(Node) || OPCElement.OP355_ZZ_CODE_CHECK.equals(Node) |
| | | || OPCElement.OP695_ZZ_CODE_CHECK.equals(Node) || OPCElement.OP755_ZZ_CODE_CHECK.equals(Node)){ |
| | | rework(SNCode,Node,daPassingStationCollections,rmRepairRecords); |
| | | } |
| | | if (OPCElement.OP050_CODE_CHECK.equals(Node)) { |
| | | //新机型050 |
| | | String type = productNewFlag(SNCode); |
| | | if ("280".equals(type) || "380".equals(type)){ |
| | | ProductNewPassStation productNewPassStation = new ProductNewPassStation(); |
| | | productNewPassStation.setSfcCode(SNCode); |
| | | List<ProductNewPassStation> passStationList = productNewPassStationService.getProductPassStationList(productNewPassStation); |
| | | ProductNewPassStation productNewPassStation2 = new ProductNewPassStation(); |
| | | productNewPassStation2.setFinishFlag("0"); |
| | | List<ProductNewPassStation> collect = productNewPassStationService.getProductPassStationList(productNewPassStation2) |
| | | .stream().sorted(Comparator.comparing(ProductNewPassStation::getCreateTime)) |
| | | .collect(Collectors.toList()); |
| | | String partSfcCode = ""; |
| | | if (CollUtil.isNotEmpty(collect)){ |
| | | ProductNewPassStation passStation = collect.get(0); |
| | | partSfcCode = passStation.getSfcCode(); |
| | | } |
| | | if (CollUtil.isNotEmpty(passStationList)){ |
| | | ProductNewPassStation passStation = passStationList.get(0); |
| | | String productType = ""; |
| | | if (ObjectUtils.isNotEmpty(passStation)){ |
| | | productType = passStation.getProductType(); |
| | | } |
| | | passingStationCollectionServiceImpl.sendMessage(SNCode+"*sfcCode*"+productType+"*"+partSfcCode,"OP050"); |
| | | } |
| | | } |
| | | } |
| | | if (OPCElement.OP060_CODE_CHECK.equals(Node)){ |
| | | String type = productNewFlag(SNCode); |
| | | if ("280".equals(type) || "380".equals(type)){ |
| | | checkBoxRod(Node); |
| | | } |
| | | } |
| | | System.out.println(entity); |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | public void SaveData(String Node) throws Exception { |
| | | /*String[] parts = Node.split("[.]"); |
| | | Object SNCodeObject = miloService.readFromOpcUa(parts[0] + "." + parts[1] + ".Code1").getValue(); |
| | | private void rework(String SNCode,String Node,List<DaPassingStationCollection> daPassingStationCollections,List<RmRepairRecord> rmRepairRecords) throws Exception{ |
| | | BsOrderScheduling bsOrderScheduling = new BsOrderScheduling(); |
| | | bsOrderScheduling.setEngineNo(SNCode); |
| | | List<String> allProcessCoed = new ArrayList<>(); |
| | | List<BsTechnologyRouteChildInfo> bsTechnologyRouteChildInfos = new ArrayList<>(); |
| | | List<String> collect = bsOrderSchedulingService.selectBsOrderSchedulingList(bsOrderScheduling).stream().map(BsOrderScheduling::getModel).collect(Collectors.toList()); |
| | | if (CollUtil.isNotEmpty(collect)){ |
| | | String s = collect.get(0); |
| | | //查找次机型的完整工序 |
| | | bsTechnologyRouteChildInfos = bsTechnologyRouteChildInfoService.selectAllTechnologyRouteByProductCode(s); |
| | | if (CollUtil.isNotEmpty(bsTechnologyRouteChildInfos)){ |
| | | allProcessCoed = bsTechnologyRouteChildInfos.stream().map(BsTechnologyRouteChildInfo::getProcessesCode).collect(Collectors.toList()); |
| | | } |
| | | } |
| | | // RmRepairRecord rmRepairRecord = new RmRepairRecord(); |
| | | // rmRepairRecord.setBoxCode(SNCode); |
| | | List<ReadWriteEntity> writeList = new ArrayList<>(); |
| | | // List<RmRepairRecord> rmRepairRecords = rmRepairRecordService.selectRmRepairRecordList(rmRepairRecord); |
| | | //过站记录 |
| | | // DaPassingStationCollection PassingStationCollection=new DaPassingStationCollection(); |
| | | // PassingStationCollection.setSfcCode(SNCode); |
| | | //过站记录 |
| | | // List<DaPassingStationCollection> daPassingStationCollections = passingStationCollectionServiceImpl.selectDaPassingStationCollectionList(PassingStationCollection); |
| | | |
| | | //所有返工工位 |
| | | List<String> collect1 = rmRepairRecords.stream().map(RmRepairRecord::getProcessesCode).collect(Collectors.toList()); |
| | | if (CollUtil.isNotEmpty(collect1)){ |
| | | //查询出所有需要返修工位的最小op块 |
| | | Integer minOP = 0; |
| | | if (CollUtil.isNotEmpty(collect1)){ |
| | | |
| | | List<Integer> sortList = new ArrayList<>(); |
| | | collect1.stream().forEach(x ->{ |
| | | String op = x.replace("OP", ""); |
| | | if (StrUtil.isNotBlank(op)){ |
| | | int i = Integer.parseInt(op); |
| | | sortList.add(i); |
| | | } |
| | | }); |
| | | if (CollUtil.isNotEmpty(sortList)){ |
| | | List<Integer> collect2 = sortList.stream().filter(Objects::nonNull).sorted().collect(Collectors.toList()); |
| | | minOP = collect2.get(0); |
| | | } |
| | | } |
| | | //获取过站记录的最大工位 |
| | | String maxCode = null; |
| | | if (CollUtil.isNotEmpty(daPassingStationCollections)){ |
| | | List<DaPassingStationCollection> collect2 = daPassingStationCollections.stream().filter(x -> "不合格".equals(x.getOutRsSign())).collect(Collectors.toList()); |
| | | if (CollUtil.isNotEmpty(collect2)){ |
| | | DaPassingStationCollection lastOne = collect2.get(collect2.size() - 1); |
| | | maxCode = lastOne.getLocationCode(); |
| | | }else { |
| | | DaPassingStationCollection lastOne = daPassingStationCollections.get(daPassingStationCollections.size() - 1); |
| | | maxCode = lastOne.getLocationCode(); |
| | | } |
| | | |
| | | } |
| | | //所有放行工位 |
| | | List<String> passStation = new ArrayList<>(); |
| | | //所有生产工位 |
| | | List<String> productStation = new ArrayList<>(); |
| | | //最大工位编号 |
| | | Integer maxCodeNum = 0; |
| | | if (StrUtil.isNotEmpty(maxCode)){ |
| | | String finalMaxCode = maxCode; |
| | | //获取当前工位对应工步号 |
| | | List<String> collect2 = bsTechnologyRouteChildInfos.stream() |
| | | .filter(x -> x.getProcessesCode().equals(finalMaxCode)) |
| | | .map(BsTechnologyRouteChildInfo::getStepNo).collect(Collectors.toList()); |
| | | if (CollUtil.isNotEmpty(collect2)){ |
| | | String s = collect2.get(0); |
| | | if (StrUtil.isNotBlank(s)){ |
| | | maxCodeNum = Integer.parseInt(s); |
| | | } |
| | | } |
| | | if (CollUtil.isNotEmpty(bsTechnologyRouteChildInfos)){ |
| | | bsTechnologyRouteChildInfos.forEach(x -> { |
| | | x.setStepNoNum(Integer.parseInt(x.getStepNo())); |
| | | }); |
| | | Integer finalMaxCodeNum = maxCodeNum; |
| | | //勾选的返修工位中最大的工位之后的工位----1 |
| | | List<BsTechnologyRouteChildInfo> collect3 = bsTechnologyRouteChildInfos.stream() |
| | | .filter(x -> x.getStepNoNum() > finalMaxCodeNum).collect(Collectors.toList()); |
| | | if (CollUtil.isNotEmpty(collect3)){ |
| | | //需要生产 |
| | | productStation.addAll(collect3.stream().map(BsTechnologyRouteChildInfo::getProcessesCode).collect(Collectors.toList())); |
| | | } |
| | | //从第一个工位到返修的最大工位之间, |
| | | //勾选了返修标记的需要生产---1,未勾选的不生产---2 |
| | | productStation.addAll(collect1); |
| | | } |
| | | } |
| | | if (CollUtil.isNotEmpty(productStation)){ |
| | | List<String> collect2 = allProcessCoed.stream().filter(x -> !productStation.contains(x)).collect(Collectors.toList()); |
| | | passStation.addAll(collect2); |
| | | } |
| | | String[] parts = Node.split("[.]"); |
| | | String par = parts[0]+"."+parts[1]; |
| | | if (CollUtil.isNotEmpty(passStation)){ |
| | | passStation.forEach(x -> { |
| | | ReadWriteEntity readWriteEntity = new ReadWriteEntity(); |
| | | readWriteEntity.setIdentifier(par+"."+x); |
| | | readWriteEntity.setValue(2); |
| | | writeList.add(readWriteEntity); |
| | | }); |
| | | } |
| | | if (CollUtil.isNotEmpty(productStation)){ |
| | | productStation.forEach(x -> { |
| | | ReadWriteEntity readWriteEntity = new ReadWriteEntity(); |
| | | readWriteEntity.setIdentifier(par+"."+x); |
| | | readWriteEntity.setValue(1); |
| | | writeList.add(readWriteEntity); |
| | | }); |
| | | } |
| | | //对OP755做特殊处理 |
| | | List<ReadWriteEntity> OP755List = new ArrayList<>(); |
| | | if (OPCElement.OP755_ZZ_CODE_CHECK.equals(Node)){ |
| | | List<String> patchList = new ArrayList<>(); |
| | | patchList.add(par+".OP740"); |
| | | patchList.add(par+".OP760"); |
| | | patchList.add(par+".OP770"); |
| | | patchList.add(par+".OP780"); |
| | | for (String s : patchList) { |
| | | ReadWriteEntity readWriteEntity = new ReadWriteEntity(); |
| | | readWriteEntity.setIdentifier(s); |
| | | readWriteEntity.setValue(0); |
| | | OP755List.add(readWriteEntity); |
| | | } |
| | | } |
| | | ReadWriteEntity readWriteEntity = new ReadWriteEntity(); |
| | | readWriteEntity.setIdentifier(parts[0]+"."+parts[1]+".Repair_sign"); |
| | | readWriteEntity.setValue(minOP); |
| | | miloService.writeToOpcShort(readWriteEntity); |
| | | miloService.writeToOpcByte(writeList); |
| | | logger.info("{}返修写入:,{}",SNCode,writeList); |
| | | if (CollUtil.isNotEmpty(OP755List)){ |
| | | miloService.writeToOpcByte(OP755List); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | public void SaveData(String Node) throws Exception { |
| | | |
| | | String[] parts = Node.split("[.]"); |
| | | Object SNCodeObject = miloService.readFromOpcUa(parts[0] + "." + parts[1] + ".Code1").getValue(); |
| | | if (null == SNCodeObject){ |
| | | SNCodeObject = miloService.readFromOpcUa(parts[0] + "." + parts[1] + ".Code").getValue(); |
| | | } |
| | | if(null != SNCodeObject) |
| | | { |
| | | String SNCode = SNCodeObject.toString(); |
| | | List<DaCollectionParamConf> list; |
| | | DaCollectionParamConf daCollectionParamConf = new DaCollectionParamConf(); |
| | | daCollectionParamConf.setGatherAddress(parts[0] + "." + parts[1]); |
| | | list = collectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf); |
| | | Object object = miloService.readFromOpcUa(parts[0] + "." + parts[1] + ".Runtime").getValue(); |
| | | String gatherAddress = parts[0] + "." + parts[1]; |
| | | List<DaCollectionParamConf> list = new ArrayList<>(); |
| | | if (allCollectParamList.containsKey(gatherAddress)){ |
| | | list = allCollectParamList.get(gatherAddress); |
| | | }else { |
| | | DaCollectionParamConf daCollectionParamConf = new DaCollectionParamConf(); |
| | | daCollectionParamConf.setGatherAddress(gatherAddress); |
| | | daCollectionParamConf.setRemarks("1"); |
| | | list = collectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf); |
| | | if (CollUtil.isNotEmpty(list)){ |
| | | //加入hashmap |
| | | allCollectParamList.put(gatherAddress,list); |
| | | } |
| | | } |
| | | //60只采集老车型 |
| | | if (OPCElement.OP060_SAVE_REQUEST.equals(Node) || OPCElement.OP060_SAVE_REQUEST_LAST.equals(Node)){ |
| | | String s = productNewFlag(SNCode); |
| | | if ("280".equals(s) || "380".equals(s)){ |
| | | list = new ArrayList<>(); |
| | | } |
| | | } |
| | | //80、100只采集新车型 |
| | | if (OPCElement.OP080_SAVE_REQUEST.equals(Node) |
| | | || OPCElement.OP080_SAVE_REQUEST_LAST.equals(Node) |
| | | || OPCElement.OP100_SAVE_REQUEST.equals(Node) |
| | | || OPCElement.OP100_SAVE_REQUEST_LAST.equals(Node)){ |
| | | String s = productNewFlag(SNCode); |
| | | if (StrUtil.isNotEmpty(s)){ |
| | | if (!"280".equals(s) && !"380".equals(s)){ |
| | | list = new ArrayList<>(); |
| | | } |
| | | } |
| | | |
| | | } |
| | | List<String> nodeIdList = list.stream().map(info -> { |
| | | String nodeid = info.getGatherAddress(); |
| | | return nodeid; |
| | | }).collect(Collectors.toList()); |
| | | |
| | | if(!nodeIdList.isEmpty()){ |
| | | List<ReadWriteEntity> readWriteEntityList = miloService.readFromOpcUa(nodeIdList); |
| | | List<DaParamCollection> daParamCollectionlist = new ArrayList<>(); |
| | | for(int i=0;i<nodeIdList.size();i++){ |
| | | DaParamCollection ParamCollection = new DaParamCollection(); |
| | | if(!readWriteEntityList.get(i).getValue().toString().equals("0.0")){ |
| | | ParamCollection.setParamCode(readWriteEntityList.get(i).getIdentifier().toString().split("[.]")[2]); |
| | | ParamCollection.setLocationCode(parts[1]); |
| | | ParamCollection.setParamValue(readWriteEntityList.get(i).getValue().toString()); |
| | | ParamCollection.setSfcCode(SNCode); |
| | | ParamCollection.setParamName(list.get(i).getCollectParameterName()); |
| | | ParamCollection.setParamUpper(list.get(i).getParamUpper()); |
| | | ParamCollection.setParamLower(list.get(i).getParamLower()); |
| | | ParamCollection.setUnit(list.get(i).getCollectParameterUnit()); |
| | | ParamCollection.setState("合格"); |
| | | ParamCollection.setType(list.get(i).getCollectParameterType()); |
| | | ParamCollection.setCollectionTime(new Date()); |
| | | daParamCollectionlist.add(ParamCollection); |
| | | } |
| | | } |
| | | daParamCollectionService.saveBeachDaParamCollection(daParamCollectionlist); |
| | | List<ReadWriteEntity> readWriteEntityList = new ArrayList<>(); |
| | | if(CollUtil.isNotEmpty(nodeIdList)){ |
| | | //long time1 = new Date().getTime(); |
| | | readWriteEntityList = miloService.readFromOpcUa(nodeIdList); |
| | | //long time2 = new Date().getTime(); |
| | | //logger.info("读取点位花费时间:{},",time2-time1); |
| | | } |
| | | }*/ |
| | | //返回plc保存成功 |
| | | if (parts.length==3){ |
| | | if ("SaveRequest".equals(parts[2])){ |
| | | if (OPCElement.OP050_SAVE_REQUEST.equals(Node)){ |
| | | cleanForm050(Node); |
| | | } else if (OPCElement.OP060_SAVE_REQUEST.equals(Node)){ |
| | | cleanForm060(Node); |
| | | } |
| | | ReadWriteEntity entity = new ReadWriteEntity(parts[0] + "." + parts[1] + ".SaveFeed", 1); |
| | | miloService.writeToOpcByte(entity); |
| | | }else if ("SaveRequestLast".equals(parts[2])){ |
| | | if (OPCElement.OP050_SAVE_REQUEST_LAST.equals(Node)){ |
| | | cleanForm050(Node); |
| | | } else if (OPCElement.OP060_SAVE_REQUEST_LAST.equals(Node)){ |
| | | cleanForm060(Node); |
| | | } |
| | | ReadWriteEntity entity = new ReadWriteEntity(parts[0] + "." + parts[1] + ".SaveFeedLast", 1); |
| | | miloService.writeToOpcByte(entity); |
| | | } |
| | | logger.info("{}保存请求信号返回,MES->PLC的SaveFeedLast信号",Node); |
| | | //logger.info("-------请求返回-----,{}",LocalDateTime.now()); |
| | | } |
| | | |
| | | BsOrderScheduling bsOrderScheduling=bsOrderSchedulingService.selectBsOrderSchedulingSNCode(SNCode); |
| | | |
| | | List<DaParamCollection> daParamCollectionlist = new ArrayList<>(); |
| | | if (CollUtil.isNotEmpty(nodeIdList)){ |
| | | for(int i=0;i<nodeIdList.size();i++){ |
| | | if(ObjectUtil.isNotEmpty(readWriteEntityList.get(i).getValue()) && !readWriteEntityList.get(i).getValue().toString().equals("0.0")){ |
| | | DaParamCollection ParamCollection = new DaParamCollection(); |
| | | ParamCollection.setParamCode(readWriteEntityList.get(i).getIdentifier().toString().split("[.]")[2]); |
| | | ParamCollection.setLocationCode(parts[1]); |
| | | if (readWriteEntityList.get(i) == null){ |
| | | ParamCollection.setParamValue("0"); |
| | | }else { |
| | | ParamCollection.setParamValue(readWriteEntityList.get(i).getValue().toString()); |
| | | } |
| | | ParamCollection.setSfcCode(SNCode); |
| | | ParamCollection.setParamName(list.get(i).getParameterSetName()); |
| | | ParamCollection.setParamUpper(list.get(i).getParamUpper()); |
| | | ParamCollection.setParamLower(list.get(i).getParamLower()); |
| | | ParamCollection.setUnit(list.get(i).getCollectParameterUnit()); |
| | | ParamCollection.setState("合格"); |
| | | ParamCollection.setType(list.get(i).getCollectParameterType()); |
| | | ParamCollection.setCollectionTime(new Date()); |
| | | ParamCollection.setWorkOrderNo(bsOrderScheduling.getOrderNo()); |
| | | daParamCollectionlist.add(ParamCollection); |
| | | } |
| | | } |
| | | daParamCollectionService.saveBeachDaParamCollection(daParamCollectionlist); |
| | | logger.info("{}发动机({})采集数据保存完成",SNCode,Node); |
| | | } |
| | | |
| | | Object ProductStatus = miloService.readFromOpcUa(parts[0] + "." + parts[1] + ".ProductStatus").getValue(); |
| | | String str1="合格" ; |
| | | if (ObjectUtil.isNotEmpty(ProductStatus)){ |
| | | logger.info("ProductStatus,{}",ProductStatus.toString()); |
| | | String productStatusString = ProductStatus.toString(); |
| | | if (productStatusString.contains("2") || productStatusString.contains("3")){ |
| | | str1="不合格"; |
| | | }else { |
| | | str1="合格"; |
| | | } |
| | | } |
| | | Long beatTime = 0L; |
| | | if (ObjectUtil.isNotEmpty(object)){ |
| | | String str = object.toString(); |
| | | beatTime = Float.valueOf(str).longValue(); |
| | | } |
| | | DaPassingStationCollection PassingStationCollection=new DaPassingStationCollection(); |
| | | PassingStationCollection.setSfcCode(SNCode); |
| | | PassingStationCollection.setProductCode(bsOrderScheduling.getModel()); |
| | | PassingStationCollection.setLocationCode(parts[1]); |
| | | PassingStationCollection.setOutboundTime(new Date()); |
| | | PassingStationCollection.setInboundTime(new Date(new Date().getTime()-beatTime*1000)); |
| | | PassingStationCollection.setCollectionTime(new Date()); |
| | | PassingStationCollection.setCreateTime(new Date()); |
| | | PassingStationCollection.setBeatTime(beatTime.toString()); |
| | | PassingStationCollection.setOutRsSign(str1); |
| | | PassingStationCollection.setWorkOrderNo(bsOrderScheduling.getOrderNo()); |
| | | passingStationCollectionServiceImpl.insertDaPassingStationCollection(PassingStationCollection); |
| | | logger.info("{}发动机({})过站数据保存完成",SNCode,Node); |
| | | |
| | | //更新工单状态 |
| | | if ("OP790".equals(parts[1])) { |
| | | //bsOrderScheduling.setReport20("0"); |
| | | bsOrderScheduling.setProductionStatus("3"); |
| | | bsOrderScheduling.setFinalAssemblyOfflineTime(new Date()); |
| | | }else if("OP050".equals(parts[1])){ |
| | | bsOrderScheduling.setReport10("0"); |
| | | bsOrderScheduling.setProductionStatus("2"); |
| | | bsOrderScheduling.setBoxClosingOnlineTime(new Date()); |
| | | }else if("OP120".equals(parts[1])){ |
| | | bsOrderScheduling.setReport20("0"); |
| | | bsOrderScheduling.setFinalAssemblyLaunchTime(new Date()); |
| | | bsOrderScheduling.setClosingBoxOfflineTime(new Date()); |
| | | } |
| | | bsOrderScheduling.setQualityStatus(str1); |
| | | bsOrderScheduling.setCurrentWorkstation(parts[1]); |
| | | bsOrderSchedulingService.updateBsOrderScheduling(bsOrderScheduling); |
| | | } |
| | | } |
| | | |
| | | |
| | | public String productNewFlag(String SNCode){ |
| | | String type; |
| | | if (SNCode.startsWith("280")){ |
| | | type = "280"; |
| | | } else if (SNCode.startsWith("380")){ |
| | | type = "380"; |
| | | }else { |
| | | type = "oldType"; |
| | | } |
| | | return type; |
| | | } |
| | | |
| | | public void tile2(String Node) throws Exception { |
| | | String[] parts = Node.split("[.]"); |
| | | Object SNCodeObject = miloService.readFromOpcUa(parts[0] + "." + parts[1] + ".Code").getValue(); |
| | | if (null != SNCodeObject) { |
| | | String SNCode = SNCodeObject.toString(); |
| | | String productNewFlag = productNewFlag(SNCode); |
| | | if ("380".equals(productNewFlag)){ |
| | | ProductNewPassStation passStation = new ProductNewPassStation(); |
| | | passStation.setSfcCode(SNCode); |
| | | List<ProductNewPassStation> productPassStationList = productNewPassStationService.getProductPassStationList(passStation); |
| | | if (CollUtil.isNotEmpty(productPassStationList)){ |
| | | ProductNewPassStation productNewPassStation = productPassStationList.get(0); |
| | | String boxCode = productNewPassStation.getBoxCode(); |
| | | String productType = productNewPassStation.getProductType(); |
| | | log.info("发送到OP040的页面数据productType,{}",productType); |
| | | log.info("发送到OP040的页面数据boxCode,{}",boxCode); |
| | | passingStationCollectionServiceImpl.sendMessage(productType+"*"+boxCode, "OP040"); |
| | | } |
| | | } else if ("280".equals(productNewFlag)){ |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | public void cleanForm(String Node) throws Exception { |
| | | String[] parts = Node.split("[.]"); |
| | | Object SNCodeObject = miloService.readFromOpcUa(parts[0] + "." + parts[1] + ".Code").getValue(); |
| | | if (ObjectUtils.isNotEmpty(SNCodeObject)){ |
| | | String snCode = SNCodeObject.toString(); |
| | | String s = productNewFlag(snCode); |
| | | if ("280".equals(s) || "380".equals(s)){ |
| | | log.info("发送到OP030的清除"); |
| | | passingStationCollectionServiceImpl.sendMessage("clean","OP030"); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | public void cleanForm040(String Node) throws Exception { |
| | | String[] parts = Node.split("[.]"); |
| | | Object SNCodeObject = miloService.readFromOpcUa(parts[0] + "." + parts[1] + ".Code").getValue(); |
| | | if (ObjectUtils.isNotEmpty(SNCodeObject)){ |
| | | String snCode = SNCodeObject.toString(); |
| | | String s = productNewFlag(snCode); |
| | | if ("280".equals(s) || "380".equals(s)){ |
| | | log.info("发送到OP040的页面清除"); |
| | | passingStationCollectionServiceImpl.sendMessage("clean*clean","OP040"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | public void cleanForm050(String Node) throws Exception { |
| | | String[] parts = Node.split("[.]"); |
| | | Object SNCodeObject = miloService.readFromOpcUa(parts[0] + "." + parts[1] + ".Code").getValue(); |
| | | if (ObjectUtils.isNotEmpty(SNCodeObject)){ |
| | | String snCode = SNCodeObject.toString(); |
| | | String s = productNewFlag(snCode); |
| | | if ("280".equals(s) || "380".equals(s)){ |
| | | ProductNewPassStation passStation = new ProductNewPassStation(); |
| | | passStation.setSfcCode(snCode); |
| | | List<ProductNewPassStation> productPassStationList = productNewPassStationService.getProductPassStationList(passStation); |
| | | if (CollUtil.isNotEmpty(productPassStationList)){ |
| | | productNewPassStationService.updatePassStationBySfcCode(snCode); |
| | | } |
| | | passingStationCollectionServiceImpl.sendMessage("clean*clean","OP050"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | public void cleanForm060(String Node) throws Exception { |
| | | String[] parts = Node.split("[.]"); |
| | | Object SNCodeObject = miloService.readFromOpcUa(parts[0] + "." + parts[1] + ".Code").getValue(); |
| | | if (ObjectUtils.isNotEmpty(SNCodeObject)){ |
| | | String snCode = SNCodeObject.toString(); |
| | | String s = productNewFlag(snCode); |
| | | if ("280".equals(s) || "380".equals(s)){ |
| | | passingStationCollectionServiceImpl.sendMessage("clean*clean","OP060"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | public void checkBoxRod(String Node) throws Exception { |
| | | String[] parts = Node.split("[.]"); |
| | | Object SNCodeObject = miloService.readFromOpcUa(parts[0] + "." + parts[1] + ".Code").getValue(); |
| | | if (null != SNCodeObject) { |
| | | String SNCode = SNCodeObject.toString(); |
| | | String s = productNewFlag(SNCode); |
| | | if ("280".equals(s) || "380".equals(s)){ |
| | | sendTo060(SNCode,parts); |
| | | } |
| | | } |
| | | } |
| | | |
| | | private void sendTo060(String SNCode, String[] parts) throws Exception { |
| | | String boxCode = ""; |
| | | String rodCode = ""; |
| | | ProductNewPassStation productNewPassStation = new ProductNewPassStation(); |
| | | productNewPassStation.setSfcCode(SNCode); |
| | | List<ProductNewPassStation> productPassStationList = productNewPassStationService.getProductPassStationList(productNewPassStation); |
| | | if (CollUtil.isNotEmpty(productPassStationList)){ |
| | | ProductNewPassStation passStation = productPassStationList.get(0); |
| | | boxCode = passStation.getBoxCode(); |
| | | rodCode = passStation.getRodCode(); |
| | | } |
| | | //配瓦校验 |
| | | passingStationCollectionServiceImpl.sendMessage(boxCode + "*" + rodCode + "*" + SNCode, parts[1]); |
| | | } |
| | | } |