fix: 优化过鱼数据填报逻辑

This commit is contained in:
tangwei 2026-06-04 19:42:35 +08:00
parent 17007d8a18
commit af87b8ca9a
10 changed files with 151 additions and 69 deletions

View File

@ -8,4 +8,6 @@ public class StationBasinInfo {
private String ennm; // 电站名称 private String ennm; // 电站名称
private String hbrvcd; // 流域编码 private String hbrvcd; // 流域编码
private String hbrvnm; // 流域名称 private String hbrvnm; // 流域名称
private String rvcd;
private String rvnm;
} }

View File

@ -40,5 +40,11 @@ public interface SdEngInfoBHMapper extends BaseMapper<SdEngInfoBH> {
List<SdEngInfoBH> selectByHbrvcdList(@Param("hbrvcdList") List<String> hbrvcdList); List<SdEngInfoBH> selectByHbrvcdList(@Param("hbrvcdList") List<String> hbrvcdList);
/**
* 根据基地流域编码列表批量查询电站
*/
List<SdEngInfoBH> selectByRvcdList(@Param("rvcdList") List<String> rvcdList);
List<StationBasinInfo> selectStationBasinInfo(); List<StationBasinInfo> selectStationBasinInfo();
} }

View File

@ -237,6 +237,12 @@ public class FishDraftData implements Serializable {
@TableField(exist = false) @TableField(exist = false)
private String rvcd; private String rvcd;
/**
* 流域编码
*/
@TableField(exist = false)
private String rvnm;
/** /**
* 基地流域编码 * 基地流域编码
*/ */

View File

@ -47,6 +47,8 @@ public class ImportTaskRow implements Serializable {
private String rvcd; private String rvcd;
private String rvnm;
private String baseId; private String baseId;
private String baseName; private String baseName;

View File

@ -133,7 +133,7 @@ public class FishImportServiceImpl implements IFishImportService {
EXCEL_COLUMN_MAPPING.put("过鱼设施名称", "fpname"); EXCEL_COLUMN_MAPPING.put("过鱼设施名称", "fpname");
EXCEL_COLUMN_INDEX_MAPPING.put(0, "hbrvcd"); EXCEL_COLUMN_INDEX_MAPPING.put(0, "rvcd");
EXCEL_COLUMN_INDEX_MAPPING.put(1, "stationName"); EXCEL_COLUMN_INDEX_MAPPING.put(1, "stationName");
EXCEL_COLUMN_INDEX_MAPPING.put(2, "stnm"); EXCEL_COLUMN_INDEX_MAPPING.put(2, "stnm");
EXCEL_COLUMN_INDEX_MAPPING.put(3, "strdt"); EXCEL_COLUMN_INDEX_MAPPING.put(3, "strdt");
@ -186,11 +186,11 @@ public class FishImportServiceImpl implements IFishImportService {
Map<Integer, String> columnIndexMap = new HashMap<>(EXCEL_COLUMN_INDEX_MAPPING); Map<Integer, String> columnIndexMap = new HashMap<>(EXCEL_COLUMN_INDEX_MAPPING);
Set<String> allowedHbrvcdSet = new HashSet<>(); Set<String> allowedRvcdSet = new HashSet<>();
Set<String> directStcdSet = new HashSet<>(); Set<String> directStcdSet = new HashSet<>();
List<SdFpssBH> sdFpssList=new ArrayList<>(); List<SdFpssBH> sdFpssList=new ArrayList<>();
List<SdHbrvDic> allowedHbrvcdList = new ArrayList<>(); List<SdRvcdDic> allowedRvcdList = new ArrayList<>();
List<SdEngInfoBH> directStcdList = new ArrayList<>(); List<SdEngInfoBH> directStcdList = new ArrayList<>();
if (uploadUserId != null) { if (uploadUserId != null) {
List<SysUserDataScope> permissions = userDataScopeMapper.selectValidPermissions(uploadUserId); List<SysUserDataScope> permissions = userDataScopeMapper.selectValidPermissions(uploadUserId);
@ -203,8 +203,8 @@ public class FishImportServiceImpl implements IFishImportService {
continue; continue;
} }
if ("HBRVCD".equals(orgType)) { if ("RVCD".equals(orgType)) {
allowedHbrvcdSet.add(orgId); allowedRvcdSet.add(orgId);
} else if ("STATION".equals(orgType)) { } else if ("STATION".equals(orgType)) {
directStcdSet.add(orgId); directStcdSet.add(orgId);
} }
@ -213,9 +213,9 @@ public class FishImportServiceImpl implements IFishImportService {
} }
if (!allowedHbrvcdSet.isEmpty() || !directStcdSet.isEmpty()) { if (!allowedRvcdSet.isEmpty() || !directStcdSet.isEmpty()) {
if (!allowedHbrvcdSet.isEmpty()) { if (!allowedRvcdSet.isEmpty()) {
List<SdEngInfoBH> stationsFromHbrv = engInfoBHMapper.selectByHbrvcdList(new ArrayList<>(allowedHbrvcdSet)); List<SdEngInfoBH> stationsFromHbrv = engInfoBHMapper.selectByRvcdList(new ArrayList<>(allowedRvcdSet));
for (SdEngInfoBH station : stationsFromHbrv) { for (SdEngInfoBH station : stationsFromHbrv) {
if (station.getStcd() != null) { if (station.getStcd() != null) {
directStcdSet.add(station.getStcd()); directStcdSet.add(station.getStcd());
@ -229,16 +229,16 @@ public class FishImportServiceImpl implements IFishImportService {
if (station.getStcd() != null) { if (station.getStcd() != null) {
directStcdSet.add(station.getStcd()); directStcdSet.add(station.getStcd());
} }
if (station.getHbrvcd() != null) { if (station.getRvcd() != null) {
allowedHbrvcdSet.add(station.getHbrvcd()); allowedRvcdSet.add(station.getRvcd());
} }
} }
} }
} }
if(!allowedHbrvcdSet.isEmpty()){ if(!allowedRvcdSet.isEmpty()){
List<SdHbrvDic> sdHbrvDics = sdHbrvDicMapper.selectList(new LambdaQueryWrapper<SdHbrvDic>().in(SdHbrvDic::getHbrvcd, allowedHbrvcdSet).select(SdHbrvDic::getHbrvcd, SdHbrvDic::getHbrvnm)); List<SdRvcdDic> sdRvcdDics = rvcdDicMapper.selectList(new LambdaQueryWrapper<SdRvcdDic>().in(SdRvcdDic::getRvcd, allowedRvcdSet).select(SdRvcdDic::getRvcd, SdRvcdDic::getRvnm));
allowedHbrvcdList.addAll(sdHbrvDics); allowedRvcdList.addAll(sdRvcdDics);
} }
if (!directStcdSet.isEmpty()) { if (!directStcdSet.isEmpty()) {
@ -258,7 +258,7 @@ public class FishImportServiceImpl implements IFishImportService {
continue; continue;
} }
FishImportResult.FishImportRow importRow = parseRow(result, row, columnIndexMap, i, uploadUserId,allowedHbrvcdList,directStcdList,sdFpssList); FishImportResult.FishImportRow importRow = parseRow(result, row, columnIndexMap, i, uploadUserId,allowedRvcdList,directStcdList,sdFpssList);
result.setTotalCount(result.getTotalCount() + 1); result.setTotalCount(result.getTotalCount() + 1);
if (importRow.getData() != null && importRow.getWarnings().isEmpty()) { if (importRow.getData() != null && importRow.getWarnings().isEmpty()) {
result.addSuccessRow(importRow); result.addSuccessRow(importRow);
@ -274,7 +274,7 @@ public class FishImportServiceImpl implements IFishImportService {
return result; return result;
} }
private FishImportResult.FishImportRow parseRow(FishImportResult result, Row row, Map<Integer, String> columnIndexMap, int rowIndex, String userId,List<SdHbrvDic> allowedHbrvcdList,List<SdEngInfoBH> directStcdList,List<SdFpssBH> sdFpssList) { private FishImportResult.FishImportRow parseRow(FishImportResult result, Row row, Map<Integer, String> columnIndexMap, int rowIndex, String userId,List<SdRvcdDic> allowRvcdList,List<SdEngInfoBH> directStcdList,List<SdFpssBH> sdFpssList) {
FishImportResult.FishImportRow importRow = new FishImportResult.FishImportRow(rowIndex); FishImportResult.FishImportRow importRow = new FishImportResult.FishImportRow(rowIndex);
@ -323,13 +323,19 @@ public class FishImportServiceImpl implements IFishImportService {
} }
break; break;
case "rvcd": case "rvcd":
if (StringUtils.hasText(cellValue)) { if (!StringUtils.hasText(cellValue)) {
String rvcd = resolveRiverCode(cellValue.trim()); importRow.getWarnings().add("rvcd");
if (rvcd == null) { data.setHbrvcd(cellValue);
importRow.getWarnings().add(fieldName); data.setHbrvnm(cellValue);
data.setRvcd(cellValue); } else {
String rvcdCode = allowRvcdList.stream().filter(sdRvcdDic -> sdRvcdDic.getRvnm().equals(cellValue.trim())).map(SdRvcdDic::getRvcd).findFirst().orElse( null);
if (StrUtil.isBlank(rvcdCode)) {
importRow.getWarnings().add("rvcd");
data.setRvcd(cellValue.trim());
data.setRvnm(cellValue.trim());
} else { } else {
data.setRvcd(rvcd); data.setRvcd(rvcdCode);
data.setRvnm(cellValue.trim());
} }
} }
break; break;
@ -338,17 +344,18 @@ public class FishImportServiceImpl implements IFishImportService {
importRow.getWarnings().add("hbrvcd"); importRow.getWarnings().add("hbrvcd");
data.setHbrvcd(cellValue); data.setHbrvcd(cellValue);
data.setHbrvnm(cellValue); data.setHbrvnm(cellValue);
} else {
String hbrvcdCode = allowedHbrvcdList.stream().filter(sdHbrvDic -> sdHbrvDic.getHbrvnm().equals(cellValue.trim())).map(SdHbrvDic::getHbrvcd).findFirst().orElse( null);
if (StrUtil.isBlank(hbrvcdCode)) {
importRow.getWarnings().add("hbrvcd");
data.setHbrvcd(cellValue.trim());
data.setHbrvnm(cellValue.trim());
} else {
data.setHbrvcd(hbrvcdCode);
data.setHbrvnm(cellValue.trim());
}
} }
// else {
// String hbrvcdCode = allowedHbrvcdList.stream().filter(sdHbrvDic -> sdHbrvDic.getHbrvnm().equals(cellValue.trim())).map(SdHbrvDic::getHbrvcd).findFirst().orElse( null);
// if (StrUtil.isBlank(hbrvcdCode)) {
// importRow.getWarnings().add("hbrvcd");
// data.setHbrvcd(cellValue.trim());
// data.setHbrvnm(cellValue.trim());
// } else {
// data.setHbrvcd(hbrvcdCode);
// data.setHbrvnm(cellValue.trim());
// }
// }
// //
break; break;
case "tm": case "tm":
@ -618,7 +625,7 @@ public class FishImportServiceImpl implements IFishImportService {
private void validateStationFpssRelation(FishDraftData data, FishImportResult.FishImportRow importRow) { private void validateStationFpssRelation(FishDraftData data, FishImportResult.FishImportRow importRow) {
if (importRow.getWarnings().contains("hbrvcd")) { if (importRow.getWarnings().contains("rvcd")) {
if (!importRow.getWarnings().contains("rstcd")) { if (!importRow.getWarnings().contains("rstcd")) {
importRow.getWarnings().add("rstcd"); importRow.getWarnings().add("rstcd");
} }

View File

@ -263,6 +263,7 @@ public class ImportTaskServiceImpl extends ServiceImpl<ImportTaskMapper, ImportT
taskRow.setHbrvcd(data.getHbrvcd()); taskRow.setHbrvcd(data.getHbrvcd());
taskRow.setHbrvnm(data.getHbrvnm()); taskRow.setHbrvnm(data.getHbrvnm());
taskRow.setRvcd(data.getRvcd()); taskRow.setRvcd(data.getRvcd());
taskRow.setRvnm(data.getRvnm());
taskRow.setBaseId(data.getBaseId()); taskRow.setBaseId(data.getBaseId());
taskRow.setBaseName(data.getBaseName()); taskRow.setBaseName(data.getBaseName());
taskRow.setStrdt(data.getStrdt()); taskRow.setStrdt(data.getStrdt());
@ -369,6 +370,7 @@ public class ImportTaskServiceImpl extends ServiceImpl<ImportTaskMapper, ImportT
data.setHbrvcd(row.getHbrvcd()); data.setHbrvcd(row.getHbrvcd());
data.setHbrvnm(row.getHbrvnm()); data.setHbrvnm(row.getHbrvnm());
data.setRvcd(row.getRvcd()); data.setRvcd(row.getRvcd());
data.setRvnm(row.getRvnm());
data.setBaseId(row.getBaseId()); data.setBaseId(row.getBaseId());
data.setBaseName(row.getBaseName()); data.setBaseName(row.getBaseName());
data.setStrdt(row.getStrdt()); data.setStrdt(row.getStrdt());

View File

@ -242,7 +242,7 @@ public class SmsVerifyCodeController {
} }
String stationCode = smsVerifyCodeRequest.getStationCode(); String stationCode = smsVerifyCodeRequest.getStationCode();
String hbrvcdCode = smsVerifyCodeRequest.getHbrvcdCode(); String rvcdCode = smsVerifyCodeRequest.getRvcdCode();
Set<String> selectedStationCodes = new HashSet<>(); Set<String> selectedStationCodes = new HashSet<>();
if (StringUtils.isNotEmpty(stationCode)) { if (StringUtils.isNotEmpty(stationCode)) {
@ -250,8 +250,8 @@ public class SmsVerifyCodeController {
} }
Set<String> selectedBasinCodes = new HashSet<>(); Set<String> selectedBasinCodes = new HashSet<>();
if (StringUtils.isNotEmpty(hbrvcdCode)) { if (StringUtils.isNotEmpty(rvcdCode)) {
selectedBasinCodes.addAll(Arrays.asList(hbrvcdCode.split(","))); selectedBasinCodes.addAll(Arrays.asList(rvcdCode.split(",")));
} }
// Set<String> addedStationCodes = new HashSet<>(); // Set<String> addedStationCodes = new HashSet<>();
@ -262,13 +262,13 @@ public class SmsVerifyCodeController {
} }
List<SdEngInfoBH> allStationsInBasin = engInfoBHService.lambdaQuery() List<SdEngInfoBH> allStationsInBasin = engInfoBHService.lambdaQuery()
.eq(SdEngInfoBH::getHbrvcd, basinCode) .eq(SdEngInfoBH::getRvcd, basinCode)
.list(); .list();
if (allStationsInBasin == null || allStationsInBasin.isEmpty()) { if (allStationsInBasin == null || allStationsInBasin.isEmpty()) {
SysUserDataScope scope = new SysUserDataScope(); SysUserDataScope scope = new SysUserDataScope();
scope.setUserId(userId); scope.setUserId(userId);
scope.setOrgType("HBRVCD"); scope.setOrgType("RVCD");
scope.setOrgId(basinCode); scope.setOrgId(basinCode);
scope.setStatus(1); scope.setStatus(1);
scope.setPermissionType("READ"); scope.setPermissionType("READ");
@ -286,7 +286,7 @@ public class SmsVerifyCodeController {
if (allStationsSelected) { if (allStationsSelected) {
SysUserDataScope scope = new SysUserDataScope(); SysUserDataScope scope = new SysUserDataScope();
scope.setUserId(userId); scope.setUserId(userId);
scope.setOrgType("HBRVCD"); scope.setOrgType("RVCD");
scope.setOrgId(basinCode); scope.setOrgId(basinCode);
scope.setStatus(1); scope.setStatus(1);
scope.setPermissionType("READ"); scope.setPermissionType("READ");

View File

@ -709,24 +709,28 @@ public class UserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impleme
String orgId = scope.getOrgId(); String orgId = scope.getOrgId();
String orgName = scope.getOrgName(); String orgName = scope.getOrgName();
if ("HBRVCD".equals(orgType)) { if ("RVCD".equals(orgType)) {
if (orgName != null) { if (StrUtil.isNotBlank(orgName)) {
basinNameSet.add(orgName); basinNameSet.add(orgName);
} }
if (orgId != null) { if (orgId != null) {
if (stationBasinInfos != null) { if (stationBasinInfos != null) {
List<String> stcdList = stationBasinInfos.stream().filter(info -> info.getHbrvcd().equals(orgId)).map(StationBasinInfo::getEnnm).toList(); List<String> stcdList = stationBasinInfos.stream().filter(info -> info.getRvcd().equals(orgId)).map(StationBasinInfo::getEnnm).toList();
stationNameSet.addAll(stcdList); if(!stcdList.isEmpty()){
stationNameSet.addAll(stcdList);
}
} }
} }
} else if ("STATION".equals(orgType)) { } else if ("STATION".equals(orgType)) {
if (orgName != null) { if (StrUtil.isNotBlank(orgName)) {
stationNameSet.add(orgName); stationNameSet.add(orgName);
} }
if (orgId != null) { if (orgId != null) {
if (stationBasinInfos != null) { if (stationBasinInfos != null) {
String hbrbcd = stationBasinInfos.stream().filter(info -> info.getStcd().equals(orgId)).map(StationBasinInfo::getHbrvnm).findFirst().orElse(null); String rvcd = stationBasinInfos.stream().filter(info -> info.getStcd().equals(orgId)).map(StationBasinInfo::getRvnm).findFirst().orElse(null);
basinNameSet.add(hbrbcd); if(StrUtil.isNotBlank(rvcd)){
basinNameSet.add(rvcd);
}
} }
} }
} }

View File

@ -103,36 +103,69 @@
ORDER BY s.CREATED_AT DESC ORDER BY s.CREATED_AT DESC
</select> </select>
<select id="selectValidPermissionsWithNameByUserIds" resultMap="BaseResultMap"> <select id="selectValidPermissionsWithNameByUserIds" resultMap="BaseResultMap">
SELECT SELECT
s.ID, s.ID,
s.USER_ID, s.USER_ID,
s.ORG_TYPE, s.ORG_TYPE,
s.ORG_ID, s.ORG_ID,
s.PARENT_ID, s.PARENT_ID,
s.ORG_LEVEL, s.ORG_LEVEL,
s.PATH, s.PATH,
s.PERMISSION_TYPE, s.PERMISSION_TYPE,
s.ROLE_CODE, s.ROLE_CODE,
s.DATA_SCOPE, s.DATA_SCOPE,
s.STATUS, s.STATUS,
s.START_TIME, s.START_TIME,
s.END_TIME, s.END_TIME,
s.CREATED_AT, s.CREATED_AT,
s.CREATED_BY, s.CREATED_BY,
s.UPDATED_AT, s.UPDATED_AT,
s.UPDATED_BY, s.UPDATED_BY,
s.REMARK, s.REMARK,
COALESCE(e.ENNM, h.HBRVNM) AS orgName COALESCE(e.ENNM, h.RVNM) AS orgName
FROM SYS_USER_DATA_SCOPE s FROM SYS_USER_DATA_SCOPE s
LEFT JOIN SD_ENGINFO_B_H e ON s.ORG_TYPE = 'STATION' AND s.ORG_ID = e.stcd LEFT JOIN SD_ENGINFO_B_H e ON s.ORG_TYPE = 'STATION' AND s.ORG_ID = e.stcd
LEFT JOIN SD_HBRV_DIC h ON s.ORG_TYPE = 'HBRVCD' AND s.ORG_ID = h.hbrvcd LEFT JOIN SD_RVCD_DIC h ON s.ORG_TYPE = 'RVCD' AND s.ORG_ID = h.rvcd
WHERE s.USER_ID IN WHERE s.USER_ID IN
<foreach collection="userIds" item="id" open="(" separator="," close=")"> <foreach collection="userIds" item="id" open="(" separator="," close=")">
#{id} #{id}
</foreach> </foreach>
AND s.STATUS = 1 AND s.STATUS = 1
ORDER BY s.CREATED_AT DESC ORDER BY s.CREATED_AT DESC
</select> </select>
<!-- <select id="selectValidPermissionsWithNameByUserIds" resultMap="BaseResultMap">-->
<!-- SELECT-->
<!-- s.ID,-->
<!-- s.USER_ID,-->
<!-- s.ORG_TYPE,-->
<!-- s.ORG_ID,-->
<!-- s.PARENT_ID,-->
<!-- s.ORG_LEVEL,-->
<!-- s.PATH,-->
<!-- s.PERMISSION_TYPE,-->
<!-- s.ROLE_CODE,-->
<!-- s.DATA_SCOPE,-->
<!-- s.STATUS,-->
<!-- s.START_TIME,-->
<!-- s.END_TIME,-->
<!-- s.CREATED_AT,-->
<!-- s.CREATED_BY,-->
<!-- s.UPDATED_AT,-->
<!-- s.UPDATED_BY,-->
<!-- s.REMARK,-->
<!-- COALESCE(e.ENNM, h.HBRVNM) AS orgName-->
<!-- FROM SYS_USER_DATA_SCOPE s-->
<!-- LEFT JOIN SD_ENGINFO_B_H e ON s.ORG_TYPE = 'STATION' AND s.ORG_ID = e.stcd-->
<!-- LEFT JOIN SD_HBRV_DIC h ON s.ORG_TYPE = 'HBRVCD' AND s.ORG_ID = h.hbrvcd-->
<!-- WHERE s.USER_ID IN-->
<!-- <foreach collection="userIds" item="id" open="(" separator="," close=")">-->
<!-- #{id}-->
<!-- </foreach>-->
<!-- AND s.STATUS = 1-->
<!-- ORDER BY s.CREATED_AT DESC-->
<!-- </select>-->
</mapper> </mapper>

View File

@ -238,15 +238,25 @@
<result column="HBRVNM" property="hbrvnm"/> <result column="HBRVNM" property="hbrvnm"/>
</resultMap> </resultMap>
<select id="selectStationBasinInfo" resultMap="StationBasinInfoResultMap"> <select id="selectStationBasinInfo" resultMap="StationBasinInfoResultMap">
SELECT SELECT
e.STCD, e.STCD,
e.ENNM, e.ENNM,
e.HBRVCD, e.RVCD,
h.HBRVNM h.RVNM
FROM SD_ENGINFO_B_H e FROM SD_ENGINFO_B_H e
LEFT JOIN SD_HBRV_DIC h ON e.HBRVCD = h.HBRVCD INNER JOIN SD_RVCD_DIC h ON e.RVCD = h.RVCD
</select> </select>
<!-- <select id="selectStationBasinInfo" resultMap="StationBasinInfoResultMap">-->
<!-- SELECT-->
<!-- e.STCD,-->
<!-- e.ENNM,-->
<!-- e.HBRVCD,-->
<!-- h.HBRVNM-->
<!-- FROM SD_ENGINFO_B_H e-->
<!-- LEFT JOIN SD_HBRV_DIC h ON e.HBRVCD = h.HBRVCD-->
<!-- </select>-->
<select id="selectByBaseId" resultMap="BaseResultMap"> <select id="selectByBaseId" resultMap="BaseResultMap">
SELECT * FROM SD_ENGINFO_B_H SELECT * FROM SD_ENGINFO_B_H
@ -281,4 +291,14 @@
ORDER BY HBRVCD, ORDER_INDEX ASC ORDER BY HBRVCD, ORDER_INDEX ASC
</select> </select>
<select id="selectByRvcdList" resultMap="BaseResultMap">
SELECT * FROM SD_ENGINFO_B_H
WHERE RVCD IN
<foreach collection="rvcdList" item="item" open="(" separator="," close=")">
#{item}
</foreach>
ORDER BY HBRVCD, ORDER_INDEX ASC
</select>
</mapper> </mapper>