|
|
@@ -45,6 +45,7 @@ import javax.annotation.Resource;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import java.io.InputStream;
|
|
|
import java.net.URLEncoder;
|
|
|
+import java.time.LocalDateTime;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
@@ -331,6 +332,7 @@ public class CostProjectTaskSurveyGenericController {
|
|
|
CostProjectTaskMaterial material = costProjectTaskMaterialManager.getById(refId);
|
|
|
if (material != null) {
|
|
|
material.setIsUpload("1");
|
|
|
+ material.setUploadTime(LocalDateTime.now());
|
|
|
costProjectTaskMaterialManager.updateById(material);
|
|
|
}
|
|
|
}
|
|
|
@@ -2631,7 +2633,7 @@ public class CostProjectTaskSurveyGenericController {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 按父子关系排序rowId
|
|
|
+ * 按父子关系排序rowId(参考核定表实现,按 orderNum 排序)
|
|
|
*/
|
|
|
private List<String> sortRowIdsByParentChild(Map<String, List<CostSurveyTemplateItems>> itemsByRowId) {
|
|
|
List<String> result = new ArrayList<>();
|
|
|
@@ -2647,40 +2649,60 @@ public class CostProjectTaskSurveyGenericController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 找出所有根节点(parentid为空或不存在的)
|
|
|
+ // 找出所有根节点(parentid为空或不存在的),按 orderNum 排序
|
|
|
Set<String> allRowIds = new HashSet<>(itemsByRowId.keySet());
|
|
|
List<String> rootRowIds = allRowIds.stream()
|
|
|
.filter(rowId -> {
|
|
|
String parentId = rowIdToParentId.get(rowId);
|
|
|
return StringUtil.isEmpty(parentId) || !allRowIds.contains(parentId);
|
|
|
})
|
|
|
- .sorted()
|
|
|
+ .sorted((id1, id2) -> {
|
|
|
+ List<CostSurveyTemplateItems> items1 = itemsByRowId.get(id1);
|
|
|
+ List<CostSurveyTemplateItems> items2 = itemsByRowId.get(id2);
|
|
|
+ if (items1 == null || items1.isEmpty()) return 1;
|
|
|
+ if (items2 == null || items2.isEmpty()) return -1;
|
|
|
+ Integer order1 = items1.get(0).getOrderNum();
|
|
|
+ Integer order2 = items2.get(0).getOrderNum();
|
|
|
+ if (order1 == null) return 1;
|
|
|
+ if (order2 == null) return -1;
|
|
|
+ return order1.compareTo(order2);
|
|
|
+ })
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
// 递归添加节点及其子节点
|
|
|
for (String rootRowId : rootRowIds) {
|
|
|
- addRowIdWithChildren(rootRowId, rowIdToParentId, allRowIds, result);
|
|
|
+ addRowIdWithChildren(rootRowId, rowIdToParentId, allRowIds, result, itemsByRowId);
|
|
|
}
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 递归添加rowId及其所有子节点
|
|
|
+ * 递归添加rowId及其所有子节点(参考核定表实现,按 orderNum 排序)
|
|
|
*/
|
|
|
private void addRowIdWithChildren(String rowId, Map<String, String> rowIdToParentId,
|
|
|
- Set<String> allRowIds, List<String> result) {
|
|
|
+ Set<String> allRowIds, List<String> result, Map<String, List<CostSurveyTemplateItems>> itemsByRowId) {
|
|
|
result.add(rowId);
|
|
|
|
|
|
- // 找出所有子节点
|
|
|
+ // 找出所有子节点,按 orderNum 排序
|
|
|
List<String> children = allRowIds.stream()
|
|
|
.filter(id -> rowId.equals(rowIdToParentId.get(id)))
|
|
|
- .sorted()
|
|
|
+ .sorted((id1, id2) -> {
|
|
|
+ List<CostSurveyTemplateItems> items1 = itemsByRowId.get(id1);
|
|
|
+ List<CostSurveyTemplateItems> items2 = itemsByRowId.get(id2);
|
|
|
+ if (items1 == null || items1.isEmpty()) return 1;
|
|
|
+ if (items2 == null || items2.isEmpty()) return -1;
|
|
|
+ Integer order1 = items1.get(0).getOrderNum();
|
|
|
+ Integer order2 = items2.get(0).getOrderNum();
|
|
|
+ if (order1 == null) return 1;
|
|
|
+ if (order2 == null) return -1;
|
|
|
+ return order1.compareTo(order2);
|
|
|
+ })
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
// 递归处理子节点
|
|
|
for (String childRowId : children) {
|
|
|
- addRowIdWithChildren(childRowId, rowIdToParentId, allRowIds, result);
|
|
|
+ addRowIdWithChildren(childRowId, rowIdToParentId, allRowIds, result, itemsByRowId);
|
|
|
}
|
|
|
}
|
|
|
|