From 2871d648f1b89453e88eb9180f45fde124ff0391 Mon Sep 17 00:00:00 2001
From: zhuguifei <zhuguifei@zhuguifeideiMac.local>
Date: 星期四, 17 七月 2025 16:37:40 +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 |  226 +++++++++++++++++++------
 jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryEquipmentServiceImpl.java    |   14 +
 jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeDataParentVo.java                 |   16 +
 jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonCacheConstant.java                                  |    3 
 jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryRealTimeDataService.java         |    8 
 jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/MqttConstant.java                                         |    1 
 jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeDataVo.java                       |   71 -------
 jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeFaultVo.java                      |   11 +
 jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeProdVo.java                       |   68 +++++++
 jeecg-server-cloud/jeecg-cloud-nacos/src/main/resources/application.yml                                                |    4 
 jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryEquipmentService.java            |    2 
 jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mqtt/MqttSampleCallback.java                 |   16 +
 jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeReportVo.java                     |   56 ++++++
 jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/DryRealTimeDataController.java    |   33 +++
 14 files changed, 394 insertions(+), 135 deletions(-)

diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonCacheConstant.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonCacheConstant.java
index 9858fa0..9009e28 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonCacheConstant.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonCacheConstant.java
@@ -5,4 +5,7 @@
     String SYS_CACHE_TENANT = "sys:cache:tenant";
     //redis缂撳瓨鍚勭鎴蜂笅璁惧淇℃伅
     String DRY_CACHE_TENANT_EQUS = "dry:cache:tenant::equs";
+
+    // redis缂撳瓨鍚勭鎴蜂笅璁惧淇℃伅鍒楄〃
+    String DRY_CACHE_TENANT_EQUS_LIST = "dry:cache:tenant:equsList";
 }
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/MqttConstant.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/MqttConstant.java
index f4c85dd..6aa48fe 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/MqttConstant.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/MqttConstant.java
@@ -77,6 +77,7 @@
 
   String TENANT_UP_PREFIX = "tenant/up";
   String TENANT_UP_PREFIX_REALTIME_DATA = TENANT_UP_PREFIX + "/realTime/data";
+  String TENANT_UP_PREFIX_REALTIME_DATA_EQP = TENANT_UP_PREFIX + "/realTime/data/eqp";
   String TENANT_UP_PREFIX_FAULT_DATA = TENANT_UP_PREFIX + "/fault/data";
   String TENANT_UP_PREFIX_REAL_FAULT_DATA = TENANT_UP_PREFIX + "/real/fault/data";
 
diff --git a/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeDataParentVo.java b/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeDataParentVo.java
new file mode 100644
index 0000000..dc82272
--- /dev/null
+++ b/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeDataParentVo.java
@@ -0,0 +1,16 @@
+package org.jeecg.modules.dry.vo;
+
+import lombok.Data;
+
+@Data
+public class RealTimeDataParentVo {
+    private RealTimeDataVo realTime;
+    private RealTimeReportVo report;
+    private RealTimeFaultVo fault;
+    /**宸ュ崟鍙�*/
+    private String workorder;
+    /**绉熸埛ID*/
+    private Integer tenantid;
+    /**璁惧缂栧彿*/
+    private String machineid;
+}
diff --git a/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeDataVo.java b/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeDataVo.java
index 18aece4..72046db 100755
--- a/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeDataVo.java
+++ b/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeDataVo.java
@@ -94,23 +94,6 @@
 
     private Integer ai_time;
 
-    // private List<DryEquipment> eqpCodes;
-
-
-    /**鎺ョ鐘舵�� 0锛氳嚜鍔�   1锛氭墜鍔�  */
-    private Integer state_auto;
-
-    /**椋庣鐘舵�� 0锛氫綆浣嶉潤姝�  1锛氶珮浣嶉潤姝�  2锛氭鍦ㄤ笂鍗�  3锛氭鍦ㄤ笅闄�*/
-    private Integer state_windbox;
-
-    /**婊氱瓛鐘舵�� 0锛氶珮浣嶉潤姝�  1锛氫綆浣嶉潤姝� 2锛氭鍦ㄤ笂鍗�  3锛氭鍦ㄤ笅闄� 4锛氭杞�  5锛氬弽杞�*/
-    private Integer state_roller;
-
-    /**椋庢満鐘舵�� 0锛氬叧闂�  1锛氬紑鍚�*/
-    private Integer state_fan;
-
-    /**钂告苯闃�鐘舵�� 0锛氬叧闂� 1锛氬紑鍚�*/
-    private Integer state_valve;
 
     /**宸ュ崟鐘舵��*/
     private Integer workorder_status;
@@ -128,61 +111,7 @@
 
     private String level;
 
-    /**璁惧鏁呴殰**/
-   // private String fault;
 
