From 19f59c243e8df97c8b9fd9dba4e758be8235d68b Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期二, 25 十一月 2025 17:02:54 +0800
Subject: [PATCH] 添加卧转立扫码、卧转立、大车、大理片笼基础任务流转逻辑

---
 mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/DeviceConfigServiceImpl.java |   81 ++++++++++++++++++++++++++++++++--------
 1 files changed, 65 insertions(+), 16 deletions(-)

diff --git a/mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/DeviceConfigServiceImpl.java b/mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/DeviceConfigServiceImpl.java
index 55a9693..292bd8f 100644
--- a/mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/DeviceConfigServiceImpl.java
+++ b/mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/DeviceConfigServiceImpl.java
@@ -27,6 +27,7 @@
 public class DeviceConfigServiceImpl extends ServiceImpl<DeviceConfigMapper, DeviceConfig> implements DeviceConfigService {
 
     private final ObjectMapper objectMapper = new ObjectMapper();
+    private static final TypeReference<Map<String, Object>> MAP_TYPE = new TypeReference<Map<String, Object>>() {};
 
     @Override
     public boolean createDevice(DeviceConfig deviceConfig) {
@@ -134,9 +135,9 @@
         
         // 璁惧绫诲瀷杩囨护
         if (deviceType != null && !deviceType.trim().isEmpty()) {
-            String convertedDeviceType = convertDeviceTypeFromString(deviceType);
-            if (convertedDeviceType != null) {
-                wrapper.eq(DeviceConfig::getDeviceType, convertedDeviceType);
+            List<String> convertedDeviceTypes = convertDeviceTypeFromString(deviceType);
+            if (convertedDeviceTypes != null && !convertedDeviceTypes.isEmpty()) {
+                wrapper.in(DeviceConfig::getDeviceType, convertedDeviceTypes);
             }
         }
         
@@ -214,7 +215,7 @@
             vo.setStatus(getStatusName(device.getStatus()));
             vo.setDeviceStatus(convertStatusToCode(device.getStatus()));
             vo.setDescription(device.getDescription());
-            vo.setLocation("榛樿浣嶇疆"); // TODO: 浠庢墿灞曞弬鏁版垨鍏宠仈琛ㄤ腑鑾峰彇
+            vo.setLocation(extractLocationFromDevice(device));
             vo.setCreatedTime(device.getCreatedTime());
             vo.setUpdatedTime(device.getUpdatedTime());
             vo.setProjectId(device.getProjectId());
@@ -314,24 +315,42 @@
     /**
      * 瀛楃涓茶浆鎹负璁惧绫诲瀷
      */
-    private String convertDeviceTypeFromString(String deviceType) {
-        if (deviceType == null) return null;
+    private List<String> convertDeviceTypeFromString(String deviceType) {
+        if (deviceType == null) {
+            return Collections.emptyList();
+        }
         
-        switch (deviceType.trim().toLowerCase()) {
+        String normalized = deviceType.trim().toLowerCase();
+        switch (normalized) {
             case "load_vehicle":
             case "涓婂ぇ杞�":
+            case "涓婂ぇ杞﹁澶�":
+            case "澶ц溅璁惧":
             case "1":
-                return DeviceConfig.DeviceType.LOAD_VEHICLE;
+                return Arrays.asList(
+                    DeviceConfig.DeviceType.LOAD_VEHICLE,
+                    "澶ц溅璁惧"
+                );
             case "large_glass":
             case "澶х悊鐗�":
+            case "澶х悊鐗囩":
             case "2":
-                return DeviceConfig.DeviceType.LARGE_GLASS;
+                return Arrays.asList(
+                    DeviceConfig.DeviceType.LARGE_GLASS,
+                    "澶х悊鐗囩"
+                );
             case "glass_storage":
             case "鐜荤拑瀛樺偍":
+            case "鍗у紡缂撳瓨":
+            case "鐜荤拑瀛樺偍璁惧":
             case "3":
-                return DeviceConfig.DeviceType.GLASS_STORAGE;
+                return Arrays.asList(
+                    DeviceConfig.DeviceType.GLASS_STORAGE,
+                    "鍗у紡缂撳瓨",
+                    "鐜荤拑瀛樺偍璁惧"
+                );
             default:
-                return null;
+                return Collections.emptyList();
         }
     }
 
@@ -623,12 +642,12 @@
             }
             
             // 璁惧绫诲瀷杩囨护
-            if (deviceType != null && !deviceType.trim().isEmpty()) {
-                String convertedDeviceType = convertDeviceTypeFromString(deviceType);
-                if (convertedDeviceType != null) {
-                    wrapper.eq(DeviceConfig::getDeviceType, convertedDeviceType);
-                }
+        if (deviceType != null && !deviceType.trim().isEmpty()) {
+            List<String> convertedDeviceTypes = convertDeviceTypeFromString(deviceType);
+            if (convertedDeviceTypes != null && !convertedDeviceTypes.isEmpty()) {
+                wrapper.in(DeviceConfig::getDeviceType, convertedDeviceTypes);
             }
+        }
             
             // 璁惧鐘舵�佽繃婊�
             if (deviceStatus != null && !deviceStatus.trim().isEmpty()) {
@@ -771,4 +790,34 @@
             return new ArrayList<>();
         }
     }
+
+    /**
+     * 浠庤澶囨墿灞曞弬鏁颁腑鎻愬彇浣嶇疆淇℃伅
+     */
+    private String extractLocationFromDevice(DeviceConfig device) {
+        if (device == null) {
+            return "榛樿浣嶇疆";
+        }
+        try {
+            // 浼樺厛浠巈xtraParams涓幏鍙�
+            if (device.getExtraParams() != null && !device.getExtraParams().trim().isEmpty()) {
+                Map<String, Object> extraParams = objectMapper.readValue(device.getExtraParams(), MAP_TYPE);
+                Object location = extraParams.get("location");
+                if (location != null) {
+                    return String.valueOf(location);
+                }
+            }
+            // 浠巆onfigJson涓幏鍙�
+            if (device.getConfigJson() != null && !device.getConfigJson().trim().isEmpty()) {
+                Map<String, Object> configJson = objectMapper.readValue(device.getConfigJson(), MAP_TYPE);
+                Object location = configJson.get("location");
+                if (location != null) {
+                    return String.valueOf(location);
+                }
+            }
+        } catch (Exception e) {
+            log.warn("瑙f瀽璁惧浣嶇疆淇℃伅澶辫触, deviceId={}", device.getId(), e);
+        }
+        return "榛樿浣嶇疆";
+    }
 }
\ No newline at end of file

--
Gitblit v1.8.0