|
|
@@ -678,6 +678,25 @@ function getBuildingArea(projFeature){
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
+// 根据树结构数据排序
|
|
|
+function getSortedDataByTree(data) {
|
|
|
+ // NextSiblingID-数据映射
|
|
|
+ const mapping = {};
|
|
|
+ data.forEach(item => mapping[item.NextSiblingID] = item);
|
|
|
+ let lastItem = data.find(item => +item.NextSiblingID === -1);
|
|
|
+ if (!lastItem) {
|
|
|
+ return data;
|
|
|
+ }
|
|
|
+ const rst = [lastItem];
|
|
|
+ let preItem = mapping[lastItem.ID];
|
|
|
+ while (preItem) {
|
|
|
+ rst.unshift(preItem);
|
|
|
+ preItem = mapping[preItem.ID];
|
|
|
+ }
|
|
|
+ // 根据树结构排序形成的新数组与旧数组项数不同,说明树结构数据有问题(断链),则返回原本数据。
|
|
|
+ return rst.length === data.length ? rst : data;
|
|
|
+}
|
|
|
+
|
|
|
//根据单位工程ID获取汇总信息
|
|
|
//@param {Number}tenderID {String}summaryType @return {Object}
|
|
|
async function getSummaryInfoByTender(tenderID, summaryType) {
|
|
|
@@ -693,20 +712,11 @@ async function getSummaryInfoByTender(tenderID, summaryType) {
|
|
|
return null;
|
|
|
}
|
|
|
let summaryInfo = await getSummaryInfo([project.ID]);
|
|
|
- //已经没有单项工程这一层
|
|
|
- if(summaryType === projectType.engineering){
|
|
|
- /*parentName = engineering.name ? engineering.name : '';
|
|
|
- let tenders = await projectModel.find({ParentID: engineering.ID, $or: notDeleted});
|
|
|
- for(let t of tenders){
|
|
|
- if(summaryInfo[t.ID]){
|
|
|
- summaryInfo[t.ID]['name'] = t.name ? t.name : '';
|
|
|
- summaryList.push(summaryInfo[t.ID]);
|
|
|
- }
|
|
|
- }*/
|
|
|
- }
|
|
|
- else {
|
|
|
+ // 汇总到建设项目层(没有单项工程层了)
|
|
|
+ if (summaryType === projectType.project) {
|
|
|
parentName = project.name ? project.name : '';
|
|
|
let tenders = await projectModel.find({ParentID: project.ID, $or: notDeleted});
|
|
|
+ tenders = getSortedDataByTree(tenders);
|
|
|
for(let t of tenders){
|
|
|
if(summaryInfo[t.ID]){
|
|
|
summaryInfo[t.ID]['name'] = t.name ? t.name : '';
|