-    /**---------------------鐢熶骇璁板綍鐩稿叧瀛楁瀹氫箟---s-------------------------*/
-
-    private Boolean report_flag;       // 鎻愪氦鏍囧織
-
-    private String report_head_name;         // 鍝佸悕
-    private String report_head_batch   ;     //鎵规
-    private String report_head_num     ;     //鏁伴噺--16妗�/355.8Kg
-    private String report_head_machine ;     //璁惧
-    private String report_head_accepter;     //鎺ユ枡浜�
-    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
-    private Date report_head_date    ;     //鐢熶骇鏃ユ湡
-    private String report_head_leader  ;     //鐝粍闀�
-    private String report_head_techer  ;     //宸ヨ壓鍛�
-    //妫�鏌�
-    private Boolean report_check_field ;    //鐢熶骇鐜板満
-    private Boolean report_check_file  ;    //鎵ц鏂囦欢
-    private Boolean report_check_tag   ;    //鐗╂枡鏍囩ず
-    private Boolean report_check_tool  ;    //绉伴噺鍣ㄥ叿
-    private String report_check_man   ;    //妫�鏌ヤ汉
-    private Boolean report_check_status;    //妫�鏌ユ儏鍐�
-    private String report_check_qa ;     //QA
-    private String report_check_record    ;     //寮傚父璁板綍
-    //鐢熶骇
-    private Boolean report_product_view    ;    //澶栬妫�鏌�
-    private Boolean report_product_wind    ;    //鍚归
-    private Boolean report_product_sun     ;    //鏅�
-    private Boolean report_product_low_dry ;    //浣庢俯骞茬嚗
-    private Boolean report_product_dry     ;    //骞茬嚗
-    private String  report_product_start   ;     //寮�濮嬫椂闂�
-    private String  report_product_end     ;     //缁撴潫鏃堕棿
-    private Integer report_product_total   ;    //骞茬嚗鎬绘椂闂�
-    private Boolean report_product_check   ;    //骞茬嚗妫�鏌�
-    private String  report_product_man1    ;     //鎿嶄綔浜�
-    private String  report_product_man2    ;     //澶嶆牳浜�
-    private Double  report_product_weight  ;     //鎿嶄綔鍚庨噸閲�
-    private Double  report_product_waste   ;     //搴熸枡鏁伴噺
-    private Double  report_product_use     ;     //鏀剁巼
-    private String  report_product_qa      ;     //QA
-    //娓呭満
-    private Boolean report_clean_machine   ;    //璁惧娓呯悊
-    private Boolean report_clean_waste     ;    //搴熸枡娓呯悊
-    private Boolean report_clean_tool      ;    //宸ュ叿娓呯悊
-    private Boolean report_clean_door      ;    //闂ㄧ獥娓呯悊
-    private Boolean report_clean_box       ;    //绠变綋娓呯悊
-    private Boolean report_clean_record    ;    //鐢熶骇璁板綍娓呯悊
-    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
-    private Date report_clean_date      ;     //娓呭満鏃ユ湡
-    private String report_clean_man       ;     //娓呭満浜�
-    private Boolean report_clean_confirm   ;    //娓呭満纭
-    private String report_clean_qa        ;     //QA
-
-    /**---------------------鐢熶骇璁板綍鐩稿叧瀛楁瀹氫箟---e-------------------------*/
 
 
 }
