From 41afb20b6b3776f1242ce2aba29d8e51fa8110d6 Mon Sep 17 00:00:00 2001
From: admin <15939171744@163.com>
Date: 星期六, 17 五月 2025 09:45:52 +0800
Subject: [PATCH] -

---
 billion-main/src/main/java/com/billion/main/plc/sub/OPCUaSubscription.java |  131 ++++++++++++++++++++++++++++++++++---------
 1 files changed, 103 insertions(+), 28 deletions(-)

diff --git a/billion-main/src/main/java/com/billion/main/plc/sub/OPCUaSubscription.java b/billion-main/src/main/java/com/billion/main/plc/sub/OPCUaSubscription.java
index cb8d83f..7a784e7 100644
--- a/billion-main/src/main/java/com/billion/main/plc/sub/OPCUaSubscription.java
+++ b/billion-main/src/main/java/com/billion/main/plc/sub/OPCUaSubscription.java
@@ -3,18 +3,16 @@
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjUtil;
-import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
-import cn.hutool.http.HttpRequest;
-import cn.hutool.http.HttpResponse;
-import cn.hutool.json.JSONUtil;
-import com.alibaba.druid.sql.visitor.functions.Substring;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.billion.main.api.domain.StationST180;
+import com.billion.main.da.domain.DaCollectionParamConf;
 import com.billion.main.da.domain.DaParamCollection;
 import com.billion.main.da.domain.DaStationCollection;
+import com.billion.main.da.domain.DaTightenCollection;
+import com.billion.main.da.service.IDaCollectionParamConfService;
 import com.billion.main.da.service.IDaParamCollectionService;
 import com.billion.main.da.service.IDaStationCollectionService;
+import com.billion.main.da.service.IDaTightenCollectionService;
 import com.billion.main.plc.constant.Constants;
 import com.billion.main.sc.domain.ScCollectionParamConf;
 import com.billion.main.sc.service.IScCollectionParamConfService;
@@ -24,8 +22,9 @@
 import com.kangaroohy.milo.runner.subscription.SubscriptionCallback;
 import com.kangaroohy.milo.service.MiloService;
 import lombok.extern.slf4j.Slf4j;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
