From 3156eda07fb3ff66b5e9c702fe2dd82df9f6a818 Mon Sep 17 00:00:00 2001 From: tangwei Date: Fri, 24 Apr 2026 09:26:29 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E8=BF=87=E9=B1=BC?= =?UTF-8?q?=E8=AE=BE=E6=96=BD=E5=AE=A1=E6=89=B9=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/FishDraftDataController.java | 30 +++++++- .../data/domain/vo/FishDraftDataVO.java | 5 ++ .../data/service/IFishDraftDataService.java | 14 +++- .../impl/FishDraftDataServiceImpl.java | 70 ++++++++++++++++--- .../mapper/data/FishDraftDataMapper.xml | 4 ++ 5 files changed, 109 insertions(+), 14 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/data/controller/FishDraftDataController.java b/backend/src/main/java/com/yfd/platform/data/controller/FishDraftDataController.java index 7f4557c..da9f444 100644 --- a/backend/src/main/java/com/yfd/platform/data/controller/FishDraftDataController.java +++ b/backend/src/main/java/com/yfd/platform/data/controller/FishDraftDataController.java @@ -106,6 +106,13 @@ public class FishDraftDataController { return result ? ResponseResult.success("删除成功") : ResponseResult.error("删除失败"); } + @PostMapping("/batchRemoveDraft") + @Operation(summary = "批量删除草稿(软删除)") + public ResponseResult batchRemoveDraft(@RequestBody List ids) { + boolean result = fishDraftDataService.batchRemoveDraft(ids); + return result ? ResponseResult.success("删除成功") : ResponseResult.error("删除失败"); + } + @PostMapping("/submitDraft") @Operation(summary = "提交草稿") public ResponseResult submitDraft(@RequestParam String id, @@ -116,12 +123,29 @@ public class FishDraftDataController { @PostMapping("/submitDrafts") @Operation(summary = "批量提交草稿") - public ResponseResult submitDrafts(@RequestBody List ids, - @RequestParam String operatorId) { - boolean result = fishDraftDataService.submitDrafts(ids, operatorId); + public ResponseResult submitDrafts(@RequestBody List ids) { + boolean result = fishDraftDataService.submitDrafts(ids); return result ? ResponseResult.success("提交成功") : ResponseResult.error("提交失败"); } + @PostMapping("/batchApprove") + @Operation(summary = "批量审批通过") + public ResponseResult batchApprove(@RequestBody List ids, + @RequestParam(required = false) String approveComment) { + boolean result = fishDraftDataService.batchApprove(ids, approveComment); + return result ? ResponseResult.success("审批通过") : ResponseResult.error("审批失败"); + } + + @PostMapping("/reject") + @Operation(summary = "审批驳回") + public ResponseResult batchReject(@RequestParam String id, + @RequestParam String rejectReason) { + boolean result = fishDraftDataService.batchReject(id, rejectReason); + return result ? ResponseResult.success("驳回成功") : ResponseResult.error("驳回失败"); + } + + + @PostMapping("/lockDraft") @Operation(summary = "锁定草稿") public ResponseResult lockDraft(@RequestParam String id) { diff --git a/backend/src/main/java/com/yfd/platform/data/domain/vo/FishDraftDataVO.java b/backend/src/main/java/com/yfd/platform/data/domain/vo/FishDraftDataVO.java index 77fcb03..d849bed 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/vo/FishDraftDataVO.java +++ b/backend/src/main/java/com/yfd/platform/data/domain/vo/FishDraftDataVO.java @@ -36,6 +36,11 @@ public class FishDraftDataVO implements Serializable { */ private String ftp; + /** + * 鱼类名称 + */ + private String ftpName; + /** * 鱼类全长 */ diff --git a/backend/src/main/java/com/yfd/platform/data/service/IFishDraftDataService.java b/backend/src/main/java/com/yfd/platform/data/service/IFishDraftDataService.java index f85776a..3b8a75d 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/IFishDraftDataService.java +++ b/backend/src/main/java/com/yfd/platform/data/service/IFishDraftDataService.java @@ -63,7 +63,17 @@ public interface IFishDraftDataService extends IService { /** * 批量提交草稿 */ - boolean submitDrafts(List ids, String operatorId); + boolean submitDrafts(List ids); + + /** + * 批量审批通过 + */ + boolean batchApprove(List ids, String approveComment); + + /** + * 批量审批驳回 + */ + boolean batchReject(String id, String rejectReason); /** * 锁定草稿 @@ -74,4 +84,6 @@ public interface IFishDraftDataService extends IService { * 解锁草稿 */ boolean unlockDraft(String id); + + boolean batchRemoveDraft(List ids); } \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/data/service/impl/FishDraftDataServiceImpl.java b/backend/src/main/java/com/yfd/platform/data/service/impl/FishDraftDataServiceImpl.java index 81f686b..ba0b71a 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/impl/FishDraftDataServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/data/service/impl/FishDraftDataServiceImpl.java @@ -1,6 +1,8 @@ package com.yfd.platform.data.service.impl; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yfd.platform.common.DataSourceLoadOptionsBase; @@ -13,6 +15,7 @@ import com.yfd.platform.data.service.IApprovalMainService; import com.yfd.platform.data.service.IFishDraftDataService; import com.yfd.platform.utils.KendoUtil; import com.yfd.platform.utils.QgcQueryWrapperUtil; +import com.yfd.platform.utils.SecurityUtils; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -97,8 +100,6 @@ public class FishDraftDataServiceImpl extends ServiceImpl ids) { + long count = this.count(new LambdaQueryWrapper().in(FishDraftData::getId, ids).eq(FishDraftData::getLockFlag, 1)); + if(count > 0){ + return false; + } + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.in(FishDraftData::getId, ids); + updateWrapper.set(FishDraftData::getDeletedFlag, 1); + String userId = SecurityUtils.getUserId(); + updateWrapper.set(FishDraftData::getDeletedBy,userId ); + return this.update(updateWrapper); + } + @Override @Transactional(rollbackFor = Exception.class) public boolean submitDraft(String id, String operatorId) { @@ -137,25 +149,63 @@ public class FishDraftDataServiceImpl extends ServiceImpl ids, String operatorId) { + public boolean submitDrafts(List ids) { for (String id : ids) { FishDraftData fishDraftData = this.getById(id); if (fishDraftData != null && fishDraftData.getLockFlag() == 0) { fishDraftData.setStatus("SUBMITTED"); fishDraftData.setSubmitTime(new Date()); - fishDraftData.setUpdatedAt(new Date()); this.updateById(fishDraftData); } } return true; } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean batchApprove(List ids, String approveComment) { + if (ids == null || ids.isEmpty()) { + return false; + } + Date now = new Date(); + for (String id : ids) { + FishDraftData fishDraftData = this.getById(id); + if (fishDraftData != null && "SUBMITTED".equals(fishDraftData.getStatus())) { + fishDraftData.setStatus("APPROVED"); + fishDraftData.setApproveTime(now); + fishDraftData.setUpdatedBy(SecurityUtils.getUserId()); + this.updateById(fishDraftData); + } + } + return true; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean batchReject(String id, String rejectReason) { + if (StrUtil.isBlank( id)) { + return false; + } + if (StrUtil.isBlank(rejectReason)) { + throw new IllegalArgumentException("驳回原因不能为空"); + } + Date now = new Date(); + FishDraftData fishDraftData = this.getById(id); + if (fishDraftData != null && "SUBMITTED".equals(fishDraftData.getStatus())) { + fishDraftData.setStatus("REJECTED"); + fishDraftData.setApproveTime(now); + fishDraftData.setUpdatedBy(SecurityUtils.getUserId()); + this.updateById(fishDraftData); + } + return true; + } + @Override @Transactional(rollbackFor = Exception.class) public boolean lockDraft(String id) { @@ -164,7 +214,6 @@ public class FishDraftDataServiceImpl extends ServiceImpl + + @@ -81,6 +83,7 @@ D.STCD, D.TM, D.FTP, + FB.NAME FTPNAME, D.FSZ, D.FCNT, D.FWET, @@ -123,6 +126,7 @@ FROM FISH_DRAFT_DATA D LEFT JOIN SD_FPSS_B_H F ON D.STCD = F.STCD + LEFT JOIN SD_FISHDICTORY_B FB ON FB.ID = D.FTP LEFT JOIN SD_ENGINFO_B_H E ON F.RSTCD = E.STCD LEFT JOIN SD_HYDROBASE H ON E.BASE_ID = H.BASEID WHERE D.DELETED_FLAG = 0