From 87b161325d9186d8211a7d472ed04fa279f33954 Mon Sep 17 00:00:00 2001
From: zhuguifei <zhuguifei>
Date: 星期五, 14 十一月 2025 16:12:43 +0800
Subject: [PATCH] Merge branch 'master' of http://lanpucloud.cn:1111/r/herb

---
 jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryRealTimeDataServiceImpl.java |   69 +++++++++++++++++++++++++++-------
 1 files changed, 54 insertions(+), 15 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 7812901..648ddcc 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
@@ -35,6 +35,8 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.text.DecimalFormat;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.locks.ReentrantLock;
@@ -106,7 +108,7 @@
     @Transactional
     public Result<?> realTimeDataHandle(RealTimeDataVo realTimeDataVo) {
         TenantContext.setTenant(realTimeDataVo.getTenantid() + "");
-        log.info("瀹炴椂鏁版嵁锛�" + realTimeDataVo.toString());
+//        log.info("瀹炴椂鏁版嵁锛�" + realTimeDataVo.toString());
 
 
         // 1 鏌ヨ鎴栧垱寤哄伐鍗�
@@ -171,7 +173,7 @@
     @Transactional
     public Result<?> realTimeDataHandle(RealTimeDataParentVo realTimeDataParentVo) {
         TenantContext.setTenant(realTimeDataParentVo.getTenantid() + "");
-        log.info("瀹炴椂鏁版嵁锛�" + realTimeDataParentVo.toString());
+//        log.info("瀹炴椂鏁版嵁锛�" + realTimeDataParentVo.toString());
         if (realTimeDataParentVo.getRealTime() != null) {
             RealTimeDataVo realTimeDataVo = realTimeDataParentVo.getRealTime();
 
@@ -229,6 +231,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(),
@@ -396,6 +407,8 @@
                     log.error("鏂板璁惧澶辫触锛氭暟鎹簱淇濆瓨寮傚父锛乪quipment={}", addEqu);
                     return null;
                 }
+                redisUtil.del(CommonCacheConstant.DRY_CACHE_TENANT_EQUS_LIST);
+                redisUtil.del(CommonCacheConstant.DRY_CACHE_TENANT_EQUS);
             } catch (Exception e) {
                 e.printStackTrace();
             } finally {
@@ -418,6 +431,29 @@
         ReentrantLock orderLock = getLock(realTimeDataVo.getTenantid() + "", "order");
         orderLock.lock();
         try {
+            //鏍规嵁绉熸埛id 鍜� 鑽潗id 妫�鏌ユ渶杩戞槸鍚﹀瓨鍦ㄥ伐鍗� TODO 楠岃瘉
+            LambdaQueryWrapper<DryOrder> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(DryOrder::getHerbId, herbFormula.getId());
+            queryWrapper.eq(DryOrder::getTenantId, realTimeDataVo.getTenantid());
+            queryWrapper.orderByDesc(DryOrder::getOrderTime);
+            queryWrapper.last("LIMIT 1");
+            // 1 鏌ヨ鏁版嵁搴�
+            DryOrder one = dryOrderService.getOne(queryWrapper);
+            if(one!=null){
+                Date orderDate = one.getOrderTime();
+                //30S鍐呬笉鍏佽鏂板缓宸ュ崟锛岄伩鍏嶉噸澶�
+                LocalDateTime orderTime = orderDate.toInstant()
+                        .atZone(ZoneId.systemDefault())
+                        .toLocalDateTime();
+
+                LocalDateTime now = LocalDateTime.now();
+                long secondsBetween = java.time.Duration.between(orderTime, now).getSeconds();
+                boolean b = secondsBetween <= 30;
+                if(b){
+                    return BeanUtil.toBean(one, DryOrderVo.class);
+                }
+            }
+
             // 鍒涘缓鏂板伐鍗�
             orderVo = new DryOrderVo(realTimeDataVo);
             orderVo.setHerbId(herbFormula.getId());
@@ -482,16 +518,19 @@
         LambdaQueryWrapper<DryHerbFormula> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(DryHerbFormula::getTenantId, realTimeDataVo.getTenantid());
         queryWrapper.eq(DryHerbFormula::getName, realTimeDataVo.getName());
+        queryWrapper.orderByDesc(DryHerbFormula::getCreateTime);
+        queryWrapper.last("LIMIT 1");
         DryHerbFormula one = dryHerbFormulaService.getOne(queryWrapper);
-        if (one == null) {
-            one = new DryHerbFormula(realTimeDataVo);
-            DryEquipment dryEquipment = equipmentService.selectByTenantIdEquipmentId(realTimeDataVo.getTenantid() + "", realTimeDataVo.getMachineid());
-            if (dryEquipment != null && dryEquipment.getType() != null) {
-                one.setEqpType(dryEquipment.getType());
-            }
 
-            dryHerbFormulaService.save(one);
-        }
+//        if (one == null) {
+//            one = new DryHerbFormula(realTimeDataVo);
+//            DryEquipment dryEquipment = equipmentService.selectByTenantIdEquipmentId(realTimeDataVo.getTenantid() + "", realTimeDataVo.getMachineid());
+//            if (dryEquipment != null && dryEquipment.getType() != null) {
+//                one.setEqpType(dryEquipment.getType());
+//            }
+//
+//            dryHerbFormulaService.save(one);
+//        }
         return one;
     }
 
@@ -631,9 +670,9 @@
                 if (order != null) {
                     orderVo.setEnvHum(order.getEnvHum());
                     orderVo.setEnvTemp(order.getEnvTemp());
-                    double watt = order.getWatt() - order.getDetailList().get(0).getWatt();
+                    double watt = order.getWatt() - (order.getDetailList().size() > 0 ?order.getDetailList().get(0).getWatt():0);
                     orderVo.setWatt(orderVo.getWatt() == null ? watt : orderVo.getWatt() + watt);
-                    double steam = order.getSteam() - order.getDetailList().get(0).getSteam();
+                    double steam = order.getSteam() - ( order.getDetailList().size() > 0 ?order.getDetailList().get(0).getSteam():0);
                     orderVo.setSteam(orderVo.getSteam() == null ? steam : orderVo.getSteam() + steam);
                     orderVo.setOriginWeight(orderVo.getOriginWeight() == null ? order.getOriginWeight() : orderVo.getOriginWeight() + order.getOriginWeight());
 
@@ -737,7 +776,7 @@
         List<DryFaultRecordVo> faultList = new ArrayList<DryFaultRecordVo>((dryFaultMap.values()));
         MqMessage<List<DryFaultRecordVo>> mqMessage = new MqMessage<>(faultList, tenantId, recTopic);
         //鍙戦�佸箍鎾�
-        log.error("骞挎挱缁欙細{}", recTopic);
+//        log.error("骞挎挱缁欙細{}", recTopic);
         mqttUtil.sendMqttMessage(MqttConstant.SERVICE_BROADCAST_TENANT_REAL_FAULT, mqMessage, 1);
 
 
@@ -759,7 +798,7 @@
         List<DryFaultRecord> result = new ArrayList<>();
         if (StringUtils.isEmpty(fault)) return result;
         //鏁版嵁鏍锋湰锛�"eqp_fault": "婊氱瓛闄嶈秴鏃�-鎶ヨ,椋庢満杩囨祦鎶ヨ,婊氱瓛鍗囪秴鏃�-鎶ヨ,椋庣鍗囨姤璀�",
-        System.err.println((faultType == 1 ? "绫诲瀷锛氭晠闅�" : "绫诲瀷锛氭姤璀�") + DateUtils.formatDateTime() + "--" + fault);
+//        System.err.println((faultType == 1 ? "绫诲瀷锛氭晠闅�" : "绫诲瀷锛氭姤璀�") + DateUtils.formatDateTime() + "--" + fault);
         //redis涓殑鏁呴殰
         Map<Object, Object> rFauMap = redisUtil.hmget(String.format(MqttConstant.MQTT_REAL_FAULT, tenantId));
         Map<String, Object> redFauMap = rFauMap.entrySet().stream()
@@ -848,7 +887,7 @@
                 faultRecordService.save(vo);
                 redisUtil.hdel(String.format(MqttConstant.MQTT_REAL_FAULT, tenantId), key);
                 result.add(vo);
-                System.err.println((faultType == 1 ? "绫诲瀷锛氭晠闅�" : "绫诲瀷锛氭姤璀�") + DateUtils.formatDateTime() + "瀛樺叆鏁版嵁搴�");
+//                System.err.println((faultType == 1 ? "绫诲瀷锛氭晠闅�" : "绫诲瀷锛氭姤璀�") + DateUtils.formatDateTime() + "瀛樺叆鏁版嵁搴�");
             }
         });
 

--
Gitblit v1.9.3