From ed8d46af267e455c9ff1096585d16c3cd0f4bb0c Mon Sep 17 00:00:00 2001
From: admin <15939171744@163.com>
Date: 星期五, 16 五月 2025 18:55:48 +0800
Subject: [PATCH] 采集数据分表存储

---
 jcdm-main/src/main/java/com/jcdm/main/plcserver/sub/OPCUaSubscription.java |  325 ++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 302 insertions(+), 23 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 2cb2892..053f50b 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
@@ -8,8 +8,14 @@
 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.cameraResults.domain.DaCameraResults;
+import com.jcdm.main.da.cameraResults.service.IDaCameraResultsService;
 import com.jcdm.main.da.collectionParamConf.domain.DaCollectionParamConf;
 import com.jcdm.main.da.collectionParamConf.service.IDaCollectionParamConfService;
+import com.jcdm.main.da.leakageDetection.domain.DaLeakageDetection;
+import com.jcdm.main.da.leakageDetection.service.IDaLeakageDetectionService;
+import com.jcdm.main.da.oilFilling.domain.DaOilFilling;
+import com.jcdm.main.da.oilFilling.service.IDaOilFillingService;
 import com.jcdm.main.da.opcuaconfig.domain.DaOpcuaConfig;
 import com.jcdm.main.da.paramCollection.domain.DaParamCollection;
 import com.jcdm.main.da.paramCollection.service.IDaParamCollectionService;
@@ -17,6 +23,8 @@
 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.da.tightenCollection.domain.DaTightenCollection;
+import com.jcdm.main.da.tightenCollection.service.IDaTightenCollectionService;
 import com.jcdm.main.plcserver.conf.OPCElement;
 import com.jcdm.main.rm.repairRecord.domain.RmRepairRecord;
 import com.jcdm.main.rm.repairRecord.service.IRmRepairRecordService;
@@ -29,6 +37,7 @@
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
 
+import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.sql.Time;
 import java.time.LocalDateTime;
@@ -63,6 +72,14 @@
 
     public HashMap<String,List<DaCollectionParamConf>> allCollectParamList = new HashMap<>();
 
+    private IDaCameraResultsService daCameraResultsService;
+
+    private IDaLeakageDetectionService daLeakageDetectionService;
+
+    private IDaOilFillingService daOilFillingService;
+
+    private IDaTightenCollectionService daTightenCollectionService;
+
     public OPCUaSubscription(MiloService miloService,
                              IDaCollectionParamConfService collectionParamConfService,
                              IDaParamCollectionService daParamCollectionService,
@@ -71,7 +88,11 @@
                              List<DaOpcuaConfig> lists,
                              IRmRepairRecordService rmRepairRecordService,
                              IBsTechnologyRouteChildInfoService bsTechnologyRouteChildInfoService,
-                             ProductNewPassStationService productNewPassStationService) {
+                             ProductNewPassStationService productNewPassStationService,
+                             IDaCameraResultsService daCameraResultsService,
+                             IDaLeakageDetectionService daLeakageDetectionService,
+                             IDaOilFillingService daOilFillingService,
+                             IDaTightenCollectionService daTightenCollectionService) {
         OPCUaSubscription.miloService = miloService;
         this.collectionParamConfService = collectionParamConfService;
         this.daParamCollectionService = daParamCollectionService;
@@ -81,6 +102,10 @@
         this.rmRepairRecordService = rmRepairRecordService;
         this.bsTechnologyRouteChildInfoService = bsTechnologyRouteChildInfoService;
         this.productNewPassStationService = productNewPassStationService;
+        this.daCameraResultsService = daCameraResultsService;
+        this.daLeakageDetectionService = daLeakageDetectionService;
+        this.daOilFillingService = daOilFillingService;
+        this.daTightenCollectionService = daTightenCollectionService;
 
 
     }
@@ -629,32 +654,286 @@
                 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());
