From cdcc529ce5fb9aa0dd1dea5bb2a620fc09b7d25c Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期六, 08 十一月 2025 20:03:56 +0800
Subject: [PATCH] feat: 上传附件
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/LegacySystemSyncServiceImpl.java | 217 +++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 158 insertions(+), 59 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 8e181d8..db1fa94 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
@@ -12,6 +12,9 @@
import java.util.List;
import java.util.Map;
+import com.ruoyi.system.domain.*;
+import com.ruoyi.system.service.*;
+import com.ruoyi.system.task.ITaskAttachmentService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -22,11 +25,6 @@
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.entity.SysDept;
-import com.ruoyi.system.domain.SysTask;
-import com.ruoyi.system.domain.SysTaskEmergency;
-import com.ruoyi.system.domain.SysTaskVehicle;
-import com.ruoyi.system.domain.SysTaskAssignee;
-import com.ruoyi.system.domain.VehicleInfo;
import com.ruoyi.system.domain.vo.TaskCreateVO;
import com.ruoyi.system.mapper.SysTaskMapper;
import com.ruoyi.system.mapper.SysTaskEmergencyMapper;
@@ -35,7 +33,7 @@
import com.ruoyi.system.mapper.VehicleInfoMapper;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.mapper.SysDeptMapper;
-import com.ruoyi.system.service.ILegacySystemSyncService;
+import com.ruoyi.system.utils.TaskStatusConverter;
/**
* 鏃х郴缁熷悓姝ervice涓氬姟灞傚鐞�
@@ -55,9 +53,6 @@
private SysTaskMapper sysTaskMapper;
@Autowired
- private SysTaskEmergencyMapper sysTaskEmergencyMapper;
-
- @Autowired
private SysUserMapper sysUserMapper;
@Autowired
@@ -71,6 +66,21 @@
@Autowired
private VehicleInfoMapper vehicleInfoMapper;
+
+ @Autowired
+ private IDispatchOrdService dispatchOrdService;
+
+ @Autowired
+ private ISysTaskEmergencyService sysTaskEmergencyService;
+
+ @Autowired
+ private ITaskAttachmentSyncService taskAttachmentSyncService;
+
+ @Autowired
+ private ISysTaskService sysTaskService;
+
+ @Autowired
+ private ITaskAttachmentService taskAttachmentService;
/**
* 鍚屾鎬ユ晳杞繍浠诲姟鍒版棫绯荤粺
@@ -98,7 +108,7 @@
}
// 鏌ヨ鎬ユ晳杞繍鎵╁睍淇℃伅
- SysTaskEmergency emergency = sysTaskEmergencyMapper.selectSysTaskEmergencyByTaskId(taskId);
+ SysTaskEmergency emergency = sysTaskEmergencyService.selectSysTaskEmergencyByTaskId(taskId);
if (emergency == null) {
log.error("鎬ユ晳杞繍鎵╁睍淇℃伅涓嶅瓨鍦紝浠诲姟ID: {}", taskId);
return null;
@@ -112,7 +122,7 @@
// 鏇存柊鍚屾鐘舵�佷负鍚屾涓�
emergency.setSyncStatus(1);
- sysTaskEmergencyMapper.updateSysTaskEmergency(emergency);
+ sysTaskEmergencyService.updateSysTaskEmergency(emergency);
// 鏋勫缓璇锋眰鍙傛暟
Map<String, String> params = buildSyncParams(task, emergency);
@@ -129,7 +139,7 @@
emergency.setSyncStatus(2); // 鍚屾鎴愬姛
emergency.setSyncTime(new Date());
emergency.setSyncErrorMsg(null);
- sysTaskEmergencyMapper.updateSysTaskEmergency(emergency);
+ sysTaskEmergencyService.updateSysTaskEmergency(emergency);
// 鏇存柊浠诲姟涓昏〃鍚屾鏍囪
task.setLegacySynced(1);
@@ -142,7 +152,7 @@
emergency.setSyncStatus(3); // 鍚屾澶辫触
emergency.setSyncTime(new Date());
emergency.setSyncErrorMsg("鏃х郴缁熻繑鍥炴棤鏁堢殑ServiceOrdID: " + response);
- sysTaskEmergencyMapper.updateSysTaskEmergency(emergency);
+ sysTaskEmergencyService.updateSysTaskEmergency(emergency);
log.error("浠诲姟鍚屾澶辫触锛屼换鍔D: {}, 鍝嶅簲: {}", taskId, response);
return null;
@@ -153,12 +163,12 @@
// 鏇存柊鍚屾鐘舵�佷负澶辫触
try {
- SysTaskEmergency emergency = sysTaskEmergencyMapper.selectSysTaskEmergencyByTaskId(taskId);
+ SysTaskEmergency emergency = sysTaskEmergencyService.selectSysTaskEmergencyByTaskId(taskId);
if (emergency != null) {
emergency.setSyncStatus(3); // 鍚屾澶辫触
emergency.setSyncTime(new Date());
emergency.setSyncErrorMsg("鍚屾寮傚父: " + e.getMessage());
- sysTaskEmergencyMapper.updateSysTaskEmergency(emergency);
+ sysTaskEmergencyService.updateSysTaskEmergency(emergency);
}
} catch (Exception ex) {
log.error("鏇存柊鍚屾鐘舵�佸け璐�", ex);
@@ -170,6 +180,7 @@
/**
* 鎵归噺鍚屾鏈悓姝ョ殑鎬ユ晳杞繍浠诲姟
+ * 浣跨敤鍒嗛〉鏌ヨ锛岀‘淇濇墍鏈夌鍚堟潯浠剁殑浠诲姟閮借兘琚悓姝�
*/
@Override
public int batchSyncPendingTasks() {
@@ -179,27 +190,53 @@
}
try {
- // 鏌ヨ鏈悓姝ョ殑鎬ユ晳杞繍浠诲姟锛堝悓姝ョ姸鎬佷负0鎴�3鐨勪换鍔★級
- List<SysTaskEmergency> pendingTasks = sysTaskEmergencyMapper.selectPendingSyncTasks();
+ int totalSuccessCount = 0;
+ int pageSize = 100; // 姣忛〉100鏉�
+ int offset = 0;
- int successCount = 0;
- for (SysTaskEmergency emergency : pendingTasks) {
- Long serviceOrdId = syncEmergencyTaskToLegacy(emergency.getTaskId());
- if (serviceOrdId != null && serviceOrdId > 0) {
- successCount++;
+ while (true) {
+ // 鍒嗛〉鏌ヨ鏈悓姝ョ殑鎬ユ晳杞繍浠诲姟锛堝悓姝ョ姸鎬佷负0鎴�3鐨勪换鍔★級
+ List<SysTaskEmergency> pendingTasks = sysTaskEmergencyService.selectPendingSyncTasks(offset, pageSize);
+
+ if (pendingTasks == null || pendingTasks.isEmpty()) {
+ log.info("娌℃湁鏇村闇�瑕佸悓姝ョ殑浠诲姟锛宱ffset: {}", offset);
+ break; // 娌℃湁鏇村鏁版嵁锛岄��鍑哄惊鐜�
}
- // 閬垮厤杩囦簬棰戠箒鐨勮姹�
- try {
- Thread.sleep(1000); // 姣忎釜璇锋眰闂撮殧1绉�
- } catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ log.info("寮�濮嬪悓姝ョ {} 椤碉紝浠诲姟鏁伴噺: {}", (offset / pageSize) + 1, pendingTasks.size());
+
+ int pageSuccessCount = 0;
+ for (SysTaskEmergency emergency : pendingTasks) {
+ Long serviceOrdId = syncEmergencyTaskToLegacy(emergency.getTaskId());
+ if (serviceOrdId != null && serviceOrdId > 0) {
+ pageSuccessCount++;
+ }
+
+ // 閬垮厤杩囦簬棰戠箒鐨勮姹�
+ try {
+ Thread.sleep(1000); // 姣忎釜璇锋眰闂撮殧1绉�
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ log.warn("鍚屾琚腑鏂�");
+ return totalSuccessCount + pageSuccessCount;
+ }
+ }
+
+ totalSuccessCount += pageSuccessCount;
+ log.info("绗� {} 椤靛悓姝ュ畬鎴愶紝鎬绘暟: {}, 鎴愬姛: {}",
+ (offset / pageSize) + 1, pendingTasks.size(), pageSuccessCount);
+
+ // 濡傛灉鏈〉鏁版嵁灏戜簬姣忛〉澶у皬锛岃鏄庡凡缁忔槸鏈�鍚庝竴椤�
+ if (pendingTasks.size() < pageSize) {
+ log.info("宸插埌杈炬渶鍚庝竴椤碉紝鍚屾缁撴潫");
break;
}
+
+ offset += pageSize; // 涓嬩竴椤�
}
- log.info("鎵归噺鍚屾瀹屾垚锛屾�绘暟: {}, 鎴愬姛: {}", pendingTasks.size(), successCount);
- return successCount;
+ log.info("鎵归噺鍚屾瀹屾垚锛屾�绘垚鍔熸暟: {}", totalSuccessCount);
+ return totalSuccessCount;
} catch (Exception e) {
log.error("鎵归噺鍚屾浠诲姟寮傚父", e);
@@ -215,12 +252,12 @@
public boolean retrySyncTask(Long taskId) {
try {
// 閲嶇疆鍚屾鐘舵��
- SysTaskEmergency emergency = sysTaskEmergencyMapper.selectSysTaskEmergencyByTaskId(taskId);
+ SysTaskEmergency emergency = sysTaskEmergencyService.selectSysTaskEmergencyByTaskId(taskId);
if (emergency != null) {
emergency.setSyncStatus(0); // 閲嶇疆涓烘湭鍚屾
emergency.setLegacyServiceOrdId(null);
emergency.setSyncErrorMsg(null);
- sysTaskEmergencyMapper.updateSysTaskEmergency(emergency);
+ sysTaskEmergencyService.updateSysTaskEmergency(emergency);
}
// 閲嶆柊鍚屾
@@ -232,7 +269,27 @@
return false;
}
}
-
+
+
+ /**
+ * 鍚屾浠诲姟闄勪欢鍒版棫绯荤粺
+ * @param taskAttachments
+ * @param serviceOrdId
+ * @param dispatchOrdId
+ * @param oaUserID
+ */
+ public void syncAttachmentToLegacy(List<SysTaskAttachment> taskAttachments, Long serviceOrdId,Long dispatchOrdId,Integer oaUserID) {
+ taskAttachments.forEach((taskAttachment)->{
+ Long imageDataId= taskAttachmentSyncService.syncAttachmentToImageData(taskAttachment,serviceOrdId,dispatchOrdId,oaUserID);
+ if (imageDataId != null && imageDataId > 0) {
+
+ taskAttachment.setSyncedToImageData(1);
+ taskAttachment.setSyncTime(new Date());
+ taskAttachment.setImageDataId(imageDataId);
+ taskAttachmentService.updateAttachment(taskAttachment);
+ }
+ });
+ }
/**
* 鍚屾璋冨害鍗曞埌鏃х郴缁燂紙admin_save_24.asp锛�
*/
@@ -259,7 +316,7 @@
}
// 鏌ヨ鎬ユ晳杞繍鎵╁睍淇℃伅
- SysTaskEmergency emergency = sysTaskEmergencyMapper.selectSysTaskEmergencyByTaskId(taskId);
+ SysTaskEmergency emergency = sysTaskEmergencyService.selectSysTaskEmergencyByTaskId(taskId);
if (emergency == null) {
log.error("鎬ユ晳杞繍鎵╁睍淇℃伅涓嶅瓨鍦紝浠诲姟ID: {}", taskId);
return null;
@@ -270,16 +327,23 @@
log.info("璋冨害鍗曞凡鍚屾杩囷紝浠诲姟ID: {}, DispatchOrdID: {}", taskId, emergency.getLegacyDispatchOrdId());
return emergency.getLegacyDispatchOrdId();
}
-
+
+ Long serviceOrdId=emergency.getLegacyServiceOrdId();
// 蹇呴』鍏堝悓姝ユ湇鍔″崟
- if (emergency.getLegacyServiceOrdId() == null || emergency.getLegacyServiceOrdId() <= 0) {
+ if (serviceOrdId == null || serviceOrdId <= 0) {
log.warn("鏈嶅姟鍗曟湭鍚屾锛屾棤娉曞悓姝ヨ皟搴﹀崟锛屼换鍔D: {}", taskId);
return null;
}
-
+
+
+
+
// 鏇存柊鍚屾鐘舵�佷负鍚屾涓�
emergency.setDispatchSyncStatus(1);
- sysTaskEmergencyMapper.updateSysTaskEmergency(emergency);
+ sysTaskEmergencyService.updateSysTaskEmergency(emergency);
+
+ SysUser u=sysUserMapper.selectUserById(task.getCreatorId());
+ Integer oaUserID= u.getOaUserId();
// 鏋勫缓璇锋眰鍙傛暟
Map<String, String> params = buildDispatchOrderParams(task, emergency);
@@ -296,8 +360,14 @@
emergency.setDispatchSyncStatus(2); // 鍚屾鎴愬姛
emergency.setDispatchSyncTime(new Date());
emergency.setDispatchSyncErrorMsg(null);
- sysTaskEmergencyMapper.updateSysTaskEmergency(emergency);
-
+ sysTaskEmergencyService.updateSysTaskEmergency(emergency);
+
+ List<SysTaskAttachment> taskAttachments= sysTaskService.getAttachmentsByTaskId(taskId);
+ if (taskAttachments != null && !taskAttachments.isEmpty()) {
+ //鍚屾闄勪欢
+ this.syncAttachmentToLegacy(taskAttachments,serviceOrdId,dispatchOrdId,oaUserID);
+ }
+
log.info("璋冨害鍗曞悓姝ユ垚鍔燂紝浠诲姟ID: {}, DispatchOrdID: {}", taskId, dispatchOrdId);
return dispatchOrdId;
} else {
@@ -305,7 +375,7 @@
emergency.setDispatchSyncStatus(3); // 鍚屾澶辫触
emergency.setDispatchSyncTime(new Date());
emergency.setDispatchSyncErrorMsg("鏃х郴缁熻繑鍥炴棤鏁堢殑DispatchOrdID: " + response);
- sysTaskEmergencyMapper.updateSysTaskEmergency(emergency);
+ sysTaskEmergencyService.updateSysTaskEmergency(emergency);
log.error("璋冨害鍗曞悓姝ュけ璐ワ紝浠诲姟ID: {}, 鍝嶅簲: {}", taskId, response);
return null;
@@ -316,12 +386,12 @@
// 鏇存柊鍚屾鐘舵�佷负澶辫触
try {
- SysTaskEmergency emergency = sysTaskEmergencyMapper.selectSysTaskEmergencyByTaskId(taskId);
+ SysTaskEmergency emergency = sysTaskEmergencyService.selectSysTaskEmergencyByTaskId(taskId);
if (emergency != null) {
emergency.setDispatchSyncStatus(3); // 鍚屾澶辫触
emergency.setDispatchSyncTime(new Date());
emergency.setDispatchSyncErrorMsg("鍚屾寮傚父: " + e.getMessage());
- sysTaskEmergencyMapper.updateSysTaskEmergency(emergency);
+ sysTaskEmergencyService.updateSysTaskEmergency(emergency);
}
} catch (Exception ex) {
log.error("鏇存柊璋冨害鍗曞悓姝ョ姸鎬佸け璐�", ex);
@@ -333,6 +403,7 @@
/**
* 鎵归噺鍚屾鏈悓姝ョ殑璋冨害鍗�
+ * 浣跨敤鍒嗛〉鏌ヨ锛岀‘淇濇墍鏈夌鍚堟潯浠剁殑浠诲姟閮借兘琚悓姝�
*/
@Override
public int batchSyncPendingDispatchOrders() {
@@ -342,27 +413,55 @@
}
try {
- // 鏌ヨ宸插悓姝ユ湇鍔″崟浣嗘湭鍚屾璋冨害鍗曠殑浠诲姟
- List<SysTaskEmergency> pendingTasks = sysTaskEmergencyMapper.selectPendingDispatchSyncTasks();
+ int totalSuccessCount = 0;
+ int pageSize = 100; // 姣忛〉100鏉�
+ int offset = 0;
- int successCount = 0;
- for (SysTaskEmergency emergency : pendingTasks) {
- Long dispatchOrdId = syncDispatchOrderToLegacy(emergency.getTaskId());
- if (dispatchOrdId != null && dispatchOrdId > 0) {
- successCount++;
+ while (true) {
+ // 鍒嗛〉鏌ヨ宸插悓姝ユ湇鍔″崟浣嗘湭鍚屾璋冨害鍗曠殑浠诲姟
+ List<SysTaskEmergency> pendingTasks = sysTaskEmergencyService.selectPendingDispatchSyncTasks(offset, pageSize);
+ log.info("鏌ヨ鍒版湭鍚屾璋冨害鍗曠殑浠诲姟鏁伴噺: {}", pendingTasks.size());
+ if (pendingTasks == null || pendingTasks.isEmpty()) {
+ log.info("娌℃湁鏇村闇�瑕佸悓姝ヨ皟搴﹀崟鐨勪换鍔★紝offset: {}", offset);
+ break; // 娌℃湁鏇村鏁版嵁锛岄��鍑哄惊鐜�
}
- // 閬垮厤杩囦簬棰戠箒鐨勮姹�
- try {
- Thread.sleep(1000); // 姣忎釜璇锋眰闂撮殧1绉�
- } catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ log.info("寮�濮嬪悓姝ヨ皟搴﹀崟绗� {} 椤碉紝浠诲姟鏁伴噺: {}", (offset / pageSize) + 1, pendingTasks.size());
+
+ int pageSuccessCount = 0;
+ for (SysTaskEmergency emergency : pendingTasks) {
+ log.info("寮�濮嬪悓姝ヨ皟搴﹀崟锛屼换鍔D: {}", emergency.getTaskId());
+ Long dispatchOrdId = syncDispatchOrderToLegacy(emergency.getTaskId());
+
+ if (dispatchOrdId != null && dispatchOrdId > 0) {
+ pageSuccessCount++;
+ }
+
+ // 閬垮厤杩囦簬棰戠箒鐨勮姹�
+ try {
+ Thread.sleep(1000); // 姣忎釜璇锋眰闂撮殧1绉�
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ log.warn("鍚屾璋冨害鍗曡涓柇");
+ return totalSuccessCount + pageSuccessCount;
+ }
+ }
+
+ totalSuccessCount += pageSuccessCount;
+ log.info("璋冨害鍗曠 {} 椤靛悓姝ュ畬鎴愶紝鎬绘暟: {}, 鎴愬姛: {}",
+ (offset / pageSize) + 1, pendingTasks.size(), pageSuccessCount);
+
+ // 濡傛灉鏈〉鏁版嵁灏戜簬姣忛〉澶у皬锛岃鏄庡凡缁忔槸鏈�鍚庝竴椤�
+ if (pendingTasks.size() < pageSize) {
+ log.info("宸插埌杈炬渶鍚庝竴椤碉紝璋冨害鍗曞悓姝ョ粨鏉�");
break;
}
+
+ offset += pageSize; // 涓嬩竴椤�
}
- log.info("鎵归噺鍚屾璋冨害鍗曞畬鎴愶紝鎬绘暟: {}, 鎴愬姛: {}", pendingTasks.size(), successCount);
- return successCount;
+ log.info("鎵归噺鍚屾璋冨害鍗曞畬鎴愶紝鎬绘垚鍔熸暟: {}", totalSuccessCount);
+ return totalSuccessCount;
} catch (Exception e) {
log.error("鎵归噺鍚屾璋冨害鍗曞紓甯�", e);
@@ -398,7 +497,7 @@
// 鍩烘湰淇℃伅
params.put("DispatchOrdClass", dispatchOrdClass);
params.put("ServiceOrdID", emergency.getLegacyServiceOrdId().toString());
- params.put("DispatchOrdState", "8"); // 璋冨害鍗曠姸鎬�
+ params.put("DispatchOrdState", "1"); // 璋冨害鍗曠姸鎬�
// 鏃堕棿淇℃伅
if (task.getPlannedStartTime() != null) {
@@ -478,7 +577,7 @@
params.put("ServiceOrdEstimatedOrderDateOld", ""); // 鍘熼璁℃淳鍗曟椂闂�
params.put("ServiceOrdViaDistance", "0"); // 涓�旇窛绂�
params.put("ServiceOrdTraDistance", emergency.getTransferDistance() != null ? emergency.getTransferDistance().toString() : "0"); // 璺濈
- params.put("OrderLevel", "2"); // 鏌ョ湅绛夌骇
+ params.put("OrderLevel", "0"); // 鏌ョ湅绛夌骇
params.put("ServiceOrdDepartureType", "1"); // 棰勭害绫诲瀷
params.put("ConditionLevel", "0"); // 鐥呴噸绾у埆
params.put("DirectionType", "0"); // 杞繍鍘诲悜
@@ -866,7 +965,7 @@
params.put("ServiceOrdOperationRemarks", "鏂扮郴缁熷悓姝ュ垱寤�"); // 鎿嶄綔澶囨敞
params.put("ServiceOrdEstimatedOrderDate", ""); // 棰勮娲惧崟鏃堕棿
params.put("ServiceOrdSource", "10"); // 璁㈠崟鏉ユ簮锛�10=鏂扮郴缁燂級
- params.put("OrderLevel", "2"); // 鏌ョ湅绛夌骇
+ params.put("OrderLevel", "0"); // 鏌ョ湅绛夌骇
params.put("ServiceOrdDepartureType", "1"); // 棰勭害绫诲瀷
params.put("ConditionLevel", "0"); // 鐥呴噸绾у埆
params.put("DirectionType", "0"); // 杞繍鍘诲悜
--
Gitblit v1.9.1