diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/LawsComplianceBoardServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/LawsComplianceBoardServiceImpl.java index 2dc99dc80..8277a6789 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/LawsComplianceBoardServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/LawsComplianceBoardServiceImpl.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.jero.common.constant.enums.CutEnum; import com.jero.common.exception.JeroBootException; +import com.jero.common.system.query.QueryRuleEnum; import com.jero.modules.document.enums.FieldTypeEnum; import com.jero.modules.document.service.IBussDocumentLibraryEOService; import com.jero.modules.document.vo.QueryConditionVO; @@ -495,7 +496,7 @@ public class LawsComplianceBoardServiceImpl implements ILawsComplianceBoardServi String queryConditionVOListStr = (String) parameter.get("queryConditionVOList"); List queryConditionVOList = com.alibaba.fastjson.JSONObject.parseArray(queryConditionVOListStr, QueryConditionVO.class); if(ObjectUtils.isNotEmpty(queryConditionVOList)){ - String queryCondition = this.bussDocumentLibraryEOService.sqlJoint(queryConditionVOList); + String queryCondition = this.sqlJoint(queryConditionVOList); if(StringUtils.isNotBlank(queryCondition)){ conditionSb.append(" and " + queryCondition); } @@ -530,6 +531,88 @@ public class LawsComplianceBoardServiceImpl implements ILawsComplianceBoardServi return condition; } + public String sqlJoint(List queryConditionVOList){ + StringBuilder sb = new StringBuilder(); + if(queryConditionVOList.size() != 0){ + int count =0; + for (QueryConditionVO queryConditionVO : queryConditionVOList) { + String type = queryConditionVO.getType();//and或or + String rule = queryConditionVO.getRule(); + String ruleLike = ""; + if(QueryRuleEnum.LEFT_LIKE.getCondition().equals(rule) || QueryRuleEnum.RIGHT_LIKE.getCondition().equals(rule)){ + ruleLike = QueryRuleEnum.LIKE.getCondition(); + } + String field = queryConditionVO.getField(); + String val = queryConditionVO.getVal(); + //如果查询字段对应的搜索条件值为空,则不作处理 + if(StringUtils.isNotBlank(val)) { + field = "bdl." + field; + count++;//从第二个查询条件开始拼接type(and或or) + if (count > 1) { + sb.append(" " + type + " "); + } + sb.append(" " + field + " "); + //查询类型 + String ruleTemp = queryType(rule); + if (StringUtils.isNotBlank(ruleLike)) { + sb.append(ruleLike + " "); + } else { + sb.append(ruleTemp + " "); + } + //like和in需要特殊处理 + if (QueryRuleEnum.IN.getCondition().equals(rule)) { + if (val.contains(",")) { + StringBuilder sbTemp = new StringBuilder(); + for (String valTemp : val.split(",")) { + sbTemp.append("'" + valTemp + "' ,"); + } + if (StringUtils.isNotBlank(sbTemp)) { + String substring = sbTemp.substring(0, sbTemp.length() - 1); + sb.append("(" + substring + ")"); + } + } + sb.append("('" + val + "')"); + } else if (QueryRuleEnum.LIKE.getCondition().equals(rule)) { + sb.append("'%" + val + "%'"); + } else if (QueryRuleEnum.LEFT_LIKE.getCondition().equals(rule)) { + sb.append("'%" + val + "'"); + } else if (QueryRuleEnum.RIGHT_LIKE.getCondition().equals(rule)) { + sb.append("'" + val + "%'"); + } else { + sb.append("'" + val + "'"); + } + } + } + } + return sb.toString(); + } + + public String queryType(String rule){ + String value =""; + if(QueryRuleEnum.GT.getCondition().equals(rule)){ + value = QueryRuleEnum.GT.getValue(); + }else if(QueryRuleEnum.GE.getCondition().equals(rule)){ + value = QueryRuleEnum.GE.getValue(); + }else if(QueryRuleEnum.LT.getCondition().equals(rule)){ + value = QueryRuleEnum.LT.getValue(); + }else if(QueryRuleEnum.LE.getCondition().equals(rule)){ + value = QueryRuleEnum.LE.getValue(); + }else if(QueryRuleEnum.EQ.getCondition().equals(rule)){ + value = QueryRuleEnum.EQ.getValue(); + }else if(QueryRuleEnum.NE.getCondition().equals(rule)){ + value = QueryRuleEnum.NE.getValue(); + }else if(QueryRuleEnum.LIKE.getCondition().equals(rule)){ + value = QueryRuleEnum.LIKE.getValue(); + }else if(QueryRuleEnum.LEFT_LIKE.getCondition().equals(rule)){ + value = QueryRuleEnum.LEFT_LIKE.getValue(); + }else if(QueryRuleEnum.RIGHT_LIKE.getCondition().equals(rule)){ + value = QueryRuleEnum.RIGHT_LIKE.getValue(); + }else if(QueryRuleEnum.IN.getCondition().equals(rule)){ + value = QueryRuleEnum.IN.getValue(); + } + return value; + } + /** * 处理技术领域展示字段 * @param technologyTerritoryList