fix: 下拉列表查询

This commit is contained in:
tangwei 2026-06-04 16:43:36 +08:00
parent 57015b1e28
commit e1d8809a03
8 changed files with 156 additions and 6 deletions

View File

@ -102,4 +102,20 @@ public class SdRvcdDicController {
boolean result = rvcdDicService.deleteRvcdDic(rvcd);
return result ? ResponseResult.success("删除成功") : ResponseResult.error("删除失败");
}
@GetMapping("/selectForDropdown")
@Operation(summary = "下拉框列表查询")
public ResponseResult selectForDropdown(
@RequestParam(required = false) String rvnm,
@RequestParam(required = false) String rvcd) {
return ResponseResult.successData(rvcdDicService.selectForDropdown(rvnm, rvcd));
}
@GetMapping("/regDropdown")
@Operation(summary = "下拉框列表查询(注册)")
public ResponseResult regDropdown(
@RequestParam(required = false) String rvnm,
@RequestParam(required = false) String rvcd) {
return ResponseResult.successData(rvcdDicService.regDropdown(rvnm, rvcd));
}
}

View File

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.yfd.platform.qgc_base.domain.SdRvcdDic;
import java.util.List;
import java.util.Set;
/**
* <p>
@ -43,10 +44,16 @@ public interface ISdRvcdDicService extends IService<SdRvcdDic> {
*/
boolean deleteRvcdDic(String rvcd);
Set<String> getUserAuthorizedStationCodes();
/**
* 获取流域树形结构
* @param rvcd 流域编码可选为空则返回全部
* @param rvnm 流域名称可选用于模糊搜索
*/
List<SdRvcdDic> getTree(String rvcd, String rvnm);
List<SdRvcdDic> selectForDropdown(String rvnm, String rvcd);
List<SdRvcdDic> regDropdown(String rvnm, String rvcd);
}

View File

@ -96,7 +96,7 @@ public class SdHbrvDicServiceImpl extends ServiceImpl<SdHbrvDicMapper, SdHbrvDic
wrapper.like(hbrvnm != null && !hbrvnm.isEmpty(), SdHbrvDic::getHbrvnm, hbrvnm)
.eq(baseid != null && !baseid.isEmpty(), SdHbrvDic::getBaseid, baseid)
.eq(SdHbrvDic::getEnabled, 1)
.orderByAsc(SdHbrvDic::getOrderIndex);
.orderByAsc(SdHbrvDic::getBaseid,SdHbrvDic::getOrderIndex);
if("admin".equals(SecurityUtils.getCurrentUsername())){
return this.list(wrapper);
}
@ -197,7 +197,7 @@ public class SdHbrvDicServiceImpl extends ServiceImpl<SdHbrvDicMapper, SdHbrvDic
.like(hbrvnm != null && !hbrvnm.isEmpty(), SdHbrvDic::getHbrvnm, hbrvnm)
.eq(baseid != null && !baseid.isEmpty(), SdHbrvDic::getBaseid, baseid)
.eq(SdHbrvDic::getEnabled, 1)
.orderByAsc(SdHbrvDic::getOrderIndex)
.orderByAsc(SdHbrvDic::getBaseid,SdHbrvDic::getOrderIndex)
.list();
}
}

View File

