wlzboy
2025-09-24 62a079a15b46925283581f6caaf631b5a4558927
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
package com.ruoyi.system.service.impl;
 
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
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;
 
/**
 * 任务车辆关联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);
    }
 
    /**
     * 查询任务车辆关联列表
     * 
     * @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和车辆ID删除关联
     * 
     * @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) {
        // 查询指定部门下状态为正常的车辆
        // 这里需要根据实际的车辆信息表结构来实现
        // 暂时返回空列表,实际实现需要:
        // 1. 查询 tb_vehicle_info 表中 dept_id = deptId 且 vehicle_status = '0' 的车辆
        // 2. 排除已经分配给其他未完成任务且状态为 ACTIVE 的车辆
        // 3. 根据任务类型筛选合适的车辆类型
        
        List<SysTaskVehicle> availableVehicles = new ArrayList<>();
        
        // TODO: 实现具体的查询逻辑
        // 示例代码:
        // 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);
        // }
        
        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);
    }
}