From 2c86a8bd60deed0dd0e044bad6fb83f75d19a332 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期日, 26 十月 2025 15:05:50 +0800
Subject: [PATCH] Merge branch 'feature-task'
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskVehicleServiceImpl.java | 311 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 311 insertions(+), 0 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
new file mode 100644
index 0000000..9cbaeb1
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskVehicleServiceImpl.java
@@ -0,0 +1,311 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+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.mapper.VehicleInfoMapper;
+import com.ruoyi.system.domain.SysTaskVehicle;
+import com.ruoyi.system.domain.VehicleInfo;
+import com.ruoyi.system.service.ISysTaskVehicleService;
+
+/**
+ * 浠诲姟杞﹁締鍏宠仈Service涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2024-01-15
+ */
+@Service
+public class SysTaskVehicleServiceImpl implements ISysTaskVehicleService {
+
+ private static final Logger logger = LoggerFactory.getLogger(SysTaskVehicleServiceImpl.class);
+
+ @Autowired
+ private SysTaskVehicleMapper sysTaskVehicleMapper;
+
+ @Autowired
+ private VehicleInfoMapper vehicleInfoMapper;
+
+ /**
+ * 鏌ヨ浠诲姟杞﹁締鍏宠仈
+ *
+ * @param id 浠诲姟杞﹁締鍏宠仈涓婚敭
+ * @return 浠诲姟杞﹁締鍏宠仈
+ */
+ @Override
+ public SysTaskVehicle selectSysTaskVehicleById(Long id) {
+ return sysTaskVehicleMapper.selectSysTaskVehicleById(id);
+ }
+
+ /**
+ * 鏌ヨ浠诲姟杞﹁締鍏宠仈鍒楄〃
+ *
+ * @param sysTaskVehicle 浠诲姟杞﹁締鍏宠仈
+ * @return 浠诲姟杞﹁締鍏宠仈
+ */
+ @Override
+ public List<SysTaskVehicle> selectSysTaskVehicleList(SysTaskVehicle sysTaskVehicle) {
+ return sysTaskVehicleMapper.selectSysTaskVehicleList(sysTaskVehicle);
+ }
+
+ /**
+ * 鏍规嵁浠诲姟ID鏌ヨ鍏宠仈杞﹁締鍒楄〃
+ *
+ * @param taskId 浠诲姟ID
+ * @return 浠诲姟杞﹁締鍏宠仈闆嗗悎
+ */
+ @Override
+ public List<SysTaskVehicle> selectSysTaskVehicleByTaskId(Long taskId) {
+ return sysTaskVehicleMapper.selectSysTaskVehicleByTaskId(taskId);
+ }
+
+ /**
+ * 鏂板浠诲姟杞﹁締鍏宠仈
+ *
+ * @param sysTaskVehicle 浠诲姟杞﹁締鍏宠仈
+ * @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);
+ }
+
+ /**
+ * 淇敼浠诲姟杞﹁締鍏宠仈
+ *
+ * @param sysTaskVehicle 浠诲姟杞﹁締鍏宠仈
+ * @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);
+ }
+
+ /**
+ * 鍒犻櫎浠诲姟杞﹁締鍏宠仈淇℃伅
+ *
+ * @param id 浠诲姟杞﹁締鍏宠仈涓婚敭
+ * @return 缁撴灉
+ */
+ @Override
+ @Transactional
+ public int deleteSysTaskVehicleById(Long id) {
+ return sysTaskVehicleMapper.deleteSysTaskVehicleById(id);
+ }
+
+ /**
+ * 鏍规嵁浠诲姟ID鍒犻櫎杞﹁締鍏宠仈
+ *
+ * @param taskId 浠诲姟ID
+ * @return 缁撴灉
+ */
+ @Override
+ @Transactional
+ public int deleteSysTaskVehicleByTaskId(Long taskId) {
+ return sysTaskVehicleMapper.deleteSysTaskVehicleByTaskId(taskId);
+ }
+
+ /**
+ * 鏍规嵁浠诲姟ID鍜岃溅杈咺D鍒犻櫎鍏宠仈
+ *
+ * @param taskId 浠诲姟ID
+ * @param vehicleId 杞﹁締ID
+ * @return 缁撴灉
+ */
+ @Override
+ @Transactional
+ public int deleteSysTaskVehicleByTaskIdAndVehicleId(Long taskId, Long vehicleId) {
+ return sysTaskVehicleMapper.deleteSysTaskVehicleByTaskIdAndVehicleId(taskId, vehicleId);
+ }
+
+ /**
+ * 妫�鏌ヤ换鍔¤溅杈嗗叧鑱旀槸鍚﹀瓨鍦�
+ *
+ * @param taskId 浠诲姟ID
+ * @param vehicleId 杞﹁締ID
+ * @return 缁撴灉
+ */
+ @Override
+ public int checkTaskVehicleExists(Long taskId, Long vehicleId) {
+ return sysTaskVehicleMapper.checkTaskVehicleExists(taskId, vehicleId);
+ }
+
+ /**
+ * 鎵归噺鏂板浠诲姟杞﹁締鍏宠仈
+ *
+ * @param sysTaskVehicleList 浠诲姟杞﹁締鍏宠仈鍒楄〃
+ * @return 缁撴灉
+ */
+ @Override
+ @Transactional
+ public int batchInsertSysTaskVehicle(List<SysTaskVehicle> sysTaskVehicleList) {
+ return sysTaskVehicleMapper.batchInsertSysTaskVehicle(sysTaskVehicleList);
+ }
+
+ /**
+ * 鍒嗛厤杞﹁締缁欎换鍔�
+ *
+ * @param taskId 浠诲姟ID
+ * @param vehicleId 杞﹁締ID
+ * @param remark 澶囨敞
+ * @return 缁撴灉
+ */
+ @Override
+ @Transactional
+ public int assignVehicleToTask(Long taskId, Long vehicleId, String remark) {
+ // 妫�鏌ユ槸鍚﹀凡缁忓垎閰�
+ int exists = sysTaskVehicleMapper.checkTaskVehicleExists(taskId, vehicleId);
+ if (exists > 0) {
+ throw new RuntimeException("杞﹁締宸茬粡鍒嗛厤缁欒浠诲姟");
+ }
+
+ SysTaskVehicle taskVehicle = new SysTaskVehicle();
+ taskVehicle.setTaskId(taskId);
+ taskVehicle.setVehicleId(vehicleId);
+ taskVehicle.setAssignTime(DateUtils.getNowDate());
+ taskVehicle.setAssignBy(SecurityUtils.getUsername());
+ 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) {
+ List<SysTaskVehicle> taskVehicles = new ArrayList<>();
+ Date now = DateUtils.getNowDate();
+ String assignBy = SecurityUtils.getUsername();
+
+ for (Long vehicleId : vehicleIds) {
+ // 妫�鏌ユ槸鍚﹀凡缁忓垎閰�
+ int exists = sysTaskVehicleMapper.checkTaskVehicleExists(taskId, vehicleId);
+ if (exists == 0) {
+ SysTaskVehicle taskVehicle = new SysTaskVehicle();
+ taskVehicle.setTaskId(taskId);
+ taskVehicle.setVehicleId(vehicleId);
+ taskVehicle.setAssignTime(now);
+ taskVehicle.setAssignBy(assignBy);
+ taskVehicle.setStatus("ASSIGNED");
+ taskVehicle.setRemark(remark);
+ taskVehicles.add(taskVehicle);
+ }
+ }
+
+ if (!taskVehicles.isEmpty()) {
+ return sysTaskVehicleMapper.batchInsertSysTaskVehicle(taskVehicles);
+ }
+
+ return 0;
+ }
+
+ /**
+ * 鏌ヨ鍙敤杞﹁締
+ *
+ * @param deptId 閮ㄩ棬ID
+ * @param taskType 浠诲姟绫诲瀷
+ * @return 鍙敤杞﹁締鍒楄〃
+ */
+ @Override
+ public List<SysTaskVehicle> getAvailableVehicles(Long deptId, String taskType) {
+ // 鏌ヨ鎸囧畾閮ㄩ棬涓嬬姸鎬佷负姝e父鐨勮溅杈�
+ List<SysTaskVehicle> availableVehicles = new ArrayList<>();
+
+ try {
+ // 鏌ヨ杞﹁締淇℃伅
+ VehicleInfo queryParam = new VehicleInfo();
+ queryParam.setDeptId(deptId);
+ queryParam.setStatus("0"); // 0琛ㄧず姝e父鐘舵��
+
+ List<VehicleInfo> vehicles = vehicleInfoMapper.selectVehicleInfoList(queryParam);
+
+ // 杞崲涓� SysTaskVehicle 瀵硅薄
+ 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.setStatus(vehicle.getStatus());
+ availableVehicles.add(taskVehicle);
+ }
+ } catch (Exception e) {
+ logger.error("鏌ヨ鍙敤杞﹁締澶辫触", e);
+ }
+
+ 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);
+ }
+}
--
Gitblit v1.9.1