refactor(ops): 巡检接口重构 — 位置校验前移、列表/详情分离、表单聚合
接口变更: - 删除 POST /verify-location,位置校验改为前端本地蓝牙信标匹配 - 新增 GET /record/get 巡检记录详情(含明细项、照片) - GET /list-by-area 升级为返回完整巡检表单(区域+检查项+信标配置) - GET /record/page 返回类型改为 VO,新增区域全路径名称和巡检员姓名 - 提交和表单接口增加 inspector 角色校验 代码质量(Code Review 修复): - 提取 buildAreaFullName 至 OpsBusAreaMapper 消除两个 Service 的重复 - 新增 buildAreaFullNameMap 批量方法,修复分页场景 N+1 查询 - getRecordDetail 中 adminUserApi 改用 getUserMap + try-catch 降级 - InspectionTemplateServiceImpl 去掉 ObjectMapper 依赖,直接 Map 取值 - RSSI 阈值取最宽松值逻辑添加语义注释 - 巡检错误码从 1-020-003 迁移至 1-020-004,修复与安保模块的码段冲突 - InspectionRecordDetailRespVO.photos 使用 @OssPresignUrl 自动预签名 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2,11 +2,8 @@ package com.viewsh.module.ops.controller.admin.inspection;
|
||||
|
||||
import com.viewsh.framework.common.pojo.CommonResult;
|
||||
import com.viewsh.framework.common.pojo.PageResult;
|
||||
import com.viewsh.framework.common.util.object.BeanUtils;
|
||||
import com.viewsh.framework.security.core.util.SecurityFrameworkUtils;
|
||||
import com.viewsh.module.ops.environment.controller.admin.inspection.vo.*;
|
||||
import com.viewsh.module.ops.environment.dal.dataobject.inspection.OpsInspectionRecordDO;
|
||||
import com.viewsh.module.ops.environment.service.inspection.InspectionLocationService;
|
||||
import com.viewsh.module.ops.environment.service.inspection.InspectionRecordService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
@@ -17,8 +14,6 @@ import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static com.viewsh.framework.common.pojo.CommonResult.success;
|
||||
|
||||
/**
|
||||
@@ -30,36 +25,30 @@ import static com.viewsh.framework.common.pojo.CommonResult.success;
|
||||
@Validated
|
||||
public class InspectionController {
|
||||
|
||||
@Resource
|
||||
private InspectionLocationService inspectionLocationService;
|
||||
|
||||
@Resource
|
||||
private InspectionRecordService inspectionRecordService;
|
||||
|
||||
@PostMapping("/verify-location")
|
||||
@Operation(summary = "蓝牙位置校验")
|
||||
@Parameter(name = "areaId", description = "区域ID", required = true)
|
||||
@PreAuthorize("@ss.hasPermission('ops:inspection:create')")
|
||||
public CommonResult<LocationVerifyResultVO> verifyLocation(
|
||||
@RequestParam("areaId") Long areaId,
|
||||
@Valid @RequestBody List<DetectedBeaconVO> detectedBeacons) {
|
||||
return success(inspectionLocationService.verifyLocation(areaId, detectedBeacons));
|
||||
}
|
||||
|
||||
@PostMapping("/submit")
|
||||
@Operation(summary = "提交巡检结果")
|
||||
@PreAuthorize("@ss.hasPermission('ops:inspection:create')")
|
||||
@PreAuthorize("@ss.hasPermission('ops:inspection:create') and @ss.hasRole('inspector')")
|
||||
public CommonResult<Long> submitInspection(@Valid @RequestBody InspectionSubmitReqVO submitReqVO) {
|
||||
Long inspectorId = SecurityFrameworkUtils.getLoginUserId();
|
||||
return success(inspectionRecordService.submitInspection(submitReqVO, inspectorId));
|
||||
}
|
||||
|
||||
@GetMapping("/record/get")
|
||||
@Operation(summary = "获得巡检记录详情")
|
||||
@Parameter(name = "id", description = "巡检记录ID", required = true)
|
||||
@PreAuthorize("@ss.hasPermission('ops:inspection:query')")
|
||||
public CommonResult<InspectionRecordDetailRespVO> getRecord(@RequestParam("id") Long id) {
|
||||
return success(inspectionRecordService.getRecordDetail(id));
|
||||
}
|
||||
|
||||
@GetMapping("/record/page")
|
||||
@Operation(summary = "获得巡检记录分页")
|
||||
@PreAuthorize("@ss.hasPermission('ops:inspection:query')")
|
||||
public CommonResult<PageResult<InspectionRecordRespVO>> getRecordPage(@Valid InspectionRecordPageReqVO pageReqVO) {
|
||||
PageResult<OpsInspectionRecordDO> pageResult = inspectionRecordService.getRecordPage(pageReqVO);
|
||||
return success(BeanUtils.toBean(pageResult, InspectionRecordRespVO.class));
|
||||
return success(inspectionRecordService.getRecordPage(pageReqVO));
|
||||
}
|
||||
|
||||
@GetMapping("/record/stats")
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.viewsh.module.ops.controller.admin.inspection;
|
||||
import com.viewsh.framework.common.pojo.CommonResult;
|
||||
import com.viewsh.framework.common.pojo.PageResult;
|
||||
import com.viewsh.framework.common.util.object.BeanUtils;
|
||||
import com.viewsh.module.ops.environment.controller.admin.inspection.vo.InspectionFormRespVO;
|
||||
import com.viewsh.module.ops.environment.controller.admin.inspection.vo.InspectionTemplatePageReqVO;
|
||||
import com.viewsh.module.ops.environment.controller.admin.inspection.vo.InspectionTemplateRespVO;
|
||||
import com.viewsh.module.ops.environment.controller.admin.inspection.vo.InspectionTemplateSaveReqVO;
|
||||
@@ -75,12 +76,11 @@ public class InspectionTemplateController {
|
||||
}
|
||||
|
||||
@GetMapping("/list-by-area")
|
||||
@Operation(summary = "按区域获取巡检检查项列表(动态表单)")
|
||||
@Operation(summary = "按区域获取巡检表单(扫码后调用)")
|
||||
@Parameter(name = "areaId", description = "区域ID", required = true)
|
||||
@PreAuthorize("@ss.hasPermission('ops:inspection-template:query')")
|
||||
public CommonResult<List<InspectionTemplateRespVO>> getTemplateListByArea(@RequestParam("areaId") Long areaId) {
|
||||
List<OpsInspectionTemplateDO> list = inspectionTemplateService.getTemplateListByAreaId(areaId);
|
||||
return success(BeanUtils.toBean(list, InspectionTemplateRespVO.class));
|
||||
@PreAuthorize("@ss.hasPermission('ops:inspection-template:query') and @ss.hasRole('inspector')")
|
||||
public CommonResult<InspectionFormRespVO> getInspectionFormByArea(@RequestParam("areaId") Long areaId) {
|
||||
return success(inspectionTemplateService.getInspectionFormByAreaId(areaId));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -5,12 +5,14 @@ import com.viewsh.module.iot.api.device.IotDeviceControlApi;
|
||||
import com.viewsh.module.iot.api.device.IotDeviceQueryApi;
|
||||
import com.viewsh.module.iot.api.device.IotDeviceStatusQueryApi;
|
||||
import com.viewsh.module.system.api.notify.NotifyMessageSendApi;
|
||||
import com.viewsh.module.system.api.user.AdminUserApi;
|
||||
import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration(value = "opsRpcConfiguration", proxyBeanMethods = false)
|
||||
@EnableFeignClients(clients = {
|
||||
NotifyMessageSendApi.class,
|
||||
AdminUserApi.class,
|
||||
IotDeviceControlApi.class,
|
||||
IotDeviceQueryApi.class,
|
||||
IotDeviceStatusQueryApi.class,
|
||||
|
||||
Reference in New Issue
Block a user