From fd34228c5883bfa61f6520c24b10af08e319de18 Mon Sep 17 00:00:00 2001 From: tangwei Date: Wed, 6 May 2026 13:05:51 +0800 Subject: [PATCH 01/15] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=B8=8A=E4=BC=A0=E5=A4=A7=E5=B0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/data/mapper/FishDraftDataMapper.java | 5 ++++- .../data/service/impl/FishDraftDataServiceImpl.java | 3 ++- .../platform/system/controller/LoginController.java | 13 +++++++++---- .../com/yfd/platform/system/domain/SysUser.java | 6 ++++++ backend/src/main/resources/application-devtw.yml | 4 ++-- backend/src/main/resources/application-prod.yml | 6 +++--- backend/src/main/resources/application.yml | 2 +- .../resources/mapper/data/FishDraftDataMapper.xml | 3 +++ 8 files changed, 30 insertions(+), 12 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/data/mapper/FishDraftDataMapper.java b/backend/src/main/java/com/yfd/platform/data/mapper/FishDraftDataMapper.java index 3ad254f..6ebcbec 100644 --- a/backend/src/main/java/com/yfd/platform/data/mapper/FishDraftDataMapper.java +++ b/backend/src/main/java/com/yfd/platform/data/mapper/FishDraftDataMapper.java @@ -27,7 +27,10 @@ public interface FishDraftDataMapper extends BaseMapper { @Param("status") String status, @Param("ftp") String ftp, @Param("startTime") String startTime, - @Param("endTime") String endTime,@Param("userId") String userId,@Param("hbrvcd") String hbrvcd); + @Param("endTime") String endTime, + @Param("userId") String userId, + @Param("hbrvcd") String hbrvcd, + @Param("approvalId") String approvalId); /** * 关联查询过鱼数据(不分页) 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 8e47134..036001d 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 @@ -60,6 +60,7 @@ public class FishDraftDataServiceImpl extends ServiceImpl page = KendoUtil.getPage(dataSourceRequest); DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest(); String stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd"); + String approvalId = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "approvalId"); String rstcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "rstcd"); String hbrvcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "hbrvcd"); String baseId = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId"); @@ -75,7 +76,7 @@ public class FishDraftDataServiceImpl extends ServiceImpl resultPage = fishDraftDataMapper.selectJoinPage(page, stcd, rstcd, baseId, direction, status, ftp, startTime, endTime,userId,hbrvcd); + Page resultPage = fishDraftDataMapper.selectJoinPage(page, stcd, rstcd, baseId, direction, status, ftp, startTime, endTime,userId,hbrvcd,approvalId); fillUserNames(resultPage.getRecords()); return resultPage; } diff --git a/backend/src/main/java/com/yfd/platform/system/controller/LoginController.java b/backend/src/main/java/com/yfd/platform/system/controller/LoginController.java index ac08378..6f02ccf 100644 --- a/backend/src/main/java/com/yfd/platform/system/controller/LoginController.java +++ b/backend/src/main/java/com/yfd/platform/system/controller/LoginController.java @@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import cn.hutool.jwt.JWTUtil; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.wf.captcha.base.Captcha; import com.yfd.platform.annotation.Log; @@ -190,7 +191,7 @@ public class LoginController { } @Log(module = "用户登录", value = "更改用户密码") - @GetMapping("/updatePassword") + @PostMapping("/updatePassword") @Operation(summary = "更改用户密码") @ResponseBody public ResponseResult updatePassword(@RequestBody SysUser user) throws Exception { @@ -199,9 +200,13 @@ public class LoginController { user.getPassword()); BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); String cryptPassword = passwordEncoder.encode(password); - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - updateWrapper.set("password", cryptPassword); - updateWrapper.eq("id", user.getId()); + // 验证新密码和旧密码是否一致 + if (passwordEncoder.matches(password, user.getOldPassword())) { + return ResponseResult.error("新密码不能与旧密码相同"); + } + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.set(SysUser::getPassword, cryptPassword); + updateWrapper.eq(SysUser::getId, user.getId()); userService.update(updateWrapper); return ResponseResult.success(); } diff --git a/backend/src/main/java/com/yfd/platform/system/domain/SysUser.java b/backend/src/main/java/com/yfd/platform/system/domain/SysUser.java index 1fae968..e37f595 100644 --- a/backend/src/main/java/com/yfd/platform/system/domain/SysUser.java +++ b/backend/src/main/java/com/yfd/platform/system/domain/SysUser.java @@ -155,6 +155,12 @@ public class SysUser implements Serializable { */ private String companyCode; + @TableField(exist = false) + /** + * 登录密码(加密存储) + */ + private String oldPassword; + @TableField(exist = false) List roles; } diff --git a/backend/src/main/resources/application-devtw.yml b/backend/src/main/resources/application-devtw.yml index 33320bc..58f4f08 100644 --- a/backend/src/main/resources/application-devtw.yml +++ b/backend/src/main/resources/application-devtw.yml @@ -27,8 +27,8 @@ spring: matching-strategy: ant_path_matcher servlet: multipart: - max-file-size: 30MB - max-request-size: 100MB + max-file-size: 300MB + max-request-size: 500MB logging: file: diff --git a/backend/src/main/resources/application-prod.yml b/backend/src/main/resources/application-prod.yml index 27be67d..f4bdc6c 100644 --- a/backend/src/main/resources/application-prod.yml +++ b/backend/src/main/resources/application-prod.yml @@ -27,8 +27,8 @@ spring: matching-strategy: ant_path_matcher servlet: multipart: - max-file-size: 30MB - max-request-size: 100MB + max-file-size: 300MB + max-request-size: 500MB logging: file: @@ -36,7 +36,7 @@ logging: level: root: info com.yfd.platform: info - com.yfd.platform.*.mapper: trace +# com.yfd.platform.*.mapper: trace # 在线文档: swagger-ui(生产环境建议关闭) swagger-ui: diff --git a/backend/src/main/resources/application.yml b/backend/src/main/resources/application.yml index b11a8a0..488b6fb 100644 --- a/backend/src/main/resources/application.yml +++ b/backend/src/main/resources/application.yml @@ -1,6 +1,6 @@ spring: profiles: - active: devtw + active: prod jasypt: encryptor: diff --git a/backend/src/main/resources/mapper/data/FishDraftDataMapper.xml b/backend/src/main/resources/mapper/data/FishDraftDataMapper.xml index acb5626..1800c0b 100644 --- a/backend/src/main/resources/mapper/data/FishDraftDataMapper.xml +++ b/backend/src/main/resources/mapper/data/FishDraftDataMapper.xml @@ -160,6 +160,9 @@ AND D.STATUS = #{status} + + AND D.APPROVAL_ID = #{approvalId} + AND D.TM >= TO_DATE(#{startTime}, 'yyyy-mm-dd hh24:mi:ss') From 232ae480b2e4487dae6b39a592d742df1d5e56a7 Mon Sep 17 00:00:00 2001 From: tangwei Date: Wed, 6 May 2026 15:44:26 +0800 Subject: [PATCH 02/15] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ApprovalMainController.java | 10 +- .../controller/FishDraftDataController.java | 19 ++++ .../platform/data/domain/ApprovalMain.java | 24 +++++ .../data/service/IApprovalMainService.java | 3 +- .../service/impl/ApprovalMainServiceImpl.java | 13 ++- .../impl/FishDraftDataServiceImpl.java | 96 +++++++++++++++++++ .../service/impl/ImportTaskServiceImpl.java | 30 +++--- .../env/controller/SdFpssBHController.java | 5 +- .../platform/env/mapper/SdFpssBHMapper.java | 4 +- .../env/service/ISdFpssBHService.java | 2 +- .../service/impl/SdEngInfoBHServiceImpl.java | 2 - .../env/service/impl/SdFpssBHServiceImpl.java | 6 +- .../controller/SmsVerifyCodeController.java | 43 ++++----- backend/src/main/resources/application.yml | 2 +- .../mapper/data/SysUserDataScopeMapper.xml | 4 +- 15 files changed, 205 insertions(+), 58 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/data/controller/ApprovalMainController.java b/backend/src/main/java/com/yfd/platform/data/controller/ApprovalMainController.java index d145d90..53d927d 100644 --- a/backend/src/main/java/com/yfd/platform/data/controller/ApprovalMainController.java +++ b/backend/src/main/java/com/yfd/platform/data/controller/ApprovalMainController.java @@ -5,6 +5,7 @@ import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.config.ResponseResult; import com.yfd.platform.data.domain.ApprovalMain; import com.yfd.platform.data.service.IApprovalMainService; +import com.yfd.platform.data.service.IFishDraftDataService; import com.yfd.platform.utils.DataSourceRequestUtil; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -26,15 +27,20 @@ public class ApprovalMainController { @Resource private IApprovalMainService approvalMainService; + @Resource + private IFishDraftDataService fishDraftDataService; + @GetMapping("/page") @Operation(summary = "分页查询审批列表") public ResponseResult queryPageList( @RequestParam(defaultValue = "1") Integer current, @RequestParam(defaultValue = "10") Integer size, @RequestParam(required = false) String bizType, - @RequestParam(required = false) String status) { + @RequestParam(required = false) String status, + @RequestParam(required = false) String ennm, + @RequestParam(required = false) String hbrvnm) { Page page = new Page<>(current, size); - Page result = approvalMainService.queryPageList(page, bizType, status); + Page result = approvalMainService.queryPageList(page, bizType, status,ennm,hbrvnm); return ResponseResult.successData(result); } 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 cc48f44..da95234 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 @@ -10,6 +10,7 @@ import java.util.HashMap; import java.util.Map; import cn.hutool.core.io.FileUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fasterxml.jackson.databind.ObjectMapper; import com.yfd.platform.common.DataSourceRequest; @@ -200,6 +201,15 @@ public class FishDraftDataController { return result ? ResponseResult.success("提交成功") : ResponseResult.error("提交失败"); } + @PostMapping("/submitDraftsAll") + @Operation(summary = "批量提交草稿") + public ResponseResult submitDraftsAll() { + List draft = fishDraftDataService.list(new LambdaQueryWrapper().eq(FishDraftData::getCreatedBy, SecurityUtils.getUserId()).eq(FishDraftData::getStatus, "DRAFT").select(FishDraftData::getId)); + List ids = draft.stream().map(FishDraftData::getId).toList(); + boolean result = fishDraftDataService.submitDrafts(ids); + return result ? ResponseResult.success("提交成功") : ResponseResult.error("提交失败"); + } + @PostMapping("/batchApprove") @Operation(summary = "批量审批通过") public ResponseResult batchApprove(@RequestBody BatchApproveRequest request) { @@ -207,6 +217,15 @@ public class FishDraftDataController { return result ? ResponseResult.success("审批通过") : ResponseResult.error("审批失败"); } + @PostMapping("/batchApproveAll") + @Operation(summary = "批量全部审批通过") + public ResponseResult batchApproveAll(@RequestBody BatchApproveRequest request) { + List draft = fishDraftDataService.list(new LambdaQueryWrapper().eq(FishDraftData::getCreatedBy, SecurityUtils.getUserId()).eq(FishDraftData::getStatus, "PENDING").select(FishDraftData::getId)); + List ids = draft.stream().map(FishDraftData::getId).toList(); + boolean result = fishDraftDataService.batchApprove(ids, request.getApproveComment()); + return result ? ResponseResult.success("审批通过") : ResponseResult.error("审批失败"); + } + @PostMapping("/reject") @Operation(summary = "审批驳回") public ResponseResult batchReject(@RequestBody BatchRejectRequest request) { diff --git a/backend/src/main/java/com/yfd/platform/data/domain/ApprovalMain.java b/backend/src/main/java/com/yfd/platform/data/domain/ApprovalMain.java index c45084c..1e0a3c1 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/ApprovalMain.java +++ b/backend/src/main/java/com/yfd/platform/data/domain/ApprovalMain.java @@ -82,6 +82,30 @@ public class ApprovalMain implements Serializable { */ private String remark; + + /** + * 电站 + */ + private String ennm; + + + /** + * 流域 + */ + private String hbrvnm; + + /** + * 电站 + */ + private String stcd; + + + /** + * 流域 + */ + private String hbrvcd; + + /** * 创建时间 */ diff --git a/backend/src/main/java/com/yfd/platform/data/service/IApprovalMainService.java b/backend/src/main/java/com/yfd/platform/data/service/IApprovalMainService.java index b2ee766..2c18651 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/IApprovalMainService.java +++ b/backend/src/main/java/com/yfd/platform/data/service/IApprovalMainService.java @@ -3,6 +3,7 @@ package com.yfd.platform.data.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.yfd.platform.data.domain.ApprovalMain; +import org.springframework.web.bind.annotation.RequestParam; import java.util.List; @@ -16,7 +17,7 @@ public interface IApprovalMainService extends IService { /** * 分页查询审批列表 */ - Page queryPageList(Page page, String bizType, String status); + Page queryPageList(Page page, String bizType, String status,String ennm, String hbrvnm); void fillUserNames(List list); diff --git a/backend/src/main/java/com/yfd/platform/data/service/impl/ApprovalMainServiceImpl.java b/backend/src/main/java/com/yfd/platform/data/service/impl/ApprovalMainServiceImpl.java index cab10cd..27923ee 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/impl/ApprovalMainServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/data/service/impl/ApprovalMainServiceImpl.java @@ -1,10 +1,13 @@ 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.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yfd.platform.data.domain.ApprovalMain; +import com.yfd.platform.data.domain.SysUserDataScope; import com.yfd.platform.data.mapper.ApprovalMainMapper; +import com.yfd.platform.data.mapper.SysUserDataScopeMapper; import com.yfd.platform.data.service.IApprovalLogService; import com.yfd.platform.data.service.IApprovalMainService; import com.yfd.platform.system.domain.SysUser; @@ -15,6 +18,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import java.util.*; +import java.util.stream.Collectors; /** *

