From 53234d6959c5fdeb4dec544ad32158b65a6d685e Mon Sep 17 00:00:00 2001
From: bsw215583320 <baoshiwei121@163.com>
Date: 星期一, 27 五月 2024 14:45:28 +0800
Subject: [PATCH] 机台监控界面效率能消耗对比的标准值,取近十次平均

---
 jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryOrderService.java                |    2 
 jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryRealTimeDataServiceImpl.java |   72 +++++++++++++-----------
 jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/DryRecentOrderAvg.java                    |   10 +++
 jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/common/CacheConstants.java                   |    4 +
 jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mapper/xml/DryOrderMapper.xml                |    9 +++
 jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mapper/DryOrderMapper.java                   |    3 +
 jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/DryOrderVo.java                           |    4 +
 jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryOrderServiceImpl.java        |   31 +++++++++
 8 files changed, 99 insertions(+), 36 deletions(-)

diff --git a/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/common/CacheConstants.java b/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/common/CacheConstants.java
index 8175a1d..2aa4209 100644
--- a/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/common/CacheConstants.java
+++ b/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/common/CacheConstants.java
@@ -12,7 +12,9 @@
         WORK_ORDER("workOrder","宸ュ崟MAP"),
 
 
-        EQP_MAP("eqpMap", "璁惧MAP,key:tenantId+equipmentId");
+        EQP_MAP("eqpMap", "璁惧MAP,key:tenantId+equipmentId"),
+
+        NEAR_TEN("nearTen", "鏈�杩戝崄娆℃晥鐜囧拰娑堣�楀钩鍧�,key:tenantId+orderCode+equipmentId");
 
         private String code;
         private String text;
diff --git a/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/DryOrderVo.java b/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/DryOrderVo.java
index 42fb313..b7d2b23 100644
--- a/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/DryOrderVo.java
+++ b/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/DryOrderVo.java
@@ -175,6 +175,10 @@
      */
     private Double reduce;
 
+
+    /**骞冲潎鏁堢巼**/
+    private Double efficAvg;
+
     /**骞冲潎姹借��**/
     private Double steamAvg;
 
diff --git a/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/DryRecentOrderAvg.java b/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/DryRecentOrderAvg.java
new file mode 100644
index 0000000..b2400d5
--- /dev/null
+++ b/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/DryRecentOrderAvg.java
@@ -0,0 +1,10 @@
+package org.jeecg.modules.dry.vo;
+
+import lombok.Data;
+
+@Data
+public class DryRecentOrderAvg {
+    private Double efficAvg;
+    private Double steamAvg;
+    private Double wattAvg;
+}
diff --git a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mapper/DryOrderMapper.java b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mapper/DryOrderMapper.java
index 5edd90c..2fd7212 100644
--- a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mapper/DryOrderMapper.java
+++ b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mapper/DryOrderMapper.java
@@ -3,6 +3,7 @@
 import org.apache.ibatis.annotations.Param;
 import org.jeecg.modules.dry.entity.DryOrder;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.dry.vo.DryRecentOrderAvg;
 
 import java.util.List;
 
@@ -15,4 +16,6 @@
 public interface DryOrderMapper extends BaseMapper<DryOrder> {
 
     List<String> queryMonthOverview(@Param("month") String month, @Param("tenantId") int tenantId);
+
+    DryRecentOrderAvg queryRecentOrderAvg(@Param("tenantId") Integer tenantId, @Param("herbName") String herbName);
 }
diff --git a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mapper/xml/DryOrderMapper.xml b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mapper/xml/DryOrderMapper.xml
index ce47adb..64f8841 100644
--- a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mapper/xml/DryOrderMapper.xml
+++ b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mapper/xml/DryOrderMapper.xml
@@ -8,4 +8,13 @@
          and tenant_id = #{tenantId} group by orderTime  order by orderTime desc
 
     </select>