diff --git a/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeFaultVo.java b/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeFaultVo.java
new file mode 100644
index 0000000..7dae163
--- /dev/null
+++ b/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeFaultVo.java
@@ -0,0 +1,11 @@
+package org.jeecg.modules.dry.vo;
+
+import lombok.Data;
+
+@Data
+public class RealTimeFaultVo {
+    private String error;
+    private String warning;
+    private String info;
+
+}
diff --git a/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeProdVo.java b/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeProdVo.java
new file mode 100644
index 0000000..9409994
--- /dev/null
+++ b/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeProdVo.java
@@ -0,0 +1,68 @@
+package org.jeecg.modules.dry.vo;
+
+import lombok.Data;
+
+@Data
+public class RealTimeProdVo {
+    private Integer ai_time;
+    private Integer ai_total_time;
+    /**鑷姩 true/鎵嬪姩 false*/
+    private Boolean auto;
+    /**鑽℃枡寤舵椂*/
+    private Integer delay;
+    /**鐜婀垮害*/
+    private Double envhum;
+    /**鐜娓╁害*/
+    private Double envtemp;
+    /**椋庢満棰戠巼*/
+    private Double fanfrq;
+    /**閰嶆柟绱㈠紩*/
+    private Integer index;
+    private String level;
+    /**娓╁害杩囦綆 true/姝e父 false*/
+    private Boolean lowalarm;
+
+    /**鍒濆鍚按鐜囷紙璁惧畾鍊硷級*/
+    private Double moisture1;
+    /**瀹炴椂鍚按鐜�*/
+    private Double moisture2;
+    /**鐩爣鍚按鐜�*/
+    private Double moisture3;
+    /**鑽潗鍚嶇О*/
+    private String name;
+    /**涓婁綅鏈� true/PLC false*/
+    private Boolean plcdisable;
+    /**寮�濮嬪共鐖�*/
+    private Boolean start;
+    /**钂告苯娑堣��**/
+    private Double steam;
+    /**鏆傚仠鏍囧織 true/false*/
+    private Boolean stop;
+    /**椋庢満娓╁害*/
+    private Double temp1;
+    /**椋庣娓╁害*/
+    private Double temp2;
+    /**娓╁害璁惧畾鍊�*/
+    private Double temp3;
+
+    /**鏃堕棿璁惧畾鍊�*/
+    private Integer time1;
+    /**鏃堕棿璁℃暟*/
+    private Integer time2;
+    /**鎬绘椂闂�*/
+    private Integer time3;
+    /**缈绘枡娆℃暟*/
+    private Integer turntime;
+    /**鐢佃兘娑堣��**/
+    private Double watt;
+    /**鎶曟枡閲忥紙绛愶級*/
+    private Integer weight1;
+    /**鍒濆閲嶉噺*/
+    private Double weight2;
+    /**杩囩▼瀹炴椂閲嶉噺*/
+    private Double weight3;
+    /**鐑 true/鍐烽 false*/
+    private Boolean wind;
+    /**宸ュ崟鐘舵��*/
+    private Integer workorder_status;
+}
diff --git a/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeReportVo.java b/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeReportVo.java
new file mode 100644
index 0000000..cc8f51a
--- /dev/null
+++ b/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeReportVo.java
@@ -0,0 +1,56 @@
+package org.jeecg.modules.dry.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+@Data
+public class RealTimeReportVo {
+    private Boolean report_flag;       // 鎻愪氦鏍囧織
+    private String report_head_name;         // 鍝佸悕
+    private String report_head_batch   ;     //鎵规
+    private String report_head_num     ;     //鏁伴噺--16妗�/355.8Kg
+    private String report_head_machine ;     //璁惧
+    private String report_head_accepter;     //鎺ユ枡浜�
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    private Date report_head_date    ;     //鐢熶骇鏃ユ湡
+    private String report_head_leader  ;     //鐝粍闀�
+    private String report_head_techer  ;     //宸ヨ壓鍛�
+    //妫�鏌�
+    private Boolean report_check_field ;    //鐢熶骇鐜板満
+    private Boolean report_check_file  ;    //鎵ц鏂囦欢
+    private Boolean report_check_tag   ;    //鐗╂枡鏍囩ず
+    private Boolean report_check_tool  ;    //绉伴噺鍣ㄥ叿
+    private String report_check_man   ;    //妫�鏌ヤ汉
+    private Boolean report_check_status;    //妫�鏌ユ儏鍐�
+    private String report_check_qa ;     //QA
+    private String report_check_record    ;     //寮傚父璁板綍
+    //鐢熶骇
+    private Boolean report_product_view    ;    //澶栬妫�鏌�
+    private Boolean report_product_wind    ;    //鍚归
+    private Boolean report_product_sun     ;    //鏅�
+    private Boolean report_product_low_dry ;    //浣庢俯骞茬嚗
+    private Boolean report_product_dry     ;    //骞茬嚗
+    private String  report_product_start   ;     //寮�濮嬫椂闂�
+    private String  report_product_end     ;     //缁撴潫鏃堕棿
+    private Integer report_product_total   ;    //骞茬嚗鎬绘椂闂�
+    private Boolean report_product_check   ;    //骞茬嚗妫�鏌�
+    private String  report_product_man1    ;     //鎿嶄綔浜�
+    private String  report_product_man2    ;     //澶嶆牳浜�
+    private Double  report_product_weight  ;     //鎿嶄綔鍚庨噸閲�
+    private Double  report_product_waste   ;     //搴熸枡鏁伴噺
+    private Double  report_product_use     ;     //鏀剁巼
+    private String  report_product_qa      ;     //QA
+    //娓呭満
+    private Boolean report_clean_machine   ;    //璁惧娓呯悊
+    private Boolean report_clean_waste     ;    //搴熸枡娓呯悊
+    private Boolean report_clean_tool      ;    //宸ュ叿娓呯悊
+    private Boolean report_clean_door      ;    //闂ㄧ獥娓呯悊
+    private Boolean report_clean_box       ;    //绠变綋娓呯悊
+    private Boolean report_clean_record    ;    //鐢熶骇璁板綍娓呯悊
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    private Date report_clean_date      ;     //娓呭満鏃ユ湡
+    private String report_clean_man       ;     //娓呭満浜�
+    private Boolean report_clean_confirm   ;    //娓呭満纭
+    private String report_clean_qa        ;     //QA
+}
diff --git a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/DryRealTimeDataController.java b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/DryRealTimeDataController.java
index e92e401..3344466 100644
--- a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/DryRealTimeDataController.java
+++ b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/DryRealTimeDataController.java
@@ -100,6 +100,31 @@
         return dryRealTimeDataService.realTimeDataHandle(realTimeDataVo);
     }
 
