From d294abb765e4ed349907c92ce313689c6299ba7d Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期二, 02 十二月 2025 00:17:00 +0800
Subject: [PATCH] feat:地图都改为天地图的接口

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DepartmentSyncServiceImpl.java |  176 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 169 insertions(+), 7 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DepartmentSyncServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DepartmentSyncServiceImpl.java
index 30d4f18..2fbce75 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DepartmentSyncServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DepartmentSyncServiceImpl.java
@@ -1,5 +1,6 @@
 package com.ruoyi.system.service.impl;
 
+import java.math.BigDecimal;
 import java.util.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -10,9 +11,11 @@
 import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.system.domain.DepartmentSyncDTO;
+import com.ruoyi.system.domain.OrderClassDTO;
 import com.ruoyi.system.mapper.SysDeptMapper;
 import com.ruoyi.system.service.IDepartmentSyncService;
 import com.ruoyi.system.service.IDepartmentSyncDataService;
+import com.ruoyi.system.service.IOrderClassDataService;
 
 /**
  * 閮ㄩ棬鍚屾Service涓氬姟灞傚鐞�
@@ -30,10 +33,11 @@
 {
     private static final Logger log = LoggerFactory.getLogger(DepartmentSyncServiceImpl.class);
 
-
-
     @Autowired
     private SysDeptMapper sysDeptMapper;
+
+    @Autowired
+    private IOrderClassDataService orderClassDataService;
 
 
     
@@ -49,7 +53,7 @@
      */
     @Override
     @Transactional
-    public AjaxResult syncBranchDepartments(List<DepartmentSyncDTO> branchDepts)
+    public AjaxResult syncBranchDepartments(List<DepartmentSyncDTO> branchDepts,List<OrderClassDTO> serviceOrderList,List<OrderClassDTO> dispatchOrderList,List<Map<String, Object>> addressList)
     {
         try
         {
@@ -59,6 +63,9 @@
             }
             
             log.info("寮�濮嬪悓姝� {} 鏉″垎鍏徃鏁版嵁鍒� MySQL 鏁版嵁搴�...", branchDepts.size());
+            
+            // 涓�娆℃�т粠SQL Server鏌ヨ鎵�鏈夌紪鐮佹暟鎹紝閬垮厤鍦ㄥ惊鐜腑閲嶅鏌ヨ
+
             
             // 浣跨敤Map鏉ヨ窡韪凡鍒涘缓鐨勫垎鍏徃锛宬ey涓哄垎鍏徃鍚嶇О锛寁alue涓洪儴闂↖D
             Map<String, Long> branchMap = new HashMap<>();
@@ -95,10 +102,16 @@
                     SysDept existingBranch = sysDeptMapper.checkDeptNameUnique(branchName, 100L);
                     if (existingBranch != null)
                     {
-                        // 鍒嗗叕鍙稿凡瀛樺湪锛屾洿鏂癲epartment_id
+                        // 鍒嗗叕鍙稿凡瀛樺湪锛屾洿鏂扮紪鐮�
                         branchDeptId = existingBranch.getDeptId();
                         branchMap.put(branchName, branchDeptId);
-                        log.info("鍒嗗叕鍙稿凡瀛樺湪: {}, ID: {}", branchName, branchDeptId);
+                        
+                        // 妫�鏌ュ苟鏇存柊缂栫爜
+                        syncOrderClassCodes(existingBranch, parts[0].trim(), serviceOrderList, dispatchOrderList,addressList);
+//                        existingBranch.setDepartmentId(dto.getDepartmentId());
+                        sysDeptMapper.updateDept(existingBranch);
+                        log.info("鏇存柊鍒嗗叕鍙哥紪鐮�: {}, 鏈嶅姟鍗曠紪鐮�: {}, 璋冨害鍗曠紪鐮�: {}", 
+                            branchName, existingBranch.getServiceOrderClass(), existingBranch.getDispatchOrderClass());
                     }
                     else
                     {
@@ -110,12 +123,17 @@
                         newBranch.setOrderNum(branchMap.size() + 1);  // 鎺掑簭
                         newBranch.setStatus("0");  // 姝e父鐘舵��
                         newBranch.setCreateBy("sync");
+//                        newBranch.setDepartmentId(dto.getDepartmentId());
+
+                        // 鑷姩鍖归厤骞惰缃湇鍔″崟鍜岃皟搴﹀崟缂栫爜
+                        syncOrderClassCodes(newBranch, parts[0].trim(), serviceOrderList, dispatchOrderList,addressList);
 
                         sysDeptMapper.insertDept(newBranch);
                         branchDeptId = newBranch.getDeptId();
                         branchMap.put(branchName, branchDeptId);
                         createdBranch++;
-                        log.info("鍒涘缓鏂板垎鍏徃: {}, ID: {}", branchName, branchDeptId);
+                        log.info("鍒涘缓鏂板垎鍏徃: {}, ID: {}, 鏈嶅姟鍗曠紪鐮�: {}, 璋冨害鍗曠紪鐮�: {}", 
+                            branchName, branchDeptId, newBranch.getServiceOrderClass(), newBranch.getDispatchOrderClass());
                     }
                 }
 
