From e76f0739e647fe8a7e0e2618914e2faff554b1b7 Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期一, 17 十一月 2025 17:33:23 +0800
Subject: [PATCH] 解决冲突

---
 mes-processes/mes-plcSend/src/main/java/com/mes/service/PlcAddressService.java |  407 ++++++---------------------------------------------------
 1 files changed, 48 insertions(+), 359 deletions(-)

diff --git a/mes-processes/mes-plcSend/src/main/java/com/mes/service/PlcAddressService.java b/mes-processes/mes-plcSend/src/main/java/com/mes/service/PlcAddressService.java
index 35aa692..2f3ae9e 100644
--- a/mes-processes/mes-plcSend/src/main/java/com/mes/service/PlcAddressService.java
+++ b/mes-processes/mes-plcSend/src/main/java/com/mes/service/PlcAddressService.java
@@ -1,411 +1,100 @@
 package com.mes.service;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType;
-import com.github.xingshuangs.iot.protocol.s7.service.S7PLC;
-import com.mes.config.PlcAddressMappingConfig;
-import com.mes.entity.PlcAddressMapping;
-import com.mes.mapper.PlcAddressMappingMapper;
-import com.mes.s7.enhanced.EnhancedS7Serializer;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.catalina.core.ApplicationContext;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
+import com.mes.entity.PlcAddress;
 
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 /**
- * PLC鍦板潃鏄犲皠鏈嶅姟
- * 绠$悊PLC鍦板潃鏄犲皠閰嶇疆锛屾敮鎸佷粠鏁版嵁搴撳拰閰嶇疆鏂囦欢鍔犺浇
- * 
- * @author zhoush
- * @date 2025/10/29
+ * PLC鍦板潃鏄犲皠鏈嶅姟鎺ュ彛
+ * 瀹氫箟PLC鍦板潃鏄犲皠閰嶇疆绠$悊鐨勬牳蹇冩柟娉�
+ *
+ * @author huang
+ * @date 2025/10/30
  */