+//                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);
+//                }
+
+            //鏂板姞鐨� 寮�濮�
+            String locationCode = parts[1];
+            if(OPCElement.CAMERA_RESULTS_LIST.contains(locationCode)){
+                //瀛樼浉鏈烘暟鎹�
+                try {
+                    if (CollUtil.isNotEmpty(nodeIdList)){
+                        for(int i=0;i<nodeIdList.size();i++){
+                            try {
+                                if(ObjectUtil.isNotEmpty(readWriteEntityList.get(i).getValue()) && !readWriteEntityList.get(i).getValue().toString().equals("0.0")){
+                                    DaCameraResults cameraResults = new DaCameraResults();
+                                    cameraResults.setSfcCode(SNCode);
+                                    cameraResults.setLocationCode(locationCode);
+                                    cameraResults.setCollectTime(new Date());
+                                    if (readWriteEntityList.get(i) == null){
+                                        cameraResults.setResultData0("0");
+                                    }else {
+                                        cameraResults.setResultData0(readWriteEntityList.get(i).getValue().toString());
+                                    }
+                                    daCameraResultsService.insertDaCameraResults(cameraResults);
+                                    logger.info("{}鍙戝姩鏈猴紙{}锛夐噰闆嗙浉鏈烘暟鎹繚瀛樺畬鎴�",SNCode,Node);
+                                }
+                            } catch (Exception e) {
+                                logger.error("{}鍙戝姩鏈猴紙{}锛夐噰闆嗙浉鏈烘暟鎹{}鏉′繚瀛樺け璐�: {}", SNCode, Node, i, e.getMessage());
                             }
-                            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);
+                } catch (Exception e) {
+                    logger.error("{}鍙戝姩鏈猴紙{}锛夐噰闆嗙浉鏈烘暟鎹鐞嗗紓甯�: {}", SNCode, Node, e.getMessage());
                 }
+            }
+
+            if(OPCElement.LEAKAGEDETECTION_LIST.contains(locationCode)){
+                //瀛樺婕忔娴嬫暟鎹�
+                try {
+                    if (CollUtil.isNotEmpty(nodeIdList)){
+                        DaLeakageDetection leakageDetection = new DaLeakageDetection();
+                        for(int i=0;i<nodeIdList.size();i++){
+                            try {
+                                if(ObjectUtil.isNotEmpty(readWriteEntityList.get(i).getValue()) && !readWriteEntityList.get(i).getValue().toString().equals("0.0")){
+                                    leakageDetection.setSfcCode(SNCode);
+                                    leakageDetection.setLocationCode(locationCode);
+                                    leakageDetection.setCollectTime(new Date());
+                                    String paramCode = list.get(i).getParameterSetCode();
+                                    String value = "0";
+                                    if (readWriteEntityList.get(i) != null){
+                                        value = readWriteEntityList.get(i).getValue().toString();
+                                    }
+
+                                    switch (paramCode) {
+                                        case "Leakrate1":
+                                            leakageDetection.setLeakrate1(value);
+                                            break;
+                                        case "Leakrate2":
+                                            leakageDetection.setLeakrate2(value);
+                                            break;
+                                        case "Leakrate3":
+                                            leakageDetection.setLeakrate3(value);
+                                            break;
+                                        case "Leakrate4":
+                                            leakageDetection.setLeakrate4(value);
+                                            break;
+                                        case "Press1":
+                                            leakageDetection.setPress1(value);
+                                            break;
+                                        case "Press2":
+                                            leakageDetection.setPress2(value);
+                                            break;
+                                        case "Press3":
+                                            leakageDetection.setPress3(value);
+                                            break;
+                                        case "Press4":
+                                            leakageDetection.setPress4(value);
+                                            break;
+                                        case "Status1":
+                                            leakageDetection.setStatus1(value);
+                                            break;
+                                        case "Status2":
+                                            leakageDetection.setStatus2(value);
+                                            break;
+                                        case "Status3":
+                                            leakageDetection.setStatus3(value);
+                                            break;
+                                        case "Status4":
+                                            leakageDetection.setStatus4(value);
+                                            break;
+                                    }
+                                }
+                            } catch (Exception e) {
+                                logger.error("{}鍙戝姩鏈猴紙{}锛夊婕忔娴嬫暟鎹{}鏉″鐞嗗け璐�: {}", SNCode, Node, i, e.getMessage());
+                            }
+                        }
+                        try {
+                            daLeakageDetectionService.insertDaLeakageDetection(leakageDetection);
+                            logger.info("{}鍙戝姩鏈猴紙{}锛夊瓨澶栨紡妫�娴嬫暟鎹繚瀛樺畬鎴�",SNCode,Node);
+                        } catch (Exception e) {
+                            logger.error("{}鍙戝姩鏈猴紙{}锛夊婕忔娴嬫暟鎹繚瀛樺け璐�: {}", SNCode, Node, e.getMessage());
+                        }
+                    }
+                } catch (Exception e) {
+                    logger.error("{}鍙戝姩鏈猴紙{}锛夊婕忔娴嬫暟鎹鐞嗗紓甯�: {}", SNCode, Node, e.getMessage());
+                }
+            }
+
+            if(OPCElement.OIL_FILLING_LIST.contains(locationCode)){
+                //瀛樻満娌瑰姞娉ㄦ暟鎹�
+                try {
+                    if (CollUtil.isNotEmpty(nodeIdList)){
+                        DaOilFilling oilFilling = new DaOilFilling();
+                        for(int i=0;i<nodeIdList.size();i++){
+                            try {
+                                if(ObjectUtil.isNotEmpty(readWriteEntityList.get(i).getValue()) && !readWriteEntityList.get(i).getValue().toString().equals("0.0")){
+                                    oilFilling.setSfcCode(SNCode);
+                                    oilFilling.setLocationCode(locationCode);
+                                    oilFilling.setCollectTime(new Date());
+                                    String paramCode = list.get(i).getParameterSetCode();
+                                    String value = "0";
+                                    if (readWriteEntityList.get(i).getValue() != null){
+                                        value = readWriteEntityList.get(i).getValue().toString();
+                                    }
+
+                                    switch (paramCode) {
+                                        case "Actual_OilVolume1":
+                                            oilFilling.setActualOilvolume1(value);
+                                            break;
+                                        case "Actual_OilVolume2":
+                                            oilFilling.setActualOilvolume2(value);
+                                            break;
+                                        case "Actual_OilVolume3":
+                                            oilFilling.setActualOilvolume3(value);
+                                            break;
+                                        case "OilModel1":
+                                            oilFilling.setOilModel1(value);
+                                            break;
+                                        case "OilModel2":
+                                            oilFilling.setOilModel2(value);
+                                            break;
+                                        case "OilModel3":
+                                            oilFilling.setOilModel3(value);
+                                            break;
+                                        case "Set_OilVolume1":
+                                            oilFilling.setSetOilvolume1(value);
+                                            break;
+                                        case "Set_OilVolume2":
+                                            oilFilling.setSetOilvolume2(value);
+                                            break;
+                                        case "Set_OilVolume3":
+                                            oilFilling.setSetOilvolume3(value);
+                                            break;
+                                        case "Status1":
+                                            oilFilling.setStatus1(value);
+                                            break;
+                                        case "Status2":
+                                            oilFilling.setStatus2(value);
+                                            break;
+                                        case "Status3":
+                                            oilFilling.setStatus3(value);
+                                            break;
+                                        case "Time1":
+                                            oilFilling.setTime1(value);
+                                            break;
+                                        case "Time2":
+                                            oilFilling.setTime2(value);
+                                            break;
+                                        case "Time3":
+                                            oilFilling.setTime3(value);
+                                            break;
+                                    }
+                                }
+                            } catch (Exception e) {
+                                logger.error("{}鍙戝姩鏈猴紙{}锛夋満娌瑰姞娉ㄦ暟鎹{}鏉″鐞嗗け璐�: {}", SNCode, Node, i, e.getMessage());
+                            }
+                        }
+                        try {
+                            daOilFillingService.insertDaOilFilling(oilFilling);
+                            logger.info("{}鍙戝姩鏈猴紙{}锛夊瓨鏈烘补鍔犳敞鏁版嵁淇濆瓨瀹屾垚",SNCode,Node);
+                        } catch (Exception e) {
+                            logger.error("{}鍙戝姩鏈猴紙{}锛夋満娌瑰姞娉ㄦ暟鎹繚瀛樺け璐�: {}", SNCode, Node, e.getMessage());
+                        }
+                    }
+                } catch (Exception e) {
+                    logger.error("{}鍙戝姩鏈猴紙{}锛夋満娌瑰姞娉ㄦ暟鎹鐞嗗紓甯�: {}", SNCode, Node, e.getMessage());
+                }
+            }
+
+            if(OPCElement.TIGHTENCOLLECTION_LIST.contains(locationCode)){
+                //瀛樻嫥绱ф暟鎹�
+                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, Node, 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(locationCode);
+                            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, Node, e.getMessage());
+                        }
+                    }
+                    if(tightenList.size()>0){
+                        try {
+                            daTightenCollectionService.saveBeachDaTightenCollection(tightenList);
+                            logger.info("{}鍙戝姩鏈猴紙{}锛夊瓨鎷х揣鏁版嵁淇濆瓨瀹屾垚",SNCode,Node);
+                        } catch (Exception e) {
+                            logger.error("{}鍙戝姩鏈猴紙{}锛夋嫥绱ф暟鎹壒閲忎繚瀛樺け璐�: {}", SNCode, Node, e.getMessage());
+                        }
+                    }
+                } catch (Exception e) {
+                    logger.error("{}鍙戝姩鏈猴紙{}锛夋嫥绱ф暟鎹鐞嗗紓甯�: {}", SNCode, Node, e.getMessage());
+                }
+            }
+            //鏂板姞鐨� 缁撴潫
 
             Object ProductStatus = miloService.readFromOpcUa(parts[0] + "." + parts[1] + ".ProductStatus").getValue();
             String str1="鍚堟牸" ;

--
Gitblit v1.9.3