diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdEngInfoBHController.java b/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdEngInfoBHController.java index 8e989690..b5c994ee 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdEngInfoBHController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/controller/SdEngInfoBHController.java @@ -113,8 +113,9 @@ public class SdEngInfoBHController { @Log(module = "电站管理", value = "删除电站") @PostMapping("/delete") @Operation(summary = "删除电站") - public ResponseResult delete(@RequestParam String stcd) { - boolean result = engInfoBHService.deleteEngInfo(stcd); + public ResponseResult delete(@RequestBody SdEngInfoBHOperateRequest request) { + boolean result = engInfoBHService.deleteEngInfo(request == null ? null : request.getIds(), + request == null ? null : request.getSource()); return result ? ResponseResult.success("删除成功") : ResponseResult.error("删除失败"); } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdEngInfoBHOperateRequest.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdEngInfoBHOperateRequest.java index afbc160c..8087d328 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdEngInfoBHOperateRequest.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdEngInfoBHOperateRequest.java @@ -2,6 +2,7 @@ package com.yfd.platform.qgc_base.domain; import lombok.Data; +import java.util.List; import java.util.Map; @Data @@ -9,5 +10,7 @@ public class SdEngInfoBHOperateRequest { private Map engInfo; + private List ids; + private String source; } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/IMsOperationLogService.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/IMsOperationLogService.java index 51debb1d..f9edde52 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/IMsOperationLogService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/IMsOperationLogService.java @@ -7,4 +7,6 @@ public interface IMsOperationLogService { void recordEngAddLog(SdEngInfoBH engInfo, String source); void recordEngUpdateLog(SdEngInfoBH before, SdEngInfoBH changeSet, String source); + + void recordEngDeleteLog(SdEngInfoBH engInfo, String source); } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdEngInfoBHService.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdEngInfoBHService.java index f40b1edb..88ec4792 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdEngInfoBHService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/ISdEngInfoBHService.java @@ -70,6 +70,8 @@ public interface ISdEngInfoBHService extends IService { */ boolean deleteEngInfo(String stcd); + boolean deleteEngInfo(List ids, String source); + List selectRegDropdown(SdEngInfoBHRequest sdEngInfoBHRequest); EngBaseInfoVo getStInfoByStcd(String stcd); diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsOperationLogServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsOperationLogServiceImpl.java index 56eb5d89..8e70e7fb 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsOperationLogServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsOperationLogServiceImpl.java @@ -343,6 +343,41 @@ public class MsOperationLogServiceImpl implements IMsOperationLogService { batchInsertDetails(details); } + @Override + public void recordEngDeleteLog(SdEngInfoBH engInfo, String source) { + if (engInfo == null) { + return; + } + MsOperationLog mainLog = buildMainLog("删除电站", source); + msOperationLogMapper.insert(mainLog); + + List details = new ArrayList<>(); + Set processedColumns = new HashSet<>(); + for (Field field : SdEngInfoBH.class.getDeclaredFields()) { + if (shouldSkipField(field)) { + continue; + } + field.setAccessible(true); + String columnName = resolveColumnName(field); + if (ENG_NAME_COLUMNS.contains(columnName) || processedColumns.contains(columnName)) { + continue; + } + Object oldValue = getFieldValue(field, engInfo); + if (oldValue == null) { + continue; + } + String nameColumn = ENG_CODE_NAME_FIELD_MAP.get(columnName); + Object oldNameValue = resolveNameValue(columnName, nameColumn, oldValue, engInfo); + details.add(buildDetail(mainLog.getId(), engInfo.getStcd(), columnName, + oldValue, oldNameValue, null, null, "删除字段值")); + processedColumns.add(columnName); + if (StrUtil.isNotBlank(nameColumn)) { + processedColumns.add(nameColumn); + } + } + batchInsertDetails(details); + } + private MsOperationLog buildMainLog(String remark, String source) { MsOperationLog log = new MsOperationLog(); log.setOperator(resolveOperator()); diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java index 487e14e8..c170ed57 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java @@ -42,6 +42,7 @@ import org.springframework.util.StringUtils; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Arrays; +import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; @@ -503,8 +504,41 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl().eq(SdEngInfoBH::getStcd, stcd).set(SdEngInfoBH::getIsDeleted, 1)); -// return this.removeById(stcd); + if (StrUtil.isBlank(stcd)) { + return false; + } + return deleteEngInfo(java.util.Collections.singletonList(stcd), null); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean deleteEngInfo(List ids, String source) { + List stcdList = ids == null ? new ArrayList<>() : ids.stream() + .filter(StrUtil::isNotBlank) + .distinct() + .collect(Collectors.toList()); + if (CollUtil.isEmpty(stcdList)) { + return false; + } + List beforeList = this.lambdaQuery() + .in(SdEngInfoBH::getStcd, stcdList) + .eq(SdEngInfoBH::getIsDeleted, 0) + .list(); + if (CollUtil.isEmpty(beforeList)) { + return false; + } + boolean result = this.update(new LambdaUpdateWrapper() + .in(SdEngInfoBH::getStcd, stcdList) + .eq(SdEngInfoBH::getIsDeleted, 0) + .set(SdEngInfoBH::getIsDeleted, 1) + .set(SdEngInfoBH::getDeleteUser, SecurityUtils.getCurrentUsername()) + .set(SdEngInfoBH::getDeleteTime, new Date())); + if (result) { + for (SdEngInfoBH before : beforeList) { + msOperationLogService.recordEngDeleteLog(before, source); + } + } + return result; } @Override