skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DTO/ProjectSearchDTO.java
@@ -59,6 +59,11 @@ */ private String reportTime; /** * 标段 */ private String lot; /** * 项目排序 0状态 , 1进度 ,2注册码 skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgProjectTreeVO.java
New file @@ -0,0 +1,50 @@ package cn.gistack.sm.sg.VO; import lombok.Data; import java.util.List; /** * 项目树实体类 */ @Data public class SgProjectTreeVO { /** * 项目id */ private String id; /** * 省 */ private String provinceNm; /** * 市 */ private String cityNm; /** * 县 */ private String countyNm; /** * 水库名 */ private String resNm; /** * 子级水库数量 */ private Long childNum; /** * 项目ID集合 */ private List<String> projectIds; /** * 子列表 */ List<SgProjectTreeVO> childList; } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/controller/SgProjectInfoController.java
@@ -2,10 +2,7 @@ import cn.gistack.sm.sg.DO.SgProjectInfoDO; import cn.gistack.sm.sg.DTO.ProjectSearchDTO; import cn.gistack.sm.sg.VO.SgProjectInfoVO; import cn.gistack.sm.sg.VO.SgStatisProVO; import cn.gistack.sm.sg.VO.SgStatistccVO; import cn.gistack.sm.sg.VO.SgStatisticsVO; import cn.gistack.sm.sg.VO.*; import cn.gistack.sm.sg.excel.ProjectExcel; import cn.gistack.sm.sg.excel.ProjectImport; import cn.gistack.sm.sg.service.SgProjectInfoService; @@ -143,11 +140,20 @@ } /** * 新增项目 * 修改项目 */ @PostMapping("update") public R update(@RequestBody SgProjectInfoDO sgProjectInfoDO) { sgProjectInfoService.updateById(sgProjectInfoDO); return R.success("修改成功"); } /** * 项目树 */ @GetMapping("project_tree") public R projectTree() { List<SgProjectTreeVO> tree = sgProjectInfoService.projectTree(); return R.data(tree); } } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.java
@@ -55,6 +55,8 @@ List<SgAllDeptOrUser> queryUser(); List<SgProjectTreeVO> projectTree(); //List<String> getProjectIds(String code,@Param("grad") String grad ); } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.xml
@@ -21,6 +21,9 @@ <if test="dto.skName != null and dto.skName != ''"> and info.sk_name like concat(concat('%',#{dto.skName}),'%') </if> <if test="dto.lot != null and dto.lot != ''"> and info.lot = #{dto.lot} </if> <if test="dto.resCd != null and dto.resCd != '' "> and info.sk_id like CONCAT(CONCAT('%', #{dto.resCd}), '%') </if> @@ -439,4 +442,17 @@ <select id="queryUser" resultType="cn.gistack.sm.sg.VO.SgAllDeptOrUser"> select id,real_name as name from "YWXT"."BLADE_USER"; </select> <select id="projectTree" resultType="cn.gistack.sm.sg.VO.SgProjectTreeVO"> SELECT info.id, dria."city_nm", dria."province_nm", dria."county_nm", dria."res_nm" FROM YWXT.SG_PROJECT_INFO info LEFT JOIN SJZT_DW."dim_res_info_a" dria ON dria."res_cd" = info.sk_id WHERE 1 =1 </select> </mapper> skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/SgProjectInfoService.java
@@ -2,10 +2,7 @@ import cn.gistack.sm.sg.DO.SgProjectInfoDO; import cn.gistack.sm.sg.DTO.ProjectSearchDTO; import cn.gistack.sm.sg.VO.SgProjectInfoVO; import cn.gistack.sm.sg.VO.SgStatisProVO; import cn.gistack.sm.sg.VO.SgStatistccVO; import cn.gistack.sm.sg.VO.SgStatisticsVO; import cn.gistack.sm.sg.VO.*; import cn.gistack.sm.sg.excel.ProjectExcel; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; @@ -42,4 +39,6 @@ List<SgStatisProVO> getsgStatisticsList(String code); List<SgStatistccVO> getsgStatisticscc(String code); List<SgProjectTreeVO> projectTree(); } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectInfoServiceImpl.java
@@ -611,4 +611,57 @@ } @Override public List<SgProjectTreeVO> projectTree() { List<SgProjectTreeVO> list = sgProjectInfoMapper.projectTree(); // 按省、市、县分组 Map<String, Map<String, Map<String, List<SgProjectTreeVO>>>> groupedProjects = list.stream() .collect(Collectors.groupingBy(SgProjectTreeVO::getProvinceNm, Collectors.groupingBy(SgProjectTreeVO::getCityNm, Collectors.groupingBy(SgProjectTreeVO::getCountyNm)))); // 构建树结构 List<SgProjectTreeVO> result = new ArrayList<>(); for (Map.Entry<String, Map<String, Map<String, List<SgProjectTreeVO>>>> provinceEntry : groupedProjects.entrySet()) { String province = provinceEntry.getKey(); Map<String, Map<String, List<SgProjectTreeVO>>> cityMap = provinceEntry.getValue(); SgProjectTreeVO provinceNode = new SgProjectTreeVO(); provinceNode.setProvinceNm(province); provinceNode.setChildList(new ArrayList<>()); for (Map.Entry<String, Map<String, List<SgProjectTreeVO>>> cityEntry : cityMap.entrySet()) { String city = cityEntry.getKey(); Map<String, List<SgProjectTreeVO>> countyMap = cityEntry.getValue(); SgProjectTreeVO cityNode = new SgProjectTreeVO(); List<String> cityIds = new ArrayList<>(); cityNode.setCityNm(city); cityNode.setChildList(new ArrayList<>()); for (Map.Entry<String, List<SgProjectTreeVO>> countyEntry : countyMap.entrySet()) { String county = countyEntry.getKey(); List<SgProjectTreeVO> countyProjects = countyEntry.getValue(); SgProjectTreeVO countyNode = new SgProjectTreeVO(); countyNode.setCountyNm(county); countyNode.setChildList(new ArrayList<>(countyProjects)); countyNode.setChildNum((long) countyProjects.size()); countyNode.setProjectIds(countyProjects.stream().map(SgProjectTreeVO::getId).collect(Collectors.toList())); cityIds.addAll(countyNode.getProjectIds()); cityNode.getChildList().add(countyNode); } cityNode.setChildNum((long) cityNode.getChildList().size()); cityNode.setProjectIds(cityIds); provinceNode.getChildList().add(cityNode); } provinceNode.setChildNum((long) provinceNode.getChildList().size()); result.add(provinceNode); } return result; } }