fix: 优化过鱼设施审批操作

This commit is contained in:
tangwei 2026-04-24 09:26:29 +08:00
parent 2d654c9694
commit 3156eda07f
5 changed files with 109 additions and 14 deletions

View File

@ -106,6 +106,13 @@ public class FishDraftDataController {
return result ? ResponseResult.success("删除成功") : ResponseResult.error("删除失败");
}
@PostMapping("/batchRemoveDraft")
@Operation(summary = "批量删除草稿(软删除)")
public ResponseResult batchRemoveDraft(@RequestBody List<String> 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<String> ids,
@RequestParam String operatorId) {
boolean result = fishDraftDataService.submitDrafts(ids, operatorId);
public ResponseResult submitDrafts(@RequestBody List<String> ids) {
boolean result = fishDraftDataService.submitDrafts(ids);
return result ? ResponseResult.success("提交成功") : ResponseResult.error("提交失败");
}
@PostMapping("/batchApprove")
@Operation(summary = "批量审批通过")
public ResponseResult batchApprove(@RequestBody List<String> 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) {

View File

@ -36,6 +36,11 @@ public class FishDraftDataVO implements Serializable {
*/
private String ftp;
/**
* 鱼类名称
*/
private String ftpName;
/**
* 鱼类全长
*/

View File

@ -63,7 +63,17 @@ public interface IFishDraftDataService extends IService<FishDraftData> {
/**
* 批量提交草稿
*/
boolean submitDrafts(List<String> ids, String operatorId);
boolean submitDrafts(List<String> ids);
/**
* 批量审批通过
*/
boolean batchApprove(List<String> ids, String approveComment);
/**
* 批量审批驳回
*/
boolean batchReject(String id, String rejectReason);
/**
* 锁定草稿
@ -74,4 +84,6 @@ public interface IFishDraftDataService extends IService<FishDraftData> {
* 解锁草稿
*/
boolean unlockDraft(String id);
boolean batchRemoveDraft(List<String> ids);
}

View File

@ -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<FishDraftDataMapper, F
fishDraftData.setStatus("DRAFT");
fishDraftData.setDeletedFlag(0);
fishDraftData.setLockFlag(0);
fishDraftData.setCreatedAt(new Date());
fishDraftData.setUpdatedAt(new Date());
return this.save(fishDraftData);
}
@ -110,7 +111,6 @@ public class FishDraftDataServiceImpl extends ServiceImpl<FishDraftDataMapper, F
return false;
}
fishDraftData.setStatus("DRAFT");
fishDraftData.setUpdatedAt(new Date());
return this.updateById(fishDraftData);
}
@ -123,11 +123,23 @@ public class FishDraftDataServiceImpl extends ServiceImpl<FishDraftDataMapper, F
}
fishDraftData.setDeletedFlag(1);
fishDraftData.setDeletedBy(operatorId);
fishDraftData.setDeletedAt(new Date());
fishDraftData.setUpdatedAt(new Date());
return this.updateById(fishDraftData);
}
@Override
public boolean batchRemoveDraft(List<String> ids) {
long count = this.count(new LambdaQueryWrapper<FishDraftData>().in(FishDraftData::getId, ids).eq(FishDraftData::getLockFlag, 1));
if(count > 0){
return false;
}
LambdaUpdateWrapper<FishDraftData> 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<FishDraftDataMapper, F
}
fishDraftData.setStatus("SUBMITTED");
fishDraftData.setSubmitTime(new Date());
fishDraftData.setUpdatedAt(new Date());
return this.updateById(fishDraftData);
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean submitDrafts(List<String> ids, String operatorId) {
public boolean submitDrafts(List<String> 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<String> 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<FishDraftDataMapper, F
return false;
}
fishDraftData.setLockFlag(1);
fishDraftData.setUpdatedAt(new Date());
return this.updateById(fishDraftData);
}
@ -176,7 +225,8 @@ public class FishDraftDataServiceImpl extends ServiceImpl<FishDraftDataMapper, F
return false;
}
fishDraftData.setLockFlag(0);
fishDraftData.setUpdatedAt(new Date());
return this.updateById(fishDraftData);
}
}

View File

@ -39,6 +39,8 @@
<result column="STCD" property="stcd"/>
<result column="TM" property="tm"/>
<result column="FTP" property="ftp"/>
<result column="FTP" property="ftp"/>
<result column="FTPNAME" property="ftpName"/>
<result column="FSZ" property="fsz"/>
<result column="FCNT" property="fcnt"/>
<result column="FWET" property="fwet"/>
@ -81,6 +83,7 @@
D.STCD,
D.TM,
D.FTP,
FB.NAME FTPNAME,
D.FSZ,
D.FCNT,
D.FWET,
@ -123,6 +126,7 @@
<include refid="joinColumns"/>
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