根据用户需求,将任务车辆分配功能从"只搜索指定部门的车辆"修改为"允许搜索所有车辆",以提供更大的选择范围。
SysTaskServiceImpl.java
修改前:
```java
@Override
public List getAvailableVehicles(Long deptId, String taskType) {
List availableVehicles = new ArrayList<>();
try {
// 查询指定部门下状态为正常的车辆
VehicleInfo queryParam = new VehicleInfo();
queryParam.setDeptId(deptId); // 限制部门
queryParam.setStatus("0"); // 0表示正常状态
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());
availableVehicles.add(taskVehicle);
}
} catch (Exception e) {
System.err.println("查询可用车辆失败: " + e.getMessage());
}
return availableVehicles;
}
```
修改后:
```java
@Override
public List getAvailableVehicles(Long deptId, String taskType) {
List availableVehicles = new ArrayList<>();
try {
// 查询所有状态为正常的车辆(不限制部门)
VehicleInfo queryParam = new VehicleInfo();
queryParam.setStatus("0"); // 0表示正常状态
// 不设置deptId,查询所有部门的车辆
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.setDeptName(vehicle.getDeptName()); // 添加部门名称
availableVehicles.add(taskVehicle);
}
} catch (Exception e) {
System.err.println("查询可用车辆失败: " + e.getMessage());
}
return availableVehicles;
}
```
关键变化:
- ✅ 移除了 queryParam.setDeptId(deptId);
限制
- ✅ 添加了 taskVehicle.setDeptName(vehicle.getDeptName());
设置部门名称
- ✅ 注释说明查询所有部门的车辆
SysTaskVehicle.java
添加字段:java /** 归属部门名称 */ @Excel(name = "归属部门") private String deptName;
添加getter和setter方法:
```java
public void setDeptName(String deptName) {
this.deptName = deptName;
}
public String getDeptName() {
return deptName;
}
```
更新toString方法:java @Override public String toString() { return "SysTaskVehicle{" + "id=" + id + ", taskId=" + taskId + ", vehicleId=" + vehicleId + ", assignTime=" + assignTime + ", assignBy='" + assignBy + '\'' + ", status='" + status + '\'' + ", vehicleNo='" + vehicleNo + '\'' + ", vehicleType='" + vehicleType + '\'' + ", vehicleBrand='" + vehicleBrand + '\'' + ", vehicleModel='" + vehicleModel + '\'' + ", deptName='" + deptName + '\'' + // 新增 '}'; }
SysTaskVehicleMapper.xml
更新resultMap:xml <resultMap type="SysTaskVehicle" id="SysTaskVehicleResult"> <result property="id" column="id" /> <result property="taskId" column="task_id" /> <result property="vehicleId" column="vehicle_id" /> <result property="assignTime" column="assign_time" /> <result property="assignBy" column="assign_by" /> <result property="status" column="status" /> <result property="remark" column="remark" /> <result property="vehicleNo" column="vehicle_no" /> <result property="vehicleType" column="vehicle_type" /> <result property="vehicleBrand" column="vehicle_brand" /> <result property="vehicleModel" column="vehicle_model" /> <result property="deptName" column="dept_name" /> <!-- 新增 --> </resultMap>
更新查询SQL:xml <sql id="selectSysTaskVehicleVo"> select tv.id, tv.task_id, tv.vehicle_id, tv.assign_time, tv.assign_by, tv.status, tv.remark, v.vehicle_no, v.vehicle_type, v.vehicle_brand, v.vehicle_model, d.dept_name <!-- 新增d.dept_name --> from sys_task_vehicle tv left join tb_vehicle_info v on tv.vehicle_id = v.vehicle_id left join sys_dept d on v.dept_id = d.dept_id <!-- 新增部门关联 --> </sql>
车辆: [粤A12345 - 急救中心 ▼]
┌─────────────────────────────────────────────────────┐
│ 粤A12345 - 急救中心 │
│ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ 粤A12345 │ │ 救护车 │ │
│ │ ID: 1 │ │ 奔驰 S350 │ │
│ └─────────────────┘ └─────────────────────────────┘ │
│ 粤A67890 - 转运中心 │
│ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ 粤A67890 │ │ 转运车 │ │
│ │ ID: 2 │ │ 丰田 海狮 │ │
│ └─────────────────┘ └─────────────────────────────┘ │
│ 粤A99999 - 维修中心 │
│ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ 粤A99999 │ │ 维修车 │ │
│ │ ID: 3 │ │ 大众 途安 │ │
│ └─────────────────┘ └─────────────────────────────┘ │
└─────────────────────────────────────────────────────┘
前端调用 getAvailableVehicles(deptId, taskType)
↓
后端Controller: /task/vehicle/available
↓
Service层: SysTaskServiceImpl.getAvailableVehicles()
↓ (不再限制部门ID)
Mapper层: VehicleInfoMapper.selectVehicleInfoList()
↓
数据库查询: tb_vehicle_info表 (所有部门)
↓
数据转换: VehicleInfo → SysTaskVehicle (包含部门名称)
↓
返回给前端 (显示所有部门的车辆)
SysTaskServiceImpl.java
- Service层实现(已修改)SysTaskVehicle.java
- 实体类(已添加deptName字段)SysTaskVehicleMapper.xml
- Mapper配置(已更新查询和映射)detail.vue
- 前端页面(已支持显示部门信息)