修改维修工查看设备相关代码 #79

Merged
hnu202326010106 merged 1 commits from wanglei_branch into develop 1 month ago

@ -2,6 +2,8 @@ package com.campus.water.controller.web;
import com.campus.water.entity.Device;
import com.campus.water.service.DeviceService;
import com.campus.water.entity.Repairman;
import com.campus.water.mapper.RepairmanRepository;
import com.campus.water.util.ResultVO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
@ -9,6 +11,9 @@ import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.security.core.Authentication;
import org.springframework.security.access.prepost.PreAuthorize;
import java.util.List; // 新增List的导入语句
@RestController
@ -18,7 +23,7 @@ import java.util.List; // 新增List的导入语句
public class DeviceController {
private final DeviceService deviceService;
private final RepairmanRepository repairmanRepository;
/**
*
*/
@ -74,4 +79,39 @@ public class DeviceController {
List<Device> suppliers = deviceService.getSuppliersByMaker(makerId);
return ResponseEntity.ok(ResultVO.success(suppliers));
}
/**
*
*/
@GetMapping("/repairman/area-devices-by-type")
@PreAuthorize("hasRole('REPAIRMAN')") // 仅维修人员角色可访问
@Operation(summary = "维修人员查询辖区设备(按类型)", description = "维修人员查看本辖区内指定类型的设备列表")
public ResponseEntity<ResultVO<List<Device>>> getAreaDevicesByTypeForRepairman(
@RequestParam String deviceType, // 必选参数设备类型water_maker/water_supply
Authentication authentication) {
try {
// 1. 获取当前登录维修人员ID从Spring Security上下文
String repairmanId = authentication.getName();
// 2. 查询维修人员所属区域ID
Repairman repairman = repairmanRepository.findById(repairmanId)
.orElseThrow(() -> new RuntimeException("维修人员信息不存在"));
String areaId = repairman.getAreaId();
if (areaId == null || areaId.isEmpty()) {
return ResponseEntity.ok(ResultVO.error(400, "维修人员未分配辖区"));
}
// 3. 转换设备类型参数为枚举
Device.DeviceType type = Device.DeviceType.valueOf(deviceType);
// 4. 调用现有Service方法查询仅传areaId和deviceTypestatus传null
List<Device> devices = deviceService.queryDevices(areaId, type, null);
return ResponseEntity.ok(ResultVO.success(devices));
} catch (IllegalArgumentException e) {
return ResponseEntity.ok(ResultVO.error(400, "无效的设备类型: " + deviceType));
} catch (Exception e) {
return ResponseEntity.ok(ResultVO.error(500, "查询设备失败: " + e.getMessage()));
}
}
}
Loading…
Cancel
Save