feat: 标准列表搜索条件支持关联表查询 新增分标委 体系

This commit is contained in:
2023-12-08 18:02:33 +08:00
parent 2cbe037f9b
commit 023b09d419
@@ -1867,99 +1867,121 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
// 拼接多表关联查询条件
Set<String> idSet = new HashSet<>();
Set<String> standNoSet = new HashSet<>();
boolean idSearch = false;
boolean standNoSearch = false;
// 企标独有权限
if (module.equals(TableNameEnum.ENTERPRISE_STANDARDS.getValue())) {
// 授权部门
String authDept = (String) parameterMap.get(FieldCommon.AUTH_DEPT);
if (StrUtil.isNotBlank(authDept)) {
idSearch = true;
LambdaQueryWrapper<EnterpriseStandardAuthDept> authDeptWrapper = new LambdaQueryWrapper<>();
List<String> authDeptIdList = Arrays.asList(authDept.split(","));
authDeptWrapper.in(EnterpriseStandardAuthDept::getAuthDept, authDeptIdList);
List<EnterpriseStandardAuthDept> authList = enterpriseAuthDeptService.list(authDeptWrapper);
String sql = authList.stream()
.map(item -> "'" + item.getStandardId() + "'")
.collect(Collectors.joining(","));
// 拼接SQL
selectCondition.append(" AND id IN (");
if (StrUtil.isBlank(sql)) {
sql = "''";
}
selectCondition.append(sql).append(")");
idSet.addAll(authList.stream().map(EnterpriseStandardAuthDept::getStandardId).collect(Collectors.toSet()));
parameterMap.remove(FieldCommon.AUTH_DEPT);
}
}
// 体系
String standardSystem = (String) parameterMap.get(FieldCommon.STANDARD_SYSTEM);
if (StrUtil.isNotBlank(standardSystem)) {
idSearch = true;
LambdaQueryWrapper<LawsNodeRelation> standSystemWrapper = new LambdaQueryWrapper<>();
List<String> standSystemIdList = Arrays.asList(standardSystem.split(","));
standSystemWrapper.in(LawsNodeRelation::getNodeId, standSystemIdList);
List<LawsNodeRelation> systemList = lawsNodeRelationService.list(standSystemWrapper);
idSet.addAll(systemList.stream().map(LawsNodeRelation::getUniqueRelationFlag).collect(Collectors.toSet()));
parameterMap.remove(FieldCommon.STANDARD_SYSTEM);
}
// 代替标准号
String replaceStandard = (String) parameterMap.get(FieldCommon.REPLACED_STANDARD);
LambdaQueryWrapper<LawsReplacedStandard> replaceWrapper = new LambdaQueryWrapper<>();
if (StrUtil.isNotBlank(replaceStandard)) {
standNoSearch = true;
List<String> standardNo = Arrays.asList(replaceStandard.split(","));
standardNo.forEach(s -> replaceWrapper.like(LawsReplacedStandard::getReplaced, s));
standardNo.forEach(s -> replaceWrapper.eq(LawsReplacedStandard::getType, 1));
List<LawsReplacedStandard> replaceList = lawsReplacedStandardService.list(replaceWrapper);
String sql = replaceList.stream()
.map(item -> "'" + item.getReplacedBy() + "'")
.collect(Collectors.joining(","));
// 拼接SQL
selectCondition.append(" AND standard_number IN (");
if (StrUtil.isBlank(sql)) {
sql = "''";
}
selectCondition.append(sql).append(")");
standNoSet.addAll(replaceList.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)) {
standNoSearch = true;
List<String> standardNo = Arrays.asList(replacedByStandard.split(","));
standardNo.forEach(s -> replaceWrapper.like(LawsReplacedStandard::getReplacedBy, s));
standardNo.forEach(s -> replaceWrapper.eq(LawsReplacedStandard::getType, 1));
List<LawsReplacedStandard> replaceList = lawsReplacedStandardService.list(replaceWrapper);
String sql = replaceList.stream()
.map(item -> "'" + item.getReplaced() + "'")
.collect(Collectors.joining(","));
// 拼接SQL
selectCondition.append(" AND standard_number IN (");
if (StrUtil.isBlank(sql)) {
sql = "''";
}
selectCondition.append(sql).append(")");
standNoSet.addAll(replaceList.stream().map(LawsReplacedStandard::getReplaced).collect(Collectors.toSet()));
parameterMap.remove(FieldCommon.REPLACED_BY_STANDARD);
}
// 引用标准号
String referenceStandard = (String) parameterMap.get(FieldCommon.REFERENCE_STANDARD);
if (StrUtil.isNotBlank(referenceStandard)) {
standNoSearch = true;
List<String> standardNo = Arrays.asList(referenceStandard.split(","));
standardNo.forEach(s -> replaceWrapper.like(LawsReplacedStandard::getReplaced, s));
standardNo.forEach(s -> replaceWrapper.eq(LawsReplacedStandard::getType, 2));
List<LawsReplacedStandard> replaceList = lawsReplacedStandardService.list(replaceWrapper);
String sql = replaceList.stream()
.map(item -> "'" + item.getReplacedBy() + "'")
.collect(Collectors.joining(","));
// 拼接SQL
selectCondition.append(" AND standard_number IN (");
if (StrUtil.isBlank(sql)) {
sql = "''";
}
selectCondition.append(sql).append(")");
standNoSet.addAll(replaceList.stream().map(LawsReplacedStandard::getReplacedBy).collect(Collectors.toSet()));
parameterMap.remove(FieldCommon.REFERENCE_STANDARD);
}
// 被引用标准号
String referencedStandard = (String) parameterMap.get(FieldCommon.REFERENCED_STANDARD);
if (StrUtil.isNotBlank(referencedStandard)) {
standNoSearch = true;
List<String> standardNo = Arrays.asList(referencedStandard.split(","));
standardNo.forEach(s -> replaceWrapper.like(LawsReplacedStandard::getReplacedBy, s));
standardNo.forEach(s -> replaceWrapper.eq(LawsReplacedStandard::getType, 2));
List<LawsReplacedStandard> replaceList = lawsReplacedStandardService.list(replaceWrapper);
String sql = replaceList.stream()
.map(item -> "'" + item.getReplaced() + "'")
standNoSet.addAll(replaceList.stream().map(LawsReplacedStandard::getReplaced).collect(Collectors.toSet()));
parameterMap.remove(FieldCommon.REFERENCED_STANDARD);
}
// 分标委
String biddingCommittee = (String) parameterMap.get(FieldCommon.BIDDING_COMMITTEE);
if (StrUtil.isNotBlank(biddingCommittee)) {
LambdaQueryWrapper<LawsStandardization> standardizationWrapper = new LambdaQueryWrapper<>();
standardizationWrapper.eq(LawsStandardization::getPid, "0");
List<String> biddingCommitteeList = Arrays.asList(biddingCommittee.split(","));
LawsStandardization rootNode = lawsStandardizationService.getOne(standardizationWrapper);
standardizationWrapper.clear();
standardizationWrapper.eq(LawsStandardization::getPid, rootNode.getId());
List<LawsStandardization> nodeList = lawsStandardizationService.list(standardizationWrapper);
String sql = nodeList.stream()
.map(item -> "'" + item.getId() + "'")
.collect(Collectors.joining(","));
// 拼接SQL
selectCondition.append(" AND standard_number IN (");
selectCondition.append(" AND bidding_committee IN (");
if (StrUtil.isBlank(sql)) {
sql = "''";
}
selectCondition.append(sql).append(")");
parameterMap.remove(FieldCommon.REFERENCED_STANDARD);
parameterMap.remove(FieldCommon.BIDDING_COMMITTEE);
}
if (idSearch) {
String idSql = idSet.stream()
.map(item -> "'" + item + "'")
.collect(Collectors.joining(","));
// 拼接SQL
selectCondition.append(" AND id IN (");
if (StrUtil.isBlank(idSql)) {
idSql = "''";
}
selectCondition.append(idSql).append(")");
}
if (standNoSearch) {
String noSql = standNoSet.stream()
.map(item -> "'" + item + "'")
.collect(Collectors.joining(","));
// 拼接SQL
selectCondition.append(" AND standard_number IN (");
if (StrUtil.isBlank(noSql)) {
noSql = "''";
}
selectCondition.append(noSql).append(")");
}
selectCondition.append(" AND del_flag = 0");