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/LegacySystemSyncServiceImpl.java | 151 +++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 141 insertions(+), 10 deletions(-)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/LegacySystemSyncServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/LegacySystemSyncServiceImpl.java
index 25ac645..487b710 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/LegacySystemSyncServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/LegacySystemSyncServiceImpl.java
@@ -89,6 +89,8 @@
@Autowired
private ITaskAttachmentService taskAttachmentService;
+
+
/**
* 鍚屾鎬ユ晳杞繍浠诲姟鍒版棫绯荤粺
@@ -342,8 +344,70 @@
return null;
}
-
-
+ // ====== 鍓嶇疆鏍¢獙锛氱‘淇濅换鍔℃暟鎹畬鏁� ======
+
+ // 1. 妫�鏌ユ槸鍚﹀凡鍒嗛厤杞﹁締
+ List<SysTaskVehicle> taskVehicles = sysTaskVehicleMapper.selectSysTaskVehicleByTaskId(taskId);
+ if (taskVehicles == null || taskVehicles.isEmpty()) {
+ log.warn("浠诲姟鏈垎閰嶈溅杈嗭紝璺宠繃璋冨害鍗曞悓姝ワ紝浠诲姟ID: {}", taskId);
+ return null;
+ }
+
+ // 2. 妫�鏌ユ槸鍚﹀凡鍒嗛厤鎵ц浜哄憳
+ List<SysTaskAssignee> taskAssignees = sysTaskAssigneeMapper.selectSysTaskAssigneeByTaskId(taskId);
+ if (taskAssignees == null || taskAssignees.isEmpty()) {
+ log.warn("浠诲姟鏈垎閰嶆墽琛屼汉鍛橈紝璺宠繃璋冨害鍗曞悓姝ワ紝浠诲姟ID: {}", taskId);
+ return null;
+ }
+
+ // 3. 妫�鏌ラ绾︽椂闂存槸鍚︽湁鏁堬紙蹇呴』澶т簬1970骞达級
+ if (task.getPlannedStartTime() == null) {
+ log.warn("浠诲姟鏈缃绾︽椂闂达紝璺宠繃璋冨害鍗曞悓姝ワ紝浠诲姟ID: {}", taskId);
+ return null;
+ }
+
+ // 妫�鏌ラ绾︽椂闂存槸鍚﹀ぇ浜�1970-01-01锛堟椂闂存埑0瀵瑰簲1970-01-01 00:00:00锛�
+ long timestamp1970 = 0L;
+ if (task.getPlannedStartTime().getTime() <= timestamp1970) {
+ log.warn("浠诲姟棰勭害鏃堕棿鏃犳晥锛堝皬浜庣瓑浜�1970骞达級锛岃烦杩囪皟搴﹀崟鍚屾锛屼换鍔D: {}, 棰勭害鏃堕棿: {}",
+ taskId, task.getPlannedStartTime());
+ return null;
+ }
+
+ // 4. 妫�鏌ヨ浆鍑哄尰闄俊鎭�
+ if (StringUtils.isEmpty(emergency.getHospitalOutName())) {
+ log.warn("浠诲姟鏈缃浆鍑哄尰闄紝璺宠繃璋冨害鍗曞悓姝ワ紝浠诲姟ID: {}", taskId);
+ return null;
+ }
+
+ if (StringUtils.isEmpty(emergency.getHospitalOutAddress())) {
+ log.warn("浠诲姟鏈缃浆鍑哄尰闄㈠湴鍧�锛岃烦杩囪皟搴﹀崟鍚屾锛屼换鍔D: {}", taskId);
+ return null;
+ }
+
+ // 5. 妫�鏌ヨ浆鍏ュ尰闄俊鎭�
+ if (StringUtils.isEmpty(emergency.getHospitalInName())) {
+ log.warn("浠诲姟鏈缃浆鍏ュ尰闄紝璺宠繃璋冨害鍗曞悓姝ワ紝浠诲姟ID: {}", taskId);
+ return null;
+ }
+
+ if (StringUtils.isEmpty(emergency.getHospitalInAddress())) {
+ log.warn("浠诲姟鏈缃浆鍏ュ尰闄㈠湴鍧�锛岃烦杩囪皟搴﹀崟鍚屾锛屼换鍔D: {}", taskId);
+ return null;
+ }
+
+ // 6. 妫�鏌ユ偅鑰呭熀鏈俊鎭�
+ if (StringUtils.isEmpty(emergency.getPatientName())) {
+ log.warn("浠诲姟鏈缃偅鑰呭鍚嶏紝璺宠繃璋冨害鍗曞悓姝ワ紝浠诲姟ID: {}", taskId);
+ return null;
+ }
+
+ if (StringUtils.isEmpty(emergency.getPatientPhone())) {
+ log.warn("浠诲姟鏈缃偅鑰呯數璇濓紝璺宠繃璋冨害鍗曞悓姝ワ紝浠诲姟ID: {}", taskId);
+ return null;
+ }
+
+ log.info("浠诲姟鏁版嵁鏍¢獙閫氳繃锛屽紑濮嬪悓姝ヨ皟搴﹀崟锛屼换鍔D: {}", taskId);
// 鏇存柊鍚屾鐘舵�佷负鍚屾涓�
emergency.setDispatchSyncStatus(1);
@@ -534,8 +598,20 @@
// 鎿嶄綔鍛戒护
params.put("DispatchOrd_Check", "0"); // 3=鐩存帴寮哄埗瀹屾垚
- // 缁╂晥鍜岃垂鐢�
- params.put("DispatchOrdPerfomance", emergency.getTransferPrice() != null ? emergency.getTransferPrice().toString() : "0");
+ // 缁╂晥鍜岃垂鐢細纭繚鏁板�煎瓧娈典笉涓簄ull
+ String transferPrice = "0";
+ if (emergency.getTransferPrice() != null) {
+ try {
+ transferPrice = emergency.getTransferPrice().toString();
+ if (transferPrice.contains(".")) {
+ transferPrice = new java.math.BigDecimal(transferPrice).stripTrailingZeros().toPlainString();
+ }
+ } catch (Exception e) {
+ log.warn("杞崲杞繍浠锋牸澶辫触锛屼换鍔D: {}, 浣跨敤榛樿鍊�0", task.getTaskId(), e);
+ transferPrice = "0";
+ }
+ }
+ params.put("DispatchOrdPerfomance", transferPrice);
params.put("StretcherMoney", "0"); // 鎶媴鏋惰垂
params.put("AddMoneyType", ""); // 闄勫姞椤圭洰
params.put("AddMoney", "0"); // 闄勫姞椤圭洰璐圭敤
@@ -568,7 +644,8 @@
params.put("ServiceOrdPtDoctorPhone", ""); // 鎮h�呭尰鐢熺數璇�
params.put("TransferModeID", ""); // 杞繍鏂瑰紡
params.put("ServiceOrdVIP", "0"); // VIP瀹㈡埛
- params.put("ServiceOrdTraTxnPrice", emergency.getTransferPrice() != null ? emergency.getTransferPrice().toString() : "0"); // 鎴愪氦浠�
+ // 浠锋牸瀛楁澶嶇敤锛岀‘淇濅竴鑷存��
+ params.put("ServiceOrdTraTxnPrice", transferPrice); // 鎴愪氦浠�
params.put("ServiceOrdTraPrePayment", "0"); // 闇�棰勪粯娆�
params.put("SettlementPrice", "0"); // 缁撶畻浠�
params.put("ServiceOrdTraPriceReason", ""); // 宸环鍘熷洜
@@ -585,7 +662,21 @@
params.put("ServiceOrdEstimatedOrderDate", ""); // 棰勮娲惧崟鏃堕棿
params.put("ServiceOrdEstimatedOrderDateOld", ""); // 鍘熼璁℃淳鍗曟椂闂�
params.put("ServiceOrdViaDistance", "0"); // 涓�旇窛绂�
- params.put("ServiceOrdTraDistance", emergency.getTransferDistance() != null ? emergency.getTransferDistance().toString() : "0"); // 璺濈
+ // 璺濈瀛楁锛氱‘淇濅笉涓虹┖锛岄伩鍏嶆棫绯荤粺鎺ュ彛鎶ラ敊
+ String transferDistance = "0";
+ if (emergency.getTransferDistance() != null) {
+ try {
+ transferDistance = emergency.getTransferDistance().toString();
+ // 鍘婚櫎鍙兘鐨勫皬鏁扮偣鍚庡浣欑殑0
+ if (transferDistance.contains(".")) {
+ transferDistance = new java.math.BigDecimal(transferDistance).stripTrailingZeros().toPlainString();
+ }
+ } catch (Exception e) {
+ log.warn("杞崲杞繍璺濈澶辫触锛屼换鍔D: {}, 浣跨敤榛樿鍊�0", task.getTaskId(), e);
+ transferDistance = "0";
+ }
+ }
+ params.put("ServiceOrdTraDistance", transferDistance);
params.put("OrderLevel", "0"); // 鏌ョ湅绛夌骇
params.put("ServiceOrdDepartureType", "1"); // 棰勭害绫诲瀷
params.put("ConditionLevel", "0"); // 鐥呴噸绾у埆
@@ -1181,7 +1272,47 @@
return false;
}
- log.info("寮�濮嬮噸鏂板悓姝ヨ皟搴﹀崟锛屼换鍔D: {}, DispatchOrdID: {}", taskId, emergency.getLegacyDispatchOrdId());
+ // ====== 鍓嶇疆鏍¢獙锛氱‘淇濅换鍔℃暟鎹畬鏁� ======
+
+ // 1. 妫�鏌ユ槸鍚﹀凡鍒嗛厤杞﹁締
+ List<SysTaskVehicle> taskVehicles = sysTaskVehicleMapper.selectSysTaskVehicleByTaskId(taskId);
+ if (taskVehicles == null || taskVehicles.isEmpty()) {
+ log.warn("浠诲姟鏈垎閰嶈溅杈嗭紝璺宠繃璋冨害鍗曢噸鏂板悓姝ワ紝浠诲姟ID: {}", taskId);
+ return false;
+ }
+
+ // 2. 妫�鏌ユ槸鍚﹀凡鍒嗛厤鎵ц浜哄憳
+ List<SysTaskAssignee> taskAssignees = sysTaskAssigneeMapper.selectSysTaskAssigneeByTaskId(taskId);
+ if (taskAssignees == null || taskAssignees.isEmpty()) {
+ log.warn("浠诲姟鏈垎閰嶆墽琛屼汉鍛橈紝璺宠繃璋冨害鍗曢噸鏂板悓姝ワ紝浠诲姟ID: {}", taskId);
+ return false;
+ }
+
+ // 3. 妫�鏌ラ绾︽椂闂存槸鍚︽湁鏁�
+ if (task.getPlannedStartTime() == null || task.getPlannedStartTime().getTime() <= 0L) {
+ log.warn("浠诲姟棰勭害鏃堕棿鏃犳晥锛岃烦杩囪皟搴﹀崟閲嶆柊鍚屾锛屼换鍔D: {}", taskId);
+ return false;
+ }
+
+ // 4. 妫�鏌ヨ浆鍑哄尰闄俊鎭�
+ if (StringUtils.isEmpty(emergency.getHospitalOutName()) || StringUtils.isEmpty(emergency.getHospitalOutAddress())) {
+ log.warn("浠诲姟杞嚭鍖婚櫌淇℃伅涓嶅畬鏁达紝璺宠繃璋冨害鍗曢噸鏂板悓姝ワ紝浠诲姟ID: {}", taskId);
+ return false;
+ }
+
+ // 5. 妫�鏌ヨ浆鍏ュ尰闄俊鎭�
+ if (StringUtils.isEmpty(emergency.getHospitalInName()) || StringUtils.isEmpty(emergency.getHospitalInAddress())) {
+ log.warn("浠诲姟杞叆鍖婚櫌淇℃伅涓嶅畬鏁达紝璺宠繃璋冨害鍗曢噸鏂板悓姝ワ紝浠诲姟ID: {}", taskId);
+ return false;
+ }
+
+ // 6. 妫�鏌ユ偅鑰呭熀鏈俊鎭�
+ if (StringUtils.isEmpty(emergency.getPatientName()) || StringUtils.isEmpty(emergency.getPatientPhone())) {
+ log.warn("浠诲姟鎮h�呬俊鎭笉瀹屾暣锛岃烦杩囪皟搴﹀崟閲嶆柊鍚屾锛屼换鍔D: {}", taskId);
+ return false;
+ }
+
+ log.info("浠诲姟鏁版嵁鏍¢獙閫氳繃锛屽紑濮嬮噸鏂板悓姝ヨ皟搴﹀崟锛屼换鍔D: {}, DispatchOrdID: {}", taskId, emergency.getLegacyDispatchOrdId());
// 鏋勫缓璇锋眰鍙傛暟锛堜娇鐢ㄧ浉鍚岀殑鍙傛暟鏋勫缓鏂规硶锛�
Map<String, String> params = buildDispatchOrderParams(task, emergency);
@@ -1193,16 +1324,16 @@
String response = sendHttpPost(legacyConfig.getDispatchUpdateUrl(), params);
log.info("閲嶆柊鍚屾璋冨害鍗曞埌鏃х郴缁熷搷搴�: ServiceOrdID:{},DispatchOrdId:{},Result: {}",emergency.getLegacyServiceOrdId(),emergency.getLegacyDispatchOrdId(), response);
// 瑙f瀽鍝嶅簲
- Long dispatchOrdId = parseResponse(response);
+// Long dispatchOrdId = parseResponse(response);
- if (dispatchOrdId != null && dispatchOrdId > 0) {
+ if (response != null && response.equals("OK")) {
// 閲嶆柊鍚屾鎴愬姛锛屾竻闄ら噸鏂板悓姝ユ爣璁�
emergency.setNeedResync(0);
emergency.setDispatchSyncTime(new Date());
emergency.setDispatchSyncErrorMsg(null);
sysTaskEmergencyService.updateSysTaskEmergency(emergency);
- log.info("璋冨害鍗曢噸鏂板悓姝ユ垚鍔燂紝浠诲姟ID: {}, DispatchOrdID: {}", taskId, dispatchOrdId);
+ log.info("璋冨害鍗曢噸鏂板悓姝ユ垚鍔燂紝浠诲姟ID: {}, DispatchOrdID: {}", taskId, emergency.getLegacyDispatchOrdId());
return true;
} else {
// 閲嶆柊鍚屾澶辫触
--
Gitblit v1.9.1