소스 검색

优化人防代码

fuyuchuan 6 일 전
부모
커밋
8236891b5b

+ 52 - 0
service-cdi/service-cdi-biz/src/main/java/com/usky/cdi/service/config/DeviceFieldConfig.java

@@ -0,0 +1,52 @@
+package com.usky.cdi.service.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 设备字段映射配置类
+ * 替代配置文件中的device.field-mapping配置
+ * @author fyc
+ * @date 2025/12/20
+ */
+@Configuration
+public class DeviceFieldConfig {
+
+    /**
+     * 设备类型与字段映射配置
+     * @return 设备字段映射Map
+     */
+    @Bean
+    public Map<String, String> deviceFieldMapping() {
+        Map<String, String> fieldMapping = new HashMap<>();
+
+        // 水浸传感器(702)
+        fieldMapping.put("702", "leach_status");
+
+        // 人员统计(703)
+        fieldMapping.put("703", "amount_into,amount_out,day_into,day_out");
+
+        // 电气火灾(704)
+        fieldMapping.put("704", "voltage_a,voltage_b,voltage_c,current_a,current_b,current_c,temperature_a,temperature_b,temperature_c,current_residual,active_power");
+
+        // 温度传感器(707)
+        fieldMapping.put("707", "wd");
+
+        // 湿度传感器(708)
+        fieldMapping.put("708", "sd");
+
+        // 氧气传感器(709)
+        fieldMapping.put("709", "o2");
+
+        // 二氧化碳传感器(710)
+        fieldMapping.put("710", "co2");
+
+        // 一氧化碳传感器(711)
+        fieldMapping.put("711", "co");
+
+        return fieldMapping;
+    }
+}

+ 6 - 4
service-cdi/service-cdi-biz/src/main/java/com/usky/cdi/service/util/DeviceDataQuery.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.usky.cdi.domain.DmpDevice;
 import com.usky.cdi.mapper.DmpDeviceMapper;
+import com.usky.cdi.service.config.DeviceFieldConfig;
 import com.usky.cdi.service.vo.IotDataTransferVO;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
@@ -28,7 +29,6 @@ import java.util.stream.Collectors;
 @Data
 @Slf4j
 @Component
-@ConfigurationProperties(prefix = "device")
 public class DeviceDataQuery {
     @Autowired
     private DmpDeviceMapper dmpDeviceMapper;
@@ -36,7 +36,9 @@ public class DeviceDataQuery {
     private String baseUrl;
     @Value("${device.data.simulation}")
     private boolean simulation;
-    private Map<String, String> deviceFieldMapping;
+
+    @Autowired
+    private DeviceFieldConfig deviceFieldConfig;
 
     // 定义各参数的格式化器(整数位,小数位)
     private static final DecimalFormat FORMAT_2_2 = new DecimalFormat("00.00"); // 2位整数+2位小数
@@ -218,7 +220,7 @@ public class DeviceDataQuery {
             return Collections.singletonList("time");
         }
 
-        String fieldsStr = deviceFieldMapping.get(deviceType.toString());
+        String fieldsStr = deviceFieldConfig.deviceFieldMapping().get(deviceType.toString());
         if (fieldsStr == null || fieldsStr.trim().isEmpty()) {
             log.warn("获取目标字段失败:设备类型{}对应的字段映射不存在", deviceType);
             return Collections.singletonList("time");
@@ -407,4 +409,4 @@ public class DeviceDataQuery {
         currentReuseCountCache.put(cacheKey, 0);
         return newValue;
     }
-}
+}