From 10354e63eb3298beb9ebcc029dd9f48d8936a272 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期五, 19 十二月 2025 23:15:05 +0800
Subject: [PATCH] feat:优化同步
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskVehicleServiceImpl.java | 311 +++++++++++++++++++++++++++------------------------
1 files changed, 164 insertions(+), 147 deletions(-)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskVehicleServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskVehicleServiceImpl.java
index b8e1c76..6f3a6d7 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskVehicleServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskVehicleServiceImpl.java
@@ -1,39 +1,31 @@
package com.ruoyi.system.service.impl;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.system.domain.SysTaskVehicle;
+import com.ruoyi.system.domain.VehicleInfo;
+import com.ruoyi.system.mapper.SysTaskVehicleMapper;
+import com.ruoyi.system.mapper.VehicleInfoMapper;
+import com.ruoyi.system.service.ISysTaskVehicleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import com.ruoyi.common.utils.DateUtils;
-import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.system.mapper.SysTaskVehicleMapper;
-import com.ruoyi.system.domain.SysTaskVehicle;
-import com.ruoyi.system.service.ISysTaskVehicleService;
+
+import java.util.*;
+import java.util.stream.Collectors;
/**
- * 浠诲姟杞﹁締鍏宠仈Service涓氬姟灞傚鐞�
+ * 浠诲姟杞﹁締鏈嶅姟瀹炵幇绫�
*
* @author ruoyi
- * @date 2024-01-15
*/
@Service
public class SysTaskVehicleServiceImpl implements ISysTaskVehicleService {
-
+
@Autowired
private SysTaskVehicleMapper sysTaskVehicleMapper;
- /**
- * 鏌ヨ浠诲姟杞﹁締鍏宠仈
- *
- * @param id 浠诲姟杞﹁締鍏宠仈涓婚敭
- * @return 浠诲姟杞﹁締鍏宠仈
- */
- @Override
- public SysTaskVehicle selectSysTaskVehicleById(Long id) {
- return sysTaskVehicleMapper.selectSysTaskVehicleById(id);
- }
+ @Autowired
+ private VehicleInfoMapper vehicleInfoMapper;
/**
* 鏌ヨ浠诲姟杞﹁締鍏宠仈鍒楄〃
@@ -44,6 +36,17 @@
@Override
public List<SysTaskVehicle> selectSysTaskVehicleList(SysTaskVehicle sysTaskVehicle) {
return sysTaskVehicleMapper.selectSysTaskVehicleList(sysTaskVehicle);
+ }
+
+ /**
+ * 鏌ヨ浠诲姟杞﹁締鍏宠仈淇℃伅
+ *
+ * @param id 浠诲姟杞﹁締鍏宠仈涓婚敭
+ * @return 浠诲姟杞﹁締鍏宠仈淇℃伅
+ */
+ @Override
+ public SysTaskVehicle selectSysTaskVehicleById(Long id) {
+ return sysTaskVehicleMapper.selectSysTaskVehicleById(id);
}
/**
@@ -64,20 +67,7 @@
* @return 缁撴灉
*/
@Override
- @Transactional
public int insertSysTaskVehicle(SysTaskVehicle sysTaskVehicle) {
- // 璁剧疆鍒嗛厤鏃堕棿鍜屽垎閰嶄汉
- if (sysTaskVehicle.getAssignTime() == null) {
- sysTaskVehicle.setAssignTime(DateUtils.getNowDate());
- }
- if (sysTaskVehicle.getAssignBy() == null || sysTaskVehicle.getAssignBy().isEmpty()) {
- sysTaskVehicle.setAssignBy(SecurityUtils.getUsername());
- }
- // 璁剧疆榛樿鐘舵��
- if (sysTaskVehicle.getStatus() == null || sysTaskVehicle.getStatus().isEmpty()) {
- sysTaskVehicle.setStatus("ASSIGNED");
- }
- sysTaskVehicle.setCreateTime(DateUtils.getNowDate());
return sysTaskVehicleMapper.insertSysTaskVehicle(sysTaskVehicle);
}
@@ -88,22 +78,8 @@
* @return 缁撴灉
*/
@Override
- @Transactional
public int updateSysTaskVehicle(SysTaskVehicle sysTaskVehicle) {
- sysTaskVehicle.setUpdateTime(DateUtils.getNowDate());
return sysTaskVehicleMapper.updateSysTaskVehicle(sysTaskVehicle);
- }
-
- /**
- * 鎵归噺鍒犻櫎浠诲姟杞﹁締鍏宠仈
- *
- * @param ids 闇�瑕佸垹闄ょ殑浠诲姟杞﹁締鍏宠仈涓婚敭
- * @return 缁撴灉
- */
- @Override
- @Transactional
- public int deleteSysTaskVehicleByIds(Long[] ids) {
- return sysTaskVehicleMapper.deleteSysTaskVehicleByIds(ids);
}
/**
@@ -113,71 +89,135 @@
* @return 缁撴灉
*/
@Override
- @Transactional
public int deleteSysTaskVehicleById(Long id) {
return sysTaskVehicleMapper.deleteSysTaskVehicleById(id);
}
/**
- * 鏍规嵁浠诲姟ID鍒犻櫎杞﹁締鍏宠仈
+ * 鎵归噺鍒犻櫎浠诲姟杞﹁締鍏宠仈淇℃伅
*
- * @param taskId 浠诲姟ID
+ * @param ids 闇�瑕佸垹闄ょ殑涓婚敭闆嗗悎
* @return 缁撴灉
*/
@Override
- @Transactional
- public int deleteSysTaskVehicleByTaskId(Long taskId) {
- return sysTaskVehicleMapper.deleteSysTaskVehicleByTaskId(taskId);
+ public int deleteSysTaskVehicleByIds(Long[] ids) {
+ return sysTaskVehicleMapper.deleteSysTaskVehicleByIds(ids);
}
/**
- * 鏍规嵁浠诲姟ID鍜岃溅杈咺D鍒犻櫎鍏宠仈
+ * 鏇存柊浠诲姟杞﹁締鍏宠仈鐘舵��
*
- * @param taskId 浠诲姟ID
- * @param vehicleId 杞﹁締ID
+ * @param id 浠诲姟杞﹁締鍏宠仈涓婚敭
+ * @param status 鐘舵��
* @return 缁撴灉
*/
@Override
- @Transactional
- public int deleteSysTaskVehicleByTaskIdAndVehicleId(Long taskId, Long vehicleId) {
- return sysTaskVehicleMapper.deleteSysTaskVehicleByTaskIdAndVehicleId(taskId, vehicleId);
+ public int updateSysTaskVehicleStatus(Long id, String status) {
+ SysTaskVehicle taskVehicle = new SysTaskVehicle();
+ taskVehicle.setId(id);
+ taskVehicle.setStatus(status);
+ taskVehicle.setUpdateTime(DateUtils.getNowDate());
+ return sysTaskVehicleMapper.updateSysTaskVehicle(taskVehicle);
}
/**
- * 妫�鏌ヤ换鍔¤溅杈嗗叧鑱旀槸鍚﹀瓨鍦�
+ * 鎵归噺鑾峰彇杞﹁締褰撳墠浠诲姟鐘舵��
*
- * @param taskId 浠诲姟ID
- * @param vehicleId 杞﹁締ID
- * @return 缁撴灉
+ * @param vehicleIds 杞﹁締ID鍒楄〃
+ * @return 杞﹁締浠诲姟鐘舵�佹槧灏�
*/
@Override
- public int checkTaskVehicleExists(Long taskId, Long vehicleId) {
- return sysTaskVehicleMapper.checkTaskVehicleExists(taskId, vehicleId);
+ public Map<Long, Map<String, Object>> batchGetVehicleCurrentTaskStatus(List<Long> vehicleIds) {
+ Map<Long, Map<String, Object>> statusMap = new HashMap<>();
+
+ if (vehicleIds != null && !vehicleIds.isEmpty()) {
+ // 杩欓噷鍙互鏍规嵁瀹為檯闇�姹傛煡璇㈣溅杈嗙殑褰撳墠浠诲姟鐘舵��
+ // 鐢变簬缂轰箯鍏蜂綋鐨勪笟鍔¢�昏緫锛岃繖閲岀畝鍗曡繑鍥炵┖鏄犲皠
+ for (Long vehicleId : vehicleIds) {
+ Map<String, Object> statusInfo = new HashMap<>();
+ statusInfo.put("vehicleId", vehicleId);
+ statusInfo.put("currentTaskId", null);
+ statusInfo.put("currentTaskStatus", "AVAILABLE");
+ statusInfo.put("lastUpdateTime", DateUtils.getNowDate());
+ statusMap.put(vehicleId, statusInfo);
+ }
+ }
+
+ return statusMap;
}
- /**
- * 鎵归噺鏂板浠诲姟杞﹁締鍏宠仈
- *
- * @param sysTaskVehicleList 浠诲姟杞﹁締鍏宠仈鍒楄〃
- * @return 缁撴灉
- */
@Override
@Transactional
- public int batchInsertSysTaskVehicle(List<SysTaskVehicle> sysTaskVehicleList) {
- return sysTaskVehicleMapper.batchInsertSysTaskVehicle(sysTaskVehicleList);
+ public void saveTaskVehicles(Long taskId, List<Long> vehicleIds, String userName) {
+ saveTaskVehicles(taskId, vehicleIds, userName,
+ DateUtils.getNowDate(), DateUtils.getNowDate(), DateUtils.getNowDate());
}
- /**
- * 鍒嗛厤杞﹁締缁欎换鍔�
- *
- * @param taskId 浠诲姟ID
- * @param vehicleId 杞﹁締ID
- * @param remark 澶囨敞
- * @return 缁撴灉
- */
@Override
@Transactional
- public int assignVehicleToTask(Long taskId, Long vehicleId, String remark) {
+ public void saveTaskVehicles(Long taskId, List<Long> vehicleIds, String userName,
+ Date assignTime, Date createTime, Date updateTime) {
+ if (vehicleIds == null || vehicleIds.isEmpty()) {
+ return;
+ }
+
+ for (Long vehicleId : vehicleIds) {
+ SysTaskVehicle taskVehicle = new SysTaskVehicle();
+ taskVehicle.setTaskId(taskId);
+ taskVehicle.setVehicleId(vehicleId);
+ taskVehicle.setAssignTime(assignTime);
+ taskVehicle.setAssignBy(userName);
+ taskVehicle.setStatus("ASSIGNED");
+ taskVehicle.setCreateBy(userName);
+ taskVehicle.setCreateTime(createTime);
+ taskVehicle.setUpdateBy(userName);
+ taskVehicle.setUpdateTime(updateTime);
+
+ sysTaskVehicleMapper.insertSysTaskVehicle(taskVehicle);
+ }
+ }
+
+ @Override
+ @Transactional
+ public boolean updateTaskVehicles(Long taskId, List<Long> newVehicleIds, String userName) {
+ if (newVehicleIds == null || newVehicleIds.isEmpty()) {
+ return false;
+ }
+
+ // 鏌ヨ鐜版湁鐨勮溅杈嗗叧鑱�
+ List<SysTaskVehicle> existingVehicles = sysTaskVehicleMapper.selectSysTaskVehicleByTaskId(taskId);
+ List<Long> existingVehicleIds = existingVehicles.stream()
+ .map(SysTaskVehicle::getVehicleId)
+ .collect(Collectors.toList());
+
+ // 姣旇緝鏂版棫杞﹁締ID鍒楄〃锛屽垽鏂槸鍚︽湁鍙樺寲
+ boolean vehiclesChanged = !new HashSet<>(existingVehicleIds).equals(new HashSet<>(newVehicleIds));
+
+ // 鍙湁杞﹁締鍙戠敓鍙樺寲鏃舵墠鏇存柊
+ if (vehiclesChanged) {
+ // 鍒犻櫎鏃х殑杞﹁締鍏宠仈
+ sysTaskVehicleMapper.deleteSysTaskVehicleByTaskId(taskId);
+
+ // 娣诲姞鏂扮殑杞﹁締鍏宠仈
+ Date now = DateUtils.getNowDate();
+ for (Long vehicleId : newVehicleIds) {
+ SysTaskVehicle taskVehicle = new SysTaskVehicle();
+ taskVehicle.setTaskId(taskId);
+ taskVehicle.setVehicleId(vehicleId);
+ taskVehicle.setAssignTime(now);
+ taskVehicle.setAssignBy(userName);
+ taskVehicle.setCreateTime(now);
+ sysTaskVehicleMapper.insertSysTaskVehicle(taskVehicle);
+ }
+ return true;
+ }
+
+ return false;
+ }
+
+ @Override
+ @Transactional
+ public int assignVehicleToTask(Long taskId, Long vehicleId, String remark, Long userId, String userName) {
// 妫�鏌ユ槸鍚﹀凡缁忓垎閰�
int exists = sysTaskVehicleMapper.checkTaskVehicleExists(taskId, vehicleId);
if (exists > 0) {
@@ -188,40 +228,25 @@
taskVehicle.setTaskId(taskId);
taskVehicle.setVehicleId(vehicleId);
taskVehicle.setAssignTime(DateUtils.getNowDate());
- taskVehicle.setAssignBy(SecurityUtils.getUsername());
+ taskVehicle.setAssignBy(userName);
taskVehicle.setStatus("ASSIGNED");
taskVehicle.setRemark(remark);
return sysTaskVehicleMapper.insertSysTaskVehicle(taskVehicle);
}
- /**
- * 鍙栨秷浠诲姟杞﹁締鍒嗛厤
- *
- * @param taskId 浠诲姟ID
- * @param vehicleId 杞﹁締ID
- * @return 缁撴灉
- */
@Override
@Transactional
public int unassignVehicleFromTask(Long taskId, Long vehicleId) {
return sysTaskVehicleMapper.deleteSysTaskVehicleByTaskIdAndVehicleId(taskId, vehicleId);
}
- /**
- * 鎵归噺鍒嗛厤杞﹁締缁欎换鍔�
- *
- * @param taskId 浠诲姟ID
- * @param vehicleIds 杞﹁締ID鍒楄〃
- * @param remark 澶囨敞
- * @return 缁撴灉
- */
@Override
@Transactional
- public int assignMultipleVehiclesToTask(Long taskId, List<Long> vehicleIds, String remark) {
+ public int assignMultipleVehiclesToTask(Long taskId, List<Long> vehicleIds, String remark,
+ Long userId, String userName) {
List<SysTaskVehicle> taskVehicles = new ArrayList<>();
Date now = DateUtils.getNowDate();
- String assignBy = SecurityUtils.getUsername();
for (Long vehicleId : vehicleIds) {
// 妫�鏌ユ槸鍚﹀凡缁忓垎閰�
@@ -231,71 +256,63 @@
taskVehicle.setTaskId(taskId);
taskVehicle.setVehicleId(vehicleId);
taskVehicle.setAssignTime(now);
- taskVehicle.setAssignBy(assignBy);
+ taskVehicle.setAssignBy(userName);
taskVehicle.setStatus("ASSIGNED");
taskVehicle.setRemark(remark);
taskVehicles.add(taskVehicle);
}
}
+ int result = 0;
if (!taskVehicles.isEmpty()) {
- return sysTaskVehicleMapper.batchInsertSysTaskVehicle(taskVehicles);
+ result = sysTaskVehicleMapper.batchInsertSysTaskVehicle(taskVehicles);
}
- return 0;
+ return result;
}
- /**
- * 鏌ヨ鍙敤杞﹁締
- *
- * @param deptId 閮ㄩ棬ID
- * @param taskType 浠诲姟绫诲瀷
- * @return 鍙敤杞﹁締鍒楄〃
- */
+ @Override
+ public List<SysTaskVehicle> getTaskVehicles(Long taskId) {
+ return sysTaskVehicleMapper.selectSysTaskVehicleByTaskId(taskId);
+ }
+
@Override
public List<SysTaskVehicle> getAvailableVehicles(Long deptId, String taskType) {
- // 鏌ヨ鎸囧畾閮ㄩ棬涓嬬姸鎬佷负姝e父鐨勮溅杈�
- // 杩欓噷闇�瑕佹牴鎹疄闄呯殑杞﹁締淇℃伅琛ㄧ粨鏋勬潵瀹炵幇
- // 鏆傛椂杩斿洖绌哄垪琛紝瀹為檯瀹炵幇闇�瑕侊細
- // 1. 鏌ヨ tb_vehicle_info 琛ㄤ腑 dept_id = deptId 涓� vehicle_status = '0' 鐨勮溅杈�
- // 2. 鎺掗櫎宸茬粡鍒嗛厤缁欏叾浠栨湭瀹屾垚浠诲姟涓旂姸鎬佷负 ACTIVE 鐨勮溅杈�
- // 3. 鏍规嵁浠诲姟绫诲瀷绛涢�夊悎閫傜殑杞﹁締绫诲瀷
-
List<SysTaskVehicle> availableVehicles = new ArrayList<>();
- // TODO: 瀹炵幇鍏蜂綋鐨勬煡璇㈤�昏緫
- // 绀轰緥浠g爜锛�
- // 1. 鏌ヨ杞﹁締淇℃伅
- // List<TbVehicleInfo> vehicles = vehicleInfoMapper.selectAvailableVehiclesByDept(deptId, taskType);
- //
- // 2. 杞崲涓� SysTaskVehicle 瀵硅薄
- // for (TbVehicleInfo vehicle : vehicles) {
- // SysTaskVehicle taskVehicle = new SysTaskVehicle();
- // taskVehicle.setVehicleId(vehicle.getVehicleId());
- // taskVehicle.setVehicleNo(vehicle.getVehicleNo());
- // taskVehicle.setVehicleType(vehicle.getVehicleType());
- // taskVehicle.setVehicleBrand(vehicle.getVehicleBrand());
- // taskVehicle.setVehicleModel(vehicle.getVehicleModel());
- // availableVehicles.add(taskVehicle);
- // }
+ try {
+ // 鏌ヨ鎵�鏈夌姸鎬佷负姝e父鐨勮溅杈�
+ VehicleInfo queryParam = new VehicleInfo();
+ queryParam.setStatus("0"); // 0琛ㄧず姝e父鐘舵��
+ queryParam.setDeptId(deptId);
+
+ List<VehicleInfo> vehicles = vehicleInfoMapper.selectVehicleInfoList(queryParam);
+
+ // 杞崲涓篠ysTaskVehicle瀵硅薄
+ for (VehicleInfo vehicle : vehicles) {
+ SysTaskVehicle taskVehicle = new SysTaskVehicle();
+ taskVehicle.setVehicleId(vehicle.getVehicleId());
+ taskVehicle.setVehicleNo(vehicle.getVehicleNo());
+ taskVehicle.setVehicleType(vehicle.getVehicleType());
+ taskVehicle.setVehicleBrand(vehicle.getVehicleBrand());
+ taskVehicle.setVehicleModel(vehicle.getVehicleModel());
+ taskVehicle.setDeptName(vehicle.getDeptName());
+ availableVehicles.add(taskVehicle);
+ }
+ } catch (Exception e) {
+ System.err.println("鏌ヨ鍙敤杞﹁締澶辫触: " + e.getMessage());
+ }
return availableVehicles;
}
- /**
- * 鏇存柊浠诲姟杞﹁締鍏宠仈鐘舵��
- *
- * @param id 鍏宠仈ID
- * @param status 鏂扮姸鎬�
- * @return 缁撴灉
- */
@Override
- @Transactional
- public int updateTaskVehicleStatus(Long id, String status) {
- SysTaskVehicle taskVehicle = new SysTaskVehicle();
- taskVehicle.setId(id);
- taskVehicle.setStatus(status);
- taskVehicle.setUpdateTime(DateUtils.getNowDate());
- return sysTaskVehicleMapper.updateSysTaskVehicle(taskVehicle);
+ public int deleteTaskVehiclesByTaskId(Long taskId) {
+ return sysTaskVehicleMapper.deleteSysTaskVehicleByTaskId(taskId);
+ }
+
+ @Override
+ public boolean checkVehicleAssigned(Long taskId, Long vehicleId) {
+ return sysTaskVehicleMapper.checkTaskVehicleExists(taskId, vehicleId) > 0;
}
}
--
Gitblit v1.9.1