From 51eb318f6df9ebc7d1ff47522e33b2ee7cea1ba8 Mon Sep 17 00:00:00 2001
From: hdy <1105738590@qq.com>
Date: 星期日, 09 三月 2025 16:30:44 +0800
Subject: [PATCH] 修改

---
 billion-main/src/main/java/com/billion/main/plcServer/sub/OPCUaSubscription.java |  103 +++++++++++++++++++++++++++++----------------------
 1 files changed, 58 insertions(+), 45 deletions(-)

diff --git a/billion-main/src/main/java/com/billion/main/plcServer/sub/OPCUaSubscription.java b/billion-main/src/main/java/com/billion/main/plcServer/sub/OPCUaSubscription.java
index 00ed36a..8d3663b 100644
--- a/billion-main/src/main/java/com/billion/main/plcServer/sub/OPCUaSubscription.java
+++ b/billion-main/src/main/java/com/billion/main/plcServer/sub/OPCUaSubscription.java
@@ -1,7 +1,6 @@
 package com.billion.main.plcServer.sub;
 
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
-import com.billion.common.utils.StringUtils;
 import com.billion.main.bs.domain.BsBomChildInfo;
 import com.billion.main.bs.service.IBsBomChildInfoService;
 import com.billion.main.constant.Constants;
@@ -24,7 +23,9 @@
 import com.kangaroohy.milo.service.MiloService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
+import com.billion.main.plcServer.util.TimeUtil;
 
+import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.List;
@@ -33,6 +34,8 @@
 @Slf4j
 @Component
 public class OPCUaSubscription implements SubscriptionCallback {
+
+    public static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     public static MiloService miloService;
     public IDaParamCollectionService daParamCollectionService;
     public IDaStationCollectionService daStationCollectionService;
@@ -89,12 +92,12 @@
             if (Constants.RecordData.equals(tab)){
                 //宸ョ珯浜や簰鍒濆鍖�
                 if (Constants.ZERO.equals(valueString)){
-                    miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value("0").build());
+                    miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(0).build());
                 //璇锋眰杩涚珯
                 } else if (Constants.ONE.equals(valueString)){
                     //1.1//棣栧伐绔�
                     if(Constants.ONLINE.contains(device)){
-                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value("11").build());
+                        miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(11).build());
                     }
                     //闄ら宸ョ珯鎵�鏈夊伐绔�
                     else if(Constants.PLC1.contains(device) ||
@@ -106,7 +109,7 @@
                         //鏍¢獙SFCCode鏄惁瀛樺湪
                         Object SFCCode = miloService.readFromOpcUa(thoroughfare + "." + device + ".SFCCode").getValue();
                         if (SFCCode == null ) {
-                            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value("23").build());
+                            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(23).build());
                         } else {
                             OmOrderScheduling omOrderScheduling = new OmOrderScheduling();
                             List<OmOrderScheduling> resultList = omOrderSchedulingService.selectOmOrderSchedulingList(omOrderScheduling);
@@ -116,7 +119,7 @@
                             bsbomChildInfo.setBomCode(resultList.get(0).getWorkOrderNo());
                             //涓嬪彂閰嶆柟
                             formula(thoroughfare, device, bsbomChildInfo);
-                            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value("11").build());
+                            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(11).build());
                         }
                     }
                 //鍑虹珯淇濆瓨鏁版嵁
@@ -129,7 +132,7 @@
                         Object workOrderNumber = miloService.readFromOpcUa(thoroughfare + "." + device + ".WorkOrderNumber").getValue();
                         Object nowQty = miloService.readFromOpcUa(thoroughfare + "." + device + ".PalletID").getValue();
                         omOrderScheduling.setWorkOrderNo(workOrderNumber.toString());
