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 afe954c..2ee0827 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 @@ -176,38 +176,14 @@ public class FishImportServiceImpl implements IFishImportService { Map columnIndexMap = new HashMap<>(EXCEL_COLUMN_INDEX_MAPPING); - int totalRows = sheet.getLastRowNum(); - for (int i = 1; i <= totalRows; i++) { - Row row = sheet.getRow(i); - if (row == null || isRowEmpty(row)) { - continue; - } - - FishImportResult.FishImportRow importRow = parseRow(result, row, columnIndexMap, i, uploadUserId); - result.setTotalCount(result.getTotalCount() + 1); - if (importRow.getData() != null && importRow.getWarnings().isEmpty()) { - result.addSuccessRow(importRow); - result.setSuccessCount(result.getSuccessCount() + 1); - } else { - result.addFailedRow(importRow); - result.setFailedCount(result.getFailedCount() + 1); - } - } - result.setSummary(String.format("共解析%d条数据,失败%d条", - result.getSuccessCount(), result.getFailedCount())); - - return result; - } - - private FishImportResult.FishImportRow parseRow(FishImportResult result, Row row, Map columnIndexMap, int rowIndex, String userId) { - FishImportResult.FishImportRow importRow = new FishImportResult.FishImportRow(rowIndex); - FishDraftData data = new FishDraftData(); - data.setId(UUID.randomUUID().toString()); Set allowedHbrvcdSet = new HashSet<>(); Set directStcdSet = new HashSet<>(); - Set directBHSet = new HashSet<>(); - if (userId != null) { - List permissions = userDataScopeMapper.selectValidPermissions(userId); + + List sdFpssList=new ArrayList<>(); + List allowedHbrvcdList = new ArrayList<>(); + List directStcdList = new ArrayList<>(); + if (uploadUserId != null) { + List permissions = userDataScopeMapper.selectValidPermissions(uploadUserId); if (permissions != null && !permissions.isEmpty()) { for (SysUserDataScope permission : permissions) { String orgType = permission.getOrgType(); @@ -226,7 +202,6 @@ public class FishImportServiceImpl implements IFishImportService { } } -// Set allStcdSet = new HashSet<>(); if (!allowedHbrvcdSet.isEmpty() || !directStcdSet.isEmpty()) { if (!allowedHbrvcdSet.isEmpty()) { @@ -250,14 +225,52 @@ public class FishImportServiceImpl implements IFishImportService { } } } + + if(!allowedHbrvcdSet.isEmpty()){ + List sdHbrvDics = sdHbrvDicMapper.selectList(new LambdaQueryWrapper().in(SdHbrvDic::getHbrvcd, allowedHbrvcdSet).select(SdHbrvDic::getHbrvcd, SdHbrvDic::getHbrvnm)); + allowedHbrvcdList.addAll(sdHbrvDics); + } + if (!directStcdSet.isEmpty()) { - List sdFpssBHS = fpssBHMapper.selectList(new LambdaQueryWrapper().in(SdFpssBH::getRstcd, directStcdSet).select(SdFpssBH::getStcd)); - for (SdFpssBH sdFpssBH : sdFpssBHS) { - if (sdFpssBH.getStcd() != null) { - directBHSet.add(sdFpssBH.getStcd()); - } + List sdFpssBHS = fpssBHMapper.selectList(new LambdaQueryWrapper().in(SdFpssBH::getRstcd, directStcdSet).select(SdFpssBH::getStcd, SdFpssBH::getStnm)); + //设施 + sdFpssList.addAll(sdFpssBHS.stream().filter(sdFpssBH -> sdFpssBH.getStcd() != null).toList()); + + //电站 + directStcdList.addAll(engInfoBHMapper.selectList(new LambdaQueryWrapper().in(SdEngInfoBH::getStcd, directStcdSet).select(SdEngInfoBH::getStcd, SdEngInfoBH::getEnnm))); + + } + + int totalRows = sheet.getLastRowNum(); + for (int i = 1; i <= totalRows; i++) { + Row row = sheet.getRow(i); + if (row == null || isRowEmpty(row)) { + continue; + } + + FishImportResult.FishImportRow importRow = parseRow(result, row, columnIndexMap, i, uploadUserId,allowedHbrvcdList,directStcdList,sdFpssList); + result.setTotalCount(result.getTotalCount() + 1); + if (importRow.getData() != null && importRow.getWarnings().isEmpty()) { + result.addSuccessRow(importRow); + result.setSuccessCount(result.getSuccessCount() + 1); + } else { + result.addFailedRow(importRow); + result.setFailedCount(result.getFailedCount() + 1); } } + result.setSummary(String.format("共解析%d条数据,失败%d条", + result.getSuccessCount(), result.getFailedCount())); + + return result; + } + + private FishImportResult.FishImportRow parseRow(FishImportResult result, Row row, Map columnIndexMap, int rowIndex, String userId,List allowedHbrvcdList,List directStcdList,List sdFpssList) { + + + FishImportResult.FishImportRow importRow = new FishImportResult.FishImportRow(rowIndex); + FishDraftData data = new FishDraftData(); + data.setId(UUID.randomUUID().toString()); + for (Map.Entry entry : columnIndexMap.entrySet()) { Integer columnIndex = entry.getKey(); String fieldName = entry.getValue(); @@ -271,20 +284,14 @@ public class FishImportServiceImpl implements IFishImportService { data.setEnnm(cellValue.trim()); data.setRstcd(cellValue); } else { - String stcd = resolveStationCode(cellValue.trim()); - if (stcd == null) { + String stcd = directStcdList.stream().filter(sdEngInfoBH -> sdEngInfoBH.getEnnm().equals(cellValue.trim())).map(SdEngInfoBH::getStcd).findFirst().get(); + if (StrUtil.isBlank(stcd)) { importRow.getWarnings().add("rstcd"); data.setEnnm(cellValue.trim()); + data.setRstcd(cellValue.trim()); } else { - if (directStcdSet.contains(stcd)) { - data.setEnnm(cellValue.trim()); - data.setRstcd(stcd); - } else { - importRow.getWarnings().add("rstcd"); - data.setEnnm(cellValue.trim()); - data.setRstcd(cellValue); - } - + data.setEnnm(cellValue.trim()); + data.setRstcd(stcd); } } break; @@ -322,33 +329,17 @@ public class FishImportServiceImpl implements IFishImportService { data.setHbrvcd(cellValue); data.setHbrvnm(cellValue); } else { - String hbrvcdCode = resolveHbrvcdCode(cellValue.trim()); - if (hbrvcdCode == null) { + String hbrvcdCode = allowedHbrvcdList.stream().filter(sdHbrvDic -> sdHbrvDic.getHbrvnm().equals(cellValue.trim())).map(SdHbrvDic::getHbrvcd).findFirst().get(); + if (StrUtil.isBlank(hbrvcdCode)) { importRow.getWarnings().add("hbrvcd"); data.setHbrvcd(cellValue.trim()); 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()); - } - + data.setHbrvcd(hbrvcdCode); + data.setHbrvnm(cellValue.trim()); } } -// if (StringUtils.hasText(cellValue)) { -// String rvcd = resolveHbrvcdCode(cellValue.trim()); -// if (rvcd == null) { -// importRow.getWarnings().add(fieldName); -// data.setRvcd(cellValue); -// } else { -// data.setHbrvcd(rvcd); -// data.setHbrvcd(rvcd); -// } -// } +// break; case "tm": if (!StringUtils.hasText(cellValue)) { @@ -519,21 +510,14 @@ public class FishImportServiceImpl implements IFishImportService { importRow.getWarnings().add("stcd"); data.setStcd(cellValue); } else { - String stcd = resolveFpssCode(cellValue.trim()); - if (stcd == null) { + String stcd = sdFpssList.stream().filter(sdFpssBH -> sdFpssBH.getStnm().equals(cellValue.trim())).map(SdFpssBH::getStcd).findFirst().get(); + if (StrUtil.isBlank(stcd)) { importRow.getWarnings().add("stcd"); data.setStcd(cellValue.trim()); data.setStnm(cellValue.trim()); } else { - if (directBHSet.contains(stcd)) { - data.setStnm(cellValue.trim()); - data.setStcd(stcd); - } else { - importRow.getWarnings().add("stcd"); - data.setStcd(cellValue.trim()); - data.setStnm(cellValue.trim()); - } - + data.setStnm(cellValue.trim()); + data.setStcd(stcd); } } break; @@ -541,7 +525,8 @@ public class FishImportServiceImpl implements IFishImportService { break; } } catch (Exception e) { - e.printStackTrace(); + log.error("字段[" + fieldName + "]解析异常: " + e.getMessage()); +// e.printStackTrace(); // importRow.getWarnings().add("字段[" + fieldName + "]解析异常: " + e.getMessage()); } } @@ -553,33 +538,47 @@ public class FishImportServiceImpl implements IFishImportService { private void validateStationFpssRelation(FishDraftData data, FishImportResult.FishImportRow importRow) { - loadStationAndBaseCache(); - if (StringUtils.hasText(data.getHbrvcd()) && StringUtils.hasText(data.getRstcd())) { - if (!validateStationBelongsToBase(data.getRstcd(), data.getHbrvcd())) { - if (!importRow.getWarnings().contains("hbrvcd")) { - importRow.getWarnings().add("hbrvcd"); - } - if (!importRow.getWarnings().contains("rstcd")) { - importRow.getWarnings().add("rstcd"); - } - if (!importRow.getWarnings().contains("stcd")) { - importRow.getWarnings().add("stcd"); - } + if (importRow.getWarnings().contains("hbrvcd")) { + if (!importRow.getWarnings().contains("rstcd")) { + importRow.getWarnings().add("rstcd"); + } + if (!importRow.getWarnings().contains("stcd")) { + importRow.getWarnings().add("stcd"); } } - if (StringUtils.hasText(data.getRstcd()) && StringUtils.hasText(data.getStcd())) { - if (!validateFpssBelongsToStation(data.getStcd(), data.getRstcd())) { - if (!importRow.getWarnings().contains("hbrvcd")) { - importRow.getWarnings().add("hbrvcd"); - } - if (!importRow.getWarnings().contains("stcd")) { - importRow.getWarnings().add("stcd"); - } - if (!importRow.getWarnings().contains("rstcd")) { - importRow.getWarnings().add("rstcd"); - } + if (importRow.getWarnings().contains("rstcd")) { + if (!importRow.getWarnings().contains("stcd")) { + importRow.getWarnings().add("stcd"); } } + + // loadStationAndBaseCache(); +// if (StringUtils.hasText(data.getHbrvcd()) && StringUtils.hasText(data.getRstcd())) { +// if (!validateStationBelongsToBase(data.getRstcd(), data.getHbrvcd())) { +// if (!importRow.getWarnings().contains("hbrvcd")) { +// importRow.getWarnings().add("hbrvcd"); +// } +// if (!importRow.getWarnings().contains("rstcd")) { +// importRow.getWarnings().add("rstcd"); +// } +// if (!importRow.getWarnings().contains("stcd")) { +// importRow.getWarnings().add("stcd"); +// } +// } +// } +// if (StringUtils.hasText(data.getRstcd()) && StringUtils.hasText(data.getStcd())) { +// if (!validateFpssBelongsToStation(data.getStcd(), data.getRstcd())) { +// if (!importRow.getWarnings().contains("hbrvcd")) { +// importRow.getWarnings().add("hbrvcd"); +// } +// if (!importRow.getWarnings().contains("stcd")) { +// importRow.getWarnings().add("stcd"); +// } +// if (!importRow.getWarnings().contains("rstcd")) { +// importRow.getWarnings().add("rstcd"); +// } +// } +// } } private void loadStationAndBaseCache() {