src/main/java/com/ruoyi/safe/controller/SafeFacilityInspectionController.java
@@ -1,11 +1,14 @@ 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.SafeFacilityInspection; import com.ruoyi.safe.pojo.SafeFacilityRectification; import com.ruoyi.safe.service.SafeFacilityInspectionService; import com.ruoyi.safe.service.SafeFacilityRectificationService; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import lombok.AllArgsConstructor; @@ -28,6 +31,7 @@ public class SafeFacilityInspectionController { private SafeFacilityInspectionService safeFacilityInspectionService; private SafeFacilityRectificationService safeFacilityRectificationService; @GetMapping("/page") @Operation(summary = "分页查询") @@ -45,7 +49,23 @@ @Log(title = "安全设施巡检", businessType = BusinessType.INSERT) @PostMapping() public R add(@RequestBody SafeFacilityInspection safeFacilityInspection) { if (isInspectionCodeExists(safeFacilityInspection.getInspectionCode(), null)) { return R.fail("巡检编号「" + safeFacilityInspection.getInspectionCode() + "」已存在"); } if (safeFacilityInspection.getInspectorId() == null) { Long currentUserId = SecurityUtils.getUserId(); safeFacilityInspection.setInspectorId(currentUserId.intValue()); } safeFacilityInspection.setStatus("待巡检"); return R.ok(safeFacilityInspectionService.save(safeFacilityInspection)); } private boolean isInspectionCodeExists(String code, Integer excludeId) { if (code == null || code.isEmpty()) return false; return safeFacilityInspectionService.lambdaQuery() .eq(SafeFacilityInspection::getInspectionCode, code) .ne(excludeId != null, SafeFacilityInspection::getId, excludeId) .count() > 0; } @Operation(summary = "修改安全设施巡检") @@ -58,7 +78,14 @@ @Operation(summary = "删除安全设施巡检") @Log(title = "安全设施巡检", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public R delSafeFacilityInspection(@RequestBody List<Integer> ids) { public R delSafeFacilityInspection(@PathVariable List<Integer> ids) { for (Integer id : ids) { long count = safeFacilityRectificationService.lambdaQuery() .eq(SafeFacilityRectification::getInspectionId, id).count(); if (count > 0) { return R.fail("该巡检记录存在关联的整改记录,无法删除"); } } return R.ok(safeFacilityInspectionService.removeBatchByIds(ids)); } } src/main/java/com/ruoyi/safe/controller/SafeFacilityLedgerController.java
@@ -4,7 +4,9 @@ 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.SafeFacilityInspection; import com.ruoyi.safe.pojo.SafeFacilityLedger; import com.ruoyi.safe.service.SafeFacilityInspectionService; import com.ruoyi.safe.service.SafeFacilityLedgerService; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; @@ -28,6 +30,7 @@ public class SafeFacilityLedgerController { private SafeFacilityLedgerService safeFacilityLedgerService; private SafeFacilityInspectionService safeFacilityInspectionService; @GetMapping("/page") @Operation(summary = "分页查询") @@ -45,6 +48,9 @@ @Log(title = "安全设施台账", businessType = BusinessType.INSERT) @PostMapping() public R add(@RequestBody SafeFacilityLedger safeFacilityLedger) { if (isCodeExists(safeFacilityLedger.getFacilityCode(), null)) { return R.fail("设施编号「" + safeFacilityLedger.getFacilityCode() + "」已存在"); } return R.ok(safeFacilityLedgerService.save(safeFacilityLedger)); } @@ -52,13 +58,35 @@ @Log(title = "安全设施台账", businessType = BusinessType.UPDATE) @PutMapping() public R update(@RequestBody SafeFacilityLedger safeFacilityLedger) { if (isCodeExists(safeFacilityLedger.getFacilityCode(), safeFacilityLedger.getId())) { return R.fail("设施编号「" + safeFacilityLedger.getFacilityCode() + "」已存在"); } return R.ok(safeFacilityLedgerService.updateById(safeFacilityLedger)); } private boolean isCodeExists(String code, Integer excludeId) { if (code == null || code.isEmpty()) return false; return safeFacilityLedgerService.lambdaQuery() .eq(SafeFacilityLedger::getFacilityCode, code) .ne(excludeId != null, SafeFacilityLedger::getId, excludeId) .count() > 0; } @Operation(summary = "删除安全设施台账") @Log(title = "安全设施台账", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public R delSafeFacilityLedger(@RequestBody List<Integer> ids) { public R delSafeFacilityLedger(@PathVariable List<Integer> ids) { // 校验设施是否有关联的巡检记录 for (Integer id : ids) { long count = safeFacilityInspectionService.lambdaQuery() .eq(com.ruoyi.safe.pojo.SafeFacilityInspection::getFacilityId, id) .count(); if (count > 0) { SafeFacilityLedger ledger = safeFacilityLedgerService.getById(id); String name = ledger != null ? ledger.getFacilityName() : String.valueOf(id); return R.fail("设施「" + name + "」存在关联的巡检记录,无法删除"); } } return R.ok(safeFacilityLedgerService.removeBatchByIds(ids)); } } src/main/java/com/ruoyi/safe/controller/SafeFacilityRectificationController.java
@@ -58,7 +58,7 @@ @Operation(summary = "删除安全设施整改") @Log(title = "安全设施整改", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public R delSafeFacilityRectification(@RequestBody List<Integer> ids) { public R delSafeFacilityRectification(@PathVariable List<Integer> ids) { return R.ok(safeFacilityRectificationService.removeBatchByIds(ids)); } } src/main/java/com/ruoyi/safe/controller/SafeLineInspectionController.java
@@ -6,6 +6,10 @@ 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; @@ -30,6 +34,8 @@ public class SafeLineInspectionController { private SafeLineInspectionService safeLineInspectionService; private SafeLineInspectionHazardService safeLineInspectionHazardService; private SafeLineInspectionRecordService safeLineInspectionRecordService; @GetMapping("/page") @Operation(summary = "分页查询") @@ -47,8 +53,15 @@ @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)); } @@ -56,7 +69,21 @@ @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 = "完成巡检") @@ -66,6 +93,14 @@ SafeLineInspection inspection = safeLineInspectionService.getById(id); if (inspection == null) { return R.fail("巡检任务不存在"); } // 校验是否有未整改的隐患 List<SafeLineInspectionHazard> hazards = safeLineInspectionHazardService.listByInspectionId(id); boolean hasUnrectified = hazards.stream() .anyMatch(h -> !"已整改".equals(h.getStatus())); if (hasUnrectified) { return R.fail("存在未整改的隐患,请先完成隐患整改"); } Long currentUserId = SecurityUtils.getUserId(); @@ -79,7 +114,16 @@ @Operation(summary = "删除线路巡检任务") @Log(title = "线路巡检", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public R delSafeLineInspection(@RequestBody List<Integer> ids) { public R delSafeLineInspection(@PathVariable List<Integer> 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)); } } src/main/java/com/ruoyi/safe/controller/SafeLineInspectionHazardController.java
@@ -64,7 +64,7 @@ @Operation(summary = "删除线路巡检隐患") @Log(title = "线路巡检隐患", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public R delSafeLineInspectionHazard(@RequestBody List<Integer> ids) { public R delSafeLineInspectionHazard(@PathVariable List<Integer> ids) { return R.ok(safeLineInspectionHazardService.removeBatchByIds(ids)); } } src/main/java/com/ruoyi/safe/controller/SafeLineInspectionRecordController.java
@@ -1,15 +1,20 @@ package com.ruoyi.safe.controller; 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.SafeLineInspectionRecord; 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.Arrays; import java.util.List; /** @@ -27,6 +32,7 @@ public class SafeLineInspectionRecordController { private SafeLineInspectionRecordService safeLineInspectionRecordService; private SafeLineInspectionService safeLineInspectionService; @GetMapping("/list/{inspectionId}") @Operation(summary = "根据巡检任务ID查询记录") @@ -38,7 +44,36 @@ @Log(title = "线路巡检记录", businessType = BusinessType.INSERT) @PostMapping() public R add(@RequestBody SafeLineInspectionRecord safeLineInspectionRecord) { return R.ok(safeLineInspectionRecordService.save(safeLineInspectionRecord)); boolean saved = safeLineInspectionRecordService.save(safeLineInspectionRecord); if (saved && safeLineInspectionRecord.getInspectionId() != null) { updateInspectionStatus(safeLineInspectionRecord.getInspectionId()); } return R.ok(saved); } private void updateInspectionStatus(Integer inspectionId) { SafeLineInspection inspection = safeLineInspectionService.getById(inspectionId); if (inspection != null && "待巡检".equals(inspection.getStatus())) { Long currentUserId = SecurityUtils.getUserId(); String currentUserIdStr = String.valueOf(currentUserId); String inspectorId = inspection.getInspectorId(); if (inspectorId == null || inspectorId.isEmpty()) { inspectorId = currentUserIdStr; } else { String[] ids = inspectorId.split(","); boolean exists = Arrays.stream(ids).anyMatch(id -> id.trim().equals(currentUserIdStr)); if (!exists) { inspectorId = inspectorId + "," + currentUserIdStr; } } inspection.setStatus("巡检中"); inspection.setInspectorId(inspectorId); inspection.setUpdateTime(LocalDateTime.now()); inspection.setUpdateUser(currentUserId.intValue()); safeLineInspectionService.updateById(inspection); } } @Operation(summary = "批量新增线路巡检记录") @@ -58,7 +93,7 @@ @Operation(summary = "删除线路巡检记录") @Log(title = "线路巡检记录", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public R delSafeLineInspectionRecord(@RequestBody List<Integer> ids) { public R delSafeLineInspectionRecord(@PathVariable List<Integer> ids) { return R.ok(safeLineInspectionRecordService.removeBatchByIds(ids)); } } src/main/java/com/ruoyi/safe/service/impl/SafeFacilityInspectionServiceImpl.java
@@ -2,11 +2,22 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.project.system.domain.SysUser; import com.ruoyi.project.system.mapper.SysUserMapper; import com.ruoyi.safe.pojo.SafeFacilityInspection; import com.ruoyi.safe.pojo.SafeFacilityLedger; import com.ruoyi.safe.mapper.SafeFacilityInspectionMapper; import com.ruoyi.safe.service.SafeFacilityInspectionService; import com.ruoyi.safe.service.SafeFacilityLedgerService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.Serializable; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * <p> @@ -19,13 +30,80 @@ @Service public class SafeFacilityInspectionServiceImpl extends ServiceImpl<SafeFacilityInspectionMapper, SafeFacilityInspection> implements SafeFacilityInspectionService { @Autowired private SafeFacilityLedgerService safeFacilityLedgerService; @Autowired private SysUserMapper sysUserMapper; @Override public SafeFacilityInspection getById(Serializable id) { SafeFacilityInspection record = super.getById(id); if (record != null) { fillExtraInfo(Collections.singletonList(record)); } return record; } @Override public IPage<SafeFacilityInspection> pageSafeFacilityInspection(Page page, SafeFacilityInspection safeFacilityInspection) { return this.lambdaQuery() IPage<SafeFacilityInspection> result = this.lambdaQuery() .like(safeFacilityInspection.getInspectionCode() != null, SafeFacilityInspection::getInspectionCode, safeFacilityInspection.getInspectionCode()) .eq(safeFacilityInspection.getFacilityId() != null, SafeFacilityInspection::getFacilityId, safeFacilityInspection.getFacilityId()) .eq(safeFacilityInspection.getStatus() != null, SafeFacilityInspection::getStatus, safeFacilityInspection.getStatus()) .orderByDesc(SafeFacilityInspection::getCreateTime) .page(page); fillExtraInfo(result.getRecords()); return result; } private void fillExtraInfo(List<SafeFacilityInspection> records) { if (records == null || records.isEmpty()) { return; } // 收集所有设施ID List<Integer> facilityIds = records.stream() .map(SafeFacilityInspection::getFacilityId) .filter(id -> id != null) .distinct() .collect(Collectors.toList()); // 收集所有巡检人ID List<Long> inspectorIds = records.stream() .map(SafeFacilityInspection::getInspectorId) .filter(id -> id != null) .map(Integer::longValue) .distinct() .collect(Collectors.toList()); // 批量查询设施信息 Map<Integer, SafeFacilityLedger> facilityMap = Map.of(); if (!facilityIds.isEmpty()) { facilityMap = safeFacilityLedgerService.listByIds(facilityIds).stream() .collect(Collectors.toMap(SafeFacilityLedger::getId, f -> f, (v1, v2) -> v1)); } // 批量查询巡检人信息 Map<Long, String> userMap = Map.of(); if (!inspectorIds.isEmpty()) { List<SysUser> users = sysUserMapper.selectUserByIds(inspectorIds); userMap = users.stream() .collect(Collectors.toMap(SysUser::getUserId, SysUser::getNickName, (v1, v2) -> v1)); } // 填充字段 for (SafeFacilityInspection record : records) { if (record.getFacilityId() != null) { SafeFacilityLedger facility = facilityMap.get(record.getFacilityId()); if (facility != null) { record.setFacilityName(facility.getFacilityName()); record.setFacilityCode(facility.getFacilityCode()); } } if (record.getInspectorId() != null) { record.setInspectorName(userMap.getOrDefault(record.getInspectorId().longValue(), "未知用户")); } } } } src/main/java/com/ruoyi/safe/service/impl/SafeFacilityRectificationServiceImpl.java
@@ -2,11 +2,22 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.project.system.domain.SysUser; import com.ruoyi.project.system.mapper.SysUserMapper; import com.ruoyi.safe.pojo.SafeFacilityLedger; import com.ruoyi.safe.pojo.SafeFacilityRectification; import com.ruoyi.safe.mapper.SafeFacilityRectificationMapper; import com.ruoyi.safe.service.SafeFacilityLedgerService; import com.ruoyi.safe.service.SafeFacilityRectificationService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.Serializable; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; /** * <p> @@ -19,13 +30,98 @@ @Service public class SafeFacilityRectificationServiceImpl extends ServiceImpl<SafeFacilityRectificationMapper, SafeFacilityRectification> implements SafeFacilityRectificationService { @Autowired private SafeFacilityLedgerService safeFacilityLedgerService; @Autowired private SysUserMapper sysUserMapper; @Override public SafeFacilityRectification getById(Serializable id) { SafeFacilityRectification record = super.getById(id); if (record != null) { fillExtraInfo(Collections.singletonList(record)); } return record; } @Override public IPage<SafeFacilityRectification> pageSafeFacilityRectification(Page page, SafeFacilityRectification safeFacilityRectification) { return this.lambdaQuery() IPage<SafeFacilityRectification> result = this.lambdaQuery() .eq(safeFacilityRectification.getInspectionId() != null, SafeFacilityRectification::getInspectionId, safeFacilityRectification.getInspectionId()) .eq(safeFacilityRectification.getFacilityId() != null, SafeFacilityRectification::getFacilityId, safeFacilityRectification.getFacilityId()) .eq(safeFacilityRectification.getStatus() != null, SafeFacilityRectification::getStatus, safeFacilityRectification.getStatus()) .orderByDesc(SafeFacilityRectification::getCreateTime) .page(page); fillExtraInfo(result.getRecords()); return result; } private void fillExtraInfo(List<SafeFacilityRectification> records) { if (records == null || records.isEmpty()) { return; } // 收集设施ID List<Integer> facilityIds = records.stream() .map(SafeFacilityRectification::getFacilityId) .filter(Objects::nonNull) .distinct() .collect(Collectors.toList()); // 收集所有用户ID(整改责任人 + 验收人) Set<Long> userIds = new HashSet<>(); records.stream().map(SafeFacilityRectification::getRectifyUserId).filter(Objects::nonNull).forEach(id -> userIds.add(id.longValue())); records.stream().map(SafeFacilityRectification::getVerifyUserId).filter(Objects::nonNull).forEach(id -> userIds.add(id.longValue())); // 批量查询设施信息 Map<Integer, SafeFacilityLedger> facilityMap = facilityIds.isEmpty() ? Collections.emptyMap() : safeFacilityLedgerService.listByIds(facilityIds).stream() .collect(Collectors.toMap(SafeFacilityLedger::getId, f -> f, (v1, v2) -> v1)); // 批量查询用户信息 Map<Long, String> userMap = userIds.isEmpty() ? Collections.emptyMap() : sysUserMapper.selectUserByIds(new ArrayList<>(userIds)).stream() .collect(Collectors.toMap(SysUser::getUserId, SysUser::getNickName, (v1, v2) -> v1)); for (SafeFacilityRectification record : records) { if (record.getFacilityId() != null) { SafeFacilityLedger facility = facilityMap.get(record.getFacilityId()); if (facility != null) { record.setFacilityName(facility.getFacilityName()); } } if (record.getRectifyUserId() != null) { record.setRectifyUserName(userMap.getOrDefault(record.getRectifyUserId().longValue(), "未知用户")); } if (record.getVerifyUserId() != null) { record.setVerifyUserName(userMap.getOrDefault(record.getVerifyUserId().longValue(), "未知用户")); } } } @Override public boolean save(SafeFacilityRectification entity) { Long currentUserId = SecurityUtils.getUserId(); if (entity.getRectifyUserId() == null) { entity.setRectifyUserId(currentUserId.intValue()); } if (entity.getStatus() == null) { entity.setStatus("待整改"); } return super.save(entity); } @Override public boolean updateById(SafeFacilityRectification entity) { Long currentUserId = SecurityUtils.getUserId(); if ("已整改".equals(entity.getStatus()) && entity.getActualTime() == null) { entity.setActualTime(LocalDateTime.now()); } if ("已验收".equals(entity.getStatus())) { entity.setVerifyUserId(currentUserId.intValue()); entity.setVerifyTime(LocalDateTime.now()); } return super.updateById(entity); } } src/main/java/com/ruoyi/safe/service/impl/SafeLineInspectionHazardServiceImpl.java
@@ -2,12 +2,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.safe.pojo.SafeLineInspectionHazard; import com.ruoyi.safe.mapper.SafeLineInspectionHazardMapper; import com.ruoyi.safe.service.SafeLineInspectionHazardService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.util.List; /** @@ -38,4 +40,27 @@ .orderByDesc(SafeLineInspectionHazard::getCreateTime) .list(); } @Override public boolean save(SafeLineInspectionHazard entity) { if (entity.getHazardCode() == null || entity.getHazardCode().isEmpty()) { entity.setHazardCode(generateHazardCode()); } return super.save(entity); } @Override public boolean updateById(SafeLineInspectionHazard entity) { if ("已整改".equals(entity.getStatus())) { Long currentUserId = SecurityUtils.getUserId(); entity.setRectifyUserId(currentUserId.intValue()); entity.setRectifyTime(LocalDateTime.now()); } return super.updateById(entity); } private String generateHazardCode() { long count = this.count() + 1; return "YH" + String.format("%05d", count); } } src/main/java/com/ruoyi/safe/service/impl/SafeLineInspectionRecordServiceImpl.java
@@ -1,17 +1,11 @@ package com.ruoyi.safe.service.impl; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.safe.pojo.SafeLineInspection; import com.ruoyi.safe.pojo.SafeLineInspectionRecord; import com.ruoyi.safe.mapper.SafeLineInspectionRecordMapper; import com.ruoyi.safe.service.SafeLineInspectionRecordService; import com.ruoyi.safe.service.SafeLineInspectionService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.util.List; /** @@ -25,53 +19,11 @@ @Service public class SafeLineInspectionRecordServiceImpl extends ServiceImpl<SafeLineInspectionRecordMapper, SafeLineInspectionRecord> implements SafeLineInspectionRecordService { @Autowired private SafeLineInspectionService safeLineInspectionService; @Override public List<SafeLineInspectionRecord> listByInspectionId(Integer inspectionId) { return this.lambdaQuery() .eq(SafeLineInspectionRecord::getInspectionId, inspectionId) .orderByDesc(SafeLineInspectionRecord::getCheckTime) .list(); } @Override @Transactional(rollbackFor = Exception.class) public boolean save(SafeLineInspectionRecord entity) { // 保存巡检记录 boolean result = super.save(entity); if (result && entity.getInspectionId() != null) { // 更新巡检任务状态为"巡检中",并设置巡检人为当前登录用户 updateInspectionStatus(entity.getInspectionId()); } return result; } /** * 更新巡检任务状态为"巡检中",并添加当前用户到巡检人列表 */ private void updateInspectionStatus(Integer inspectionId) { SafeLineInspection inspection = safeLineInspectionService.getById(inspectionId); if (inspection != null && "待巡检".equals(inspection.getStatus())) { Long currentUserId = SecurityUtils.getUserId(); String currentUserIdStr = String.valueOf(currentUserId); // 添加当前用户到巡检人列表(如果不存在) String inspectorId = inspection.getInspectorId(); if (inspectorId == null || inspectorId.isEmpty()) { inspectorId = currentUserIdStr; } else if (!inspectorId.contains(currentUserIdStr)) { inspectorId = inspectorId + "," + currentUserIdStr; } inspection.setStatus("巡检中"); inspection.setInspectorId(inspectorId); inspection.setUpdateTime(LocalDateTime.now()); inspection.setUpdateUser(currentUserId.intValue()); safeLineInspectionService.updateById(inspection); } } }