From 2cedb574c22cf2f77418929e79f23ace0a7e7ac6 Mon Sep 17 00:00:00 2001 From: 田源 <lastanimals@163.com> Date: 星期一, 29 四月 2024 10:05:12 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/UBCSSqlKeyword.java | 207 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 188 insertions(+), 19 deletions(-) diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/UBCSSqlKeyword.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/UBCSSqlKeyword.java index 4c4fd96..6b2e357 100644 --- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/UBCSSqlKeyword.java +++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/UBCSSqlKeyword.java @@ -1,6 +1,8 @@ package com.vci.ubcs.starter.util; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.enums.SqlKeyword; +import com.baomidou.mybatisplus.core.enums.SqlLike; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; @@ -9,7 +11,7 @@ import java.util.Map; /** - * UBCSSqlKeyword + * UBCSSqlKeyword,楂樼骇鏌ヨ涓嶄紶鐨勬椂鍊欓粯璁ゆ槸_equal * map杞瑆rapper鏃剁敤鍒扮殑姣斿杞崲 * @author ludc * @date 2023/06/06 10:01 @@ -39,12 +41,125 @@ public UBCSSqlKeyword() { } + private static String likeValueSqlwhere(String field, Object value, SqlLike operation){ + String sqlwhere=""; + switch(operation) { + case LEFT: + return sqlwhere = field +" "+SqlKeyword.LIKE.getSqlSegment() +" '%" + value.toString() + "' "; + case RIGHT: + sqlwhere=field+" "+SqlKeyword.LIKE.getSqlSegment() +" '"+value.toString()+"%' "; + case DEFAULT: + return sqlwhere=field+" "+SqlKeyword.LIKE.getSqlSegment() +" '%"+value.toString()+"%' "; + } + return sqlwhere; + } + + private static String sqlKeywordValueSqlwhere(String field, Object value, SqlKeyword operation){ + String sqlwhere=""; + switch(operation) { + case IN://"IN"), + return sqlwhere=field+" "+SqlKeyword.IN.getSqlSegment() +"('"+value.toString()+"')"; + case NOT_IN://"NOT IN"), + sqlwhere=field+" "+SqlKeyword.NOT_IN.getSqlSegment() +"('"+value.toString()+"')"; + //case LIKE://"LIKE"), + case NOT_LIKE://"NOT LIKE"), + return sqlwhere=field+" "+SqlKeyword.NOT_LIKE.getSqlSegment() +" '%"+value+"%' "; + case EQ://"="), + return sqlwhere=field+" "+SqlKeyword.EQ.getSqlSegment() +" '"+value.toString()+"' "; + case NE://"<>"), + return sqlwhere=field+ " "+SqlKeyword.NE.getSqlSegment() +" '"+value.toString()+"' "; + case GT://">"), + return sqlwhere=field+ " "+SqlKeyword.GT.getSqlSegment() +" '"+value.toString()+"' "; + case GE://">="), + return sqlwhere=field+ " "+SqlKeyword.GE.getSqlSegment() +" '"+value.toString()+"' "; + case LT://"<"), + return sqlwhere=field+ " "+SqlKeyword.LT.getSqlSegment() +" '"+value.toString()+"' "; + case LE://"<="), + return sqlwhere=field+" "+ SqlKeyword.LE.getSqlSegment() +" '"+value.toString()+"' "; + case IS_NULL://"IS NULL"), + return sqlwhere=field+" IS NULL "; + case IS_NOT_NULL://"IS NOT NULL"), + return sqlwhere=field+" IS NOT NULL "; + } + return sqlwhere; + } + + private static String dateValueSqlwhere(String field, Object value, SqlKeyword operation){ + String sqlwhere=""; + switch(operation) { + case EQ://"="), + return sqlwhere=field+" "+SqlKeyword.EQ.getSqlSegment() +" to_date('"+value.toString()+"','yyyy-MM-dd HH:mm:ss') "; + case NE://"<>"), + return sqlwhere=field+ " "+SqlKeyword.NE.getSqlSegment() +" to_date('"+value.toString()+"','yyyy-MM-dd HH:mm:ss') "; + case GT://">"), + return sqlwhere=field+ " "+SqlKeyword.GT.getSqlSegment() +" to_date('"+value.toString()+"','yyyy-MM-dd HH:mm:ss') "; + case GE://">="), + return sqlwhere=field+ " "+SqlKeyword.GE.getSqlSegment() +" to_date('"+value.toString()+"','yyyy-MM-dd HH:mm:ss') "; + case LT://"<"), + return sqlwhere=field+ " "+SqlKeyword.LT.getSqlSegment()+" to_date('"+value.toString()+"','yyyy-MM-dd HH:mm:ss') "; + case LE://"<="), + return sqlwhere=field+" "+ SqlKeyword.LE.getSqlSegment() +" to_date('"+value.toString()+"','yyyy-MM-dd HH:mm:ss') "; + } + return sqlwhere; + } + + public static String buildSqlwhere(Map<String, Object> query) { + StringBuffer sb=new StringBuffer(); + if (!Func.isEmpty(query)) { + + query.forEach((k, v) -> { + + if (!Func.hasEmpty(new Object[]{k, v})) { + sb.append(" and "); + if (k.endsWith(LIKE)) { + sb.append(likeValueSqlwhere(getColumn(k,LIKE),v,SqlLike.DEFAULT)); + } else if (k.endsWith(NOT_EQUAL)) { + sb.append(sqlKeywordValueSqlwhere(getColumn(k,NOT_EQUAL), v,SqlKeyword.NE)); + } else if (k.endsWith(LIKE_LEFT)) { + sb.append(likeValueSqlwhere(getColumn(k,LIKE_LEFT),v,SqlLike.LEFT)); + } else if (k.endsWith(LIKE_RIGHT)) { + sb.append(likeValueSqlwhere(getColumn(k,LIKE_RIGHT),v,SqlLike.RIGHT)); + } else if (k.endsWith(NOT_LIKE)) { + sb.append(sqlKeywordValueSqlwhere(getColumn(k,NOT_LIKE), v,SqlKeyword.NOT_LIKE)); + } else if (k.endsWith(GE)) { + sb.append(sqlKeywordValueSqlwhere(getColumn(k,GE), v,SqlKeyword.GE)); + } else if (k.endsWith(LE)) { + sb.append(sqlKeywordValueSqlwhere(getColumn(k,LE), v,SqlKeyword.LE)); + } else if (k.endsWith(GT)) { + sb.append(sqlKeywordValueSqlwhere(getColumn(k,GT), v,SqlKeyword.GT)); + } else if (k.endsWith(LT)) { + sb.append(sqlKeywordValueSqlwhere(getColumn(k,LT), v,SqlKeyword.LT)); + } else if (k.endsWith(DATE_GE)) { + sb.append(dateValueSqlwhere(getColumn(k,DATE_GE),v,SqlKeyword.GE)); + } else if (k.endsWith(DATE_GT)) { + sb.append(dateValueSqlwhere(getColumn(k,DATE_GT),v,SqlKeyword.GT)); + } else if (k.endsWith(DATE_EQUAL)) { + sb.append(dateValueSqlwhere(getColumn(k,DATE_EQUAL),v,SqlKeyword.EQ)); + } else if (k.endsWith(DATE_LE)) { + sb.append(dateValueSqlwhere(getColumn(k,DATE_LE),v,SqlKeyword.LE)); + } else if (k.endsWith(DATE_LT)) { + sb.append(dateValueSqlwhere(getColumn(k,DATE_LT),v,SqlKeyword.LT)); + } else if (k.endsWith(IS_NULL)) { + sb.append(sqlKeywordValueSqlwhere(getColumn(k,IS_NULL), v,SqlKeyword.IS_NULL)); + } else if (k.endsWith(NOT_NULL)) { + sb.append(sqlKeywordValueSqlwhere(getColumn(k,NOT_NULL), v,SqlKeyword.IS_NOT_NULL)); + } else { + sb.append(sqlKeywordValueSqlwhere(getColumn(k,EQUAL), v,SqlKeyword.EQ)); + } + + } + }); + } + + return sb.toString(); + } + public static void buildCondition(Map<String, Object> query, QueryWrapper<?> qw) { if (!Func.isEmpty(query)) { query.forEach((k, v) -> { if (!Func.hasEmpty(new Object[]{k, v}) && !k.endsWith("_ignore")) { - if (k.endsWith("_equal")) { - qw.eq(getColumn(k, "_equal"), v); + if (k.endsWith("_like")) { + qw.like(getColumn(k, "_like"), v); } else if (k.endsWith("_notequal")) { qw.ne(getColumn(k, "_notequal"), v); } else if (k.endsWith("_likeleft")) { @@ -76,7 +191,7 @@ } else if (k.endsWith("_notnull")) { qw.isNotNull(getColumn(k, "_notnull")); } else { - qw.like(getColumn(k, "_like"), v); + qw.eq(getColumn(k, "_equal"), v); } } @@ -84,12 +199,66 @@ } } + public static void buildConditionByAs(Map<String, Object> query, MPJLambdaWrapper<?> qw, String tableAlias){ + buildConditionMPJ(query,qw,tableAlias); + } + public static void buildCondition(Map<String, Object> query, MPJLambdaWrapper<?> qw) { + buildConditionMPJ(query,qw,null); + } + + private static void buildConditionMPJ(Map<String, Object> query, MPJLambdaWrapper<?> qw, String tableAlias){ if (!Func.isEmpty(query)) { query.forEach((k, v) -> { if (!Func.hasEmpty(new Object[]{k, v}) && !k.endsWith("_ignore")) { - if (k.endsWith("_equal")) { - qw.eq(getColumn(k, "_equal"), v); + if (k.endsWith("_like")) { + qw.like(tableAlias+"."+getColumn(k, "_like"), v); + } else if (k.endsWith("_notequal")) { + qw.ne(tableAlias+"."+getColumn(k, "_notequal"), v); + } else if (k.endsWith("_likeleft")) { + qw.likeLeft(tableAlias+"."+getColumn(k, "_likeleft"), v); + } else if (k.endsWith("_likeright")) { + qw.likeRight(tableAlias+"."+getColumn(k, "_likeright"), v); + } else if (k.endsWith("_notlike")) { + qw.notLike(tableAlias+"."+getColumn(k, "_notlike"), v); + } else if (k.endsWith("_ge")) { + qw.ge(tableAlias+"."+getColumn(k, "_ge"), v); + } else if (k.endsWith("_le")) { + qw.le(tableAlias+"."+getColumn(k, "_le"), v); + } else if (k.endsWith("_gt")) { + qw.gt(tableAlias+"."+getColumn(k, "_gt"), v); + } else if (k.endsWith("_lt")) { + qw.lt(tableAlias+"."+getColumn(k, "_lt"), v); + } else if (k.endsWith("_datege")) { + qw.ge(tableAlias+"."+getColumn(k, "_datege"), DateUtil.parse(String.valueOf(v), "yyyy-MM-dd HH:mm:ss")); + } else if (k.endsWith("_dategt")) { + qw.gt(tableAlias+"."+getColumn(k, "_dategt"), DateUtil.parse(String.valueOf(v), "yyyy-MM-dd HH:mm:ss")); + } else if (k.endsWith("_dateequal")) { + qw.eq(tableAlias+"."+getColumn(k, "_dateequal"), DateUtil.parse(String.valueOf(v), "yyyy-MM-dd HH:mm:ss")); + } else if (k.endsWith("_datele")) { + qw.le(tableAlias+"."+getColumn(k, "_datele"), DateUtil.parse(String.valueOf(v), "yyyy-MM-dd HH:mm:ss")); + } else if (k.endsWith("_datelt")) { + qw.lt(tableAlias+"."+getColumn(k, "_datelt"), DateUtil.parse(String.valueOf(v), "yyyy-MM-dd HH:mm:ss")); + } else if (k.endsWith("_null")) { + qw.isNull(tableAlias+"."+getColumn(k, "_null")); + } else if (k.endsWith("_notnull")) { + qw.isNotNull(tableAlias+"."+getColumn(k, "_notnull")); + } else { + qw.eq(tableAlias+"."+getColumn(k, "_equal"), v); + } + + } + }); + } + } + + public static MPJLambdaWrapper buildConditionByMapString(Map<String, String> query) { + MPJLambdaWrapper<?>qw=new MPJLambdaWrapper<>(); + if (!Func.isEmpty(query)) { + query.forEach((k, v) -> { + if (!Func.hasEmpty(new Object[]{k, v}) && !k.endsWith("_ignore")) { + if (k.endsWith("_like")) { + qw.like(getColumn(k, "_like"), v); } else if (k.endsWith("_notequal")) { qw.ne(getColumn(k, "_notequal"), v); } else if (k.endsWith("_likeleft")) { @@ -121,20 +290,21 @@ } else if (k.endsWith("_notnull")) { qw.isNotNull(getColumn(k, "_notnull")); } else { - qw.like(getColumn(k, "_like"), v); + qw.eq(getColumn(k, "_equal"), v); } } }); - } + }; + return qw; } public static void buildConditionByMapString(Map<String, String> query, MPJLambdaWrapper<?> qw) { if (!Func.isEmpty(query)) { query.forEach((k, v) -> { if (!Func.hasEmpty(new Object[]{k, v}) && !k.endsWith("_ignore")) { - if (k.endsWith("_equal")) { - qw.eq(getColumn(k, "_equal"), v); + if (k.endsWith("_like")) { + qw.like(getColumn(k, "_like"), v); } else if (k.endsWith("_notequal")) { qw.ne(getColumn(k, "_notequal"), v); } else if (k.endsWith("_likeleft")) { @@ -166,7 +336,7 @@ } else if (k.endsWith("_notnull")) { qw.isNotNull(getColumn(k, "_notnull")); } else { - qw.like(getColumn(k, "_like"), v); + qw.eq(getColumn(k, "_equal"), v); } } @@ -178,8 +348,8 @@ if (!Func.isEmpty(query)) { query.forEach((k, v) -> { if (!Func.hasEmpty(new Object[]{k, v}) && !k.endsWith("_ignore")) { - if (k.endsWith("_equal")) { - qw.eq(getColumn(k, "_equal"), v); + if (k.endsWith("_like")) { + qw.like(getColumn(k, "_like"), v); } else if (k.endsWith("_notequal")) { qw.ne(getColumn(k, "_notequal"), v); } else if (k.endsWith("_likeleft")) { @@ -211,7 +381,7 @@ } else if (k.endsWith("_notnull")) { qw.isNotNull(getColumn(k, "_notnull")); } else { - qw.like(getColumn(k, "_like"), v); + qw.eq(getColumn(k, "_equal"), v); } } @@ -220,20 +390,19 @@ } /** - * 鐩墠鑰冭檻涓�绉嶇壒娈婃儏鍐碉紝鍦ㄥ仛杩炶〃鏌ヨ鐨勬椂鍊欙紝鍥犱负鏌ヨ鏉′欢鏄痬ap杞瑆rapper锛� - * 杩欐牱灏变細鍑虹幇鏈槑纭畾涔夊垪鐨勯敊璇紝鎵�浠ラ渶瑕佽�冭檻鍦ㄤ綍澶勬潵鍋氬鐞嗭紝 + * 鑾峰彇鍒楀悕锛屾病鏈夎浆涓嬪垝绾挎槧灏� * @param column * @param keyword * @return */ - private static String getColumn(String column, String keyword) { - + public static String getColumn(String column, String keyword) { //娌℃湁杞笅鍒掔嚎鏄犲皠 - return StringUtil.removeSuffix(column, keyword).toLowerCase(Locale.ROOT); + return StringUtil.removeSuffix(column, keyword).toLowerCase(Locale.ROOT).trim(); } public static String filter(String param) { return param == null ? null : param.replaceAll("(?i)'|%|--|insert|delete|select|count|group|union|drop|truncate|alter|grant|execute|exec|xp_cmdshell|call|declare|sql", ""); } + } -- Gitblit v1.9.3