|
|
@@ -30,7 +30,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
-import java.util.List;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
import static com.hotent.base.util.AuthenticationUtil.getCurrentUserMainOrgId;
|
|
|
|
|
|
@@ -165,32 +166,63 @@ public class CostProjectTaskManagerImpl extends BaseManagerImpl<CostProjectTaskD
|
|
|
// 按创建时间倒序排列
|
|
|
queryWrapper.orderByDesc(CostProjectTask::getCreateTime);
|
|
|
|
|
|
- // 创建分页对象并执行查询
|
|
|
Page<CostProjectTask> page = new Page<>(req.getPageNum(), req.getPageSize());
|
|
|
IPage<CostProjectTask> result = costProjectTaskManager.page(page, queryWrapper);
|
|
|
|
|
|
- // 填充根任务的子任务列表和流程信息
|
|
|
- for (CostProjectTask rootTask : result.getRecords()) {
|
|
|
- // 查询子任务列表
|
|
|
- LambdaQueryWrapper<CostProjectTask> childQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
- childQueryWrapper.eq(CostProjectTask::getPid, rootTask.getId())
|
|
|
- .eq(CostProjectTask::getIsDeleted, "0")
|
|
|
- .orderByAsc(CostProjectTask::getOrderNum);
|
|
|
+ List<CostProjectTask> rootList = result.getRecords();
|
|
|
+ if (rootList == null || rootList.isEmpty()) {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ List<String> rootIds = rootList.stream()
|
|
|
+ .map(CostProjectTask::getId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ List<CostProjectTask> allChildTasks = costProjectTaskManager.list(
|
|
|
+ new LambdaQueryWrapper<CostProjectTask>()
|
|
|
+ .in(CostProjectTask::getPid, rootIds)
|
|
|
+ .eq(CostProjectTask::getIsDeleted, "0")
|
|
|
+ .orderByAsc(CostProjectTask::getOrderNum)
|
|
|
+ );
|
|
|
+ Map<String, List<CostProjectTask>> childGroup =
|
|
|
+ allChildTasks.stream()
|
|
|
+ .collect(Collectors.groupingBy(CostProjectTask::getPid));
|
|
|
+ Set<String> allProjectIds = new HashSet<>();
|
|
|
+ rootList.forEach(t -> allProjectIds.add(t.getProjectId()));
|
|
|
+ allChildTasks.forEach(t -> allProjectIds.add(t.getProjectId()));
|
|
|
+ List<CostProjectApproval> approvalList = costProjectApprovalManager.list(
|
|
|
+ new LambdaQueryWrapper<CostProjectApproval>()
|
|
|
+ .in(CostProjectApproval::getProjectId, allProjectIds)
|
|
|
+ );
|
|
|
+ Map<String, CostProjectApproval> approvalMap =
|
|
|
+ approvalList.stream().collect(
|
|
|
+ Collectors.toMap(CostProjectApproval::getProjectId, v -> v)
|
|
|
+ );
|
|
|
|
|
|
- List<CostProjectTask> childTasks = costProjectTaskManager.list(childQueryWrapper);
|
|
|
+ for (CostProjectTask rootTask : rootList) {
|
|
|
+ // 根任务状态
|
|
|
+ rootTask.setStatusName(TaskStatusConstant.getStatusNameByCode(rootTask.getStatus()));
|
|
|
+ rootTask.setCurrentNodeName(NodeConstant.getNodeValueByKey(rootTask.getCurrentNode()));
|
|
|
+ // 设置目录
|
|
|
+ CostProjectApproval rootDetail = approvalMap.get(rootTask.getProjectId());
|
|
|
+ if (rootDetail != null) {
|
|
|
+ rootTask.setCatalogId(rootDetail.getCatalogId());
|
|
|
+ }
|
|
|
+ // 子任务
|
|
|
+ List<CostProjectTask> childTasks =
|
|
|
+ childGroup.getOrDefault(rootTask.getId(), Collections.emptyList());
|
|
|
for (CostProjectTask childTask : childTasks) {
|
|
|
childTask.setStatusName(TaskStatusConstant.getStatusNameByCode(childTask.getStatus()));
|
|
|
- CostProjectApprovalDetailResp detail = costProjectApprovalManager.getDetail(childTask.getProjectId());
|
|
|
- childTask.setCatalogId(detail.getCatalogId());
|
|
|
+ CostProjectApproval detail = approvalMap.get(childTask.getProjectId());
|
|
|
+ if (detail != null) {
|
|
|
+ childTask.setCatalogId(detail.getCatalogId());
|
|
|
+ }
|
|
|
}
|
|
|
- rootTask.setStatusName(TaskStatusConstant.getStatusNameByCode(rootTask.getStatus()));
|
|
|
rootTask.setChildTasks(childTasks);
|
|
|
- rootTask.setCurrentNodeName(NodeConstant.getNodeValueByKey(rootTask.getCurrentNode()));
|
|
|
- CostProjectApprovalDetailResp detail = costProjectApprovalManager.getDetail(rootTask.getProjectId());
|
|
|
- rootTask.setCatalogId(detail.getCatalogId());
|
|
|
}
|
|
|
|
|
|
return result;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
@Override
|