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