liyanqi
2022-09-16 06c6900e75635fed38aabfbea759419dfec622c9
1:违建上报
2:遂昌行政区域表设计及相关代码实现
4个文件已修改
6个文件已添加
251 ■■■■■ 已修改文件
ycl-common/src/main/java/com/ycl/entity/platform/region/SccgRegion.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/com/ycl/mapper/platform/region/SccgRegionMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/com/ycl/service/platform/depart/impl/UmsDepartServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/com/ycl/service/platform/dict/impl/DatabaseDictionaryServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/com/ycl/service/platform/region/ISccgRegionService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/com/ycl/service/platform/region/impl/SccgRegionServiceImpl.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/com/ycl/utils/redis/RedisKey.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/resources/mapper/platform/region/SccgRegionMapper.xml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/controller/region/SccgRegionController.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/resources/application.yml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/com/ycl/entity/platform/region/SccgRegion.java
New file
@@ -0,0 +1,49 @@
package com.ycl.entity.platform.region;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.catalina.LifecycleState;
import java.io.Serializable;
import java.util.List;
/**
 * <p>
 * 遂昌行政区域
 * </p>
 *
 * @author lyq
 * @since 2022-09-16
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("ums_sccg_region")
public class SccgRegion implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * 地域名
     */
    @TableField("region_name")
    private String regionName;
    /**
     * 默认0
     */
    @TableField("parent_id")
    private Long parentId;
    @TableField(exist = false)
    private List<SccgRegion> children;
}
ycl-common/src/main/java/com/ycl/mapper/platform/region/SccgRegionMapper.java
New file
@@ -0,0 +1,16 @@
package com.ycl.mapper.platform.region;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ycl.entity.platform.region.SccgRegion;
/**
 * <p>
 * 遂昌行政区域 Mapper 接口
 * </p>
 *
 * @author lyq
 * @since 2022-09-16
 */
