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.exception.JeroBootException;
|
||||||
import com.jero.common.system.vo.LoginUser;
|
import com.jero.common.system.vo.LoginUser;
|
||||||
import com.jero.common.util.MessageUtils;
|
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.constant.ResultCommon;
|
||||||
import com.jero.modules.laws.common.mapper.LawsCommonMapper;
|
import com.jero.modules.laws.common.mapper.LawsCommonMapper;
|
||||||
import com.jero.modules.laws.common.service.ILawsCommonService;
|
import com.jero.modules.laws.common.service.ILawsCommonService;
|
||||||
@@ -342,7 +342,7 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
|
|||||||
* @Description: 对数据值做格式处理
|
* @Description: 对数据值做格式处理
|
||||||
**/
|
**/
|
||||||
private String setValue(String fieldShowType, String value) {
|
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')";
|
value = "str_to_date('" + value + "','%Y-%m-%d %H:%i:%s')";
|
||||||
} else {
|
} else {
|
||||||
@@ -386,7 +386,7 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
|
|||||||
.equals(lawsTag.getIsShowForm().toString())).collect(Collectors.toList());
|
.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())
|
.equals(lawsTag.getFieldShowType())).collect(Collectors.toList())
|
||||||
.stream().map(LawsTag::getDbFieldName).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) {
|
private void jointSelectCondition(List<LawsTag> fieldList, StringBuilder selectCondition, String key, String value) {
|
||||||
for (LawsTag lawsTag : fieldList) {
|
for (LawsTag lawsTag : fieldList) {
|
||||||
// 获取字段名
|
|
||||||
String dbFieldName = lawsTag.getDbFieldName();
|
String dbFieldName = lawsTag.getDbFieldName();
|
||||||
if (Objects.equals(key, dbFieldName)) {
|
if (Objects.equals(key, dbFieldName)) {
|
||||||
// 获取字段类型
|
|
||||||
String fieldShowType = lawsTag.getFieldShowType();
|
String fieldShowType = lawsTag.getFieldShowType();
|
||||||
if (LawsFieldTypeEnum.TEXT_BOX.getValue().equals(fieldShowType)
|
if (FieldCommon.TYPE_LIKE.contains(fieldShowType)) {
|
||||||
|| LawsFieldTypeEnum.MULTILINE_TEXT.getValue().equals(fieldShowType)) {
|
processLikeTypeCondition(selectCondition, key, value);
|
||||||
if (value.contains("%")) {
|
} else if (FieldCommon.TYPE_LIKE_IN.contains(fieldShowType)) {
|
||||||
// 字段内容可能包含%,是转义字符,做一下处理
|
processLikeInTypeCondition(selectCondition, key, value);
|
||||||
value = value.replace("%", "/%");
|
} else if (LawsFieldTypeEnum.DATE_SINGLE.getValue().equals(fieldShowType)) {
|
||||||
}
|
processDateSingleTypeCondition(selectCondition, key, value);
|
||||||
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 + "'");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
// 处理其他类型
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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 {
|
public enum LawsFieldTypeEnum {
|
||||||
|
|
||||||
SINGLE_DATE_SELECTION("单日期选择","1"),
|
DATE_SINGLE("单日期选择","1"),
|
||||||
SELECT_A_USER("单选用户弹框","2"),
|
USER_SINGLE("单选用户弹框","2"),
|
||||||
SELECT_ORGANIZATION_BOX("单选组织机构弹框","3"),
|
GROUP_SINGLE("单选组织机构弹框","3"),
|
||||||
MULTIPLE_DATE_SELECTION("多日期选择","4"),
|
DATE_MANY("多日期选择","4"),
|
||||||
MULTILINE_TEXT("多行文本","5"),
|
TEXT_MANY("多行文本","5"),
|
||||||
MULTIPLE_SELECTION_STANDARD_BOX("多选标准弹框","6"),
|
BOX_MANY("多选标准弹框","6"),
|
||||||
SELECT_MULTIPLE_ORGANIZATIONS("多选组织机构弹框","7"),
|
GROUP_MANY("多选组织机构弹框","7"),
|
||||||
UPLOAD_FILE("上传文件","8"),
|
FILE_UP("上传文件","8"),
|
||||||
TEXT_BOX("文本框","9"),
|
TEXT_BOX("文本框","9"),
|
||||||
DROP_DOWN_RADIO_OPTION("下拉单选","10"),
|
OPTION_SINGLE("下拉单选","10"),
|
||||||
DROP_DOWN_MULTIPLE_SELECTION("下拉多选","11");
|
OPTION_MANY("下拉多选","11");
|
||||||
|
|
||||||
String name;
|
String name;
|
||||||
String value;
|
String value;
|
||||||
|
|||||||
Reference in New Issue
Block a user