diff --git a/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java index 937f0a27..4be21b42 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java @@ -754,7 +754,7 @@ public class LawsCommonServiceImpl implements ILawsCommonService { // 将更新数据库的标准体系字段设置为空 parameterMap.put(FieldCommon.STANDARD_SYSTEM, ""); // 处理新增和编辑时的代替标准、引用标准 - processReplaced(parameterMap, standardNumber); + processReplaced(parameterMap, standardNumber, module); // 获取要操作的表名 String tableName = TableNameEnum.getTableName(module); @@ -929,7 +929,7 @@ public class LawsCommonServiceImpl implements ILawsCommonService { String standardNumber = singleStandard.getStandardNumber(); // 处理新增和编辑时的代替标准、引用标准 - processReplaced(parameterMap, standardNumber); + processReplaced(parameterMap, standardNumber, module); // 处理零部件 processPartName(parameterMap, id); @@ -1026,9 +1026,11 @@ public class LawsCommonServiceImpl implements ILawsCommonService { * @Date: 2023/9/19 11:53 * @Description: 处理新增和编辑时的代替标准、引用标准 **/ - private void processReplaced(Map parameterMap, String standardNumber) { + private void processReplaced(Map parameterMap, String standardNumber, String module) { // 代替标准 String replacedStandard = (String) parameterMap.get(FieldCommon.REPLACED_STANDARD); + // 获取标准状态 + String standardState = (String) parameterMap.get(FieldCommon.STANDARD_STATE); // 先删除已经存储的关联 lawsReplacedStandardService.removeRelation(standardNumber, 1); if (StringUtils.isNotBlank(replacedStandard)) { @@ -2122,7 +2124,9 @@ public class LawsCommonServiceImpl implements ILawsCommonService { StringBuilder selectCondition = new StringBuilder("where 1 = 1"); // 拼接多表关联查询条件 Set idSet = new HashSet<>(); + Set snSet = new HashSet<>(); boolean idSearch = false; + boolean standardNumberSearch = false; // 体系 String standardSystem = (String) parameterMap.get(FieldCommon.STANDARD_SYSTEM); if (StrUtil.isNotBlank(standardSystem)) { @@ -2137,33 +2141,59 @@ public class LawsCommonServiceImpl implements ILawsCommonService { // 代替标准号 String replaceStandard = (String) parameterMap.get(FieldCommon.REPLACED_STANDARD); if (StrUtil.isNotBlank(replaceStandard)) { - List standardNo = Arrays.asList(replaceStandard.split(",")); - String sql = getLawsReplacedStandardSql(tableName, standardNo, " replaced ", "1"); - selectCondition.append(sql); + standardNumberSearch = true; + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.like(LawsReplacedStandard::getReplaced, replaceStandard); + lambdaQueryWrapper.eq(LawsReplacedStandard::getType, "1"); + List replacedStandardList = lawsReplacedStandardService.list(lambdaQueryWrapper); + snSet.addAll(replacedStandardList.stream().map(LawsReplacedStandard::getReplacedBy).collect(Collectors.toSet())); parameterMap.remove(FieldCommon.REPLACED_STANDARD); } // 被代替标准号 String replacedByStandard = (String) parameterMap.get(FieldCommon.REPLACED_BY_STANDARD); if (StrUtil.isNotBlank(replacedByStandard)) { - List standardNo = Arrays.asList(replacedByStandard.split(",")); - String sql = getLawsReplacedByStandardSql(tableName, standardNo, " replaced_by ", "1"); - selectCondition.append(sql); + standardNumberSearch = true; + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.like(LawsReplacedStandard::getReplacedBy, replacedByStandard); + lambdaQueryWrapper.eq(LawsReplacedStandard::getType, "1"); + List standardList = lawsReplacedStandardService.list(lambdaQueryWrapper); + snSet.addAll(standardList.stream().map(s -> { + // 如果有书名号则只取书名号的前半部分 + if (s.getReplaced().contains("《")) { + return s.getReplaced().substring(0, s.getReplaced().indexOf("《")); + } else { + return s.getReplaced(); + } + }).collect(Collectors.toSet())); parameterMap.remove(FieldCommon.REPLACED_BY_STANDARD); } // 引用标准号 String referenceStandard = (String) parameterMap.get(FieldCommon.REFERENCE_STANDARD); if (StrUtil.isNotBlank(referenceStandard)) { - List standardNo = Arrays.asList(referenceStandard.split(",")); - String sql = getLawsReplacedStandardSql(tableName, standardNo, " replaced ", "2"); - selectCondition.append(sql); + standardNumberSearch = true; + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.like(LawsReplacedStandard::getReplaced, referenceStandard); + lambdaQueryWrapper.eq(LawsReplacedStandard::getType, "2"); + List replacedStandardList = lawsReplacedStandardService.list(lambdaQueryWrapper); + snSet.addAll(replacedStandardList.stream().map(LawsReplacedStandard::getReplacedBy).collect(Collectors.toSet())); parameterMap.remove(FieldCommon.REFERENCE_STANDARD); } // 被引用标准号 String referencedStandard = (String) parameterMap.get(FieldCommon.REFERENCED_STANDARD); if (StrUtil.isNotBlank(referencedStandard)) { - List standardNo = Arrays.asList(referencedStandard.split(",")); - String sql = getLawsReplacedByStandardSql(tableName, standardNo, " replaced_by ", "2"); - selectCondition.append(sql); + standardNumberSearch = true; + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.like(LawsReplacedStandard::getReplacedBy, referencedStandard); + lambdaQueryWrapper.eq(LawsReplacedStandard::getType, "2"); + List standardList = lawsReplacedStandardService.list(lambdaQueryWrapper); + snSet.addAll(standardList.stream().map(s -> { + // 如果有书名号则只取书名号的前半部分 + if (s.getReplaced().contains("《")) { + return s.getReplaced().substring(0, s.getReplaced().indexOf("《")); + } else { + return s.getReplaced(); + } + }).collect(Collectors.toSet())); parameterMap.remove(FieldCommon.REFERENCED_STANDARD); } // 零部件名称 @@ -2185,6 +2215,18 @@ public class LawsCommonServiceImpl implements ILawsCommonService { } selectCondition.append(idSql).append(")"); } + + if (standardNumberSearch) { + String snSql = snSet.stream() + .map(item -> "'" + item + "'") + .collect(Collectors.joining(",")); + // 拼接SQL + selectCondition.append(" AND standard_number IN ("); + if (StrUtil.isBlank(snSql)) { + snSql = "''"; + } + selectCondition.append(snSql).append(")"); + } selectCondition.append(" AND del_flag = 0"); // 删除pageNo和pageSize,不参与条件查询