+    @ApiOperation(value="鎺ユ敹瀹炴椂鏁版嵁Json", notes="璁惧瀹炴椂鏁版嵁涓婁紶")
+    @PostMapping("/sendRealTimeDataJson2")
+    public Result<?> realTimeDataJson2(@RequestBody RealTimeDataParentVo realTimeDataParentVo)  {
+        try {
+            if (mqttConfig.isEnable() && "user".equals(mqttConfig.getRole())){
+                MqttMessage mqttMessage = new MqttMessage();
+                mqttMessage.setQos(0);
+                mqttMessage.setPayload(JSONObject.toJSONString(realTimeDataParentVo).getBytes());
+                mqttUtil.getMqttClient().publish(MqttConstant.TENANT_UP_PREFIX_REALTIME_DATA,mqttMessage);
+                //澶勭悊鏁呴殰淇℃伅
+                dryRealTimeDataService.fitFaultRecord(realTimeDataParentVo);
+            }
+
+            if ("user".equals(mqttConfig.getRole()) && realTimeDataParentVo.getFault() != null){
+                //澶勭悊鏁呴殰淇℃伅
+                dryRealTimeDataService.fitFaultRecord(realTimeDataParentVo);
+            }
+
+        } catch (MqttException e) {
+            e.printStackTrace();
+        }
+
+        return dryRealTimeDataService.realTimeDataHandle(realTimeDataParentVo);
+    }
+
 
 
     @ApiOperation(value="鑾峰彇璁惧瀹炴椂鏁版嵁", notes="閫氳繃绉熸埛ID鍜岃澶囩紪鐮佽幏鍙栧疄鏃舵暟鎹�")
@@ -115,6 +140,14 @@
     }
 
 
+    @ApiOperation(value="鑾峰彇鎵�鏈夋満鍙�", notes="閫氳繃绉熸埛ID鑾峰彇鎵�鏈夋満鍙版暟鎹�")
+    @GetMapping("/queryAllEqps")
+    public Result<?> queryAllEqps(DryEquipment equipment) {
+        List<DryEquipment> dryEquipments = dryEquipmentService.queryEqusByTenantId(equipment);
+        return  Result.OK(dryEquipments);
+    }
+
+
     /**
      * 1001 椋庣鍗�     1002 椋庣闄�
      * 1003 婊氱瓛鍗�     1004 婊氱瓛闄�
diff --git a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mqtt/MqttSampleCallback.java b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mqtt/MqttSampleCallback.java
index e835376..b381df7 100644
--- a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mqtt/MqttSampleCallback.java
+++ b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mqtt/MqttSampleCallback.java
@@ -24,6 +24,7 @@
 import org.jeecg.modules.dry.service.*;
 import org.jeecg.modules.dry.vo.DryEquipmentVo;
 import org.jeecg.modules.dry.vo.DryFaultRecordVo;
+import org.jeecg.modules.dry.vo.RealTimeDataParentVo;
 import org.jeecg.modules.dry.vo.RealTimeDataVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -215,6 +216,17 @@
                 });
 
                 break;
+            // 鎺ユ敹璁惧瀹炴椂鏁版嵁-鏈哄彴
+            case MqttConstant.TENANT_UP_PREFIX_REALTIME_DATA_EQP:
+                ThreadUtil.execute(() -> {
+                    try {
+                        RealTimeDataParentVo vo = JSON.parseObject(message, RealTimeDataParentVo.class);
+                        realTimeDataService.realTimeDataHandle(vo);
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                });
+                break;
             //鍚勭鎴蜂笂浼犵殑瀹炴椂鎶ヨ鏁版嵁
             case MqttConstant.TENANT_UP_PREFIX_REAL_FAULT_DATA: {
 
@@ -243,8 +255,6 @@
                 //鍙戦�佸箍鎾�
                 System.err.println("骞挎挱缁欙細" + recTopic);
                 sendMqttMessage(MqttConstant.SERVICE_BROADCAST_TENANT_REAL_FAULT, mqMessage, 1);
-
-
             }
             break;
             //绉诲姩绔富鍔ㄨ姹傝澶囧疄鏃舵晠闅滄暟鎹紙鐢ㄤ簬椤甸潰鍒氭墦寮�鏃舵媺鍙栦竴娆℃暟鎹級
@@ -260,8 +270,6 @@
                                 entry -> entry.getKey().toString(),
                                 entry -> (DryFaultRecordVo) entry.getValue()
                         ));
-
-
                 if (dryFaultMap.isEmpty()) {
                     return;
                 }
diff --git a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryEquipmentService.java b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryEquipmentService.java
index 6e39cbd..67a72ee 100755
--- a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryEquipmentService.java
+++ b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryEquipmentService.java
@@ -1,5 +1,6 @@
 package org.jeecg.modules.dry.service;
 
+import org.jeecg.common.api.vo.Result;
 import org.jeecg.modules.dry.entity.DryEquipment;
 import com.baomidou.mybatisplus.extension.service.IService;
 
@@ -24,4 +25,5 @@
      */
     Map<String,DryEquipment>  queryEquByTenantId(Integer tenantId);
 
+    List<DryEquipment> queryEqusByTenantId(DryEquipment dryEquipment);
 }
diff --git a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryRealTimeDataService.java b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryRealTimeDataService.java
index 8c64d5c..0efdafb 100755
--- a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryRealTimeDataService.java
+++ b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryRealTimeDataService.java
@@ -1,9 +1,7 @@
 package org.jeecg.modules.dry.service;
 
 import org.jeecg.common.api.vo.Result;
