소스 검색

获取项目计划

qianxb 2 년 전
부모
커밋
5c8f8962ec

+ 14 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/ProjectCostBudgetVO.java

@@ -7,6 +7,7 @@ import org.springblade.control.entity.ProjectCostBudget;
 
 import java.math.BigDecimal;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Param
@@ -16,6 +17,8 @@ import java.util.List;
 @Data
 @EqualsAndHashCode(callSuper = true)
 public class ProjectCostBudgetVO extends ProjectCostBudget {
+    @ApiModelProperty(value = "项目名称")
+    private String projectName;
 
     @ApiModelProperty(value = "费用分类值")
     private String costTypeValue;
@@ -32,4 +35,15 @@ public class ProjectCostBudgetVO extends ProjectCostBudget {
     @ApiModelProperty(value = "岗位类型值")
     private String postTypeValue;
 
+    @ApiModelProperty(value = "计划施工单位")
+    private Map<Integer,List<ProjectCostBudgetVO2>> buildUnit;
+
+    @ApiModelProperty(value = "计划监理单位")
+    private Map<Integer,List<ProjectCostBudgetVO2>> supervisorUnit;
+
+    @ApiModelProperty(value = "计划建设单位")
+    private Map<Integer,List<ProjectCostBudgetVO2>> constructUnit;
+
+
+
 }

+ 22 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/ProjectCostBudgetVO2.java

@@ -0,0 +1,22 @@
+package org.springblade.control.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.control.entity.ProjectCostBudget;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Param  带子计划
+ * @Author wangwl
+ * @Date 2023/6/8 10:30
+ **/
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ProjectCostBudgetVO2 extends ProjectCostBudget {
+    @ApiModelProperty(value = "子计划")
+    private List<ProjectCostBudget> childrenList;
+
+}

+ 28 - 0
blade-service/blade-control/src/main/java/org/springblade/control/controller/ProjectCostBudgetController.java

@@ -10,6 +10,7 @@ import org.springblade.control.dto.ControlProjectInfoDTO;
 import org.springblade.control.dto.ProjectCostBudgetDTO;
 import org.springblade.control.entity.ProjectCostBudget;
 import org.springblade.control.service.IProjectCostBudgetService;
+import org.springblade.control.vo.ProjectCostBudgetVO;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springframework.web.bind.annotation.*;
@@ -40,4 +41,31 @@ public class ProjectCostBudgetController {
         return R.data(budgetService.page(dto,query));
     }
 
+    /**
+     * 获取项目计划
+     */
+    @GetMapping("/getPlanByProjectId")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "获取项目计划")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "项目id", required = true),
+    })
+    public R getPlanByProjectId(Long id){
+        return R.data(budgetService.getPlanByProjectId(id));
+    }
+
+    /**
+     * 编辑项目计划
+     */
+    @PostMapping("/updatePlan")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "获取项目计划")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "项目id", required = true),
+    })
+    public R updatePlan(@RequestBody ProjectCostBudgetVO vo){
+        budgetService.updatePlan(vo);
+        return R.success("保存成功");
+    }
+
 }

+ 5 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectCostBudgetMapper.java

@@ -10,6 +10,7 @@ import org.springblade.control.entity.*;
 import org.springblade.control.vo.ControlContractInfoVO;
 import org.springblade.control.vo.ControlProjectInfoVO;
 import org.springblade.control.vo.ProjectCostBudgetVO;
+import org.springblade.control.vo.ProjectCostBudgetVO2;
 import org.springblade.core.mp.support.Query;
 
 import java.util.List;
@@ -30,4 +31,8 @@ public interface ProjectCostBudgetMapper extends BaseMapper<ProjectCostBudget> {
     ProjectCostBudgetStats getBudgetTotalByProjectId(@Param("projectId") Long projectId);
 
     ControlProjectInfoVO page(IPage page,@Param("dto") ControlProjectInfoDTO dto);
+
+    List<ProjectCostBudgetVO2> getApprovePlan(@Param("id") Long id);
+
+    List<ProjectCostBudget> getAllChildrenPlan(@Param("id") Long id);
 }

+ 6 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectCostBudgetMapper.xml

@@ -52,6 +52,12 @@
         and id in (select cbs.project_id from c_project_cost_budget_stats cbs WHERE cbs.approve = 1)
 
     </select>
+    <select id="getApprovePlan" resultType="org.springblade.control.vo.ProjectCostBudgetVO2">
+        SELECT * FROM c_project_cost_budget  WHERE project_id = #{id} AND  approve = 1
+    </select>
+    <select id="getAllChildrenPlan" resultType="org.springblade.control.entity.ProjectCostBudget">
+        SELECT * FROM c_project_cost_budget  WHERE project_id = #{id} AND parentId is not null
+    </select>
 
 
 </mapper>

+ 4 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/IProjectCostBudgetService.java

@@ -33,4 +33,8 @@ public interface IProjectCostBudgetService extends BaseService<ProjectCostBudget
 
     //分页获取列表
     ControlProjectInfoVO page(ControlProjectInfoDTO dto, Query query);
+
+    ProjectCostBudgetVO getPlanByProjectId(Long id);
+
+    void updatePlan(ProjectCostBudgetVO vo);
 }

+ 59 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ProjectCostBudgetServiceImpl.java

@@ -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) {
+
+    }
+
     /**
      * 统计一行的几个总金额
      */