From 09faa36132c8cbada5327649875534ef01c1a3b1 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期四, 11 十二月 2025 20:44:31 +0800
Subject: [PATCH] feat: 优化任务里程统计

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/LegacyTransferSyncServiceImpl.java |   91 ++++++++++++++++++++++++++++++++++++---------
 1 files changed, 72 insertions(+), 19 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/LegacyTransferSyncServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/LegacyTransferSyncServiceImpl.java
index 7bdf7ab..4bf8466 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/LegacyTransferSyncServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/LegacyTransferSyncServiceImpl.java
@@ -6,6 +6,7 @@
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.system.domain.SysTaskEmergency;
 import com.ruoyi.system.domain.VehicleInfo;
+import com.ruoyi.system.domain.enums.TaskStatus;
 import com.ruoyi.system.domain.vo.TaskCreateVO;
 import com.ruoyi.system.domain.vo.TaskUpdateVO;
 import com.ruoyi.system.mapper.SysTaskEmergencyMapper;
@@ -17,6 +18,7 @@
 import com.ruoyi.system.mapper.VehicleInfoMapper;
 import com.ruoyi.system.service.ISysUserService;
 import com.ruoyi.system.service.IWechatTaskNotifyService;
+import com.ruoyi.system.utils.TaskStatusConverter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
@@ -198,6 +200,13 @@
         }
     }
 
