fix(文档拆分): 78128

This commit is contained in:
yjz
2023-11-03 11:29:24 +08:00
parent 3163c8d5a4
commit 02e42f4d22
2 changed files with 47 additions and 1 deletions
@@ -0,0 +1,43 @@
package com.jero.modules.laws.documenttool.common;
import java.util.Comparator;
import java.util.Map;
/**
* @ClassName: DirectoryComparator
* @Description:
* @Author: yjz
* @Date: 2023-11-03 11:24
* @Version: 1.0
**/
public class DirectoryComparator implements Comparator<Map<String, Object>> {
public int compare(Map<String, Object> dir1, Map<String, Object> dir2) {
String sortNumber1 = (String) dir1.get("item_num");
String sortNumber2 = (String) dir2.get("item_num");
String[] parts1 = sortNumber1.split("\\.");
String[] parts2 = sortNumber2.split("\\.");
int i = 0;
while (i < parts1.length && i < parts2.length) {
int part1 = tryParseInt(parts1[i]);
int part2 = tryParseInt(parts2[i]);
if (part1 != part2) {
return part1 - part2;
}
i++;
}
return parts1.length - parts2.length;
}
private int tryParseInt(String str) {
try {
return Integer.parseInt(str);
} catch(NumberFormatException e) {
return str.hashCode();
}
}
}
@@ -16,6 +16,7 @@ import com.jero.common.util.UUIDUtils;
import com.jero.common.util.ZipUtil;
import com.jero.modules.laws.common.constant.FieldCommon;
import com.jero.modules.laws.common.mapper.LawsCommonMapper;
import com.jero.modules.laws.documenttool.common.DirectoryComparator;
import com.jero.modules.laws.documenttool.common.DocumentSplitCommon;
import com.jero.modules.laws.documenttool.entity.DocumentSplitInfo;
import com.jero.modules.laws.documenttool.entity.LawsDocumentSplitView;
@@ -541,6 +542,8 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
StringBuilder strSelectCondition = new StringBuilder(selectCondition);
// 查询数据
List<Map<String, Object>> listMap = documentSplitMapper.queryDocumentSplitDetail(selectColumn, strSelectCondition.toString());
// 排序
listMap.sort(new DirectoryComparator());
// 第一条数据
Map<String, Object> firstData = listMap.get(0);
listMap.remove(0);
@@ -572,7 +575,7 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
}
List<SarFileSplitItemsValEO> sarFileSplitItemsValEOS = documentSplitMapper.queryItemsValByItemId((String) firstData.get(ID), "");
// 第一条数据信息的最大的排序字段值
Optional<SarFileSplitItemsValEO> sarFileSplitItemsValEOOptional = sarFileSplitItemsValEOS.stream().sorted().findFirst();
Optional<SarFileSplitItemsValEO> sarFileSplitItemsValEOOptional = sarFileSplitItemsValEOS.stream().sorted(Comparator.comparing(v -> Integer.valueOf(String.valueOf(v.getDisplaySeq())))).findFirst();
sarFileSplitItemsValEOOptional.ifPresent(v ->{
// 排序字段
Integer displaySeq = v.getDisplaySeq();