-                        omOrderScheduling.setNowQty((Long) nowQty);
+                        omOrderScheduling.setNowQty(nowQty.toString());
                         omOrderScheduling.setSfcCode(SFCCode.toString());
                         //鎵樼洏缁戝畾SFCCode鍜屽伐鍗曞拰浜х嚎
                         if(Constants.OP005.equals(device)){
@@ -140,7 +143,7 @@
                         }
                         omOrderSchedulingService.insertOmOrderScheduling(omOrderScheduling);
                     }else if(Constants.OFFLINE.contains(device)){
-                        if(Constants.C070.equals(device)){
+                        if(Constants.C060.equals(device)){
                             omOrderScheduling.setRemarks("Head");
                             omOrderScheduling.setSfcCode(SFCCode.toString());
                             List<OmOrderScheduling> omOrderSchedulingList = omOrderSchedulingService.selectOmOrderSchedulingList(omOrderScheduling);
@@ -175,7 +178,7 @@
                         Object workOrderNumber = miloService.readFromOpcUa(thoroughfare + "." + device + ".WorkOrderNumber").getValue();
                         Object nowQty = miloService.readFromOpcUa(thoroughfare + "." + device + ".PalletID").getValue();
                         omOrderScheduling.setWorkOrderNo(workOrderNumber.toString());
-                        omOrderScheduling.setNowQty((Long) nowQty);
+                        omOrderScheduling.setNowQty(nowQty.toString());
                         omOrderScheduling.setSfcCode(SFCCode.toString());
                         omOrderScheduling.setRemarks("Pre");
                         omOrderSchedulingService.insertOmOrderScheduling(omOrderScheduling);
@@ -194,50 +197,54 @@
                     //鏌ヨdescriptive瀛楁绛変簬1鐨勯噰闆嗛」淇濆瓨鍒版壂鐮佷繚瀛樺埌da_material_collection琛ㄩ噷
                     DaCollectionParamConf daCollectionParamConf1 = new DaCollectionParamConf();
                     daCollectionParamConf1.setProcessesCode(device);
-                    daCollectionParamConf1.setDescriptive("1");
+                    daCollectionParamConf1.setDescriptive("3");
                     List<DaCollectionParamConf> daCollectionParamConfList1 = daCollectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf1);
                     for (DaCollectionParamConf conf : daCollectionParamConfList1) {
                         String gatherAddress = conf.getGatherAddress();
                         Object valueObj = miloService.readFromOpcUa(gatherAddress).getValue(); // 鑾峰彇鍘熷鍊煎璞♀��:ml-citation{ref="4" data="citationList"}
-                        if (valueObj == null || StringUtils.isEmpty(valueObj.toString())) {
-                            log.warn("閲囬泦鍦板潃{}杩斿洖绌哄�硷紝璺宠繃瀛樺偍", gatherAddress);
-                            continue; // 缁堟褰撳墠寰幆杩唬鈥�:ml-citation{ref="1,2" data="citationList"}
+                        if (valueObj != null ) {
+                            DaMaterialCollection materialCollection = new DaMaterialCollection();
+                            materialCollection.setSfcCode(SFCCode.toString());
+                            materialCollection.setLocationCode(device);
+                            materialCollection.setParamName(conf.getParameterSetName());
+                            materialCollection.setParamValue((String) miloService.readFromOpcUa(gatherAddress).getValue());
+                            materialCollection.setCollectTime(new Date());
+                            daMaterialCollectionService.insertDaMaterialCollection(materialCollection);
                         }
-                        DaMaterialCollection materialCollection = new DaMaterialCollection();
-                        materialCollection.setSfcCode(SFCCode.toString());
-                        materialCollection.setLocationCode(device);
-                        materialCollection.setParamName(conf.getParameterSetName());
-                        materialCollection.setParamValue((String) miloService.readFromOpcUa(gatherAddress).getValue());
-                        materialCollection.setCollectTime(new Date());
-                        daMaterialCollectionService.insertDaMaterialCollection(materialCollection);
                     }
                     //鏌ヨdescriptive瀛楁绛変簬2鐨勯噰闆嗛」淇濆瓨鍒版壂鐮佷繚瀛樺埌da_param_collection琛ㄩ噷
                     DaCollectionParamConf daCollectionParamConf2 = new DaCollectionParamConf();
                     daCollectionParamConf2.setProcessesCode(device);
-                    daCollectionParamConf2.setDescriptive("2");
+                    daCollectionParamConf2.setDescriptive("4");
                     List<DaCollectionParamConf> daCollectionParamConfList2 = daCollectionParamConfService.selectDaCollectionParamConfList(daCollectionParamConf2);
                     for (DaCollectionParamConf conf : daCollectionParamConfList2) {
                         String gatherAddress = conf.getGatherAddress();
                         Object valueObj = miloService.readFromOpcUa(gatherAddress).getValue(); // 鑾峰彇鍘熷鍊煎璞♀��:ml-citation{ref="4" data="citationList"}
-                        if (valueObj == null || StringUtils.isEmpty(valueObj.toString())) {
-                            log.warn("閲囬泦鍦板潃{}杩斿洖绌哄�硷紝璺宠繃瀛樺偍", gatherAddress);
-                            continue; // 缁堟褰撳墠寰幆杩唬鈥�:ml-citation{ref="1,2" data="citationList"}
+                        if (valueObj != null ) {
+                            DaParamCollection paramCollection = new DaParamCollection();
+                            paramCollection.setSfcCode(SFCCode.toString());
+                            paramCollection.setLocationCode(device);
+                            paramCollection.setParamName(conf.getParameterSetName());
+                            paramCollection.setParamValue((String) miloService.readFromOpcUa(gatherAddress).getValue());
+                            paramCollection.setCollectionTime(new Date());
+                            daParamCollectionService.insertDaParamCollection(paramCollection);
                         }
-                        DaParamCollection paramCollection = new DaParamCollection();
-                        paramCollection.setSfcCode(SFCCode.toString());
-                        paramCollection.setLocationCode(device);
-                        paramCollection.setParamName(conf.getParameterSetName());
-                        paramCollection.setParamValue((String) miloService.readFromOpcUa(gatherAddress).getValue());
-                        paramCollection.setCollectionTime(new Date());
-                        daParamCollectionService.insertDaParamCollection(paramCollection);
                     }
                     DaStationCollection daStationCollection = new DaStationCollection();
                     daStationCollection.setLocationCode(device);
                     daStationCollection.setSfcCode(SFCCode.toString());
-                    daStationCollection.setInboundTime((Date) miloService.readFromOpcUa(thoroughfare + "." + device + ".StartTime").getValue());
-                    daStationCollection.setOutboundTime((Date) miloService.readFromOpcUa(thoroughfare + "." + device + ".StopTime").getValue());
+                    Object StationStatus = miloService.readFromOpcUa(thoroughfare + "." + device + ".StationStatus").getValue();
+                    Date startTime = new Date();
+                    ReadWriteEntity startTimeRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StartTime");//杩涚珯鏃堕棿
+                    startTime = format.parse(TimeUtil.test(TimeUtil.stringProcessing(startTimeRead.getValue().toString())));
+                    daStationCollection.setInboundTime( startTime);
+                    Date stopTime = new Date();
+                    ReadWriteEntity stopTimeRead = miloService.readFromOpcUa(thoroughfare + "." + device + ".StopTime");//杩涚珯鏃堕棿
+                    stopTime = format.parse(TimeUtil.test(TimeUtil.stringProcessing(stopTimeRead.getValue().toString())));
+                    daStationCollection.setOutboundTime( stopTime);
+                    daStationCollection.setStatus(StationStatus.toString());
                     daStationCollectionService.insertDaStationCollection(daStationCollection);
-                    miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value("21").build());
+                    miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".RecordDataDone").value(21).build());
                 }
             }
         }
