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