@@ -33,11 +37,16 @@ public class ApprovalMainServiceImpl extends ServiceImpl queryPageList(Page page, String bizType, String status) { + public Page queryPageList(Page page, String bizType, String status,String ennm, String hbrvnm) { Page approvalMainPage = this.page(page, this.lambdaQuery() .eq(StringUtils.hasText(bizType), ApprovalMain::getBizType, bizType) .eq(StringUtils.hasText(status), ApprovalMain::getStatus, status) + .like(StringUtils.hasText(ennm), ApprovalMain::getEnnm, ennm) + .like(StringUtils.hasText(hbrvnm), ApprovalMain::getHbrvnm, hbrvnm) .orderByDesc(ApprovalMain::getCreatedAt) .getWrapper()); fillUserNames(approvalMainPage.getRecords()); @@ -52,6 +61,7 @@ public class ApprovalMainServiceImpl extends ServiceImpl userIds = new HashSet<>(); for (ApprovalMain vo : list) { + if (StrUtil.isNotBlank(vo.getApproverId())) { userIds.add(vo.getApproverId()); } @@ -63,7 +73,6 @@ public class ApprovalMainServiceImpl extends ServiceImpl userNameMap = new HashMap<>(); List users = sysUserMapper.selectBatchIds(userIds); for (SysUser user : users) { 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 036001d..356960c 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 @@ -9,12 +9,18 @@ import com.yfd.platform.common.DataSourceLoadOptionsBase; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.data.domain.ApprovalMain; import com.yfd.platform.data.domain.FishDraftData; +import com.yfd.platform.data.domain.SysUserDataScope; import com.yfd.platform.data.domain.vo.FishDraftDataVO; import com.yfd.platform.data.mapper.FishDraftDataMapper; +import com.yfd.platform.data.mapper.SysUserDataScopeMapper; import com.yfd.platform.data.service.IApprovalChangeLogService; import com.yfd.platform.data.service.IApprovalLogService; import com.yfd.platform.data.service.IApprovalMainService; import com.yfd.platform.data.service.IFishDraftDataService; +import com.yfd.platform.env.domain.SdEngInfoBH; +import com.yfd.platform.env.domain.SdHbrvDic; +import com.yfd.platform.env.mapper.SdEngInfoBHMapper; +import com.yfd.platform.env.mapper.SdHbrvDicMapper; import com.yfd.platform.system.domain.SysUser; import com.yfd.platform.system.mapper.SysUserMapper; import com.yfd.platform.utils.KendoUtil; @@ -55,6 +61,15 @@ public class FishDraftDataServiceImpl extends ServiceImpl queryPageList(DataSourceRequest dataSourceRequest) { Page page = KendoUtil.getPage(dataSourceRequest); @@ -268,6 +283,8 @@ public class FishDraftDataServiceImpl extends ServiceImpl updateWrapper = new LambdaUpdateWrapper<>(); @@ -283,6 +300,85 @@ public class FishDraftDataServiceImpl extends ServiceImpl permissions = userDataScopeMapper.selectValidPermissions(Long.parseLong(userId)); + if (permissions == null || permissions.isEmpty()) { + return; + } + + Set hbrvcdSet = new HashSet<>(); + Set hbrvnmSet = new HashSet<>(); + Set stcdSet = new HashSet<>(); + Set ennmSet = new HashSet<>(); + + for (SysUserDataScope permission : permissions) { + String orgType = permission.getOrgType(); + String orgId = permission.getOrgId(); + + if (orgId == null || orgId.isEmpty()) { + continue; + } + + if ("HBRVCD".equals(orgType)) { + hbrvcdSet.add(orgId); + + SdHbrvDic hbrv = hbrvDicMapper.selectById(orgId); + if (hbrv != null && hbrv.getHbrvnm() != null) { + hbrvnmSet.add(hbrv.getHbrvnm()); + } + + List stationList = engInfoBHMapper.selectByHbrvcd(orgId); + if (stationList != null) { + for (SdEngInfoBH station : stationList) { + if (station.getStcd() != null) { + stcdSet.add(station.getStcd()); + } + if (station.getEnnm() != null) { + ennmSet.add(station.getEnnm()); + } + } + } + + } else if ("STATION".equals(orgType)) { + SdEngInfoBH station = engInfoBHMapper.selectById(orgId); + if (station != null) { + if (station.getHbrvcd() != null) { + hbrvcdSet.add(station.getHbrvcd()); + } + if (station.getStcd() != null) { + stcdSet.add(station.getStcd()); + } + if (station.getEnnm() != null) { + ennmSet.add(station.getEnnm()); + } + + SdHbrvDic hbrv = hbrvDicMapper.selectById(station.getHbrvcd()); + if (hbrv != null && hbrv.getHbrvnm() != null) { + hbrvnmSet.add(hbrv.getHbrvnm()); + } + } + } + } + + if (!hbrvcdSet.isEmpty()) { + approvalMain.setHbrvcd(String.join(",", hbrvcdSet)); + } + if (!hbrvnmSet.isEmpty()) { + approvalMain.setHbrvnm(String.join(",", hbrvnmSet)); + } + if (!stcdSet.isEmpty()) { + approvalMain.setStcd(String.join(",", stcdSet)); + } + if (!ennmSet.isEmpty()) { + approvalMain.setEnnm(String.join(",", ennmSet)); + } + } + @Override @Transactional(rollbackFor = Exception.class) diff --git a/backend/src/main/java/com/yfd/platform/data/service/impl/ImportTaskServiceImpl.java b/backend/src/main/java/com/yfd/platform/data/service/impl/ImportTaskServiceImpl.java index 396b213..4eb29ea 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/impl/ImportTaskServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/data/service/impl/ImportTaskServiceImpl.java @@ -185,21 +185,21 @@ public class ImportTaskServiceImpl extends ServiceImpl fileIds = StrUtil.split(vdpth, ","); - fileIds.forEach(fileId -> attachmentUploadService.deleteFile(fileId)); - } - String picpth = successRow.getData().getPicpth(); - if (StringUtils.hasText(picpth)) { - List fileIds = StrUtil.split(vdpth, ","); - fileIds.forEach(fileId -> attachmentUploadService.deleteFile(fileId)); - } - } +// for (FishImportResult.FishImportRow successRow : importResult.getRows()) { +// if (successRow.getData()==null) { +// continue; +// } +// String vdpth = successRow.getData().getVdpth(); +// if (StringUtils.hasText(vdpth)) { +// List fileIds = StrUtil.split(vdpth, ","); +// fileIds.forEach(fileId -> attachmentUploadService.deleteFile(fileId)); +// } +// String picpth = successRow.getData().getPicpth(); +// if (StringUtils.hasText(picpth)) { +// List fileIds = StrUtil.split(vdpth, ","); +// fileIds.forEach(fileId -> attachmentUploadService.deleteFile(fileId)); +// } +// } String tempDir = importResult.getTempDir(); // del 方法会递归删除目录及其所有内容 FileUtil.del(tempDir); diff --git a/backend/src/main/java/com/yfd/platform/env/controller/SdFpssBHController.java b/backend/src/main/java/com/yfd/platform/env/controller/SdFpssBHController.java index ef18bfe..f56fb92 100644 --- a/backend/src/main/java/com/yfd/platform/env/controller/SdFpssBHController.java +++ b/backend/src/main/java/com/yfd/platform/env/controller/SdFpssBHController.java @@ -61,9 +61,8 @@ public class SdFpssBHController { @Operation(summary = "设施下拉列表(根据电站编码筛选 + 支持名称模糊搜索 + 支持基地编码筛选)") public ResponseResult dropdown(@RequestParam(required = false) String rstcd, @RequestParam(required = false) String stnm, - @RequestParam(required = false) String baseId, - @RequestParam(required = false) String hbrvcd) { - return ResponseResult.successData(sdFpssBHService.selectForDropdown(rstcd, stnm, baseId,hbrvcd)); + @RequestParam(required = false) String baseId) { + return ResponseResult.successData(sdFpssBHService.selectForDropdown(rstcd, stnm, baseId)); } @Log(module = "过鱼设施管理", value = "新增过鱼设施") diff --git a/backend/src/main/java/com/yfd/platform/env/mapper/SdFpssBHMapper.java b/backend/src/main/java/com/yfd/platform/env/mapper/SdFpssBHMapper.java index 9e13625..08c53fa 100644 --- a/backend/src/main/java/com/yfd/platform/env/mapper/SdFpssBHMapper.java +++ b/backend/src/main/java/com/yfd/platform/env/mapper/SdFpssBHMapper.java @@ -16,13 +16,11 @@ public interface SdFpssBHMapper extends BaseMapper { "LEFT JOIN SD_ENGINFO_B_H E ON F.RSTCD = E.STCD " + "WHERE 1=1 " + " AND E.BASE_ID = #{baseId} " + - " AND E.HBRVCD = #{hbrvcd} " + " AND F.RSTCD = #{rstcd} " + " AND F.STNM LIKE '%' || #{stnm} || '%' " + "ORDER BY F.ORDER_INDEX DESC" + "") List selectForDropdownWithBaseId(@Param("rstcd") String rstcd, @Param("stnm") String stnm, - @Param("baseId") String baseId, - @Param("hbrvcd") String hbrvcd); + @Param("baseId") String baseId); } \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/env/service/ISdFpssBHService.java b/backend/src/main/java/com/yfd/platform/env/service/ISdFpssBHService.java index df2d231..7b37c27 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/ISdFpssBHService.java +++ b/backend/src/main/java/com/yfd/platform/env/service/ISdFpssBHService.java @@ -16,7 +16,7 @@ public interface ISdFpssBHService extends IService { /** * 设施下拉列表(根据电站编码筛选 + 支持名称模糊搜索 + 支持基地编码筛选) */ - List selectForDropdown(String rstcd, String stnm, String baseId,String hbrvcd); + List selectForDropdown(String rstcd, String stnm, String baseId); Set getUserAuthorizedStationCodes(); diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/SdEngInfoBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/service/impl/SdEngInfoBHServiceImpl.java index 55f361a..60e4b2f 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/impl/SdEngInfoBHServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/service/impl/SdEngInfoBHServiceImpl.java @@ -71,10 +71,8 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl rvcds = sdEngInfoBHRequest.getRvcds(); List hbrvcds = sdEngInfoBHRequest.getHbrvcds(); - String hbrvcd = sdEngInfoBHRequest.getHbrvcd(); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(StringUtils.hasText(baseId), SdEngInfoBH::getBaseId, baseId) - .eq(StringUtils.hasText(hbrvcd), SdEngInfoBH::getHbrvcd, hbrvcd) .in(rvcds != null && !rvcds.isEmpty(), SdEngInfoBH::getRvcd, rvcds) .in(hbrvcds != null && !hbrvcds.isEmpty(), SdEngInfoBH::getHbrvcd, hbrvcds) .like(StringUtils.hasText(ennm), SdEngInfoBH::getEnnm, ennm) diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/SdFpssBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/service/impl/SdFpssBHServiceImpl.java index d08ffcd..4cea76a 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/impl/SdFpssBHServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/service/impl/SdFpssBHServiceImpl.java @@ -64,13 +64,13 @@ public class SdFpssBHServiceImpl extends ServiceImpl i } @Override - public List selectForDropdown(String rstcd, String stnm,String baseId, String hbrvcd) { + public List selectForDropdown(String rstcd, String stnm, String baseId) { Set authorizedStations = getUserAuthorizedStationCodes(); List result; - if (StringUtils.hasText(hbrvcd)|| StringUtils.hasText(baseId)) { - result = baseMapper.selectForDropdownWithBaseId(rstcd, stnm, baseId,hbrvcd); + if (StringUtils.hasText(baseId)) { + result = baseMapper.selectForDropdownWithBaseId(rstcd, stnm, baseId); } else { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(StringUtils.hasText(rstcd), SdFpssBH::getRstcd, rstcd) diff --git a/backend/src/main/java/com/yfd/platform/system/controller/SmsVerifyCodeController.java b/backend/src/main/java/com/yfd/platform/system/controller/SmsVerifyCodeController.java index 3dd784a..edb0c44 100644 --- a/backend/src/main/java/com/yfd/platform/system/controller/SmsVerifyCodeController.java +++ b/backend/src/main/java/com/yfd/platform/system/controller/SmsVerifyCodeController.java @@ -204,7 +204,7 @@ public class SmsVerifyCodeController { selectedBasinCodes.addAll(Arrays.asList(hbrvcdCode.split(","))); } -// Set addedStationCodes = new HashSet<>(); + Set addedStationCodes = new HashSet<>(); for (String basinCode : selectedBasinCodes) { if (StringUtils.isEmpty(basinCode)) { @@ -241,7 +241,7 @@ public class SmsVerifyCodeController { scope.setStatus(1); scope.setPermissionType("READ"); sysUserDataScopeService.addDataScope(scope); -// addedStationCodes.add(basinCode); + addedStationCodes.add(basinCode); } else { Set stationsInBasinAndSelected = allStationCodesInBasin.stream() .filter(selectedStationCodes::contains) @@ -255,27 +255,27 @@ public class SmsVerifyCodeController { scope.setStatus(1); scope.setPermissionType("READ"); sysUserDataScopeService.addDataScope(scope); -// addedStationCodes.add(stationCd); + addedStationCodes.add(stationCd); } } } -// Set standaloneStations = selectedStationCodes.stream() -// .filter(code -> !addedStationCodes.contains(code)) -// .collect(Collectors.toSet()); -// -// for (String stationCd : standaloneStations) { -// if (StringUtils.isEmpty(stationCd)) { -// continue; -// } -// SysUserDataScope scope = new SysUserDataScope(); -// scope.setUserId(userId); -// scope.setOrgType("STATION"); -// scope.setOrgId(stationCd); -// scope.setStatus(1); -// scope.setPermissionType("READ"); -// sysUserDataScopeService.addDataScope(scope); -// } + Set standaloneStations = selectedStationCodes.stream() + .filter(code -> !addedStationCodes.contains(code)) + .collect(Collectors.toSet()); + + for (String stationCd : standaloneStations) { + if (StringUtils.isEmpty(stationCd)) { + continue; + } + SysUserDataScope scope = new SysUserDataScope(); + scope.setUserId(userId); + scope.setOrgType("STATION"); + scope.setOrgId(stationCd); + scope.setStatus(1); + scope.setPermissionType("READ"); + sysUserDataScopeService.addDataScope(scope); + } SysUser user = new SysUser(); user.setId(userId); userService.updateUserRoles( user,"c13481a486c9ee559cf305284df4d207"); @@ -316,12 +316,9 @@ public class SmsVerifyCodeController { } catch (Exception e) { return ResponseResult.error("密码解密失败"); } - String encodePassword = existUser.getPassword(); BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); String encryptedPassword = passwordEncoder.encode(password); - if (passwordEncoder.matches(password, encodePassword)) { - return ResponseResult.error("新密码不能与旧密码相同"); - } + boolean success = userService.updatePasswordByPhone(phone, encryptedPassword); if (success) { return ResponseResult.success(); diff --git a/backend/src/main/resources/application.yml b/backend/src/main/resources/application.yml index 488b6fb..b11a8a0 100644 --- a/backend/src/main/resources/application.yml +++ b/backend/src/main/resources/application.yml @@ -1,6 +1,6 @@ spring: profiles: - active: prod + active: devtw jasypt: encryptor: diff --git a/backend/src/main/resources/mapper/data/SysUserDataScopeMapper.xml b/backend/src/main/resources/mapper/data/SysUserDataScopeMapper.xml index 5fb5a5c..1fb8aa6 100644 --- a/backend/src/main/resources/mapper/data/SysUserDataScopeMapper.xml +++ b/backend/src/main/resources/mapper/data/SysUserDataScopeMapper.xml @@ -67,8 +67,8 @@ SELECT * FROM SYS_USER_DATA_SCOPE WHERE USER_ID = #{userId} AND STATUS = 1 - AND (START_TIME IS NULL OR START_TIME <= SYSDATE) - AND (END_TIME IS NULL OR END_TIME >= SYSDATE) +-- AND (START_TIME IS NULL OR START_TIME <= SYSDATE) +-- AND (END_TIME IS NULL OR END_TIME >= SYSDATE) ORDER BY CREATED_AT DESC From 0dc94cea5ab2be178a6e5615515282171b43bdb3 Mon Sep 17 00:00:00 2001 From: tangwei Date: Wed, 6 May 2026 16:45:49 +0800 Subject: [PATCH 03/15] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E6=8F=90=E4=BA=A4=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/FishDraftDataController.java | 22 ++++++++++++++----- .../data/domain/BatchApproveRequest.java | 3 +++ .../data/mapper/SysUserDataScopeMapper.java | 2 +- .../impl/FishDraftDataServiceImpl.java | 10 ++++----- .../mapper/data/FishDraftDataMapper.xml | 4 ++-- 5 files changed, 28 insertions(+), 13 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 da95234..78a9ea1 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 @@ -202,7 +202,7 @@ public class FishDraftDataController { } @PostMapping("/submitDraftsAll") - @Operation(summary = "批量提交草稿") + @Operation(summary = "批量提交当前用户全部草稿") public ResponseResult submitDraftsAll() { List draft = fishDraftDataService.list(new LambdaQueryWrapper().eq(FishDraftData::getCreatedBy, SecurityUtils.getUserId()).eq(FishDraftData::getStatus, "DRAFT").select(FishDraftData::getId)); List ids = draft.stream().map(FishDraftData::getId).toList(); @@ -217,10 +217,22 @@ public class FishDraftDataController { return result ? ResponseResult.success("审批通过") : ResponseResult.error("审批失败"); } - @PostMapping("/batchApproveAll") - @Operation(summary = "批量全部审批通过") - public ResponseResult batchApproveAll(@RequestBody BatchApproveRequest request) { - List draft = fishDraftDataService.list(new LambdaQueryWrapper().eq(FishDraftData::getCreatedBy, SecurityUtils.getUserId()).eq(FishDraftData::getStatus, "PENDING").select(FishDraftData::getId)); +// @PostMapping("/batchApproveAll") +// @Operation(summary = "批量全部审批通过") +// public ResponseResult batchApproveAll(@RequestBody BatchApproveRequest request) { +// List draft = fishDraftDataService.list(new LambdaQueryWrapper().eq(FishDraftData::getCreatedBy, SecurityUtils.getUserId()).eq(FishDraftData::getStatus, "PENDING").select(FishDraftData::getId)); +// List ids = draft.stream().map(FishDraftData::getId).toList(); +// boolean result = fishDraftDataService.batchApprove(ids, request.getApproveComment()); +// return result ? ResponseResult.success("审批通过") : ResponseResult.error("审批失败"); +// } + + @PostMapping("/batchApproveByApprovalId") + @Operation(summary = "根据审批批次全部审批通过") + public ResponseResult batchApproveByApprovalId(@RequestBody BatchApproveRequest request) { + if (request.getApprovalIds().isEmpty()) { + return ResponseResult.error("请选择审批批次"); + } + List draft = fishDraftDataService.list(new LambdaQueryWrapper().in(FishDraftData::getApprovalId, request.getApprovalIds()).eq(FishDraftData::getStatus, "PENDING").select(FishDraftData::getId)); List ids = draft.stream().map(FishDraftData::getId).toList(); boolean result = fishDraftDataService.batchApprove(ids, request.getApproveComment()); return result ? ResponseResult.success("审批通过") : ResponseResult.error("审批失败"); diff --git a/backend/src/main/java/com/yfd/platform/data/domain/BatchApproveRequest.java b/backend/src/main/java/com/yfd/platform/data/domain/BatchApproveRequest.java index 08c3ac3..66226b5 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/BatchApproveRequest.java +++ b/backend/src/main/java/com/yfd/platform/data/domain/BatchApproveRequest.java @@ -15,6 +15,9 @@ public class BatchApproveRequest { @Schema(description = "草稿数据ID列表") private List ids; + @Schema(description = "批次ID列表") + List approvalIds; + @Schema(description = "审批意见") private String approveComment; } \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/data/mapper/SysUserDataScopeMapper.java b/backend/src/main/java/com/yfd/platform/data/mapper/SysUserDataScopeMapper.java index 525fba4..8a592c2 100644 --- a/backend/src/main/java/com/yfd/platform/data/mapper/SysUserDataScopeMapper.java +++ b/backend/src/main/java/com/yfd/platform/data/mapper/SysUserDataScopeMapper.java @@ -42,5 +42,5 @@ public interface SysUserDataScopeMapper extends BaseMapper { /** * 查询有效权限(状态=1且在有效期内的) */ - List selectValidPermissions(@Param("userId") Long userId); + List selectValidPermissions(@Param("userId") String userId); } 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 356960c..e696a84 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 @@ -82,14 +82,14 @@ public class FishDraftDataServiceImpl extends ServiceImpl resultPage = fishDraftDataMapper.selectJoinPage(page, stcd, rstcd, baseId, direction, status, ftp, startTime, endTime,userId,hbrvcd,approvalId); fillUserNames(resultPage.getRecords()); @@ -306,7 +306,7 @@ public class FishDraftDataServiceImpl extends ServiceImpl permissions = userDataScopeMapper.selectValidPermissions(Long.parseLong(userId)); + List permissions = userDataScopeMapper.selectValidPermissions(userId); if (permissions == null || permissions.isEmpty()) { return; } diff --git a/backend/src/main/resources/mapper/data/FishDraftDataMapper.xml b/backend/src/main/resources/mapper/data/FishDraftDataMapper.xml index 1800c0b..0f0e942 100644 --- a/backend/src/main/resources/mapper/data/FishDraftDataMapper.xml +++ b/backend/src/main/resources/mapper/data/FishDraftDataMapper.xml @@ -164,10 +164,10 @@ AND D.APPROVAL_ID = #{approvalId} - AND D.TM >= TO_DATE(#{startTime}, 'yyyy-mm-dd hh24:mi:ss') + AND D.STRDT >= TO_DATE(#{startTime}, 'yyyy-mm-dd hh24:mi:ss') - AND D.TM <= TO_DATE(#{endTime}, 'yyyy-mm-dd hh24:mi:ss') + AND D.STRDT <= TO_DATE(#{endTime}, 'yyyy-mm-dd hh24:mi:ss') ORDER BY D.CREATED_AT DESC From 7932b8dc7ae355bfdfd43ef4afed0da0f7019927 Mon Sep 17 00:00:00 2001 From: tangwei Date: Wed, 6 May 2026 17:28:17 +0800 Subject: [PATCH 04/15] =?UTF-8?q?fix:=20=E5=A2=9E=E5=8A=A0=E4=B8=8B?= =?UTF-8?q?=E6=8B=89=E6=9D=83=E9=99=90=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/FishImportServiceImpl.java | 79 +++++++++++++++++-- .../service/impl/SdEngInfoBHServiceImpl.java | 7 +- .../env/service/impl/SdFpssBHServiceImpl.java | 4 +- .../service/impl/SdHbrvDicServiceImpl.java | 2 + .../service/impl/SdHydrobaseServiceImpl.java | 2 + 5 files changed, 83 insertions(+), 11 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/data/service/impl/FishImportServiceImpl.java b/backend/src/main/java/com/yfd/platform/data/service/impl/FishImportServiceImpl.java index 32c0d3d..ec0156c 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/impl/FishImportServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/data/service/impl/FishImportServiceImpl.java @@ -1,9 +1,12 @@ package com.yfd.platform.data.service.impl; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.yfd.platform.data.domain.FishDraftData; import com.yfd.platform.data.domain.FishImportRequest; import com.yfd.platform.data.domain.FishImportResult; +import com.yfd.platform.data.domain.SysUserDataScope; +import com.yfd.platform.data.mapper.SysUserDataScopeMapper; import com.yfd.platform.data.service.AttachmentUploadService; import com.yfd.platform.data.service.IFishImportService; import com.yfd.platform.data.utils.ZipFileUtil; @@ -11,6 +14,7 @@ import com.yfd.platform.env.domain.*; import com.yfd.platform.env.mapper.*; import com.yfd.platform.system.service.ISysDictionaryItemsService; import com.yfd.platform.system.service.ISysDictionaryService; +import com.yfd.platform.utils.SecurityUtils; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.*; @@ -58,6 +62,9 @@ public class FishImportServiceImpl implements IFishImportService { @Resource private AttachmentUploadService attachmentUploadService; + @Resource + private SysUserDataScopeMapper userDataScopeMapper; + private static final Map EXCEL_COLUMN_MAPPING = new LinkedHashMap<>(); private static final Map EXCEL_COLUMN_INDEX_MAPPING = new LinkedHashMap<>(); @@ -468,8 +475,63 @@ public class FishImportServiceImpl implements IFishImportService { } private void loadStationAndBaseCache() { - if (STATION_NAME_CACHE.isEmpty()) { - List stationList = engInfoBHMapper.selectList(null); + String userId = SecurityUtils.getUserId(); + Set allowedHbrvcdSet = new HashSet<>(); + Set directStcdSet = new HashSet<>(); + + if (userId != null) { + List permissions = userDataScopeMapper.selectValidPermissions(userId); + if (permissions != null && !permissions.isEmpty()) { + for (SysUserDataScope permission : permissions) { + String orgType = permission.getOrgType(); + String orgId = permission.getOrgId(); + + if (orgId == null || orgId.isEmpty()) { + continue; + } + + if ("HBRVCD".equals(orgType)) { + allowedHbrvcdSet.add(orgId); + } else if ("STATION".equals(orgType)) { + directStcdSet.add(orgId); + } + } + } + } + + Set allStcdSet = new HashSet<>(); + + if (!allowedHbrvcdSet.isEmpty() || !directStcdSet.isEmpty()) { + if (!allowedHbrvcdSet.isEmpty()) { + List stationsFromHbrv = engInfoBHMapper.selectByHbrvcdList(new ArrayList<>(allowedHbrvcdSet)); + for (SdEngInfoBH station : stationsFromHbrv) { + if (station.getStcd() != null) { + allStcdSet.add(station.getStcd()); + } + } + } + + if (!directStcdSet.isEmpty()) { + List stationsFromStcd = engInfoBHMapper.selectBatchIds(new ArrayList<>(directStcdSet)); + for (SdEngInfoBH station : stationsFromStcd) { + if (station.getStcd() != null) { + allStcdSet.add(station.getStcd()); + } + if (station.getHbrvcd() != null) { + allowedHbrvcdSet.add(station.getHbrvcd()); + } + } + } + } + + if (STATION_NAME_CACHE.isEmpty()&&!allStcdSet.isEmpty()) { + List stationList; + if (!allStcdSet.isEmpty()) { + stationList = engInfoBHMapper.selectBatchIds(new ArrayList<>(allStcdSet)); + } else { + stationList = engInfoBHMapper.selectList(null); + } + for (SdEngInfoBH station : stationList) { if (StringUtils.hasText(station.getEnnm())) { STATION_NAME_CACHE.put(station.getEnnm().trim().toLowerCase(), station.getStcd()); @@ -478,7 +540,7 @@ public class FishImportServiceImpl implements IFishImportService { if (StringUtils.hasText(station.getEnnm())) { STATION_CODE_TO_NAME_CACHE.put(station.getStcd().trim().toLowerCase(), station.getEnnm().trim().toLowerCase()); } - if (StringUtils.hasText(station.getBaseId())) { + if (StringUtils.hasText(station.getHbrvcd())) { STATION_TO_BASE_CACHE.put(station.getStcd().trim().toLowerCase(), station.getHbrvcd()); } } @@ -513,8 +575,11 @@ public class FishImportServiceImpl implements IFishImportService { } } - if (HBRVCD_NAME_CACHE.isEmpty()) { - List riverList = sdHbrvDicMapper.selectList(null); + if (HBRVCD_NAME_CACHE.isEmpty()&&!allowedHbrvcdSet.isEmpty()) { + List riverList; + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(SdHbrvDic::getHbrvcd, allowedHbrvcdSet); + riverList = sdHbrvDicMapper.selectList(wrapper); for (SdHbrvDic river : riverList) { if (StringUtils.hasText(river.getHbrvnm())) { HBRVCD_NAME_CACHE.put(river.getHbrvnm().trim().toLowerCase(), river.getHbrvcd()); @@ -541,8 +606,8 @@ public class FishImportServiceImpl implements IFishImportService { } } - if (FPSS_BH_CACHE.isEmpty()) { - List sdFpssBHS = fpssBHMapper.selectList(null); + if (FPSS_BH_CACHE.isEmpty()&&!directStcdSet.isEmpty()) { + List sdFpssBHS = fpssBHMapper.selectList(new LambdaQueryWrapper().in(SdFpssBH::getStcd, directStcdSet)); for (SdFpssBH sdFpssBH : sdFpssBHS) { if (StringUtils.hasText(sdFpssBH.getStnm())) { FPSS_BH_CACHE.put(sdFpssBH.getStnm().trim().toLowerCase(), sdFpssBH.getStcd()); diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/SdEngInfoBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/service/impl/SdEngInfoBHServiceImpl.java index 60e4b2f..a1a2cce 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/impl/SdEngInfoBHServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/service/impl/SdEngInfoBHServiceImpl.java @@ -46,6 +46,8 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl authorizedStations = getUserAuthorizedStationCodes(); if (authorizedStations != null && !authorizedStations.isEmpty()) { wrapper.in(SdEngInfoBH::getStcd, authorizedStations); + }else if (!"admin".equals(SecurityUtils.getCurrentUsername())){ + return page; } return this.page(page, wrapper); } @@ -82,10 +84,9 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl authorizedStations = getUserAuthorizedStationCodes(); if (authorizedStations != null && !authorizedStations.isEmpty()) { wrapper.in(SdEngInfoBH::getStcd, authorizedStations); + } else if (!"admin".equals(SecurityUtils.getCurrentUsername())){ + return new ArrayList<>(); } -// else { -// return new ArrayList<>(); -// } return this.list(wrapper); } diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/SdFpssBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/service/impl/SdFpssBHServiceImpl.java index 4cea76a..40e2cde 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/impl/SdFpssBHServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/service/impl/SdFpssBHServiceImpl.java @@ -50,6 +50,8 @@ public class SdFpssBHServiceImpl extends ServiceImpl i Set authorizedStations = getUserAuthorizedStationCodes(); if (authorizedStations != null && !authorizedStations.isEmpty()) { wrapper.in(SdFpssBH::getRstcd, authorizedStations); + }else if (!"admin".equals(SecurityUtils.getCurrentUsername())){ + return page; } wrapper.orderByDesc(SdFpssBH::getOrderIndex); @@ -78,7 +80,7 @@ public class SdFpssBHServiceImpl extends ServiceImpl i .orderByDesc(SdFpssBH::getOrderIndex); result = list(wrapper); } - if (authorizedStations.isEmpty()) { + if (authorizedStations.isEmpty()&&"admin".equals(SecurityUtils.getCurrentUsername())) { return result; } diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/SdHbrvDicServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/service/impl/SdHbrvDicServiceImpl.java index dac49a8..e3ccf55 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/impl/SdHbrvDicServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/service/impl/SdHbrvDicServiceImpl.java @@ -109,6 +109,8 @@ public class SdHbrvDicServiceImpl extends ServiceImpl(); } + }else if (!"admin".equals(SecurityUtils.getCurrentUsername())){ + return new ArrayList<>(); } wrapper.like(hbrvnm != null && !hbrvnm.isEmpty(), SdHbrvDic::getHbrvnm, hbrvnm) .eq(baseid != null && !baseid.isEmpty(), SdHbrvDic::getBaseid, baseid) diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/SdHydrobaseServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/service/impl/SdHydrobaseServiceImpl.java index 3523a05..ed4e3a4 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/impl/SdHydrobaseServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/service/impl/SdHydrobaseServiceImpl.java @@ -87,6 +87,8 @@ public class SdHydrobaseServiceImpl extends ServiceImpl(); } + }else if (!"admin".equals(SecurityUtils.getCurrentUsername())){ + return new ArrayList<>(); } // else { // return new ArrayList<>(); From a623c90f2168a35d13caa4b9a4443aa706673801 Mon Sep 17 00:00:00 2001 From: tangwei Date: Wed, 6 May 2026 18:44:49 +0800 Subject: [PATCH 05/15] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E4=B8=8B?= =?UTF-8?q?=E6=8B=89=E8=8F=9C=E5=8D=95=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/FishDraftDataServiceImpl.java | 5 +- .../service/impl/FishImportServiceImpl.java | 85 ++++++++++++++++--- .../service/impl/SdEngInfoBHServiceImpl.java | 27 +++++- .../env/service/impl/SdFpssBHServiceImpl.java | 28 +++++- .../service/impl/SdHbrvDicServiceImpl.java | 28 +++++- .../service/impl/SdHydrobaseServiceImpl.java | 26 +++++- 6 files changed, 175 insertions(+), 24 deletions(-) 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 e696a84..b863e33 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 @@ -85,7 +85,9 @@ public class FishDraftDataServiceImpl extends ServiceImpl FPSS_TO_STATION_CACHE = new LinkedHashMap<>(); private static final Map ISFS_DICT_CACHE = new LinkedHashMap<>(); + private static final long CACHE_EXPIRE_MILLIS = 10 * 60 * 1000; + private static long stationCacheTimestamp = 0; + private static long baseCacheTimestamp = 0; + private static long riverCacheTimestamp = 0; + private static long hbrvcdCacheTimestamp = 0; + private static long fishDictCacheTimestamp = 0; + private static long fpssCacheTimestamp = 0; + private static final String DICT_CODE_FISH = "FISH_TYPE"; private static final String DICT_CODE_DIRECTION = "FISH_DIRECTION"; private static final String DICT_CODE_ISFS = "YES_NO"; @@ -524,7 +532,14 @@ public class FishImportServiceImpl implements IFishImportService { } } - if (STATION_NAME_CACHE.isEmpty()&&!allStcdSet.isEmpty()) { + boolean stationCacheExpired = isCacheExpired(stationCacheTimestamp); + if (STATION_NAME_CACHE.isEmpty() || stationCacheExpired) { + if (stationCacheExpired) { + STATION_NAME_CACHE.clear(); + STATION_CODE_TO_NAME_CACHE.clear(); + STATION_TO_BASE_CACHE.clear(); + } + List stationList; if (!allStcdSet.isEmpty()) { stationList = engInfoBHMapper.selectBatchIds(new ArrayList<>(allStcdSet)); @@ -545,9 +560,16 @@ public class FishImportServiceImpl implements IFishImportService { } } } + stationCacheTimestamp = System.currentTimeMillis(); } - if (BASE_NAME_CACHE.isEmpty()) { + boolean baseCacheExpired = isCacheExpired(baseCacheTimestamp); + if (BASE_NAME_CACHE.isEmpty() || baseCacheExpired) { + if (baseCacheExpired) { + BASE_NAME_CACHE.clear(); + BASE_CODE_TO_NAME_CACHE.clear(); + } + List baseList = hydrobaseMapper.selectList(null); for (SdHydrobase base : baseList) { if (StringUtils.hasText(base.getBasename())) { @@ -559,9 +581,16 @@ public class FishImportServiceImpl implements IFishImportService { } } } + baseCacheTimestamp = System.currentTimeMillis(); } - if (RIVER_NAME_CACHE.isEmpty()) { + boolean riverCacheExpired = isCacheExpired(riverCacheTimestamp); + if (RIVER_NAME_CACHE.isEmpty() || riverCacheExpired) { + if (riverCacheExpired) { + RIVER_NAME_CACHE.clear(); + RIVER_CODE_TO_NAME_CACHE.clear(); + } + List riverList = rvcdDicMapper.selectList(null); for (SdRvcdDic river : riverList) { if (StringUtils.hasText(river.getRvnm())) { @@ -573,13 +602,24 @@ public class FishImportServiceImpl implements IFishImportService { } } } + riverCacheTimestamp = System.currentTimeMillis(); } - if (HBRVCD_NAME_CACHE.isEmpty()&&!allowedHbrvcdSet.isEmpty()) { + boolean hbrvcdCacheExpired = isCacheExpired(hbrvcdCacheTimestamp); + if (HBRVCD_NAME_CACHE.isEmpty() || hbrvcdCacheExpired) { + if (hbrvcdCacheExpired) { + HBRVCD_NAME_CACHE.clear(); + HBRVCD_CODE_TO_NAME_CACHE.clear(); + } + List riverList; - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.in(SdHbrvDic::getHbrvcd, allowedHbrvcdSet); - riverList = sdHbrvDicMapper.selectList(wrapper); + if (!allowedHbrvcdSet.isEmpty()) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(SdHbrvDic::getHbrvcd, allowedHbrvcdSet); + riverList = sdHbrvDicMapper.selectList(wrapper); + } else { + riverList = sdHbrvDicMapper.selectList(null); + } for (SdHbrvDic river : riverList) { if (StringUtils.hasText(river.getHbrvnm())) { HBRVCD_NAME_CACHE.put(river.getHbrvnm().trim().toLowerCase(), river.getHbrvcd()); @@ -590,9 +630,16 @@ public class FishImportServiceImpl implements IFishImportService { } } } + hbrvcdCacheTimestamp = System.currentTimeMillis(); } - if (FISH_DICT_CACHE.isEmpty()) { + boolean fishDictCacheExpired = isCacheExpired(fishDictCacheTimestamp); + if (FISH_DICT_CACHE.isEmpty() || fishDictCacheExpired) { + if (fishDictCacheExpired) { + FISH_DICT_CACHE.clear(); + FISH_CODE_TO_NAME_CACHE.clear(); + } + List sdFishDictoryBS = fishDictoryBMapper.selectList(null); for (SdFishDictoryB fishDictoryB : sdFishDictoryBS) { if (StringUtils.hasText(fishDictoryB.getName())) { @@ -604,10 +651,23 @@ public class FishImportServiceImpl implements IFishImportService { } } } + fishDictCacheTimestamp = System.currentTimeMillis(); } - if (FPSS_BH_CACHE.isEmpty()&&!directStcdSet.isEmpty()) { - List sdFpssBHS = fpssBHMapper.selectList(new LambdaQueryWrapper().in(SdFpssBH::getStcd, directStcdSet)); + boolean fpssCacheExpired = isCacheExpired(fpssCacheTimestamp); + if (FPSS_BH_CACHE.isEmpty() || fpssCacheExpired) { + if (fpssCacheExpired) { + FPSS_BH_CACHE.clear(); + FPSS_CODE_TO_NAME_CACHE.clear(); + FPSS_TO_STATION_CACHE.clear(); + } + + List sdFpssBHS; + if (!allStcdSet.isEmpty()) { + sdFpssBHS = fpssBHMapper.selectList(new LambdaQueryWrapper().in(SdFpssBH::getStcd, allStcdSet)); + } else { + sdFpssBHS = fpssBHMapper.selectList(null); + } for (SdFpssBH sdFpssBH : sdFpssBHS) { if (StringUtils.hasText(sdFpssBH.getStnm())) { FPSS_BH_CACHE.put(sdFpssBH.getStnm().trim().toLowerCase(), sdFpssBH.getStcd()); @@ -621,9 +681,14 @@ public class FishImportServiceImpl implements IFishImportService { } } } + fpssCacheTimestamp = System.currentTimeMillis(); } } + private boolean isCacheExpired(long timestamp) { + return System.currentTimeMillis() - timestamp > CACHE_EXPIRE_MILLIS; + } + public String resolveStationCode(String stationName) { if (stationName == null) { diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/SdEngInfoBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/service/impl/SdEngInfoBHServiceImpl.java index a1a2cce..7f6e10b 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/impl/SdEngInfoBHServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/service/impl/SdEngInfoBHServiceImpl.java @@ -104,17 +104,38 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl(); } + Set stationCodes = new HashSet<>(); - List basinCodes = new ArrayList<>(); + Set basinCodes = new HashSet<>(); for (SysUserDataScope scope : sysUserDataScopes) { String orgType = scope.getOrgType(); String orgId = scope.getOrgId(); if ("STATION".equals(orgType)) { - stationCodes.add(orgId); + SdEngInfoBH station = engInfoBHMapper.selectById(orgId); + if (station != null) { + if (station.getHbrvcd() != null) { + basinCodes.add(station.getHbrvcd()); + } + if (station.getStcd() != null) { + stationCodes.add(station.getStcd()); + } + + } } else if ("HBRVCD".equals(orgType)) { - basinCodes.add(orgId); + List stationList = engInfoBHMapper.selectByHbrvcd(orgId); + if (stationList != null) { + for (SdEngInfoBH station : stationList) { + if (station.getStcd() != null) { + stationCodes.add(station.getStcd()); + } + if (station.getEnnm() != null) { + basinCodes.add(station.getHbrvcd()); + } + } + } + } } diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/SdFpssBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/service/impl/SdFpssBHServiceImpl.java index 40e2cde..036578e 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/impl/SdFpssBHServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/service/impl/SdFpssBHServiceImpl.java @@ -102,20 +102,40 @@ public class SdFpssBHServiceImpl extends ServiceImpl i return new HashSet<>(); } + Set stationCodes = new HashSet<>(); - List basinCodes = new ArrayList<>(); + Set basinCodes = new HashSet<>(); for (SysUserDataScope scope : sysUserDataScopes) { String orgType = scope.getOrgType(); String orgId = scope.getOrgId(); if ("STATION".equals(orgType)) { - stationCodes.add(orgId); + SdEngInfoBH station = sdEngInfoBHMapper.selectById(orgId); + if (station != null) { + if (station.getHbrvcd() != null) { + basinCodes.add(station.getHbrvcd()); + } + if (station.getStcd() != null) { + stationCodes.add(station.getStcd()); + } + + } } else if ("HBRVCD".equals(orgType)) { - basinCodes.add(orgId); + List stationList = sdEngInfoBHMapper.selectByHbrvcd(orgId); + if (stationList != null) { + for (SdEngInfoBH station : stationList) { + if (station.getStcd() != null) { + stationCodes.add(station.getStcd()); + } + if (station.getEnnm() != null) { + basinCodes.add(station.getHbrvcd()); + } + } + } + } } - if (!stationCodes.isEmpty()) { return stationCodes; } diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/SdHbrvDicServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/service/impl/SdHbrvDicServiceImpl.java index e3ccf55..da19175 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/impl/SdHbrvDicServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/service/impl/SdHbrvDicServiceImpl.java @@ -33,6 +33,8 @@ public class SdHbrvDicServiceImpl extends ServiceImpl queryPageList(Page page, String hbrvnm, String baseid) { return this.page(page, this.lambdaQuery() @@ -133,16 +135,36 @@ public class SdHbrvDicServiceImpl extends ServiceImpl stationCodes = new HashSet<>(); - List basinCodes = new ArrayList<>(); + Set basinCodes = new HashSet<>(); for (SysUserDataScope scope : sysUserDataScopes) { String orgType = scope.getOrgType(); String orgId = scope.getOrgId(); if ("STATION".equals(orgType)) { - stationCodes.add(orgId); + SdEngInfoBH station = engInfoBHMapper.selectById(orgId); + if (station != null) { + if (station.getHbrvcd() != null) { + basinCodes.add(station.getHbrvcd()); + } + if (station.getStcd() != null) { + stationCodes.add(station.getStcd()); + } + + } } else if ("HBRVCD".equals(orgType)) { - basinCodes.add(orgId); + List stationList = engInfoBHMapper.selectByHbrvcd(orgId); + if (stationList != null) { + for (SdEngInfoBH station : stationList) { + if (station.getStcd() != null) { + stationCodes.add(station.getStcd()); + } + if (station.getEnnm() != null) { + basinCodes.add(station.getHbrvcd()); + } + } + } + } } diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/SdHydrobaseServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/service/impl/SdHydrobaseServiceImpl.java index ed4e3a4..1a0b460 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/impl/SdHydrobaseServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/service/impl/SdHydrobaseServiceImpl.java @@ -111,16 +111,36 @@ public class SdHydrobaseServiceImpl extends ServiceImpl stationCodes = new HashSet<>(); - List basinCodes = new ArrayList<>(); + Set basinCodes = new HashSet<>(); for (SysUserDataScope scope : sysUserDataScopes) { String orgType = scope.getOrgType(); String orgId = scope.getOrgId(); if ("STATION".equals(orgType)) { - stationCodes.add(orgId); + SdEngInfoBH station = sdEngInfoBHMapper.selectById(orgId); + if (station != null) { + if (station.getHbrvcd() != null) { + basinCodes.add(station.getHbrvcd()); + } + if (station.getStcd() != null) { + stationCodes.add(station.getStcd()); + } + + } } else if ("HBRVCD".equals(orgType)) { - basinCodes.add(orgId); + List stationList = sdEngInfoBHMapper.selectByHbrvcd(orgId); + if (stationList != null) { + for (SdEngInfoBH station : stationList) { + if (station.getStcd() != null) { + stationCodes.add(station.getStcd()); + } + if (station.getEnnm() != null) { + basinCodes.add(station.getHbrvcd()); + } + } + } + } } From e52dccdb3e118949af302ab5cfb66537242743be Mon Sep 17 00:00:00 2001 From: tangwei Date: Wed, 6 May 2026 20:40:19 +0800 Subject: [PATCH 06/15] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E9=A9=B3=E5=9B=9E=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/FishDraftDataController.java | 16 + .../data/domain/BatchRejectRequest.java | 8 + .../data/service/IFishDraftDataService.java | 5 + .../impl/FishDraftDataServiceImpl.java | 53 ++- .../service/impl/FishImportServiceImpl.java | 301 ++++++++++-------- .../service/impl/SdEngInfoBHServiceImpl.java | 4 + 6 files changed, 247 insertions(+), 140 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 78a9ea1..942d878 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 @@ -245,6 +245,22 @@ public class FishDraftDataController { return result ? ResponseResult.success("驳回成功") : ResponseResult.error("驳回失败"); } + @PostMapping("/batchReject") + @Operation(summary = "批量驳回") + public ResponseResult batchRejectFull(@RequestBody BatchRejectRequest request) { + if (request.getApprovalIds() != null && !request.getApprovalIds().isEmpty()) { + List draft = fishDraftDataService.list(new LambdaQueryWrapper().in(FishDraftData::getApprovalId, request.getApprovalIds()).eq(FishDraftData::getStatus, "PENDING").select(FishDraftData::getId)); + List ids = draft.stream().map(FishDraftData::getId).toList(); + boolean result = fishDraftDataService.rejectBatch(ids, request.getRejectReason()); + return result ? ResponseResult.success("驳回成功") : ResponseResult.error("驳回失败"); + } + if (request.getIds() != null && !request.getIds().isEmpty()) { + boolean result = fishDraftDataService.rejectBatch(request.getIds(), request.getRejectReason()); + return result ? ResponseResult.success("驳回成功") : ResponseResult.error("驳回失败"); + } + return ResponseResult.error("请选择要驳回的数据"); + } + @PostMapping("/lockDraft") @Operation(summary = "锁定草稿") diff --git a/backend/src/main/java/com/yfd/platform/data/domain/BatchRejectRequest.java b/backend/src/main/java/com/yfd/platform/data/domain/BatchRejectRequest.java index 2b97b19..fd1deb9 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/BatchRejectRequest.java +++ b/backend/src/main/java/com/yfd/platform/data/domain/BatchRejectRequest.java @@ -3,6 +3,8 @@ package com.yfd.platform.data.domain; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.util.List; + /** * 审批驳回请求参数 */ @@ -13,6 +15,12 @@ public class BatchRejectRequest { @Schema(description = "草稿数据ID") private String id; + @Schema(description = "草稿数据ID列表") + private List ids; + + @Schema(description = "批次ID列表") + private List approvalIds; + @Schema(description = "驳回原因") private String rejectReason; } \ No newline at end of file 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 2be6536..d3b2486 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 @@ -75,6 +75,11 @@ public interface IFishDraftDataService extends IService { */ boolean batchReject(String id, String rejectReason); + /** + * 批量驳回 + */ + boolean rejectBatch(List ids, String rejectReason); + /** * 锁定草稿 */ 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 b863e33..aeab231 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 @@ -87,7 +87,9 @@ public class FishDraftDataServiceImpl extends ServiceImpl ids, String rejectReason) { + if (ids == null || ids.isEmpty()) { + return false; + } + if (StrUtil.isBlank(rejectReason)) { + throw new IllegalArgumentException("驳回原因不能为空"); + } + Date now = new Date(); + String operatorId = SecurityUtils.getUserId(); + + List dataList = this.listByIds(ids); + Set processedApprovalIds = new HashSet<>(); + List validIds = new ArrayList<>(); + + for (FishDraftData fishDraftData : dataList) { + if ("PENDING".equals(fishDraftData.getStatus())) { + validIds.add(fishDraftData.getId()); + if (fishDraftData.getApprovalId() != null) { + processedApprovalIds.add(fishDraftData.getApprovalId()); + } + } + } + + if (!validIds.isEmpty()) { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.in(FishDraftData::getId, validIds); + updateWrapper.set(FishDraftData::getStatus, "REJECTED"); + updateWrapper.set(FishDraftData::getApproveTime, now); + updateWrapper.set(FishDraftData::getUpdatedBy, operatorId); + this.update(updateWrapper); + + for (String approvalId : processedApprovalIds) { + approvalLogService.logReject(approvalId, operatorId, rejectReason); + ApprovalMain approvalMain = approvalMainService.getById(approvalId); + if (approvalMain != null) { + approvalMain.setStatus("REJECTED"); + approvalMain.setApproverId(operatorId); + approvalMain.setApproveTime(now); + approvalMain.setRemark(rejectReason); + approvalMainService.updateById(approvalMain); + } + } + } + + return true; + } + @Override @Transactional(rollbackFor = Exception.class) public boolean lockDraft(String id) { diff --git a/backend/src/main/java/com/yfd/platform/data/service/impl/FishImportServiceImpl.java b/backend/src/main/java/com/yfd/platform/data/service/impl/FishImportServiceImpl.java index 8804734..ee1c0bc 100644 --- a/backend/src/main/java/com/yfd/platform/data/service/impl/FishImportServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/data/service/impl/FishImportServiceImpl.java @@ -85,14 +85,6 @@ public class FishImportServiceImpl implements IFishImportService { private static final Map FPSS_TO_STATION_CACHE = new LinkedHashMap<>(); private static final Map ISFS_DICT_CACHE = new LinkedHashMap<>(); - private static final long CACHE_EXPIRE_MILLIS = 10 * 60 * 1000; - private static long stationCacheTimestamp = 0; - private static long baseCacheTimestamp = 0; - private static long riverCacheTimestamp = 0; - private static long hbrvcdCacheTimestamp = 0; - private static long fishDictCacheTimestamp = 0; - private static long fpssCacheTimestamp = 0; - private static final String DICT_CODE_FISH = "FISH_TYPE"; private static final String DICT_CODE_DIRECTION = "FISH_DIRECTION"; private static final String DICT_CODE_ISFS = "YES_NO"; @@ -202,6 +194,62 @@ public class FishImportServiceImpl implements IFishImportService { FishImportResult.FishImportRow importRow = new FishImportResult.FishImportRow(rowIndex); FishDraftData data = new FishDraftData(); data.setId(UUID.randomUUID().toString()); + String userId = SecurityUtils.getUserId(); + Set allowedHbrvcdSet = new HashSet<>(); + Set directStcdSet = new HashSet<>(); + Set directBHSet = new HashSet<>(); + if (userId != null) { + List permissions = userDataScopeMapper.selectValidPermissions(userId); + if (permissions != null && !permissions.isEmpty()) { + for (SysUserDataScope permission : permissions) { + String orgType = permission.getOrgType(); + String orgId = permission.getOrgId(); + + if (orgId == null || orgId.isEmpty()) { + continue; + } + + if ("HBRVCD".equals(orgType)) { + allowedHbrvcdSet.add(orgId); + } else if ("STATION".equals(orgType)) { + directStcdSet.add(orgId); + } + } + } + } + + Set allStcdSet = new HashSet<>(); + + if (!allowedHbrvcdSet.isEmpty() || !directStcdSet.isEmpty()) { + if (!allowedHbrvcdSet.isEmpty()) { + List stationsFromHbrv = engInfoBHMapper.selectByHbrvcdList(new ArrayList<>(allowedHbrvcdSet)); + for (SdEngInfoBH station : stationsFromHbrv) { + if (station.getStcd() != null) { + allStcdSet.add(station.getStcd()); + } + } + } + + if (!directStcdSet.isEmpty()) { + List stationsFromStcd = engInfoBHMapper.selectBatchIds(new ArrayList<>(directStcdSet)); + for (SdEngInfoBH station : stationsFromStcd) { + if (station.getStcd() != null) { + allStcdSet.add(station.getStcd()); + } + if (station.getHbrvcd() != null) { + allowedHbrvcdSet.add(station.getHbrvcd()); + } + } + } + } + if (!directStcdSet.isEmpty()) { + List sdFpssBHS = fpssBHMapper.selectList(new LambdaQueryWrapper().in(SdFpssBH::getRstcd, allStcdSet).select(SdFpssBH::getStcd)); + for (SdFpssBH sdFpssBH : sdFpssBHS) { + if (sdFpssBH.getStcd() != null) { + directBHSet.add(sdFpssBH.getStcd()); + } + } + } for (Map.Entry entry : columnIndexMap.entrySet()) { Integer columnIndex = entry.getKey(); String fieldName = entry.getValue(); @@ -220,8 +268,15 @@ public class FishImportServiceImpl implements IFishImportService { importRow.getWarnings().add("rstcd"); data.setEnnm(cellValue.trim()); } else { - data.setEnnm(cellValue.trim()); - data.setRstcd(stcd); + if (allStcdSet.contains(stcd)) { + data.setEnnm(cellValue.trim()); + data.setRstcd(stcd); + } else { + importRow.getWarnings().add("rstcd"); + data.setEnnm(cellValue.trim()); + data.setRstcd(cellValue); + } + } } break; @@ -254,19 +309,26 @@ public class FishImportServiceImpl implements IFishImportService { } break; case "hbrvcd": - if(!StringUtils.hasText(cellValue)){ + if (!StringUtils.hasText(cellValue)) { importRow.getWarnings().add("hbrvcd"); data.setHbrvcd(cellValue); data.setHbrvnm(cellValue); - }else{ + } else { String hbrvcdCode = resolveHbrvcdCode(cellValue.trim()); if (hbrvcdCode == null) { importRow.getWarnings().add("hbrvcd"); data.setHbrvcd(cellValue.trim()); data.setHbrvnm(cellValue.trim()); - }else{ - data.setHbrvcd(hbrvcdCode); - data.setHbrvnm(cellValue.trim()); + } else { + if (allowedHbrvcdSet.contains(hbrvcdCode)) { + data.setHbrvcd(hbrvcdCode); + data.setHbrvnm(cellValue.trim()); + } else { + importRow.getWarnings().add("hbrvcd"); + data.setHbrvcd(cellValue.trim()); + data.setHbrvnm(cellValue.trim()); + } + } } // if (StringUtils.hasText(cellValue)) { @@ -434,8 +496,15 @@ public class FishImportServiceImpl implements IFishImportService { data.setStcd(cellValue.trim()); data.setStnm(cellValue.trim()); } else { - data.setStnm(cellValue.trim()); - data.setStcd(stcd); + if(directBHSet.contains(stcd)){ + data.setStnm(cellValue.trim()); + data.setStcd(stcd); + }else { + importRow.getWarnings().add("stcd"); + data.setStcd(cellValue.trim()); + data.setStnm(cellValue.trim()); + } + } } break; @@ -483,69 +552,64 @@ public class FishImportServiceImpl implements IFishImportService { } private void loadStationAndBaseCache() { - String userId = SecurityUtils.getUserId(); - Set allowedHbrvcdSet = new HashSet<>(); - Set directStcdSet = new HashSet<>(); +// String userId = SecurityUtils.getUserId(); +// Set allowedHbrvcdSet = new HashSet<>(); +// Set directStcdSet = new HashSet<>(); +// +// if (userId != null) { +// List permissions = userDataScopeMapper.selectValidPermissions(userId); +// if (permissions != null && !permissions.isEmpty()) { +// for (SysUserDataScope permission : permissions) { +// String orgType = permission.getOrgType(); +// String orgId = permission.getOrgId(); +// +// if (orgId == null || orgId.isEmpty()) { +// continue; +// } +// +// if ("HBRVCD".equals(orgType)) { +// allowedHbrvcdSet.add(orgId); +// } else if ("STATION".equals(orgType)) { +// directStcdSet.add(orgId); +// } +// } +// } +// } +// +// Set allStcdSet = new HashSet<>(); +// +// if (!allowedHbrvcdSet.isEmpty() || !directStcdSet.isEmpty()) { +// if (!allowedHbrvcdSet.isEmpty()) { +// List stationsFromHbrv = engInfoBHMapper.selectByHbrvcdList(new ArrayList<>(allowedHbrvcdSet)); +// for (SdEngInfoBH station : stationsFromHbrv) { +// if (station.getStcd() != null) { +// allStcdSet.add(station.getStcd()); +// } +// } +// } +// +// if (!directStcdSet.isEmpty()) { +// List stationsFromStcd = engInfoBHMapper.selectBatchIds(new ArrayList<>(directStcdSet)); +// for (SdEngInfoBH station : stationsFromStcd) { +// if (station.getStcd() != null) { +// allStcdSet.add(station.getStcd()); +// } +// if (station.getHbrvcd() != null) { +// allowedHbrvcdSet.add(station.getHbrvcd()); +// } +// } +// } +// } - if (userId != null) { - List permissions = userDataScopeMapper.selectValidPermissions(userId); - if (permissions != null && !permissions.isEmpty()) { - for (SysUserDataScope permission : permissions) { - String orgType = permission.getOrgType(); - String orgId = permission.getOrgId(); - - if (orgId == null || orgId.isEmpty()) { - continue; - } - - if ("HBRVCD".equals(orgType)) { - allowedHbrvcdSet.add(orgId); - } else if ("STATION".equals(orgType)) { - directStcdSet.add(orgId); - } - } - } - } - - Set allStcdSet = new HashSet<>(); - - if (!allowedHbrvcdSet.isEmpty() || !directStcdSet.isEmpty()) { - if (!allowedHbrvcdSet.isEmpty()) { - List stationsFromHbrv = engInfoBHMapper.selectByHbrvcdList(new ArrayList<>(allowedHbrvcdSet)); - for (SdEngInfoBH station : stationsFromHbrv) { - if (station.getStcd() != null) { - allStcdSet.add(station.getStcd()); - } - } - } - - if (!directStcdSet.isEmpty()) { - List stationsFromStcd = engInfoBHMapper.selectBatchIds(new ArrayList<>(directStcdSet)); - for (SdEngInfoBH station : stationsFromStcd) { - if (station.getStcd() != null) { - allStcdSet.add(station.getStcd()); - } - if (station.getHbrvcd() != null) { - allowedHbrvcdSet.add(station.getHbrvcd()); - } - } - } - } - - boolean stationCacheExpired = isCacheExpired(stationCacheTimestamp); - if (STATION_NAME_CACHE.isEmpty() || stationCacheExpired) { - if (stationCacheExpired) { - STATION_NAME_CACHE.clear(); - STATION_CODE_TO_NAME_CACHE.clear(); - STATION_TO_BASE_CACHE.clear(); - } - - List stationList; - if (!allStcdSet.isEmpty()) { - stationList = engInfoBHMapper.selectBatchIds(new ArrayList<>(allStcdSet)); - } else { - stationList = engInfoBHMapper.selectList(null); - } + if (STATION_NAME_CACHE.isEmpty()) { + List stationList = engInfoBHMapper.selectList(null); +// if (!allStcdSet.isEmpty()) { +// stationList = engInfoBHMapper.selectBatchIds(new ArrayList<>(allStcdSet)); +// } else if("admin".equals(SecurityUtils.getCurrentUsername())){ +// +// }else { +// stationList = new ArrayList<>(); +// } for (SdEngInfoBH station : stationList) { if (StringUtils.hasText(station.getEnnm())) { @@ -560,16 +624,9 @@ public class FishImportServiceImpl implements IFishImportService { } } } - stationCacheTimestamp = System.currentTimeMillis(); } - boolean baseCacheExpired = isCacheExpired(baseCacheTimestamp); - if (BASE_NAME_CACHE.isEmpty() || baseCacheExpired) { - if (baseCacheExpired) { - BASE_NAME_CACHE.clear(); - BASE_CODE_TO_NAME_CACHE.clear(); - } - + if (BASE_NAME_CACHE.isEmpty()) { List baseList = hydrobaseMapper.selectList(null); for (SdHydrobase base : baseList) { if (StringUtils.hasText(base.getBasename())) { @@ -581,16 +638,9 @@ public class FishImportServiceImpl implements IFishImportService { } } } - baseCacheTimestamp = System.currentTimeMillis(); } - boolean riverCacheExpired = isCacheExpired(riverCacheTimestamp); - if (RIVER_NAME_CACHE.isEmpty() || riverCacheExpired) { - if (riverCacheExpired) { - RIVER_NAME_CACHE.clear(); - RIVER_CODE_TO_NAME_CACHE.clear(); - } - + if (RIVER_NAME_CACHE.isEmpty()) { List riverList = rvcdDicMapper.selectList(null); for (SdRvcdDic river : riverList) { if (StringUtils.hasText(river.getRvnm())) { @@ -602,24 +652,17 @@ public class FishImportServiceImpl implements IFishImportService { } } } - riverCacheTimestamp = System.currentTimeMillis(); } - boolean hbrvcdCacheExpired = isCacheExpired(hbrvcdCacheTimestamp); - if (HBRVCD_NAME_CACHE.isEmpty() || hbrvcdCacheExpired) { - if (hbrvcdCacheExpired) { - HBRVCD_NAME_CACHE.clear(); - HBRVCD_CODE_TO_NAME_CACHE.clear(); - } - - List riverList; - if (!allowedHbrvcdSet.isEmpty()) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.in(SdHbrvDic::getHbrvcd, allowedHbrvcdSet); - riverList = sdHbrvDicMapper.selectList(wrapper); - } else { - riverList = sdHbrvDicMapper.selectList(null); - } + if (HBRVCD_NAME_CACHE.isEmpty()) { + List riverList = sdHbrvDicMapper.selectList(null); +// if (!allowedHbrvcdSet.isEmpty()) { +// LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); +// wrapper.in(SdHbrvDic::getHbrvcd, allowedHbrvcdSet); +// riverList = sdHbrvDicMapper.selectList(wrapper); +// } else { +// riverList = sdHbrvDicMapper.selectList(null); +// } for (SdHbrvDic river : riverList) { if (StringUtils.hasText(river.getHbrvnm())) { HBRVCD_NAME_CACHE.put(river.getHbrvnm().trim().toLowerCase(), river.getHbrvcd()); @@ -630,16 +673,9 @@ public class FishImportServiceImpl implements IFishImportService { } } } - hbrvcdCacheTimestamp = System.currentTimeMillis(); } - boolean fishDictCacheExpired = isCacheExpired(fishDictCacheTimestamp); - if (FISH_DICT_CACHE.isEmpty() || fishDictCacheExpired) { - if (fishDictCacheExpired) { - FISH_DICT_CACHE.clear(); - FISH_CODE_TO_NAME_CACHE.clear(); - } - + if (FISH_DICT_CACHE.isEmpty()) { List sdFishDictoryBS = fishDictoryBMapper.selectList(null); for (SdFishDictoryB fishDictoryB : sdFishDictoryBS) { if (StringUtils.hasText(fishDictoryB.getName())) { @@ -651,23 +687,15 @@ public class FishImportServiceImpl implements IFishImportService { } } } - fishDictCacheTimestamp = System.currentTimeMillis(); } - boolean fpssCacheExpired = isCacheExpired(fpssCacheTimestamp); - if (FPSS_BH_CACHE.isEmpty() || fpssCacheExpired) { - if (fpssCacheExpired) { - FPSS_BH_CACHE.clear(); - FPSS_CODE_TO_NAME_CACHE.clear(); - FPSS_TO_STATION_CACHE.clear(); - } - - List sdFpssBHS; - if (!allStcdSet.isEmpty()) { - sdFpssBHS = fpssBHMapper.selectList(new LambdaQueryWrapper().in(SdFpssBH::getStcd, allStcdSet)); - } else { - sdFpssBHS = fpssBHMapper.selectList(null); - } + if (FPSS_BH_CACHE.isEmpty()) { + List sdFpssBHS = fpssBHMapper.selectList(null); +// if (!allStcdSet.isEmpty()) { +// sdFpssBHS = fpssBHMapper.selectList(new LambdaQueryWrapper().in(SdFpssBH::getStcd, allStcdSet)); +// } else { +// sdFpssBHS = fpssBHMapper.selectList(null); +// } for (SdFpssBH sdFpssBH : sdFpssBHS) { if (StringUtils.hasText(sdFpssBH.getStnm())) { FPSS_BH_CACHE.put(sdFpssBH.getStnm().trim().toLowerCase(), sdFpssBH.getStcd()); @@ -681,14 +709,9 @@ public class FishImportServiceImpl implements IFishImportService { } } } - fpssCacheTimestamp = System.currentTimeMillis(); } } - private boolean isCacheExpired(long timestamp) { - return System.currentTimeMillis() - timestamp > CACHE_EXPIRE_MILLIS; - } - public String resolveStationCode(String stationName) { if (stationName == null) { diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/SdEngInfoBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/service/impl/SdEngInfoBHServiceImpl.java index 7f6e10b..9d68ba5 100644 --- a/backend/src/main/java/com/yfd/platform/env/service/impl/SdEngInfoBHServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/env/service/impl/SdEngInfoBHServiceImpl.java @@ -70,11 +70,13 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl selectForDropdown(SdEngInfoBHRequest sdEngInfoBHRequest) { String baseId = sdEngInfoBHRequest.getBaseId(); + String hbrvcd = sdEngInfoBHRequest.getHbrvcd(); String ennm = sdEngInfoBHRequest.getEnnm(); List rvcds = sdEngInfoBHRequest.getRvcds(); List hbrvcds = sdEngInfoBHRequest.getHbrvcds(); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(StringUtils.hasText(baseId), SdEngInfoBH::getBaseId, baseId) + .eq(StringUtils.hasText(hbrvcd), SdEngInfoBH::getHbrvcd, hbrvcd) .in(rvcds != null && !rvcds.isEmpty(), SdEngInfoBH::getRvcd, rvcds) .in(hbrvcds != null && !hbrvcds.isEmpty(), SdEngInfoBH::getHbrvcd, hbrvcds) .like(StringUtils.hasText(ennm), SdEngInfoBH::getEnnm, ennm) @@ -175,10 +177,12 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl selectRegDropdown(SdEngInfoBHRequest sdEngInfoBHRequest) { String baseId = sdEngInfoBHRequest.getBaseId(); String ennm = sdEngInfoBHRequest.getEnnm(); + String hbrvcd = sdEngInfoBHRequest.getHbrvcd(); List rvcds = sdEngInfoBHRequest.getRvcds(); List hbrvcds = sdEngInfoBHRequest.getHbrvcds(); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(StringUtils.hasText(baseId), SdEngInfoBH::getBaseId, baseId) + .eq(StringUtils.hasText(hbrvcd), SdEngInfoBH::getHbrvcd, hbrvcd) .in(rvcds != null && !rvcds.isEmpty(), SdEngInfoBH::getRvcd, rvcds) .in(hbrvcds != null && !hbrvcds.isEmpty(), SdEngInfoBH::getHbrvcd, hbrvcds) .like(StringUtils.hasText(ennm), SdEngInfoBH::getEnnm, ennm) From 593003bf3355694378a6e5910bcfea992b6268c2 Mon Sep 17 00:00:00 2001 From: tangwei Date: Thu, 7 May 2026 08:59:22 +0800 Subject: [PATCH 07/15] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E9=A9=B3?= =?UTF-8?q?=E5=9B=9E=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yfd/platform/data/controller/FishDraftDataController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 942d878..0e95928 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 @@ -204,7 +204,7 @@ public class FishDraftDataController { @PostMapping("/submitDraftsAll") @Operation(summary = "批量提交当前用户全部草稿") public ResponseResult submitDraftsAll() { - List draft = fishDraftDataService.list(new LambdaQueryWrapper().eq(FishDraftData::getCreatedBy, SecurityUtils.getUserId()).eq(FishDraftData::getStatus, "DRAFT").select(FishDraftData::getId)); + List draft = fishDraftDataService.list(new LambdaQueryWrapper().eq(FishDraftData::getCreatedBy, SecurityUtils.getUserId()).in(FishDraftData::getStatus,"REJECTED", "DRAFT").select(FishDraftData::getId)); List ids = draft.stream().map(FishDraftData::getId).toList(); boolean result = fishDraftDataService.submitDrafts(ids); return result ? ResponseResult.success("提交成功") : ResponseResult.error("提交失败"); From 5f04dae69cca3805c37f53a1def4cb5c63f01fa7 Mon Sep 17 00:00:00 2001 From: tangwei Date: Thu, 7 May 2026 10:16:23 +0800 Subject: [PATCH 08/15] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/FishDraftDataController.java | 6 +- .../env/controller/FpssRController.java | 80 ++++++++++ .../com/yfd/platform/env/domain/SdFpssR.java | 138 ++++++++++++++++++ .../platform/env/mapper/SdFpssRMapper.java | 14 ++ .../platform/env/service/ISdFpssRService.java | 18 +++ .../env/service/impl/SdFpssRServiceImpl.java | 64 ++++++++ .../system/controller/LoginController.java | 9 ++ .../controller/SmsVerifyCodeController.java | 2 +- .../system/controller/UserController.java | 2 +- .../service/impl/UserDetailsServiceImpl.java | 4 +- 10 files changed, 330 insertions(+), 7 deletions(-) create mode 100644 backend/src/main/java/com/yfd/platform/env/controller/FpssRController.java create mode 100644 backend/src/main/java/com/yfd/platform/env/domain/SdFpssR.java create mode 100644 backend/src/main/java/com/yfd/platform/env/mapper/SdFpssRMapper.java create mode 100644 backend/src/main/java/com/yfd/platform/env/service/ISdFpssRService.java create mode 100644 backend/src/main/java/com/yfd/platform/env/service/impl/SdFpssRServiceImpl.java 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 0e95928..15861bb 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 @@ -204,7 +204,7 @@ public class FishDraftDataController { @PostMapping("/submitDraftsAll") @Operation(summary = "批量提交当前用户全部草稿") public ResponseResult submitDraftsAll() { - List draft = fishDraftDataService.list(new LambdaQueryWrapper().eq(FishDraftData::getCreatedBy, SecurityUtils.getUserId()).in(FishDraftData::getStatus,"REJECTED", "DRAFT").select(FishDraftData::getId)); + List draft = fishDraftDataService.list(new LambdaQueryWrapper().eq(FishDraftData::getDeletedFlag, 0).eq(FishDraftData::getCreatedBy, SecurityUtils.getUserId()).in(FishDraftData::getStatus,"REJECTED", "DRAFT").select(FishDraftData::getId)); List ids = draft.stream().map(FishDraftData::getId).toList(); boolean result = fishDraftDataService.submitDrafts(ids); return result ? ResponseResult.success("提交成功") : ResponseResult.error("提交失败"); @@ -232,7 +232,7 @@ public class FishDraftDataController { if (request.getApprovalIds().isEmpty()) { return ResponseResult.error("请选择审批批次"); } - List draft = fishDraftDataService.list(new LambdaQueryWrapper().in(FishDraftData::getApprovalId, request.getApprovalIds()).eq(FishDraftData::getStatus, "PENDING").select(FishDraftData::getId)); + List draft = fishDraftDataService.list(new LambdaQueryWrapper().eq(FishDraftData::getDeletedFlag, 0).in(FishDraftData::getApprovalId, request.getApprovalIds()).eq(FishDraftData::getStatus, "PENDING").select(FishDraftData::getId)); List ids = draft.stream().map(FishDraftData::getId).toList(); boolean result = fishDraftDataService.batchApprove(ids, request.getApproveComment()); return result ? ResponseResult.success("审批通过") : ResponseResult.error("审批失败"); @@ -249,7 +249,7 @@ public class FishDraftDataController { @Operation(summary = "批量驳回") public ResponseResult batchRejectFull(@RequestBody BatchRejectRequest request) { if (request.getApprovalIds() != null && !request.getApprovalIds().isEmpty()) { - List draft = fishDraftDataService.list(new LambdaQueryWrapper().in(FishDraftData::getApprovalId, request.getApprovalIds()).eq(FishDraftData::getStatus, "PENDING").select(FishDraftData::getId)); + List draft = fishDraftDataService.list(new LambdaQueryWrapper().eq(FishDraftData::getDeletedFlag, 0).in(FishDraftData::getApprovalId, request.getApprovalIds()).eq(FishDraftData::getStatus, "PENDING").select(FishDraftData::getId)); List ids = draft.stream().map(FishDraftData::getId).toList(); boolean result = fishDraftDataService.rejectBatch(ids, request.getRejectReason()); return result ? ResponseResult.success("驳回成功") : ResponseResult.error("驳回失败"); diff --git a/backend/src/main/java/com/yfd/platform/env/controller/FpssRController.java b/backend/src/main/java/com/yfd/platform/env/controller/FpssRController.java new file mode 100644 index 0000000..a631024 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/env/controller/FpssRController.java @@ -0,0 +1,80 @@ +package com.yfd.platform.env.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.yfd.platform.config.ResponseResult; +import com.yfd.platform.env.domain.SdFpssR; +import com.yfd.platform.env.service.ISdFpssRService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 过鱼设施人工数据表 前端控制器 + *

+ */ +@RestController +@RequestMapping("/data/fpssR") +@Tag(name = "过鱼数据管理") +public class FpssRController { + + @Resource + private ISdFpssRService fpssRService; + + @GetMapping("/page") + @Operation(summary = "分页查询过鱼数据列表") + public ResponseResult queryPageList( + @RequestParam(defaultValue = "1") Integer current, + @RequestParam(defaultValue = "10") Integer size, + @RequestParam(required = false) String stcd, + @RequestParam(required = false) Integer yr, + @RequestParam(required = false) String ftp) { + Page page = new Page<>(current, size); + Page result = fpssRService.queryPageList(page, stcd, yr, ftp); + return ResponseResult.successData(result); + } + + @GetMapping("/getById") + @Operation(summary = "根据ID查询过鱼数据") + public ResponseResult getById(@RequestParam String id) { + SdFpssR fpssR = fpssRService.getById(id); + return ResponseResult.successData(fpssR); + } + + @PostMapping("/add") + @Operation(summary = "新增过鱼数据") + public ResponseResult add(@RequestBody SdFpssR fpssR) { + boolean result = fpssRService.save(fpssR); + return result ? ResponseResult.success("新增成功") : ResponseResult.error("新增失败"); + } + + @PostMapping("/update") + @Operation(summary = "修改过鱼数据") + public ResponseResult update(@RequestBody SdFpssR fpssR) { + boolean result = fpssRService.updateById(fpssR); + return result ? ResponseResult.success("修改成功") : ResponseResult.error("修改失败"); + } + + @PostMapping("/delete") + @Operation(summary = "删除过鱼数据") + public ResponseResult delete(@RequestParam String id) { + boolean result = fpssRService.removeById(id); + return result ? ResponseResult.success("删除成功") : ResponseResult.error("删除失败"); + } + + @PostMapping("/batchDelete") + @Operation(summary = "批量删除过鱼数据") + public ResponseResult batchDelete(@RequestBody java.util.List ids) { + if (ids == null || ids.isEmpty()) { + return ResponseResult.error("请选择要删除的数据"); + } + boolean result = true; + for (String id : ids) { + if (!fpssRService.removeById(id)) { + result = false; + } + } + return result ? ResponseResult.success("删除成功") : ResponseResult.error("部分删除失败"); + } +} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/env/domain/SdFpssR.java b/backend/src/main/java/com/yfd/platform/env/domain/SdFpssR.java new file mode 100644 index 0000000..96be841 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/env/domain/SdFpssR.java @@ -0,0 +1,138 @@ +package com.yfd.platform.env.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + *

+ * 过鱼设施人工数据表 + *

+ */ +@Data +@TableName("SD_FPSS_R") +public class SdFpssR implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(type = IdType.ASSIGN_UUID) + private String id; + + /** + * 过鱼设施编码 + */ + private String stcd; + + /** + * 填报时间 + */ + private Date tm; + + /** + * 鱼种类 + */ + private String ftp; + + /** + * 鱼类规格,单位:cm + */ + private String fsz; + + /** + * 过鱼数量,单位:尾 + */ + private Integer fcnt; + + /** + * 平均体重,单位:g + */ + private String fwet; + + /** + * 开始日期 + */ + private Date strdt; + + /** + * 结束日期 + */ + private Date enddt; + + /** + * 游向:0=上行,1=下行,2=上行折返,3=下行折返 + */ + private Integer direction; + + /** + * 当日运行次数 + */ + private Integer rcnt; + + /** + * 过鱼设施引用流量 + */ + private BigDecimal fq; + + /** + * 过鱼图片文件路径 + */ + private String imgpath; + + /** + * 过鱼视频文件路径 + */ + private String vdpath; + + /** + * 年份:数据时间,精确到年 + */ + private Integer yr; + + /** + * 主要月份 + */ + private String mouth; + + /** + * 创建人 + */ + private String recordUser; + + /** + * 创建时间 + */ + private Date recordTime; + + /** + * 更新人 + */ + private String modifyUser; + + /** + * 更新时间 + */ + private Date modifyTime; + + /** + * 是否已删除:0=未删除 1=已删除 + */ + private Integer isDeleted; + + /** + * 删除人 + */ + private String deleteUser; + + /** + * 删除时间 + */ + private Date deleteTime; +} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/env/mapper/SdFpssRMapper.java b/backend/src/main/java/com/yfd/platform/env/mapper/SdFpssRMapper.java new file mode 100644 index 0000000..9a32050 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/env/mapper/SdFpssRMapper.java @@ -0,0 +1,14 @@ +package com.yfd.platform.env.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.yfd.platform.env.domain.SdFpssR; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 过鱼设施人工数据表 Mapper 接口 + *

+ */ +@Mapper +public interface SdFpssRMapper extends BaseMapper { +} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/env/service/ISdFpssRService.java b/backend/src/main/java/com/yfd/platform/env/service/ISdFpssRService.java new file mode 100644 index 0000000..eed22d3 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/env/service/ISdFpssRService.java @@ -0,0 +1,18 @@ +package com.yfd.platform.env.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.yfd.platform.env.domain.SdFpssR; + +/** + *

+ * 过鱼设施人工数据表 服务类 + *

+ */ +public interface ISdFpssRService extends IService { + + /** + * 分页查询过鱼数据 + */ + Page queryPageList(Page page, String stcd, Integer yr, String ftp); +} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/env/service/impl/SdFpssRServiceImpl.java b/backend/src/main/java/com/yfd/platform/env/service/impl/SdFpssRServiceImpl.java new file mode 100644 index 0000000..5483b26 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/env/service/impl/SdFpssRServiceImpl.java @@ -0,0 +1,64 @@ +package com.yfd.platform.env.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.yfd.platform.env.domain.SdFpssR; +import com.yfd.platform.env.mapper.SdFpssRMapper; +import com.yfd.platform.env.service.ISdFpssRService; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import java.util.Date; + +/** + *

+ * 过鱼设施人工数据表 服务实现类 + *

+ */ +@Service +public class SdFpssRServiceImpl extends ServiceImpl implements ISdFpssRService { + + @Override + public Page queryPageList(Page page, String stcd, Integer yr, String ftp) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + + if (StringUtils.hasText(stcd)) { + wrapper.eq(SdFpssR::getStcd, stcd); + } + if (yr != null) { + wrapper.eq(SdFpssR::getYr, yr); + } + if (StringUtils.hasText(ftp)) { + wrapper.like(SdFpssR::getFtp, ftp); + } + + wrapper.eq(SdFpssR::getIsDeleted, 0); + wrapper.orderByDesc(SdFpssR::getRecordTime); + return page(page, wrapper); + } + + @Override + public boolean save(SdFpssR entity) { + entity.setRecordTime(new Date()); + entity.setIsDeleted(0); + return super.save(entity); + } + + @Override + public boolean updateById(SdFpssR entity) { + entity.setModifyTime(new Date()); + return super.updateById(entity); + } + +// @Override +// public boolean removeById(Object id) { +// SdFpssR entity = getById(id); +// if (entity != null) { +// entity.setIsDeleted(1); +// entity.setDeleteTime(new Date()); +// return updateById(entity); +// } +// return false; +// } +} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/system/controller/LoginController.java b/backend/src/main/java/com/yfd/platform/system/controller/LoginController.java index 6f02ccf..0ad501f 100644 --- a/backend/src/main/java/com/yfd/platform/system/controller/LoginController.java +++ b/backend/src/main/java/com/yfd/platform/system/controller/LoginController.java @@ -98,9 +98,18 @@ public class LoginController { } LoginUser loginUser = (LoginUser) authenticate.getPrincipal(); Integer status = loginUser.getUser().getStatus(); + String regStatus = loginUser.getUser().getRegStatus(); if ("0".equals(status.toString())) { return ResponseResult.error("账号已停用"); } + + if ("PENDING".equals(regStatus)) { + return ResponseResult.error("账号待审核,请联系管理员"); + } + + if ("REJECTED".equals(regStatus)) { + return ResponseResult.error("账号审核未通过"); + } HttpServletRequest request = RequestHolder.getHttpServletRequest(); SysLog sysLog = new SysLog(); sysLog.setUsercode(user.getUsername()); diff --git a/backend/src/main/java/com/yfd/platform/system/controller/SmsVerifyCodeController.java b/backend/src/main/java/com/yfd/platform/system/controller/SmsVerifyCodeController.java index edb0c44..279f5d6 100644 --- a/backend/src/main/java/com/yfd/platform/system/controller/SmsVerifyCodeController.java +++ b/backend/src/main/java/com/yfd/platform/system/controller/SmsVerifyCodeController.java @@ -167,7 +167,7 @@ public class SmsVerifyCodeController { user.setBelongingUnit(smsVerifyCodeRequest.getBelongingUnit()); user.setRegTime(new Date()); user.setNickname(smsVerifyCodeRequest.getRealName()); - user.setStatus(1); + user.setStatus(0); user.setOrgid("e90063ced25e3d469860e88d920c082f"); user.setUsertype(1); user.setUsername(smsVerifyCodeRequest.getUsername()); diff --git a/backend/src/main/java/com/yfd/platform/system/controller/UserController.java b/backend/src/main/java/com/yfd/platform/system/controller/UserController.java index cda7434..01217a4 100644 --- a/backend/src/main/java/com/yfd/platform/system/controller/UserController.java +++ b/backend/src/main/java/com/yfd/platform/system/controller/UserController.java @@ -214,7 +214,7 @@ public class UserController { } if (StrUtil.isBlank(auditStatus) || ( !"APPROVED".equals(auditStatus)&&!"REJECTED".equals(auditStatus))) { - return ResponseResult.error("审核状态错误:1-通过 2-驳回"); + return ResponseResult.error("审核状态错误"); } SysUser user = userService.getById(userId); if (user == null) { diff --git a/backend/src/main/java/com/yfd/platform/system/service/impl/UserDetailsServiceImpl.java b/backend/src/main/java/com/yfd/platform/system/service/impl/UserDetailsServiceImpl.java index dc28501..6042bee 100644 --- a/backend/src/main/java/com/yfd/platform/system/service/impl/UserDetailsServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/system/service/impl/UserDetailsServiceImpl.java @@ -35,9 +35,9 @@ public class UserDetailsServiceImpl implements UserDetailsService { @Override @DataSource(name = "master") public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { - //根据用户名称查询用户信息 + //根据用户名称或手机号查询用户信息 QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("username", username); + queryWrapper.and(wrapper -> wrapper.eq("username", username).or().eq("phone", username)); SysUser user = userService.getOne(queryWrapper); if (ObjectUtil.isEmpty(user)) { throw new RuntimeException("用户账号不存在!"); From b8d401f6623c828c8dcb459c8bd8a243c57020c4 Mon Sep 17 00:00:00 2001 From: tangwei Date: Thu, 7 May 2026 14:09:09 +0800 Subject: [PATCH 09/15] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E8=BF=87?= =?UTF-8?q?=E9=B1=BC=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/FishDraftDataController.java | 114 ++++++++++++++++-- .../platform/data/domain/FishDraftData.java | 8 ++ .../data/domain/vo/FishDraftDataVO.java | 2 +- .../impl/FishDraftDataServiceImpl.java | 60 +++++++++ .../com/yfd/platform/env/domain/SdFpssR.java | 10 +- .../mapper/data/FishDraftDataMapper.xml | 7 +- 6 files changed, 185 insertions(+), 16 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 15861bb..9eef43d 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 @@ -30,6 +30,7 @@ import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -112,16 +113,57 @@ public class FishDraftDataController { return result ? ResponseResult.success("保存成功") : ResponseResult.error("保存失败"); } +// @PostMapping("/batchSaveDraft") +// @Operation(summary = "批量保存草稿") +// public ResponseResult saveDraft(@RequestBody List fishDraftDataList) { +// +// fishDraftDataList.forEach(fishDraftData -> { +// fishDraftData.setStatus("DRAFT"); +// fishDraftData.setDeletedFlag(0); +// fishDraftData.setLockFlag(0); +// }); +// boolean result = fishDraftDataService.saveBatch(fishDraftDataList); +// return result ? ResponseResult.success("保存成功") : ResponseResult.error("保存失败"); +// } + @PostMapping("/batchSaveDraft") @Operation(summary = "批量保存草稿") - public ResponseResult saveDraft(@RequestBody List fishDraftDataList) { + @Transactional(rollbackFor = Exception.class) + public ResponseResult saveDraft(@RequestBody FishImportRowRequest request) { + String taskId = request.getTaskId(); + ImportTask importTask = importTaskService.getById(taskId); + String resultJson = importTask.getResultJson(); + FishImportResult importResult = null; + if (resultJson != null && !resultJson.isEmpty()) { + try { + importResult = objectMapper.readValue(resultJson, FishImportResult.class); + ZipFileUtil.ZipContent content = new ZipFileUtil.ZipContent(); + content.images = importResult.getImageFiles(); + content.videos = importResult.getVideoFiles(); + fishImportService.processAttachments(importResult, content); + } catch (Exception e) { + e.printStackTrace(); + // ignore parse error + } + } - fishDraftDataList.forEach(fishDraftData -> { - fishDraftData.setStatus("DRAFT"); - fishDraftData.setDeletedFlag(0); - fishDraftData.setLockFlag(0); - }); + if (importResult == null || importResult.getRows() == null) { + return ResponseResult.error("导入数据不存在"); + } + Date date = new Date(); + List fishDraftDataList = new ArrayList<>(); + for (FishImportResult.FishImportRow row : importResult.getRows()) { + FishDraftData data = row.getData(); + data.setRowIndex(row.getRowIndex()); + data.setStatus("DRAFT"); + data.setEnddt(data.getStrdt()); + data.setDeletedFlag(0); + data.setLockFlag(0); + data.setTm(date); + fishDraftDataList.add(data); + } boolean result = fishDraftDataService.saveBatch(fishDraftDataList); + importTaskService.markSuccess(taskId); return result ? ResponseResult.success("保存成功") : ResponseResult.error("保存失败"); } @@ -204,7 +246,7 @@ public class FishDraftDataController { @PostMapping("/submitDraftsAll") @Operation(summary = "批量提交当前用户全部草稿") public ResponseResult submitDraftsAll() { - List draft = fishDraftDataService.list(new LambdaQueryWrapper().eq(FishDraftData::getDeletedFlag, 0).eq(FishDraftData::getCreatedBy, SecurityUtils.getUserId()).in(FishDraftData::getStatus,"REJECTED", "DRAFT").select(FishDraftData::getId)); + List draft = fishDraftDataService.list(new LambdaQueryWrapper().eq(FishDraftData::getDeletedFlag, 0).eq(FishDraftData::getCreatedBy, SecurityUtils.getUserId()).in(FishDraftData::getStatus, "REJECTED", "DRAFT").select(FishDraftData::getId)); List ids = draft.stream().map(FishDraftData::getId).toList(); boolean result = fishDraftDataService.submitDrafts(ids); return result ? ResponseResult.success("提交成功") : ResponseResult.error("提交失败"); @@ -482,12 +524,13 @@ public class FishDraftDataController { writeErrorResponse(response, "预览失败: " + e.getMessage()); } } + @GetMapping("/deleteFile") @Operation(summary = "删除导入文件") public ResponseResult deleteFile(@RequestParam String taskId, - @RequestParam String id, - @RequestParam String type, - @RequestParam String filename) { + @RequestParam String id, + @RequestParam String type, + @RequestParam String filename) { if (taskId == null || taskId.isEmpty()) { return ResponseResult.error("任务ID不能为空"); } @@ -892,6 +935,57 @@ public class FishDraftDataController { } } + @PostMapping("/deleteRowById") + @Operation(summary = "删除数据") + public ResponseResult deleteRowById(@RequestBody FishImportRowRequest request) { + String taskId = request.getTaskId(); + FishDraftData data = request.getData(); + + if (taskId == null || taskId.isEmpty()) { + return ResponseResult.error("任务ID不能为空"); + } + if (data == null || data.getId() == null || data.getId().isEmpty()) { + return ResponseResult.error("数据对象或其ID不能为空"); + } + + try { + ImportTask task = importTaskService.getById(taskId); + if (task == null) { + return ResponseResult.error("任务不存在"); + } + + String resultJson = task.getResultJson(); + if (resultJson == null || resultJson.isEmpty()) { + return ResponseResult.error("任务结果为空"); + } + + FishImportResult importResult = objectMapper.readValue(resultJson, FishImportResult.class); + + FishImportResult.FishImportRow targetRow = null; + int targetIndex = -1; + for (int i = 0; i < importResult.getRows().size(); i++) { + FishImportResult.FishImportRow row = importResult.getRows().get(i); + if (row.getData() != null && data.getId().equals(row.getData().getId())) { + targetRow = row; + targetIndex = i; + break; + } + } + + if (targetIndex == -1) { + return ResponseResult.error("未找到对应的数据行"); + } + importResult.getRows().remove(targetIndex); + String updatedJson = objectMapper.writeValueAsString(importResult); + importTaskService.saveResultJson(taskId, updatedJson); + return ResponseResult.success(); + + } catch (Exception e) { + log.error("删除数据失败: " + e.getMessage(), e); + return ResponseResult.error("删除数据失败: " + e.getMessage()); + } + } + private void validateAndNormalizeData(FishDraftData data, FishImportResult.FishImportRow importRow, List warnings) { if (data.getStcd() == null || data.getStcd().isEmpty()) { diff --git a/backend/src/main/java/com/yfd/platform/data/domain/FishDraftData.java b/backend/src/main/java/com/yfd/platform/data/domain/FishDraftData.java index fe8ac15..4273248 100644 --- a/backend/src/main/java/com/yfd/platform/data/domain/FishDraftData.java +++ b/backend/src/main/java/com/yfd/platform/data/domain/FishDraftData.java @@ -156,6 +156,14 @@ public class FishDraftData implements Serializable { */ private Integer deletedFlag; + + /** + * 行号 + */ + private Integer rowIndex; + + + /** * 删除人 */ 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 2037ca7..35fa621 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 @@ -216,7 +216,7 @@ public class FishDraftDataVO implements Serializable { /** * 排序字段 */ - private Integer orderIndex; + private Integer rowIndex; /** * 创建人名称 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 aeab231..c1d83a4 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 @@ -18,9 +18,12 @@ import com.yfd.platform.data.service.IApprovalLogService; import com.yfd.platform.data.service.IApprovalMainService; import com.yfd.platform.data.service.IFishDraftDataService; import com.yfd.platform.env.domain.SdEngInfoBH; +import com.yfd.platform.env.domain.SdFpssR; import com.yfd.platform.env.domain.SdHbrvDic; import com.yfd.platform.env.mapper.SdEngInfoBHMapper; +import com.yfd.platform.env.mapper.SdFpssRMapper; import com.yfd.platform.env.mapper.SdHbrvDicMapper; +import com.yfd.platform.env.service.ISdFpssRService; import com.yfd.platform.system.domain.SysUser; import com.yfd.platform.system.mapper.SysUserMapper; import com.yfd.platform.utils.KendoUtil; @@ -28,6 +31,8 @@ import com.yfd.platform.utils.QgcQueryWrapperUtil; import com.yfd.platform.utils.SecurityUtils; import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.apache.ibatis.executor.BatchResult; import org.springframework.security.core.GrantedAuthority; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -41,6 +46,7 @@ import java.util.*; *

*/ @Service +@Slf4j public class FishDraftDataServiceImpl extends ServiceImpl implements IFishDraftDataService { @Resource @@ -70,9 +76,17 @@ public class FishDraftDataServiceImpl extends ServiceImpl queryPageList(DataSourceRequest dataSourceRequest) { Page page = KendoUtil.getPage(dataSourceRequest); + page.setSize(dataSourceRequest.getTake()); + page.setCurrent(dataSourceRequest.getSkip()); DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest(); String stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd"); String approvalId = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "approvalId"); @@ -397,6 +411,7 @@ public class FishDraftDataServiceImpl extends ServiceImpl dataList = this.listByIds(ids); Set processedApprovalIds = new HashSet<>(); List validIds = new ArrayList<>(); + List fpssRList = new ArrayList<>(); for (FishDraftData fishDraftData : dataList) { if ("PENDING".equals(fishDraftData.getStatus())) { @@ -404,6 +419,8 @@ public class FishDraftDataServiceImpl extends ServiceImpl - + @@ -123,7 +123,8 @@ E.RVCD, E.LGTD, E.LTTD, - E.ORDER_INDEX + E.ORDER_INDEX, + D.ROW_INDEX