@@ -129,6 +147,7 @@
                     // 閮ㄩ棬宸插瓨鍦紝鏇存柊淇℃伅
                     existingDept.setDeptName(deptName);
                     existingDept.setUpdateBy("sync");
+//                    existingDept.setDepartmentId(dto.getDepartmentId());
                     sysDeptMapper.updateDept(existingDept);
                     updatedDept++;
                     log.info("鏇存柊閮ㄩ棬: {} -> {}", branchName, deptName);
@@ -186,6 +205,24 @@
             return AjaxResult.error("鍚屾澶辫触: " + e.getMessage());
         }
     }
+
+    /**
+     * 鍚屾鍒嗗叕鍙哥殑鍦板潃鏁版嵁
+     * @param departAddress
+     */
+    public void syncDeptAddress(List<Map<String,Object>> departAddress){
+        List<SysDept> depts =sysDeptMapper.selectDeptListByParentId(100L);
+        for(SysDept dept:depts){
+            Map<String,Object> addressInfo = getDeptAddressInfo(departAddress,dept.getServiceOrderClass());
+            if(addressInfo != null){
+                dept.setDepartureAddress(getAddress(addressInfo));
+                dept.setDepartureLongitude(getLongitude(addressInfo));
+                dept.setDepartureLatitude(getLatitude(addressInfo));
+            }
+            sysDeptMapper.updateDept(dept);
+        }
+
+    }
     
     /**
      * 鍚屾杞繍閮ㄥ拰瀛愰儴闂ㄦ暟鎹紙浣跨敤澶栭儴浼犲叆鐨勬暟鎹簮锛�
@@ -200,7 +237,7 @@
      */
     @Override
     @Transactional
-    public AjaxResult syncTransportDepartments(List<DepartmentSyncDTO> transportDepts)
+    public AjaxResult syncTransportDepartments(List<DepartmentSyncDTO> transportDepts, List<Map<String, Object>> addressList)
     {
         try
         {
@@ -270,6 +307,7 @@
                     // 閮ㄩ棬宸插瓨鍦紝鏇存柊淇℃伅
                     existingDept.setDeptName(deptName);
                     existingDept.setUpdateBy("sync");
+                    existingDept.setDepartmentId(dto.getDepartmentId());
                     sysDeptMapper.updateDept(existingDept);
                     updatedDept++;
                     log.info("鏇存柊杞繍閮ㄥ瓙閮ㄩ棬: {}", deptName);
@@ -327,4 +365,128 @@
             return AjaxResult.error("鍚屾澶辫触: " + e.getMessage());
         }
     }
