From d4fe921568bc29d72644a55fd194adf7f9277cb5 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期六, 22 十一月 2025 15:28:35 +0800
Subject: [PATCH] feat: 将旧系统数据同步到新系统
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java | 283 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 269 insertions(+), 14 deletions(-)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java
index 508eb71..7e28b71 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java
@@ -142,6 +142,7 @@
@Override
@Transactional
public int insertSysTask(TaskCreateVO createVO) {
+ String username = SecurityUtils.getUsername();
SysTask task = new SysTask();
task.setTaskCode(generateTaskCode());
task.setTaskType(createVO.getTaskType());
@@ -153,9 +154,9 @@
task.setCreatorId(SecurityUtils.getUserId());
// 浼樺厛浣跨敤鍓嶇浼犲叆鐨勯儴闂↖D锛屽鏋滄病鏈夊垯浣跨敤褰撳墠鐢ㄦ埛鐨勯儴闂↖D
task.setDeptId(createVO.getDeptId() != null ? createVO.getDeptId() : SecurityUtils.getDeptId());
- task.setCreateBy(SecurityUtils.getUsername());
+ task.setCreateBy(username);
task.setCreateTime(DateUtils.getNowDate());
- task.setUpdateBy(SecurityUtils.getUsername());
+ task.setUpdateBy(username);
task.setUpdateTime(DateUtils.getNowDate());
task.setRemark(createVO.getRemark());
task.setDelFlag("0");
@@ -228,17 +229,17 @@
// 淇濆瓨鎵ц浜哄憳淇℃伅锛堝寘鍚鑹茬被鍨嬶級
if (result > 0 && createVO.getAssignees() != null && !createVO.getAssignees().isEmpty()) {
- saveTaskAssignees(task.getTaskId(), createVO.getAssignees());
+ saveTaskAssignees(task.getTaskId(), createVO.getAssignees(),username);
}
// 淇濆瓨鎬ユ晳杞繍鎵╁睍淇℃伅
if (result > 0 && "EMERGENCY_TRANSFER".equals(createVO.getTaskType())) {
- saveEmergencyInfo(task.getTaskId(), createVO);
+ saveEmergencyInfo(task.getTaskId(),username, createVO,null,null);
}
// 淇濆瓨绂忕杞︽墿灞曚俊鎭�
if (result > 0 && "WELFARE".equals(createVO.getTaskType())) {
- saveWelfareInfo(task.getTaskId(), createVO);
+ saveWelfareInfo(task.getTaskId(),SecurityUtils.getUsername(), createVO);
}
// 璁板綍鎿嶄綔鏃ュ織
@@ -291,6 +292,170 @@
}
}).start();
}
+
+ return result;
+ }
+
+ /**
+ * 鏂板浠诲姟绠$悊锛堝厑璁镐粠澶栭儴浼犲叆鐢ㄦ埛淇℃伅銆侀儴闂ㄤ俊鎭拰鏃堕棿淇℃伅锛�
+ *
+ * @param createVO 浠诲姟鍒涘缓瀵硅薄
+ * @param userId 鐢ㄦ埛ID
+ * @param deptId 閮ㄩ棬ID
+ * @param createTime 鍒涘缓鏃堕棿
+ * @param updateTime 鏇存柊鏃堕棿
+ * @return 缁撴灉
+ */
+ @Override
+ @Transactional
+ public int insertTask(TaskCreateVO createVO,String serviceOrderId,String dispatchOrderId, Long userId,String userName, Long deptId, Date createTime, Date updateTime) {
+ SysTask task = new SysTask();
+ if(createVO.getTaskCode()!=null){
+ task.setTaskCode(createVO.getTaskCode());
+ }else{
+ task.setTaskCode(generateTaskCode());
+ }
+ task.setTaskType(createVO.getTaskType());
+ task.setTaskStatus(TaskStatus.PENDING.getCode());
+ task.setTaskDescription(createVO.getTaskDescription());
+ task.setPlannedStartTime(createVO.getPlannedStartTime());
+ task.setPlannedEndTime(createVO.getPlannedEndTime());
+ task.setActualStartTime(createVO.getActualStartTime());
+ task.setActualEndTime(createVO.getActualEndTime());
+ task.setAssigneeId(createVO.getAssigneeId());
+ // 浣跨敤澶栭儴浼犲叆鐨勭敤鎴稩D鍜岄儴闂↖D
+ task.setCreatorId(userId);
+ task.setDeptId(deptId);
+ task.setCreateBy(userName);
+ // 浣跨敤澶栭儴浼犲叆鐨勫垱寤烘椂闂村拰鏇存柊鏃堕棿
+ task.setCreateTime(createTime);
+ task.setUpdateTime(updateTime);
+ task.setUpdateBy(userName);
+ task.setRemark(createVO.getRemark());
+ task.setDelFlag("0");
+
+
+
+ // 璁剧疆閫氱敤鍦板潃鍜屽潗鏍囦俊鎭�
+ if (createVO.getDepartureAddress() != null) {
+ task.setDepartureAddress(createVO.getDepartureAddress());
+ }
+ if (createVO.getDestinationAddress() != null) {
+ task.setDestinationAddress(createVO.getDestinationAddress());
+ }
+ if (createVO.getDepartureLongitude() != null) {
+ task.setDepartureLongitude(createVO.getDepartureLongitude());
+ }
+ if (createVO.getDepartureLatitude() != null) {
+ task.setDepartureLatitude(createVO.getDepartureLatitude());
+ }
+ if (createVO.getDestinationLongitude() != null) {
+ task.setDestinationLongitude(createVO.getDestinationLongitude());
+ }
+ if (createVO.getDestinationLatitude() != null) {
+ task.setDestinationLatitude(createVO.getDestinationLatitude());
+ }
+ if (createVO.getEstimatedDistance() != null) {
+ task.setEstimatedDistance(createVO.getEstimatedDistance());
+ }
+
+ // 璁剧疆鎬ユ晳杞繍鐗瑰畾淇℃伅
+ if (createVO.getTransferTime() != null) {
+ task.setPlannedStartTime(createVO.getTransferTime());
+ }
+ if (createVO.getTransferDistance() != null) {
+ task.setEstimatedDistance(createVO.getTransferDistance());
+ }
+
+ // 璁剧疆绂忕杞︾壒瀹氫俊鎭�
+ if (createVO.getPlannedStartTime() != null) {
+ task.setPlannedStartTime(createVO.getPlannedStartTime());
+ }
+ if (createVO.getStartAddress() != null) {
+ task.setDepartureAddress(createVO.getStartAddress());
+ }
+ if (createVO.getEndAddress() != null) {
+ task.setDestinationAddress(createVO.getEndAddress());
+ }
+ // 璁剧疆绂忕杞﹀叕閲屾暟
+ if (createVO.getDistance() != null) {
+ task.setEstimatedDistance(createVO.getDistance());
+ }
+
+ int result = sysTaskMapper.insertSysTask(task);
+
+ // 淇濆瓨杞﹁締鍏宠仈淇℃伅
+ if (result > 0 && createVO.getVehicleIds() != null && !createVO.getVehicleIds().isEmpty()) {
+ for (Long vehicleId : createVO.getVehicleIds()) {
+ SysTaskVehicle taskVehicle = new SysTaskVehicle();
+ taskVehicle.setTaskId(task.getTaskId());
+ taskVehicle.setVehicleId(vehicleId);
+ taskVehicle.setAssignTime(updateTime);
+ taskVehicle.setAssignBy(userName);
+ taskVehicle.setStatus("ASSIGNED");
+ taskVehicle.setCreateBy(userName);
+ taskVehicle.setCreateTime(createTime);
+ taskVehicle.setUpdateBy(userName);
+ taskVehicle.setUpdateTime(updateTime);
+
+ sysTaskVehicleMapper.insertSysTaskVehicle(taskVehicle);
+ }
+ }
+
+ // 淇濆瓨鎵ц浜哄憳淇℃伅锛堝寘鍚鑹茬被鍨嬶級
+ if (result > 0 && createVO.getAssignees() != null && !createVO.getAssignees().isEmpty()) {
+ saveTaskAssignees(task.getTaskId(), createVO.getAssignees(),userName);
+ }
+
+ // 淇濆瓨鎬ユ晳杞繍鎵╁睍淇℃伅
+ if (result > 0 && "EMERGENCY_TRANSFER".equals(createVO.getTaskType())) {
+ saveEmergencyInfo(task.getTaskId(),userName, createVO, serviceOrderId, dispatchOrderId);
+ }
+
+ // 淇濆瓨绂忕杞︽墿灞曚俊鎭�
+ if (result > 0 && "WELFARE".equals(createVO.getTaskType())) {
+ saveWelfareInfo(task.getTaskId(),userName, createVO);
+ }
+
+ // 璁板綍鎿嶄綔鏃ュ織
+ if (result > 0) {
+ recordTaskLog(task.getTaskId(), "CREATE", "鍒涘缓浠诲姟", null,
+ "浠诲姟绫诲瀷锛�" + createVO.getTaskType(), userId, userName);
+ }
+
+ // 鍙戝竷浠诲姟鍒涘缓浜嬩欢
+ if (result > 0) {
+ eventPublisher.publishEvent(new TaskCreatedEvent(
+ this,
+ task.getTaskId(),
+ task.getTaskCode(),
+ task.getTaskType(),
+ userId,
+ userName
+ ));
+ }
+
+ // 鍙戝竷浠诲姟鍒嗛厤浜嬩欢
+ if (result > 0 && createVO.getAssignees() != null && !createVO.getAssignees().isEmpty()) {
+ List<Long> assigneeIds = createVO.getAssignees().stream()
+ .map(assignee -> assignee.getUserId())
+ .collect(Collectors.toList());
+ List<String> assigneeNames = createVO.getAssignees().stream()
+ .map(assignee -> assignee.getUserName())
+ .collect(Collectors.toList());
+
+ eventPublisher.publishEvent(new TaskAssignedEvent(
+ this,
+ task.getTaskId(),
+ task.getTaskCode(),
+ assigneeIds,
+ assigneeNames,
+ userId,
+ userName
+ ));
+ }
+
+
return result;
}
@@ -961,6 +1126,82 @@
return task;
}
+ /**
+ * 妫�鏌ヨ溅杈嗘槸鍚︽湁姝e湪杩涜涓殑浠诲姟
+ * 姝e湪杩涜涓殑浠诲姟鏄寚鐘舵�佷笉涓猴細PENDING锛堝緟澶勭悊锛夈�丆OMPLETED锛堝凡瀹屾垚锛夈�丆ANCELLED锛堝凡鍙栨秷锛夌殑浠诲姟
+ *
+ * @param vehicleId 杞﹁締ID
+ * @return 姝e湪杩涜涓殑浠诲姟鍒楄〃
+ */
+ @Override
+ public List<SysTask> checkVehicleActiveTasks(Long vehicleId) {
+ return sysTaskMapper.selectActiveTasksByVehicleId(vehicleId);
+ }
+
+ /**
+ * 妫�鏌ヤ换鍔℃槸鍚﹀凡鍏宠仈鏃х郴缁熸湇鍔″崟ID
+ *
+ * @param taskId 浠诲姟ID
+ * @return true-宸插叧鑱旓紝false-鏈叧鑱�
+ */
+ @Override
+ public boolean hasLegacyServiceOrdId(Long taskId) {
+ // 鍙湁鎬ユ晳杞繍浠诲姟鎵嶆湁鏃х郴缁烮D
+ SysTask task = sysTaskMapper.selectSysTaskByTaskId(taskId);
+ if (task != null && "EMERGENCY_TRANSFER".equals(task.getTaskType())) {
+ SysTaskEmergency emergencyInfo = sysTaskEmergencyMapper.selectSysTaskEmergencyByTaskId(taskId);
+ return emergencyInfo != null && emergencyInfo.getLegacyServiceOrdId() != null;
+ }
+ return false;
+ }
+
+ /**
+ * 妫�鏌ヤ换鍔℃槸鍚﹀凡鍏宠仈鏃х郴缁熻皟搴﹀崟ID
+ *
+ * @param taskId 浠诲姟ID
+ * @return true-宸插叧鑱旓紝false-鏈叧鑱�
+ */
+ @Override
+ public boolean hasLegacyDispatchOrdId(Long taskId) {
+ // 鍙湁鎬ユ晳杞繍浠诲姟鎵嶆湁鏃х郴缁烮D
+ SysTask task = sysTaskMapper.selectSysTaskByTaskId(taskId);
+ if (task != null && "EMERGENCY_TRANSFER".equals(task.getTaskType())) {
+ SysTaskEmergency emergencyInfo = sysTaskEmergencyMapper.selectSysTaskEmergencyByTaskId(taskId);
+ return emergencyInfo != null && emergencyInfo.getLegacyDispatchOrdId() != null;
+ }
+ return false;
+ }
+
+ /**
+ * 鏍规嵁鏃х郴缁熸湇鍔″崟ID妫�鏌ユ槸鍚﹀瓨鍦ㄤ换鍔�
+ *
+ * @param legacyServiceOrdId 鏃х郴缁熸湇鍔″崟ID
+ * @return true-瀛樺湪锛宖alse-涓嶅瓨鍦�
+ */
+ @Override
+ public boolean existsByLegacyServiceOrdId(Long legacyServiceOrdId) {
+ if (legacyServiceOrdId == null) {
+ return false;
+ }
+ SysTaskEmergency emergencyInfo = sysTaskEmergencyMapper.selectByLegacyServiceOrdId(legacyServiceOrdId);
+ return emergencyInfo != null;
+ }
+
+ /**
+ * 鏍规嵁鏃х郴缁熻皟搴﹀崟ID妫�鏌ユ槸鍚﹀瓨鍦ㄤ换鍔�
+ *
+ * @param legacyDispatchOrdId 鏃х郴缁熻皟搴﹀崟ID
+ * @return true-瀛樺湪锛宖alse-涓嶅瓨鍦�
+ */
+ @Override
+ public boolean existsByLegacyDispatchOrdId(Long legacyDispatchOrdId) {
+ if (legacyDispatchOrdId == null) {
+ return false;
+ }
+ SysTaskEmergency emergencyInfo = sysTaskEmergencyMapper.selectByLegacyDispatchOrdId(legacyDispatchOrdId);
+ return emergencyInfo != null;
+ }
+
@Autowired
private TaskCodeGenerator taskCodeGenerator;
@@ -1093,14 +1334,14 @@
* @param taskId 浠诲姟ID
* @param assignees 鎵ц浜哄憳淇℃伅鍒楄〃
*/
- private void saveTaskAssignees(Long taskId, java.util.List<TaskCreateVO.AssigneeInfo> assignees) {
+ private void saveTaskAssignees(Long taskId, java.util.List<TaskCreateVO.AssigneeInfo> assignees,String userName) {
if (assignees == null || assignees.isEmpty()) {
return;
}
java.util.List<SysTaskAssignee> taskAssignees = new java.util.ArrayList<>();
Date now = DateUtils.getNowDate();
- String currentUser = SecurityUtils.getUsername();
+ String currentUser = userName;
for (int i = 0; i < assignees.size(); i++) {
TaskCreateVO.AssigneeInfo assigneeInfo = assignees.get(i);
@@ -1133,7 +1374,7 @@
* @param taskId 浠诲姟ID
* @param createVO 浠诲姟鍒涘缓瀵硅薄
*/
- private void saveEmergencyInfo(Long taskId, TaskCreateVO createVO) {
+ private void saveEmergencyInfo(Long taskId,String createUserName, TaskCreateVO createVO,String serviceOrderId,String dispatchOrderId) {
SysTaskEmergency emergencyInfo = new SysTaskEmergency();
emergencyInfo.setTaskId(taskId);
@@ -1188,12 +1429,26 @@
.collect(Collectors.joining(","));
emergencyInfo.setDiseaseIds(diseaseIdsStr);
}
-
+
+ if(serviceOrderId!=null){
+ emergencyInfo.setLegacyServiceOrdId(Long.parseLong(serviceOrderId));
+ emergencyInfo.setSyncStatus(2);
+ emergencyInfo.setSyncTime(new Date());
+ emergencyInfo.setSyncErrorMsg("鏃х郴缁熷悓姝ヨ繃鏉�");
+ }
+ if(dispatchOrderId!=null){
+ emergencyInfo.setLegacyDispatchOrdId(Long.parseLong(dispatchOrderId));
+ emergencyInfo.setDispatchSyncStatus(2);
+ emergencyInfo.setDispatchSyncTime(new Date());
+ emergencyInfo.setDispatchSyncErrorMsg("鏃х郴缁熷悓姝ヨ繃鏉�");
+
+ // 绯荤粺瀛楁
+ }
// 绯荤粺瀛楁
emergencyInfo.setCreateTime(DateUtils.getNowDate());
emergencyInfo.setUpdateTime(DateUtils.getNowDate());
- emergencyInfo.setCreateBy(SecurityUtils.getUsername());
- emergencyInfo.setUpdateBy(SecurityUtils.getUsername());
+ emergencyInfo.setCreateBy(createUserName);
+ emergencyInfo.setUpdateBy(createUserName);
sysTaskEmergencyMapper.insertSysTaskEmergency(emergencyInfo);
}
@@ -1204,7 +1459,7 @@
* @param taskId 浠诲姟ID
* @param createVO 浠诲姟鍒涘缓瀵硅薄
*/
- private void saveWelfareInfo(Long taskId, TaskCreateVO createVO) {
+ private void saveWelfareInfo(Long taskId,String userName, TaskCreateVO createVO) {
SysTaskWelfare welfareInfo = new SysTaskWelfare();
welfareInfo.setTaskId(taskId);
@@ -1233,8 +1488,8 @@
// 绯荤粺瀛楁
welfareInfo.setCreateTime(DateUtils.getNowDate());
welfareInfo.setUpdateTime(DateUtils.getNowDate());
- welfareInfo.setCreateBy(SecurityUtils.getUsername());
- welfareInfo.setUpdateBy(SecurityUtils.getUsername());
+ welfareInfo.setCreateBy(userName);
+ welfareInfo.setUpdateBy(userName);
sysTaskWelfareMapper.insertSysTaskWelfare(welfareInfo);
}
--
Gitblit v1.9.1