From 6d313a4a6f9f9d7ea65ec50ab0d4491e595edb97 Mon Sep 17 00:00:00 2001 From: admin <15939171744@163.com> Date: 星期二, 15 十月 2024 09:47:26 +0800 Subject: [PATCH] -打印bug修改 --- jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java | 558 +++++++++++++++++++++++++++++++++---------------------- 1 files changed, 333 insertions(+), 225 deletions(-) diff --git a/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java b/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java index dbe46e9..da61a5e 100644 --- a/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java +++ b/jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java @@ -1,58 +1,76 @@ package com.jcdm.main.plcserver.sub; -import cn.hutool.core.date.DateUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.jcdm.common.utils.StringUtils; import com.jcdm.framework.websocket.WebSocketUsers; +import com.jcdm.main.constant.Constants; import com.jcdm.main.da.collectionParamConf.domain.DaCollectionParamConf; import com.jcdm.main.da.collectionParamConf.service.IDaCollectionParamConfService; 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.service.IDaPassingStationCollectionService; +import com.jcdm.main.da.testDeviceInterface.service.IDaTestDeviceInterfaceService; import com.jcdm.main.om.productionOrde.domain.OmProductionOrdeInfo; import com.jcdm.main.om.productionOrde.service.IOmProductionOrdeInfoService; -import com.jcdm.main.plcserver.conf.OPCElement; import com.jcdm.main.plcserver.util.TimeUtil; import com.jcdm.main.restful.factoryMes.service.RestfulService; import com.kangaroohy.milo.model.ReadWriteEntity; import com.kangaroohy.milo.runner.subscription.SubscriptionCallback; import com.kangaroohy.milo.service.MiloService; -import org.springframework.beans.factory.annotation.Autowired; +import lombok.extern.slf4j.Slf4j; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import javax.websocket.Session; import java.text.SimpleDateFormat; import java.util.*; +import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; - +@Slf4j @Component public class OPCUaSubscription implements SubscriptionCallback { - public SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + private static final Logger logger = LoggerFactory.getLogger("sys-user"); + public SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //鏂拌嚜鍔ㄥ伐绔� - public List<String> automaticList = Arrays.asList("OP280","OP310A","OP310B", "OP300A","OP300B", "OP320A","OP320B", "OP340A","OP340B", "OP350A","OP350B", "OP360","OP365","OP370", "OP390", "OP470"); + public List<String> automaticList = Arrays.asList("POP270", "POP281", "POP283", "POP285", "POP286", "POP290","OP365","POP300", "POP320", "POP400"); //閲囬泦妯$粍宸ヤ綅 ModuleCode - public List<String> moduleCodeList = Arrays.asList("OP300A","OP300B","OP320A","OP320B","OP340A","OP340B","OP365", "OP350A", "OP350B", "OP330"); - - //鍖哄垎妯$粍鍨嬪彿宸ヤ綅 - public List<String> distinguishingModules = Arrays.asList("OP300","OP310", "OP340", "OP350", "OP330"); + public List<String> moduleCodeList = Arrays.asList("POP281","POP282","POP283","POP285","OP365", "POP286", "POP284"); //鍖哄垎灏忚溅鐮� - public List<String> agvId = Arrays.asList("OP360", "OP390", "OP470","OP280"); + public List<String> agvId = Arrays.asList("POP290", "POP320", "POP400","POP270"); - - //鍖哄垎pack鍨嬪彿鐨勫伐浣� - public List<String> packIdList = Arrays.asList("OP280","OP360","OP390","OP470"); - + //娴嬭瘯璁惧鎵嬪姩宸ヤ綅 + public List<String> testList = Arrays.asList("POP360-1","POP360-2","POP360-3","POP360-4","POP410-1","POP410-2","POP410-3","POP370","POP420-1","POP420-2","POP420-3","POP420-4","POP420-5","POP420-6","POP282"); //绌虹殑 public List<String> nullList = Arrays.asList("OP250","OP260"); + +// //鏂拌嚜鍔ㄥ伐绔� +// public List<String> automaticList = Arrays.asList("OP280","OP310A","OP310B", "OP300A","OP300B", "OP320A","OP320B", "OP340A","OP340B", "OP350A","OP350B", "OP360","OP365","OP370", "OP390", "OP470"); +// +// //閲囬泦妯$粍宸ヤ綅 ModuleCode +// public List<String> moduleCodeList = Arrays.asList("OP300A","OP310A","OP310B","OP300B","OP320A","OP320B","OP340A","OP340B","OP365", "OP350A", "OP350B", "OP330"); +// +// //鍖哄垎灏忚溅鐮� +// public List<String> agvId = Arrays.asList("OP360", "OP390", "OP470","OP280"); +// +// //娴嬭瘯璁惧鎵嬪姩宸ヤ綅 +// public List<String> testList = Arrays.asList("OP430-1","OP430-2","OP430-3","OP430-4","OP480-1","OP480-2","OP480-3","OP440"); +// +// +// //绌虹殑 +// public List<String> nullList = Arrays.asList("OP250","OP260"); public static MiloService miloService; @@ -67,22 +85,28 @@ public static IOmProductionOrdeInfoService omProductionOrdeInfoService; + private static IDaTestDeviceInterfaceService daTestDeviceInterfaceService; + + public OPCUaSubscription(MiloService miloService, IDaPassingStationCollectionService daPassingStationCollectionService, IDaCollectionParamConfService collectionParamConfService, IDaParamCollectionService daParamCollectionService, - IOmProductionOrdeInfoService omProductionOrdeInfoService) { + IOmProductionOrdeInfoService omProductionOrdeInfoService, + IDaTestDeviceInterfaceService daTestDeviceInterfaceService) { OPCUaSubscription.miloService = miloService; this.daPassingStationCollectionService = daPassingStationCollectionService; OPCUaSubscription.collectionParamConfService = collectionParamConfService; OPCUaSubscription.daParamCollectionService = daParamCollectionService; OPCUaSubscription.omProductionOrdeInfoService = omProductionOrdeInfoService; + OPCUaSubscription.daTestDeviceInterfaceService = daTestDeviceInterfaceService; } @Override public void onSubscribe(String identifier, Object value) { + logger.info("鍦板潃锛�"+identifier+"鍊硷細"+value); try { if(null != value && Integer.valueOf(value.toString())!= 0) { String[] nodes = identifier.split("[.]"); @@ -91,118 +115,134 @@ String tab = nodes[2];//鏍囪 String tabVlaue = value.toString();//鍦板潃鍊� - //璇锋眰涓嬪彂SN鍙� - if (("RecordSN").equals(tab) && "1".equals(tabVlaue)) { - //鑾峰彇SN鍙锋柟娉� - String SNCode = getSNCode(); - - //涓嬪彂SN - String SNCodeAddress = thoroughfare + "." + device + ".SNCode"; - miloService.writeToOpcChar(ReadWriteEntity.builder().identifier(SNCodeAddress).value(SNCode).build()); - //涓嬪彂SN瀹屾垚 - String recordSNDoneAddress = thoroughfare + "." + device + ".RecordSNDone"; - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(recordSNDoneAddress).value(1).build()); - } - //璇锋眰璁板綍鏁版嵁 - else if (("RecordData").equals(tab)) { - String recordDataDoneValue = ""; - - if("1".equals(tabVlaue)){ - - //璇锋眰宸ュ崟 -// if(device.equals("OP230")){ -// getFactoryOrder("OP230"); -// } - - //鑷姩宸ヤ綅 - if(automaticList.stream().anyMatch(s -> s.equals(device))){ - //plc缁欐垜浠竴涓ā缁勭爜锛屾嬁妯$粍鐮佹牎楠屽嚭鍨嬪彿 - if(distinguishingModules.stream().anyMatch(s -> s.equals(device))) { - //璇绘ā缁勭爜 -// String moduleCode = miloService.readFromOpcUa(thoroughfare + "." + device + ".ModuleCode").getValue().toString(); -// String productTye = thoroughfare + "." + device + ".ProductType"; -// if (null != moduleCode && moduleCode.length() == 24) { -// miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(productTye).value(Integer.valueOf(moduleCode.substring(7, 8))).build()); -// //杩涚珯淇濆瓨鏁版嵁 -//// inSaveDate(thoroughfare,device) -// //璁板綍鏁版嵁瀹屾垚 - String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; -// - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(11).build()); -// -// -// //璇锋眰宸ュ崟 -// } else { -// miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(12).build()); -// } - }else { - if(agvId.stream().anyMatch(s -> s.equals(device))){ - String agvId = miloService.readFromOpcUa(thoroughfare + "." + device + ".AGVID").getValue().toString(); - String PACKCode = thoroughfare + "." + device + ".MPACKCode"; - if (null != agvId) { - OmProductionOrdeInfo one = omProductionOrdeInfoService.getOne(new LambdaQueryWrapper<OmProductionOrdeInfo>().eq(OmProductionOrdeInfo::getTrolleyYard, agvId)); - String packId = one.getProductNum(); - miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(PACKCode).value(packId).build()); - } else { - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(12).build()); - } - } - //pack 濡傛灉鍖哄垎鍨嬪彿鐨勮瘽灏辫澶勭悊 - //璁板綍鏁版嵁瀹屾垚 - String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; - - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(11).build()); - } - }else { - //鎵嬪姩宸ヤ綅澶勭悊閫昏緫 -// if(automaticList.stream().noneMatch(s -> s.equals(device))){ - //缁欏墠绔彂宸ヤ欢鍒颁綅淇″彿 - WebSocketUsers.sendMessageToUserByText(map.get(device), "IN"); -// } - //鏍¢獙鍚堟牸涓嶅悎鏍煎鏋滃悎鏍煎彲浠ヨ繘绔� - String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; - - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(11).build()); - } - - - }else if("2".equals(tabVlaue)){ - if(automaticList.stream().anyMatch(s -> s.equals(device))){ - //鑷姩宸ヤ綅 - //鍑虹珯淇濆瓨鏁版嵁 - recordDataDoneValue = outSaveDate(thoroughfare,device); - //璁板綍鏁版嵁瀹屾垚 - String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; - miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(Integer.valueOf(recordDataDoneValue)).build()); - }else { - //鎵嬪姩宸ヤ綅 - WebSocketUsers.sendMessageToUserByText(map.get(device), "END"); - } - }else { - System.out.println("^"); - } - } - //淇濆瓨鎷х揣鏁版嵁 - else if (("AngleResult").equals(tab)) { - if("1".equals(tabVlaue)||"2".equals(tabVlaue)){ - List<String> list = new ArrayList<>(); - String[] suffixes = {"Torque", "Angle", "TorqueResult", "AngleResult"}; - - for (String suffix : suffixes) { - String string = thoroughfare + "." + device + "." + suffix; - list.add(string); - } - List<ReadWriteEntity> list1 = miloService.readFromOpcUa(list); - List<Object> collect = list1.stream().map(ReadWriteEntity::getValue).collect(Collectors.toList()); - String joinedString = String.join(",", collect.toString()); - WebSocketUsers.sendMessageToUserByText(map.get(device), TightenTheConversionOkNg(joinedString)); - } - } + CompletableFuture<Void> cp1 = CompletableFuture.runAsync(() -> { + subHandle(thoroughfare,device,tab,tabVlaue); + }); } } catch (Exception e) { - + logger.info("璁㈤槄鏂规硶鎶ラ敊:{}"+e.getMessage()); + logger.error("璁㈤槄鏂规硶鎶ラ敊",e); } } + + public void subHandle(String thoroughfare,String device,String tab,String tabVlaue){ + try { + String prefix = thoroughfare + "." + device + "."; + if (("RecordData").equals(tab)) { + String recordDataDoneValue = ""; + + if("1".equals(tabVlaue)){ + //鑷姩宸ヤ綅 + if(automaticList.stream().anyMatch(s -> s.equals(device))){ + //plc缁欐垜浠竴涓ā缁勭爜锛屾嬁妯$粍鐮佹牎楠屽嚭鍨嬪彿 + if(moduleCodeList.stream().anyMatch(s -> s.equals(device))) { + String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; + //璇绘ā缁勭爜 + Object moduleCode = miloService.readFromOpcUa(thoroughfare + "." + device + ".ModuleCode").getValue(); + if(device.equals("OP365")){ +// Object moduleCodeA = miloService.readFromOpcUa(thoroughfare + "." + device + ".ModuleCodeA").getValue(); +// Object moduleCodeB = miloService.readFromOpcUa(thoroughfare + "." + device + ".ModuleCodeB").getValue(); +// if(moduleCodeA!=null && moduleCodeB!=null){ + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(11).build()); +// }else { +// miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(12).build()); +// } + }else { + if(moduleCode!=null){ + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(11).build()); + }else { + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(12).build()); + } + } + }else { + if(agvId.stream().anyMatch(s -> s.equals(device))){ + Object agvIdObject = miloService.readFromOpcUa(thoroughfare + "." + device + ".AGVID").getValue(); + //agvId 灏忚溅鐮佹槸鍚︿负绌� + if(agvIdObject!=null){ + String PACKCode = thoroughfare + "." + device + ".MPACKCode"; + OmProductionOrdeInfo one = omProductionOrdeInfoService.getOne(new LambdaQueryWrapper<OmProductionOrdeInfo>().eq(OmProductionOrdeInfo::getTrolleyYard, agvIdObject.toString())); + //灏忚溅鐮佹煡鎵惧伐鍗曟槸鍚︿负绌� + if(one!=null){ + String packId = one.getProductNum(); + String workOrderNo = one.getWorkOrderNo(); + if(!one.getSoftwareVersionCode().equals("") &&one.getSoftwareVersionCode()!=null){ + Integer packModel = Integer.valueOf(one.getSoftwareVersionCode()); + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(prefix + "MProductType").value(packModel).build()); + } + miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(PACKCode).value(packId).build()); + miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(prefix + "MWorkOrderNumber").value(workOrderNo).build()); + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(11).build()); + }else { + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(12).build()); + } + }else { + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(12).build()); + } + + }else { + String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; + Object packCodeObject = miloService.readFromOpcUa(thoroughfare + "." + device + ".PACKCode").getValue(); + if(packCodeObject!=null){ + //pack 濡傛灉鍖哄垎鍨嬪彿鐨勮瘽灏辫澶勭悊 + //璁板綍鏁版嵁瀹屾垚 + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(11).build()); + }else { + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(12).build()); + } + } + } + }else { + //鎵嬪姩宸ヤ綅澶勭悊閫昏緫 + WebSocketUsers.sendMessageToUserByText(map.get(device), "IN"); + String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(11).build()); + } + + + }else if("2".equals(tabVlaue)){ + if(automaticList.stream().anyMatch(s -> s.equals(device))){ + //鑷姩宸ヤ綅 + //鍑虹珯淇濆瓨鏁版嵁 + outSaveDate(thoroughfare,device); + //璁板綍鏁版嵁瀹屾垚 + /*String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(Integer.valueOf(recordDataDoneValue)).build());*/ + }else { + //鎵嬪姩宸ヤ綅娴嬭瘯宸ヤ綅鍑虹珯 + WebSocketUsers.sendMessageToUserByText(map.get(device), "END"); + if(testList.stream().anyMatch(s -> s.equals(device))){ + String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(21).build()); + } + + + } + }else { + System.out.println("^"); + } + } + //淇濆瓨鎷х揣鏁版嵁 + else if (("TighteningFrequency").equals(tab)) { + if(!"0".equals(tabVlaue)){ + List<String> list = new ArrayList<>(); + String[] suffixes = {"Torque", "Angle", "TorqueResult", "AngleResult"}; + + for (String suffix : suffixes) { + String string = thoroughfare + "." + device + "." + suffix; + list.add(string); + } + List<ReadWriteEntity> list1 = miloService.readFromOpcUa(list); + List<Object> collect = list1.stream().map(ReadWriteEntity::getValue).collect(Collectors.toList()); + String joinedString = String.join(",", collect.toString()); + WebSocketUsers.sendMessageToUserByText(map.get(device), TightenTheConversionOkNg(joinedString)); + logger.info("璇诲彇鍒板伐浣峽}鐨凷caner鏁版嵁锛歿}",device,TightenTheConversionOkNg(joinedString)); + } + } + }catch (Exception e){ + logger.error("璁㈤槄鏂规硶鎶ラ敊",e); + } + } + @@ -217,94 +257,74 @@ /** * 鍑虹珯淇濆瓨鏁版嵁 */ - public String outSaveDate(String thoroughfare,String device) { + public void outSaveDate(String thoroughfare,String device) { String snCode = ""; String result = ""; String read = thoroughfare + "." + device + "."; try { - if(nullList.stream().noneMatch(s -> s.equals(device))){ + if(nullList.stream().noneMatch(s -> s.equals(device))){//鍒犻櫎鈥︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�︹�� if(moduleCodeList.stream().anyMatch(s -> s.equals(device))){ read = read + "ModuleCode"; }else { read = read + "PACKCode"; } } - snCode = miloService.readFromOpcUa(read).getValue().toString(); - - if(null == snCode || "".equals(snCode)){ - result = "22"; - }else{ - - String workOrderNo = ""; - String productCode = ""; - //2銆佷繚瀛樿繃绔欓噰闆嗘暟鎹� - Object orderNumberObject = miloService.readFromOpcUa(thoroughfare + "." + device + "." + "WorkOrderNumber").getValue(); - if(orderNumberObject!=null){ - workOrderNo = orderNumberObject.toString(); + if(device.equals("OP365")){ + try { + saveStationInfo365(thoroughfare,device); + }catch (Exception e){ + e.printStackTrace(); } + }else { + snCode = miloService.readFromOpcUa(read).getValue().toString(); - Object productCodeObject = miloService.readFromOpcUa(thoroughfare + "." + device + "." + "ProductType").getValue(); - if(productCodeObject!=null){ - productCode = productCodeObject.toString(); + if(null == snCode || "".equals(snCode)){ + String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(Integer.valueOf("22")).build()); + }else{ + + String workOrderNo = ""; + String productCode = ""; + //2銆佷繚瀛樿繃绔欓噰闆嗘暟鎹� + Object orderNumberObject = miloService.readFromOpcUa(thoroughfare + "." + device + "." + "WorkOrderNumber").getValue(); + if(orderNumberObject!=null){ + workOrderNo = orderNumberObject.toString(); + } + + Object productCodeObject = miloService.readFromOpcUa(thoroughfare + "." + device + "." + "ProductType").getValue(); + if(productCodeObject!=null){ + productCode = productCodeObject.toString(); + } + + saveStationInfo(snCode,thoroughfare,device,workOrderNo,productCode); + //3銆佷繚瀛樺弬鏁伴噰闆嗘暟鎹� + List<DaParamCollection> daParamCollectionList = SaveParamData(snCode,thoroughfare,device,workOrderNo,productCode); + + //濡傛灉鏄湯灏惧伐绔欒鎶ュ伐 + if(device.equals("POP430")){ + RestfulService.getWorkReportResultFeedback(snCode,device,format.format(new Date())); + //1銆佹洿鏂板伐鍗曚俊鎭� + updateOrderInfo(snCode); + } + + try{ + daParamCollectionService.automaticWorkstationPushGeelycvMesFeedback(snCode,device,daParamCollectionList); + }catch (Exception e){ + } } - - saveStationInfo(snCode,thoroughfare,device,workOrderNo,productCode); - //3銆佷繚瀛樺弬鏁伴噰闆嗘暟鎹� - SaveParamData(snCode,thoroughfare,device,workOrderNo,productCode); - - //濡傛灉鏄湯灏惧伐绔欒鎶ュ伐 - if(device.equals("OP500")){ - RestfulService.getWorkReportResultFeedback(snCode,device,format.format(new Date())); - //1銆佹洿鏂板伐鍗曚俊鎭� - updateOrderInfo(snCode); - } - - result = "21"; } - }catch (Exception e) { - System.out.println(e.getMessage()); + logger.error("鍑虹珯淇濆瓨鏁版嵁寮傚父锛�"+e); } - return result; } - - -// /** -// * 鍑虹珯淇濆瓨鏁版嵁 -// */ -// public String outSaveDate(String thoroughfare,String device) { -// String result = ""; -// try { -// //璇诲彇SNCode -// String PACKCode = thoroughfare + "." + device + ".PACKCode"; -// Object PACKCodeObject = miloService.readFromOpcUa(PACKCode).getValue(); -// if(null == PACKCodeObject || "".equals(PACKCodeObject)){ -// result = "22"; -// }else{ -// String PACKCodeParam = PACKCodeObject.toString(); -// //1銆佹洿鏂板伐鍗曚俊鎭� -// //updateOrderInfo(); -// //2銆佷繚瀛樿繃绔欓噰闆嗘暟鎹� -// saveStationInfo(PACKCodeParam,thoroughfare,device); -// //3銆佷繚瀛樺弬鏁伴噰闆嗘暟鎹� -// SaveParamData(PACKCodeParam,thoroughfare,device,"",""); -// -// result = "21"; -// -// } -// -// }catch (Exception e) { -// -// } -// return result; -// } /** * 淇濆瓨杩囩珯閲囬泦 */ public void saveStationInfo(String packCode,String thoroughfare,String device,String workOrderNo,String productCode) throws Exception { + logger.info("杩涘叆宸ヤ綅{}-鏂规硶saveStationInfo",device); SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US); sdf.setTimeZone(TimeZone.getTimeZone("GMT+8")); // CST閫氬父琛ㄧず涓浗鏍囧噯鏃堕棿锛屽嵆涓滃叓鍖� String prefix = thoroughfare+"."+device+"."; @@ -319,17 +339,20 @@ daPassingStationCollection.setLocationCode(device); String strt = TimeUtil.stringProcessing(startTime); String end = TimeUtil.stringProcessing(stopTime); - daPassingStationCollection.setInboundTime(sdf.parse(strt));//鍏ョ珯鏃堕棿 - daPassingStationCollection.setOutboundTime(sdf.parse(end));//鍑虹珯鏃堕棿 + daPassingStationCollection.setInboundTime(format.parse(TimeUtil.test(strt)));//鍏ョ珯鏃堕棿 + daPassingStationCollection.setOutboundTime(format.parse(TimeUtil.test(end)));//鍑虹珯鏃堕棿 daPassingStationCollection.setOutRsSign(stationStatus);//鍑虹珯鏄惁鍚堟牸 daPassingStationCollectionService.insertDaPassingStationCollection(daPassingStationCollection); + logger.info("缁撴潫宸ヤ綅{}-鏂规硶saveStationInfo",device); } - public static void SaveParamData(String packCode,String thoroughfare,String device,String workOrderNo,String productType) throws Exception { + public static List<DaParamCollection> SaveParamData(String packCode,String thoroughfare,String device,String workOrderNo,String productType) throws Exception { + logger.info("杩涘叆宸ヤ綅{}-鏂规硶SaveParamData",device); List<DaCollectionParamConf> list; DaCollectionParamConf daCollectionParamConf = new DaCollectionParamConf(); daCollectionParamConf.setGatherAddress(thoroughfare+ "." + device); list = collectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf); + List<DaParamCollection> daParamCollectionlist = new ArrayList<>(); List<String> nodeIdList = list.stream().map(info -> { String nodeid = info.getGatherAddress(); @@ -338,45 +361,51 @@ if(!nodeIdList.isEmpty()){ List<ReadWriteEntity> readWriteEntityList = miloService.readFromOpcUa(nodeIdList); - for (int i = 0; i < readWriteEntityList.size(); i++) { + for(int i=0;i<nodeIdList.size();i++){ if(readWriteEntityList.get(i).getValue() == null){ readWriteEntityList.get(i).setValue(" "); } - } - List<DaParamCollection> daParamCollectionlist = new ArrayList<>(); - for(int i=0;i<nodeIdList.size();i++){ - if(!readWriteEntityList.get(i).getValue().toString().equals("0.0")){ - String tt = readWriteEntityList.get(i).getValue().toString(); - DaParamCollection ParamCollection = new DaParamCollection(); - ParamCollection.setParamCode(list.get(i).getCollectParameterId()); - ParamCollection.setLocationCode(device); - if(tt.contains("Time")){ - String str = TimeUtil.getTimestamp(TimeUtil.stringProcessing(tt)); - ParamCollection.setParamValue(str); - }else { - ParamCollection.setParamValue(readWriteEntityList.get(i).getValue().toString()); - } - ParamCollection.setSfcCode(packCode); - 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()); - ParamCollection.setWorkOrderNo(workOrderNo); - ParamCollection.setProductCode(productType); - daParamCollectionlist.add(ParamCollection); -// daParamCollectionService.insertDaParamCollection(ParamCollection); + String paramValue = readWriteEntityList.get(i).getValue().toString(); + DaParamCollection ParamCollection = new DaParamCollection(); + ParamCollection.setParamCode(list.get(i).getCollectParameterId()); + ParamCollection.setLocationCode(device); + if(paramValue.contains("Time")){ + ParamCollection.setParamValue(TimeUtil.test(TimeUtil.stringProcessing(paramValue))); + }else { + ParamCollection.setParamValue(readWriteEntityList.get(i).getValue().toString()); } + ParamCollection.setSfcCode(packCode); + if(device.contains("POP290")){ + String node = nodeIdList.get(i); + Object value = miloService.readFromOpcUa("PACK.POP290.ModuleSNCode"+node.charAt(node.length()-1)).getValue(); + if(value!=null){ + ParamCollection.setModuleCode(value.toString()); + } + } + 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.setType(list.get(i).getCollectParameterType()); + ParamCollection.setCollectionTime(new Date()); + ParamCollection.setWorkOrderNo(workOrderNo); + ParamCollection.setProductCode(productType); + daParamCollectionlist.add(ParamCollection); } - daParamCollectionService.saveBeachDaParamCollection(daParamCollectionlist); } - addBaseData(workOrderNo,productType,device,packCode); - + String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(Integer.valueOf("21")).build()); + logger.info("缁欏伐浣峽}鍐欎簡21",device); + daParamCollectionService.saveBeachDaParamCollection(daParamCollectionlist); + List<DaParamCollection> baseDataList = addBaseData(workOrderNo,productType,device,packCode); + for (int i = 0; i < baseDataList.size(); i++){ + daParamCollectionlist.add(baseDataList.get(i)); + } + logger.info("缁撴潫宸ヤ綅{}-鏂规硶SaveParamData",device); + return daParamCollectionlist; } - public static void addBaseData(String workOrderNo,String productCode,String locationCode,String packCode){ + public static List<DaParamCollection> addBaseData(String workOrderNo,String productCode,String locationCode,String packCode){ Map<String, String> map = new HashMap<>(); map.put("GC", "鍗楁禂宸ュ巶"); map.put("CXBH", "Pack绾�"); @@ -399,6 +428,7 @@ confList.add(saveData); }); daParamCollectionService.insertBatch(confList); + return confList; } public static void getFactoryOrder(String locationCode){ @@ -443,13 +473,22 @@ try { value = Float.parseFloat(part); // 灏濊瘯灏嗗瓧绗︿覆杞崲涓烘诞鐐规暟 String replacement; - if (value == 1f) { + if(i<2){ + replacement = part; + }else{ + if (value == 1f) { + replacement = "OK"; + } else{ + replacement = "NG"; + } + } + /* if (value == 1f) { replacement = "OK"; } else if (value == 2f) { replacement = "NG"; } else { replacement = part; // 濡傛灉涓嶆槸1鎴�2锛屽垯淇濇寔涓嶅彉 - } + }*/ sb.append(replacement); if (i < parts.length - 1) { sb.append(','); // 娣诲姞閫楀彿锛堥櫎浜嗘渶鍚庝竴涓厓绱狅級 @@ -466,4 +505,73 @@ return sb.toString(); } + + /** + * 鏍¢獙鏄惁瀛樺湪NG + * @param packCode sfcCode + * @return boolean + */ + public boolean checkIsNG(String packCode,String modelCode){ + List<DaPassingStationCollection> list = daPassingStationCollectionService.list(new LambdaQueryWrapper<DaPassingStationCollection>() + .eq(StrUtil.isNotBlank(packCode),DaPassingStationCollection::getSfcCode, packCode) + .eq(DaPassingStationCollection::getOutRsSign, Constants.UN_PASS)); + return CollUtil.isEmpty(list); + } + + /** + * 淇濆瓨杩囩珯閲囬泦 + */ + public void saveStationInfo365(String thoroughfare,String device) throws Exception { + String RecordDataDoneAddress = thoroughfare + "." + device + ".RecordDataDone"; +// String prefix = thoroughfare+"."+device+"."; +// List<DaPassingStationCollection> passingStationCollections = new ArrayList<>(); +// String ModuleCodeA = ""; +// String ModuleCodeB = ""; +// String StationStatusA = ""; +// String StationStatusB = ""; +// +// Object objectModuleCodeA = miloService.readFromOpcUa(prefix + "ModuleCodeA").getValue(); +// Object objectModuleCodeB = miloService.readFromOpcUa(prefix + "ModuleCodeB").getValue(); +// Object objectStationStatusA = miloService.readFromOpcUa(prefix + "StationStatusA").getValue(); +// Object objectStationStatusB = miloService.readFromOpcUa(prefix + "StationStatusB").getValue(); +// +// if(ObjectUtil.isNotNull(objectModuleCodeA) && ObjectUtil.isNotNull(objectStationStatusA) && ObjectUtil.isNotNull(objectModuleCodeB) && ObjectUtil.isNotNull(objectStationStatusB)){ +// ModuleCodeA = objectModuleCodeA.toString(); +// ModuleCodeB = objectModuleCodeB.toString(); +// StationStatusA = objectStationStatusA.toString(); +// StationStatusB = objectStationStatusB.toString(); +// +// String[] modeles = {ModuleCodeA,ModuleCodeB}; +// String[] StationStatus = {StationStatusA,StationStatusB}; +// +// String startTime = miloService.readFromOpcUa(prefix + "StartTime").getValue().toString(); +// String stopTime = miloService.readFromOpcUa(prefix + "StopTime").getValue().toString(); +// for (int i = 0; i < 2; i++) { +// DaPassingStationCollection daPassingStationCollection = new DaPassingStationCollection(); +// String strt = TimeUtil.stringProcessing(startTime); +// String end = TimeUtil.stringProcessing(stopTime); +// daPassingStationCollection.setInboundTime(format.parse(TimeUtil.test(strt)));//鍏ョ珯鏃堕棿 +// daPassingStationCollection.setOutboundTime(format.parse(TimeUtil.test(end)));//鍑虹珯鏃堕棿 +// daPassingStationCollection.setSfcCode(modeles[i]); +// daPassingStationCollection.setLocationCode(device); +// daPassingStationCollection.setOutRsSign(StationStatus[i]);//鍑虹珯鏄惁鍚堟牸 +// passingStationCollections.add(daPassingStationCollection); +// } +// daPassingStationCollectionService.saveBeachDaPassingStationCollection(passingStationCollections); + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(21).build()); +// logger.info("宸ヤ綅{}鍥炲21",device); +// +// }else { +// miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(RecordDataDoneAddress).value(22).build()); +// } + } + + private static void writeToOpcShort(String identifier, short value) { + try { + miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(identifier).value(value).build()); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } -- Gitblit v1.9.3