update 字段类型判断
This commit is contained in:
+34
@@ -0,0 +1,34 @@
|
||||
package com.jero.modules.laws.common.constant;
|
||||
|
||||
import com.jero.modules.tag.enums.LawsFieldTypeEnum;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: liao
|
||||
* @Date: 2023/8/25 9:08
|
||||
* @Description: 字段常量
|
||||
*/
|
||||
public class FieldCommon {
|
||||
|
||||
private FieldCommon() {}
|
||||
|
||||
// 字符串like查询字段
|
||||
public static final List<String> TYPE_LIKE = Arrays.asList(
|
||||
LawsFieldTypeEnum.TEXT_MANY.getValue(), // 多行文本
|
||||
LawsFieldTypeEnum.TEXT_BOX.getValue() // 文本框
|
||||
);
|
||||
|
||||
// 字符串切割后like和in查询字段
|
||||
public static final List<String> TYPE_LIKE_IN = Arrays.asList(
|
||||
LawsFieldTypeEnum.USER_SINGLE.getValue(), // 单选用户弹框
|
||||
LawsFieldTypeEnum.GROUP_SINGLE.getValue(), // 单选组织机构弹框
|
||||
LawsFieldTypeEnum.BOX_MANY.getValue(), // 多选标准弹框
|
||||
LawsFieldTypeEnum.GROUP_MANY.getValue(), // 多选组织机构弹框
|
||||
LawsFieldTypeEnum.FILE_UP.getValue(), // 上传文件
|
||||
LawsFieldTypeEnum.OPTION_SINGLE.getValue(), // 下拉单选
|
||||
LawsFieldTypeEnum.OPTION_MANY.getValue() // 下拉多选
|
||||
);
|
||||
|
||||
}
|
||||
+41
-42
@@ -7,7 +7,7 @@ import com.jero.common.constant.enums.YesOrNoEnum;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.common.system.vo.LoginUser;
|
||||
import com.jero.common.util.MessageUtils;
|
||||
import com.jero.modules.document.enums.FieldTypeEnum;
|
||||
import com.jero.modules.laws.common.constant.FieldCommon;
|
||||
import com.jero.modules.laws.common.constant.ResultCommon;
|
||||
import com.jero.modules.laws.common.mapper.LawsCommonMapper;
|
||||
import com.jero.modules.laws.common.service.ILawsCommonService;
|
||||
@@ -342,7 +342,7 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
|
||||
* @Description: 对数据值做格式处理
|
||||
**/
|
||||
private String setValue(String fieldShowType, String value) {
|
||||
if (LawsFieldTypeEnum.SINGLE_DATE_SELECTION.getValue().equals(fieldShowType)) {
|
||||
if (LawsFieldTypeEnum.DATE_SINGLE.getValue().equals(fieldShowType)) {
|
||||
// 如果是单日期格式,做格式处理
|
||||
value = "str_to_date('" + value + "','%Y-%m-%d %H:%i:%s')";
|
||||
} else {
|
||||
@@ -386,7 +386,7 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
|
||||
.equals(lawsTag.getIsShowForm().toString())).collect(Collectors.toList());
|
||||
}
|
||||
// 筛选获取日期类型字段
|
||||
List<String> dateFieldList = fieldList.stream().filter(lawsTag -> LawsFieldTypeEnum.SINGLE_DATE_SELECTION.getValue()
|
||||
List<String> dateFieldList = fieldList.stream().filter(lawsTag -> LawsFieldTypeEnum.DATE_SINGLE.getValue()
|
||||
.equals(lawsTag.getFieldShowType())).collect(Collectors.toList())
|
||||
.stream().map(LawsTag::getDbFieldName).collect(Collectors.toList());
|
||||
// 获取全部的字段列表
|
||||
@@ -463,53 +463,52 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Author: liao
|
||||
* @Date: 2023/8/23 17:57
|
||||
* @Description: 组装单个查询条件
|
||||
**/
|
||||
private void jointSelectCondition(List<LawsTag> fieldList, StringBuilder selectCondition, String key, String value) {
|
||||
for (LawsTag lawsTag : fieldList) {
|
||||
// 获取字段名
|
||||
String dbFieldName = lawsTag.getDbFieldName();
|
||||
if (Objects.equals(key, dbFieldName)) {
|
||||
// 获取字段类型
|
||||
String fieldShowType = lawsTag.getFieldShowType();
|
||||
if (LawsFieldTypeEnum.TEXT_BOX.getValue().equals(fieldShowType)
|
||||
|| LawsFieldTypeEnum.MULTILINE_TEXT.getValue().equals(fieldShowType)) {
|
||||
if (value.contains("%")) {
|
||||
// 字段内容可能包含%,是转义字符,做一下处理
|
||||
value = value.replace("%", "/%");
|
||||
}
|
||||
selectCondition.append(" and " + key + " like concat(concat('%','" + value + "'),'%')");
|
||||
} else if (LawsFieldTypeEnum.SELECT_A_USER.getValue().equals(fieldShowType)
|
||||
|| LawsFieldTypeEnum.SELECT_ORGANIZATION_BOX.getValue().equals(fieldShowType)
|
||||
|| LawsFieldTypeEnum.SELECT_MULTIPLE_ORGANIZATIONS.getValue().equals(fieldShowType)
|
||||
|| LawsFieldTypeEnum.MULTIPLE_SELECTION_STANDARD_BOX.getValue().equals(fieldShowType)
|
||||
|| LawsFieldTypeEnum.DROP_DOWN_RADIO_OPTION.getValue().equals(fieldShowType)
|
||||
|| LawsFieldTypeEnum.DROP_DOWN_MULTIPLE_SELECTION.getValue().equals(fieldShowType)) {
|
||||
StringBuilder valueSb = new StringBuilder();
|
||||
StringBuilder condition = new StringBuilder();
|
||||
for (String valueTemp : value.split(",")) {
|
||||
valueSb.append("'" + valueTemp + "',");
|
||||
condition.append(" or " + key + " like binary concat(concat('%','" + valueTemp + "'),'%')");
|
||||
}
|
||||
condition.append(")");
|
||||
String substring = valueSb.substring(0, valueSb.length() - 1);
|
||||
//下拉单选或下拉多选
|
||||
selectCondition.append(" and (" + key + " in(" + substring + ")" + condition);
|
||||
|
||||
} else if (LawsFieldTypeEnum.SINGLE_DATE_SELECTION.getValue().equals(fieldShowType)) {
|
||||
//日期(区分单日期还时间范围)
|
||||
if (value.contains(",")) {
|
||||
selectCondition.append(" and " + "date_format(" + key + ",'%Y-%m-%d') >= '" + value.split(",")[0] + "'"
|
||||
+ " and " + "date_format(" + key + ",'%Y-%m-%d') <= '" + value.split(",")[1] + "'");
|
||||
} else {
|
||||
selectCondition.append(" and " + "date_format(" + key + ",'%Y-%m-%d') = '" + value + "'");
|
||||
}
|
||||
if (FieldCommon.TYPE_LIKE.contains(fieldShowType)) {
|
||||
processLikeTypeCondition(selectCondition, key, value);
|
||||
} else if (FieldCommon.TYPE_LIKE_IN.contains(fieldShowType)) {
|
||||
processLikeInTypeCondition(selectCondition, key, value);
|
||||
} else if (LawsFieldTypeEnum.DATE_SINGLE.getValue().equals(fieldShowType)) {
|
||||
processDateSingleTypeCondition(selectCondition, key, value);
|
||||
}
|
||||
// 处理其他类型
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void processLikeTypeCondition(StringBuilder selectCondition, String key, String value) {
|
||||
if (value.contains("%")) {
|
||||
value = value.replace("%", "/%");
|
||||
}
|
||||
selectCondition.append(" and " + key + " like concat(concat('%','" + value + "'),'%')");
|
||||
}
|
||||
|
||||
private void processLikeInTypeCondition(StringBuilder selectCondition, String key, String value) {
|
||||
StringBuilder valueSb = new StringBuilder();
|
||||
StringBuilder condition = new StringBuilder();
|
||||
for (String valueTemp : value.split(",")) {
|
||||
valueSb.append("'").append(valueTemp).append("',");
|
||||
condition.append(" or ").append(key).append(" like binary concat(concat('%','").append(valueTemp).append("'),'%')");
|
||||
}
|
||||
condition.append(")");
|
||||
String substring = valueSb.substring(0, valueSb.length() - 1);
|
||||
selectCondition.append(" and (").append(key).append(" in(").append(substring).append(")").append(condition);
|
||||
}
|
||||
|
||||
private void processDateSingleTypeCondition(StringBuilder selectCondition, String key, String value) {
|
||||
if (value.contains(",")) {
|
||||
String startDate = value.split(",")[0];
|
||||
String endDate = value.split(",")[1];
|
||||
selectCondition.append(" and date_format(").append(key).append(",'%Y-%m-%d') >= '").append(startDate)
|
||||
.append("' and date_format(").append(key).append(",'%Y-%m-%d') <= '").append(endDate).append("'");
|
||||
} else {
|
||||
selectCondition.append(" and date_format(").append(key).append(",'%Y-%m-%d') = '").append(value).append("'");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -7,17 +7,17 @@ package com.jero.modules.tag.enums;
|
||||
*/
|
||||
public enum LawsFieldTypeEnum {
|
||||
|
||||
SINGLE_DATE_SELECTION("单日期选择","1"),
|
||||
SELECT_A_USER("单选用户弹框","2"),
|
||||
SELECT_ORGANIZATION_BOX("单选组织机构弹框","3"),
|
||||
MULTIPLE_DATE_SELECTION("多日期选择","4"),
|
||||
MULTILINE_TEXT("多行文本","5"),
|
||||
MULTIPLE_SELECTION_STANDARD_BOX("多选标准弹框","6"),
|
||||
SELECT_MULTIPLE_ORGANIZATIONS("多选组织机构弹框","7"),
|
||||
UPLOAD_FILE("上传文件","8"),
|
||||
DATE_SINGLE("单日期选择","1"),
|
||||
USER_SINGLE("单选用户弹框","2"),
|
||||
GROUP_SINGLE("单选组织机构弹框","3"),
|
||||
DATE_MANY("多日期选择","4"),
|
||||
TEXT_MANY("多行文本","5"),
|
||||
BOX_MANY("多选标准弹框","6"),
|
||||
GROUP_MANY("多选组织机构弹框","7"),
|
||||
FILE_UP("上传文件","8"),
|
||||
TEXT_BOX("文本框","9"),
|
||||
DROP_DOWN_RADIO_OPTION("下拉单选","10"),
|
||||
DROP_DOWN_MULTIPLE_SELECTION("下拉多选","11");
|
||||
OPTION_SINGLE("下拉单选","10"),
|
||||
OPTION_MANY("下拉多选","11");
|
||||
|
||||
String name;
|
||||
String value;
|
||||
|
||||
Reference in New Issue
Block a user