+    <select id="queryRecentOrderAvg"  resultType="org.jeecg.modules.dry.vo.DryRecentOrderAvg">
+        select avg(a.xiaolv) efficAvg,avg(a.zq) steamAvg,avg(a.dn) wattAvg from (
+             select (origin_weight-yield)/dry_time*60 xiaolv,
+                     steam/(origin_weight-yield) zq,
+                    watt/(origin_weight-yield) dn
+               from dry_order where tenant_id = #{tenantId} and herb_name = #{herbName}
+                             and dry_time > 0 order by order_time desc limit 10
+        ) a
+    </select>
 </mapper>
diff --git a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryOrderService.java b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryOrderService.java
index 6fc915a..455da56 100644
--- a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryOrderService.java
+++ b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryOrderService.java
@@ -19,4 +19,6 @@
     void saveRealTimeData(DryOrderVo orderVo);
 
     List<String> queryMonthOverview(String month, int tenantId);
+
+    void queryRecentOrderAvg(DryOrderVo orderVo);
 }
diff --git a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryOrderServiceImpl.java b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryOrderServiceImpl.java
index d2badb2..a14f1e9 100644
--- a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryOrderServiceImpl.java
+++ b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryOrderServiceImpl.java
@@ -1,15 +1,20 @@
 package org.jeecg.modules.dry.service.impl;
 
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.util.RedisUtil;
+import org.jeecg.modules.dry.common.CacheConstants;
 import org.jeecg.modules.dry.entity.DryOrder;
 import org.jeecg.modules.dry.mapper.DryOrderMapper;
 import org.jeecg.modules.dry.service.IDryOrderService;
 import org.jeecg.modules.dry.vo.DryOrderVo;
+import org.jeecg.modules.dry.vo.DryRecentOrderAvg;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-
 import java.util.List;
