package com.qianwen.smartman.modules.system.handler.field.provider;
|
|
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.log.StaticLog;
|
import com.baomidou.mybatisplus.annotation.DbType;
|
import java.util.List;
|
import com.qianwen.smartman.common.cache.RegionCache;
|
import com.qianwen.smartman.common.constant.CommonConstant;
|
import com.qianwen.smartman.common.constant.DncConstant;
|
import com.qianwen.core.tool.utils.Func;
|
import com.qianwen.core.tool.utils.SpringUtil;
|
import com.qianwen.smartman.modules.system.entity.CustomTemplateField;
|
import com.qianwen.smartman.modules.system.enums.CustomFieldTypeEnums;
|
import com.qianwen.smartman.modules.system.service.ICustomTemplateFieldService;
|
import com.qianwen.smartman.modules.system.vo.CustomFieldValueVO;
|
|
/* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/system/handler/field/provider/AbstractSqlParseProvider.class */
|
public abstract class AbstractSqlParseProvider {
|
private String joinTableName;
|
private String extraFieldColumnName;
|
|
public abstract Boolean support(DbType dbType);
|
|
protected abstract String equalsTemplate();
|
|
protected abstract String likeTemplate();
|
|
protected abstract String dateTemplate();
|
|
public void setJoinTableName(final String joinTableName) {
|
this.joinTableName = joinTableName;
|
}
|
|
public void setExtraFieldColumnName(final String extraFieldColumnName) {
|
this.extraFieldColumnName = extraFieldColumnName;
|
}
|
|
public String getJoinTableName() {
|
return this.joinTableName;
|
}
|
|
public String getExtraFieldColumnName() {
|
return this.extraFieldColumnName;
|
}
|
|
public String handler(List<CustomFieldValueVO> fields, Integer busType) {
|
if (CollectionUtil.isEmpty(fields)) {
|
return "";
|
}
|
StringBuilder conditionStr = new StringBuilder();
|
fields.forEach(field -> {
|
if (Func.isEmpty(field.getValue()) && Func.isEmpty(field.getValues())) {
|
return;
|
}
|
String condition = conditionBuild(field, busType);
|
if (Func.isEmpty(condition)) {
|
return;
|
}
|
conditionStr.append("AND ").append(condition);
|
});
|
destroy();
|
return Func.isEmpty(conditionStr.toString()) ? conditionStr.toString() : conditionStr.substring(3);
|
}
|
|
private void destroy() {
|
setJoinTableName("");
|
}
|
|
private String getColumnName() {
|
if (StrUtil.isNotEmpty(getJoinTableName())) {
|
return getJoinTableName() + DncConstant.POINT + getExtraFieldColumnName();
|
}
|
return getExtraFieldColumnName();
|
}
|
|
protected String dateConditionBuild(CustomFieldValueVO field) {
|
List<String> values = field.getValues();
|
return (CollectionUtil.isNotEmpty(values) && values.size() == CommonConstant.TWO.intValue()) ? StrUtil.format(dateTemplate(), new Object[]{getColumnName(), field.getFieldCode(), "'" + values.get(CommonConstant.ZERO.intValue()) + "'", "'" + values.get(CommonConstant.ONE.intValue()) + "'"}) : "";
|
}
|
|
protected String likeConditionBuild(CustomFieldValueVO field) {
|
return StrUtil.format(likeTemplate(), new Object[]{getColumnName(), field.getFieldCode(), field.getValue()});
|
}
|
|
protected String equalsConditionBuild(CustomFieldValueVO field) {
|
return StrUtil.format(equalsTemplate(), new Object[]{getColumnName(), field.getFieldCode(), "'" + field.getValue() + "'"});
|
}
|
|
protected String equalsNumberConditionBuild(CustomFieldValueVO field) {
|
try {
|
Double number = Double.valueOf(field.getValue());
|
return StrUtil.format(equalsTemplate(), new Object[]{getColumnName(), field.getFieldCode(), number});
|
} catch (Exception e) {
|
StaticLog.info("[扩展字段].[数字类型].[入参与字段类型转换异常,fieldCode:{},value:{}]", new Object[]{field.getFieldCode(), field.getValue()});
|
return "";
|
}
|
}
|
|
protected String optionsConditionBuild(CustomFieldValueVO field) {
|
StringBuilder condition = new StringBuilder("( ");
|
int i = 0;
|
while (i < field.getValues().size()) {
|
String format = StrUtil.format(likeTemplate(), new Object[]{getColumnName(), field.getFieldCode(), field.getValues().get(i)});
|
condition.append(i != 0 ? "OR " : "").append(format);
|
i++;
|
}
|
return condition.append(" )").toString();
|
}
|
|
protected String cascadeConditionBuild(CustomFieldValueVO field) {
|
return StrUtil.format(likeTemplate(), new Object[]{getColumnName(), field.getFieldCode(), field.getValue()});
|
}
|
|
protected String businessEmpConditionBuild(CustomFieldValueVO field) {
|
return StrUtil.format(likeTemplate(), new Object[]{getColumnName(), field.getFieldCode(), field.getValue()});
|
}
|
|
private String conditionBuild(CustomFieldValueVO field, Integer busType) {
|
CustomTemplateField customTemplateField = ((ICustomTemplateFieldService) SpringUtil.getBean(ICustomTemplateFieldService.class)).getField(field.getFieldCode(), busType);
|
if (Func.isEmpty(customTemplateField) || Func.isEmpty(customTemplateField.getFieldCode())) {
|
return "";
|
}
|
CustomFieldTypeEnums fieldTypeEnum = CustomFieldTypeEnums.getEnum(customTemplateField.getFieldType());
|
switch (AnonymousClass1.$SwitchMap$org$springblade$modules$system$enums$CustomFieldTypeEnums[fieldTypeEnum.ordinal()]) {
|
case 1:
|
return dateConditionBuild(field);
|
case 2:
|
return optionsConditionBuild(field);
|
case 3:
|
case 4:
|
return likeConditionBuild(field);
|
case RegionCache.VILLAGE_LEVEL /* 5 */:
|
return equalsNumberConditionBuild(field);
|
case 6:
|
return cascadeConditionBuild(field);
|
case 7:
|
return businessEmpConditionBuild(field);
|
default:
|
return equalsConditionBuild(field);
|
}
|
}
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
/* renamed from: org.springblade.modules.system.handler.field.provider.AbstractSqlParseProvider$1 reason: invalid class name */
|
/* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/system/handler/field/provider/AbstractSqlParseProvider$1.class */
|
public static /* synthetic */ class AnonymousClass1 {
|
static final /* synthetic */ int[] $SwitchMap$org$springblade$modules$system$enums$CustomFieldTypeEnums = new int[CustomFieldTypeEnums.values().length];
|
|
static {
|
try {
|
$SwitchMap$org$springblade$modules$system$enums$CustomFieldTypeEnums[CustomFieldTypeEnums.DATE.ordinal()] = 1;
|
} catch (NoSuchFieldError e) {
|
}
|
try {
|
$SwitchMap$org$springblade$modules$system$enums$CustomFieldTypeEnums[CustomFieldTypeEnums.MULTI_SELECT.ordinal()] = 2;
|
} catch (NoSuchFieldError e2) {
|
}
|
try {
|
$SwitchMap$org$springblade$modules$system$enums$CustomFieldTypeEnums[CustomFieldTypeEnums.INPUT.ordinal()] = 3;
|
} catch (NoSuchFieldError e3) {
|
}
|
try {
|
$SwitchMap$org$springblade$modules$system$enums$CustomFieldTypeEnums[CustomFieldTypeEnums.MULTI_TEXT.ordinal()] = 4;
|
} catch (NoSuchFieldError e4) {
|
}
|
try {
|
$SwitchMap$org$springblade$modules$system$enums$CustomFieldTypeEnums[CustomFieldTypeEnums.DIGITAL_INPUT.ordinal()] = 5;
|
} catch (NoSuchFieldError e5) {
|
}
|
try {
|
$SwitchMap$org$springblade$modules$system$enums$CustomFieldTypeEnums[CustomFieldTypeEnums.CASCADE_SELECT.ordinal()] = 6;
|
} catch (NoSuchFieldError e6) {
|
}
|
try {
|
$SwitchMap$org$springblade$modules$system$enums$CustomFieldTypeEnums[CustomFieldTypeEnums.BUSINESS.ordinal()] = 7;
|
} catch (NoSuchFieldError e7) {
|
}
|
}
|
}
|
}
|