package com.ruoyi.safe.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.domain.R; import com.ruoyi.safe.pojo.SafeLineInspection; import com.ruoyi.safe.pojo.SafeLineInspectionHazard; import com.ruoyi.safe.pojo.SafeLineInspectionRecord; import com.ruoyi.safe.service.SafeLineInspectionHazardService; import com.ruoyi.safe.service.SafeLineInspectionRecordService; import com.ruoyi.safe.service.SafeLineInspectionService; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; import java.time.LocalDateTime; import java.util.List; /** *

* 安全生产--线路巡检任务 前端控制器 *

* * @author 芯导软件(江苏)有限公司 * @since 2026-06-29 */ @RestController @RequestMapping("/safeLineInspection") @AllArgsConstructor @Tag(name = "安全生产--线路巡检任务") public class SafeLineInspectionController { private SafeLineInspectionService safeLineInspectionService; private SafeLineInspectionHazardService safeLineInspectionHazardService; private SafeLineInspectionRecordService safeLineInspectionRecordService; @GetMapping("/page") @Operation(summary = "分页查询") public R page(Page page, SafeLineInspection safeLineInspection) { return R.ok(safeLineInspectionService.pageSafeLineInspection(page, safeLineInspection)); } @GetMapping("/{id}") @Operation(summary = "根据ID查询") public R getById(@PathVariable Integer id) { return R.ok(safeLineInspectionService.getById(id)); } @Operation(summary = "新增线路巡检任务") @Log(title = "线路巡检", businessType = BusinessType.INSERT) @PostMapping() public R add(@RequestBody SafeLineInspection safeLineInspection) { if (isInspectionCodeExists(safeLineInspection.getInspectionCode(), null)) { return R.fail("巡检编号「" + safeLineInspection.getInspectionCode() + "」已存在"); } safeLineInspection.setStatus("待巡检"); Long currentUserId = SecurityUtils.getUserId(); safeLineInspection.setAssignUserId(currentUserId.intValue()); if (safeLineInspection.getInspectorId() != null && safeLineInspection.getInspectorId().isEmpty()) { safeLineInspection.setInspectorId(null); } return R.ok(safeLineInspectionService.save(safeLineInspection)); } @Operation(summary = "修改线路巡检任务") @Log(title = "线路巡检", businessType = BusinessType.UPDATE) @PutMapping() public R update(@RequestBody SafeLineInspection safeLineInspection) { if (isInspectionCodeExists(safeLineInspection.getInspectionCode(), safeLineInspection.getId())) { return R.fail("巡检编号「" + safeLineInspection.getInspectionCode() + "」已存在"); } if (safeLineInspection.getInspectorId() != null && safeLineInspection.getInspectorId().isEmpty()) { safeLineInspection.setInspectorId(null); } return R.ok(safeLineInspectionService.updateById(safeLineInspection)); } private boolean isInspectionCodeExists(String code, Integer excludeId) { if (code == null || code.isEmpty()) return false; return safeLineInspectionService.lambdaQuery() .eq(SafeLineInspection::getInspectionCode, code) .ne(excludeId != null, SafeLineInspection::getId, excludeId) .count() > 0; } @Operation(summary = "完成巡检") @Log(title = "线路巡检", businessType = BusinessType.UPDATE) @PutMapping("/complete/{id}") public R complete(@PathVariable Integer id) { SafeLineInspection inspection = safeLineInspectionService.getById(id); if (inspection == null) { return R.fail("巡检任务不存在"); } // 校验是否有未整改的隐患 List hazards = safeLineInspectionHazardService.listByInspectionId(id); boolean hasUnrectified = hazards.stream() .anyMatch(h -> !"已整改".equals(h.getStatus())); if (hasUnrectified) { return R.fail("存在未整改的隐患,请先完成隐患整改"); } Long currentUserId = SecurityUtils.getUserId(); inspection.setStatus("已完成"); inspection.setUpdateTime(LocalDateTime.now()); inspection.setUpdateUser(currentUserId.intValue()); return R.ok(safeLineInspectionService.updateById(inspection)); } @Operation(summary = "删除线路巡检任务") @Log(title = "线路巡检", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public R delSafeLineInspection(@PathVariable List ids) { for (Integer id : ids) { long recordCount = safeLineInspectionRecordService.lambdaQuery() .eq(SafeLineInspectionRecord::getInspectionId, id).count(); long hazardCount = safeLineInspectionHazardService.lambdaQuery() .eq(SafeLineInspectionHazard::getInspectionId, id).count(); if (recordCount > 0 || hazardCount > 0) { return R.fail("该巡检任务存在关联的巡检记录或隐患,无法删除"); } } return R.ok(safeLineInspectionService.removeBatchByIds(ids)); } }