ludc
2024-01-30 8e832c69b20bd34f6da9ef25324ec690d1cccbe3
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/UBCSCondition.java
@@ -6,14 +6,18 @@
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.vci.ubcs.starter.web.constant.QueryOptionConstant;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.support.Kv;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringUtil;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
@@ -24,6 +28,11 @@
 * @date 2023/6/6 15:26
 */
public class UBCSCondition {
   /**
    * 空格
    */
   public static final String SPACE = " ";
   public UBCSCondition() {
   }
@@ -136,4 +145,92 @@
      return qw;
   }
   public static String getWhereSqlByMap(Map<String, String> conditionMap){
      List<String> whereSqlList = new ArrayList<>();
      conditionMap.forEach((key,value)->{
         String sql = "";
         // 不为空才去拼接
         if(!Func.hasEmpty(new Object[]{key, value}) && !key.endsWith("_ignore")){
            if (key.endsWith("_like")) {
               String field = UBCSSqlKeyword.getColumn(key, "_like");
               sql = field + SPACE + "LIKE" + SPACE + "'%" + value + "%'" + SPACE;
            } else if (key.endsWith("_notequal")) {
               String field = UBCSSqlKeyword.getColumn(key, "_notequal");
               sql = field + SPACE + " != " + value + SPACE;
            } else if (key.endsWith("_likeleft")) {
               String field = UBCSSqlKeyword.getColumn(key, "_likeleft");
               sql = field + SPACE + "LIKE" + SPACE + "%" + value + SPACE;
            } else if (key.endsWith("_likeright")) {
               String field = UBCSSqlKeyword.getColumn(key, "_likeright");
               sql = field + SPACE + "LIKE" + SPACE + value + "%" + SPACE;
            } else if (key.endsWith("_notlike")) {
               String field = UBCSSqlKeyword.getColumn(key, "_notlike");
               sql = field + SPACE + "NO LIKE" + SPACE + "%" + value + "%" + SPACE;
            } else if (key.endsWith("_ge")) {
               String field = UBCSSqlKeyword.getColumn(key, "_ge");
               sql = field + SPACE + " >= " + value + SPACE;
            } else if (key.endsWith("_le")) {
               //说明是<=的。我们需要先获取一下
               String field = UBCSSqlKeyword.getColumn(key, "_le");
               sql = field + SPACE + " <= " + value + "" + SPACE;
            } else if (key.endsWith("_gt")) {
               String field = UBCSSqlKeyword.getColumn(key, "_gt");
               sql = field + SPACE + "> " + value + SPACE;
            } else if (key.endsWith("_lt")) {
               String field = UBCSSqlKeyword.getColumn(key, "_lt");
               sql = field + SPACE + "< " + value + SPACE;
            } else if (key.endsWith("_datege")) {
               String field = UBCSSqlKeyword.getColumn(key, "_datege");
               sql = field + SPACE + ">= '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE;
            } else if (key.endsWith("_dategt")) {
               String field = UBCSSqlKeyword.getColumn(key, "_dategt");
               sql = field + SPACE + "> '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE;
            } else if (key.endsWith("_dateequal")) {
               String field = UBCSSqlKeyword.getColumn(key, "_dateequal");
               sql = field + SPACE + "= '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE;
            } else if (key.endsWith("_datele")) {
               String field = UBCSSqlKeyword.getColumn(key, "_datele");
               sql = field + SPACE + "<= '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE;
            } else if (key.endsWith("_datelt")) {
               String field = UBCSSqlKeyword.getColumn(key, "_datelt");
               sql = field + SPACE + "< '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE;
            } else if (key.endsWith("_null")) {
               String field = UBCSSqlKeyword.getColumn(key, "_null");
               sql = field + SPACE + "IS NULL" + SPACE;
            } else if (key.endsWith("_notnull")) {
               String field = UBCSSqlKeyword.getColumn(key, "_notnull");
               sql = field + SPACE + "IS NOT NULL" + SPACE;
            } else if (key.endsWith("_dateequal")) {
               String field = UBCSSqlKeyword.getColumn(key, "_dateequal");
               sql = field + SPACE + "= '" + DateUtil.parse(String.valueOf(value), "yyyy-MM-dd HH:mm:ss") + "'" + SPACE;
            } else if (key.endsWith("_equal")) {
               String field = UBCSSqlKeyword.getColumn(key, "_equal");
               sql = field + SPACE + "= '" + value + "'" + SPACE;
            } else if(key.endsWith("_in")) {
               String field = UBCSSqlKeyword.getColumn(key, "_in");
               sql = VciBaseUtil.toInSql(field,value);
            } else if(key.endsWith("_notin")) {
               String field = UBCSSqlKeyword.getColumn(key, "_notin");
               sql = VciBaseUtil.toInSql(field,value);
            }else{
               sql = VciBaseUtil.toInSql(key,value);
            }
            if(!sql.isEmpty()){
               whereSqlList.add(sql);
            }
         }
      });
      //组合起来
      StringBuilder andSb = new StringBuilder();
      whereSqlList.stream().forEach(s -> {
         andSb.append(s).append(SPACE).append(QueryOptionConstant.AND).append(SPACE);
      });
      String andString = andSb.toString().trim();
      String endWithSql = QueryOptionConstant.AND;
      if (andString.endsWith(endWithSql)) {
         andString = andString.substring(0, andString.length() - endWithSql.length());
      }
      return andString;
   }
}