From 49314e9113bd04d4d727359891dd14445b98127e Mon Sep 17 00:00:00 2001 From: yjz <3131811435@qq.com> Date: Fri, 20 Oct 2023 15:45:42 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E6=96=87=E6=A1=A3=E6=8B=86=E5=88=86):=20?= =?UTF-8?q?=E5=8A=A8=E6=80=81=E5=AD=97=E6=AE=B5=E6=8E=92=E5=BA=8F=E5=AE=8C?= =?UTF-8?q?=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/DocumentSplitCommon.java | 4 ++ .../impl/DocumentSplitServiceImpl.java | 38 ++++++++++++++----- 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/common/DocumentSplitCommon.java b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/common/DocumentSplitCommon.java index 200ce198..efd695ca 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/common/DocumentSplitCommon.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/common/DocumentSplitCommon.java @@ -24,6 +24,10 @@ public class DocumentSplitCommon { * 日期格式化 */ public static final String DATE_FORMAT_END = " , '%Y-%m-%d') "; + /** + * 字符转日期 + */ + public static final String STR_TO_DATE_BEGIN = "str_to_date("; /** * between */ diff --git a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java index 7e153b3f..f845643b 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java @@ -169,7 +169,8 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { String selectColumn = getSelectColumn(fieldListSelect); // sql where条件拼接 String selectCondition = getSelectCondition(parameter, fieldListCondition); - + // 排序 + selectCondition = orderBy(parameter, selectCondition, fieldListSelect); // 查询数据 IPage> mapIPage = documentSplitMapper.queryDocumentSplitDetail(new Page<>(pageNo, pageSize), selectColumn, selectCondition); // 翻译 @@ -177,6 +178,31 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { return mapIPage; } + private String orderBy(Map parameter, String selectCondition, List fieldListSelect) { + StringBuilder sb = new StringBuilder(selectCondition); + if (parameter.containsKey("column")){ + sb.append(" order by "); + String column = (String) parameter.get("column"); + String order = (String) parameter.get("order"); + // 匹配参数和字段 + Optional lawsTag = fieldListSelect.stream().filter(o -> column.equals(o.getDbFieldName())).findFirst(); + lawsTag.ifPresent(l -> { + // 多日期特殊处理 + if (LawsFieldTypeEnum.DATE_MANY.getValue().equals(l.getFieldShowType())){ + sb.append(DocumentSplitCommon.STR_TO_DATE_BEGIN + "substring_index(") + .append(l.getDbFieldName()).append(", ',', -1)").append(",'%Y-%m-%d')"); + }else { + sb.append(column); + } + }); + sb.append(" ").append(order); + }else { + // 默认排序 + sb.append(" order by display_seq asc, sort_number is null, sort_number asc"); + } + return sb.toString(); + } + @Override public List> queryDocumentSplitDetailByList(Map parameter) { // 查询全部字段列表 @@ -192,7 +218,8 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { String selectColumn = getSelectColumn(fieldListSelect); // sql where条件拼接 String selectCondition = getSelectCondition(parameter, fieldListCondition); - + // 排序 + selectCondition = orderBy(parameter, selectCondition, fieldListSelect); // 查询数据 List> list = documentSplitMapper.queryDocumentSplitDetail(selectColumn, selectCondition); // 翻译 @@ -439,7 +466,6 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { String selectCondition = "where del_flag = 0 and s.id in ('" + String.join("','", idList) + "')"; // 排序 StringBuilder strSelectCondition = new StringBuilder(selectCondition); - orderBy(strSelectCondition); // 查询数据 List> listMap = documentSplitMapper.queryDocumentSplitDetail(selectColumn, strSelectCondition.toString()); // 第一条数据 @@ -945,15 +971,9 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { defaultCondition(parameter, selectCondition); // 动态查询字段 dynamicStateCondition(parameter, fieldListCondition, selectCondition); - // 排序 - orderBy(selectCondition); return selectCondition.toString(); } - private void orderBy(StringBuilder selectCondition) { - selectCondition.append(" order by display_seq asc, sort_number is null, sort_number asc"); - } - private void dynamicStateCondition(Map parameter, List fieldListCondition, StringBuilder selectCondition) { parameter.forEach((k, v) -> { // 匹配参数和字段