-import org.jeecg.modules.dry.vo.CommandMessageVo;
-import org.jeecg.modules.dry.vo.RealTimeDataVo;
-import org.jeecg.modules.dry.vo.StatisticsDataVo;
+import org.jeecg.modules.dry.vo.*;
 
 public interface IDryRealTimeDataService {
     Result<?> realTimeDataHandle(RealTimeDataVo realTimeDataVo);
@@ -22,4 +20,8 @@
      * @return
      */
     Result<?> fitFaultRecord(RealTimeDataVo realTimeDataVo);
+
+    void fitFaultRecord(RealTimeDataParentVo realTimeDataParentVo);
+
+    Result<?> realTimeDataHandle(RealTimeDataParentVo realTimeDataParentVo);
 }
diff --git a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryEquipmentServiceImpl.java b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryEquipmentServiceImpl.java
index 93ff976..0f4fb91 100755
--- a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryEquipmentServiceImpl.java
+++ b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryEquipmentServiceImpl.java
@@ -1,6 +1,7 @@
 package org.jeecg.modules.dry.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.config.TenantContext;
 import org.jeecg.common.constant.CommonCacheConstant;
 import org.jeecg.common.util.RedisUtil;
@@ -63,4 +64,17 @@
                 ));
         return userMap;
     }
+
+    @Override
+    @Cacheable(cacheNames = CommonCacheConstant.DRY_CACHE_TENANT_EQUS_LIST, key = "#dryEquipment.tenantId+':'+#dryEquipment.enable" , unless = "#result == null " )
+    public List<DryEquipment> queryEqusByTenantId(DryEquipment dryEquipment) {
+        TenantContext.setTenant(dryEquipment.getTenantId() +"");
+        QueryWrapper<DryEquipment> queryWrapper  = new QueryWrapper<>();
+        queryWrapper.lambda().eq(DryEquipment::getTenantId,dryEquipment.getTenantId());
+        if (dryEquipment.getEnable()!=null){
+            queryWrapper.lambda().eq(DryEquipment::getEnable,dryEquipment.getEnable());
+        }
+        List<DryEquipment> equipmentList = this.list(queryWrapper);
+        return equipmentList;
+    }
 }
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 74d1590..58b10ca 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
@@ -91,7 +91,7 @@
     @Transactional
     public Result<?> realTimeDataHandle(RealTimeDataVo realTimeDataVo) {
         TenantContext.setTenant(realTimeDataVo.getTenantid()+"");
-       // log.info("瀹炴椂鏁版嵁锛�"+realTimeDataVo.toString());
+        log.info("瀹炴椂鏁版嵁锛�"+realTimeDataVo.toString());
 
 
         // 1 鏌ヨ鎴栧垱寤哄伐鍗�
@@ -132,11 +132,6 @@
         orderVo.setEnvTemp(realTimeDataVo.getEnvtemp());
         orderVo.setRemain(realTimeDataVo.getAi_total_time());
         orderVo.setCurRemain(realTimeDataVo.getAi_time());
-        orderVo.setState_fan(realTimeDataVo.getState_fan());
-        orderVo.setState_roller(realTimeDataVo.getState_roller());
-        orderVo.setState_auto(realTimeDataVo.getState_auto());
-        orderVo.setState_windbox(realTimeDataVo.getState_windbox());
-        orderVo.setState_valve(realTimeDataVo.getState_valve());
         orderVo.setOrderStatus(realTimeDataVo.getWorkorder_status());
         orderVo.setEqp_status(realTimeDataVo.getEqp_status());
 //        orderVo.setEqp_state(realTimeDataVo.getEqp_state());
@@ -147,55 +142,6 @@
 
         DryOrderTrendVo trendVo = new DryOrderTrendVo(realTimeDataVo);
         // 2.2 淇濆瓨宸ュ崟鍚按鐜囧彉鍖� 鎴� 閲嶉噺鍙樺寲
-
-        if(realTimeDataVo.getReport_flag()) {
-            DryProdRecord prodRecord = new DryProdRecord();
-            prodRecord.setReportHeadName(realTimeDataVo.getReport_head_name());
-            prodRecord.setReportHeadBatch(realTimeDataVo.getReport_head_batch());
-            prodRecord.setReportHeadNum(realTimeDataVo.getReport_head_num());
-            prodRecord.setReportHeadMachine(realTimeDataVo.getReport_head_machine());
-            prodRecord.setReportHeadAccepter(realTimeDataVo.getReport_head_accepter());
-            prodRecord.setReportHeadDate(realTimeDataVo.getReport_head_date());
-            prodRecord.setReportHeadLeader(realTimeDataVo.getReport_head_leader());
-            prodRecord.setReportHeadTecher(realTimeDataVo.getReport_head_techer());
-
-            prodRecord.setReportCheckField(realTimeDataVo.getReport_check_field()?1:0);
-            prodRecord.setReportCheckFile(realTimeDataVo.getReport_check_file()?1:0);
-            prodRecord.setReportCheckTag(realTimeDataVo.getReport_check_tag()?1:0);
-            prodRecord.setReportCheckTool(realTimeDataVo.getReport_check_tool()?1:0);
-            prodRecord.setReportCheckMan(realTimeDataVo.getReport_check_man());
-            prodRecord.setReportCheckStatus(realTimeDataVo.getReport_check_status()?1:0);
-            prodRecord.setReportCheckQa(realTimeDataVo.getReport_check_qa());
-            prodRecord.setReportCheckRecord(realTimeDataVo.getReport_check_record());
-
-            prodRecord.setReportProductView(realTimeDataVo.getReport_product_view()?1:0);
-            prodRecord.setReportProductWind(realTimeDataVo.getReport_product_wind()?1:0);
-            prodRecord.setReportProductSun(realTimeDataVo.getReport_product_sun()?1:0);
-            prodRecord.setReportProductLowDry(realTimeDataVo.getReport_product_low_dry()?1:0);
-            prodRecord.setReportProductDry(realTimeDataVo.getReport_product_dry()?1:0);
-            prodRecord.setReportProductStart(realTimeDataVo.getReport_product_start());
-            prodRecord.setReportProductEnd(realTimeDataVo.getReport_product_end());
-            prodRecord.setReportProductTotal(realTimeDataVo.getReport_product_total());
-            prodRecord.setReportProductCheck(realTimeDataVo.getReport_product_check()?1:0);
-            prodRecord.setReportProductMan1(realTimeDataVo.getReport_product_man1());
-            prodRecord.setReportProductMan2(realTimeDataVo.getReport_product_man2());
-            prodRecord.setReportProductWeight(realTimeDataVo.getReport_product_weight());
-            prodRecord.setReportProductWaste(realTimeDataVo.getReport_product_waste());
-            prodRecord.setReportProductUse(realTimeDataVo.getReport_product_use());
-            prodRecord.setReportProductQa(realTimeDataVo.getReport_product_qa());
-
-            prodRecord.setReportCleanMachine(realTimeDataVo.getReport_clean_machine()?1:0);
-            prodRecord.setReportCleanWaste(realTimeDataVo.getReport_clean_waste()?1:0);
-            prodRecord.setReportCleanTool(realTimeDataVo.getReport_clean_tool()?1:0);
-            prodRecord.setReportCleanDoor(realTimeDataVo.getReport_clean_door()?1:0);
-            prodRecord.setReportCleanBox(realTimeDataVo.getReport_clean_box()?1:0);
-            prodRecord.setReportCleanRecord(realTimeDataVo.getReport_clean_record()?1:0);
-            prodRecord.setReportCleanDate(realTimeDataVo.getReport_clean_date());
-            prodRecord.setReportCleanMan(realTimeDataVo.getReport_clean_man());
-            prodRecord.setReportCleanConfirm(realTimeDataVo.getReport_clean_confirm()?1:0);
-            prodRecord.setReportCleanQa(realTimeDataVo.getReport_clean_qa());
-            prodRecordService.save(prodRecord);
-        }
         saveOrderTrendVo(trendVo, orderVo);
         orderVo.setTrendVo(trendVo);
         orderVo.getBellowsTemp().put(realTimeDataVo.getTime3(), realTimeDataVo.getTemp2());
@@ -204,6 +150,131 @@
                 realTimeDataVo.getTenantid()+"_"+realTimeDataVo.getMachineid(),orderVo, 60*60);
         return Result.ok();
     }
