From 06c6900e75635fed38aabfbea759419dfec622c9 Mon Sep 17 00:00:00 2001
From: liyanqi <15181887205@163.com>
Date: 星期五, 16 九月 2022 18:37:29 +0800
Subject: [PATCH] 1:违建上报 2:遂昌行政区域表设计及相关代码实现

---
 ycl-platform/src/main/java/com/ycl/controller/region/SccgRegionController.java                 |   39 +++++++
 ycl-common/src/main/java/com/ycl/mapper/platform/region/SccgRegionMapper.java                  |   16 +++
 ycl-common/src/main/java/com/ycl/entity/platform/region/SccgRegion.java                        |   49 +++++++++
 ycl-common/src/main/java/com/ycl/utils/redis/RedisKey.java                                     |    7 +
 ycl-platform/src/main/resources/application.yml                                                |    1 
 ycl-common/src/main/resources/mapper/platform/region/SccgRegionMapper.xml                      |   17 +++
 ycl-common/src/main/java/com/ycl/service/platform/region/ISccgRegionService.java               |   22 ++++
 ycl-common/src/main/java/com/ycl/service/platform/depart/impl/UmsDepartServiceImpl.java        |    7 -
 ycl-common/src/main/java/com/ycl/service/platform/dict/impl/DatabaseDictionaryServiceImpl.java |    6 
 ycl-common/src/main/java/com/ycl/service/platform/region/impl/SccgRegionServiceImpl.java       |   87 +++++++++++++++++
 10 files changed, 240 insertions(+), 11 deletions(-)

diff --git a/ycl-common/src/main/java/com/ycl/entity/platform/region/SccgRegion.java b/ycl-common/src/main/java/com/ycl/entity/platform/region/SccgRegion.java
new file mode 100644
index 0000000..1b1df03
--- /dev/null
+++ b/ycl-common/src/main/java/com/ycl/entity/platform/region/SccgRegion.java
@@ -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;
+}
diff --git a/ycl-common/src/main/java/com/ycl/mapper/platform/region/SccgRegionMapper.java b/ycl-common/src/main/java/com/ycl/mapper/platform/region/SccgRegionMapper.java
new file mode 100644
index 0000000..9032082
--- /dev/null
+++ b/ycl-common/src/main/java/com/ycl/mapper/platform/region/SccgRegionMapper.java
@@ -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> {
+
+}
diff --git a/ycl-common/src/main/java/com/ycl/service/platform/depart/impl/UmsDepartServiceImpl.java b/ycl-common/src/main/java/com/ycl/service/platform/depart/impl/UmsDepartServiceImpl.java
index 77f50de..1b52a84 100644
--- a/ycl-common/src/main/java/com/ycl/service/platform/depart/impl/UmsDepartServiceImpl.java
+++ b/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());
diff --git a/ycl-common/src/main/java/com/ycl/service/platform/dict/impl/DatabaseDictionaryServiceImpl.java b/ycl-common/src/main/java/com/ycl/service/platform/dict/impl/DatabaseDictionaryServiceImpl.java
index 7970e22..3d0caac 100644
--- a/ycl-common/src/main/java/com/ycl/service/platform/dict/impl/DatabaseDictionaryServiceImpl.java
+++ b/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);
diff --git a/ycl-common/src/main/java/com/ycl/service/platform/region/ISccgRegionService.java b/ycl-common/src/main/java/com/ycl/service/platform/region/ISccgRegionService.java
new file mode 100644
index 0000000..0296019
--- /dev/null
+++ b/ycl-common/src/main/java/com/ycl/service/platform/region/ISccgRegionService.java
@@ -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();
+}
diff --git a/ycl-common/src/main/java/com/ycl/service/platform/region/impl/SccgRegionServiceImpl.java b/ycl-common/src/main/java/com/ycl/service/platform/region/impl/SccgRegionServiceImpl.java
new file mode 100644
index 0000000..0da890f
--- /dev/null
+++ b/ycl-common/src/main/java/com/ycl/service/platform/region/impl/SccgRegionServiceImpl.java
@@ -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鐨剆tream娴佽繘琛岃繃婊�
+            List<SccgRegion> collect = list.stream().filter(griddingEntity -> {
+                //鍒嗙被鐖秈d涓�0灏辫〃绀鸿缃戞牸涓� 涓�绾х綉鏍�
+                return griddingEntity.getParentId() == 0;
+            }).map(item -> {
+                // 鎵惧埌瀛愮綉鏍� set杩沜hildren灞炴�т腑
+                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锛屽墠绔仈绾ч�夋嫨鍣ㄦ渶鍚庢墠涓嶄細鍑虹幇 鏆傛棤鏁版嵁鐨刡ug
+     *
+     * @return
+     */
+    public List<SccgRegion> getTreeData(List<SccgRegion> e) {
+        for (int i = 0; i < e.size(); i++) {
+            //濡傛灉Children鐨剆ize灏忎簬1灏辫鏄庝负绌猴紝璁剧疆涓簄ull
+            if (e.get(i).getChildren().size() < 1) {
+                e.get(i).setChildren(null);
+            } else {
+                //瀛愮綉鏍兼湁鏁版嵁灏遍�掑綊
+                getTreeData(e.get(i).getChildren());
+            }
+        }
+        return e;
+    }
+}
diff --git a/ycl-common/src/main/java/com/ycl/utils/redis/RedisKey.java b/ycl-common/src/main/java/com/ycl/utils/redis/RedisKey.java
index 0935a93..57686db 100644
--- a/ycl-common/src/main/java/com/ycl/utils/redis/RedisKey.java
+++ b/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";
 }
diff --git a/ycl-common/src/main/resources/mapper/platform/region/SccgRegionMapper.xml b/ycl-common/src/main/resources/mapper/platform/region/SccgRegionMapper.xml
new file mode 100644
index 0000000..c39f2ec
--- /dev/null
+++ b/ycl-common/src/main/resources/mapper/platform/region/SccgRegionMapper.xml
@@ -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>
diff --git a/ycl-platform/src/main/java/com/ycl/controller/region/SccgRegionController.java b/ycl-platform/src/main/java/com/ycl/controller/region/SccgRegionController.java
new file mode 100644
index 0000000..6df1ce5
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/controller/region/SccgRegionController.java
@@ -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);
+    }
+}
diff --git a/ycl-platform/src/main/resources/application.yml b/ycl-platform/src/main/resources/application.yml
index 8b3a186..433e57c 100644
--- a/ycl-platform/src/main/resources/application.yml
+++ b/ycl-platform/src/main/resources/application.yml
@@ -84,3 +84,4 @@
       - /**/admin/info
       - /**/admin/logout
       - /dict/**
+      - /sccg-region/**

--
Gitblit v1.8.0