+
+
 
 /**
  * @Description: 骞茬嚗宸ュ崟
@@ -21,6 +26,8 @@
 @Service
 public class DryOrderServiceImpl extends ServiceImpl<DryOrderMapper, DryOrder> implements IDryOrderService {
 
+    @Autowired
+    private RedisUtil redisUtil;
     @Override
     public void saveRealTimeData(DryOrderVo orderVo) {
         log.info("淇濆瓨瀹炴椂鏁版嵁锛�" + orderVo.toString());
@@ -31,4 +38,24 @@
     public List<String> queryMonthOverview(String month, int tenantId) {
         return baseMapper.queryMonthOverview(month, tenantId);
     }
+
+    @Override
+    public void queryRecentOrderAvg(DryOrderVo orderVo) {
+        DryRecentOrderAvg recentOrderAvg = (DryRecentOrderAvg) redisUtil.hget(CacheConstants.RedisKeyEnum.NEAR_TEN.getCode(), orderVo.getTenantId() + "_" + orderVo.getCode() + "_" + orderVo.getEquId());
+        if (recentOrderAvg != null) {
+            orderVo.setEfficAvg(recentOrderAvg.getEfficAvg());
+            orderVo.setSteamAvg(recentOrderAvg.getSteamAvg());
+            orderVo.setWattAvg(recentOrderAvg.getWattAvg());
+        } else {
+            DryRecentOrderAvg orderAvg = baseMapper.queryRecentOrderAvg(orderVo.getTenantId(), orderVo.getHerbName());
+            if(orderAvg != null) {
+                redisUtil.hset(CacheConstants.RedisKeyEnum.NEAR_TEN.getCode(), orderVo.getTenantId() + "_" + orderVo.getCode() + "_" + orderVo.getEquId(),orderAvg,60*10);
+                orderVo.setEfficAvg(orderAvg.getEfficAvg());
+                orderVo.setSteamAvg(orderAvg.getSteamAvg());
+                orderVo.setWattAvg(orderAvg.getWattAvg());
+            }
+
+        }
+
+    }
 }
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 5a5b52f..fa4ac48 100644
--- 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
@@ -57,8 +57,6 @@
     @Autowired
     private IDryProdRecordService prodRecordService;
 
-    @Autowired
-    private CommonAPI commonAPI;
 
     private String token;
 
@@ -317,47 +315,55 @@
     public Result<?> queryMachineRealTImeData(RealTimeDataVo realTimeDataVo) {
         TenantContext.setTenant(realTimeDataVo.getTenantid()+"");
 
-
+        // 鏌ヨ鎵�鏈夋満鍙版煡璇㈢粍瑁�
         LambdaQueryWrapper<DryEquipment> queryWrapper = new LambdaQueryWrapper<>();
-
-         queryWrapper.eq(DryEquipment::getTenantId, realTimeDataVo.getTenantid());
+        queryWrapper.eq(DryEquipment::getTenantId, realTimeDataVo.getTenantid());
         queryWrapper.eq(DryEquipment::getEnable, "Y");
         queryWrapper.orderByAsc(DryEquipment::getCode);
-
+        // 鏌ヨ鎵�鏈夋満鍙�
         List<DryEquipment> dryEquipments = equipmentService.list(queryWrapper);
+        // 鏈哄彴鍒楄〃锛岀敤浜庢晥鐜囧姣�
         List<String> list = new ArrayList<>();
-
+        // 鏁堢巼鍒楄〃锛岀敤浜庢晥鐜囧姣�
         List<Double> dList = new ArrayList<>();
+        // 鏌ヨ褰撳墠鏈哄彴宸ュ崟
         DryOrderVo orderVo = (DryOrderVo) redisUtil.hget(CacheConstants.RedisKeyEnum.WORK_ORDER.getCode(), realTimeDataVo.getTenantid() + "_" + realTimeDataVo.getMachineid());
-            try {
+        try {
+            // 濡傛灉鏈夊彲鐢ㄦ満鍙�
+            if (dryEquipments != null && dryEquipments.size() > 0) {
+                // 鏌ヨ鍏跺畠鏈哄彴宸ュ崟
+                dryEquipments.stream().forEach(item -> {
+                    // 鑾峰彇宸ュ崟
+                    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) {
+                        // 璁$畻骞茬嚗鏁堢巼锛岀敤浜庡姣�
+                        DryOrderTrendVo dryOrderTrendVo = order.getDetailList().get(order.getDetailList().size() - 1);
+                        double v = order.getOriginWeight() - dryOrderTrendVo.getWeight();
 
-
-                if (dryEquipments != null && dryEquipments.size() > 0) {
-                    dryEquipments.stream().forEach(item -> {
-                        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) {
-                            DryOrderTrendVo dryOrderTrendVo = order.getDetailList().get(order.getDetailList().size() - 1);
-                            double v = order.getOriginWeight() - dryOrderTrendVo.getWeight();
-
-                            if (v > 0 && dryOrderTrendVo.getTotalTime()>0) {
-                                DecimalFormat df = new DecimalFormat("#.00");
-                                dList.add(Double.valueOf(df.format(v / dryOrderTrendVo.getTotalTime() * 60)));
-                            } else {
-                                dList.add(50d);
-                            }
-
+                        if (v > 0 && dryOrderTrendVo.getTotalTime()>0) {
+                            DecimalFormat df = new DecimalFormat("#.00");
+                            dList.add(Double.valueOf(df.format(v / dryOrderTrendVo.getTotalTime() * 60)));
+                        } else {
+                            dList.add(50d);
                         }
-                        dList.add(0d);
-                    });
-                }
-                if (orderVo != null) {
-                    orderVo.setCompEqpNum(list);
-                    orderVo.setCompEqpEffic(dList);
-                }
-            }catch (Exception e) {
-                e.printStackTrace();
+
+                    }
+                    // 濡傛灉娌℃湁鐢熶骇锛屾晥鐜囩疆0
+                    dList.add(0d);
+                });
             }
+
+            if (orderVo != null) {
+                // 灏嗘晥鐜囧姣旀暟鎹斁鍏ュ綋鍓嶆満鍙板疄鏃舵暟鎹腑杩斿洖
+                orderVo.setCompEqpNum(list);
+                orderVo.setCompEqpEffic(dList);
+                // 鏌ヨ杩戝崄娆℃晥鐜囧拰鑳借兘鑰楀钩鍧�
+                dryOrderService.queryRecentOrderAvg(orderVo);
+            }
+        }catch (Exception e) {
+            e.printStackTrace();
+        }
         return Result.ok(orderVo);
     }
 

--
Gitblit v1.9.3