From 61c4c3f45e4257e2e7662f033e2719e62366c632 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期二, 31 三月 2026 23:02:22 +0800
Subject: [PATCH] feat: 优化申请发票,还可以修改发票信息
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskStatusSyncServiceImpl.java | 137 +++++++++++++++++++++------------------------
1 files changed, 65 insertions(+), 72 deletions(-)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskStatusSyncServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskStatusSyncServiceImpl.java
index c04dbc0..9c9809f 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskStatusSyncServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TaskStatusSyncServiceImpl.java
@@ -1,14 +1,14 @@
package com.ruoyi.system.service.impl;
import com.ruoyi.common.config.LegacySystemConfig;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.LongUtil;
import com.ruoyi.system.domain.DispatchOrd;
import com.ruoyi.system.domain.SysTask;
import com.ruoyi.system.domain.SysTaskEmergency;
import com.ruoyi.system.domain.enums.TaskStatus;
import com.ruoyi.system.mapper.SysTaskMapper;
-import com.ruoyi.system.service.IDispatchOrdService;
-import com.ruoyi.system.service.ISysTaskEmergencyService;
-import com.ruoyi.system.service.ITaskStatusSyncService;
+import com.ruoyi.system.service.*;
import com.ruoyi.system.utils.TaskStatusConverter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -35,6 +35,9 @@
@Autowired
private SysTaskMapper sysTaskMapper;
+
+ @Autowired
+ private ISysTaskService taskService;
@Autowired
private ISysTaskEmergencyService sysTaskEmergencyService;
@@ -49,7 +52,6 @@
* @return 鏄惁鍚屾鎴愬姛
*/
@Override
- @Transactional
public boolean syncTaskStatusFromLegacy(Long taskId) {
if (!legacyConfig.isEnabled()) {
log.info("鏃х郴缁熷悓姝ュ凡绂佺敤锛岃烦杩囩姸鎬佸悓姝ワ紝浠诲姟ID: {}", taskId);
@@ -98,7 +100,9 @@
return false;
}
}
-
+
+ @Autowired
+ private IServiceOrderService serviceOrderService;
/**
* 鎵归噺鍚屾宸插悓姝ヨ皟搴﹀崟鐨勪换鍔$姸鎬侊紙浠庢棫绯荤粺鍒版柊绯荤粺锛�
* 浣跨敤鍒嗛〉鏌ヨ锛屾壒閲忔煡璇QL Server鏁版嵁搴擄紝鍑忓皯缃戠粶璇锋眰娆℃暟
@@ -108,13 +112,13 @@
@Override
public int batchSyncTaskStatusFromLegacy() {
if (!legacyConfig.isEnabled()) {
- log.info("鏃х郴缁熷悓姝ュ凡绂佺敤");
+// log.info("鏃х郴缁熷悓姝ュ凡绂佺敤");
return 0;
}
try {
int totalSuccessCount = 0;
- int pageSize = 10; // 姣忛〉200鏉�
+ int pageSize = 10; // 姣忛〉10鏉�
int offset = 0;
while (true) {
@@ -122,87 +126,76 @@
List<SysTaskEmergency> syncedTasks = sysTaskEmergencyService.selectSyncedTasksForStatusUpdate(offset, pageSize);
if (syncedTasks == null || syncedTasks.isEmpty()) {
- log.info("娌℃湁鏇村闇�瑕佸悓姝ョ姸鎬佺殑浠诲姟锛宱ffset: {}", offset);
+// log.info("娌℃湁鏇村闇�瑕佸悓姝ョ姸鎬佺殑浠诲姟锛宱ffset: {}", offset);
break; // 娌℃湁鏇村鏁版嵁锛岄��鍑哄惊鐜�
}
- log.info("寮�濮嬪悓姝ョ姸鎬佺 {} 椤碉紝浠诲姟鏁伴噺: {}", (offset / pageSize) + 1, syncedTasks.size());
+// log.info("寮�濮嬪悓姝ョ姸鎬佺 {} 椤碉紝浠诲姟鏁伴噺: {}", (offset / pageSize) + 1, syncedTasks.size());
// 2. 鎻愬彇璋冨害鍗旾D鍒楄〃
- List<Long> dispatchOrdIDs = new ArrayList<>();
+
Map<Long, SysTaskEmergency> dispatchIdToTaskMap = new HashMap<>();
-
+
+
for (SysTaskEmergency emergency : syncedTasks) {
Long dispatchOrdId = emergency.getLegacyDispatchOrdId();
- if (dispatchOrdId != null && dispatchOrdId > 0) {
- dispatchOrdIDs.add(dispatchOrdId);
- dispatchIdToTaskMap.put(dispatchOrdId, emergency);
+ if (LongUtil.isNotEmpty(emergency.getTaskId())) {
+
+ if(!dispatchIdToTaskMap.containsKey(dispatchOrdId)) {
+ dispatchIdToTaskMap.put(emergency.getTaskId(), emergency);
+ }
+ }
+ Long serviceOrdId = emergency.getLegacyServiceOrdId();
+ if(LongUtil.isNotEmpty(serviceOrdId)){
+ if(!dispatchIdToTaskMap.containsKey(emergency.getTaskId())) {
+ dispatchIdToTaskMap.put(emergency.getTaskId(), emergency);
+ }
}
}
- if (dispatchOrdIDs.isEmpty()) {
- log.warn("鏈〉娌℃湁鏈夋晥鐨勮皟搴﹀崟ID");
+ if (dispatchIdToTaskMap.size()<=0) {
+// log.warn("鏈〉娌℃湁鏈夋晥鐨勮皟搴﹀崟ID");
offset += pageSize;
continue;
}
// 3. 鎵归噺鏌ヨ鏃х郴缁熻皟搴﹀崟鐘舵�侊紙鐩存帴鏌ヨSQL Server鏁版嵁搴擄級
- List<DispatchOrd> dispatchOrds = dispatchOrdService.selectDispatchOrdStatesByIDs(dispatchOrdIDs);
-
- if (dispatchOrds == null || dispatchOrds.isEmpty()) {
- log.warn("鏈煡璇㈠埌鏃х郴缁熻皟搴﹀崟鐘舵��");
- offset += pageSize;
- continue;
- }
-
- // 4. 鏋勫缓璋冨害鍗旾D鍒扮姸鎬佺殑鏄犲皠
- Map<Long, Integer> dispatchIdToStateMap = new HashMap<>();
- for (DispatchOrd dispatchOrd : dispatchOrds) {
- try {
- Long dispatchOrdId = Long.parseLong(dispatchOrd.getDispatchOrdID());
- Integer dispatchOrdState = Integer.parseInt(dispatchOrd.getDispatchOrdState());
- if (dispatchOrdState != null) {
- dispatchIdToStateMap.put(dispatchOrdId, dispatchOrdState);
+ dispatchIdToTaskMap.forEach((taskId, emergency) -> {
+ Long dispatchOrdId = emergency.getLegacyDispatchOrdId();
+ Long serviceOrdId = emergency.getLegacyServiceOrdId();
+ if(LongUtil.isNotEmpty(dispatchOrdId)){
+ Integer state =dispatchOrdService.selectDispatchOrdStateByID(dispatchOrdId);
+ syncTaskStatusWithLegacyState(taskId, state);
+ }
+ else if(LongUtil.isNotEmpty(serviceOrdId)){
+ try {
+ Integer serviceOrdState = serviceOrderService.selectServiceOrderStateById(serviceOrdId);
+ if (serviceOrdState == 4) {
+ //鍙栨秷
+ Map<String, Object> cancelInfo = serviceOrderService.selectCancelInfoById(serviceOrdId);
+ String cancelReasonText = (String) cancelInfo.get("ServiceOrdCancelReasonTXT");
+ String cancelReason = (String) cancelInfo.get("ServiceOrdCancelReason");
+ taskService.saveCancel(taskId, cancelReason, cancelReasonText, DateUtils.getNowDate());
+ }
+ }catch (Exception ex){
+ log.error("鏌ヨ鏃х郴缁熺姸鎬佸け璐ワ紝浠诲姟ID: {}, ServiceOrdID: {}", taskId, serviceOrdId);
}
- } catch (NumberFormatException e) {
- log.error("瑙f瀽璋冨害鍗旾D澶辫触: {}", dispatchOrd.getDispatchOrdID(), e);
+
+// syncTaskStatusWithLegacyState(taskId, state);
}
- }
-
- // 5. 閬嶅巻浠诲姟锛屽悓姝ョ姸鎬�
- int pageSuccessCount = 0;
- for (Map.Entry<Long, SysTaskEmergency> entry : dispatchIdToTaskMap.entrySet()) {
- Long dispatchOrdId = entry.getKey();
- SysTaskEmergency emergency = entry.getValue();
-
- // 鑾峰彇鏃х郴缁熺姸鎬�
- Integer legacyStatus = dispatchIdToStateMap.get(dispatchOrdId);
- if (legacyStatus == null) {
- log.warn("鏈壘鍒拌皟搴﹀崟鐘舵�侊紝DispatchOrdID: {}", dispatchOrdId);
- continue;
- }
-
- // 鍚屾鍗曚釜浠诲姟鐘舵��
- boolean result = syncTaskStatusWithLegacyState(emergency.getTaskId(), legacyStatus);
- if (result) {
- pageSuccessCount++;
- }
- }
-
- totalSuccessCount += pageSuccessCount;
- log.info("鐘舵�佺 {} 椤靛悓姝ュ畬鎴愶紝鎬绘暟: {}, 鎴愬姛: {}",
- (offset / pageSize) + 1, syncedTasks.size(), pageSuccessCount);
-
+ });
+
+//
// 濡傛灉鏈〉鏁版嵁灏戜簬姣忛〉澶у皬锛岃鏄庡凡缁忔槸鏈�鍚庝竴椤�
if (syncedTasks.size() < pageSize) {
- log.info("宸插埌杈炬渶鍚庝竴椤碉紝鐘舵�佸悓姝ョ粨鏉�");
+// log.info("宸插埌杈炬渶鍚庝竴椤碉紝鐘舵�佸悓姝ョ粨鏉�");
break;
}
offset += pageSize; // 涓嬩竴椤�
}
- log.info("鎵归噺鍚屾浠诲姟鐘舵�佸畬鎴愶紝鎬绘垚鍔熸暟: {}", totalSuccessCount);
+// log.info("鎵归噺鍚屾浠诲姟鐘舵�佸畬鎴愶紝鎬绘垚鍔熸暟: {}", totalSuccessCount);
return totalSuccessCount;
} catch (Exception e) {
@@ -219,7 +212,6 @@
* @param legacyStatus 鏃х郴缁熺姸鎬佺爜
* @return 鏄惁鎴愬姛
*/
- @Transactional
private boolean syncTaskStatusWithLegacyState(Long taskId, Integer legacyStatus) {
try {
// 鏌ヨ浠诲姟淇℃伅
@@ -232,23 +224,23 @@
// 杞崲涓烘柊绯荤粺鐘舵��
TaskStatus newStatus = TaskStatusConverter.convertFromLegacyStatus(legacyStatus);
if (newStatus == null) {
- log.debug("鏃х郴缁熺姸鎬佺爜 > 10 鎴栨棤娉曡浆鎹紝璺宠繃鍚屾锛屼换鍔D: {}, 鐘舵�佺爜: {} ({})",
- taskId, legacyStatus, TaskStatusConverter.getLegacyStatusDescription(legacyStatus));
+// log.debug("鏃х郴缁熺姸鎬佺爜 > 10 鎴栨棤娉曡浆鎹紝璺宠繃鍚屾锛屼换鍔D: {}, 鐘舵�佺爜: {} ({})",
+// taskId, legacyStatus, TaskStatusConverter.getLegacyStatusDescription(legacyStatus));
return false;
}
// 妫�鏌ョ姸鎬佹槸鍚﹀彉鍖�
if (newStatus.getCode().equals(task.getTaskStatus())) {
- log.debug("浠诲姟鐘舵�佹湭鍙樺寲锛屼换鍔D: {}, 褰撳墠鐘舵��: {}", taskId, newStatus.getInfo());
+ // log.debug("鍙樺寲锛屼换鍔D: {}, 褰撳墠鐘舵��: {}", taskId, newStatus.getInfo());
return true;
}
// 姣旇緝鏂版棫绯荤粺鐘舵�佺殑浼樺厛绾э紝闃叉鐘舵�佸�掗��
TaskStatus currentStatus = TaskStatus.getByCode(task.getTaskStatus());
if (currentStatus != null && !shouldSyncStatus(currentStatus, newStatus, legacyStatus)) {
- log.info("銆愭棫绯荤粺鏇存柊鍒版柊绯荤粺銆� 鏃х郴缁熺姸鎬佽惤鍚庝簬鏂扮郴缁熺姸鎬侊紝璺宠繃鍚屾锛屼换鍔D: {}, 鏂扮郴缁熺姸鎬�: {} ({}), 鏃х郴缁熺姸鎬�: {} ({})",
- taskId, task.getTaskStatus(), currentStatus.getInfo(),
- newStatus.getCode(), TaskStatusConverter.getLegacyStatusDescription(legacyStatus));
+ // log.info("銆愭棫绯荤粺鏇存柊鍒版柊绯荤粺銆� 鏃х郴缁熺姸鎬佽惤鍚庝簬鏂扮郴缁熺姸鎬侊紝璺宠繃鍚屾锛屼换鍔D: {}, 鏂扮郴缁熺姸鎬�: {} ({}), 鏃х郴缁熺姸鎬�: {} ({})",
+ // taskId, task.getTaskStatus(), currentStatus.getInfo(),
+ // newStatus.getCode(), TaskStatusConverter.getLegacyStatusDescription(legacyStatus));
return false;
}
@@ -281,12 +273,13 @@
default:
break;
}
+
sysTaskMapper.updateSysTask(task);
- log.info("浠诲姟鐘舵�佸悓姝ユ垚鍔燂紝浠诲姟ID: {}, 鏃х姸鎬�: {}, 鏂扮姸鎬�: {}, 鏃х郴缁熺姸鎬佺爜: {} ({})",
- taskId, oldStatus, newStatus.getCode(), legacyStatus,
- TaskStatusConverter.getLegacyStatusDescription(legacyStatus));
+// log.info("浠诲姟鐘舵�佸悓姝ユ垚鍔燂紝浠诲姟ID: {}, 鏃х姸鎬�: {}, 鏂扮姸鎬�: {}, 鏃х郴缁熺姸鎬佺爜: {} ({})",
+// taskId, oldStatus, newStatus.getCode(), legacyStatus,
+// TaskStatusConverter.getLegacyStatusDescription(legacyStatus));
return true;
--
Gitblit v1.9.1