@@ -251,7 +258,7 @@
     try {
         if (Constants.WorkOrderRequest.equals(tab)) {
             if (Constants.ZERO.equals(valueString)) {
-                miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value("0").build());
+                miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value(0).build());
             }else if (Constants.ONE.equals(valueString)){
                 if (Constants.OP005.equals(device)){
                     // 鏌ヨ鏁版嵁搴撹幏鍙栫鍚堟潯浠剁殑璁㈠崟淇℃伅
@@ -260,7 +267,6 @@
                         //鍒ゆ柇褰撳墠涓嬪彂鏁伴噺鏄惁婊¤冻璁″垝鏁伴噺
                             //鏇存柊宸ュ崟鐘舵��
                             miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderNumber").value(getBodyOrder.getWorkOrderNo()).build());
-                            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ProductionPlan").value(String.valueOf(getBodyOrder.getPlanQty())).build());
                             miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".EngineType").value(getBodyOrder.getEngineType()).build());
                             //鐢熸垚sn鐮�
                             SysCount serialNumber = sysCountService.getSerialNumber();
@@ -300,9 +306,12 @@
                             if (Objects.equals(getBodyOrder2.getBodyQty(), getBodyOrder2.getPlanQty())){
                                 omProductionOrderInfoService.updateBodyStatus2();
                             }
