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) -> { // 匹配参数和字段