From cecd7580b5e629173bdb5b258f2676d16d580f72 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期四, 30 七月 2026 15:49:55 +0800
Subject: [PATCH] fix: 安全培训考核签到修改
---
src/main/java/com/ruoyi/safe/service/impl/SafeLineInspectionServiceImpl.java | 170 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 166 insertions(+), 4 deletions(-)
diff --git a/src/main/java/com/ruoyi/safe/service/impl/SafeLineInspectionServiceImpl.java b/src/main/java/com/ruoyi/safe/service/impl/SafeLineInspectionServiceImpl.java
index d86d586..0ed6055 100644
--- a/src/main/java/com/ruoyi/safe/service/impl/SafeLineInspectionServiceImpl.java
+++ b/src/main/java/com/ruoyi/safe/service/impl/SafeLineInspectionServiceImpl.java
@@ -2,15 +2,29 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.basic.enums.ApplicationTypeEnum;
+import com.ruoyi.basic.enums.RecordTypeEnum;
+import com.ruoyi.basic.utils.FileUtil;
+import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.safe.dto.SafeLineInspectionExecuteDto;
import com.ruoyi.safe.pojo.SafeLineInspection;
import com.ruoyi.safe.mapper.SafeLineInspectionMapper;
+import com.ruoyi.safe.pojo.SafeLineInspectionHazard;
+import com.ruoyi.safe.pojo.SafeLineInspectionRecord;
+import com.ruoyi.safe.pojo.SafeHidden;
+import com.ruoyi.safe.service.SafeHiddenService;
+import com.ruoyi.safe.service.SafeLineInspectionHazardService;
+import com.ruoyi.safe.service.SafeLineInspectionRecordService;
import com.ruoyi.safe.service.SafeLineInspectionService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.project.system.mapper.SysUserMapper;
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.Arrays;
import java.util.List;
import java.util.Map;
@@ -29,14 +43,24 @@
@Autowired
private SysUserMapper sysUserMapper;
+ @Autowired
+ private SafeLineInspectionRecordService safeLineInspectionRecordService;
+ @Autowired
+ private SafeLineInspectionHazardService safeLineInspectionHazardService;
+ @Autowired
+ private SafeHiddenService safeHiddenService;
+ @Autowired
+ private FileUtil fileUtil;
@Override
public IPage<SafeLineInspection> pageSafeLineInspection(Page page, SafeLineInspection safeLineInspection) {
IPage<SafeLineInspection> result = this.lambdaQuery()
- .like(safeLineInspection.getInspectionCode() != null, SafeLineInspection::getInspectionCode, safeLineInspection.getInspectionCode())
- .like(safeLineInspection.getInspectionName() != null, SafeLineInspection::getInspectionName, safeLineInspection.getInspectionName())
- .like(safeLineInspection.getLineName() != null, SafeLineInspection::getLineName, safeLineInspection.getLineName())
- .eq(safeLineInspection.getStatus() != null, SafeLineInspection::getStatus, safeLineInspection.getStatus())
+ .eq(safeLineInspection.getScheduleTaskId() != null, SafeLineInspection::getScheduleTaskId, safeLineInspection.getScheduleTaskId())
+ .like(StringUtils.isNotBlank(safeLineInspection.getInspectionCode()), SafeLineInspection::getInspectionCode, safeLineInspection.getInspectionCode())
+ .like(StringUtils.isNotBlank(safeLineInspection.getInspectionName()), SafeLineInspection::getInspectionName, safeLineInspection.getInspectionName())
+ .like(StringUtils.isNotBlank(safeLineInspection.getLineName()), SafeLineInspection::getLineName, safeLineInspection.getLineName())
+ .like(StringUtils.isNotBlank(safeLineInspection.getInspectionProject()), SafeLineInspection::getInspectionProject, safeLineInspection.getInspectionProject())
+ .eq(StringUtils.isNotBlank(safeLineInspection.getStatus()), SafeLineInspection::getStatus, safeLineInspection.getStatus())
.orderByDesc(SafeLineInspection::getCreateTime)
.page(page);
@@ -46,6 +70,144 @@
return result;
}
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public boolean executeInspection(SafeLineInspectionExecuteDto executeDto) {
+ if (executeDto == null || executeDto.getInspectionId() == null) {
+ throw new IllegalArgumentException("宸℃璁板綍涓嶈兘涓虹┖");
+ }
+ SafeLineInspection inspection = this.getById(executeDto.getInspectionId());
+ if (inspection == null) {
+ throw new IllegalArgumentException("宸℃璁板綍涓嶅瓨鍦�");
+ }
+ if ("宸插畬鎴�".equals(inspection.getStatus())) {
+ throw new IllegalArgumentException("宸℃璁板綍宸插畬鎴愶紝璇峰嬁閲嶅鎵ц");
+ }
+ if (!"姝e父".equals(executeDto.getCheckResult()) && !"寮傚父".equals(executeDto.getCheckResult())) {
+ throw new IllegalArgumentException("璇烽�夋嫨宸℃缁撴灉");
+ }
+
+ LocalDateTime checkTime = executeDto.getCheckTime() == null ? LocalDateTime.now() : executeDto.getCheckTime();
+ SafeLineInspectionRecord record = buildInspectionRecord(inspection, executeDto, checkTime);
+ safeLineInspectionRecordService.save(record);
+
+ inspection.setInspectionResult(executeDto.getCheckResult());
+ inspection.setActualInspectionTime(checkTime);
+ inspection.setUpdateTime(LocalDateTime.now());
+ inspection.setUpdateUser(SecurityUtils.getUserId().intValue());
+ appendCurrentInspector(inspection);
+
+ if ("寮傚父".equals(executeDto.getCheckResult())) {
+ validateHazard(executeDto);
+ SafeHidden hidden = createSafeHidden(executeDto);
+ safeHiddenService.add(hidden);
+ fileUtil.saveStorageAttachment(
+ ApplicationTypeEnum.IMAGE,
+ RecordTypeEnum.SAFE_HIDDEN,
+ hidden.getId().longValue(),
+ executeDto.getStorageBlobDTOs()
+ );
+
+ SafeLineInspectionHazard hazard = buildLineHazard(inspection, record, hidden, executeDto);
+ safeLineInspectionHazardService.save(hazard);
+
+ inspection.setHiddenId(hidden.getId());
+ inspection.setStatus("寰呮暣鏀�");
+ } else {
+ inspection.setHiddenId(null);
+ inspection.setStatus("宸插畬鎴�");
+ }
+
+ return this.updateById(inspection);
+ }
+
+ private SafeLineInspectionRecord buildInspectionRecord(SafeLineInspection inspection,
+ SafeLineInspectionExecuteDto executeDto,
+ LocalDateTime checkTime) {
+ SafeLineInspectionRecord record = new SafeLineInspectionRecord();
+ record.setInspectionId(inspection.getId());
+ record.setCheckPoint(inspection.getLineName());
+ record.setCheckContent(inspection.getInspectionProject());
+ record.setCheckResult(executeDto.getCheckResult());
+ record.setCheckDesc("寮傚父".equals(executeDto.getCheckResult()) ? null : executeDto.getCheckDesc());
+ record.setCheckTime(checkTime);
+ record.setStorageBlobDTOs(executeDto.getStorageBlobDTOs());
+ return record;
+ }
+
+ private void validateHazard(SafeLineInspectionExecuteDto executeDto) {
+ if (executeDto.getStorageBlobDTOs() == null || executeDto.getStorageBlobDTOs().isEmpty()) {
+ throw new IllegalArgumentException("宸℃寮傚父鏃惰涓婁紶寮傚父鐓х墖");
+ }
+ if (StringUtils.isBlank(executeDto.getHiddenType())) {
+ throw new IllegalArgumentException("璇烽�夋嫨闅愭偅绫诲瀷");
+ }
+ if (StringUtils.isBlank(executeDto.getRiskLevel())) {
+ throw new IllegalArgumentException("璇烽�夋嫨闅愭偅椋庨櫓绛夌骇");
+ }
+ if (StringUtils.isBlank(executeDto.getHazardLocation())) {
+ throw new IllegalArgumentException("璇疯緭鍏ラ殣鎮d綅缃�");
+ }
+ if (StringUtils.isBlank(executeDto.getHazardDesc())) {
+ throw new IllegalArgumentException("璇疯緭鍏ュ紓甯告弿杩�/鏁存敼瑕佹眰");
+ }
+ if (executeDto.getRectifyUserId() == null) {
+ throw new IllegalArgumentException("璇烽�夋嫨鏁存敼璐d换浜�");
+ }
+ if (executeDto.getRectifyTime() == null) {
+ throw new IllegalArgumentException("璇烽�夋嫨鏁存敼瀹屾垚鏈熼檺");
+ }
+ }
+
+ private SafeHidden createSafeHidden(SafeLineInspectionExecuteDto executeDto) {
+ SafeHidden hidden = new SafeHidden();
+ hidden.setType(executeDto.getHiddenType());
+ hidden.setRiskLevel(executeDto.getRiskLevel());
+ hidden.setLocation(executeDto.getHazardLocation());
+ hidden.setHiddenDesc(executeDto.getHazardDesc());
+ hidden.setRectifyUserId(executeDto.getRectifyUserId());
+ hidden.setRectifyUserMobile(executeDto.getRectifyUserMobile());
+ hidden.setRectifyTime(executeDto.getRectifyTime());
+ return hidden;
+ }
+
+ private SafeLineInspectionHazard buildLineHazard(SafeLineInspection inspection,
+ SafeLineInspectionRecord record,
+ SafeHidden hidden,
+ SafeLineInspectionExecuteDto executeDto) {
+ SafeLineInspectionHazard hazard = new SafeLineInspectionHazard();
+ hazard.setInspectionId(inspection.getId());
+ hazard.setRecordId(record.getId());
+ hazard.setSafeHiddenId(hidden.getId());
+ hazard.setHazardCode(hidden.getHiddenCode());
+ hazard.setHazardDesc(executeDto.getHazardDesc());
+ hazard.setHazardLevel(executeDto.getRiskLevel());
+ hazard.setHazardLocation(executeDto.getHazardLocation());
+ hazard.setStatus("寰呮暣鏀�");
+ hazard.setRectifyUserId(executeDto.getRectifyUserId());
+ hazard.setRectifyDeadline(executeDto.getRectifyTime());
+ return hazard;
+ }
+
+ private void appendCurrentInspector(SafeLineInspection inspection) {
+ Long currentUserId = SecurityUtils.getUserId();
+ if (currentUserId == null) {
+ return;
+ }
+ String currentUserIdStr = String.valueOf(currentUserId);
+ String inspectorId = inspection.getInspectorId();
+ if (StringUtils.isBlank(inspectorId)) {
+ inspection.setInspectorId(currentUserIdStr);
+ return;
+ }
+ boolean exists = Arrays.stream(inspectorId.split(","))
+ .map(String::trim)
+ .anyMatch(currentUserIdStr::equals);
+ if (!exists) {
+ inspection.setInspectorId(inspectorId + "," + currentUserIdStr);
+ }
+ }
+
/**
* 濉厖宸℃浜哄悕绉帮紙鏀寔澶氬贰妫�浜猴紝閫楀彿鍒嗛殧锛�
*/
--
Gitblit v1.9.3