+    /**
+     * 鏇存柊鍗曚釜杞繍鍗�
+     * @param serviceOrdID
+     * @param dispatchOrdID
+     * @param order
+     * @return
+     */
     private boolean updateTransferOrder(String serviceOrdID, String dispatchOrdID, Map<String, Object> order){
         log.info("寮�濮嬪悓姝ュ崟涓浆杩愬崟: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
         String sysTaskCode="";
@@ -209,13 +218,11 @@
             }
             // 鏋勯�燭askCreateVO瀵硅薄
             TaskCreateVO createTaskVo = buildCreateTaskVo(serviceOrdID, dispatchOrdID, order);
-
-            sysTaskCode = createTaskVo.getTaskCode();
             if (createTaskVo == null) {
                 log.error("鏋勯�燭askCreateVO澶辫触: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
                 return false;
             }
-
+            sysTaskCode = createTaskVo.getTaskCode();
             // 璁板綍鍒涘缓鐨勪换鍔′俊鎭�
             log.debug("鍑嗗鍒涘缓浠诲姟: ServiceOrdID={}, DispatchOrdID={}, 鎮h�呭鍚�={}, 杞嚭鍖婚櫌={}, 杞叆鍖婚櫌={}",
                     serviceOrdID, dispatchOrdID,
@@ -230,15 +237,26 @@
             String serviceOrdClass = getStringValue(order,"ServiceOrdClass");
             String serviceOrdNo = getStringValue(order,"ServiceOrdNo");
 
-            Integer oauserId=getIntegerValue(order,"ServiceOrd_NS_ID");
+            Integer oauserId=getIntegerValue(order,"ServiceOrd_CC_ID");
+            if(oauserId==null){
+                oauserId=getIntegerValue(order,"ServiceOrd_NS_ID");
+            }
+            if(oauserId==null || oauserId==0){
+                log.error("鍒涘缓浠诲姟鏃讹紝鑾峰彇鍒涘缓浜轰俊鎭け璐ワ紝serviceOrdID={}, DispatchOrdID={} ServiceOrd_NS_ID={},ServiceOrd_CC_ID={}", serviceOrdID, dispatchOrdID, getIntegerValue(order,"ServiceOrd_NS_ID"),getIntegerValue(order,"ServiceOrd_CC_ID"));
+                return false;
+            }
             SysUser sysUser=sysUserService.selectUserByOaUserId(oauserId);
             Long taskCreatorId=sysUser==null?null:sysUser.getUserId();
             String createUserName=sysUser==null?"system":sysUser.getUserName();
+            if(taskCreatorId==null || createUserName==null){
+                log.error("鍒涘缓浠诲姟鏃讹紝鑾峰彇鍒涘缓浜轰俊鎭け璐ワ紝serviceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
+                return false;
+            }
             SysDept dept=sysDeptService.selectDeptByServiceClass(serviceOrdClass);
             Long deptId=dept==null?null:dept.getDeptId();
             TaskUpdateVO updateTaskVo = new TaskUpdateVO();
             BeanUtils.copyProperties(createTaskVo, updateTaskVo);
-
+            log.info("寮�濮嬩繚瀛樿浆杩愪换鍔�,serviceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
 
             int result = sysTaskService.updateTask(updateTaskVo,serviceOrdID,dispatchOrdID, serviceOrdNo, taskCreatorId,createUserName, deptId, ServiceOrd_CC_Time, ServiceOrd_CC_Time);
 
@@ -300,11 +318,19 @@
              * 鍒涘缓浜篒D
              */
             Integer oauserId=getIntegerValue(order,"ServiceOrd_CC_ID");
+            if(oauserId==null || oauserId==0) {
+                oauserId=getIntegerValue(order,"ServiceOrd_NS_ID");
+            }
             SysUser sysUser=sysUserService.selectUserByOaUserId(oauserId);
-            Long taskCreatorId=sysUser==null?null:sysUser.getUserId();
-            String createUserName=sysUser==null?"system":sysUser.getUserName();
+            if(sysUser==null){
+                log.error("鍒涘缓浠诲姟鏃讹紝鑾峰彇鍒涘缓浜轰俊鎭け璐ワ紝serviceOrdID={}, DispatchOrdID={} ServiceOrd_CC_ID:{},ServiceOrd_NS_ID:{}", serviceOrdID, dispatchOrdID, getIntegerValue(order,"ServiceOrd_CC_ID"),getIntegerValue(order,"ServiceOrd_NS_ID"));
+                return false;
+            }
+            Long taskCreatorId= sysUser.getUserId();
+            String createUserName= sysUser.getUserName();
             SysDept dept=sysDeptService.selectDeptByServiceClass(serviceOrdClass);
             Long deptId=dept==null?null:dept.getDeptId();
+
 
             int result = sysTaskService.insertTask(createTaskVo,serviceOrdID,dispatchOrdID, serviceOrdNo, taskCreatorId,createUserName, deptId, ServiceOrd_CC_Time, ServiceOrd_CC_Time);
 
@@ -394,7 +420,7 @@
      */
     @Override
     public TaskCreateVO buildCreateTaskVo(String serviceOrdID, String dispatchOrdID, Map<String, Object> order) {
-        log.info("鏋勯�燭askCreateVO: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
+//        log.info("鏋勯�燭askCreateVO: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
 
         try {
             // 妫�鏌ュ弬鏁版湁鏁堟��
@@ -408,11 +434,11 @@
                 return null;
             }
             String serviceOrdClass = getStringValue(order, "ServiceOrdClass");
-            //TODO
+
             TaskCreateVO createTaskVo = new TaskCreateVO();
             String serviceOrdCode=this.getServiceOrdCode(getDateValue(order, "ServiceOrd_CC_Time"),serviceOrdClass,getStringValue(order, "ServiceOrdNo"));
             createTaskVo.setTaskCode(serviceOrdCode);
-            log.info("鏋勯�燭askCreateVO: ServiceOrdID={}, DispatchOrdID={},taskCode:{}", serviceOrdID, dispatchOrdID,serviceOrdCode);
+//            log.info("鏋勯�燭askCreateVO: ServiceOrdID={}, DispatchOrdID={},taskCode:{}", serviceOrdID, dispatchOrdID,serviceOrdCode);
             // 璁剧疆鍩烘湰淇℃伅
             createTaskVo.setTaskType("EMERGENCY_TRANSFER"); // 鎬ユ晳杞繍浠诲姟
             
@@ -544,7 +570,8 @@
                 String carLicense = legacyTransferSyncMapper.selectCarLicenseByCarID(carID);
                 if (StringUtils.isNotEmpty(carLicense)) {
                     // 鏍规嵁杞︾墝鍙锋煡璇㈡柊绯荤粺涓殑杞﹁締ID
-                    log.debug("杞﹁締杞︾墝鍙�: {}", carLicense);
+                    log.info("杞繍浠诲姟,ServiceOrdID:{},杞﹁締杞︾墝:{}",serviceOrdID,carLicense);
+//                    log.debug("杞﹁締杞︾墝鍙�: {}", carLicense);
                     
                     // 棣栧厛灏濊瘯閫氳繃VehicleInfoMapper鏌ヨ杞﹁締淇℃伅
                     try {
@@ -556,7 +583,7 @@
                             List<Long> vehicleIds = new ArrayList<>();
                             vehicleIds.add(vehicleInfo.getVehicleId());
                             createTaskVo.setVehicleIds(vehicleIds);
-                            log.debug("閫氳繃car_id鎵惧埌杞﹁締淇℃伅: vehicle_id={}, vehicle_no={}", vehicleInfo.getVehicleId(), vehicleInfo.getVehicleNo());
+//                            log.debug("閫氳繃car_id鎵惧埌杞﹁締淇℃伅: vehicle_id={}, vehicle_no={}", vehicleInfo.getVehicleId(), vehicleInfo.getVehicleNo());
                         } else {
                             // 濡傛灉閫氳繃car_id鎵句笉鍒帮紝灏濊瘯閫氳繃杞︾墝鍙锋煡璇�
                             vehicleInfo = vehicleInfoMapper.selectVehicleInfoByVehicleNo(carLicense);
@@ -564,9 +591,9 @@
                                 List<Long> vehicleIds = new ArrayList<>();
                                 vehicleIds.add(vehicleInfo.getVehicleId());
                                 createTaskVo.setVehicleIds(vehicleIds);
-                                log.debug("閫氳繃杞︾墝鍙锋壘鍒拌溅杈嗕俊鎭�: vehicle_id={}, vehicle_no={}", vehicleInfo.getVehicleId(), vehicleInfo.getVehicleNo());
+                                log.debug("杞繍浠诲姟,ServiceOrdID:{} 閫氳繃杞︾墝鍙锋壘鍒拌溅杈嗕俊鎭�: vehicle_id={}, vehicle_no={}",serviceOrdID, vehicleInfo.getVehicleId(), vehicleInfo.getVehicleNo());
                             } else {
-                                log.warn("鏈壘鍒板搴旂殑杞﹁締淇℃伅: car_id={}, vehicle_no={}", carID, carLicense);
+                                log.warn("杞繍浠诲姟,ServiceOrdID:{} 鏈壘鍒板搴旂殑杞﹁締淇℃伅: car_id={}, vehicle_no={}",serviceOrdID, carID, carLicense);
                             }
                         }
                     } catch (NumberFormatException e) {
@@ -585,6 +612,7 @@
                 }
             }
             
+
 
             // 璁剧疆鍏朵粬淇℃伅
             createTaskVo.setTaskDescription("浠庢棫绯荤粺鍚屾鐨勮浆杩愬崟");
@@ -635,8 +663,15 @@
                 }
                 createTaskVo.setDiseaseIds(diseaseIds);
             }
+
+            Integer dispatchOrdStatus = getIntegerValue(order, "DispatchOrdStatus");
+           TaskStatus status= TaskStatusConverter.convertFromLegacyStatus(dispatchOrdStatus);
+           if(status!=null) {
+               createTaskVo.setTaskStatus(status.getCode());
+           }
+
             
-            log.info("TaskCreateVO鏋勯�犲畬鎴�: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
+//            log.info("TaskCreateVO鏋勯�犲畬鎴�: ServiceOrdID={}, DispatchOrdID={}", serviceOrdID, dispatchOrdID);
             return createTaskVo;
             
         } catch (Exception e) {
@@ -652,6 +687,7 @@
      * @return 鎵ц浜轰俊鎭垪琛�
      */
     private List<TaskCreateVO.AssigneeInfo> queryAssignees(String dispatchOrdID) {
+        long startTime = System.currentTimeMillis();
         try {
             // 妫�鏌ュ弬鏁版湁鏁堟��
             if (StringUtils.isEmpty(dispatchOrdID)) {
@@ -659,8 +695,24 @@
                 return new ArrayList<>();
             }
             
-            // 浠嶴QL Server鏌ヨ鎵ц浜轰俊鎭�
-            List<Map<String, Object>> assigneeList = legacyTransferSyncMapper.selectAssigneesByDispatchOrdID(dispatchOrdID);
+            // 灏哠tring杞崲涓篖ong锛岄伩鍏嶆暟鎹簱绫诲瀷涓嶅尮閰嶅鑷寸殑鎬ц兘闂
+            Long dispatchOrdIdLong;
+            try {
+                dispatchOrdIdLong = Long.valueOf(dispatchOrdID);
+            } catch (NumberFormatException e) {
+                log.error("璋冨害鍗旾D鏍煎紡涓嶆纭�: {}", dispatchOrdID, e);
+                return new ArrayList<>();
+            }
+            
+            // 浠嶴QL Server鏌ヨ鎵ц浜轰俊鎭紙浣跨敤Long绫诲瀷锛屽尮閰岯IGINT瀛楁锛�
+            List<Map<String, Object>> assigneeList = legacyTransferSyncMapper.selectAssigneesByDispatchOrdID(dispatchOrdIdLong);
+            long queryTime = System.currentTimeMillis() - startTime;
+            
+            // 璁板綍鎱㈡煡璇紙瓒呰繃500ms锛�
+            if (queryTime > 500) {
+                log.warn("鏌ヨ鎵ц浜轰俊鎭�楁椂杩囬暱: {}ms, 璋冨害鍗旾D: {}, 寤鸿鍦� DispatchOrd_Entourage 琛ㄧ殑 DispatchOrdIDDt 瀛楁涓婂垱寤虹储寮�", 
+                    queryTime, dispatchOrdID);
+            }
             
             // 杞崲涓篢askCreateVO.AssigneeInfo瀵硅薄
             List<TaskCreateVO.AssigneeInfo> assignees = new ArrayList<>();
@@ -702,10 +754,11 @@
                 }
             }
             
-            log.info("鏌ヨ鍒皗}涓墽琛屼汉锛岃皟搴﹀崟ID: {}", assignees.size(), dispatchOrdID);
+            log.debug("鏌ヨ鍒皗}涓墽琛屼汉锛岃皟搴﹀崟ID: {}, 鑰楁椂: {}ms", assignees.size(), dispatchOrdID, System.currentTimeMillis() - startTime);
             return assignees;
         } catch (Exception e) {
-            log.error("鏌ヨ鎵ц浜轰俊鎭紓甯革紝璋冨害鍗旾D: {}", dispatchOrdID, e);
+            long totalTime = System.currentTimeMillis() - startTime;
+            log.error("鏌ヨ鎵ц浜轰俊鎭紓甯革紝璋冨害鍗旾D: {}, 鑰楁椂: {}ms", dispatchOrdID, totalTime, e);
             return new ArrayList<>(); // 杩斿洖绌哄垪琛ㄨ�屼笉鏄痭ull
         }
     }

--
Gitblit v1.9.1