+
+    private Map<String,Object> getDeptAddressInfo(List<Map<String,Object>> departAddress,String ServiceBranch){
+        return departAddress.stream()
+            .filter(map -> map.get("ServiceBranch").equals(ServiceBranch))
+            .findFirst()
+            .orElse(null);
+    }
+
+    private String getAddress(Map<String, Object> addressInfo){
+        if(addressInfo == null){
+            return null;
+        }
+        return addressInfo.get("ServiceAddress").toString();
+    }
+
+    private BigDecimal getLongitude(Map<String, Object> addressInfo){
+        if(addressInfo == null){
+            return null;
+        }
+        return new BigDecimal(addressInfo.get("ServiceAddress_lng").toString());
+    }
+
+    private BigDecimal getLatitude(Map<String, Object> addressInfo){
+        if(addressInfo == null){
+            return null;
+        }
+        return new BigDecimal(addressInfo.get("ServiceAddress_lat").toString());
+    }
+
+    /**
+     * 鍚屾璁㈠崟缂栫爜锛堟湇鍔″崟鍜岃皟搴﹀崟缂栫爜锛�
+     * 
+     * 鏍规嵁鍒嗗叕鍙稿悕绉颁腑鐨勫湴鍚嶏紝鑷姩鍖归厤SQL Server涓殑缂栫爜骞舵洿鏂板埌閮ㄩ棬瀵硅薄
+     * 
+     * @param dept 閮ㄩ棬瀵硅薄锛堝垎鍏徃锛�
+     * @param cityName 鍩庡競鍚嶇О锛堝锛氫腑灞便�佸箍宸炪�佹箾姹燂級
+     * @param serviceOrderList 鏈嶅姟鍗曠紪鐮佸垪琛紙浠嶴QL Server鏌ヨ锛�
+     * @param dispatchOrderList 璋冨害鍗曠紪鐮佸垪琛紙浠嶴QL Server鏌ヨ锛�
+     */
+    private void syncOrderClassCodes(SysDept dept, String cityName, 
+                                    List<OrderClassDTO> serviceOrderList,
+                                    List<OrderClassDTO> dispatchOrderList, List<Map<String, Object>> addressList)
+    {
+        if (serviceOrderList == null || dispatchOrderList == null)
+        {
+            log.warn("缂栫爜鍒楄〃涓虹┖锛岃烦杩囩紪鐮佸悓姝� - 鍩庡競: {}", cityName);
+            return;
+        }
+        
+        try
+        {
+            // 鍖归厤鏈嶅姟鍗曠紪鐮�
+            String serviceOrderClass = matchCityNameToCode(cityName, serviceOrderList);
+            if (serviceOrderClass != null)
+            {
+                Map<String, Object> addressInfo = this.getDeptAddressInfo(addressList, serviceOrderClass);
+                String address=this.getAddress(addressInfo);
+                if(address!=null){
+                    dept.setDepartureAddress(address);
+                }
+                BigDecimal lon = this.getLongitude(addressInfo);
+                if(lon!=null){
+                    dept.setDepartureLongitude(lon);
+                }
+                BigDecimal lat = this.getLatitude(addressInfo);
+                if(lat!=null){
+                    dept.setDepartureLatitude(lat);
+                }
+                dept.setServiceOrderClass(serviceOrderClass);
+                log.info("鍖归厤鍒版湇鍔″崟缂栫爜 - 鍩庡競: {}, 缂栫爜: {}", cityName, serviceOrderClass);
+            }
+            else
+            {
+                log.warn("鏈壘鍒板尮閰嶇殑鏈嶅姟鍗曠紪鐮� - 鍩庡競: {}", cityName);
+            }
+
+            // 鍖归厤璋冨害鍗曠紪鐮�
+            String dispatchOrderClass = matchCityNameToCode(cityName, dispatchOrderList);
+            if (dispatchOrderClass != null)
+            {
+                dept.setDispatchOrderClass(dispatchOrderClass);
+                log.info("鍖归厤鍒拌皟搴﹀崟缂栫爜 - 鍩庡競: {}, 缂栫爜: {}", cityName, dispatchOrderClass);
+            }
+            else
+            {
+                log.warn("鏈壘鍒板尮閰嶇殑璋冨害鍗曠紪鐮� - 鍩庡競: {}", cityName);
+            }
+        }
+        catch (Exception e)
+        {
+            log.error("鍚屾璁㈠崟缂栫爜澶辫触 - 鍩庡競: {}", cityName, e);
+        }
+    }
+
+    /**
+     * 鏍规嵁鍩庡競鍚嶇О鍖归厤缂栫爜
+     * 
+     * 鍖归厤瑙勫垯锛氬鏋渧text涓寘鍚煄甯傚悕绉帮紝鍒欒繑鍥炲搴旂殑vOrder2缂栫爜
+     * 渚嬪锛歝ityName="涓北", vtext="涓北鏈嶅姟鍗�", vOrder2="JA" -> 杩斿洖"JA"
+     * 
+     * @param cityName 鍩庡競鍚嶇О锛堝锛氫腑灞便�佸箍宸烇級
+     * @param orderClassList 缂栫爜鍒楄〃
+     * @return 鍖归厤鐨勭紪鐮佸�硷紙vOrder2锛夛紝鏈尮閰嶈繑鍥瀗ull
+     */
+    private String matchCityNameToCode(String cityName, List<OrderClassDTO> orderClassList)
+    {
+        if (StringUtils.isEmpty(cityName) || orderClassList == null || orderClassList.isEmpty())
+        {
+            return null;
+        }
+
+        // 閬嶅巻缂栫爜鍒楄〃锛屾煡鎵惧寘鍚煄甯傚悕绉扮殑椤�
+        for (OrderClassDTO dto : orderClassList)
+        {
+            if (dto.getVtext() != null && dto.getVtext().contains(cityName))
+            {
+                log.debug("鍩庡競鍚嶇О鍖归厤鎴愬姛 - 鍩庡競: {}, vtext: {}, vOrder2: {}", 
+                    cityName, dto.getVtext(), dto.getVOrder2());
+                return dto.getVOrder2();
+            }
+        }
+
+        return null;
+    }
 }

--
Gitblit v1.9.1