|
@@ -19,6 +19,7 @@ import org.springblade.control.service.IProjectInfoService;
|
|
|
import org.springblade.control.service.IProjectProcessService;
|
|
|
import org.springblade.control.vo.ControlProjectInfoVO;
|
|
|
import org.springblade.control.vo.ProjectCostBudgetVO;
|
|
|
+import org.springblade.control.vo.ProjectCostBudgetVO2;
|
|
|
import org.springblade.core.mp.base.BaseServiceImpl;
|
|
|
import org.springblade.core.mp.support.Query;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
@@ -29,6 +30,8 @@ import java.math.BigDecimal;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.Set;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @Param
|
|
@@ -39,6 +42,7 @@ import java.util.Map;
|
|
|
@AllArgsConstructor
|
|
|
public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBudgetMapper, ProjectCostBudget> implements IProjectCostBudgetService {
|
|
|
|
|
|
+ private final IProjectInfoService projectInfoService;
|
|
|
/**
|
|
|
* 批量新增或修改预算
|
|
|
* @param dto
|
|
@@ -118,6 +122,61 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
|
|
|
return baseMapper.page(page,dto);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取项目计划
|
|
|
+ * @param id
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public ProjectCostBudgetVO getPlanByProjectId(Long id) {
|
|
|
+ //获取项目信息
|
|
|
+ ControlProjectInfo projectInfo = projectInfoService.getById(id);
|
|
|
+ ProjectCostBudgetVO vo = new ProjectCostBudgetVO();
|
|
|
+ vo.setProjectName(projectInfo.getName());
|
|
|
+ //获取项目下所有已审批的计划
|
|
|
+ List<ProjectCostBudgetVO2> list = baseMapper.getApprovePlan(id);
|
|
|
+ //获取项目下所有的子计划
|
|
|
+ List<ProjectCostBudget> childrenList = baseMapper.getAllChildrenPlan(id);
|
|
|
+ //把子计划按parentId分组
|
|
|
+ Map<Long, List<ProjectCostBudget>> listMap = childrenList.parallelStream()
|
|
|
+ .collect(Collectors.groupingBy(ProjectCostBudget::getParentId));
|
|
|
+ Set<Long> key = listMap.keySet();
|
|
|
+ //把子计划插入计划里
|
|
|
+ for (ProjectCostBudgetVO2 vo2 : list) {
|
|
|
+ if (key.contains(vo2.getId())){
|
|
|
+ vo2.setChildrenList(listMap.get(vo2.getId()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //根据单位分类
|
|
|
+ Map<Integer, List<ProjectCostBudgetVO2>> map = list.parallelStream()
|
|
|
+ .collect(Collectors.groupingBy(ProjectCostBudgetVO2::getUnitType));
|
|
|
+ //在相同单位下,根据部门分类,1施工,2监理,3建设
|
|
|
+ if (map.get(1) != null && map.get(1).size() > 0){
|
|
|
+ Map<Integer, List<ProjectCostBudgetVO2>> build = map.get(1).parallelStream()
|
|
|
+ .collect(Collectors.groupingBy(ProjectCostBudgetVO2::getCostType));
|
|
|
+ vo.setBuildUnit(build);
|
|
|
+ }
|
|
|
+ if (map.get(2) != null && map.get(2).size() > 0){
|
|
|
+ Map<Integer, List<ProjectCostBudgetVO2>> supervisor = map.get(2).parallelStream()
|
|
|
+ .collect(Collectors.groupingBy(ProjectCostBudgetVO2::getCostType));
|
|
|
+ vo.setSupervisorUnit(supervisor);
|
|
|
+ }
|
|
|
+ if (map.get(3) != null && map.get(3).size() > 0){
|
|
|
+ Map<Integer, List<ProjectCostBudgetVO2>> construct = map.get(3).parallelStream()
|
|
|
+ .collect(Collectors.groupingBy(ProjectCostBudgetVO2::getCostType));
|
|
|
+ vo.setConstructUnit(construct);
|
|
|
+ }
|
|
|
+ return vo;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 编辑项目计划
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void updatePlan(ProjectCostBudgetVO vo) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 统计一行的几个总金额
|
|
|
*/
|