+
+
+
+
+    @Override
+    @Transactional
+    public Result<?> realTimeDataHandle(RealTimeDataParentVo realTimeDataParentVo) {
+        TenantContext.setTenant(realTimeDataParentVo.getTenantid()+"");
+        log.info("瀹炴椂鏁版嵁锛�"+realTimeDataParentVo.toString());
+        if (realTimeDataParentVo.getRealTime() != null) {
+            RealTimeDataVo realTimeDataVo = realTimeDataParentVo.getRealTime();
+
+            // 1 鏌ヨ鎴栧垱寤哄伐鍗�
+            // 1.1 浠巖edis鍙栧嚭宸ュ崟缂撳瓨
+            DryOrderVo orderVo = (DryOrderVo) redisUtil.hget(CacheConstants.RedisKeyEnum.WORK_ORDER.getCode(),
+                    realTimeDataParentVo.getTenantid()+"_"+realTimeDataParentVo.getMachineid());
+            // 1.2 濡傛灉鏈夌紦瀛樿褰�
+            if(orderVo != null && orderVo.getCode().equals(realTimeDataParentVo.getWorkorder())) {
+
+                // 1.3 娌℃湁缂撳瓨璁板綍鍐嶆煡璇㈡暟鎹簱
+            } else {
+                // 鏍规嵁绉熸埛id鍜屽伐鍗曞彿鏌ヨ鏁版嵁搴撴槸鍚︽湁璁板綍锛屾湁鍒欒繑鍥烇紝娌℃湁鍒欐柊澧炰竴鏉″啀杩斿洖
+                orderVo = getOrSaveDryOrderVoDB(realTimeDataVo);
+            }
+            if (orderVo == null) {
+                log.error("宸ュ崟涓嶅瓨鍦紝宸ュ崟鍙凤細"+realTimeDataParentVo.getWorkorder()+",璁惧锛�" + realTimeDataParentVo.getMachineid() +",鑽潗锛�" + realTimeDataVo.getName());
+                return Result.error("宸ュ崟涓嶅瓨鍦�");
+            }
+
+            // 2 鏇存柊宸ュ崟瀹炴椂鏁版嵁
+            // 2.1 灏嗗伐鍗曚腑鐨勬暟鎹浛鎹负鏈�鏂版暟鎹�
+            realTimeDataVo.setOrderId(orderVo.getId());
+            orderVo.setInitial(realTimeDataVo.getMoisture1());
+            orderVo.setDryTime(realTimeDataVo.getTime3());
+            orderVo.setDelay(realTimeDataVo.getDelay());
+            orderVo.setTurn(realTimeDataVo.getTurntime());
+            orderVo.setYield(realTimeDataVo.getWeight3());
+            orderVo.setStart(realTimeDataVo.getStart());
+            orderVo.setAuto(realTimeDataVo.getAuto());
+            orderVo.setPlcdisable(realTimeDataVo.getPlcdisable());
+            orderVo.setLowalarm(realTimeDataVo.getLowalarm());
+            orderVo.setWind(realTimeDataVo.getWind());
+            orderVo.setOriginWeight(realTimeDataVo.getWeight2());
+            orderVo.setWatt(realTimeDataVo.getWatt());
+            orderVo.setSteam(realTimeDataVo.getSteam());
+            orderVo.setEnvHum(realTimeDataVo.getEnvhum());
+            orderVo.setEnvTemp(realTimeDataVo.getEnvtemp());
+            orderVo.setRemain(realTimeDataVo.getAi_total_time());
+            orderVo.setCurRemain(realTimeDataVo.getAi_time());
+            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());
+            orderVo.setLevel(realTimeDataVo.getLevel());
+            DryOrderTrendVo trendVo = new DryOrderTrendVo(realTimeDataVo);
+            // 2.2 淇濆瓨宸ュ崟鍚按鐜囧彉鍖� 鎴� 閲嶉噺鍙樺寲
+
+            saveOrderTrendVo(trendVo, orderVo);
+            orderVo.setTrendVo(trendVo);
+            orderVo.getBellowsTemp().put(realTimeDataVo.getTime3(), realTimeDataVo.getTemp2());
+
+            // 2.3 鏇存柊鍒皉edis缂撳瓨
+            redisUtil.hset(CacheConstants.RedisKeyEnum.WORK_ORDER.getCode(),
+                    realTimeDataVo.getTenantid()+"_"+realTimeDataVo.getMachineid(),orderVo, 60*60);
+        }
+
+        if (realTimeDataParentVo.getReport() != null) {
+            saveReport(realTimeDataParentVo);
+        }
+        return Result.ok();
+    }
+
+    private void saveReport(RealTimeDataParentVo realTimeDataParentVo) {
+        RealTimeReportVo report = realTimeDataParentVo.getReport();
+        if(report.getReport_flag()) {
+            DryProdRecord prodRecord = new DryProdRecord();
+            prodRecord.setReportHeadName(report.getReport_head_name());
+            prodRecord.setReportHeadBatch(report.getReport_head_batch());
+            prodRecord.setReportHeadNum(report.getReport_head_num());
+            prodRecord.setReportHeadMachine(report.getReport_head_machine());
+            prodRecord.setReportHeadAccepter(report.getReport_head_accepter());
+            prodRecord.setReportHeadDate(report.getReport_head_date());
+            prodRecord.setReportHeadLeader(report.getReport_head_leader());
+            prodRecord.setReportHeadTecher(report.getReport_head_techer());
+
+            prodRecord.setReportCheckField(report.getReport_check_field()?1:0);
+            prodRecord.setReportCheckFile(report.getReport_check_file()?1:0);
+            prodRecord.setReportCheckTag(report.getReport_check_tag()?1:0);
+            prodRecord.setReportCheckTool(report.getReport_check_tool()?1:0);
+            prodRecord.setReportCheckMan(report.getReport_check_man());
+            prodRecord.setReportCheckStatus(report.getReport_check_status()?1:0);
+            prodRecord.setReportCheckQa(report.getReport_check_qa());
+            prodRecord.setReportCheckRecord(report.getReport_check_record());
+
+            prodRecord.setReportProductView(report.getReport_product_view()?1:0);
+            prodRecord.setReportProductWind(report.getReport_product_wind()?1:0);
+            prodRecord.setReportProductSun(report.getReport_product_sun()?1:0);
+            prodRecord.setReportProductLowDry(report.getReport_product_low_dry()?1:0);
+            prodRecord.setReportProductDry(report.getReport_product_dry()?1:0);
+            prodRecord.setReportProductStart(report.getReport_product_start());
+            prodRecord.setReportProductEnd(report.getReport_product_end());
+            prodRecord.setReportProductTotal(report.getReport_product_total());
+            prodRecord.setReportProductCheck(report.getReport_product_check()?1:0);
+            prodRecord.setReportProductMan1(report.getReport_product_man1());
+            prodRecord.setReportProductMan2(report.getReport_product_man2());
+            prodRecord.setReportProductWeight(report.getReport_product_weight());
+            prodRecord.setReportProductWaste(report.getReport_product_waste());
+            prodRecord.setReportProductUse(report.getReport_product_use());
+            prodRecord.setReportProductQa(report.getReport_product_qa());
+
+            prodRecord.setReportCleanMachine(report.getReport_clean_machine()?1:0);
+            prodRecord.setReportCleanWaste(report.getReport_clean_waste()?1:0);
+            prodRecord.setReportCleanTool(report.getReport_clean_tool()?1:0);
+            prodRecord.setReportCleanDoor(report.getReport_clean_door()?1:0);
+            prodRecord.setReportCleanBox(report.getReport_clean_box()?1:0);
+            prodRecord.setReportCleanRecord(report.getReport_clean_record()?1:0);
+            prodRecord.setReportCleanDate(report.getReport_clean_date());
+            prodRecord.setReportCleanMan(report.getReport_clean_man());
+            prodRecord.setReportCleanConfirm(report.getReport_clean_confirm()?1:0);
+            prodRecord.setReportCleanQa(report.getReport_clean_qa());
+            prodRecordService.save(prodRecord);
+        }
+    }
+
 
     /**
      * 鏍规嵁绉熸埛id鍜屽伐鍗曞彿鏌ヨ鏁版嵁搴撴槸鍚︽湁璁板綍锛屾湁鍒欒繑鍥烇紝娌℃湁鍒欐柊澧炰竴鏉�
@@ -528,6 +599,51 @@
         return null;
     }
 
+    @Override
+    public void fitFaultRecord(RealTimeDataParentVo vo) {
+        TenantContext.setTenant(vo.getTenantid()+"");
+        ThreadUtil.execute(() -> {
+            try {
+                //瑙f瀽瀛樺偍鎶ヨ鏁版嵁
+                List<DryFaultRecord> faultRecords1 = fitFault(vo.getFault().getError(), vo.getWorkorder(), vo.getTenantid(), vo.getMachineid(), 1);
+                List<DryFaultRecord> faultRecords2 = fitFault(vo.getFault().getWarning(), vo.getWorkorder(), vo.getTenantid(), vo.getMachineid(), 2);
+                faultRecords1.addAll(faultRecords2);
+
+
+                //澶勭悊缁撴潫鍚庯紝灏唕edis涓疄鏃舵暟鎹彂閫佽嚦浜戞湇鍔″櫒
+                Map<Object, Object> toCloudFaultMap = redisUtil.hmget(MqttConstant.MQTT_REAL_FAULT);
+                if(mqttEnable && !toCloudFaultMap.isEmpty()){
+                    MqMessage< Map<Object, Object>> message = new MqMessage<>();
+                    message.setData(toCloudFaultMap);
+                    message.setTentId(vo.getTenantid()+"");
+                    MqttMessage mqttMessage = new MqttMessage();
+                    mqttMessage.setQos(0);
+                    mqttMessage.setPayload(JSON.toJSONString(message).getBytes());
+                    mqttUtil.getMqttClient().publish(MqttConstant.TENANT_UP_PREFIX_REAL_FAULT_DATA,mqttMessage);
+                }
+
+
+                //瑕佷繚瀛樼殑鍘嗗彶鏁呴殰
+                if(!faultRecords1.isEmpty()){
+                    MqMessage<List<DryFaultRecord>> message = new MqMessage<>();
+                    message.setData(faultRecords1);
+                    message.setTentId(vo.getTenantid()+"");
+                    MqttMessage mqttMessage = new MqttMessage();
+                    mqttMessage.setQos(0);
+                    mqttMessage.setPayload((JSON.toJSONString(message).getBytes()));
+                    mqttUtil.getMqttClient().publish(MqttConstant.TENANT_UP_PREFIX_FAULT_DATA,mqttMessage);
+                }
+
+
+
+
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        });
+
+    }
+
 
     /**
      * 瑙f瀽瀛樺偍鏁呴殰鏁版嵁
diff --git a/jeecg-server-cloud/jeecg-cloud-nacos/src/main/resources/application.yml b/jeecg-server-cloud/jeecg-cloud-nacos/src/main/resources/application.yml
index bbd97d8..8ffe3bc 100755
--- a/jeecg-server-cloud/jeecg-cloud-nacos/src/main/resources/application.yml
+++ b/jeecg-server-cloud/jeecg-cloud-nacos/src/main/resources/application.yml
@@ -12,9 +12,9 @@
 db:
   num: 1
   password:
-    '0': ${MYSQL-PWD:root}
+    '0': ${MYSQL-PWD:123456}
   url:
-    '0': jdbc:mysql://${MYSQL-HOST:localhost}:${MYSQL-PORT:3306}/${MYSQL-DB:nacos-herb}?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
+    '0': jdbc:mysql://${MYSQL-HOST:localhost}:${MYSQL-PORT:3306}/${MYSQL-DB:nacos}?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
   user:
     '0': ${MYSQL-USER:root}
 management:

--
Gitblit v1.9.3