| | |
| | | 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 com.vci.ubcs.starter.web.util.VciDateUtil; |
| | | import org.springblade.core.tool.utils.DateUtil; |
| | | import org.springblade.core.tool.utils.Func; |
| | | import org.springblade.core.tool.utils.StringUtil; |
| | |
| | | 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) -> { |