2023-04-19 13:35:35 +08:00
|
|
|
//package com.engine.salary.formlua.func.compare;
|
|
|
|
|
//
|
|
|
|
|
//import com.alibaba.fastjson.JSON;
|
|
|
|
|
//import com.engine.salary.formlua.entity.parameter.DataType;
|
|
|
|
|
//import com.engine.salary.formlua.entity.standard.FormulaFilterData;
|
|
|
|
|
//import com.weaver.common.form.component.base.ComponentConfig;
|
|
|
|
|
//import com.weaver.common.form.component.base.ComponentType;
|
|
|
|
|
//import com.weaver.common.form.excel.validator.Validator;
|
|
|
|
|
//import com.weaver.common.form.metadata.field.FormField;
|
|
|
|
|
//import com.weaver.common.form.stat.FilterFormData;
|
|
|
|
|
//import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
//import org.slf4j.Logger;
|
|
|
|
|
//import org.slf4j.LoggerFactory;
|
|
|
|
|
//
|
|
|
|
|
//import java.util.ArrayList;
|
|
|
|
|
//import java.util.List;
|
|
|
|
|
//
|
|
|
|
|
///**
|
|
|
|
|
// * 逻辑操作符的条件构建工具类
|
|
|
|
|
// */
|
|
|
|
|
//public class Compareutils {
|
|
|
|
|
// protected static final Logger logger = LoggerFactory.getLogger(Compareutils.class);
|
|
|
|
|
//
|
|
|
|
|
// /**
|
|
|
|
|
// * 构建不等于操作符的搜索条件
|
|
|
|
|
// *
|
|
|
|
|
// * @param dataType
|
|
|
|
|
// * @param obj1
|
|
|
|
|
// * @param obj2
|
|
|
|
|
// * @throws Exception
|
|
|
|
|
// */
|
|
|
|
|
// public static void buildNotEqFilterParam(DataType dataType, Object obj1, Object obj2) throws Exception {
|
|
|
|
|
// List<FormulaFilterData> filterFormDataList = new ArrayList<>();
|
|
|
|
|
// FormulaFilterData filterData = new FormulaFilterData();
|
|
|
|
|
// String content = null;
|
|
|
|
|
// try {
|
|
|
|
|
// if (obj1 instanceof DataType) {
|
|
|
|
|
// DataType dataType1 = (DataType) obj1;
|
|
|
|
|
// if (StringUtils.isEmpty(dataType1.getComponentKey())) {
|
|
|
|
|
// dataType1.setComponentKey(dataType1.getDataType());
|
|
|
|
|
// }
|
|
|
|
|
// if (obj2 instanceof DataType) {
|
|
|
|
|
//// content = ((DataType) obj2).getContent()+"";
|
|
|
|
|
// DataType paramDataType = (DataType) obj2;
|
|
|
|
|
// if (paramDataType == null || paramDataType.getContent() == null) {
|
|
|
|
|
// content = "";
|
|
|
|
|
// } else {
|
|
|
|
|
// content = paramDataType.getContent() + "";
|
|
|
|
|
// }
|
|
|
|
|
// } else {
|
|
|
|
|
// content = obj2 + "";
|
|
|
|
|
// }
|
|
|
|
|
// if (content != null) {
|
|
|
|
|
// String componentKey = dataType1.getComponentKey();
|
|
|
|
|
// filterData.setFieldId(dataType1.getFieldId());
|
|
|
|
|
// if (dataType1.getSubFormId() != null) {
|
|
|
|
|
// filterData.setSubFormId(dataType1.getSubFormId() + "");
|
|
|
|
|
// }
|
|
|
|
|
// filterData.setComponentKey(componentKey);
|
|
|
|
|
// if (StringUtils.isEmpty(content)) {
|
|
|
|
|
//// filterData.setTerm(FilterFormData.TERM_NOT_NULL);
|
|
|
|
|
// } else {
|
|
|
|
|
//// //选项控件
|
|
|
|
|
//// if (ComponentConfig.isOptionComponent(componentKey)) {
|
|
|
|
|
//// filterData.setTerm(FilterFormData.TERM_NOT_EQ);
|
|
|
|
|
//// List<String> ids = new ArrayList<>();
|
|
|
|
|
//// String[] idsArray = content.split(",");
|
|
|
|
|
//// for (String idStr : idsArray) {
|
|
|
|
|
//// if (StringUtils.isNotBlank(idStr)) {
|
|
|
|
|
//// ids.add(idStr);
|
2023-04-13 09:32:20 +08:00
|
|
|
//// }
|
|
|
|
|
//// }
|
2023-04-19 13:35:35 +08:00
|
|
|
//// filterData.setIds(ids);
|
|
|
|
|
//// //其他
|
|
|
|
|
//// } else {
|
|
|
|
|
//// filterData.setTerm(FilterFormData.TERM_NOT_EQ);
|
|
|
|
|
//// filterData.setContent(content);
|
|
|
|
|
////// if(ComponentConfig.isNumberComponent(dataType1.getComponentKey()) || dataType1.getComponentKey().equalsIgnoreCase(DataType.NUMBER)){
|
|
|
|
|
////// if(StringUtils.isEmpty(content)){
|
|
|
|
|
////// filterData.setContent("0");
|
|
|
|
|
////// }
|
|
|
|
|
////// }
|
|
|
|
|
//// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// filterFormDataList.add(filterData);
|
|
|
|
|
//// dataType.setFormulaFilterDataList(filterFormDataList);
|
|
|
|
|
// dataType.setComponentKey(dataType1.getComponentKey());
|
|
|
|
|
// dataType.setSubFormId(dataType1.getSubFormId());
|
|
|
|
|
// }
|
|
|
|
|
// } catch (Exception e) {
|
|
|
|
|
// logger.error("err", e);
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// /**
|
|
|
|
|
// * 构建大于、小于、大于等于、小于等于的搜索条件
|
|
|
|
|
// *
|
|
|
|
|
// * @param dataType
|
|
|
|
|
// * @param name
|
|
|
|
|
// * @param obj1
|
|
|
|
|
// * @param obj2
|
|
|
|
|
// */
|
|
|
|
|
// public static void buildLessMoreFilterParam(DataType dataType, String name, Object obj1, Object obj2) {
|
|
|
|
|
// List<FormulaFilterData> filterFormDataList = new ArrayList<>();
|
|
|
|
|
// FormulaFilterData filterData = new FormulaFilterData();
|
|
|
|
|
// try {
|
|
|
|
|
// logger.info(name + "执行结果:" + JSON.toJSONString(dataType));
|
|
|
|
|
// if (obj1 instanceof DataType) {
|
|
|
|
|
// DataType dataType1 = (DataType) obj1;
|
|
|
|
|
// if (StringUtils.isEmpty(dataType1.getComponentKey())) {
|
|
|
|
|
// dataType1.setComponentKey(dataType1.getDataType());
|
|
|
|
|
// }
|
|
|
|
|
// String content = null;
|
|
|
|
|
// if (obj2 instanceof DataType) {
|
|
|
|
|
//// content = ((DataType) obj2).getContent()+"";
|
|
|
|
|
// DataType paramDataType = (DataType) obj2;
|
|
|
|
|
// if (paramDataType == null || paramDataType.getContent() == null) {
|
|
|
|
|
// content = "";
|
|
|
|
|
// } else {
|
|
|
|
|
// content = paramDataType.getContent() + "";
|
|
|
|
|
// }
|
|
|
|
|
// } else {
|
|
|
|
|
// content = obj2 + "";
|
|
|
|
|
// }
|
|
|
|
|
// if (content != null) {
|
|
|
|
|
// String componentKey = dataType1.getComponentKey();
|
|
|
|
|
// if (ComponentConfig.isNumberComponent(componentKey)
|
|
|
|
|
// || componentKey.equals(ComponentType.DateComponent.toString())
|
|
|
|
|
// || componentKey.equals(ComponentType.TimeComponent.toString())
|
|
|
|
|
// || dataType1.getComponentKey().equalsIgnoreCase(DataType.STRING)
|
|
|
|
|
// || dataType1.getComponentKey().equalsIgnoreCase(DataType.NUMBER)
|
|
|
|
|
// || dataType1.getComponentKey().equalsIgnoreCase(DataType.STRING)
|
|
|
|
|
// || dataType1.getComponentKey().equalsIgnoreCase(DataType.BOOL)) {
|
|
|
|
|
//
|
|
|
|
|
// filterData.setFieldId(dataType1.getFieldId() + "");
|
|
|
|
|
// if (dataType1.getSubFormId() != null) {
|
|
|
|
|
// filterData.setSubFormId(dataType1.getSubFormId() + "");
|
2023-04-13 09:32:20 +08:00
|
|
|
// }
|
2023-04-19 13:35:35 +08:00
|
|
|
// filterData.setComponentKey(componentKey);
|
|
|
|
|
// switch (name) {
|
|
|
|
|
// case ">=":
|
|
|
|
|
// filterData.setTerm(FilterFormData.TERM_GE);
|
|
|
|
|
// break;
|
|
|
|
|
// case ">":
|
|
|
|
|
// filterData.setTerm(FilterFormData.TERM_GT);
|
|
|
|
|
// break;
|
|
|
|
|
// case "<=":
|
|
|
|
|
// filterData.setTerm(FilterFormData.TERM_LE);
|
|
|
|
|
// break;
|
|
|
|
|
// case "<":
|
|
|
|
|
// filterData.setTerm(FilterFormData.TERM_LT);
|
|
|
|
|
// break;
|
|
|
|
|
// default:
|
|
|
|
|
// break;
|
|
|
|
|
// }
|
|
|
|
|
// filterData.setContent(content);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// filterFormDataList.add(filterData);
|
2023-04-13 09:32:20 +08:00
|
|
|
// dataType.setFormulaFilterDataList(filterFormDataList);
|
2023-04-19 13:35:35 +08:00
|
|
|
// dataType.setComponentKey(dataType1.getComponentKey());
|
|
|
|
|
// dataType.setSubFormId(dataType1.getSubFormId());
|
|
|
|
|
// }
|
|
|
|
|
// } catch (Exception e) {
|
|
|
|
|
// logger.error("err", e);
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// /**
|
|
|
|
|
// * 校验大于、小于、小于等于、大于等于操作符的入参
|
|
|
|
|
// *
|
|
|
|
|
// * @param name
|
|
|
|
|
// * @param obj1
|
|
|
|
|
// * @param obj2
|
|
|
|
|
// * @return
|
|
|
|
|
// */
|
|
|
|
|
// public static boolean checkLessMoreParam(String name, Object obj1, Object obj2) {
|
|
|
|
|
// if (obj1 instanceof FormField) {
|
|
|
|
|
// String componentKey = ((FormField) obj1).getComponentKey();
|
|
|
|
|
// if (ComponentConfig.isNumberComponent(componentKey)) {
|
|
|
|
|
// if (obj2 instanceof Number) {
|
|
|
|
|
// return true;
|
|
|
|
|
// } else if (obj2 instanceof DataType && ((DataType) obj2).getDataType().equalsIgnoreCase(DataType.NUMBER)) {
|
|
|
|
|
// return true;
|
|
|
|
|
// } else {
|
|
|
|
|
// throw new RuntimeException("筛选条件[" + name + "]:数字控件右边必须是数字");
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// if (componentKey.equals(ComponentType.DateComponent.toString())) {
|
|
|
|
|
// if (obj2 instanceof String && Validator.isDate((String) obj2)) {
|
|
|
|
|
// return true;
|
|
|
|
|
// } else if (obj2 instanceof DataType && ((DataType) obj2).getDataType().equalsIgnoreCase(DataType.STRING)) {
|
|
|
|
|
// return true;
|
|
|
|
|
// } else {
|
|
|
|
|
// throw new RuntimeException("筛选条件[" + name + "]:日期控件右边必须是日期字符串");
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// }
|
|
|
|
|
// if (componentKey.equals(ComponentType.TimeComponent.toString())) {
|
|
|
|
|
// if (obj2 instanceof String && Validator.isTime((String) obj2)) {
|
|
|
|
|
// return true;
|
|
|
|
|
// } else if (obj2 instanceof DataType && ((DataType) obj2).getDataType().equalsIgnoreCase(DataType.STRING)) {
|
|
|
|
|
// return true;
|
|
|
|
|
// } else {
|
|
|
|
|
// throw new RuntimeException("筛选条件[" + name + "]:时间控件右边必须是时间字符串");
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// throw new RuntimeException("筛选条件[" + name + "]:左边必须是数字控件或时间控件");
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// /**
|
|
|
|
|
// * 校验等于号的入参
|
|
|
|
|
// *
|
|
|
|
|
// * @param obj1
|
|
|
|
|
// * @param obj2
|
|
|
|
|
// * @return
|
|
|
|
|
// */
|
|
|
|
|
// public static boolean checkEqParam(Object obj1, Object obj2) {
|
|
|
|
|
// if (obj1 instanceof DataType) {
|
|
|
|
|
// String componentKey = ((FormField) obj1).getComponentKey();
|
|
|
|
|
// if (ComponentConfig.isNumberComponent(componentKey)) {
|
|
|
|
|
// if (obj2 instanceof DataType) {
|
|
|
|
|
// if (((DataType) obj2).getDataType().equalsIgnoreCase(DataType.NUMBER)) {
|
|
|
|
|
// return true;
|
|
|
|
|
// } else {
|
|
|
|
|
// throw new RuntimeException("筛选条件[=]:数字控件右边必须是数字");
|
|
|
|
|
// }
|
|
|
|
|
// } else if (StringUtils.isEmpty(obj2 + "") || Validator.isFloat(obj2 + "")) {
|
|
|
|
|
// return true;
|
|
|
|
|
// } else {
|
|
|
|
|
// throw new RuntimeException("筛选条件[=]:数字控件右边必须是数字");
|
|
|
|
|
// }
|
|
|
|
|
// } else if (ComponentConfig.isOptionComponent(componentKey)) {
|
|
|
|
|
// if (StringUtils.isEmpty(obj2 + "") || (obj2 instanceof DataType && ((DataType) obj2).getDataType().equalsIgnoreCase(DataType.OPTION))) {
|
|
|
|
|
// return true;
|
|
|
|
|
// } else {
|
|
|
|
|
// throw new RuntimeException("筛选条件[=]:选项控件右边必须是选项");
|
|
|
|
|
// }
|
|
|
|
|
// } else {
|
|
|
|
|
// if (StringUtils.isEmpty(obj2 + "") || obj2 instanceof String || obj2 instanceof Character) {
|
|
|
|
|
// return true;
|
|
|
|
|
// } else if (obj2 instanceof DataType) {
|
|
|
|
|
// if (((DataType) obj2).getDataType().equalsIgnoreCase(DataType.STRING)) {
|
|
|
|
|
// return true;
|
|
|
|
|
// } else if (((DataType) obj2).getDataType().equalsIgnoreCase(DataType.STRING)) {
|
|
|
|
|
// return true;
|
|
|
|
|
// } else {
|
|
|
|
|
// throw new RuntimeException("筛选条件[=]:文本控件右边必须是字符");
|
|
|
|
|
// }
|
|
|
|
|
// } else {
|
|
|
|
|
// throw new RuntimeException("筛选条件[=]:文本控件右边必须是字符");
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// throw new RuntimeException("筛选条件[=]:左边必须是表单控件");
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// /**
|
|
|
|
|
// * 校验不等于号的入参
|
|
|
|
|
// *
|
|
|
|
|
// * @param obj1
|
|
|
|
|
// * @param obj2
|
|
|
|
|
// * @return
|
|
|
|
|
// */
|
|
|
|
|
// public static boolean checkNotEqParam(Object obj1, Object obj2) {
|
|
|
|
|
// if (obj1 instanceof FormField) {
|
|
|
|
|
// String componentKey = ((FormField) obj1).getComponentKey();
|
|
|
|
|
// if (ComponentConfig.isNumberComponent(componentKey)) {
|
|
|
|
|
// if (obj2 instanceof DataType) {
|
|
|
|
|
// if (((DataType) obj2).getDataType().equalsIgnoreCase(DataType.NUMBER)) {
|
|
|
|
|
// return true;
|
|
|
|
|
// } else {
|
|
|
|
|
// throw new RuntimeException("筛选条件[!=]:数字控件右边必须是数字");
|
|
|
|
|
// }
|
|
|
|
|
// } else if (StringUtils.isEmpty(obj2 + "") || Validator.isFloat(obj2 + "")) {
|
|
|
|
|
// return true;
|
|
|
|
|
// } else {
|
|
|
|
|
// throw new RuntimeException("筛选条件[!=]:数字控件右边必须是数字");
|
|
|
|
|
// }
|
|
|
|
|
// } else if (ComponentConfig.isOptionComponent(componentKey)) {
|
|
|
|
|
// if (StringUtils.isEmpty(obj2 + "") || (obj2 instanceof DataType && ((DataType) obj2).getDataType().equalsIgnoreCase(DataType.OPTION))) {
|
|
|
|
|
// return true;
|
|
|
|
|
// } else {
|
|
|
|
|
// throw new RuntimeException("筛选条件[!=]:选项控件右边必须是选项");
|
|
|
|
|
// }
|
|
|
|
|
// } else {
|
|
|
|
|
// if (StringUtils.isEmpty(obj2 + "") || obj2 instanceof String || obj2 instanceof Character) {
|
|
|
|
|
// return true;
|
|
|
|
|
// } else if (obj2 instanceof DataType) {
|
|
|
|
|
// if (((DataType) obj2).getDataType().equalsIgnoreCase(DataType.STRING)) {
|
|
|
|
|
// return true;
|
|
|
|
|
// } else if (((DataType) obj2).getDataType().equalsIgnoreCase(DataType.STRING)) {
|
|
|
|
|
// return true;
|
|
|
|
|
// } else if (((DataType) obj2).getDataType().equalsIgnoreCase(DataType.STRING)) {
|
|
|
|
|
// return true;
|
|
|
|
|
// } else {
|
|
|
|
|
// throw new RuntimeException("筛选条件[!=]:文本控件右边必须是字符");
|
|
|
|
|
// }
|
|
|
|
|
// } else {
|
|
|
|
|
// throw new RuntimeException("筛选条件[!=]:文本控件右边必须是字符");
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// throw new RuntimeException("筛选条件[!=]:左边必须是表单控件");
|
|
|
|
|
// }
|
|
|
|
|
//}
|