fix(文档拆分): 78128
This commit is contained in:
+43
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
+4
-1
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user