public interface SccgRegionMapper extends BaseMapper<SccgRegion> {
}
ycl-common/src/main/java/com/ycl/service/platform/depart/impl/UmsDepartServiceImpl.java
@@ -180,13 +180,6 @@
        return griddingEntities;
    }
    /**
     * 递归查找所有网格的子网格
     *
     * @param root 当前网格
     * @param all  所有网格
     * @return
     */
    public List<UmsDepart> getChildrens(UmsDepart root, List<UmsDepart> all) {
        List<UmsDepart> collect = all.stream().filter(griddingEntity -> {
            return griddingEntity.getParentId().equals(root.getId());
ycl-common/src/main/java/com/ycl/service/platform/dict/impl/DatabaseDictionaryServiceImpl.java
@@ -40,11 +40,11 @@
    @Override
    public List<DatabaseDictionary> getAll() {
        String key = RedisKey.DICT_LIST_ALL;
        String result = (String) redisService.get(key);
        String key = RedisKey.DICT;
        String result = (String) redisService.get(key.concat("all"));
        if (StringUtils.isBlank(result)) {
            List<DatabaseDictionary> dictList = databaseDictionaryMapper.selectList(null);
            redisService.set(key, JSON.toJSONString(dictList), LiveTimeMillisecond.s86400.time);
            redisService.set(key.concat("all"), JSON.toJSONString(dictList), LiveTimeMillisecond.s86400.time);
            return dictList;
        }
        List<DatabaseDictionary> list = JSONArray.parseArray(result, DatabaseDictionary.class);
ycl-common/src/main/java/com/ycl/service/platform/region/ISccgRegionService.java
New file
@@ -0,0 +1,22 @@
package com.ycl.service.platform.region;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ycl.entity.platform.region.SccgRegion;
import java.util.List;
/**
 * <p>
 * 遂昌行政区域 服务类
 * </p>
 *
 * @author lyq
 * @since 2022-09-16
 */
public interface ISccgRegionService extends IService<SccgRegion> {
    /**
     * 树结构
     * @return
     */
    List<SccgRegion> getTree();
}
ycl-common/src/main/java/com/ycl/service/platform/region/impl/SccgRegionServiceImpl.java
New file
@@ -0,0 +1,87 @@
package com.ycl.service.platform.region.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.entity.platform.depart.UmsDepart;
import com.ycl.entity.platform.region.SccgRegion;
import com.ycl.mapper.platform.region.SccgRegionMapper;
import com.ycl.service.platform.region.ISccgRegionService;
import com.ycl.service.redis.RedisService;
import com.ycl.utils.common.LiveTimeMillisecond;
import com.ycl.utils.redis.RedisKey;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
/**
 * <p>
 * 遂昌行政区域 服务实现类
 * </p>
 *
 * @author lyq
 * @since 2022-09-16
 */
@Service
public class SccgRegionServiceImpl extends ServiceImpl<SccgRegionMapper, SccgRegion> implements ISccgRegionService {
    @Resource
    private SccgRegionMapper sccgRegionMapper;
    @Resource
    private RedisService redisService;
    @Override
    public List<SccgRegion> getTree() {
        String result = (String) redisService.get(RedisKey.SCCG_REGION);
        if (StringUtils.isBlank(result)) {
            // 1.查出所有网格
            List<SccgRegion> list = this.list();
            // 2.组装成父子的树型结构
            // 2.1、找到所有的一级网格:使用jdk8的stream流进行过滤
            List<SccgRegion> collect = list.stream().filter(griddingEntity -> {
                //分类父id为0就表示该网格为 一级网格
                return griddingEntity.getParentId() == 0;
            }).map(item -> {
                // 找到子网格 set进children属性中
                item.setChildren(getChildrens(item, list));
                return item;
            }).collect(Collectors.toList());
            List<SccgRegion> treeData = getTreeData(collect);
            redisService.set(RedisKey.SCCG_REGION, JSON.toJSONString(treeData), LiveTimeMillisecond.s5184000.time);
            return treeData;
        }
        return JSON.parseArray(result, SccgRegion.class);
    }
    public List<SccgRegion> getChildrens(SccgRegion root, List<SccgRegion> all) {
        List<SccgRegion> collect = all.stream().filter(e -> {
            return e.getParentId().equals(root.getId());
        }).map(item -> {
            item.setChildren(getChildrens(item, all));
            return item;
        }).collect(Collectors.toList());
        return collect;
    }
    /**
     * 利用递归将最后一级空集合变为null,前端联级选择器最后才不会出现 暂无数据的bug
     *
     * @return
     */
    public List<SccgRegion> getTreeData(List<SccgRegion> e) {
        for (int i = 0; i < e.size(); i++) {
            //如果Children的size小于1就说明为空,设置为null
            if (e.get(i).getChildren().size() < 1) {
                e.get(i).setChildren(null);
            } else {
                //子网格有数据就递归
                getTreeData(e.get(i).getChildren());
            }
        }
        return e;
    }
}
ycl-common/src/main/java/com/ycl/utils/redis/RedisKey.java
@@ -15,5 +15,10 @@
    /**
     * 字典key
     */
    public static final String DICT_LIST_ALL = "dict-list-all";
    public static final String DICT = "dict:";
    /**
     * 遂昌行政区域
     */
    public static final String SCCG_REGION = "sccg-region";
}
ycl-common/src/main/resources/mapper/platform/region/SccgRegionMapper.xml
New file
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ycl.mapper.platform.region.SccgRegionMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.ycl.entity.platform.region.SccgRegion">
        <id column="id" property="id"/>
        <result column="region_name" property="regionName"/>
        <result column="parent_id" property="parentId"/>
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, region_name, parent_id
    </sql>
</mapper>
ycl-platform/src/main/java/com/ycl/controller/region/SccgRegionController.java
New file
@@ -0,0 +1,39 @@
package com.ycl.controller.region;
import com.ycl.api.CommonResult;
import com.ycl.controller.BaseController;
import com.ycl.entity.platform.region.SccgRegion;
import com.ycl.service.platform.region.ISccgRegionService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
 * <p>
 * 遂昌行政区域 前端控制器
 * </p>
 *
 * @author lyq
 * @since 2022-09-16
 */
@RestController
@RequestMapping("/sccg-region")
@Api(tags = "行政区域")
public class SccgRegionController extends BaseController {
    @Resource
    private ISccgRegionService iSccgRegionService;
    @ApiOperation("树结构")
    @GetMapping("/getTree")
    public CommonResult<List<SccgRegion>> getTree() {
        List<SccgRegion> treeList = iSccgRegionService.getTree();
        return CommonResult.success(treeList);
    }
}
ycl-platform/src/main/resources/application.yml
@@ -84,3 +84,4 @@
      - /**/admin/info
      - /**/admin/logout
      - /dict/**
      - /sccg-region/**