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