feat: 标准列表搜索条件支持关联表查询

This commit is contained in:
2023-12-08 17:18:52 +08:00
parent 0a4371f663
commit 43d7f847a3
@@ -1861,8 +1861,108 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
* @Description: 封装查询条件
**/
private String getSelectCondition(Map<String, Object> parameterMap, List<LawsTag> fieldList) {
String module = (String) parameterMap.get("module");
//查询条件
StringBuilder selectCondition = new StringBuilder("where del_flag = 0");
StringBuilder selectCondition = new StringBuilder("where 1 = 1");
// 拼接多表关联查询条件
Set<String> idSet = new HashSet<>();
Set<String> standNoSet = new HashSet<>();
// 企标独有权限
if (module.equals(TableNameEnum.ENTERPRISE_STANDARDS.getValue())) {
// 授权部门
String authDept = (String) parameterMap.get(FieldCommon.AUTH_DEPT);
if (StrUtil.isNotBlank(authDept)) {
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(")");
parameterMap.remove(FieldCommon.AUTH_DEPT);
}
}
// 代替标准号
String replaceStandard = (String) parameterMap.get(FieldCommon.REPLACED_STANDARD);
LambdaQueryWrapper<LawsReplacedStandard> replaceWrapper = new LambdaQueryWrapper<>();
if (StrUtil.isNotBlank(replaceStandard)) {
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(")");
parameterMap.remove(FieldCommon.REPLACED_STANDARD);
}
// 被代替标准号
String replacedByStandard = (String) parameterMap.get(FieldCommon.REPLACED_BY_STANDARD);
if (StrUtil.isNotBlank(replacedByStandard)) {
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(")");
parameterMap.remove(FieldCommon.REPLACED_BY_STANDARD);
}
// 引用标准号
String referenceStandard = (String) parameterMap.get(FieldCommon.REFERENCE_STANDARD);
if (StrUtil.isNotBlank(referenceStandard)) {
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(")");
parameterMap.remove(FieldCommon.REFERENCE_STANDARD);
}
// 被引用标准号
String referencedStandard = (String) parameterMap.get(FieldCommon.REFERENCED_STANDARD);
if (StrUtil.isNotBlank(referencedStandard)) {
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() + "'")
.collect(Collectors.joining(","));
// 拼接SQL
selectCondition.append(" AND standard_number IN (");
if (StrUtil.isBlank(sql)) {
sql = "''";
}
selectCondition.append(sql).append(")");
parameterMap.remove(FieldCommon.REFERENCED_STANDARD);
}
selectCondition.append(" AND del_flag = 0");
// 删除pageNo和pageSize,不参与条件查询
parameterMap.remove("pageNo");
parameterMap.remove("pageSize");