From c65ab218b14e87489f1594b2d932f7bd54b3ba11 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期五, 17 十月 2025 13:34:19 +0800
Subject: [PATCH] 数采调整

---
 cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java |  180 +++++++++++---------
 cnas-device/src/main/java/com/ruoyi/device/constant/DCResistanceMqttConstants.java    |    2 
 inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderMapper.java             |    3 
 ruoyi-common/src/main/java/com/ruoyi/common/utils/RedisUtil.java                      |   49 +++++
 inspect-server/src/main/java/com/ruoyi/inspect/vo/IfsOrderVO.java                     |   39 ++++
 cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMetricRecordMapper.java       |    2 
 cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMapper.java                   |    2 
 cnas-device/src/main/java/com/ruoyi/device/mqtt/MQCallback.java                       |    9 
 cnas-device/src/main/java/com/ruoyi/device/mapper/CollectBridgeMapper.java            |    2 
 cnas-device/src/main/java/com/ruoyi/device/utils/DataAcquisition.java                 |   87 +--------
 cnas-device/src/main/java/com/ruoyi/device/vo/DeviceMqttVO.java                       |    2 
 cnas-device/src/main/java/com/ruoyi/device/service/impl/DataConfigServiceImpl.java    |    7 
 cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java        |   95 ++++++++--
 basic-server/src/main/java/com/ruoyi/basic/mapper/StructureItemParameterMapper.java   |    2 
 inspect-server/src/main/resources/mapper/InsOrderMapper.xml                           |   18 ++
 cnas-device/src/main/java/com/ruoyi/device/pojo/CollectBridge.java                    |   21 ++
 inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsSampleMapper.java            |    2 
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java  |    6 
 cnas-device/src/main/java/com/ruoyi/device/service/CollectBridgeService.java          |    4 
 19 files changed, 344 insertions(+), 188 deletions(-)

diff --git a/basic-server/src/main/java/com/ruoyi/basic/mapper/StructureItemParameterMapper.java b/basic-server/src/main/java/com/ruoyi/basic/mapper/StructureItemParameterMapper.java
index 017c66a..43e8880 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/mapper/StructureItemParameterMapper.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/mapper/StructureItemParameterMapper.java
@@ -6,6 +6,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.basic.dto.TestItemDto;
 import com.ruoyi.basic.pojo.StructureItemParameter;
+import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -17,6 +18,7 @@
  * @author makejava
  * @since 2024-02-26 16:21:17
  */