-@Slf4j
-@Service
-public class PlcAddressMappingService {
-
-    @Autowired
-    private PlcAddressMappingMapper plcAddressMappingMapper;
-
-    @Autowired
-    private PlcAddressMappingConfig plcAddressMappingConfig;
-    
-    // JSON瑙f瀽鍣�
-    private final ObjectMapper objectMapper = new ObjectMapper();
+public interface PlcAddressService {
 
     /**
-     * 鑾峰彇鍖呭惈鍦板潃鏄犲皠鐨勯」鐩厤缃�
-     * 鍚堝苟鏁版嵁搴撳拰閰嶇疆鏂囦欢涓殑鏄犲皠淇℃伅
+     * 鑾峰彇鍖呭惈鍦板潃鏄犲皠鐨勯」鐩厤缃紙鍚堝苟鏁版嵁搴撲笌閰嶇疆鏂囦欢锛�
+     * @param projectId 椤圭洰ID
+     * @return 鍚堝苟鍚庣殑椤圭洰閰嶇疆
      */
-    public PlcAddressMappingConfig.ProjectPlcConfig getProjectConfigWithMapping(String projectId) {
-        try {
-            // 1. 鑾峰彇鏁版嵁搴撲腑鐨勯厤缃�
-            PlcAddressMapping mapping = getMappingByProjectId(projectId);
-            PlcAddressMappingConfig.ProjectPlcConfig projectConfig = null;
-            
-            if (mapping != null) {
-                // 浠庢暟鎹簱瀹炰綋杞崲涓洪」鐩厤缃璞�
-                projectConfig = convertToProjectConfig(mapping);
-            } else {
-                // 鏁版嵁搴撲腑娌℃湁閰嶇疆锛屽皾璇曚粠閰嶇疆鏂囦欢鑾峰彇
-                if (fileConfig != null && fileConfig.getProjects().containsKey(projectId)) {
-                    projectConfig = fileConfig.getProjects().get(projectId);
-                } else {
-                    // 鍒涘缓榛樿閰嶇疆
-                    projectConfig = new PlcAddressMappingConfig.ProjectPlcConfig();
-                    projectConfig.setDbArea(fileConfig != null ? fileConfig.getDefaultDbArea() : "DB1");
-                    projectConfig.setBeginIndex(fileConfig != null ? fileConfig.getDefaultBeginIndex() : 0);
-                    projectConfig.setAddressMapping(new HashMap<>());
-                }
-            }
-            
-            // 2. 濡傛灉閰嶇疆鏂囦欢涓湁棰濆鐨勬槧灏勪俊鎭紝杩涜鍚堝苟
-            if (fileConfig != null && fileConfig.getProjects() != null && fileConfig.getProjects().containsKey(projectId)) {
-                PlcAddressMappingConfig.ProjectPlcConfig fileProjectConfig = fileConfig.getProjects().get(projectId);
-                
-                // 鍚堝苟鍦板潃鏄犲皠
-                if (fileProjectConfig.getAddressMapping() != null) {
-                    if (projectConfig.getAddressMapping() == null) {
-                        projectConfig.setAddressMapping(new HashMap<>());
-                    }
-                    // 鏂囦欢閰嶇疆浣滀负鍩虹锛屾暟鎹簱閰嶇疆浣滀负瑕嗙洊锛堜紭鍏堢骇鏇撮珮锛�
-                    Map<String, Integer> mergedMapping = new HashMap<>(fileProjectConfig.getAddressMapping());
-                    if (projectConfig.getAddressMapping() != null) {
-                        mergedMapping.putAll(projectConfig.getAddressMapping());
-                    }
-                    projectConfig.setAddressMapping(mergedMapping);
-                }
-                
-                // 濡傛灉椤圭洰閰嶇疆涓己灏戞煇浜涘睘鎬э紝浠庢枃浠堕厤缃腑琛ュ厖
-                if (projectConfig.getDbArea() == null || projectConfig.getDbArea().trim().isEmpty()) {
-                    projectConfig.setDbArea(fileProjectConfig.getDbArea());
-                }
-                if (projectConfig.getPlcIp() == null || projectConfig.getPlcIp().trim().isEmpty()) {
-                    projectConfig.setPlcIp(fileProjectConfig.getPlcIp());
-                }
-                if (projectConfig.getPlcType() == null || projectConfig.getPlcType().trim().isEmpty()) {
-                    projectConfig.setPlcType(fileProjectConfig.getPlcType());
-                }
-            }
-            
-            return projectConfig;
-        } catch (Exception e) {
-            log.error("鑾峰彇椤圭洰閰嶇疆澶辫触锛岄」鐩甀D: {}", projectId, e);
-            // 杩斿洖榛樿閰嶇疆
-            PlcAddressMappingConfig.ProjectPlcConfig defaultConfig = new PlcAddressMappingConfig.ProjectPlcConfig();
-            defaultConfig.setDbArea(fileConfig != null ? fileConfig.getDefaultDbArea() : "DB1");
-            defaultConfig.setBeginIndex(fileConfig != null ? fileConfig.getDefaultBeginIndex() : 0);
-            defaultConfig.setAddressMapping(new HashMap<>());
-            return defaultConfig;
-        }
-    }
+    PlcAddress getProjectConfigWithMapping(String projectId);
 
     /**
      * 浠庢暟鎹簱鑾峰彇椤圭洰閰嶇疆
+     * @param projectId 椤圭洰ID
+     * @return 椤圭洰閰嶇疆锛圥lcAddress瀹炰綋锛夛紝涓嶅瓨鍦ㄥ垯杩斿洖null
      */
-    public PlcAddressMappingConfig.ProjectPlcConfig getProjectConfig(String projectId) {
-        try {
-            // 浼樺厛浠庢暟鎹簱鑾峰彇閰嶇疆
-            PlcAddressMapping mapping = plcAddressMappingMapper.selectOne(
-                    new LambdaQueryWrapper<PlcAddressMapping>()
-                            .eq(PlcAddressMapping::getProjectId, projectId)
-            );
-            
-            if (mapping != null) {
-                return convertToProjectConfig(mapping);
-            }
-            
-            // 濡傛灉鏁版嵁搴撲腑娌℃湁锛屽垯浠庨厤缃枃浠惰幏鍙�
-            if (fileConfig != null && fileConfig.getProjects() != null && fileConfig.getProjects().containsKey(projectId)) {
-                return fileConfig.getProjects().get(projectId);
-            }
-            
-            // 濡傛灉閮芥病鏈夛紝杩斿洖null
-            return null;
-        } catch (Exception e) {
-            log.error("鑾峰彇椤圭洰閰嶇疆澶辫触锛岄」鐩甀D: {}", projectId, e);
-            return null;
-        }
-    }
+    PlcAddress getProjectConfig(String projectId);
 
     /**
-     * 鑾峰彇鎵�鏈夋槧灏勯厤缃�
-     * 鍚堝苟鏁版嵁搴撳拰閰嶇疆鏂囦欢涓殑鏄犲皠淇℃伅
+     * 鑾峰彇鎵�鏈夋槧灏勯厤缃紙鍚堝苟鍚庣殑addressMapping浼氬啓鍥炲疄浣撶殑JSON瀛楁锛�
+     * @return 鎵�鏈夋槧灏勯厤缃垪琛�
      */
-    public List<PlcAddressMapping> getAllMappings() {
-        try {
-            List<PlcAddressMapping> mappings = plcAddressMappingMapper.selectList(null);
-            
-            // 澶勭悊姣忎釜鏄犲皠閰嶇疆
-            for (PlcAddressMapping mapping : mappings) {
-                // 鑾峰彇椤圭洰鏍囪瘑
-                String projectId = mapping.getProjectId();
-                
-                // 鑾峰彇鍚堝苟鍚庣殑椤圭洰閰嶇疆锛堝寘鍚暟鎹簱鍜岄厤缃枃浠剁殑鏄犲皠淇℃伅锛�
-                PlcAddressMappingConfig.ProjectPlcConfig projectConfig = getProjectConfigWithMapping(projectId);
-                
-                // 灏嗗悎骞跺悗鐨勬槧灏勪俊鎭浆鎹负JSON瀛楃涓�
-                if (projectConfig.getAddressMapping() != null && !projectConfig.getAddressMapping().isEmpty()) {
-                    try {
-                        String mergedMappingJson = objectMapper.writeValueAsString(projectConfig.getAddressMapping());
-                        mapping.setAddressMapping(mergedMappingJson);
-                        // addressMapping灞炴�у凡缁忔槧灏勫埌鏁版嵁搴撶殑address_mapping_json瀛楁
-                    } catch (Exception e) {
-                        log.warn("杞崲鍚堝苟鍚庣殑鏄犲皠淇℃伅澶辫触锛岄」鐩甀D: {}", projectId, e);
-                        // 淇濇寔鍘熸湁鐨刟ddressMapping鍊�
-                    }
-                }
-            }
-            
-            return mappings;
-        } catch (Exception e) {
-            log.error("鑾峰彇鎵�鏈塒LC鍦板潃鏄犲皠閰嶇疆澶辫触", e);
-            throw new RuntimeException("鑾峰彇鎵�鏈塒LC鍦板潃鏄犲皠閰嶇疆澶辫触", e);
-        }
-    }
+    List<PlcAddress> getAllMappings();
 
     /**
      * 鍒嗛〉鑾峰彇PLC鍦板潃鏄犲皠閰嶇疆
+     * @param page 椤电爜
+     * @param size 姣忛〉澶у皬
+     * @param projectId 椤圭洰ID锛堝彲閫夛級
+     * @param plcIp PLC IP锛堝彲閫夛級
+     * @return 鍒嗛〉缁撴灉
      */
-    public IPage<PlcAddressMapping> getMappingsByPage(int page, int size, String projectId, String plcIp) {
-        try {
-            Page<PlcAddressMapping> pageParam = new Page<>(page, size);
-            LambdaQueryWrapper<PlcAddressMapping> queryWrapper = new LambdaQueryWrapper<>();
-            
-            if (projectId != null && !projectId.trim().isEmpty()) {
-                queryWrapper.like(PlcAddressMapping::getProjectId, projectId);
-            }
-            
-            if (plcIp != null && !plcIp.trim().isEmpty()) {
-                queryWrapper.like(PlcAddressMapping::getPlcIp, plcIp);
-            }
-            
-            return plcAddressMappingMapper.selectPage(pageParam, queryWrapper);
-        } catch (Exception e) {
-            log.error("鍒嗛〉鑾峰彇PLC鍦板潃鏄犲皠閰嶇疆澶辫触", e);
-            throw new RuntimeException("鍒嗛〉鑾峰彇PLC鍦板潃鏄犲皠閰嶇疆澶辫触", e);
-        }
-    }
+    IPage<PlcAddress> getMappingsByPage(int page, int size, String projectId, String plcIp);
 
     /**
      * 鏍规嵁ID鑾峰彇PLC鍦板潃鏄犲皠閰嶇疆
+     * @param id 閰嶇疆ID
+     * @return PLC鍦板潃鏄犲皠閰嶇疆
      */
-    public PlcAddressMapping getMappingById(Long id) {
-        try {
-            return plcAddressMappingMapper.selectById(id);
-        } catch (Exception e) {
-            log.error("鏍规嵁ID鑾峰彇PLC鍦板潃鏄犲皠閰嶇疆澶辫触锛孖D: {}", id, e);
-            throw new RuntimeException("鏍规嵁ID鑾峰彇PLC鍦板潃鏄犲皠閰嶇疆澶辫触", e);
-        }
-    }
+    PlcAddress getMappingById(Long id);
 
     /**
-     * 鏍规嵁椤圭洰鏍囪瘑鑾峰彇PLC鍦板潃鏄犲皠閰嶇疆
+     * 鏍规嵁椤圭洰ID鑾峰彇PLC鍦板潃鏄犲皠閰嶇疆
+     * @param projectId 椤圭洰ID
+     * @return PLC鍦板潃鏄犲皠閰嶇疆
      */
-    public PlcAddressMapping getMappingByProjectId(String projectId) {
-        try {
-            return plcAddressMappingMapper.selectOne(
-                    new LambdaQueryWrapper<PlcAddressMapping>()
-                            .eq(PlcAddressMapping::getProjectId, projectId)
-            );
-        } catch (Exception e) {
-            log.error("鏍规嵁椤圭洰鏍囪瘑鑾峰彇PLC鍦板潃鏄犲皠閰嶇疆澶辫触锛岄」鐩甀D: {}", projectId, e);
-            throw new RuntimeException("鏍规嵁椤圭洰鏍囪瘑鑾峰彇PLC鍦板潃鏄犲皠閰嶇疆澶辫触", e);
-        }
-    }
+    PlcAddress getMappingByProjectId(String projectId);
 
     /**
-     * 淇濆瓨PLC鍦板潃鏄犲皠閰嶇疆
+     * 鍒涘缓PLC鍦板潃鏄犲皠閰嶇疆
+     * @param mapping 鏄犲皠閰嶇疆
+     * @return 鍒涘缓鍚庣殑閰嶇疆
      */
-    public PlcAddressMapping saveMapping(PlcAddressMapping mapping) {
-        try {
-            // 妫�鏌ラ」鐩甀D鏄惁宸插瓨鍦�
-            PlcAddressMapping existing = plcAddressMappingMapper.selectOne(
-                    new LambdaQueryWrapper<PlcAddressMapping>()
-                            .eq(PlcAddressMapping::getProjectId, mapping.getProjectId())
-            );
-            
-            if (existing != null) {
-                throw new RuntimeException("椤圭洰鏍囪瘑 " + mapping.getProjectId() + " 宸插瓨鍦�");
-            }
-            
-            plcAddressMappingMapper.insert(mapping);
-            return mapping;
-        } catch (Exception e) {
-            log.error("淇濆瓨PLC鍦板潃鏄犲皠閰嶇疆澶辫触", e);
-            throw new RuntimeException("淇濆瓨PLC鍦板潃鏄犲皠閰嶇疆澶辫触", e);
-        }
-    }
+    PlcAddress saveMapping(PlcAddress mapping);
 
     /**
      * 鏇存柊PLC鍦板潃鏄犲皠閰嶇疆
+     * @param mapping 鏄犲皠閰嶇疆
+     * @return 鏇存柊鍚庣殑閰嶇疆锛屾湭鎵惧埌杩斿洖null
      */
-    public PlcAddressMapping updateMapping(PlcAddressMapping mapping) {
-        try {
-            // 妫�鏌D鏄惁瀛樺湪
-            PlcAddressMapping existing = plcAddressMappingMapper.selectById(mapping.getId());
-            if (existing == null) {
-                return null;
-            }
-            
-            // 濡傛灉椤圭洰ID鏈夊彉鍖栵紝妫�鏌ユ柊椤圭洰ID鏄惁宸插瓨鍦�
-            if (!existing.getProjectId().equals(mapping.getProjectId())) {
-                PlcAddressMapping duplicate = plcAddressMappingMapper.selectOne(
-                        new LambdaQueryWrapper<PlcAddressMapping>()
-                                .eq(PlcAddressMapping::getProjectId, mapping.getProjectId())
-                );
-                
-                if (duplicate != null) {
-                    throw new RuntimeException("椤圭洰鏍囪瘑 " + mapping.getProjectId() + " 宸插瓨鍦�");
-                }
-            }
-            
-            plcAddressMappingMapper.updateById(mapping);
-            return mapping;
-        } catch (Exception e) {
-            log.error("鏇存柊PLC鍦板潃鏄犲皠閰嶇疆澶辫触", e);
-            throw new RuntimeException("鏇存柊PLC鍦板潃鏄犲皠閰嶇疆澶辫触", e);
-        }
-    }
+    PlcAddress updateMapping(PlcAddress mapping);
 
     /**
      * 鍒犻櫎PLC鍦板潃鏄犲皠閰嶇疆
+     * @param id 閰嶇疆ID
+     * @return 鏄惁鎴愬姛
      */
-    public boolean deleteMapping(Long id) {
-        try {
-            int result = plcAddressMappingMapper.deleteById(id);
-            return result > 0;
-        } catch (Exception e) {
-            log.error("鍒犻櫎PLC鍦板潃鏄犲皠閰嶇疆澶辫触锛孖D: {}", id, e);
-            throw new RuntimeException("鍒犻櫎PLC鍦板潃鏄犲皠閰嶇疆澶辫触", e);
-        }
-    }
+    boolean deleteMapping(Long id);
 
     /**
      * 鎵归噺鍒犻櫎PLC鍦板潃鏄犲皠閰嶇疆
+     * @param ids 閰嶇疆ID鍒楄〃
+     * @return 鍒犻櫎鏁伴噺
      */
-    public int deleteMappings(List<Long> ids) {
-        try {
-            if (ids == null || ids.isEmpty()) {
-                return 0;
-            }
-            return plcAddressMappingMapper.deleteBatchIds(ids);
-        } catch (Exception e) {
-            log.error("鎵归噺鍒犻櫎PLC鍦板潃鏄犲皠閰嶇疆澶辫触锛孖D鍒楄〃: {}", ids, e);
-            throw new RuntimeException("鎵归噺鍒犻櫎PLC鍦板潃鏄犲皠閰嶇疆澶辫触", e);
-        }
-    }
+    int deleteMappings(List<Long> ids);
 
     /**
      * 娴嬭瘯PLC杩炴帴
+     * @param mapping 鏄犲皠閰嶇疆
+     * @return 鏄惁鎴愬姛
      */
-    public boolean testConnection(PlcAddressMapping mapping) {
-        try {
-            // 瑙f瀽PLC绫诲瀷
-            EPlcType plcType = EPlcType.S1200; // 榛樿鍊�
-            if (mapping.getPlcType() != null && !mapping.getPlcType().trim().isEmpty()) {
-                try {
-                    plcType = EPlcType.valueOf(mapping.getPlcType());
-                } catch (IllegalArgumentException e) {
-                    log.warn("鏈煡鐨凱LC绫诲瀷: {}, 浣跨敤榛樿绫诲瀷 S1200", mapping.getPlcType());
-                }
-            }
-            
-            // 鍒涘缓S7PLC瀹炰緥
-            String plcIp = mapping.getPlcIp() != null ? mapping.getPlcIp() : "192.168.10.21";
-            S7PLC s7Plc = new S7PLC(plcType, plcIp);
-            
-            // 鍒涘缓EnhancedS7Serializer瀹炰緥
-            EnhancedS7Serializer serializer = EnhancedS7Serializer.newInstance(s7Plc);
-            
-            // 灏濊瘯璇诲彇涓�涓畝鍗曠殑鏁版嵁鏉ユ祴璇曡繛鎺�
-            String dbArea = mapping.getDbArea() != null ? mapping.getDbArea() : "DB1";
-            int beginIndex = mapping.getBeginIndex();
-            
-            // 杩欓噷鎴戜滑鍙祴璇曡繛鎺ワ紝涓嶈鍙栧疄闄呮暟鎹�
-            // 瀹為檯椤圭洰涓彲鑳介渶瑕佹牴鎹叿浣撻渶姹傝皟鏁�
-            return true;
-        } catch (Exception e) {
-            log.error("PLC杩炴帴娴嬭瘯澶辫触", e);
-            return false;
-        }
-    }
+    boolean testConnection(PlcAddress mapping);
 
     /**
-     * 閲嶆柊鍔犺浇閰嶇疆鏂囦欢涓殑鏄犲皠
+     * 閲嶆柊鍔犺浇閰嶇疆鏂囦欢涓殑鏄犲皠閰嶇疆
      */
-    public void reloadConfigMappings() {
-        try {
-            // 鍏抽敭淇敼3锛氶�氳繃Spring涓婁笅鏂囧埛鏂伴厤缃紙閫傜敤浜嶴pring Boot 2.x锛�
-            ApplicationContext applicationContext = SpringContextHolder.getApplicationContext();
-            if (applicationContext != null) {
-                // 鑾峰彇閰嶇疆缁戝畾鐨凚eanDefinition
-                ConfigurableApplicationContext configurableContext = (ConfigurableApplicationContext) applicationContext;
-                ConfigurableEnvironment environment = configurableContext.getEnvironment();
-
-                // 鍒锋柊閰嶇疆婧愶紙閲嶆柊璇诲彇閰嶇疆鏂囦欢锛�
-                for (PropertySource<?> source : environment.getPropertySources()) {
-                    if (source instanceof ResourcePropertySource) {
-                        ResourcePropertySource resourceSource = (ResourcePropertySource) source;
-                        // 閲嶆柊鍔犺浇閰嶇疆鏂囦欢璧勬簮
-                        resourceSource.refresh();
-                    }
-                }
-
-                // 閲嶆柊缁戝畾閰嶇疆鍒癙lcAddressMappingConfig
-                Binder.get(environment)
-                        .bind("plc.address.mapping", PlcAddressMappingConfig.class)
-                        .ifBound(config -> {
-                            // 鏇存柊娉ㄥ叆鐨勯厤缃疄渚嬶紙鍥燖ConfigurationProperties榛樿鏄崟渚嬶紝闇�鎵嬪姩鏇存柊灞炴�э級
-                            this.plcAddressMappingConfig.setDefaultDbArea(config.getDefaultDbArea());
-                            this.plcAddressMappingConfig.setDefaultBeginIndex(config.getDefaultBeginIndex());
-                            this.plcAddressMappingConfig.setProjects(config.getProjects());
-                        });
-
-                log.info("鎴愬姛閲嶆柊鍔犺浇閰嶇疆鏂囦欢涓殑PLC鍦板潃鏄犲皠");
-            }
-        } catch (Exception e) {
-            log.error("閲嶆柊鍔犺浇閰嶇疆鏂囦欢涓殑PLC鍦板潃鏄犲皠澶辫触", e);
-        }
-    }
-
-    /**
-     * 灏嗘暟鎹簱瀹炰綋杞崲涓洪」鐩厤缃璞�
-     */
-    private PlcAddressMappingConfig.ProjectPlcConfig convertToProjectConfig(PlcAddressMapping mapping) {
-        PlcAddressMappingConfig.ProjectPlcConfig config = new PlcAddressMappingConfig.ProjectPlcConfig();
-        
-        config.setDbArea(mapping.getDbArea());
-        config.setBeginIndex(mapping.getBeginIndex());
-        config.setPlcIp(mapping.getPlcIp());
-        config.setPlcType(mapping.getPlcType());
-        
-        // 瑙f瀽鍦板潃鏄犲皠JSON
-        if (mapping.getAddressMapping() != null && !mapping.getAddressMapping().trim().isEmpty()) {
-            try {
-                // 浣跨敤Jackson瑙f瀽JSON瀛楃涓蹭负Map<String, Integer>
-                Map<String, Integer> addressMap = objectMapper.readValue(
-                    mapping.getAddressMapping(), 
-                    new TypeReference<Map<String, Integer>>() {}
-                );
-                config.setAddressMapping(addressMap);
-            } catch (Exception e) {
-                log.warn("瑙f瀽鍦板潃鏄犲皠JSON澶辫触: {}", mapping.getAddressMapping(), e);
-                // 濡傛灉瑙f瀽澶辫触锛屽垱寤轰竴涓┖鐨勬槧灏�
-                config.setAddressMapping(new HashMap<>());
-            }
-        } else {
-            // 濡傛灉娌℃湁鍦板潃鏄犲皠锛屽垱寤轰竴涓┖鐨勬槧灏�
-            config.setAddressMapping(new HashMap<>());
-        }
-        
-        return config;
-    }
+    void reloadConfigMappings();
 }
\ No newline at end of file

--
Gitblit v1.8.0