feat: 优化过鱼设施新增修改

This commit is contained in:
tangwei 2026-07-21 09:32:47 +08:00
parent f0aea67b35
commit be1d3d95ff
6 changed files with 180 additions and 40 deletions

View File

@ -61,29 +61,29 @@ public class SecurityConfig {
.requestMatchers("/tempFile/**").permitAll()
.requestMatchers("/system/user/auditUser").permitAll()
.requestMatchers("/register/accessToken").permitAll()
.requestMatchers("/eng/**").permitAll()
.requestMatchers("/eq/**").permitAll()
.requestMatchers("/env/**").permitAll()
.requestMatchers("/warn/**").permitAll()
.requestMatchers("/threedroamb/**").permitAll()
.requestMatchers("/overview/**").permitAll()
.requestMatchers("/wt/**").permitAll()
.requestMatchers("/fb/**").permitAll()
.requestMatchers("/base/**").permitAll()
.requestMatchers("/zq/**").permitAll()
.requestMatchers("/wq/**").permitAll()
.requestMatchers("/wte/**").permitAll()
.requestMatchers("/vd/**").permitAll()
.requestMatchers("/vap/**").permitAll()
.requestMatchers("/fp/**").permitAll()
.requestMatchers("/fpr/**").permitAll()
.requestMatchers("/fh/**").permitAll()
.requestMatchers("/data/**").permitAll()
.requestMatchers("/mapLayer/**").permitAll()
.requestMatchers("/mapmodule/**").permitAll()
.requestMatchers("/mapLegend/**").permitAll()
.requestMatchers("/base/msalongb/**").permitAll()
.requestMatchers("/base/msalongdetb/**").permitAll()
// .requestMatchers("/eng/**").permitAll()
// .requestMatchers("/eq/**").permitAll()
// .requestMatchers("/env/**").permitAll()
// .requestMatchers("/warn/**").permitAll()
// .requestMatchers("/threedroamb/**").permitAll()
// .requestMatchers("/overview/**").permitAll()
// .requestMatchers("/wt/**").permitAll()
// .requestMatchers("/fb/**").permitAll()
// .requestMatchers("/base/**").permitAll()
// .requestMatchers("/zq/**").permitAll()
// .requestMatchers("/wq/**").permitAll()
// .requestMatchers("/wte/**").permitAll()
// .requestMatchers("/vd/**").permitAll()
// .requestMatchers("/vap/**").permitAll()
// .requestMatchers("/fp/**").permitAll()
// .requestMatchers("/fpr/**").permitAll()
// .requestMatchers("/fh/**").permitAll()
// .requestMatchers("/data/**").permitAll()
// .requestMatchers("/mapLayer/**").permitAll()
// .requestMatchers("/mapmodule/**").permitAll()
// .requestMatchers("/mapLegend/**").permitAll()
// .requestMatchers("/base/msalongb/**").permitAll()
// .requestMatchers("/base/msalongdetb/**").permitAll()
.requestMatchers("/sms/**").permitAll()
.requestMatchers(HttpMethod.GET, "/").permitAll()
.requestMatchers(HttpMethod.GET,

View File

@ -1,8 +1,11 @@
package com.yfd.platform.qgc_base.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yfd.platform.annotation.Log;
import com.yfd.platform.common.DataSourceRequest;
import com.yfd.platform.config.ResponseResult;
import com.yfd.platform.qgc_base.domain.SdEngInfoBHOperateRequest;
import com.yfd.platform.qgc_base.domain.SdFpssBH;
import com.yfd.platform.qgc_base.service.ISdFpssBHService;
import io.swagger.v3.oas.annotations.Operation;
@ -22,6 +25,8 @@ public class SdFpssBHController {
@Resource
private ISdFpssBHService sdFpssBHService;
@Resource
private ObjectMapper objectMapper;
@GetMapping("/queryPageList")
@Operation(summary = "分页查询过鱼设施列表")
@ -37,6 +42,13 @@ public class SdFpssBHController {
return ResponseResult.successData(result);
}
@PostMapping("/page")
@Operation(summary = "分页查询")
public ResponseResult queryPageList(@RequestBody DataSourceRequest request) {
Page<SdFpssBH> page = sdFpssBHService.queryPageList(request);
return ResponseResult.successData(page);
}
@GetMapping("/list")
@Operation(summary = "查询所有过鱼设施")
public ResponseResult list() {
@ -68,16 +80,18 @@ public class SdFpssBHController {
@Log(module = "过鱼设施管理", value = "新增过鱼设施")
@PostMapping("/add")
@Operation(summary = "新增过鱼设施")
public ResponseResult add(@RequestBody SdFpssBH sdFpssBH) {
boolean result = sdFpssBHService.add(sdFpssBH);
public ResponseResult add(@RequestBody SdEngInfoBHOperateRequest request) {
SdFpssBH entity = request == null || request.getEngInfo() == null ? null : objectMapper.convertValue(request.getEngInfo(), SdFpssBH.class);
boolean result = sdFpssBHService.add(entity, request == null ? null : request.getSource());
return result ? ResponseResult.success("新增成功") : ResponseResult.error("新增失败");
}
@Log(module = "过鱼设施管理", value = "修改过鱼设施")
@PostMapping("/update")
@Operation(summary = "修改过鱼设施")
public ResponseResult update(@RequestBody SdFpssBH sdFpssBH) {
boolean result = sdFpssBHService.updateById(sdFpssBH);
public ResponseResult update(@RequestBody SdEngInfoBHOperateRequest request) {
SdFpssBH entity = request == null || request.getEngInfo() == null ? null : objectMapper.convertValue(request.getEngInfo(), SdFpssBH.class);
boolean result = sdFpssBHService.updateById(entity, request == null ? null : request.getSource());
return result ? ResponseResult.success("修改成功") : ResponseResult.error("修改失败");
}

View File

@ -32,6 +32,11 @@ public class SdFpssBH implements Serializable {
*/
private String stnm;
/**
* 所属水电基地流域编码
*/
private String hbrvcd;
/**
* 数据时间
*/
@ -43,6 +48,17 @@ public class SdFpssBH implements Serializable {
*/
private String sttp;
@TableField(exist = false)
private String sttpName;
/**
* 所属基地编码
*/
private String baseId;
@TableField(exist = false)
private String baseName;
/**
* 所属建设阶段 字典编码common.blprd
* 1001000=规划 1002000=预可研 1003000=环评 1004000=可研 1005000=在建 1006000=招标设计
@ -80,6 +96,9 @@ public class SdFpssBH implements Serializable {
*/
private Integer dtin;
@TableField(exist = false)
private String dtinName;
/**
* 数据接入时间
*/
@ -95,6 +114,9 @@ public class SdFpssBH implements Serializable {
*/
private String rstcd;
@TableField(exist = false)
private String ennm;
/**
* 规划设计日期
*/
@ -130,6 +152,9 @@ public class SdFpssBH implements Serializable {
*/
private Integer bldsttCode;
@TableField(exist = false)
private String bldsttCodeName;
/**
* 简介
*/
@ -335,6 +360,11 @@ public class SdFpssBH implements Serializable {
*/
private String gytm;
/**
* 所属测站编码
*/
private String stCode;
/**
* 运行时间
*/
@ -360,11 +390,27 @@ public class SdFpssBH implements Serializable {
*/
private Integer isUp;
@TableField(exist = false)
private String isUpName;
/**
* 设施是否实现鱼类下行 0= 1=
*/
private Integer isDown;
@TableField(exist = false)
private String isDownName;
/**
* 监测方式1=人工 2=自动
*/
private Integer mway;
@TableField(exist = false)
private String mwayName;
/**
* 备注
*/

View File

@ -2,6 +2,8 @@ package com.yfd.platform.qgc_base.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yfd.platform.common.DataSourceRequest;
import com.yfd.platform.qgc_base.domain.SdFhbtBH;
import com.yfd.platform.qgc_base.domain.SdFpssBH;
import java.util.List;
@ -20,11 +22,13 @@ public interface ISdFpssBHService extends IService<SdFpssBH> {
Set<String> getUserAuthorizedStationCodes();
boolean add(SdFpssBH sdFpssBH);
boolean add(SdFpssBH sdFpssBH, String source);
boolean updateById(SdFpssBH sdFpssBH);
boolean updateById(SdFpssBH sdFpssBH, String source);
boolean deleteById(String stcd, String sttp);
SdFpssBH getDetail(String stcd, String sttp);
Page<SdFpssBH> queryPageList(DataSourceRequest request);
}

View File

@ -3,14 +3,19 @@ package com.yfd.platform.qgc_base.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.qgc_data.domain.SysUserDataScope;
import com.yfd.platform.qgc_data.mapper.SysUserDataScopeMapper;
import com.yfd.platform.common.DataSourceRequest;
import com.yfd.platform.qgc_base.domain.SdEngInfoBH;
import com.yfd.platform.qgc_base.domain.SdFpssBH;
import com.yfd.platform.qgc_base.mapper.SdEngInfoBHMapper;
import com.yfd.platform.qgc_base.mapper.SdFpssBHMapper;
import com.yfd.platform.qgc_base.service.IMsOperationLogService;
import com.yfd.platform.qgc_base.service.ISdFpssBHService;
import com.yfd.platform.qgc_data.domain.SysUserDataScope;
import com.yfd.platform.qgc_data.mapper.SysUserDataScopeMapper;
import com.yfd.platform.system.service.IAdminAuthService;
import com.yfd.platform.utils.CodeToNameMetadataBo;
import com.yfd.platform.utils.DataSourceRequestUtil;
import com.yfd.platform.utils.DictCodeToNameConverter;
import com.yfd.platform.utils.SecurityUtils;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
@ -25,6 +30,7 @@ import java.util.stream.Collectors;
@Service
public class SdFpssBHServiceImpl extends ServiceImpl<SdFpssBHMapper, SdFpssBH> implements ISdFpssBHService {
private static final String TABLE_NAME = "SD_FPSS_B_H";
@Resource
private SysUserDataScopeMapper sysUserDataScopeMapper;
@Resource
@ -33,6 +39,41 @@ public class SdFpssBHServiceImpl extends ServiceImpl<SdFpssBHMapper, SdFpssBH> i
@Resource
private IAdminAuthService adminAuthService;
@Resource
private DictCodeToNameConverter dictCodeToNameConverter;
@Resource
private IMsOperationLogService msOperationLogService;
/**
* 代码转名称元数据配置列表静态初始化
* <p>
* 每个模块的 ServiceImpl 中可按需定义自己的 codeToNameMetadataBoList
* 在查询方法返回前调用 dictCodeToNameConverter.convertCodeToName(voList, codeToNameMetadataBoList)
* 即可自动将 code 字段转为对应的 name 字段
* </p>
*
* <pre>
* 使用示例
* // 在查询方法末尾调用
* dictCodeToNameConverter.convertCodeToName(voList, CODE_TO_NAME_META_LIST);
* </pre>
*/
private static final List<CodeToNameMetadataBo> CODE_TO_NAME_META_LIST = new ArrayList<>();
static {
CODE_TO_NAME_META_LIST.add(CodeToNameMetadataBo.builder().codeProperty("dtin").modifyProperty("dtinName").dictType("STATIC").dictSource("DTIN").build());
CODE_TO_NAME_META_LIST.add(CodeToNameMetadataBo.builder().codeProperty("bldsttCode").modifyProperty("bldsttCodeName").dictType("STATIC").dictSource("BLDSTT_CODE").build());
// CODE_TO_NAME_META_LIST.add(CodeToNameMetadataBo.builder().codeProperty("dtinType").modifyProperty("dtinTypeName").dictType("STATIC").dictSource("DTIN_TYPE").build());
CODE_TO_NAME_META_LIST.add(CodeToNameMetadataBo.builder().codeProperty("sttp").modifyProperty("sttpName").dictType("DYNAMIC").dictSource("SD_STTP_B").codeColumn("STTP_CODE").nameColumn("STTP_NAME").filter("NVL(IS_DELETED, 0) = 0 ").build());
CODE_TO_NAME_META_LIST.add(CodeToNameMetadataBo.builder().codeProperty("baseId").modifyProperty("baseName").dictType("DYNAMIC").dictSource("SD_HYDROBASE").codeColumn("BASEID").nameColumn("BASENAME").filter("NVL(IS_DELETED, 0) = 0 ").build());
CODE_TO_NAME_META_LIST.add(CodeToNameMetadataBo.builder().codeProperty("rstcd").modifyProperty("ennm").dictType("DYNAMIC").dictSource("SD_ENGINFO_B_H").codeColumn("STCD").nameColumn("ENNM").filter("NVL(IS_DELETED, 0) = 0 ").build());
CODE_TO_NAME_META_LIST.add(CodeToNameMetadataBo.builder().codeProperty("rvcd").modifyProperty("rvnm").dictType("DYNAMIC").dictSource("V_SD_RVCD_DIC_TREE").codeColumn("RVCD").nameColumn("RVNM").build());
CODE_TO_NAME_META_LIST.add(CodeToNameMetadataBo.builder().codeProperty("mway").modifyProperty("mwayName").dictType("STATIC").dictSource("MWAY").build());
CODE_TO_NAME_META_LIST.add(CodeToNameMetadataBo.builder().codeProperty("isUp").modifyProperty("isUpName").dictType("STATIC").dictSource("TY_SF").build());
CODE_TO_NAME_META_LIST.add(CodeToNameMetadataBo.builder().codeProperty("isDown").modifyProperty("isDownName").dictType("STATIC").dictSource("TY_SF").build());
}
@Override
public Page<SdFpssBH> selectPage(String stcd, String sttp, String rstcd, Integer usfl, Page<SdFpssBH> page) {
@ -173,12 +214,16 @@ public class SdFpssBHServiceImpl extends ServiceImpl<SdFpssBHMapper, SdFpssBH> i
}
@Override
public boolean add(SdFpssBH sdFpssBH) {
return save(sdFpssBH);
public boolean add(SdFpssBH entity, String source) {
boolean result = save(entity);
if (result) {
msOperationLogService.recordOperationLog(TABLE_NAME, entity.getStcd(), "新增", source);
}
return result;
}
@Override
public boolean updateById(SdFpssBH sdFpssBH) {
public boolean updateById(SdFpssBH sdFpssBH, String source) {
LambdaQueryWrapper<SdFpssBH> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SdFpssBH::getStcd, sdFpssBH.getStcd())
.eq(SdFpssBH::getSttp, sdFpssBH.getSttp());
@ -200,4 +245,11 @@ public class SdFpssBHServiceImpl extends ServiceImpl<SdFpssBHMapper, SdFpssBH> i
.eq(SdFpssBH::getSttp, sttp);
return getOne(wrapper);
}
@Override
public Page<SdFpssBH> queryPageList(DataSourceRequest request) {
Page<SdFpssBH> sdFpssBHPage = DataSourceRequestUtil.executeQuery(request, SdFpssBH.class, this);
dictCodeToNameConverter.convertCodeToName(sdFpssBHPage, CODE_TO_NAME_META_LIST);
return sdFpssBHPage;
}
}

View File

@ -162,14 +162,26 @@ public class MsAlongBServiceImpl extends ServiceImpl<MsAlongBMapper, MsAlongB> i
StringBuilder sql = new StringBuilder("SELECT * FROM SD_STTP_B WHERE NVL(IS_DELETED, 0) = 0");
Map<String, Object> paramMap = new HashMap<>();
// 解析过滤条件
if (dataSourceRequest != null && dataSourceRequest.getFilter() != null) {
String filterSql = parseSttpFilter(dataSourceRequest.getFilter(), paramMap, new int[]{0});
if (StrUtil.isNotBlank(filterSql)) {
sql.append(" AND ").append(filterSql);
}
String filterSql = QgcQueryWrapperUtil.buildFilterCondition(
dataSourceRequest.getFilter(),
paramMap,
new int[]{0},
this::mapWeFvColumn
);
if (StrUtil.isNotBlank(filterSql)) {
sql.append("AND ").append(filterSql).append(" ");
}
// 解析过滤条件
// if (dataSourceRequest != null && dataSourceRequest.getFilter() != null) {
// String filterSql = parseSttpFilter(dataSourceRequest.getFilter(), paramMap, new int[]{0});
// if (StrUtil.isNotBlank(filterSql)) {
// sql.append(" AND ").append(filterSql);
// }
// }
// 解析排序
if (dataSourceRequest != null && CollUtil.isNotEmpty(dataSourceRequest.getSort())) {
List<String> orderList = new ArrayList<>();
@ -200,6 +212,18 @@ public class MsAlongBServiceImpl extends ServiceImpl<MsAlongBMapper, MsAlongB> i
return result;
}
private String mapWeFvColumn(String field) {
if (StrUtil.isBlank(field)) {
return null;
}
return switch (field.toLowerCase()) {
case "sttpcode" -> "STTP_CODE";
case "lgtd" -> "lgtd";
default -> null;
};
}
/**
* 递归解析站类过滤条件
*/