From c7743f9abbab60b5873eb15b6af1f3dd3c5d5132 Mon Sep 17 00:00:00 2001 From: liao Date: Fri, 25 Aug 2023 09:49:05 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E5=AD=97=E6=AE=B5=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../laws/common/constant/FieldCommon.java | 34 ++++++++ .../service/impl/LawsCommonServiceImpl.java | 83 +++++++++---------- .../modules/tag/enums/LawsFieldTypeEnum.java | 20 ++--- 3 files changed, 85 insertions(+), 52 deletions(-) create mode 100644 jero-boot-modules/src/main/java/com/jero/modules/laws/common/constant/FieldCommon.java diff --git a/jero-boot-modules/src/main/java/com/jero/modules/laws/common/constant/FieldCommon.java b/jero-boot-modules/src/main/java/com/jero/modules/laws/common/constant/FieldCommon.java new file mode 100644 index 00000000..8bdb8c04 --- /dev/null +++ b/jero-boot-modules/src/main/java/com/jero/modules/laws/common/constant/FieldCommon.java @@ -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 TYPE_LIKE = Arrays.asList( + LawsFieldTypeEnum.TEXT_MANY.getValue(), // 多行文本 + LawsFieldTypeEnum.TEXT_BOX.getValue() // 文本框 + ); + + // 字符串切割后like和in查询字段 + public static final List 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() // 下拉多选 + ); + +} diff --git a/jero-boot-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java b/jero-boot-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java index b185648c..64d88448 100644 --- a/jero-boot-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java +++ b/jero-boot-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java @@ -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 dateFieldList = fieldList.stream().filter(lawsTag -> LawsFieldTypeEnum.SINGLE_DATE_SELECTION.getValue() + List 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 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("'"); + } + } + + } diff --git a/jero-boot-modules/src/main/java/com/jero/modules/tag/enums/LawsFieldTypeEnum.java b/jero-boot-modules/src/main/java/com/jero/modules/tag/enums/LawsFieldTypeEnum.java index a01f218b..958b2bee 100644 --- a/jero-boot-modules/src/main/java/com/jero/modules/tag/enums/LawsFieldTypeEnum.java +++ b/jero-boot-modules/src/main/java/com/jero/modules/tag/enums/LawsFieldTypeEnum.java @@ -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;