+@Mapper
 public interface StructureItemParameterMapper extends BaseMapper<StructureItemParameter> {
 
     IPage<StructureItemParameter> selectItemParameterList(Page page, @Param("ew") QueryWrapper<StructureItemParameter> ew);
diff --git a/cnas-device/src/main/java/com/ruoyi/device/constant/DCResistanceMqttConstants.java b/cnas-device/src/main/java/com/ruoyi/device/constant/DCResistanceMqttConstants.java
index 421baf0..cca34ae 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/constant/DCResistanceMqttConstants.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/constant/DCResistanceMqttConstants.java
@@ -1,7 +1,7 @@
 package com.ruoyi.device.constant;
 
 /**
- * 鐩存祦鐢甸樆mqtt娣戝悰灞炴�с�恉ataStream銆戠殑鏍囪瘑甯搁噺
+ * 鐩存祦鐢甸樆mqtt鏁版嵁灞炴�с�恉ataStream銆戠殑鏍囪瘑甯搁噺
  */
 public class DCResistanceMqttConstants {
 
diff --git a/cnas-device/src/main/java/com/ruoyi/device/mapper/CollectBridgeMapper.java b/cnas-device/src/main/java/com/ruoyi/device/mapper/CollectBridgeMapper.java
index 7392b4e..3374023 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/mapper/CollectBridgeMapper.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/mapper/CollectBridgeMapper.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.device.pojo.CollectBridge;
+import org.apache.ibatis.annotations.Mapper;
 
 /**
  * 鏁板瓧鐢垫ˉ閲囬泦
@@ -9,6 +10,7 @@
  * @author zhuo
  * @since 2025-02-19
  */
+@Mapper
 public interface CollectBridgeMapper extends BaseMapper<CollectBridge> {
 
 }
diff --git a/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMapper.java b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMapper.java
index be50081..ed6f174 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMapper.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMapper.java
@@ -6,6 +6,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.device.dto.DeviceDto;
 import com.ruoyi.device.pojo.Device;
+import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -14,6 +15,7 @@
 /**
  * 璁惧(Device)琛ㄦ暟鎹簱璁块棶灞�
  */
+@Mapper
 public interface DeviceMapper extends BaseMapper<Device> {
 
     IPage<Device> selectDeviceParameter(Page page, QueryWrapper<Device> ew);
diff --git a/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMetricRecordMapper.java b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMetricRecordMapper.java
index 65f45dd..2448fa7 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMetricRecordMapper.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMetricRecordMapper.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.device.pojo.DeviceMetricRecord;
+import org.apache.ibatis.annotations.Mapper;
 
 /**
  * <p>
@@ -11,6 +12,7 @@
  * @author 
  * @since 2024-09-27 10:20:01
  */
+@Mapper
 public interface DeviceMetricRecordMapper extends BaseMapper<DeviceMetricRecord> {
 
 }
diff --git a/cnas-device/src/main/java/com/ruoyi/device/mqtt/MQCallback.java b/cnas-device/src/main/java/com/ruoyi/device/mqtt/MQCallback.java
index ba2d67e..f47e0a3 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/mqtt/MQCallback.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/mqtt/MQCallback.java
@@ -72,18 +72,13 @@
             switch (topic){
                 case "/ztt/v3/2455220/publish":
                     //鑰愪笣锛氱洿娴佺數闃绘暟鎹В鏋�
-                    mqCallback.collectBridgeService.addBridgeValueByNS(parse);
+                    mqCallback.collectBridgeService.dcResistanceDataAnalysis(parse);
                     break;
                 case "/ztt/v3/2455221/publish":
                     //鑰愪笣锛氫几闀跨巼鏁版嵁瑙f瀽
-                    mqCallback.collectBridgeService.addBridgeValueByNSD(parse);
-//                    log.info("浼搁暱鐜囨秷鎭綋锛歿}",parse);
+                    mqCallback.collectBridgeService.elongationDataAnalysis(parse);
                     break;
             }
-            // 濉厖閲囬泦鏁版嵁
-//            JSONObject jsonObject = JSONObject.parseObject(parse);
-//            mqCallback.collectBridgeService.addBridgeValue(jsonObject);
-
         } catch (Exception e) {
             e.printStackTrace();
             log.info("============銆嬨�嬫帴鏀舵秷鎭富棰樺紓甯� : " + e.getMessage());
diff --git a/cnas-device/src/main/java/com/ruoyi/device/pojo/CollectBridge.java b/cnas-device/src/main/java/com/ruoyi/device/pojo/CollectBridge.java
index 3d02bbe..2012af6 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/pojo/CollectBridge.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/pojo/CollectBridge.java
@@ -5,7 +5,9 @@
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 
 /**
@@ -16,6 +18,7 @@
  */
 @Data
 @TableName("collect_bridge")
+@NoArgsConstructor
 public class CollectBridge {
 
     @TableId(value = "id", type = IdType.AUTO)
@@ -25,10 +28,22 @@
     private String entrustCode;
 
     @ApiModelProperty("閲囬泦鍊�")
-    private String collectValue;
+    private BigDecimal collectValue;
 
-    @ApiModelProperty("鏃堕棿")
-    private LocalDateTime collectDate;
+    @ApiModelProperty("閲囬泦娓╁害")
+    private Double collectTemperature;
 
+    @ApiModelProperty("绗竴娆¢噰闆嗘椂闂�")
+    private LocalDateTime firstCollectDate;
+
+    @ApiModelProperty("鏈�鍚庝竴娆¢噰闆嗘椂闂�")
+    private LocalDateTime lastCollectDate;
+
+    public CollectBridge(String entrustCode, BigDecimal collectValue, LocalDateTime firstCollectDate, LocalDateTime lastCollectDate) {
+        this.entrustCode = entrustCode;
+        this.collectValue = collectValue;
+        this.firstCollectDate = firstCollectDate;
+        this.lastCollectDate = lastCollectDate;
+    }
 }
 
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/CollectBridgeService.java b/cnas-device/src/main/java/com/ruoyi/device/service/CollectBridgeService.java
index dc4e50b..4e9faf5 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/service/CollectBridgeService.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/CollectBridgeService.java
@@ -18,8 +18,8 @@
      */
     void addBridgeValue(JSONObject jsonObject);
 
-    void addBridgeValueByNS(String jsonStr);
+    void dcResistanceDataAnalysis(String jsonStr);
 
-    void addBridgeValueByNSD(String jsonStr);
+    void elongationDataAnalysis(String jsonStr);
 }
 
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java
index 874a419..96663aa 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java
@@ -15,9 +15,11 @@
 import com.ruoyi.device.service.CollectBridgeService;
 import com.ruoyi.device.vo.DeviceMqttVO;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.Duration;
 import java.time.Instant;
 import java.time.LocalDateTime;
@@ -36,97 +38,108 @@
 @Slf4j
 public class CollectBridgeServiceImpl extends ServiceImpl<CollectBridgeMapper, CollectBridge> implements CollectBridgeService {
 
+    @Autowired
+    private CollectBridgeMapper collectBridgeMapper;
+
     /**
      * 濉厖閲囬泦鏁版嵁
      * @param jsonObject
      */
     @Override
     public void addBridgeValue(JSONObject jsonObject) {
-        JSONArray dataArray = jsonObject.getJSONArray("data");
-        for (int i = 0; i < dataArray.size(); i++) {
-            JSONObject listInfo = dataArray.getJSONObject(i);
-            // 瀛樺偍鏁版嵁
-            String dataStream = listInfo.getString("dataStream");
-            if (dataStream.equals("DQCS.DQCS.SN")) {
-                JSONArray dataPoints = listInfo.getJSONArray("dataPoints");
-                JSONObject pointsJSONObject = dataPoints.getJSONObject(0);
-                String entrustCode = pointsJSONObject.getString("value");
-                // 瑙f瀽鏃堕棿鎴�
-                Instant instant = Instant.ofEpochMilli(pointsJSONObject.getLong("time"));
-                LocalDateTime collectDate = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
-
-                // 鍏堝瓨鍌ㄧ紪鍙�, 鍚庣画瀛樺偍鍊�
-                CollectBridge collectBridge = new CollectBridge();
-                collectBridge.setEntrustCode(entrustCode);
-                collectBridge.setCollectDate(collectDate);
-                baseMapper.insert(collectBridge);
-
-            }
-            // 瀵勫瓨鍣ㄥ湴鍧�绛変簬64鑾峰彇缁撴灉鍊�
-            if (dataStream.equals("DQCS.DQCS.64")) {
-                JSONArray dataPoints = listInfo.getJSONArray("dataPoints");
-                JSONObject pointsJSONObject = dataPoints.getJSONObject(0);
-                String value = pointsJSONObject.getString("value");
-
-                if (value.equals("64")) {
-                    for (int j = 0; j < dataArray.size(); j++) {
-                        JSONObject listInfo2 = dataArray.getJSONObject(j);
-                        String dataStream2 = listInfo2.getString("dataStream");
-                        // 瀵勫瓨鍣ㄥ湴鍧�绛変簬64鑾峰彇缁撴灉鍊�
-                        if (dataStream2.equals("DQCS.DQCS.DZZ")) {
-                            JSONArray dataPoints2 = listInfo2.getJSONArray("dataPoints");
-                            JSONObject pointsJSONObject2 = dataPoints2.getJSONObject(0);
-                            String collectValue = pointsJSONObject2.getString("value");
-
-                            // 瑙f瀽鏃堕棿鎴�
-                            Instant instant = Instant.ofEpochMilli(pointsJSONObject2.getLong("time"));
-                            LocalDateTime collectDate = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
-
-                            // 鏌ヨ鏈�鏂颁竴鏉℃暟鎹�
-                            CollectBridge collectBridge = baseMapper.selectOne(Wrappers.<CollectBridge>lambdaQuery()
-                                    .orderByDesc(CollectBridge::getCollectDate)
-                                    .last("limit 1"));
-
-                            // 鍒ゆ柇涓ゆ潯鏁版嵁鏄惁鐩稿樊鍦�10鍒嗛挓涔嬪唴鍜屾湁娌℃湁缂栧彿
-                            if (isWithinTenMinutes(collectDate, collectBridge.getCollectDate()) &&
-                                    StringUtils.isNotBlank(collectBridge.getEntrustCode())) {
-                                // 淇敼妫�楠屽��
-                                collectBridge.setCollectValue(collectValue);
-                                baseMapper.updateById(collectBridge);
-                            } else {
-                                // 鍙瓨鍌ㄥ��
-                                CollectBridge bridge = new CollectBridge();
-                                bridge.setCollectValue(collectValue);
-                                bridge.setCollectDate(collectDate);
-                                baseMapper.insert(bridge);
-                            }
-                        }
-                    }
-                }
-            }
-        }
+//        JSONArray dataArray = jsonObject.getJSONArray("data");
+//        for (int i = 0; i < dataArray.size(); i++) {
+//            JSONObject listInfo = dataArray.getJSONObject(i);
+//            // 瀛樺偍鏁版嵁
+//            String dataStream = listInfo.getString("dataStream");
+//            if (dataStream.equals("DQCS.DQCS.SN")) {
+//                JSONArray dataPoints = listInfo.getJSONArray("dataPoints");
+//                JSONObject pointsJSONObject = dataPoints.getJSONObject(0);
+//                String entrustCode = pointsJSONObject.getString("value");
+//                // 瑙f瀽鏃堕棿鎴�
+//                Instant instant = Instant.ofEpochMilli(pointsJSONObject.getLong("time"));
+//                LocalDateTime collectDate = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
+//
+//                // 鍏堝瓨鍌ㄧ紪鍙�, 鍚庣画瀛樺偍鍊�
+//                CollectBridge collectBridge = new CollectBridge();
+//                collectBridge.setEntrustCode(entrustCode);
+//                collectBridge.setCollectDate(collectDate);
+//                baseMapper.insert(collectBridge);
+//
+//            }
+//            // 瀵勫瓨鍣ㄥ湴鍧�绛変簬64鑾峰彇缁撴灉鍊�
+//            if (dataStream.equals("DQCS.DQCS.64")) {
+//                JSONArray dataPoints = listInfo.getJSONArray("dataPoints");
+//                JSONObject pointsJSONObject = dataPoints.getJSONObject(0);
+//                String value = pointsJSONObject.getString("value");
+//
+//                if (value.equals("64")) {
+//                    for (int j = 0; j < dataArray.size(); j++) {
+//                        JSONObject listInfo2 = dataArray.getJSONObject(j);
+//                        String dataStream2 = listInfo2.getString("dataStream");
+//                        // 瀵勫瓨鍣ㄥ湴鍧�绛変簬64鑾峰彇缁撴灉鍊�
+//                        if (dataStream2.equals("DQCS.DQCS.DZZ")) {
+//                            JSONArray dataPoints2 = listInfo2.getJSONArray("dataPoints");
+//                            JSONObject pointsJSONObject2 = dataPoints2.getJSONObject(0);
+//                            String collectValue = pointsJSONObject2.getString("value");
+//
+//                            // 瑙f瀽鏃堕棿鎴�
+//                            Instant instant = Instant.ofEpochMilli(pointsJSONObject2.getLong("time"));
+//                            LocalDateTime collectDate = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
+//
+//                            // 鏌ヨ鏈�鏂颁竴鏉℃暟鎹�
+//                            CollectBridge collectBridge = baseMapper.selectOne(Wrappers.<CollectBridge>lambdaQuery()
+//                                    .orderByDesc(CollectBridge::getCollectDate)
+//                                    .last("limit 1"));
+//
+//                            // 鍒ゆ柇涓ゆ潯鏁版嵁鏄惁鐩稿樊鍦�10鍒嗛挓涔嬪唴鍜屾湁娌℃湁缂栧彿
+//                            if (isWithinTenMinutes(collectDate, collectBridge.getCollectDate()) &&
+//                                    StringUtils.isNotBlank(collectBridge.getEntrustCode())) {
+//                                // 淇敼妫�楠屽��
+//                                collectBridge.setCollectValue(collectValue);
+//                                baseMapper.updateById(collectBridge);
+//                            } else {
+//                                // 鍙瓨鍌ㄥ��
+//                                CollectBridge bridge = new CollectBridge();
+//                                bridge.setCollectValue(collectValue);
+//                                bridge.setCollectDate(collectDate);
+//                                baseMapper.insert(bridge);
+//                            }
+//                        }
+//                    }
+//                }
+//            }
+//        }
     }
 
     @Override
-    public void addBridgeValueByNS(String jsonStr) {
+    public void dcResistanceDataAnalysis(String jsonStr) {
         Map<String, Object> dataMap = JSONObject.parseObject(jsonStr, new TypeReference<Map<String, Object>>(){}.getType());
         if(CollectionUtil.isNotEmpty(dataMap) && Objects.nonNull(dataMap.get("data"))){
             List<DeviceMqttVO> dataList = JSONArray.parseObject(dataMap.get("data").toString(), new TypeReference<List<DeviceMqttVO>>(){}.getType());
             //杩囨护鍑哄寘鍚疄闄呯數闃诲�肩殑瀵硅薄
             // 澶勭悊 NSDQCS.DQCS.DZZ 鏁版嵁
-            Double value = getValueByDataStream(dataList,DCResistanceMqttConstants.NSDQCS_DQCS_DZZ);
-            RedisUtil.set(DCResistanceMqttConstants.NSDQCS_DQCS_DZZ, value);
+            String entrustCode = getValueByDataStream(dataList,DCResistanceMqttConstants.NSDQCS_DQCS_SN);
+            BigDecimal value = new BigDecimal(getValueByDataStream(dataList,DCResistanceMqttConstants.NSDQCS_DQCS_DZZ));
+            Long count = collectBridgeMapper.selectCount(Wrappers.<CollectBridge>lambdaQuery().eq(CollectBridge::getEntrustCode, entrustCode));
+            if(count>0L){
+                collectBridgeMapper.update(null,Wrappers.<CollectBridge>lambdaUpdate()
+                        .set(CollectBridge::getCollectValue,value)
+                        .set(CollectBridge::getLastCollectDate,LocalDateTime.now())
+                        .eq(CollectBridge::getEntrustCode,entrustCode));
+            }else{
+                collectBridgeMapper.insert(new CollectBridge(entrustCode,value,LocalDateTime.now(),LocalDateTime.now()));
+            }
         }
     }
 
     @Override
-    public void addBridgeValueByNSD(String jsonStr) {
+    public void elongationDataAnalysis(String jsonStr) {
         Map<String, Object> dataMap = JSONObject.parseObject(jsonStr, new TypeReference<Map<String, Object>>(){}.getType());
         if(CollectionUtil.isNotEmpty(dataMap) && Objects.nonNull(dataMap.get("data"))){
             List<DeviceMqttVO> dataList = JSONArray.parseObject(dataMap.get("data").toString(), new TypeReference<List<DeviceMqttVO>>(){}.getType());
-            //杩囨护鍑哄寘鍚疄闄呯數闃诲�肩殑瀵硅薄
-            // 澶勭悊 NSTSSC.TSSC.WY 鏁版嵁
-            processMultipleValueDataStream(dataList, ElongationMqttConstants.NSTSSC_TSSC_WY,3);
+            // 浼搁暱鐜囷細澶勭悊 NSTSSC.TSSC.SCL 鏁版嵁
+            processMultipleValueDataStream(dataList, ElongationMqttConstants.NSTSSC_TSSC_SCL,3,10.0);
         }
     }
 
@@ -135,17 +148,16 @@
      * @param dataList 鏁版嵁鍒楄〃
      * @param dataStream 鏁版嵁娴佹爣璇�
      */
-    private Double getValueByDataStream(List<DeviceMqttVO> dataList, String dataStream) {
+    private String getValueByDataStream(List<DeviceMqttVO> dataList, String dataStream) {
         DeviceMqttVO deviceMqttVO = dataList.stream()
                 .filter(f -> StringUtils.equals(f.getDataStream(), dataStream))
                 .findFirst()
                 .orElse(null);
         if(Objects.nonNull(deviceMqttVO)){
             List<DeviceMqttVO.DataPoint> dataPoints = deviceMqttVO.getDataPoints();
-            BigDecimal value = CollectionUtil.isNotEmpty(dataPoints)?dataPoints.get(0).getValue():BigDecimal.ZERO;
-            return value.doubleValue();
+            return CollectionUtil.isNotEmpty(dataPoints)?dataPoints.get(0).getValue():"";
         }
-        return 0.0;
+        return "";
     }
 
     /**
@@ -153,20 +165,26 @@
      * @param dataList 鏁版嵁鍒楄〃
      * @param dataStream 鏁版嵁娴佹爣璇�
      * @param maxSize 淇濆瓨鐨勬渶澶т釜鏁�
+     * @param minVal 瀛樺偍鏁版嵁鐨勬渶灏忓�硷紝浣庝簬璇ュ�煎垯璺宠繃锛�-1浠h〃涓嶉檺鍒�
      */
-    private void processMultipleValueDataStream(List<DeviceMqttVO> dataList, String dataStream,int maxSize){
+    private void processMultipleValueDataStream(List<DeviceMqttVO> dataList, String dataStream,int maxSize,Double minVal){
         // 绛涢�夊嚭褰撳墠鏁版嵁娴佸搴旂殑鏁版嵁
-        Double value = getValueByDataStream(dataList, dataStream);
+//        Double value = Double.parseDouble(getValueByDataStream(dataList, dataStream));
+        Double value = BigDecimal.valueOf(Math.random()*100).setScale(7, RoundingMode.HALF_EVEN).doubleValue();
+        //濡傛灉鏈�灏忓�间笉涓虹┖涓斾笉涓�-1锛岃幏鍙栧埌鐨勫�煎皬浜庢渶灏忓�煎垯璺宠繃涓嶅仛澶勭悊
+        if(Objects.nonNull(minVal)&&minVal!=-1&&value<minVal){
+            return;
+        }
         //鍒ゆ柇key鏄惁瀛樺湪
         boolean existKey = RedisUtil.hasKey(dataStream);
         if(existKey){
-            long listSize = RedisUtil.lGetListSize(dataStream);
-            if(listSize<maxSize){
-                RedisUtil.lSet(dataStream,value);
+            long zSetSize = RedisUtil.getZSetSize(dataStream);
+            //濡傛灉鏁版嵁闀垮害瓒呰繃鏈�澶т釜鏁帮紝鍒欏垹闄ゅ垎鏁版渶浣庣殑鏁版嵁
+            if(zSetSize>=maxSize){
+                RedisUtil.delZSetRange(dataStream,0,0);
             }
-        }else{
-            RedisUtil.lSet(dataStream,value);
         }
+        RedisUtil.addZSet(dataStream,System.currentTimeMillis(),value);
     }
 
     /**
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DataConfigServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DataConfigServiceImpl.java
index b7a30f7..44cba26 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DataConfigServiceImpl.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DataConfigServiceImpl.java
@@ -88,7 +88,12 @@
         if (dataConfig.getStructureItemParameterId() == null) {
             throw new RuntimeException("缂哄皯妫�娴嬮」id");
         }
-        List<DataConfig> list = baseMapper.selectList(Wrappers.<DataConfig>lambdaQuery().eq(DataConfig::getStructureItemParameterId, dataConfig.getStructureItemParameterId()));
+        List<DataConfig> list = baseMapper.selectList(Wrappers.<DataConfig>lambdaQuery()
+                        .eq(DataConfig::getDeviceId,dataConfig.getDeviceId())
+                        .eq(DataConfig::getInspectionItem,dataConfig.getInspectionItem())
+                        .eq(DataConfig::getInspectionItemClass,dataConfig.getInspectionItemClass())
+                        .eq(DataConfig::getInspectionItemSubclass,dataConfig.getInspectionItemSubclass())
+                        .eq(DataConfig::getStructureItemParameterId, dataConfig.getStructureItemParameterId()));
         return Result.success(list);
     }
 
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java
index ba01fa4..6e9bc72 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java
@@ -17,6 +17,8 @@
 import com.ruoyi.common.core.domain.Result;
 import com.ruoyi.common.core.domain.entity.User;
 import com.ruoyi.common.utils.QueryWrappers;
+import com.ruoyi.common.utils.RedisUtil;
+import com.ruoyi.device.constant.DCResistanceMqttConstants;
 import com.ruoyi.device.dto.*;
 import com.ruoyi.device.mapper.CollectBridgeMapper;
 import com.ruoyi.device.mapper.DeviceMaintenanceMapper;
@@ -49,6 +51,7 @@
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
 /**
@@ -253,10 +256,26 @@
             // 鍒ゆ柇璁惧鏄惁鏄暟瀛楃洿妗CZX-ZB-ER02022
             if (device.getManagementNumber().equals("JCZX-ZB-ER02022")) {
                 map.putAll(dataCollectBridge(list, device, dto.getEntrustCode()));
+            }else if(device.getFileType().equals(".mqtt")){
+                //濡傛灉鏂囦欢绫诲瀷鏄痬qtt,鍒欎笉璧伴噰闆嗗櫒閲囬泦
+                Map<String, List<DataConfig>> userMap = list.stream()
+                        .peek(i -> {
+                            String itemName = i.getInspectionItem();
+                            if (StringUtils.isNotBlank(i.getInspectionItemClass())) {
+                                itemName += "@" + i.getInspectionItemClass();
+                            }
+                            String name = i.getInspectionItem().equals(i.getInspectionItemSubclass()) ? itemName + "," : itemName + "," + i.getInspectionItemSubclass();
 
-            } else {
-                map.putAll(DataAcquisition.dataAcquisitionEntrance(list, device, dto.getEntrustCode(), dto.getEntrustCode(), ip, insProducts.get(0).getCableTag(),dto.getDbUserName(),dto.getDbPassword(),dto.getDbTable()));
-
+                            // 娣诲姞妫�楠岄」鍚嶇О
+                            i.setInsProductItem(name);
+                        })
+                        .collect(Collectors.groupingBy(DataConfig::getInsProductItem));
+                map.putAll(getActualResistanceValueAsMap(userMap, device,dto.getEntrustCode()));
+            }else {
+                String dbUserName = StringUtils.isNotBlank(dto.getDbUserName())?dto.getDbUserName():"";
+                String dbPassword = StringUtils.isNotBlank(dto.getDbPassword())?dto.getDbPassword():"";
+                String dbTable = StringUtils.isNotBlank(dto.getDbTable())?dto.getDbTable():"";
+                map.putAll(DataAcquisition.dataAcquisitionEntrance(list, device, dto.getEntrustCode(), dto.getEntrustCode(), ip, insProducts.get(0).getCableTag(),dbUserName,dbPassword,dbTable));
             }
         }
 
@@ -268,6 +287,46 @@
         } else {
             return Result.success(null);
         }
+    }
+
+    /**
+     * 浠� Redis 涓幏鍙栧疄闄呯數闃诲�硷紝骞朵互閿�煎褰㈠紡杩斿洖
+     * @param dataConfig 鏁版嵁閰嶇疆淇℃伅
+     * @param device 璁惧淇℃伅
+     * @return 鍖呭惈瀹為檯鐢甸樆鍊煎鐞嗙粨鏋滅殑閿�煎锛涜嫢鏈幏鍙栧埌鏈夋晥鏁版嵁鍒欒繑鍥炵┖ Map
+     */
+    public Map<String, Object> getActualResistanceValueAsMap(Map<String, List<DataConfig>> dataConfig, Device device,String entrustCode) {
+        Map<String, Object> map = new HashMap<>();
+        if (ObjectUtils.isEmpty(dataConfig)) {
+            return map;
+        }
+        dataConfig.forEach((k, v) -> {
+            AtomicInteger numberOfDataEntries = new AtomicInteger();
+            List<Object> list = new ArrayList<>();
+            for (int config = 0; config < v.size(); config++) {
+                String refery = DataAcquisition.getRefer(v.get(config).getRefery());
+                if (refery.equals(DCResistanceMqttConstants.NSDQCS_DQCS_DZZ)){
+                    // 鏌ヨ瀵瑰簲濮旀墭缂栧彿鐨勬暟鎹�
+//                    Object value = RedisUtil.get(refery);
+                    CollectBridge collectBridge = collectBridgeMapper.selectOne(Wrappers.<CollectBridge>lambdaQuery().eq(CollectBridge::getEntrustCode,entrustCode).last("limit 1"));
+                    if(Objects.isNull(collectBridge)){
+                        throw new ErrorException("鐩存祦鐢甸樆鏁伴噰寮傚父锛氭病鏈夋壘鍒板鎵樼紪鍙蜂负銆�"+entrustCode+"銆戠殑鏁版嵁");
+                    }
+                    list.add(0,1);//娴嬭瘯闀垮害锛岄粯璁�1
+                    list.add(1,Objects.isNull(collectBridge.getCollectTemperature())?0.0:collectBridge.getCollectTemperature());//todo:娓╁害锛屾殏鏃舵湭閲囬泦鍒板��
+                    list.add(2,collectBridge.getCollectValue());//瀹為檯鐢甸樆鍊�
+                }else {
+                    // 浠� Redis 涓幏鍙栧垪琛ㄦ暟鎹�
+                    List<?> objectList = RedisUtil.lGet(refery, 0, -1);
+                    list.addAll(objectList);
+                }
+                numberOfDataEntries.getAndIncrement();
+            }
+            // 杩涜鍏紡璁$畻
+            Object resultValue = DataAcquisition.calculationFormula(list, v.get(0), k, device);
+            map.put(k, resultValue);
+        });
+        return map;
     }
 
     /**
@@ -291,21 +350,21 @@
 
         Map<String, Object> map = new HashMap<>();
 
-        userMap.forEach((k, v) -> {
-            List<String> resultValue = new ArrayList<>();
-            // 鏌ヨ鐩存ˉ鐢垫祦鐢甸樆鏁伴噰鍊�
-            List<CollectBridge> collectBridges = collectBridgeMapper.selectList(Wrappers.<CollectBridge>lambdaQuery()
-                    .like(CollectBridge::getEntrustCode, entrustCode)
-                    .orderByAsc(CollectBridge::getCollectDate));
-
-            resultValue = collectBridges.stream().map(CollectBridge::getCollectValue).collect(Collectors.toList());
-
-            Map<String, Object> hashMap = new HashMap<>();
-            hashMap.put("equipName", device.getDeviceName());
-            hashMap.put("equipValue", device.getManagementNumber());
-            hashMap.put("result", resultValue);
-            map.put(k, hashMap);
-        });
+//        userMap.forEach((k, v) -> {
+//            List<String> resultValue = new ArrayList<>();
+//            // 鏌ヨ鐩存ˉ鐢垫祦鐢甸樆鏁伴噰鍊�
+//            List<CollectBridge> collectBridges = collectBridgeMapper.selectList(Wrappers.<CollectBridge>lambdaQuery()
+//                    .like(CollectBridge::getEntrustCode, entrustCode)
+//                    .orderByAsc(CollectBridge::getCollectDate));
+//
+//            resultValue = collectBridges.stream().map(CollectBridge::getCollectValue).collect(Collectors.toList());
+//
+//            Map<String, Object> hashMap = new HashMap<>();
+//            hashMap.put("equipName", device.getDeviceName());
+//            hashMap.put("equipValue", device.getManagementNumber());
+//            hashMap.put("result", resultValue);
+//            map.put(k, hashMap);
+//        });
         return map;
     }
 
diff --git a/cnas-device/src/main/java/com/ruoyi/device/utils/DataAcquisition.java b/cnas-device/src/main/java/com/ruoyi/device/utils/DataAcquisition.java
index 281b5fa..751b778 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/utils/DataAcquisition.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/utils/DataAcquisition.java
@@ -11,6 +11,7 @@
 import com.ruoyi.common.utils.RedisUtil;
 import com.ruoyi.device.constant.DCResistanceMqttConstants;
 import com.ruoyi.device.dto.DeviceCollectionDto;
+import com.ruoyi.device.mapper.CollectBridgeMapper;
 import com.ruoyi.device.pojo.DataConfig;
 import com.ruoyi.device.pojo.Device;
 import com.ruoyi.framework.exception.ErrorException;
@@ -40,6 +41,8 @@
     private static final String splitIdentifier = "@-@"; // 鑷畾涔夊敮涓�鏍囪瘑鍒嗗壊绗�
 
     public static final String frequency = "frequency";
+
+    private CollectBridgeMapper collectBridgeMapper;
 
     /**
      * 鏁伴噰鍏ュ彛
@@ -74,14 +77,17 @@
          * mdbEntrustCode mdb鏂囦欢闇�瑕侊細濮旀墭缂栧彿瀛楁 涓轰粈涔堟病鏈夊幓杩欎釜mdb鍓嶇紑鍛紵鍥犱负宸茬粡缁欏鎴风殑閮ㄥ垎鐢佃剳涓婂畨瑁呬簡閲囬泦鍣紝鑰岀敤鎴蜂笉鎺ュ彈閲嶆柊瀹夎閲囬泦鍣紝鎵�浠ュ氨娌℃湁鍘婚櫎
          * mdbSampleCode mdb鏂囦欢闇�瑕侊細鏍峰搧缂栧彿瀛楁
          */
+        String mdbEntrustCode = StringUtils.isNotBlank(device.getEntrustCode())?device.getEntrustCode():"";
+        String mdbSampleCode = StringUtils.isNotBlank(device.getSampleCode())?device.getSampleCode():"";
+        String dbFileName = StringUtils.isNotBlank(device.getDbFileName())?device.getDbFileName():"";
         String http = HTTP + ip + GETFILE +
                 "?filePath=" + device.getCollectUrl() +
                 "&fileExtension=" + device.getFileType() +
                 "&entrustCode=" + entrustCode +
                 "&sampleCode=" + sampleCode +
-                "&mdbEntrustCode=" + device.getEntrustCode() +
-                "&mdbSampleCode=" + device.getSampleCode() +
-                "&dbFileName=" + device.getDbFileName()+
+                "&mdbEntrustCode=" + mdbEntrustCode +
+                "&mdbSampleCode=" + mdbSampleCode +
+                "&dbFileName=" + dbFileName +
                 "&dbUserName=" + dbUserName +
                 "&dbPassword=" + dbPassword +
                 "&dbTable=" + dbTable;
@@ -89,7 +95,6 @@
         String result = null;
         try {
             result = HttpUtil.get(http);
-            System.out.println("璇锋眰杩斿洖缁撴灉: " + result);
         } catch (IORuntimeException e) {
             e.printStackTrace();
             throw new ErrorException("鎵�鍦ㄧ數鑴戞湭瀹夎鎴栨湭鍚姩锛歀IMS鏂囦欢閲囬泦鍣紒");
@@ -102,7 +107,7 @@
                 throw new ErrorException(jsonObject.get("msg") + "");
             }
         } else {
-            String data = jsonObject.get("data") + "";
+             String data = jsonObject.get("data") + "";
             // 鑰冭檻鍒颁竴涓娴嬮」鍙兘浼氬瓨鍦ㄥ涓暟閲囬厤缃紝鎵�浠ラ渶瑕佽繘琛屽垎缁�
             Map<String, List<DataConfig>> userMap = dataConfig.stream()
                     .peek(i -> {
@@ -152,9 +157,9 @@
                 case ".png":
                     map = readPngString(data, userMap, device);
                     break;
-                case ".mqtt":
-                    map = getActualResistanceValueAsMap(userMap, device);
-                    break;
+//                case ".mqtt":
+//                    map = getActualResistanceValueAsMap(userMap, device);
+//                    break;
                 default:
                     map = null;
                     break;
@@ -166,68 +171,6 @@
             }
             return map;
         }
-    }
-    /**
-     * 浠� Redis 涓幏鍙栧疄闄呯數闃诲�硷紝骞朵互閿�煎褰㈠紡杩斿洖
-     * @param dataConfig 鏁版嵁閰嶇疆淇℃伅
-     * @param device 璁惧淇℃伅
-     * @return 鍖呭惈瀹為檯鐢甸樆鍊煎鐞嗙粨鏋滅殑閿�煎锛涜嫢鏈幏鍙栧埌鏈夋晥鏁版嵁鍒欒繑鍥炵┖ Map
-     */
-    public static Map<String, Object> getActualResistanceValueAsMap(Map<String, List<DataConfig>> dataConfig, Device device) {
-        Map<String, Object> map = new HashMap<>();
-        if (ObjectUtils.isEmpty(dataConfig)) {
-            return map;
-        }
-        dataConfig.forEach((k, v) -> {
-            AtomicInteger numberOfDataEntries = new AtomicInteger();
-            List<Object> list = new ArrayList<>();
-            for (int config = 0; config < v.size(); config++) {
-                String refery = getRefer(v.get(config).getRefery());
-                if (refery.equals(DCResistanceMqttConstants.NSDQCS_DQCS_DZZ)){
-                    // 浠� Redis 涓幏鍙栦竴涓暟鎹�
-                    Object value = RedisUtil.get(refery);
-                    list.add(value);
-                    numberOfDataEntries.addAndGet(1);
-                }else {
-                    // 浠� Redis 涓幏鍙栧垪琛ㄦ暟鎹�
-//                    List<Object> objectList = RedisUtil.lGet(refery, 0, -1);
-                    List<?> objectList = RedisUtil.lGet(refery, 0, -1);
-                    for (Object item : objectList) {
-//                        System.out.println(item);
-                        String[] split = item.toString().replace("[","").replace("]","").split(",");
-                        for (Object a :
-                                split) {
-                            list.add(a);
-                            numberOfDataEntries.addAndGet(1);
-                        }
-                    }
-                }
-            }
-            // 鎷兼帴鏁伴噰閰嶇疆
-            List<Object> result = new ArrayList<>();
-            for (int i = 0; i < numberOfDataEntries.get(); i++) {
-                StringBuilder aggregate = new StringBuilder();
-                for (int j = 0; j < v.size(); j++) {
-                    int index;
-                    if (j == 0) {
-                        index = i;
-                    } else {
-                        index = numberOfDataEntries.get() + i;
-                    }
-                    if (index < list.size()) {
-                        aggregate.append(list.get(index).toString()).append(",");
-                    }
-                }
-                if (aggregate.length() > 0) {
-                    aggregate.setLength(aggregate.length() - 1);
-                }
-                result.add(aggregate.toString());
-            }
-            // 杩涜鍏紡璁$畻
-            Object resultValue = calculationFormula(result, v.get(0), k, device);
-            map.put(k, resultValue);
-        });
-        return map;
     }
 
 
@@ -550,7 +493,7 @@
      * @param dataConfig 瀛樺偍鍏紡鐨勫璞�
      * @return
      */
-    private static Object calculationFormula(List<Object> list, DataConfig dataConfig, String insProductItem, Device device) {
+    public static Object calculationFormula(List<Object> list, DataConfig dataConfig, String insProductItem, Device device) {
         if (list.size() == 0) {
             Map<String, Object> hashMap = new HashMap<>();
             hashMap.put("equipName", device.getDeviceName());
@@ -761,7 +704,7 @@
     }
 
     // 闃叉鍙傜収鐗╀负绌烘姤閿欙紝杩涜鍒ゆ柇濡傛灉涓虹┖璧嬪�肩┖瀛楃
-    private static String getRefer(String refer) {
+    public static String getRefer(String refer) {
         return ObjectUtils.isNotEmpty(refer) ? refer.replaceAll(" ", "") : "";
     }
     /**
diff --git a/cnas-device/src/main/java/com/ruoyi/device/vo/DeviceMqttVO.java b/cnas-device/src/main/java/com/ruoyi/device/vo/DeviceMqttVO.java
index 53df3d4..be2af21 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/vo/DeviceMqttVO.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/vo/DeviceMqttVO.java
@@ -32,7 +32,7 @@
         /**
          * 瀹為檯鍊�
          */
-        private BigDecimal value;
+        private String value;
     }
 
 }
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderMapper.java b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderMapper.java
index 7c91fc1..a727014 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderMapper.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderMapper.java
@@ -9,6 +9,7 @@
 import com.ruoyi.inspect.dto.SampleProductDto2;
 import com.ruoyi.inspect.dto.SampleProductExportDto;
 import com.ruoyi.inspect.pojo.InsOrder;
+import com.ruoyi.inspect.vo.IfsOrderVO;
 import com.ruoyi.inspect.vo.InsOrderPrintingVo;
 import com.ruoyi.inspect.vo.SampleDefectsFatherVo;
 import org.apache.ibatis.annotations.Param;
@@ -144,4 +145,6 @@
      * @return
      */
     Integer selectNotSpotCheckOrder(@Param("itmeId") Integer itmeId, @Param("startTime") String startTime, @Param("endTime") String endTime);
+
+    IfsOrderVO selectOrderInfoById(@Param("id") Integer id);
 }
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsSampleMapper.java b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsSampleMapper.java
index 0b1fb82..8907546 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsSampleMapper.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsSampleMapper.java
@@ -11,6 +11,7 @@
 import com.ruoyi.inspect.vo.InsOrderPlanTaskSwitchVo;
 import com.ruoyi.inspect.vo.InsOrderPlanVO;
 import com.ruoyi.inspect.vo.SampleVo;
+import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -22,6 +23,7 @@
 * @createDate 2024-03-14 17:14:57
 * @Entity com.yuanchu.mom.pojo.InsSample
 */
+@Mapper
 public interface InsSampleMapper extends BaseMapper<InsSample> {
 
     IPage<InsOrderPlanVO> findInsSampleAndOrder(Page page,
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
index c3b08cb..a06a1c6 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
@@ -37,6 +37,7 @@
 import com.ruoyi.inspect.service.InsOrderStateService;
 import com.ruoyi.inspect.service.InsProductService;
 import com.ruoyi.inspect.service.InsSampleService;
+import com.ruoyi.inspect.vo.IfsOrderVO;
 import com.ruoyi.inspect.vo.InsOrderPrintingVo;
 import com.ruoyi.system.mapper.UserMapper;
 import lombok.AllArgsConstructor;
@@ -514,9 +515,10 @@
     @Override
     public Map<String, Object> getInsOrderAndSample(Integer id, String laboratory) {
         Map<String, Object> map = new HashMap<>();
-        InsOrder insOrder = insOrderMapper.selectById(id);
+//        InsOrder insOrder = insOrderMapper.selectById(id);
+        IfsOrderVO ifsOrderVO = insOrderMapper.selectOrderInfoById(id);
         List<SampleProductDto> list = insSampleMapper.getInsOrderAndSample(id, laboratory);
-        map.put("insOrder", insOrder);
+        map.put("insOrder", ifsOrderVO);
         map.put("sampleProduct", list);
         //鏌ヨ鎵�鏈夎褰曟ā鐗堝幓閲�
         List<Map<Integer, Object>> list2 = insOrderMapper.selectReportModelByOrderId(id, laboratory);
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/vo/IfsOrderVO.java b/inspect-server/src/main/java/com/ruoyi/inspect/vo/IfsOrderVO.java
new file mode 100644
index 0000000..a8ff832
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/vo/IfsOrderVO.java
@@ -0,0 +1,39 @@
+package com.ruoyi.inspect.vo;
+
+import com.ruoyi.inspect.pojo.InsOrder;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * ifs璁㈠崟vo
+ */
+@Data
+public class IfsOrderVO extends InsOrder implements Serializable {
+
+
+    /**
+     * 缁濈紭棰滆壊
+     */
+    @ApiModelProperty("缁濈紭棰滆壊")
+    private String insulationColor;
+
+    /**
+     * 澶栨姢棰滆壊
+     */
+    @ApiModelProperty("澶栨姢棰滆壊")
+    private String outerColor;
+
+    /**
+     * 鐩樺彿
+     */
+    @ApiModelProperty("鐩樺彿")
+    private String drumNo;
+
+    /**
+     * 鏄惁鏄媶鍒嗚鍗�(0:鍚� 1:鏄�)
+     */
+    @ApiModelProperty("鏄惁鏄媶鍒嗚鍗�(0:鍚� 1:鏄�)")
+    private Integer isSplitOrder;
+}
diff --git a/inspect-server/src/main/resources/mapper/InsOrderMapper.xml b/inspect-server/src/main/resources/mapper/InsOrderMapper.xml
index 78234d5..6f39cfc 100644
--- a/inspect-server/src/main/resources/mapper/InsOrderMapper.xml
+++ b/inspect-server/src/main/resources/mapper/InsOrderMapper.xml
@@ -469,4 +469,22 @@
                 and ip.structure_item_parameter_id = #{itmeId}
               group by io.id) a
     </select>
+    <select id="selectOrderInfoById" resultType="com.ruoyi.inspect.vo.IfsOrderVO">
+        select  io.*,
+                isor.insulation_color,
+                isor.outer_color,
+                isor.drum_no,
+                iiq.is_split_order
+        from ins_order io left join ifs_inventory_quantity iiq on io.ifs_inventory_id=iiq.id
+                          left join ifs_split_order_record isor
+                                    on iiq.order_no=isor.order_no
+                                        and iiq.line_no=isor.line_no
+                                        and iiq.release_no=isor.release_no
+                                        and iiq.receipt_no=isor.receipt_no
+                                        and iiq.part_no=isor.part_no
+                                        AND iiq.update_batch_no = isor.lot_batch_no
+        where io.state !=-1
+        AND io.id = #{id}
+        LIMIT 1
+    </select>
 </mapper>
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/RedisUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/RedisUtil.java
index b00aaf2..fd82b06 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/RedisUtil.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/RedisUtil.java
@@ -628,5 +628,54 @@
             return 0;
         }
     }
+
+    //====================================================ZSet=======================================================
+
+    /**
+     * 鑾峰彇zset鏁版嵁闀垮害
+     * @param key 閿�
+     * @return
+     */
+    public static long getZSetSize(String key){
+        try {
+            return redisTemplate.opsForZSet().size(key);
+        }catch (Exception e){
+            e.printStackTrace();
+            return 0L;
+        }
+    }
+
+    /**
+     * 鏂板涓�涓獄set
+     * @param key    閿�
+     * @param source 鍒嗘暟
+     * @param value  鍊�
+     * @return
+     */
+    public static boolean addZSet(String key,double source,Object value){
+        try {
+            return redisTemplate.opsForZSet().add(key, value, source);
+        }catch(Exception e){
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    /**
+     * 鍒犻櫎zset鍏冪礌锛屾寜鎺掑悕
+     * @param key   閿�
+     * @param start 寮�濮嬬储寮�
+     * @param end   缁撴潫绱㈠紩
+     * @return
+     */
+    public static long delZSetRange(String key,long start,long end){
+        try {
+            return redisTemplate.opsForZSet().removeRange(key,start,end);
+        }catch(Exception e){
+            e.printStackTrace();
+            return 0L;
+        }
+    }
+
 }
 

--
Gitblit v1.9.3