From a3ff160ff0e25bf0802aa5f14d651776b6652cdc Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期一, 04 八月 2025 16:03:17 +0800
Subject: [PATCH] feat(dry): 更新干燥设备接口和实时数据处理

---
 jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryRealTimeDataServiceImpl.java |   66 +++++++++++++++++++++-----------
 1 files changed, 43 insertions(+), 23 deletions(-)

diff --git a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryRealTimeDataServiceImpl.java b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryRealTimeDataServiceImpl.java
index 8e48a0b..56d34b9 100755
--- a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryRealTimeDataServiceImpl.java
+++ b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryRealTimeDataServiceImpl.java
@@ -180,11 +180,12 @@
             DryOrderVo orderVo = (DryOrderVo) redisUtil.hget(CacheConstants.RedisKeyEnum.WORK_ORDER.getCode(),
                     realTimeDataParentVo.getTenantid() + "_" + realTimeDataParentVo.getMachineid());
             // 1.2 濡傛灉鏈夌紦瀛樿褰�
-            if (orderVo != null && orderVo.getCode().equals(realTimeDataParentVo.getWorkorder())) {
+            if (orderVo != null && orderVo.getCode() != null && orderVo.getCode().equals(realTimeDataParentVo.getWorkorder())) {
 
                 // 1.3 娌℃湁缂撳瓨璁板綍鍐嶆煡璇㈡暟鎹簱
             } else {
                 // 鏍规嵁绉熸埛id鍜屽伐鍗曞彿鏌ヨ鏁版嵁搴撴槸鍚︽湁璁板綍锛屾湁鍒欒繑鍥烇紝娌℃湁鍒欐柊澧炰竴鏉″啀杩斿洖
+                realTimeDataVo.setWorkorder(realTimeDataParentVo.getWorkorder());
                 orderVo = getOrSaveDryOrderVoDB(realTimeDataVo);
             }
             if (orderVo == null) {
@@ -215,8 +216,12 @@
             orderVo.setOrderStatus(realTimeDataVo.getWorkorder_status());
             orderVo.setEqp_status(realTimeDataVo.getEqp_status());
 //        orderVo.setEqp_state(realTimeDataVo.getEqp_state());
-            orderVo.setWarning(realTimeDataVo.getEqp_warning());
-            orderVo.setFault(realTimeDataVo.getEqp_fault());
+            if(realTimeDataParentVo.getFault()!=null && StringUtils.isNotEmpty(realTimeDataParentVo.getFault().getWarning())){
+                orderVo.setWarning(realTimeDataParentVo.getFault().getWarning());
+            }
+            if(realTimeDataParentVo.getFault()!=null && StringUtils.isNotEmpty(realTimeDataParentVo.getFault().getError())){
+                orderVo.setFault(realTimeDataParentVo.getFault().getError());
+            }
             orderVo.setLevel(realTimeDataVo.getLevel());
             DryOrderTrendVo trendVo = new DryOrderTrendVo(realTimeDataVo);
             // 2.2 淇濆瓨宸ュ崟鍚按鐜囧彉鍖� 鎴� 閲嶉噺鍙樺寲
@@ -224,6 +229,15 @@
             saveOrderTrendVo(trendVo, orderVo);
             orderVo.setTrendVo(trendVo);
             orderVo.getBellowsTemp().put(realTimeDataVo.getTime3(), realTimeDataVo.getTemp2());
+
+            if (realTimeDataParentVo.getFault() != null) {
+                if (realTimeDataParentVo.getFault().getError() != null) {
+                    orderVo.setFault(realTimeDataParentVo.getFault().getError());
+                }
+                if (realTimeDataParentVo.getFault().getWarning() != null) {
+                    orderVo.setWarning(realTimeDataParentVo.getFault().getWarning());
+                }
+            }
 
             // 2.3 鏇存柊鍒皉edis缂撳瓨
             redisUtil.hset(CacheConstants.RedisKeyEnum.WORK_ORDER.getCode(),
@@ -547,7 +561,7 @@
                     // 鑾峰彇宸ュ崟
                     DryOrderVo order = (DryOrderVo) redisUtil.hget(CacheConstants.RedisKeyEnum.WORK_ORDER.getCode(), realTimeDataVo.getTenantid() + "_" + item.getCode());
                     list.add(item.getName().substring(0, item.getName().indexOf('#') + 1));
-                    if (order != null) {
+                    if (order != null &&  order.getDetailList()!=null && !order.getDetailList().isEmpty()) {
                         // 璁$畻骞茬嚗鏁堢巼锛岀敤浜庡姣�
                         DryOrderTrendVo dryOrderTrendVo = order.getDetailList().get(order.getDetailList().size() - 1);
                         double v = order.getOriginWeight() - dryOrderTrendVo.getWeight();
@@ -819,27 +833,33 @@
         //2妫�娴嬪凡缁撴潫鐨勬晠闅�
         //2.1濡傛灉瀹炴椂鏁版嵁涓嶅瓨鍦╮edis瀛樺湪鍒欎唬琛ㄦ晠闅滅粨鏉燂紝瀛樺叆鏁版嵁搴�
         Map<Object, Object> curFauMap = redisUtil.hmget(String.format(MqttConstant.MQTT_REAL_FAULT, tenantId));
-        curFauMap.keySet().stream()
+        Map<Object, DryFaultRecordVo> collect = curFauMap.keySet().stream()
+                .filter(key -> {
+                    String[] split = key.toString().split("_");
+                    return split[0].equals(tenantId + "") && split[1].equals(machineId);
+                })
                 //鐗瑰埆娉ㄦ剰锛屽涓姤璀︾被鍨嬪叡鐢ㄦ柟娉曢渶瑕佸尯鍒嗙被鍨�
-                .filter(key -> !realFauMap.containsKey(key) && ((DryFaultRecordVo) curFauMap.get(key)).getFaultType() == faultType)
-                .forEach(key -> {
-                    DryFaultRecordVo vo = (DryFaultRecordVo) redFauMap.get(key);
-                    vo.setECount(vo.getECount() + 1);
-                    if (redisUtil.hget(String.format(MqttConstant.MQTT_REAL_FAULT, tenantId), key.toString()) != null) {
-                        //鏇存柊娆℃暟
-                        redisUtil.hset(String.format(MqttConstant.MQTT_REAL_FAULT, tenantId), key.toString(), vo);
-                        System.err.println("鎶ヨ娆℃暟鏇存柊锛宬ey-" + key);
-                    }
+                .filter(key -> !realFauMap.containsKey(key) && (Objects.equals(((DryFaultRecordVo) curFauMap.get(key)).getFaultType(), faultType)))
+                .collect(Collectors.toMap(key -> key,  // 淇濈暀鍘熼敭
+                        key -> (DryFaultRecordVo) curFauMap.get(key)));
+        collect.keySet().forEach(key -> {
+            DryFaultRecordVo vo = (DryFaultRecordVo) redFauMap.get(key);
+            vo.setECount(vo.getECount() + 1);
+            if (redisUtil.hget(String.format(MqttConstant.MQTT_REAL_FAULT, tenantId), key.toString()) != null) {
+                //鏇存柊娆℃暟
+                redisUtil.hset(String.format(MqttConstant.MQTT_REAL_FAULT, tenantId), key.toString(), vo);
+                System.err.println("鎶ヨ娆℃暟鏇存柊锛宬ey-" + key);
+            }
 
-                    if (vo.getECount() >= 3) {
-                        vo.setEndTime(new Date());
-                        //TODO 缁撴潫瓒呰繃鏌愪釜鏃堕棿鍖洪棿鍒ゅ畾涓洪敊璇暟鎹�
-                        faultRecordService.save(vo);
-                        redisUtil.hdel(String.format(MqttConstant.MQTT_REAL_FAULT, tenantId), key);
-                        result.add(vo);
-                        System.err.println((faultType == 1 ? "绫诲瀷锛氭晠闅�" : "绫诲瀷锛氭姤璀�") + DateUtils.formatDateTime() + "瀛樺叆鏁版嵁搴�");
-                    }
-                });
+            if (vo.getECount() >= 3) {
+                vo.setEndTime(new Date());
+                //TODO 缁撴潫瓒呰繃鏌愪釜鏃堕棿鍖洪棿鍒ゅ畾涓洪敊璇暟鎹�
+                faultRecordService.save(vo);
+                redisUtil.hdel(String.format(MqttConstant.MQTT_REAL_FAULT, tenantId), key);
+                result.add(vo);
+                System.err.println((faultType == 1 ? "绫诲瀷锛氭晠闅�" : "绫诲瀷锛氭姤璀�") + DateUtils.formatDateTime() + "瀛樺叆鏁版嵁搴�");
+            }
+        });
 
 
         return result;

--
Gitblit v1.9.3