fix: 优化过鱼数据权限
This commit is contained in:
parent
8eea3cbb74
commit
53c08bd833
@ -206,7 +206,7 @@ public class FishDraftData implements Serializable {
|
|||||||
* 设施名称
|
* 设施名称
|
||||||
*/
|
*/
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private String fpname;
|
private String stnm;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 鱼类名称
|
* 鱼类名称
|
||||||
|
|||||||
@ -92,7 +92,7 @@ public class FishImportServiceImpl implements IFishImportService {
|
|||||||
|
|
||||||
EXCEL_COLUMN_INDEX_MAPPING.put(0, "baseName");
|
EXCEL_COLUMN_INDEX_MAPPING.put(0, "baseName");
|
||||||
EXCEL_COLUMN_INDEX_MAPPING.put(1, "stationName");
|
EXCEL_COLUMN_INDEX_MAPPING.put(1, "stationName");
|
||||||
EXCEL_COLUMN_INDEX_MAPPING.put(2, "fpname");
|
EXCEL_COLUMN_INDEX_MAPPING.put(2, "stnm");
|
||||||
EXCEL_COLUMN_INDEX_MAPPING.put(3, "strdt");
|
EXCEL_COLUMN_INDEX_MAPPING.put(3, "strdt");
|
||||||
EXCEL_COLUMN_INDEX_MAPPING.put(4, "ftp");
|
EXCEL_COLUMN_INDEX_MAPPING.put(4, "ftp");
|
||||||
EXCEL_COLUMN_INDEX_MAPPING.put(5, "isfs");
|
EXCEL_COLUMN_INDEX_MAPPING.put(5, "isfs");
|
||||||
@ -314,7 +314,7 @@ public class FishImportServiceImpl implements IFishImportService {
|
|||||||
case "sourceType":
|
case "sourceType":
|
||||||
data.setSourceType(parseSourceType(cellValue.trim()));
|
data.setSourceType(parseSourceType(cellValue.trim()));
|
||||||
break;
|
break;
|
||||||
case "fpname":
|
case "stnm":
|
||||||
if (!StringUtils.hasText(cellValue)) {
|
if (!StringUtils.hasText(cellValue)) {
|
||||||
missingRequiredFields.add("过鱼设施名称");
|
missingRequiredFields.add("过鱼设施名称");
|
||||||
} else {
|
} else {
|
||||||
@ -322,9 +322,9 @@ public class FishImportServiceImpl implements IFishImportService {
|
|||||||
if (stcd == null) {
|
if (stcd == null) {
|
||||||
importRow.getWarnings().add(fieldName);
|
importRow.getWarnings().add(fieldName);
|
||||||
data.setStcd(cellValue.trim());
|
data.setStcd(cellValue.trim());
|
||||||
data.setFpname(cellValue.trim());
|
data.setStnm(cellValue.trim());
|
||||||
} else {
|
} else {
|
||||||
data.setFpname(stcd);
|
data.setStnm(stcd);
|
||||||
data.setStcd(stcd);
|
data.setStcd(stcd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
|||||||
import com.yfd.platform.env.domain.SdEngInfoBH;
|
import com.yfd.platform.env.domain.SdEngInfoBH;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@ -38,6 +39,8 @@ public interface ISdEngInfoBHService extends IService<SdEngInfoBH> {
|
|||||||
*/
|
*/
|
||||||
List<SdEngInfoBH> selectForDropdown(String baseId, String ennm);
|
List<SdEngInfoBH> selectForDropdown(String baseId, String ennm);
|
||||||
|
|
||||||
|
Set<String> getUserAuthorizedStationCodes();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增电站
|
* 新增电站
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
|||||||
import com.yfd.platform.env.domain.SdFpssBH;
|
import com.yfd.platform.env.domain.SdFpssBH;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
public interface ISdFpssBHService extends IService<SdFpssBH> {
|
public interface ISdFpssBHService extends IService<SdFpssBH> {
|
||||||
|
|
||||||
@ -17,6 +18,8 @@ public interface ISdFpssBHService extends IService<SdFpssBH> {
|
|||||||
*/
|
*/
|
||||||
List<SdFpssBH> selectForDropdown(String rstcd, String stnm, String baseId);
|
List<SdFpssBH> selectForDropdown(String rstcd, String stnm, String baseId);
|
||||||
|
|
||||||
|
Set<String> getUserAuthorizedStationCodes();
|
||||||
|
|
||||||
boolean add(SdFpssBH sdFpssBH);
|
boolean add(SdFpssBH sdFpssBH);
|
||||||
|
|
||||||
boolean updateById(SdFpssBH sdFpssBH);
|
boolean updateById(SdFpssBH sdFpssBH);
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
|||||||
import com.yfd.platform.env.domain.SdHydrobase;
|
import com.yfd.platform.env.domain.SdHydrobase;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@ -33,6 +34,8 @@ public interface ISdHydrobaseService extends IService<SdHydrobase> {
|
|||||||
*/
|
*/
|
||||||
List<SdHydrobase> selectForDropdown(String basename);
|
List<SdHydrobase> selectForDropdown(String basename);
|
||||||
|
|
||||||
|
Set<String> getUserAuthorizedStationCodes();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增基地
|
* 新增基地
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -1,15 +1,23 @@
|
|||||||
package com.yfd.platform.env.service.impl;
|
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.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.yfd.platform.data.domain.SysUserDataScope;
|
||||||
|
import com.yfd.platform.data.mapper.SysUserDataScopeMapper;
|
||||||
import com.yfd.platform.env.domain.SdEngInfoBH;
|
import com.yfd.platform.env.domain.SdEngInfoBH;
|
||||||
import com.yfd.platform.env.mapper.SdEngInfoBHMapper;
|
import com.yfd.platform.env.mapper.SdEngInfoBHMapper;
|
||||||
import com.yfd.platform.env.service.ISdEngInfoBHService;
|
import com.yfd.platform.env.service.ISdEngInfoBHService;
|
||||||
|
import com.yfd.platform.utils.SecurityUtils;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@ -19,19 +27,26 @@ import java.util.List;
|
|||||||
@Service
|
@Service
|
||||||
public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEngInfoBH> implements ISdEngInfoBHService {
|
public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEngInfoBH> implements ISdEngInfoBHService {
|
||||||
|
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private SdEngInfoBHMapper engInfoBHMapper;
|
private SdEngInfoBHMapper engInfoBHMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SysUserDataScopeMapper sysUserDataScopeMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Page<SdEngInfoBH> queryPageList(Page<SdEngInfoBH> page, String ennm, String rvcd, String baseId, String hycd) {
|
public Page<SdEngInfoBH> queryPageList(Page<SdEngInfoBH> page, String ennm, String rvcd, String baseId, String hycd) {
|
||||||
return this.page(page, this.lambdaQuery()
|
LambdaQueryWrapper<SdEngInfoBH> wrapper = new LambdaQueryWrapper<>();
|
||||||
.like(ennm != null && !ennm.isEmpty(), SdEngInfoBH::getEnnm, ennm)
|
wrapper .like(ennm != null && !ennm.isEmpty(), SdEngInfoBH::getEnnm, ennm)
|
||||||
.eq(rvcd != null && !rvcd.isEmpty(), SdEngInfoBH::getRvcd, rvcd)
|
.eq(rvcd != null && !rvcd.isEmpty(), SdEngInfoBH::getRvcd, rvcd)
|
||||||
.eq(baseId != null && !baseId.isEmpty(), SdEngInfoBH::getBaseId, baseId)
|
.eq(baseId != null && !baseId.isEmpty(), SdEngInfoBH::getBaseId, baseId)
|
||||||
.eq(hycd != null && !hycd.isEmpty(), SdEngInfoBH::getHycd, hycd)
|
.eq(hycd != null && !hycd.isEmpty(), SdEngInfoBH::getHycd, hycd)
|
||||||
.orderByAsc(SdEngInfoBH::getOrderIndex)
|
.orderByAsc(SdEngInfoBH::getOrderIndex);
|
||||||
.getWrapper());
|
|
||||||
|
Set<String> authorizedStations = getUserAuthorizedStationCodes();
|
||||||
|
if (authorizedStations != null && !authorizedStations.isEmpty()) {
|
||||||
|
wrapper.in(SdEngInfoBH::getStcd, authorizedStations);
|
||||||
|
}
|
||||||
|
return this.page(page, wrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -51,12 +66,64 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<SdEngInfoBH> selectForDropdown(String baseId, String ennm) {
|
public List<SdEngInfoBH> selectForDropdown(String baseId, String ennm) {
|
||||||
return this.lambdaQuery()
|
LambdaQueryWrapper<SdEngInfoBH> wrapper = new LambdaQueryWrapper<>();
|
||||||
.eq(StringUtils.hasText(baseId), SdEngInfoBH::getBaseId, baseId)
|
wrapper.eq(StringUtils.hasText(baseId), SdEngInfoBH::getBaseId, baseId)
|
||||||
.like(StringUtils.hasText(ennm), SdEngInfoBH::getEnnm, ennm)
|
.like(StringUtils.hasText(ennm), SdEngInfoBH::getEnnm, ennm)
|
||||||
.select(SdEngInfoBH::getStcd, SdEngInfoBH::getEnnm, SdEngInfoBH::getBaseId)
|
.select(SdEngInfoBH::getStcd, SdEngInfoBH::getEnnm, SdEngInfoBH::getBaseId)
|
||||||
.orderByAsc(SdEngInfoBH::getOrderIndex)
|
.orderByAsc(SdEngInfoBH::getOrderIndex);
|
||||||
.list();
|
|
||||||
|
Set<String> authorizedStations = getUserAuthorizedStationCodes();
|
||||||
|
if (authorizedStations != null && !authorizedStations.isEmpty()) {
|
||||||
|
wrapper.in(SdEngInfoBH::getStcd, authorizedStations);
|
||||||
|
} else {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.list(wrapper);
|
||||||
|
}
|
||||||
|
|
||||||
|
@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<>();
|
||||||
|
List<String> basinCodes = new ArrayList<>();
|
||||||
|
|
||||||
|
for (SysUserDataScope scope : sysUserDataScopes) {
|
||||||
|
String orgType = scope.getOrgType();
|
||||||
|
String orgId = scope.getOrgId();
|
||||||
|
|
||||||
|
if ("STATION".equals(orgType)) {
|
||||||
|
stationCodes.add(orgId);
|
||||||
|
} else if ("BASIN".equals(orgType)) {
|
||||||
|
basinCodes.add(orgId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!stationCodes.isEmpty()) {
|
||||||
|
return stationCodes;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!basinCodes.isEmpty()) {
|
||||||
|
List<SdEngInfoBH> engInfos = this.lambdaQuery()
|
||||||
|
.select(SdEngInfoBH::getStcd)
|
||||||
|
.in(SdEngInfoBH::getRvcd, basinCodes)
|
||||||
|
.list();
|
||||||
|
return engInfos.stream()
|
||||||
|
.map(SdEngInfoBH::getStcd)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
}
|
||||||
|
|
||||||
|
return stationCodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -3,17 +3,33 @@ package com.yfd.platform.env.service.impl;
|
|||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.yfd.platform.data.domain.SysUserDataScope;
|
||||||
|
import com.yfd.platform.data.mapper.SysUserDataScopeMapper;
|
||||||
|
import com.yfd.platform.env.domain.SdEngInfoBH;
|
||||||
import com.yfd.platform.env.domain.SdFpssBH;
|
import com.yfd.platform.env.domain.SdFpssBH;
|
||||||
|
import com.yfd.platform.env.mapper.SdEngInfoBHMapper;
|
||||||
import com.yfd.platform.env.mapper.SdFpssBHMapper;
|
import com.yfd.platform.env.mapper.SdFpssBHMapper;
|
||||||
import com.yfd.platform.env.service.ISdFpssBHService;
|
import com.yfd.platform.env.service.ISdFpssBHService;
|
||||||
|
import com.yfd.platform.utils.SecurityUtils;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class SdFpssBHServiceImpl extends ServiceImpl<SdFpssBHMapper, SdFpssBH> implements ISdFpssBHService {
|
public class SdFpssBHServiceImpl extends ServiceImpl<SdFpssBHMapper, SdFpssBH> implements ISdFpssBHService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SysUserDataScopeMapper sysUserDataScopeMapper;
|
||||||
|
@Resource
|
||||||
|
private SdEngInfoBHMapper sdEngInfoBHMapper;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Page<SdFpssBH> selectPage(String stcd, String sttp, String rstcd, Integer usfl, Page<SdFpssBH> page) {
|
public Page<SdFpssBH> selectPage(String stcd, String sttp, String rstcd, Integer usfl, Page<SdFpssBH> page) {
|
||||||
LambdaQueryWrapper<SdFpssBH> wrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<SdFpssBH> wrapper = new LambdaQueryWrapper<>();
|
||||||
@ -31,6 +47,11 @@ public class SdFpssBHServiceImpl extends ServiceImpl<SdFpssBHMapper, SdFpssBH> i
|
|||||||
wrapper.eq(SdFpssBH::getUsfl, usfl);
|
wrapper.eq(SdFpssBH::getUsfl, usfl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Set<String> authorizedStations = getUserAuthorizedStationCodes();
|
||||||
|
if (authorizedStations != null && !authorizedStations.isEmpty()) {
|
||||||
|
wrapper.in(SdFpssBH::getRstcd, authorizedStations);
|
||||||
|
}
|
||||||
|
|
||||||
wrapper.orderByDesc(SdFpssBH::getOrderIndex);
|
wrapper.orderByDesc(SdFpssBH::getOrderIndex);
|
||||||
return page(page, wrapper);
|
return page(page, wrapper);
|
||||||
}
|
}
|
||||||
@ -44,15 +65,72 @@ public class SdFpssBHServiceImpl extends ServiceImpl<SdFpssBHMapper, SdFpssBH> i
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<SdFpssBH> selectForDropdown(String rstcd, String stnm, String baseId) {
|
public List<SdFpssBH> selectForDropdown(String rstcd, String stnm, String baseId) {
|
||||||
|
Set<String> authorizedStations = getUserAuthorizedStationCodes();
|
||||||
|
|
||||||
|
if (authorizedStations == null || authorizedStations.isEmpty()) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
List<SdFpssBH> result;
|
||||||
|
|
||||||
if (StringUtils.hasText(baseId)) {
|
if (StringUtils.hasText(baseId)) {
|
||||||
return baseMapper.selectForDropdownWithBaseId(rstcd, stnm, baseId);
|
result = baseMapper.selectForDropdownWithBaseId(rstcd, stnm, baseId);
|
||||||
} else {
|
} else {
|
||||||
LambdaQueryWrapper<SdFpssBH> wrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<SdFpssBH> wrapper = new LambdaQueryWrapper<>();
|
||||||
wrapper.eq(StringUtils.hasText(rstcd), SdFpssBH::getRstcd, rstcd)
|
wrapper.eq(StringUtils.hasText(rstcd), SdFpssBH::getRstcd, rstcd)
|
||||||
.like(StringUtils.hasText(stnm), SdFpssBH::getStnm, stnm)
|
.like(StringUtils.hasText(stnm), SdFpssBH::getStnm, stnm)
|
||||||
.orderByDesc(SdFpssBH::getOrderIndex);
|
.orderByDesc(SdFpssBH::getOrderIndex);
|
||||||
return list(wrapper);
|
result = list(wrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return result.stream()
|
||||||
|
.filter(fpss -> authorizedStations.contains(fpss.getRstcd()))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
@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<>();
|
||||||
|
List<String> basinCodes = new ArrayList<>();
|
||||||
|
|
||||||
|
for (SysUserDataScope scope : sysUserDataScopes) {
|
||||||
|
String orgType = scope.getOrgType();
|
||||||
|
String orgId = scope.getOrgId();
|
||||||
|
|
||||||
|
if ("STATION".equals(orgType)) {
|
||||||
|
stationCodes.add(orgId);
|
||||||
|
} else if ("BASIN".equals(orgType)) {
|
||||||
|
basinCodes.add(orgId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!stationCodes.isEmpty()) {
|
||||||
|
return stationCodes;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!basinCodes.isEmpty()) {
|
||||||
|
List<SdEngInfoBH> engInfos = sdEngInfoBHMapper.selectList(
|
||||||
|
new LambdaQueryWrapper<SdEngInfoBH>()
|
||||||
|
.select(SdEngInfoBH::getStcd)
|
||||||
|
.in(SdEngInfoBH::getRvcd, basinCodes)
|
||||||
|
);
|
||||||
|
return engInfos.stream()
|
||||||
|
.map(SdEngInfoBH::getStcd)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
}
|
||||||
|
|
||||||
|
return stationCodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -1,14 +1,25 @@
|
|||||||
package com.yfd.platform.env.service.impl;
|
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.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.yfd.platform.data.domain.SysUserDataScope;
|
||||||
|
import com.yfd.platform.data.mapper.SysUserDataScopeMapper;
|
||||||
|
import com.yfd.platform.env.domain.SdEngInfoBH;
|
||||||
import com.yfd.platform.env.domain.SdHydrobase;
|
import com.yfd.platform.env.domain.SdHydrobase;
|
||||||
|
import com.yfd.platform.env.mapper.SdEngInfoBHMapper;
|
||||||
import com.yfd.platform.env.mapper.SdHydrobaseMapper;
|
import com.yfd.platform.env.mapper.SdHydrobaseMapper;
|
||||||
import com.yfd.platform.env.service.ISdHydrobaseService;
|
import com.yfd.platform.env.service.ISdHydrobaseService;
|
||||||
|
import com.yfd.platform.utils.SecurityUtils;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@ -18,6 +29,12 @@ import java.util.List;
|
|||||||
@Service
|
@Service
|
||||||
public class SdHydrobaseServiceImpl extends ServiceImpl<SdHydrobaseMapper, SdHydrobase> implements ISdHydrobaseService {
|
public class SdHydrobaseServiceImpl extends ServiceImpl<SdHydrobaseMapper, SdHydrobase> implements ISdHydrobaseService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SysUserDataScopeMapper sysUserDataScopeMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SdEngInfoBHMapper sdEngInfoBHMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Page<SdHydrobase> queryPageList(Page<SdHydrobase> page, String basename, String pbaseid) {
|
public Page<SdHydrobase> queryPageList(Page<SdHydrobase> page, String basename, String pbaseid) {
|
||||||
return this.page(page, this.lambdaQuery()
|
return this.page(page, this.lambdaQuery()
|
||||||
@ -45,10 +62,81 @@ public class SdHydrobaseServiceImpl extends ServiceImpl<SdHydrobaseMapper, SdHyd
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<SdHydrobase> selectForDropdown(String basename) {
|
public List<SdHydrobase> selectForDropdown(String basename) {
|
||||||
return this.lambdaQuery()
|
LambdaQueryWrapper<SdHydrobase> wrapper = new LambdaQueryWrapper<>();
|
||||||
.like(StringUtils.hasText(basename), SdHydrobase::getBasename, basename)
|
|
||||||
.orderByAsc(SdHydrobase::getOrderIndex)
|
if (StringUtils.hasText(basename)) {
|
||||||
.list();
|
wrapper.like(SdHydrobase::getBasename, basename);
|
||||||
|
}
|
||||||
|
|
||||||
|
Set<String> authorizedStations = getUserAuthorizedStationCodes();
|
||||||
|
|
||||||
|
if (authorizedStations != null && !authorizedStations.isEmpty()) {
|
||||||
|
List<SdEngInfoBH> engInfos = sdEngInfoBHMapper.selectList(
|
||||||
|
new LambdaQueryWrapper<SdEngInfoBH>()
|
||||||
|
.select(SdEngInfoBH::getBaseId)
|
||||||
|
.in(SdEngInfoBH::getStcd, authorizedStations)
|
||||||
|
);
|
||||||
|
List<String> baseIds = engInfos.stream()
|
||||||
|
.map(SdEngInfoBH::getBaseId)
|
||||||
|
.filter(id -> id != null && !id.isEmpty())
|
||||||
|
.distinct()
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
if (!baseIds.isEmpty()) {
|
||||||
|
wrapper.in(SdHydrobase::getBaseid, baseIds);
|
||||||
|
} else {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
wrapper.orderByAsc(SdHydrobase::getOrderIndex);
|
||||||
|
return this.list(wrapper);
|
||||||
|
}
|
||||||
|
|
||||||
|
@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<>();
|
||||||
|
List<String> basinCodes = new ArrayList<>();
|
||||||
|
|
||||||
|
for (SysUserDataScope scope : sysUserDataScopes) {
|
||||||
|
String orgType = scope.getOrgType();
|
||||||
|
String orgId = scope.getOrgId();
|
||||||
|
|
||||||
|
if ("STATION".equals(orgType)) {
|
||||||
|
stationCodes.add(orgId);
|
||||||
|
} else if ("BASIN".equals(orgType)) {
|
||||||
|
basinCodes.add(orgId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!stationCodes.isEmpty()) {
|
||||||
|
return stationCodes;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!basinCodes.isEmpty()) {
|
||||||
|
List<SdEngInfoBH> engInfos = sdEngInfoBHMapper.selectList(
|
||||||
|
new LambdaQueryWrapper<SdEngInfoBH>()
|
||||||
|
.select(SdEngInfoBH::getStcd)
|
||||||
|
.in(SdEngInfoBH::getRvcd, basinCodes)
|
||||||
|
);
|
||||||
|
return engInfos.stream()
|
||||||
|
.map(SdEngInfoBH::getStcd)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
}
|
||||||
|
|
||||||
|
return stationCodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user