-import com.alibaba.fastjson.JSONObject;
 
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
@@ -38,22 +37,26 @@
 @Slf4j
 @Component
 public class OPCUaSubscription implements SubscriptionCallback {
+    private static final Logger logger = LoggerFactory.getLogger("sys-user");
 
     public static MiloService miloService;
     public static IScCollectionParamConfService collectionParamConfService;
     public static IDaParamCollectionService paramCollectionService;
     public static IDaStationCollectionService stationCollectionService;
-
+    public static IDaCollectionParamConfService daCollectionParamConfService;
+    public static IDaTightenCollectionService daTightenCollectionService;
     public static SysNoticeServiceImpl sysNoticeService;
 
     public OPCUaSubscription(MiloService miloService, IScCollectionParamConfService collectionParamConfService
-            ,IDaParamCollectionService paramCollectionService,IDaStationCollectionService stationCollectionService,SysNoticeServiceImpl sysNoticeService) {
+            ,IDaParamCollectionService paramCollectionService,IDaStationCollectionService stationCollectionService,SysNoticeServiceImpl sysNoticeService
+            ,IDaCollectionParamConfService daCollectionParamConfService,IDaTightenCollectionService daTightenCollectionService) {
         OPCUaSubscription.miloService = miloService;
         OPCUaSubscription.collectionParamConfService = collectionParamConfService;
         OPCUaSubscription.paramCollectionService = paramCollectionService;
         OPCUaSubscription.stationCollectionService = stationCollectionService;
         OPCUaSubscription.sysNoticeService = sysNoticeService;
-
+        OPCUaSubscription.daCollectionParamConfService = daCollectionParamConfService;
+        OPCUaSubscription.daTightenCollectionService = daTightenCollectionService;
     }
 
     @Override
@@ -100,8 +103,8 @@
                     if (ObjUtil.isNotNull(SNCodeObject)){
                         String SnCode = SNCodeObject.toString();
                         if (StrUtil.isNotBlank(SnCode)){
-                            savePassingStation(thoroughfare,device,"snCode");
-                            saveParamCollection(device, "snCode", "stationStatus");
+                            savePassingStation(thoroughfare,device,SnCode);
+                            saveParamCollection(device, SnCode, "stationStatus");
                         }
                     }
                     Integer result = Constants.INTEGER_TWO_ONE;
@@ -185,16 +188,17 @@
     private static void saveParamCollection(String device, String snCode, String stationStatus) {
         try {
             // 鏌ヨ鍙傛暟閰嶇疆琛�
-            List<ScCollectionParamConf> list = collectionParamConfService.list(new LambdaQueryWrapper<ScCollectionParamConf>()
-                    .eq(ScCollectionParamConf::getLocationCode, device)
-                    .eq(ScCollectionParamConf::getSubscribe, Constants.ONE)
-                    .orderByDesc(ScCollectionParamConf::getOrderNum)
+            List<DaCollectionParamConf> list = daCollectionParamConfService.list(new LambdaQueryWrapper<DaCollectionParamConf>()
+                    .eq(DaCollectionParamConf::getProcessesCode, device)
+                    .eq(DaCollectionParamConf::getRemarks, Constants.ONE)
+                    .orderByAsc(DaCollectionParamConf::getGatherSequence)
             );
 
             if (CollUtil.isNotEmpty(list)) {
                 // 鑾峰彇鍙傛暟鍊�
                 List<String> collect = list.stream()
-                        .map(ScCollectionParamConf::getNode)
+                        .map(DaCollectionParamConf::getGatherAddress)
+                        .map(String::trim)
                         .collect(Collectors.toList());
                 List<ReadWriteEntity> readWriteEntityList = miloService.readFromOpcUa(collect);
 
@@ -220,19 +224,90 @@
      * 淇濆瓨閲囬泦鏁版嵁
      */
     private static void saveCollectionData(String device, String snCode,
-            List<ScCollectionParamConf> list, List<ReadWriteEntity> readWriteEntityList) {
+                                           List<DaCollectionParamConf> list, List<ReadWriteEntity> readWriteEntityList) {
         ArrayList<DaParamCollection> collectionList = new ArrayList<>();
-        for (int i = 0; i < readWriteEntityList.size(); i++) {
-            DaParamCollection daParamCollection = new DaParamCollection();
-            daParamCollection.setSfcCode(snCode);
-            daParamCollection.setLocationCode(device);
-            daParamCollection.setParamCode(list.get(i).getParamCode());
-            daParamCollection.setParamName(list.get(i).getParamName());
-            daParamCollection.setParamValue(readWriteEntityList.get(i).getValue().toString());
-            daParamCollection.setCollectTime(new Date());
-            collectionList.add(daParamCollection);
+
+        if(Constants.TIGHTENCOLLECTION_LIST.contains(device)){
+            //瀛樻嫥绱ф暟鎹�
+            try {
+                LinkedHashMap<String, Map<String, Object>> groupMap = new LinkedHashMap<>();
+                for (int i = 0; i < list.size(); i += 3) {
+                    try {
+                        String groupKey = String.valueOf(i/3);
+                        String paramSetName = list.get(i).getParameterSetName();
+                        int secondSlash = paramSetName.indexOf("/", paramSetName.indexOf("/") + 1);
+                        paramSetName = secondSlash > 0 ? paramSetName.substring(0, secondSlash) : paramSetName;
+
+                        Map<String, Object> paramMap = new HashMap<>();
+
+                        // 鑾峰彇鎵煩鍊�
+                        Object torqueObj = readWriteEntityList.get(i).getValue();
+                        String torqueValue = torqueObj == null ? null : torqueObj.toString();
+                        if (torqueValue != null && !"0.0".equals(torqueValue)) {
+                            paramMap.put("torque", Double.parseDouble(torqueValue));
+                        }
+
+                        // 鑾峰彇瑙掑害鍊�
+                        Object angleObj = readWriteEntityList.get(i + 1).getValue();
+                        String angleValue = angleObj == null ? null : angleObj.toString();
+                        if (angleValue != null && !"0.0".equals(angleValue)) {
+                            paramMap.put("angle", Double.parseDouble(angleValue));
+                        }
+
+                        // 鑾峰彇鐘舵�佸��
+                        Object statusObj = readWriteEntityList.get(i + 2).getValue();
+                        String statusValue = statusObj == null ? null : statusObj.toString();
+                        if (statusValue != null && !"0.0".equals(statusValue)) {
+                            paramMap.put("angleStatus", statusValue);
+                            paramMap.put("paramSetName", paramSetName);
+                            groupMap.put(groupKey, paramMap);
+                        }
+                    } catch (Exception e) {
+                        logger.error("{}鍙戝姩鏈烘嫥绱ф暟鎹{}缁勫鐞嗗け璐�: {}", snCode, i/3, e.getMessage());
+                    }
+                }
+
+                List<DaTightenCollection> tightenList = new ArrayList<>();
+                for (Map<String, Object> paramMap : groupMap.values()) {
+                    try {
+                        DaTightenCollection tighten = new DaTightenCollection();
+                        tighten.setSfcCode(snCode);
+                        tighten.setLocationCode(device);
+                        tighten.setParamSetName((String) paramMap.get("paramSetName"));
+                        tighten.setTorque(paramMap.get("torque") != null ? paramMap.get("torque").toString() : null);
+                        tighten.setAngle(paramMap.get("angle") != null ? paramMap.get("angle").toString() : null);
+                        tighten.setAngleStatus((String) paramMap.get("angleStatus"));
+                        tighten.setCollectTime(new Date());
+                        tightenList.add(tighten);
+                    } catch (Exception e) {
+                        logger.error("{}鍙戝姩鏈烘嫥绱ф暟鎹璞¤浆鎹㈠け璐�: {}", snCode, e.getMessage());
+                    }
+                }
+                if(tightenList.size()>0){
+                    try {
+                        daTightenCollectionService.saveBeachDaTightenCollection(tightenList);
+                        logger.info("{}鍙戝姩鏈哄瓨鎷х揣鏁版嵁淇濆瓨瀹屾垚",snCode);
+                    } catch (Exception e) {
+                        logger.error("{}鍙戝姩鏈烘嫥绱ф暟鎹壒閲忎繚瀛樺け璐�: {}", snCode, e.getMessage());
+                    }
+                }
+            } catch (Exception e) {
+                logger.error("{}鍙戝姩鏈烘嫥绱ф暟鎹鐞嗗紓甯�: {}", snCode, e.getMessage());
+            }
+        }else {
+            for (int i = 0; i < readWriteEntityList.size(); i++) {
+                DaParamCollection daParamCollection = new DaParamCollection();
+                daParamCollection.setSfcCode(snCode);
+                daParamCollection.setLocationCode(device);
+                daParamCollection.setParamCode(list.get(i).getParameterSetCode());
+                daParamCollection.setParamName(list.get(i).getParameterSetName());
+                daParamCollection.setParamValue(readWriteEntityList.get(i).getValue().toString());
+                daParamCollection.setCollectTime(new Date());
+                collectionList.add(daParamCollection);
+            }
+            paramCollectionService.insertBatch(collectionList);
         }
-        paramCollectionService.insertBatch(collectionList);
+
     }
 
     /**

--
Gitblit v1.9.3