@ -1,10 +1,17 @@
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_base.domain.SdEngInfoBH;
import com.yfd.platform.qgc_base.domain.SdRvcdDic;
import com.yfd.platform.qgc_base.mapper.SdEngInfoBHMapper;
import com.yfd.platform.qgc_base.mapper.SdRvcdDicMapper;
import com.yfd.platform.qgc_base.service.ISdRvcdDicService;
import com.yfd.platform.qgc_data.domain.SysUserDataScope;
import com.yfd.platform.qgc_data.mapper.SysUserDataScopeMapper;
import com.yfd.platform.utils.SecurityUtils;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
@ -19,6 +26,12 @@ import java.util.stream.Collectors;
@Service
public class SdRvcdDicServiceImpl extends ServiceImpl<SdRvcdDicMapper, SdRvcdDic> implements ISdRvcdDicService {
@Resource
private SdEngInfoBHMapper engInfoBHMapper;
@Resource
private SysUserDataScopeMapper sysUserDataScopeMapper;
@Override
public Page<SdRvcdDic> queryPageList(Page<SdRvcdDic> page, String rvnm, String prvcd) {
return this.page(page, this.lambdaQuery()
@ -103,6 +116,120 @@ public class SdRvcdDicServiceImpl extends ServiceImpl<SdRvcdDicMapper, SdRvcdDic
return result;
}
@Override
public List<SdRvcdDic> selectForDropdown(String rvnm, String rvcd) {
LambdaQueryWrapper<SdRvcdDic> wrapper = new LambdaQueryWrapper<>();
wrapper.like(rvnm != null && !rvnm.isEmpty(), SdRvcdDic::getRvnm, rvnm)
.eq(rvcd != null && !rvcd.isEmpty(), SdRvcdDic::getRvcd, rvcd)
.eq(SdRvcdDic::getEnabled, 1)
.orderByAsc(SdRvcdDic::getBaseid,SdRvcdDic::getOrderIndex);
if("admin".equals(SecurityUtils.getCurrentUsername())){
return this.list(wrapper);
}
Set<String> authorizedStations = getUserAuthorizedStationCodes();
if (authorizedStations != null && !authorizedStations.isEmpty()) {
List<SdEngInfoBH> engInfos = engInfoBHMapper.selectList(
new LambdaQueryWrapper<SdEngInfoBH>()
.select(SdEngInfoBH::getRvcd)
.in(SdEngInfoBH::getStcd, authorizedStations)
);
List<String> rvcds = engInfos.stream()
.map(SdEngInfoBH::getRvcd)
.filter(id -> id != null && !id.isEmpty())
.distinct()
.toList();
if (!rvcds.isEmpty()) {
List<SdRvcdDic> list = this.list(wrapper);
return list.stream()
.filter(rvcdDic -> rvcds.contains(rvcdDic.getRvcd()))
.collect(Collectors.toList());
} else {
return new ArrayList<>();
}
}else {
return new ArrayList<>();
}
}
@Override
public Set<String> getUserAuthorizedStationCodes() {
String userId = SecurityUtils.getUserId();
List<SysUserDataScope> sysUserDataScopes = sysUserDataScopeMapper.selectList(
new LambdaQueryWrapper<SysUserDataScope>()
.eq(SysUserDataScope::getUserId, userId)
.select(SysUserDataScope::getOrgId, SysUserDataScope::getOrgType)
);
if (sysUserDataScopes == null || sysUserDataScopes.isEmpty()) {
return new HashSet<>();
}
Set<String> stationCodes = new HashSet<>();
Set<String> basinCodes = new HashSet<>();
for (SysUserDataScope scope : sysUserDataScopes) {
String orgType = scope.getOrgType();
String orgId = scope.getOrgId();
if ("STATION".equals(orgType)) {
SdEngInfoBH station = engInfoBHMapper.selectById(orgId);
if (station != null) {
if (station.getRvcd() != null) {
basinCodes.add(station.getRvcd());
}
if (station.getStcd() != null) {
stationCodes.add(station.getStcd());
}
}
} else if ("RVCD".equals(orgType)) {
List<SdEngInfoBH> stationList = engInfoBHMapper.selectByRvcd(orgId);
if (stationList != null) {
for (SdEngInfoBH station : stationList) {
if (station.getStcd() != null) {
stationCodes.add(station.getStcd());
}
if (station.getEnnm() != null) {
basinCodes.add(station.getRvcd());
}
}
}
}
}
if (!stationCodes.isEmpty()) {
return stationCodes;
}
if (!basinCodes.isEmpty()) {
List<SdEngInfoBH> engInfos = engInfoBHMapper.selectList(
new LambdaQueryWrapper<SdEngInfoBH>()
.select(SdEngInfoBH::getStcd)
.in(SdEngInfoBH::getRvcd, basinCodes)
);
return engInfos.stream()
.map(SdEngInfoBH::getStcd)
.collect(Collectors.toSet());
}
return stationCodes;
}
@Override
public List<SdRvcdDic> regDropdown(String rvnm, String rvcd) {
return this.lambdaQuery()
.like(rvnm != null && !rvnm.isEmpty(), SdRvcdDic::getRvnm, rvnm)
.eq(rvcd != null && !rvcd.isEmpty(), SdRvcdDic::getRvcd, rvcd)
.eq(SdRvcdDic::getEnabled, 1)
.orderByAsc(SdRvcdDic::getBaseid,SdRvcdDic::getOrderIndex)
.list();
}
private void buildTreeRecursive(SdRvcdDic parent, Map<String, List<SdRvcdDic>> childrenMap, Set<String> rootRvcdSet) {
List<SdRvcdDic> children = childrenMap.get(parent.getRvcd());
if (children != null && !children.isEmpty()) {

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yfd.platform.data.mapper.FishDraftDataMapper">
<mapper namespace="com.yfd.platform.qgc_data.mapper.FishDraftDataMapper">
<resultMap id="BaseResultMap" type="com.yfd.platform.qgc_data.domain.FishDraftData">
<id column="ID" property="id"/>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yfd.platform.data.mapper.FishStatisticsMapper">
<mapper namespace="com.yfd.platform.qgc_data.mapper.FishStatisticsMapper">
<resultMap id="StatisticsResultMap" type="com.yfd.platform.qgc_data.domain.vo.FishStatisticsVO">
<result column="USER_ID" property="userId"/>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yfd.platform.data.mapper.ImportTaskRowMapper">
<mapper namespace="com.yfd.platform.qgc_data.mapper.ImportTaskRowMapper">
<resultMap id="BaseResultMap" type="com.yfd.platform.qgc_data.domain.ImportTaskRow">
<id column="ID" property="id"/>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yfd.platform.data.mapper.SysUserDataScopeMapper">
<mapper namespace="com.yfd.platform.qgc_data.mapper.SysUserDataScopeMapper">
<resultMap id="BaseResultMap" type="com.yfd.platform.qgc_data.domain.SysUserDataScope">
<id column="ID" property="id"/>