From 39cae5e98a6fd6fb7ade9c80a11f45f46d0ab4c5 Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期四, 06 二月 2025 17:01:07 +0800
Subject: [PATCH] 修改实时数据接口

---
 jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryRealTimeDataServiceImpl.java |  233 ++++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 176 insertions(+), 57 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 8def570..f867f5b 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
@@ -71,6 +71,9 @@
     @Autowired
     private MqttUtil mqttUtil;
 
+    @Value(value = "${jeecg.mqtt.enable}")
+    private boolean mqttEnable;
+
     public String getTemporaryToken() {
         if (token == null) {
             RedisUtil redisUtil = SpringContextUtils.getBean(RedisUtil.class);
@@ -88,7 +91,7 @@
     @Transactional
     public Result<?> realTimeDataHandle(RealTimeDataVo realTimeDataVo) {
         TenantContext.setTenant(realTimeDataVo.getTenantid()+"");
-       // log.info("瀹炴椂鏁版嵁锛�"+realTimeDataVo.toString());
+        log.info("瀹炴椂鏁版嵁锛�"+realTimeDataVo.toString());
 
 
         // 1 鏌ヨ鎴栧垱寤哄伐鍗�
@@ -129,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());
@@ -144,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());
@@ -201,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鍜屽伐鍗曞彿鏌ヨ鏁版嵁搴撴槸鍚︽湁璁板綍锛屾湁鍒欒繑鍥烇紝娌℃湁鍒欐柊澧炰竴鏉�
@@ -480,7 +554,7 @@
     }
 
     @Override
-    public Result<?> fitFultRecord(RealTimeDataVo vo) {
+    public Result<?> fitFaultRecord(RealTimeDataVo vo) {
         TenantContext.setTenant(vo.getTenantid()+"");
         ThreadUtil.execute(() -> {
             try {
@@ -492,7 +566,7 @@
 
                 //澶勭悊缁撴潫鍚庯紝灏唕edis涓疄鏃舵暟鎹彂閫佽嚦浜戞湇鍔″櫒
                     Map<Object, Object> toCloudFaultMap = redisUtil.hmget(MqttConstant.MQTT_REAL_FAULT);
-                    if(!toCloudFaultMap.isEmpty()){
+                    if(mqttEnable && !toCloudFaultMap.isEmpty()){
                         MqMessage< Map<Object, Object>> message = new MqMessage<>();
                         message.setData(toCloudFaultMap);
                         message.setTentId(vo.getTenantid()+"");
@@ -525,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瀽瀛樺偍鏁呴殰鏁版嵁

--
Gitblit v1.9.3