From d4a3ddfeac6aea951c51bee91d9cf4eb57c4f4c4 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期二, 30 六月 2026 14:31:07 +0800
Subject: [PATCH] feat(safe): 完善安全巡检系统功能
---
src/main/java/com/ruoyi/safe/controller/SafeLineInspectionController.java | 48 ++++++
src/main/java/com/ruoyi/safe/controller/SafeLineInspectionRecordController.java | 39 +++++
src/main/java/com/ruoyi/safe/service/impl/SafeLineInspectionHazardServiceImpl.java | 25 +++
src/main/java/com/ruoyi/safe/controller/SafeFacilityInspectionController.java | 29 ++++
src/main/java/com/ruoyi/safe/controller/SafeLineInspectionHazardController.java | 2
src/main/java/com/ruoyi/safe/controller/SafeFacilityLedgerController.java | 30 ++++
src/main/java/com/ruoyi/safe/controller/SafeFacilityRectificationController.java | 2
src/main/java/com/ruoyi/safe/service/impl/SafeLineInspectionRecordServiceImpl.java | 48 ------
src/main/java/com/ruoyi/safe/service/impl/SafeFacilityRectificationServiceImpl.java | 98 +++++++++++++
src/main/java/com/ruoyi/safe/service/impl/SafeFacilityInspectionServiceImpl.java | 80 +++++++++++
10 files changed, 343 insertions(+), 58 deletions(-)
diff --git a/src/main/java/com/ruoyi/safe/controller/SafeFacilityInspectionController.java b/src/main/java/com/ruoyi/safe/controller/SafeFacilityInspectionController.java
index cf5627e..67e86c8 100644
--- a/src/main/java/com/ruoyi/safe/controller/SafeFacilityInspectionController.java
+++ b/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));
}
}
diff --git a/src/main/java/com/ruoyi/safe/controller/SafeFacilityLedgerController.java b/src/main/java/com/ruoyi/safe/controller/SafeFacilityLedgerController.java
index 5b59298..a17f0a3 100644
--- a/src/main/java/com/ruoyi/safe/controller/SafeFacilityLedgerController.java
+++ b/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));
}
}
diff --git a/src/main/java/com/ruoyi/safe/controller/SafeFacilityRectificationController.java b/src/main/java/com/ruoyi/safe/controller/SafeFacilityRectificationController.java
index 784204d..683ba88 100644
--- a/src/main/java/com/ruoyi/safe/controller/SafeFacilityRectificationController.java
+++ b/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));
}
}
diff --git a/src/main/java/com/ruoyi/safe/controller/SafeLineInspectionController.java b/src/main/java/com/ruoyi/safe/controller/SafeLineInspectionController.java
index ac4ac33..b5a9f5d 100644
--- a/src/main/java/com/ruoyi/safe/controller/SafeLineInspectionController.java
+++ b/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("瀛樺湪鏈暣鏀圭殑闅愭偅锛岃鍏堝畬鎴愰殣鎮f暣鏀�");
}
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("璇ュ贰妫�浠诲姟瀛樺湪鍏宠仈鐨勫贰妫�璁板綍鎴栭殣鎮o紝鏃犳硶鍒犻櫎");
+ }
+ }
return R.ok(safeLineInspectionService.removeBatchByIds(ids));
}
}
diff --git a/src/main/java/com/ruoyi/safe/controller/SafeLineInspectionHazardController.java b/src/main/java/com/ruoyi/safe/controller/SafeLineInspectionHazardController.java
index 3a88df8..bdf0732 100644
--- a/src/main/java/com/ruoyi/safe/controller/SafeLineInspectionHazardController.java
+++ b/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));
}
}
diff --git a/src/main/java/com/ruoyi/safe/controller/SafeLineInspectionRecordController.java b/src/main/java/com/ruoyi/safe/controller/SafeLineInspectionRecordController.java
index 0a1b4ad..b2e25f2 100644
--- a/src/main/java/com/ruoyi/safe/controller/SafeLineInspectionRecordController.java
+++ b/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));
}
}
diff --git a/src/main/java/com/ruoyi/safe/service/impl/SafeFacilityInspectionServiceImpl.java b/src/main/java/com/ruoyi/safe/service/impl/SafeFacilityInspectionServiceImpl.java
index e11b3f9..f3f83f7 100644
--- a/src/main/java/com/ruoyi/safe/service/impl/SafeFacilityInspectionServiceImpl.java
+++ b/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;
+ }
+
+ // 鏀堕泦鎵�鏈夎鏂絀D
+ List<Integer> facilityIds = records.stream()
+ .map(SafeFacilityInspection::getFacilityId)
+ .filter(id -> id != null)
+ .distinct()
+ .collect(Collectors.toList());
+
+ // 鏀堕泦鎵�鏈夊贰妫�浜篒D
+ 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(), "鏈煡鐢ㄦ埛"));
+ }
+ }
}
}
diff --git a/src/main/java/com/ruoyi/safe/service/impl/SafeFacilityRectificationServiceImpl.java b/src/main/java/com/ruoyi/safe/service/impl/SafeFacilityRectificationServiceImpl.java
index 82bead8..85df9ee 100644
--- a/src/main/java/com/ruoyi/safe/service/impl/SafeFacilityRectificationServiceImpl.java
+++ b/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());
+
+ // 鏀堕泦鎵�鏈夌敤鎴稩D锛堟暣鏀硅矗浠讳汉 + 楠屾敹浜猴級
+ 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);
}
}
diff --git a/src/main/java/com/ruoyi/safe/service/impl/SafeLineInspectionHazardServiceImpl.java b/src/main/java/com/ruoyi/safe/service/impl/SafeLineInspectionHazardServiceImpl.java
index 733043d..3f2e43b 100644
--- a/src/main/java/com/ruoyi/safe/service/impl/SafeLineInspectionHazardServiceImpl.java
+++ b/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);
+ }
}
diff --git a/src/main/java/com/ruoyi/safe/service/impl/SafeLineInspectionRecordServiceImpl.java b/src/main/java/com/ruoyi/safe/service/impl/SafeLineInspectionRecordServiceImpl.java
index 5032ec7..89da3f0 100644
--- a/src/main/java/com/ruoyi/safe/service/impl/SafeLineInspectionRecordServiceImpl.java
+++ b/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);
- }
}
}
--
Gitblit v1.9.3