From 364adbc9a93a396b74e154f910c2a0a72bfb1a0f Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期六, 29 十一月 2025 22:10:41 +0800
Subject: [PATCH] feat: 更新车辆里程统计

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DepartmentSyncServiceImpl.java |   70 ++++++++++++++++++++++++++++++++--
 1 files changed, 65 insertions(+), 5 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 3af352b..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;
@@ -52,7 +53,7 @@
      */
     @Override
     @Transactional
-    public AjaxResult syncBranchDepartments(List<DepartmentSyncDTO> branchDepts,List<OrderClassDTO> serviceOrderList,List<OrderClassDTO> dispatchOrderList)
+    public AjaxResult syncBranchDepartments(List<DepartmentSyncDTO> branchDepts,List<OrderClassDTO> serviceOrderList,List<OrderClassDTO> dispatchOrderList,List<Map<String, Object>> addressList)
     {
         try
         {
@@ -106,7 +107,7 @@
                         branchMap.put(branchName, branchDeptId);
                         
                         // 妫�鏌ュ苟鏇存柊缂栫爜
-                        syncOrderClassCodes(existingBranch, parts[0].trim(), serviceOrderList, dispatchOrderList);
+                        syncOrderClassCodes(existingBranch, parts[0].trim(), serviceOrderList, dispatchOrderList,addressList);
 //                        existingBranch.setDepartmentId(dto.getDepartmentId());
                         sysDeptMapper.updateDept(existingBranch);
                         log.info("鏇存柊鍒嗗叕鍙哥紪鐮�: {}, 鏈嶅姟鍗曠紪鐮�: {}, 璋冨害鍗曠紪鐮�: {}", 
@@ -125,7 +126,7 @@
 //                        newBranch.setDepartmentId(dto.getDepartmentId());
 
                         // 鑷姩鍖归厤骞惰缃湇鍔″崟鍜岃皟搴﹀崟缂栫爜
-                        syncOrderClassCodes(newBranch, parts[0].trim(), serviceOrderList, dispatchOrderList);
+                        syncOrderClassCodes(newBranch, parts[0].trim(), serviceOrderList, dispatchOrderList,addressList);
 
                         sysDeptMapper.insertDept(newBranch);
                         branchDeptId = newBranch.getDeptId();
@@ -204,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);
+        }
+
+    }
     
     /**
      * 鍚屾杞繍閮ㄥ拰瀛愰儴闂ㄦ暟鎹紙浣跨敤澶栭儴浼犲叆鐨勬暟鎹簮锛�
@@ -218,7 +237,7 @@
      */
     @Override
     @Transactional
-    public AjaxResult syncTransportDepartments(List<DepartmentSyncDTO> transportDepts)
+    public AjaxResult syncTransportDepartments(List<DepartmentSyncDTO> transportDepts, List<Map<String, Object>> addressList)
     {
         try
         {
@@ -347,6 +366,34 @@
         }
     }
 
+    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());
+    }
+
     /**
      * 鍚屾璁㈠崟缂栫爜锛堟湇鍔″崟鍜岃皟搴﹀崟缂栫爜锛�
      * 
@@ -359,7 +406,7 @@
      */
     private void syncOrderClassCodes(SysDept dept, String cityName, 
                                     List<OrderClassDTO> serviceOrderList,
-                                    List<OrderClassDTO> dispatchOrderList)
+                                    List<OrderClassDTO> dispatchOrderList, List<Map<String, Object>> addressList)
     {
         if (serviceOrderList == null || dispatchOrderList == null)
         {
@@ -373,6 +420,19 @@
             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);
             }

--
Gitblit v1.9.1