From 4501ccfd73d1a387035e154ae4c4c7fd79fd0f7e Mon Sep 17 00:00:00 2001 From: caoqi Date: Sat, 9 Mar 2024 15:51:12 +0800 Subject: [PATCH 1/6] =?UTF-8?q?add:=E6=A0=B9=E6=8D=AE=E7=9B=AE=E5=BD=95id?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=85=B3=E8=81=94=E7=9A=84=E5=9C=BA=E6=99=AF?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yg/znjg/controller/SyDirController.java | 65 ++++++++++++------- 1 file changed, 40 insertions(+), 25 deletions(-) diff --git a/shuili-system/src/main/java/com/kms/yg/znjg/controller/SyDirController.java b/shuili-system/src/main/java/com/kms/yg/znjg/controller/SyDirController.java index 41a6921f..314ceaee 100644 --- a/shuili-system/src/main/java/com/kms/yg/znjg/controller/SyDirController.java +++ b/shuili-system/src/main/java/com/kms/yg/znjg/controller/SyDirController.java @@ -3,13 +3,11 @@ package com.kms.yg.znjg.controller; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.kms.yg.znjg.domain.SyDir; -import com.kms.yg.znjg.domain.SyDirLayer; -import com.kms.yg.znjg.domain.SyLayer; -import com.kms.yg.znjg.domain.SySceneDirRelation; +import com.kms.yg.znjg.domain.*; import com.kms.yg.znjg.mapper.SyDirLayerMapper; import com.kms.yg.znjg.mapper.SyLayerMapper; import com.kms.yg.znjg.mapper.SySceneDirRelationMapper; +import com.kms.yg.znjg.mapper.SySceneMapper; import com.kms.yg.znjg.service.SyDirLayerService; import com.kms.yg.znjg.service.SyDirService; import com.kms.yg.znjg.service.SyLayerService; @@ -26,6 +24,8 @@ import org.springframework.web.bind.annotation.*; import java.util.HashMap; import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; /** * 图层目录管理 @@ -46,6 +46,9 @@ public class SyDirController { @Autowired private SySceneDirRelationMapper sySceneDirRelationMapper; + @Autowired + private SySceneMapper sySceneMapper; + @Autowired private SyDirLayerMapper syDirLayerMapper; @@ -105,27 +108,39 @@ public class SyDirController { } } -// @GetMapping(value = "/getRelationSceneInfo") -// @ApiOperation("根据目录id获取关联的场景信息") -// public Response saveDir(String dirId) throws Exception { -// try { -// List dirRelations = sySceneDirRelationMapper.selectByMap(new HashMap() {{ -// put("dir_id", dirId); -// }}); -// if (dirRelations!=null && dirRelations.size()>0){ -// return new Response() {{ -// setCode("200"); -// setData(dirRelations); -// }}; -// -// } catch (Exception e) { -// e.printStackTrace(); -// return new Response() {{ -// setCode("500"); -// setMsg(e.getMessage()); -// }}; -// } -// } + /** + * 根据目录id获取关联的场景信息 + * + * @param dirId 目录id + * @return + * @throws Exception + */ + @GetMapping(value = "/getRelationSceneInfo/{dirId}") + @ApiOperation("根据目录id获取关联的场景信息") + public Response saveDir(@PathVariable(value = "dirId") String dirId) throws Exception { + try { + List dirRelations = sySceneDirRelationMapper.selectByMap(new HashMap() {{ + put("dir_id", dirId); + put("is_valid", "1"); + }}); + if (dirRelations != null && dirRelations.size() > 0) { + List sceneList = sySceneMapper.selectBatchIds(dirRelations.stream().map(SySceneDirRelation::getSceneId).collect(Collectors.toList())); + List sceneNameList = sceneList.stream().filter(scene -> scene != null && scene.getIsValid() == 1).map(SyScene::getName).collect(Collectors.toList()); + return new Response() {{ + setCode("200"); + setData(sceneNameList); + }}; + } else { + throw new Exception("未找到关联的场景信息"); + } + } catch (Exception e) { + e.printStackTrace(); + return new Response() {{ + setCode("500"); + setMsg(e.getMessage()); + }}; + } + } /** * 根据目录id删除图层目录 From 87910cad684c60d5a82cc4113b38cc2ada81007c Mon Sep 17 00:00:00 2001 From: caoqi Date: Sat, 9 Mar 2024 16:59:07 +0800 Subject: [PATCH 2/6] =?UTF-8?q?add:=E5=9B=BE=E5=B1=82=E7=9B=AE=E5=BD=95?= =?UTF-8?q?=E5=92=8C=E5=9C=BA=E6=99=AF=E7=9A=84=E5=85=B3=E8=81=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yg/znjg/controller/SySceneController.java | 48 ++++++++++++- .../SySceneDirRelationController.java | 69 +++++++++++++++++++ .../java/com/kms/yg/znjg/domain/SyDir.java | 5 ++ .../com/kms/yg/znjg/mapper/SySceneMapper.java | 3 +- .../kms/yg/znjg/service/SySceneService.java | 3 +- .../java/com/kms/yg/znjg/vo/SySceneVo.java | 12 ++++ .../mapper/yg/znjg/SySceneMapper.xml | 13 ++-- 7 files changed, 142 insertions(+), 11 deletions(-) create mode 100644 shuili-system/src/main/java/com/kms/yg/znjg/controller/SySceneDirRelationController.java create mode 100644 shuili-system/src/main/java/com/kms/yg/znjg/vo/SySceneVo.java diff --git a/shuili-system/src/main/java/com/kms/yg/znjg/controller/SySceneController.java b/shuili-system/src/main/java/com/kms/yg/znjg/controller/SySceneController.java index 85f54162..864f61dc 100644 --- a/shuili-system/src/main/java/com/kms/yg/znjg/controller/SySceneController.java +++ b/shuili-system/src/main/java/com/kms/yg/znjg/controller/SySceneController.java @@ -5,13 +5,16 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.kms.common.utils.UserUtils; +import com.kms.yg.znjg.domain.SyDir; import com.kms.yg.znjg.domain.SyScene; import com.kms.yg.znjg.domain.SySceneConfigRelation; import com.kms.yg.znjg.domain.SySceneDirRelation; +import com.kms.yg.znjg.mapper.SyDirMapper; import com.kms.yg.znjg.mapper.SySceneConfigRelationMapper; import com.kms.yg.znjg.mapper.SySceneDirRelationMapper; import com.kms.yg.znjg.mapper.SySceneMapper; import com.kms.yg.znjg.service.SySceneService; +import com.kms.yg.znjg.vo.SySceneVo; import com.kms.yxgh.base.Response; import com.shuili.common.core.domain.SearchParam; import com.shuili.common.core.domain.entity.SysUser; @@ -22,6 +25,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.*; +import java.util.stream.Collectors; /** * @description 地图场景管理 @@ -36,6 +40,9 @@ public class SySceneController { @Autowired private SySceneMapper sySceneMapper; + @Autowired + private SyDirMapper syDirMapper; + @Autowired private SySceneDirRelationMapper sySceneDirRelationMapper; @@ -49,15 +56,50 @@ public class SySceneController { * @return * @throws Exception */ - @GetMapping(value = "/sceneList") + @PostMapping(value = "/sceneList") @ApiOperation(value = "分页查询所有的地图场景信息") - public IPage sceneList(@RequestBody SearchParam spScene) throws Exception { + public IPage sceneList(@RequestBody SearchParam spScene) throws Exception { SyScene sySceneInfo = spScene.getData(); - Page page = new Page<>(spScene.getPageNum(), spScene.getPageSize()); + Page page = new Page<>(spScene.getPageNum(), spScene.getPageSize()); Map params = spScene.getParams(); return sySceneService.sceneList(page, sySceneInfo, params); } + /** + * 根据场景id获取关联的图层目录信息 + * + * @param sceneId 场景id + * @return + * @throws Exception + */ + @GetMapping(value = "/getRelationSceneInfo/{sceneId}") + @ApiOperation("根据场景id获取关联的图层目录信息") + public Response saveDir(@PathVariable(value = "sceneId") String sceneId) throws Exception { + try { + List sceneDirRelations = sySceneDirRelationMapper.selectByMap(new HashMap() {{ + put("scene_id", sceneId); + put("is_valid", "1"); + }}); + if (sceneDirRelations != null && sceneDirRelations.size() > 0) { + List syDirs = syDirMapper.selectBatchIds(sceneDirRelations.stream().map(SySceneDirRelation::getDirId).collect(Collectors.toList())); + List syDirList = syDirs.stream().filter(syDir -> syDir != null && syDir.getIsValid() == 1).collect(Collectors.toList()); + return new Response() {{ + setCode("200"); + setData(syDirList); + }}; + + } else { + throw new Exception("未找到关联的目录信息"); + } + } catch (Exception e) { + e.printStackTrace(); + return new Response() {{ + setCode("500"); + setMsg(e.getMessage()); + }}; + } + } + /** * 保存/更新场景实体对象 * diff --git a/shuili-system/src/main/java/com/kms/yg/znjg/controller/SySceneDirRelationController.java b/shuili-system/src/main/java/com/kms/yg/znjg/controller/SySceneDirRelationController.java new file mode 100644 index 00000000..7cd0ad56 --- /dev/null +++ b/shuili-system/src/main/java/com/kms/yg/znjg/controller/SySceneDirRelationController.java @@ -0,0 +1,69 @@ +package com.kms.yg.znjg.controller; + +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.kms.yg.znjg.domain.SySceneDirRelation; +import com.kms.yg.znjg.mapper.SySceneDirRelationMapper; +import com.kms.yg.znjg.service.SySceneDirRelationService; +import com.kms.yxgh.base.Response; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +/** + * 场景目录关联管理 + */ +@RestController +@RequestMapping("/map/scene/dir") +public class SySceneDirRelationController { + @Autowired + private SySceneDirRelationService sySceneDirRelationService; + + @Autowired + private SySceneDirRelationMapper sySceneDirRelationMapper; + + /** + * 保存场景与地图目录的关联关系 + * + * @param sceneId 场景id + * @param dirIds 地图目录id集合,以逗号分隔 + * @return + * @throws Exception + */ + @PostMapping(value = "/saveSceneDirRelation") + public Response saveSceneDirRelation(String sceneId, String dirIds) throws Exception { + Response responseInfo = new Response(); + try { + List dirIdList = Arrays.asList(dirIds.split(",", -1)); + if (StringUtils.isNotEmpty(sceneId) && dirIds != null && dirIdList.size() > 0) { + //删除之前的关联关系 + UpdateWrapper sySceneDirRelationUpdateWrapper = new UpdateWrapper<>(); + sySceneDirRelationUpdateWrapper.eq("scene_id", sceneId).set("is_valid", 0); + sySceneDirRelationMapper.update(null, sySceneDirRelationUpdateWrapper); + //保存新的关联关系 + for (String dirId : dirIdList) { + SySceneDirRelation sySceneDirRelation = new SySceneDirRelation(); + sySceneDirRelation.setDirId(dirId); + sySceneDirRelation.setSceneId(sceneId); + sySceneDirRelation.setRelateDate(new Date()); + sySceneDirRelation.setIsValid(1); + sySceneDirRelationMapper.insert(sySceneDirRelation); + } + responseInfo.setCode("200"); + responseInfo.setData("保存成功"); + } else { + throw new Exception("保存失败,提交的参数异常!"); + } + } catch (Exception e) { + e.printStackTrace(); + responseInfo.setCode("500"); + responseInfo.setMsg(e.getMessage()); + } + return responseInfo; + } +} \ No newline at end of file diff --git a/shuili-system/src/main/java/com/kms/yg/znjg/domain/SyDir.java b/shuili-system/src/main/java/com/kms/yg/znjg/domain/SyDir.java index a5ebe931..8d349cd2 100644 --- a/shuili-system/src/main/java/com/kms/yg/znjg/domain/SyDir.java +++ b/shuili-system/src/main/java/com/kms/yg/znjg/domain/SyDir.java @@ -64,6 +64,11 @@ public class SyDir implements Serializable { */ private String directoryDescription; + /** + * 数据是否有效,用来标识逻辑删除,1:可用,0:已被逻辑删除 + */ + private Integer isValid; + @TableField(exist = false) private static final long serialVersionUID = 1L; } \ No newline at end of file diff --git a/shuili-system/src/main/java/com/kms/yg/znjg/mapper/SySceneMapper.java b/shuili-system/src/main/java/com/kms/yg/znjg/mapper/SySceneMapper.java index c63c9a77..cb3327b2 100644 --- a/shuili-system/src/main/java/com/kms/yg/znjg/mapper/SySceneMapper.java +++ b/shuili-system/src/main/java/com/kms/yg/znjg/mapper/SySceneMapper.java @@ -3,6 +3,7 @@ package com.kms.yg.znjg.mapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.kms.yg.znjg.domain.SyScene; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.kms.yg.znjg.vo.SySceneVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; @@ -16,7 +17,7 @@ import org.springframework.stereotype.Repository; @Repository @Mapper public interface SySceneMapper extends BaseMapper { - Page findSceneList(@Param("page") Page pageQuery, @Param("syScene") SyScene sySceneInfo, @Param("orderBy") String orderBy, @Param("sortBy") String sortBy); + Page findSceneList(@Param("page") Page pageQuery, @Param("syScene") SyScene sySceneInfo, @Param("orderBy") String orderBy, @Param("sortBy") String sortBy); } diff --git a/shuili-system/src/main/java/com/kms/yg/znjg/service/SySceneService.java b/shuili-system/src/main/java/com/kms/yg/znjg/service/SySceneService.java index cb7aa221..aaeba85c 100644 --- a/shuili-system/src/main/java/com/kms/yg/znjg/service/SySceneService.java +++ b/shuili-system/src/main/java/com/kms/yg/znjg/service/SySceneService.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.kms.yg.znjg.domain.SyScene; import com.kms.yg.znjg.mapper.SySceneMapper; +import com.kms.yg.znjg.vo.SySceneVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -29,7 +30,7 @@ public class SySceneService extends ServiceImpl implemen * @param params 其他查询参数,如排序信息 * @return */ - public IPage sceneList(Page pageQuery, SyScene sySceneInfo, Map params) { + public IPage sceneList(Page pageQuery, SyScene sySceneInfo, Map params) { String orderBy = ""; String sortBy = ""; if (params != null) { diff --git a/shuili-system/src/main/java/com/kms/yg/znjg/vo/SySceneVo.java b/shuili-system/src/main/java/com/kms/yg/znjg/vo/SySceneVo.java new file mode 100644 index 00000000..2f30984f --- /dev/null +++ b/shuili-system/src/main/java/com/kms/yg/znjg/vo/SySceneVo.java @@ -0,0 +1,12 @@ +package com.kms.yg.znjg.vo; + +import com.kms.yg.znjg.domain.SyScene; +import lombok.Data; + +@Data +public class SySceneVo extends SyScene { + /** + * 场景关联的图层目录数量 + */ + private Integer relationDirCount; +} diff --git a/shuili-system/src/main/resources/mapper/yg/znjg/SySceneMapper.xml b/shuili-system/src/main/resources/mapper/yg/znjg/SySceneMapper.xml index e053f989..da062900 100644 --- a/shuili-system/src/main/resources/mapper/yg/znjg/SySceneMapper.xml +++ b/shuili-system/src/main/resources/mapper/yg/znjg/SySceneMapper.xml @@ -13,14 +13,15 @@ - id - ,name,pub_date, - create_user,interface_address + y.id + ,y.name,y.pub_date, + y.create_user,y.interface_address - SELECT - - FROM bs_sgc_qqjd_scene + , + (SELECT COUNT(1) FROM bs_sgc_qqjd_scene_dir_relation x WHERE IS_VALID=1 and x.SCENE_ID=y.ID ) AS relationDirCount + FROM bs_sgc_qqjd_scene y WHERE 1 = 1 AND IS_VALID = 1 From b2993a44a5fdacf8d9ae5a5f883c2d66a15c3b4a Mon Sep 17 00:00:00 2001 From: caoqi Date: Sat, 9 Mar 2024 17:59:11 +0800 Subject: [PATCH 3/6] =?UTF-8?q?add:=E6=A0=B9=E6=8D=AE=E5=9C=BA=E6=99=AFid?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=85=B3=E8=81=94=E7=9A=84=E5=9B=BE=E5=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yg/znjg/controller/SySceneController.java | 174 +++++++++++++++++- .../kms/yg/znjg/mapper/SyDirLayerMapper.java | 2 + .../com/kms/yg/znjg/mapper/SyDirMapper.java | 2 + .../com/kms/yg/znjg/mapper/SyLayerMapper.java | 4 + .../mapper/yg/znjg/SyDirLayerMapper.xml | 16 ++ .../resources/mapper/yg/znjg/SyDirMapper.xml | 22 ++- .../mapper/yg/znjg/SyLayerMapper.xml | 36 ++++ 7 files changed, 247 insertions(+), 9 deletions(-) diff --git a/shuili-system/src/main/java/com/kms/yg/znjg/controller/SySceneController.java b/shuili-system/src/main/java/com/kms/yg/znjg/controller/SySceneController.java index 864f61dc..d8c5289f 100644 --- a/shuili-system/src/main/java/com/kms/yg/znjg/controller/SySceneController.java +++ b/shuili-system/src/main/java/com/kms/yg/znjg/controller/SySceneController.java @@ -1,30 +1,29 @@ package com.kms.yg.znjg.controller; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.kms.common.utils.UserUtils; -import com.kms.yg.znjg.domain.SyDir; -import com.kms.yg.znjg.domain.SyScene; -import com.kms.yg.znjg.domain.SySceneConfigRelation; -import com.kms.yg.znjg.domain.SySceneDirRelation; -import com.kms.yg.znjg.mapper.SyDirMapper; -import com.kms.yg.znjg.mapper.SySceneConfigRelationMapper; -import com.kms.yg.znjg.mapper.SySceneDirRelationMapper; -import com.kms.yg.znjg.mapper.SySceneMapper; +import com.kms.yg.znjg.domain.*; +import com.kms.yg.znjg.mapper.*; import com.kms.yg.znjg.service.SySceneService; +import com.kms.yg.znjg.vo.SyDirVo; import com.kms.yg.znjg.vo.SySceneVo; import com.kms.yxgh.base.Response; import com.shuili.common.core.domain.SearchParam; import com.shuili.common.core.domain.entity.SysUser; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -49,6 +48,12 @@ public class SySceneController { @Autowired private SySceneConfigRelationMapper sySceneConfigRelationMapper; + @Autowired + private SyDirLayerMapper syDirLayerMapper; + + @Autowired + private SyLayerMapper syLayerMapper; + /** * 分页查询所有的地图场景信息 * @@ -199,4 +204,157 @@ public class SySceneController { } return responseInfo; } + + /** + * 根据场景id获取关联的图层信息 + * + * @param sceneId 场景id + * @return + * @throws Exception + */ + @GetMapping(value = "/getLayerTree/{sceneId}") + @ApiOperation("根据场景id获取关联的图层信息") + public Response getLayerTree(@PathVariable(value = "sceneId") String sceneId) throws Exception { + try { + // 查询场景关联的图层目录信息 + List sceneDirRelations = sySceneDirRelationMapper.selectByMap(new HashMap() {{ + put("scene_id", sceneId); + put("is_valid", "1"); + }}); + if (sceneDirRelations != null && sceneDirRelations.size() > 0) { + // 根据图层目录查询关联的图层目录id + List dirIds = sceneDirRelations.stream().map(SySceneDirRelation::getDirId).collect(Collectors.toList()); + //获取专题目录一级目录 + List allDirs = syDirMapper.findSecondInDirList(dirIds); + if (allDirs == null || allDirs.size() == 0) { + throw new Exception("未找到关联的图层信息"); + } + List tree = new ArrayList(); + Iterator it = allDirs.iterator(); + while (it.hasNext()) { + List list = getProjectLayerData(it.next()); + if (list != null && list.size() > 0) { + tree.add(list.get(0)); + } + } + String dirId = ObjectUtil.isNotEmpty(sceneId) ? "" : "root"; + List rootLabels = syLayerMapper.getAllByDirId(dirId); + Map rootItem = new HashMap(); + rootItem.put("id", "root"); + rootItem.put("text", "全部"); + rootItem.put("iconCls", "icon-folder"); + rootItem.put("pid", ""); + rootItem.put("dirOrder", 1); + rootItem.put("info", ""); + if (allDirs == null || allDirs.size() == 0) { + rootItem.put("children", new ArrayList<>()); + } else { + rootItem.put("children", tree); + } + if (rootLabels.size() > 0) { + //去掉不包含"root"的 + List newRootLabels = rootLabels.stream() + .filter(syLabel -> syLabel.getDirId().contains("root")) + .collect(Collectors.toList()); + rootItem.put("layers", newRootLabels); + } + return new Response() {{ + setCode("200"); + setData(rootItem); + }}; + } else { + throw new Exception("未找到关联的图层信息"); + } + } catch (Exception e) { + e.printStackTrace(); + return new Response() {{ + setCode("500"); + setMsg(e.getMessage()); + }}; + } + } + + + private List getProjectLayerData(SyDir topSyLabelDir) { + Set dirSeqSet = syDirMapper.selectDirSeq(); + Set dirIdSet = new HashSet<>(); + dirIdSet.add(topSyLabelDir.getId()); + for (String dirSeq : dirSeqSet) { + String[] dirSeqs = dirSeq.split(","); + if (dirSeqs.length > 1 && dirSeqs[dirSeqs.length - 2].equals(topSyLabelDir.getId())) { + Arrays.stream(dirSeqs).forEach(key -> { + if (!"root".equals(key)) { + dirIdSet.add(key); + } + }); + } + } + List dirList = new ArrayList<>(); + if (dirIdSet.size() > 0) { + dirList = syDirMapper.findByIds(dirIdSet.toArray(new String[dirIdSet.size()])); + } + if (dirList == null || dirList.size() == 0) { + return new ArrayList<>(); + } + List syLabelList = syLayerMapper.findListByDirSeq(topSyLabelDir.getId()); + Map syLabelMap = syLabelList.stream().collect(Collectors.toMap(x -> x.getId(), x -> x)); + + List syLabelDirRelationList = syDirLayerMapper.findByDirSeq(topSyLabelDir.getId()); + Map> syViewPointDirDataMap = syLabelDirRelationList.stream().collect(Collectors.groupingBy(SyDirLayer::getDirId)); + List list = dirList.stream().map(x -> { + Map item = getDirTreeMap(null, x, null); + List dirLayerList = syViewPointDirDataMap.get(x.getId()); + if (dirLayerList != null && dirLayerList.size() > 0) { + List layers = new ArrayList<>(); + dirLayerList.stream().forEach(xd -> { + SyLayer layerc = syLabelMap.get(xd.getLayerId()); + if (layerc != null) { + layers.add(layerc); + } + }); + item.put("layers", layers); + } + return item; + }).collect(Collectors.toList()); + + Map idMap = list.stream().collect(Collectors.toMap(x -> MapUtils.getString(x, "id"), Function.identity())); + Iterator it = list.iterator(); + while (it.hasNext()) { + Map item = it.next(); + String pid = MapUtils.getString(item, "pid"); + if (!"root".equals(pid)) { + Map parent = idMap.get(pid); + if (parent != null) { + List childrens = null; + if (!parent.containsKey("children")) { + childrens = new ArrayList<>(); + parent.put("children", new ArrayList<>()); + } else { + childrens = (List) parent.get("children"); + } + childrens.add(item); + parent.put("children", childrens); + } + it.remove(); + } + } + return list; + } + + + private Map getDirTreeMap(Map item, SyDir syLabelDir, String iconCls) { + if (item == null) { + item = new HashMap(); + } + if (org.apache.commons.lang3.StringUtils.isBlank(iconCls)) { + iconCls = "icon-folder"; + } + item.put("id", syLabelDir.getId()); + item.put("text", syLabelDir.getName()); + item.put("iconCls", iconCls); + item.put("pid", syLabelDir.getParentId()); + item.put("dirOrder", syLabelDir.getOrderNm()); + item.put("info", ""); + return item; + } } diff --git a/shuili-system/src/main/java/com/kms/yg/znjg/mapper/SyDirLayerMapper.java b/shuili-system/src/main/java/com/kms/yg/znjg/mapper/SyDirLayerMapper.java index 6902881d..31bc9e69 100644 --- a/shuili-system/src/main/java/com/kms/yg/znjg/mapper/SyDirLayerMapper.java +++ b/shuili-system/src/main/java/com/kms/yg/znjg/mapper/SyDirLayerMapper.java @@ -48,6 +48,8 @@ public interface SyDirLayerMapper extends BaseMapper { void deleteBatchByIds(@Param("syDirLayers") List syDirLayers); void delete(@Param("ids") String[] ids); + + List findByDirSeq(String id); } diff --git a/shuili-system/src/main/java/com/kms/yg/znjg/mapper/SyDirMapper.java b/shuili-system/src/main/java/com/kms/yg/znjg/mapper/SyDirMapper.java index 699d82ce..5cdc4119 100644 --- a/shuili-system/src/main/java/com/kms/yg/znjg/mapper/SyDirMapper.java +++ b/shuili-system/src/main/java/com/kms/yg/znjg/mapper/SyDirMapper.java @@ -32,6 +32,8 @@ public interface SyDirMapper extends BaseMapper { List findSecond(); + List findSecondInDirList(@Param("dirList") List dirList); + Set selectDirSeq(); List findByIds(@Param("ids") String[] ids); diff --git a/shuili-system/src/main/java/com/kms/yg/znjg/mapper/SyLayerMapper.java b/shuili-system/src/main/java/com/kms/yg/znjg/mapper/SyLayerMapper.java index 69f1f2b4..84e309c9 100644 --- a/shuili-system/src/main/java/com/kms/yg/znjg/mapper/SyLayerMapper.java +++ b/shuili-system/src/main/java/com/kms/yg/znjg/mapper/SyLayerMapper.java @@ -28,5 +28,9 @@ public interface SyLayerMapper extends BaseMapper { void delete(@Param("ids") String[] ids); Page findSyLayerList(@Param("page") Page page, @Param("syLayer") SyLayer syLayer, @Param("orderBy") String orderBy, @Param("sortBy") String sortBy); + + List findListByDirSeq(@Param("dirSeqLike") String dirSeqLike); + + List getAllByDirId(@Param("dirId") String dirId); } diff --git a/shuili-system/src/main/resources/mapper/yg/znjg/SyDirLayerMapper.xml b/shuili-system/src/main/resources/mapper/yg/znjg/SyDirLayerMapper.xml index 1dff8f30..8b5da829 100644 --- a/shuili-system/src/main/resources/mapper/yg/znjg/SyDirLayerMapper.xml +++ b/shuili-system/src/main/resources/mapper/yg/znjg/SyDirLayerMapper.xml @@ -32,6 +32,22 @@ WHERE is_valid = 1 + + INSERT INTO bs_sgc_qqjd_dir_layer (id, dir_id, layer_id, order_nm, is_valid) VALUES (#{id}, #{dirId}, #{layerId}, #{orderNm}, 1) diff --git a/shuili-system/src/main/resources/mapper/yg/znjg/SyDirMapper.xml b/shuili-system/src/main/resources/mapper/yg/znjg/SyDirMapper.xml index 6bdafbf7..33b82955 100644 --- a/shuili-system/src/main/resources/mapper/yg/znjg/SyDirMapper.xml +++ b/shuili-system/src/main/resources/mapper/yg/znjg/SyDirMapper.xml @@ -17,7 +17,9 @@ - y.id + y + . + id ,y.name,y.parent_id, y.xpath,y.dir_seq,y.order_nm,y.pub_date, y.create_user,y.directory_description @@ -172,4 +174,22 @@ ORDER BY order_nm + + diff --git a/shuili-system/src/main/resources/mapper/yg/znjg/SyLayerMapper.xml b/shuili-system/src/main/resources/mapper/yg/znjg/SyLayerMapper.xml index 9a758917..77ad98bb 100644 --- a/shuili-system/src/main/resources/mapper/yg/znjg/SyLayerMapper.xml +++ b/shuili-system/src/main/resources/mapper/yg/znjg/SyLayerMapper.xml @@ -249,4 +249,40 @@ a.id + + + + From 794036300fbad8545c47cc66fda0da44e6f2d565 Mon Sep 17 00:00:00 2001 From: caoqi Date: Sat, 9 Mar 2024 18:25:51 +0800 Subject: [PATCH 4/6] =?UTF-8?q?add:=E6=A0=B9=E6=8D=AE=E5=9C=BA=E6=99=AFid?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=85=B3=E8=81=94=E7=9A=84=E5=9B=BE=E5=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yg/znjg/controller/SySceneController.java | 41 +++++++++---------- .../mapper/yg/znjg/SyDirLayerMapper.xml | 6 ++- .../mapper/yg/znjg/SyLayerMapper.xml | 15 ++++--- 3 files changed, 34 insertions(+), 28 deletions(-) diff --git a/shuili-system/src/main/java/com/kms/yg/znjg/controller/SySceneController.java b/shuili-system/src/main/java/com/kms/yg/znjg/controller/SySceneController.java index d8c5289f..93933f5e 100644 --- a/shuili-system/src/main/java/com/kms/yg/znjg/controller/SySceneController.java +++ b/shuili-system/src/main/java/com/kms/yg/znjg/controller/SySceneController.java @@ -227,7 +227,7 @@ public class SySceneController { //获取专题目录一级目录 List allDirs = syDirMapper.findSecondInDirList(dirIds); if (allDirs == null || allDirs.size() == 0) { - throw new Exception("未找到关联的图层信息"); + throw new Exception("未找到关联的图层目录信息"); } List tree = new ArrayList(); Iterator it = allDirs.iterator(); @@ -237,8 +237,7 @@ public class SySceneController { tree.add(list.get(0)); } } - String dirId = ObjectUtil.isNotEmpty(sceneId) ? "" : "root"; - List rootLabels = syLayerMapper.getAllByDirId(dirId); + List rootLayers = syLayerMapper.getAllByDirId(""); Map rootItem = new HashMap(); rootItem.put("id", "root"); rootItem.put("text", "全部"); @@ -251,12 +250,12 @@ public class SySceneController { } else { rootItem.put("children", tree); } - if (rootLabels.size() > 0) { + if (rootLayers.size() > 0) { //去掉不包含"root"的 - List newRootLabels = rootLabels.stream() - .filter(syLabel -> syLabel.getDirId().contains("root")) + List newRootLayers = rootLayers.stream() + .filter(syLayer -> syLayer.getDirId().contains("root")) .collect(Collectors.toList()); - rootItem.put("layers", newRootLabels); + rootItem.put("layers", newRootLayers); } return new Response() {{ setCode("200"); @@ -275,13 +274,13 @@ public class SySceneController { } - private List getProjectLayerData(SyDir topSyLabelDir) { + private List getProjectLayerData(SyDir topSyLayerDir) { Set dirSeqSet = syDirMapper.selectDirSeq(); Set dirIdSet = new HashSet<>(); - dirIdSet.add(topSyLabelDir.getId()); + dirIdSet.add(topSyLayerDir.getId()); for (String dirSeq : dirSeqSet) { String[] dirSeqs = dirSeq.split(","); - if (dirSeqs.length > 1 && dirSeqs[dirSeqs.length - 2].equals(topSyLabelDir.getId())) { + if (dirSeqs.length > 1 && dirSeqs[dirSeqs.length - 2].equals(topSyLayerDir.getId())) { Arrays.stream(dirSeqs).forEach(key -> { if (!"root".equals(key)) { dirIdSet.add(key); @@ -296,18 +295,18 @@ public class SySceneController { if (dirList == null || dirList.size() == 0) { return new ArrayList<>(); } - List syLabelList = syLayerMapper.findListByDirSeq(topSyLabelDir.getId()); - Map syLabelMap = syLabelList.stream().collect(Collectors.toMap(x -> x.getId(), x -> x)); + List syLayerList = syLayerMapper.findListByDirSeq(topSyLayerDir.getId()); + Map syLayerMap = syLayerList.stream().collect(Collectors.toMap(x -> x.getId(), x -> x)); - List syLabelDirRelationList = syDirLayerMapper.findByDirSeq(topSyLabelDir.getId()); - Map> syViewPointDirDataMap = syLabelDirRelationList.stream().collect(Collectors.groupingBy(SyDirLayer::getDirId)); + List syLayerDirRelationList = syDirLayerMapper.findByDirSeq(topSyLayerDir.getId()); + Map> syLayerDirDataMap = syLayerDirRelationList.stream().collect(Collectors.groupingBy(SyDirLayer::getDirId)); List list = dirList.stream().map(x -> { Map item = getDirTreeMap(null, x, null); - List dirLayerList = syViewPointDirDataMap.get(x.getId()); + List dirLayerList = syLayerDirDataMap.get(x.getId()); if (dirLayerList != null && dirLayerList.size() > 0) { List layers = new ArrayList<>(); dirLayerList.stream().forEach(xd -> { - SyLayer layerc = syLabelMap.get(xd.getLayerId()); + SyLayer layerc = syLayerMap.get(xd.getLayerId()); if (layerc != null) { layers.add(layerc); } @@ -342,18 +341,18 @@ public class SySceneController { } - private Map getDirTreeMap(Map item, SyDir syLabelDir, String iconCls) { + private Map getDirTreeMap(Map item, SyDir syLayerDir, String iconCls) { if (item == null) { item = new HashMap(); } if (org.apache.commons.lang3.StringUtils.isBlank(iconCls)) { iconCls = "icon-folder"; } - item.put("id", syLabelDir.getId()); - item.put("text", syLabelDir.getName()); + item.put("id", syLayerDir.getId()); + item.put("text", syLayerDir.getName()); item.put("iconCls", iconCls); - item.put("pid", syLabelDir.getParentId()); - item.put("dirOrder", syLabelDir.getOrderNm()); + item.put("pid", syLayerDir.getParentId()); + item.put("dirOrder", syLayerDir.getOrderNm()); item.put("info", ""); return item; } diff --git a/shuili-system/src/main/resources/mapper/yg/znjg/SyDirLayerMapper.xml b/shuili-system/src/main/resources/mapper/yg/znjg/SyDirLayerMapper.xml index 8b5da829..5c93d910 100644 --- a/shuili-system/src/main/resources/mapper/yg/znjg/SyDirLayerMapper.xml +++ b/shuili-system/src/main/resources/mapper/yg/znjg/SyDirLayerMapper.xml @@ -42,8 +42,12 @@ bs_sgc_qqjd_dir_layer a, bs_sgc_qqjd_dir dd WHERE + a.is_valid=1 + AND + dd.is_valid=1 + AND dd.id = a.dir_id - AND dd.dir_seq LIKE CONCAT(CONCAT('%', TRIM(#{dirSeqLike})), '%') + AND dd.dir_seq LIKE CONCAT(CONCAT('%', TRIM(#{dirSeqLike})), '%') ORDER BY a.order_nm diff --git a/shuili-system/src/main/resources/mapper/yg/znjg/SyLayerMapper.xml b/shuili-system/src/main/resources/mapper/yg/znjg/SyLayerMapper.xml index 77ad98bb..d4647242 100644 --- a/shuili-system/src/main/resources/mapper/yg/znjg/SyLayerMapper.xml +++ b/shuili-system/src/main/resources/mapper/yg/znjg/SyLayerMapper.xml @@ -263,24 +263,27 @@ bs_sgc_qqjd_dir_layer sylayer, bs_sgc_qqjd_dir sydir where + sylayer.is_valid=1 + and + sydir.is_valid=1 + and sylayer.dir_id = sydir.id and sydir.dir_seq like concat(concat('%', trim(#{dirSeqLike})), '%') group by sylayer.layer_id ) layerdircounttbl on layerdircounttbl.layer_id = a.id - - - and layerdircounttbl.num > 0 - - + where a.is_valid = 1 + + and layerdircounttbl.num > 0 +