-                            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".PalletID").value(getBodyOrder2.getBodyQty()).build());
-                            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value("11").build());
+                            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".PalletID").value(getBodyOrder2.getBodyQty()).build());
+                            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value(11).build());
                     }
+                    else{
+                        miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value(12).build());
+                        }
                 } else if (Constants.C005.equals(device)) {
                     // 鏌ヨ鏁版嵁搴撹幏鍙栫鍚堟潯浠剁殑璁㈠崟淇℃伅
                     OmProductionOrderInfo getHeadOrder = omProductionOrderInfoService.getHeadOrder();
@@ -310,7 +319,6 @@
                         //鍒ゆ柇褰撳墠涓嬪彂鏁伴噺鏄惁婊¤冻璁″垝鏁伴噺
                         //鏇存柊宸ュ崟鐘舵��
                         miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderNumber").value(getHeadOrder.getWorkOrderNo()).build());
-                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ProductionPlan").value(String.valueOf(getHeadOrder.getPlanQty())).build());
                         miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".EngineType").value(getHeadOrder.getEngineType()).build());
                         //鐢熸垚sn鐮�
                         SysCount headNumber = sysCountService.getHeadNumber();
@@ -350,8 +358,11 @@
                         if (Objects.equals(getHeadOrder2.getHeadQty(), getHeadOrder2.getPlanQty())){
                             omProductionOrderInfoService.updateHeadStatus2();
                         }
-                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".PalletID").value(getHeadOrder2.getHeadQty()).build());
-                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value("11").build());
+                        miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".PalletID").value(getHeadOrder2.getHeadQty()).build());
+                        miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value(11).build());
+                    }
+                    else{
+                        miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value(12).build());
                     }
                 } else if (Constants.P010.equals(device)) {
                     // 鏌ヨ鏁版嵁搴撹幏鍙栫鍚堟潯浠剁殑璁㈠崟淇℃伅
@@ -360,7 +371,6 @@
                         //鍒ゆ柇褰撳墠涓嬪彂鏁伴噺鏄惁婊¤冻璁″垝鏁伴噺
                         //鏇存柊宸ュ崟鐘舵��
                         miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderNumber").value(getPreOrder.getWorkOrderNo()).build());
-                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".ProductionPlan").value(String.valueOf(getPreOrder.getPlanQty())).build());
                         miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".EngineType").value(getPreOrder.getEngineType()).build());
                         //鐢熸垚sn鐮�
                         SysCount preNumber = sysCountService.getPreNumber();
@@ -399,8 +409,11 @@
                         if (Objects.equals(getPreOrder2.getPreQty(), getPreOrder2.getPlanQty())){
                             omProductionOrderInfoService.updatePreStatus2();
                         }
-                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".PalletID").value(getPreOrder2.getPreQty()).build());
-                        miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value("11").build());
+                        miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".PalletID").value(getPreOrder2.getPreQty()).build());
+                        miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value(11).build());
+                    }
+                    else{
+                        miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".WorkOrderRequestDone").value(12).build());
                     }
                 }
             }
@@ -415,9 +428,9 @@
         List<BsBomChildInfo> bomChildList = bsBomChildInfoService.selectBsBomChildInfoList(bsbomChildInfo);
         for (int i = 1; i <= bomChildList.size(); i++) {
             // 鐢熸垚 MaterialCode 鑺傜偣
-            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".Material1Code"+ i).value(bomChildList.get(i-1).getMaterialCode()).build());
+            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".Material"+ i +"Code").value(bomChildList.get(i-1).getMaterialCode()).build());
             // 鐢熸垚 MaterialNumber 鑺傜偣
-            miloService.writeToOpcUa(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".Material1Number"+ i).value(bomChildList.get(i-1).getCostQty()).build());
+            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(thoroughfare + "." + device + ".Material"+ i +"Number").value(Integer.parseInt(bomChildList.get(i-1).getCostQty())).build());
         }
     }
 

--
Gitblit v1.9.3