Forráskód Böngészése

测试五级行政区域

Simon 2 éve
szülő
commit
3b048185c5

+ 4 - 0
ruoyi-admin/pom.xml

@@ -67,6 +67,10 @@
             <artifactId>fastjson2</artifactId>
             <version>2.0.39</version>
         </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+        </dependency>
 
 
     </dependencies>

+ 110 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TAdministrativeDivisionsController.java

@@ -0,0 +1,110 @@
+package com.ruoyi.web.controller.system;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.system.domain.vo.AdministrativeDivisionsVo;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.system.domain.TAdministrativeDivisions;
+import com.ruoyi.system.service.ITAdministrativeDivisionsService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 【请填写功能名称】Controller
+ *
+ * @author ruoyi
+ * @date 2023-09-20
+ */
+@RestController
+@RequestMapping("/system/divisions")
+public class TAdministrativeDivisionsController extends BaseController {
+    @Autowired
+    private ITAdministrativeDivisionsService tAdministrativeDivisionsService;
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:divisions:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TAdministrativeDivisions tAdministrativeDivisions) {
+        startPage();
+        List<TAdministrativeDivisions> list = tAdministrativeDivisionsService.selectTAdministrativeDivisionsList(tAdministrativeDivisions);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:divisions:tempList')")
+    @GetMapping("/temp/list")
+    public TableDataInfo tempList(TAdministrativeDivisions tAdministrativeDivisions) {
+        startPage();
+        List<AdministrativeDivisionsVo> list = tAdministrativeDivisionsService.selectTAdministrativeDivisionsVoList(tAdministrativeDivisions);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出【请填写功能名称】列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:divisions:export')")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, TAdministrativeDivisions tAdministrativeDivisions) {
+        List<TAdministrativeDivisions> list = tAdministrativeDivisionsService.selectTAdministrativeDivisionsList(tAdministrativeDivisions);
+        ExcelUtil<TAdministrativeDivisions> util = new ExcelUtil<TAdministrativeDivisions>(TAdministrativeDivisions.class);
+        util.exportExcel(response, list, "【请填写功能名称】数据");
+    }
+
+    /**
+     * 获取【请填写功能名称】详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:divisions:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(tAdministrativeDivisionsService.selectTAdministrativeDivisionsById(id));
+    }
+
+    /**
+     * 新增【请填写功能名称】
+     */
+    @PreAuthorize("@ss.hasPermi('system:divisions:add')")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TAdministrativeDivisions tAdministrativeDivisions) {
+        return toAjax(tAdministrativeDivisionsService.insertTAdministrativeDivisions(tAdministrativeDivisions));
+    }
+
+    /**
+     * 修改【请填写功能名称】
+     */
+    @PreAuthorize("@ss.hasPermi('system:divisions:edit')")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TAdministrativeDivisions tAdministrativeDivisions) {
+        return toAjax(tAdministrativeDivisionsService.updateTAdministrativeDivisions(tAdministrativeDivisions));
+    }
+
+    /**
+     * 删除【请填写功能名称】
+     */
+    @PreAuthorize("@ss.hasPermi('system:divisions:remove')")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tAdministrativeDivisionsService.deleteTAdministrativeDivisionsByIds(ids));
+    }
+}

+ 8 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TElectronicFenceController.java

@@ -1,13 +1,21 @@
 package com.ruoyi.web.controller.system;
 
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
 import java.util.List;
 import javax.servlet.http.HttpServletResponse;
 
 import com.ruoyi.system.domain.to.AMapBaseTo;
 import com.ruoyi.system.domain.vo.AMapFenceVo;
 import com.ruoyi.system.domain.vo.ElectronicFenceVo;
+import org.junit.Test;
+import org.springframework.core.io.Resource;
+import org.springframework.core.io.ResourceLoader;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.ResourceUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -49,7 +57,6 @@ public class TElectronicFenceController extends BaseController {
         return getDataTable(list);
     }
 
-
     /**
      * 查询【请填写功能名称】列表
      */

+ 10 - 16
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TRegionController.java

@@ -2,6 +2,7 @@ package com.ruoyi.web.controller.system;
 
 import java.util.List;
 import javax.servlet.http.HttpServletResponse;
+
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -23,14 +24,13 @@ import com.ruoyi.common.core.page.TableDataInfo;
 
 /**
  * 行政区域Controller
- * 
+ *
  * @author zhengjie
  * @date 2023-08-15
  */
 @RestController
 @RequestMapping("/system/region")
-public class TRegionController extends BaseController
-{
+public class TRegionController extends BaseController {
     @Autowired
     private ITRegionService tRegionService;
 
@@ -39,8 +39,7 @@ public class TRegionController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('system:region:list')")
     @GetMapping("/list")
-    public TableDataInfo list(TRegion tRegion)
-    {
+    public TableDataInfo list(TRegion tRegion) {
         startPage();
 //        List<TRegion> list = tRegionService.selectTRegionList(tRegion);
         List<TRegion> list = tRegionService.selectTRegionListV2(tRegion);
@@ -53,8 +52,7 @@ public class TRegionController extends BaseController
     @PreAuthorize("@ss.hasPermi('system:region:export')")
     @Log(title = "行政区域", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
-    public void export(HttpServletResponse response, TRegion tRegion)
-    {
+    public void export(HttpServletResponse response, TRegion tRegion) {
         List<TRegion> list = tRegionService.selectTRegionList(tRegion);
         ExcelUtil<TRegion> util = new ExcelUtil<TRegion>(TRegion.class);
         util.exportExcel(response, list, "行政区域数据");
@@ -65,8 +63,7 @@ public class TRegionController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('system:region:query')")
     @GetMapping(value = "/{id}")
-    public AjaxResult getInfo(@PathVariable("id") Integer id)
-    {
+    public AjaxResult getInfo(@PathVariable("id") Integer id) {
         return success(tRegionService.selectTRegionById(id));
     }
 
@@ -76,8 +73,7 @@ public class TRegionController extends BaseController
     @PreAuthorize("@ss.hasPermi('system:region:add')")
     @Log(title = "行政区域", businessType = BusinessType.INSERT)
     @PostMapping
-    public AjaxResult add(@RequestBody TRegion tRegion)
-    {
+    public AjaxResult add(@RequestBody TRegion tRegion) {
         return toAjax(tRegionService.insertTRegion(tRegion));
     }
 
@@ -87,8 +83,7 @@ public class TRegionController extends BaseController
     @PreAuthorize("@ss.hasPermi('system:region:edit')")
     @Log(title = "行政区域", businessType = BusinessType.UPDATE)
     @PutMapping
-    public AjaxResult edit(@RequestBody TRegion tRegion)
-    {
+    public AjaxResult edit(@RequestBody TRegion tRegion) {
         return toAjax(tRegionService.updateTRegion(tRegion));
     }
 
@@ -97,9 +92,8 @@ public class TRegionController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('system:region:remove')")
     @Log(title = "行政区域", businessType = BusinessType.DELETE)
-	@DeleteMapping("/{ids}")
-    public AjaxResult remove(@PathVariable Integer[] ids)
-    {
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Integer[] ids) {
         return toAjax(tRegionService.deleteTRegionByIds(ids));
     }
 }

+ 2 - 2
ruoyi-admin/src/main/resources/application.yml

@@ -56,9 +56,9 @@ spring:
     # 测试环境
 #        active: test
     # 开发环境
-#    active: dev
+    active: dev
     # 生产环境
-    active: druid
+#    active: druid
 
   # 文件上传
   servlet:

+ 126 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/TAdministrativeDivisions.java

@@ -0,0 +1,126 @@
+package com.ruoyi.system.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 【请填写功能名称】对象 t_administrative_divisions
+ *
+ * @author ruoyi
+ * @date 2023-09-20
+ */
+public class TAdministrativeDivisions extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * $column.columnComment
+     */
+    private Long id;
+
+    /**
+     * 区域代码
+     */
+    @Excel(name = "区域代码")
+    private Long code;
+
+    /**
+     * 区域名称
+     */
+    @Excel(name = "区域名称")
+    private String name;
+
+    /**
+     * 乡级代码(镇)
+     */
+    @Excel(name = "乡级代码", readConverterExp = "镇=")
+    private Long streetCode;
+
+    /**
+     * 县级代码(区)
+     */
+    @Excel(name = "县级代码", readConverterExp = "区=")
+    private Long areaCode;
+
+    /**
+     * 地级代码(市)
+     */
+    @Excel(name = "地级代码", readConverterExp = "市=")
+    private Long cityCode;
+
+    /**
+     * 省级代码
+     */
+    @Excel(name = "省级代码")
+    private Long provinceCode;
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setCode(Long code) {
+        this.code = code;
+    }
+
+    public Long getCode() {
+        return code;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setStreetCode(Long streetCode) {
+        this.streetCode = streetCode;
+    }
+
+    public Long getStreetCode() {
+        return streetCode;
+    }
+
+    public void setAreaCode(Long areaCode) {
+        this.areaCode = areaCode;
+    }
+
+    public Long getAreaCode() {
+        return areaCode;
+    }
+
+    public void setCityCode(Long cityCode) {
+        this.cityCode = cityCode;
+    }
+
+    public Long getCityCode() {
+        return cityCode;
+    }
+
+    public void setProvinceCode(Long provinceCode) {
+        this.provinceCode = provinceCode;
+    }
+
+    public Long getProvinceCode() {
+        return provinceCode;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("code", getCode())
+                .append("name", getName())
+                .append("streetCode", getStreetCode())
+                .append("areaCode", getAreaCode())
+                .append("cityCode", getCityCode())
+                .append("provinceCode", getProvinceCode())
+                .toString();
+    }
+}

+ 96 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/AdministrativeDivisionsVo.java

@@ -0,0 +1,96 @@
+package com.ruoyi.system.domain.vo;
+
+import com.ruoyi.common.annotation.Excel;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.StringJoiner;
+
+/**
+ * @ClassName: AdministrativeDivisionsVo
+ * @Author: 于学智
+ * @Description:
+ * @CreateDate: 2023/9/20 15:17
+ * @Version: 1.0
+ * @E-mail:18722650553@139.com
+ * @Link:https://github.com/18722650553
+ */
+public class AdministrativeDivisionsVo implements Serializable {
+    /**
+     * $column.columnComment
+     */
+    private Long id;
+
+    /**
+     * 区域代码
+     */
+    @Excel(name = "区域代码")
+    private Long code;
+
+    /**
+     * 区域名称
+     */
+    @Excel(name = "区域名称")
+    private String name;
+    /**
+     * 父级ID
+     */
+    @Excel(name = "父级ID")
+    private Long parentId;
+    /**
+     * 子区域
+     */
+    @Excel(name = "子区域")
+    private List<AdministrativeDivisionsVo> child;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getCode() {
+        return code;
+    }
+
+    public void setCode(Long code) {
+        this.code = code;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Long getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(Long parentId) {
+        this.parentId = parentId;
+    }
+
+    public List<AdministrativeDivisionsVo> getChild() {
+        return child;
+    }
+
+    public void setChild(List<AdministrativeDivisionsVo> child) {
+        this.child = child;
+    }
+
+    @Override
+    public String toString() {
+        return new StringJoiner(", ", AdministrativeDivisionsVo.class.getSimpleName() + "[", "]")
+                .add("id=" + id)
+                .add("code=" + code)
+                .add("name='" + name + "'")
+                .add("parentId=" + parentId)
+                .add("child=" + child)
+                .toString();
+    }
+}

+ 102 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TAdministrativeDivisionsMapper.java

@@ -0,0 +1,102 @@
+package com.ruoyi.system.mapper;
+
+import java.util.List;
+
+import com.ruoyi.system.domain.TAdministrativeDivisions;
+
+/**
+ * 城市五级表Mapper接口
+ *
+ * @author ruoyi
+ * @date 2023-09-20
+ */
+public interface TAdministrativeDivisionsMapper {
+    /**
+     * 查询城市五级表
+     *
+     * @param id 城市五级表主键
+     * @return 城市五级表
+     */
+    public TAdministrativeDivisions selectTAdministrativeDivisionsById(Long id);
+
+    /**
+     * 查询城市五级表列表
+     *
+     * @param tAdministrativeDivisions 城市五级表
+     * @return 城市五级表集合
+     */
+    public List<TAdministrativeDivisions> selectTAdministrativeDivisionsList(TAdministrativeDivisions tAdministrativeDivisions);
+
+    /**
+     * 新增城市五级表
+     *
+     * @param tAdministrativeDivisions 城市五级表
+     * @return 结果
+     */
+    public int insertTAdministrativeDivisions(TAdministrativeDivisions tAdministrativeDivisions);
+
+    /**
+     * 修改城市五级表
+     *
+     * @param tAdministrativeDivisions 城市五级表
+     * @return 结果
+     */
+    public int updateTAdministrativeDivisions(TAdministrativeDivisions tAdministrativeDivisions);
+
+    /**
+     * 删除城市五级表
+     *
+     * @param id 城市五级表主键
+     * @return 结果
+     */
+    public int deleteTAdministrativeDivisionsById(Long id);
+
+    /**
+     * 批量删除城市五级表
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteTAdministrativeDivisionsByIds(Long[] ids);
+
+    /**
+     * 查询所有省份
+     *
+     * @return
+     */
+    List<TAdministrativeDivisions> selectTAdministrativeDivisionsProvinceAllList();
+
+
+    /**
+     * 查询所有地级(市)
+     *
+     * @param provinceCode 省级代码
+     * @return
+     */
+    List<TAdministrativeDivisions> selectTAdministrativeDivisionsListByProvinceCode(Long provinceCode);
+
+    /**
+     * 查询所有县级(区)
+     *
+     * @param cityCode 地级代码(市)
+     * @return
+     */
+    List<TAdministrativeDivisions> selectTAdministrativeDivisionsListByCityCode(Long cityCode);
+
+    /**
+     * 查询所有乡级(镇)
+     *
+     * @param areaCode 县级代码(区)
+     * @return
+     */
+    List<TAdministrativeDivisions> selectTAdministrativeDivisionsListByAreaCode(Long areaCode);
+
+    /**
+     * 查询所有居委会
+     *
+     * @param streetCode 乡级代码(镇)
+     * @return
+     */
+    List<TAdministrativeDivisions> selectTAdministrativeDivisionsListByStreetCode(Long streetCode);
+
+}

+ 70 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/ITAdministrativeDivisionsService.java

@@ -0,0 +1,70 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+
+import com.ruoyi.system.domain.TAdministrativeDivisions;
+import com.ruoyi.system.domain.vo.AdministrativeDivisionsVo;
+
+/**
+ * 【请填写功能名称】Service接口
+ *
+ * @author ruoyi
+ * @date 2023-09-20
+ */
+public interface ITAdministrativeDivisionsService {
+    /**
+     * 查询【请填写功能名称】
+     *
+     * @param id 【请填写功能名称】主键
+     * @return 【请填写功能名称】
+     */
+    public TAdministrativeDivisions selectTAdministrativeDivisionsById(Long id);
+
+    /**
+     * 查询【请填写功能名称】列表
+     *
+     * @param tAdministrativeDivisions 【请填写功能名称】
+     * @return 【请填写功能名称】集合
+     */
+    public List<TAdministrativeDivisions> selectTAdministrativeDivisionsList(TAdministrativeDivisions tAdministrativeDivisions);
+
+    /**
+     * 查询【请填写功能名称】列表
+     *
+     * @param tAdministrativeDivisions 【请填写功能名称】
+     * @return 【请填写功能名称】集合
+     */
+    public List<AdministrativeDivisionsVo> selectTAdministrativeDivisionsVoList(TAdministrativeDivisions tAdministrativeDivisions);
+
+    /**
+     * 新增【请填写功能名称】
+     *
+     * @param tAdministrativeDivisions 【请填写功能名称】
+     * @return 结果
+     */
+    public int insertTAdministrativeDivisions(TAdministrativeDivisions tAdministrativeDivisions);
+
+    /**
+     * 修改【请填写功能名称】
+     *
+     * @param tAdministrativeDivisions 【请填写功能名称】
+     * @return 结果
+     */
+    public int updateTAdministrativeDivisions(TAdministrativeDivisions tAdministrativeDivisions);
+
+    /**
+     * 批量删除【请填写功能名称】
+     *
+     * @param ids 需要删除的【请填写功能名称】主键集合
+     * @return 结果
+     */
+    public int deleteTAdministrativeDivisionsByIds(Long[] ids);
+
+    /**
+     * 删除【请填写功能名称】信息
+     *
+     * @param id 【请填写功能名称】主键
+     * @return 结果
+     */
+    public int deleteTAdministrativeDivisionsById(Long id);
+}

+ 170 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TAdministrativeDivisionsServiceImpl.java

@@ -0,0 +1,170 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import com.ruoyi.system.domain.vo.AdministrativeDivisionsVo;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.TAdministrativeDivisionsMapper;
+import com.ruoyi.system.domain.TAdministrativeDivisions;
+import com.ruoyi.system.service.ITAdministrativeDivisionsService;
+
+/**
+ * 【请填写功能名称】Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2023-09-20
+ */
+@Service
+public class TAdministrativeDivisionsServiceImpl implements ITAdministrativeDivisionsService {
+    @Autowired
+    private TAdministrativeDivisionsMapper tAdministrativeDivisionsMapper;
+
+    /**
+     * 查询【请填写功能名称】
+     *
+     * @param id 【请填写功能名称】主键
+     * @return 【请填写功能名称】
+     */
+    @Override
+    public TAdministrativeDivisions selectTAdministrativeDivisionsById(Long id) {
+        return tAdministrativeDivisionsMapper.selectTAdministrativeDivisionsById(id);
+    }
+
+    /**
+     * 查询【请填写功能名称】列表
+     *
+     * @param tAdministrativeDivisions 【请填写功能名称】
+     * @return 【请填写功能名称】
+     */
+    @Override
+    public List<TAdministrativeDivisions> selectTAdministrativeDivisionsList(TAdministrativeDivisions tAdministrativeDivisions) {
+        //查询
+        return tAdministrativeDivisionsMapper.selectTAdministrativeDivisionsList(tAdministrativeDivisions);
+    }
+
+    @Override
+    public List<AdministrativeDivisionsVo> selectTAdministrativeDivisionsVoList(TAdministrativeDivisions tAdministrativeDivisions) {
+        List<AdministrativeDivisionsVo> divisionsVos = new ArrayList<>();
+        //查询所有省份List
+        List<TAdministrativeDivisions> provinceList = tAdministrativeDivisionsMapper.selectTAdministrativeDivisionsProvinceAllList();
+        if (provinceList != null && !provinceList.isEmpty()) {
+            divisionsVos = provinceList.subList(0, 2).stream()
+                    .map(provinceEntity -> {
+                        AdministrativeDivisionsVo provinceVo = new AdministrativeDivisionsVo();
+                        BeanUtils.copyProperties(provinceEntity, provinceVo);
+                        List<AdministrativeDivisionsVo> cityVos = new ArrayList<>();
+                        if (provinceVo.getCode() != null) {
+                            //查询所有市List
+                            List<TAdministrativeDivisions> cityList = tAdministrativeDivisionsMapper.selectTAdministrativeDivisionsListByProvinceCode(provinceVo.getCode());
+                            if (cityList != null && !cityList.isEmpty()) {
+                                cityVos = cityList.subList(0, 1).stream()
+                                        .map(cityEntity -> {
+                                            AdministrativeDivisionsVo cityVo = new AdministrativeDivisionsVo();
+                                            BeanUtils.copyProperties(cityEntity, cityVo);
+                                            List<AdministrativeDivisionsVo> areaVos = new ArrayList<>();
+                                            if (cityVo.getCode() != null) {
+                                                //查询所有县级区List
+                                                List<TAdministrativeDivisions> areaList = tAdministrativeDivisionsMapper.selectTAdministrativeDivisionsListByCityCode(cityVo.getCode());
+                                                if (areaList != null && !areaList.isEmpty()) {
+                                                    areaVos = areaList.subList(0, 3).stream()
+                                                            .map(areaEntity -> {
+                                                                AdministrativeDivisionsVo areaVo = new AdministrativeDivisionsVo();
+                                                                BeanUtils.copyProperties(areaEntity, areaVo);
+                                                                List<AdministrativeDivisionsVo> streetVos = new ArrayList<>();
+                                                                if (areaVo.getCode() != null) {
+                                                                    //查询所有乡级镇List
+                                                                    List<TAdministrativeDivisions> streetList = tAdministrativeDivisionsMapper.selectTAdministrativeDivisionsListByAreaCode(areaVo.getCode());
+                                                                    if (streetList != null && !streetList.isEmpty()) {
+                                                                        streetVos = streetList.subList(0, 3).stream()
+                                                                                .map(streetEntity -> {
+                                                                                    AdministrativeDivisionsVo streetVo = new AdministrativeDivisionsVo();
+                                                                                    BeanUtils.copyProperties(streetEntity, streetVo);
+                                                                                    List<AdministrativeDivisionsVo> neighborhoodVos = new ArrayList<>();
+                                                                                    if (streetVo.getCode() != null) {
+                                                                                        //查询所有居委会List
+                                                                                        List<TAdministrativeDivisions> neighborhoodList = tAdministrativeDivisionsMapper.selectTAdministrativeDivisionsListByStreetCode(streetVo.getCode());
+                                                                                        if (neighborhoodList != null && !neighborhoodList.isEmpty()) {
+                                                                                            neighborhoodVos = neighborhoodList.subList(0, 3).stream()
+                                                                                                    .map(neighborhoodEntity -> {
+                                                                                                        AdministrativeDivisionsVo neighborhoodVo = new AdministrativeDivisionsVo();
+                                                                                                        BeanUtils.copyProperties(neighborhoodEntity, neighborhoodVo);
+                                                                                                        neighborhoodVo.setParentId(streetVo.getCode());
+                                                                                                        return neighborhoodVo;
+                                                                                                    }).collect(Collectors.toList());
+                                                                                        }
+                                                                                    }
+                                                                                    streetVo.setChild(neighborhoodVos);
+                                                                                    streetVo.setParentId(areaVo.getCode());
+                                                                                    return streetVo;
+                                                                                }).collect(Collectors.toList());
+                                                                    }
+                                                                }
+                                                                areaVo.setChild(streetVos);
+                                                                areaVo.setParentId(cityVo.getCode());
+                                                                return areaVo;
+                                                            }).collect(Collectors.toList());
+                                                }
+                                                cityVo.setChild(areaVos);
+                                                cityVo.setParentId(cityVo.getCode());
+                                            }
+                                            cityVo.setChild(areaVos);
+                                            cityVo.setParentId(provinceVo.getCode());
+                                            return cityVo;
+                                        }).collect(Collectors.toList());
+                            }
+                        }
+                        provinceVo.setChild(cityVos);
+                        return provinceVo;
+                    }).collect(Collectors.toList());
+        }
+        return divisionsVos;
+    }
+
+    /**
+     * 新增【请填写功能名称】
+     *
+     * @param tAdministrativeDivisions 【请填写功能名称】
+     * @return 结果
+     */
+    @Override
+    public int insertTAdministrativeDivisions(TAdministrativeDivisions tAdministrativeDivisions) {
+        return tAdministrativeDivisionsMapper.insertTAdministrativeDivisions(tAdministrativeDivisions);
+    }
+
+    /**
+     * 修改【请填写功能名称】
+     *
+     * @param tAdministrativeDivisions 【请填写功能名称】
+     * @return 结果
+     */
+    @Override
+    public int updateTAdministrativeDivisions(TAdministrativeDivisions tAdministrativeDivisions) {
+        return tAdministrativeDivisionsMapper.updateTAdministrativeDivisions(tAdministrativeDivisions);
+    }
+
+    /**
+     * 批量删除【请填写功能名称】
+     *
+     * @param ids 需要删除的【请填写功能名称】主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTAdministrativeDivisionsByIds(Long[] ids) {
+        return tAdministrativeDivisionsMapper.deleteTAdministrativeDivisionsByIds(ids);
+    }
+
+    /**
+     * 删除【请填写功能名称】信息
+     *
+     * @param id 【请填写功能名称】主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTAdministrativeDivisionsById(Long id) {
+        return tAdministrativeDivisionsMapper.deleteTAdministrativeDivisionsById(id);
+    }
+}

+ 121 - 0
ruoyi-system/src/main/resources/mapper/system/TAdministrativeDivisionsMapper.xml

@@ -0,0 +1,121 @@
+<?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.ruoyi.system.mapper.TAdministrativeDivisionsMapper">
+
+    <resultMap type="TAdministrativeDivisions" id="TAdministrativeDivisionsResult">
+        <result property="id" column="id"/>
+        <result property="code" column="code"/>
+        <result property="name" column="name"/>
+        <result property="streetCode" column="streetCode"/>
+        <result property="areaCode" column="areaCode"/>
+        <result property="cityCode" column="cityCode"/>
+        <result property="provinceCode" column="provinceCode"/>
+    </resultMap>
+
+    <sql id="selectTAdministrativeDivisionsVo">
+        select id, code, name, streetCode, areaCode, cityCode, provinceCode
+        from t_administrative_divisions
+    </sql>
+
+    <select id="selectTAdministrativeDivisionsList" parameterType="TAdministrativeDivisions"
+            resultMap="TAdministrativeDivisionsResult">
+        <include refid="selectTAdministrativeDivisionsVo"/>
+        <where>
+            <if test="code != null ">and code = #{code}</if>
+            <if test="name != null  and name != ''">and name like concat('%', #{name}, '%')</if>
+            <if test="streetCode != null ">and streetCode = #{streetCode}</if>
+            <if test="areaCode != null ">and areaCode = #{areaCode}</if>
+            <if test="cityCode != null ">and cityCode = #{cityCode}</if>
+            <if test="provinceCode != null ">and provinceCode = #{provinceCode}</if>
+        </where>
+    </select>
+
+    <select id="selectTAdministrativeDivisionsById" parameterType="Long" resultMap="TAdministrativeDivisionsResult">
+        <include refid="selectTAdministrativeDivisionsVo"/>
+        where id = #{id}
+    </select>
+    <!-- 查询所有省级级(省) -->
+    <select id="selectTAdministrativeDivisionsProvinceAllList" resultMap="TAdministrativeDivisionsResult">
+        <include refid="selectTAdministrativeDivisionsVo"/>
+        where provinceCode is null
+    </select>
+    <!-- 查询所有地级(市) -->
+    <select id="selectTAdministrativeDivisionsListByProvinceCode" parameterType="Long"
+            resultMap="TAdministrativeDivisionsResult">
+        <include refid="selectTAdministrativeDivisionsVo"/>
+        where cityCode is null
+        AND
+        provinceCode = #{provinceCode}
+    </select>
+    <!-- 查询所有县级(区) -->
+    <select id="selectTAdministrativeDivisionsListByCityCode" parameterType="Long"
+            resultMap="TAdministrativeDivisionsResult">
+        <include refid="selectTAdministrativeDivisionsVo"/>
+        where areaCode is null
+        AND
+        cityCode = #{cityCode}
+    </select>
+    <!-- 查询所有乡级(镇) -->
+    <select id="selectTAdministrativeDivisionsListByAreaCode" parameterType="Long"
+            resultMap="TAdministrativeDivisionsResult">
+        <include refid="selectTAdministrativeDivisionsVo"/>
+        where streetCode is null
+        AND
+        areaCode = #{areaCode}
+    </select>
+    <!-- 查询所有居委会 -->
+    <select id="selectTAdministrativeDivisionsListByStreetCode" parameterType="Long"
+            resultMap="TAdministrativeDivisionsResult">
+        <include refid="selectTAdministrativeDivisionsVo"/>
+        where streetCode = #{streetCode}
+    </select>
+
+    <insert id="insertTAdministrativeDivisions" parameterType="TAdministrativeDivisions" useGeneratedKeys="true"
+            keyProperty="id">
+        insert into t_administrative_divisions
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="code != null">code,</if>
+            <if test="name != null and name != ''">name,</if>
+            <if test="streetCode != null">streetCode,</if>
+            <if test="areaCode != null">areaCode,</if>
+            <if test="cityCode != null">cityCode,</if>
+            <if test="provinceCode != null">provinceCode,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="code != null">#{code},</if>
+            <if test="name != null and name != ''">#{name},</if>
+            <if test="streetCode != null">#{streetCode},</if>
+            <if test="areaCode != null">#{areaCode},</if>
+            <if test="cityCode != null">#{cityCode},</if>
+            <if test="provinceCode != null">#{provinceCode},</if>
+        </trim>
+    </insert>
+
+    <update id="updateTAdministrativeDivisions" parameterType="TAdministrativeDivisions">
+        update t_administrative_divisions
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="code != null">code = #{code},</if>
+            <if test="name != null and name != ''">name = #{name},</if>
+            <if test="streetCode != null">streetCode = #{streetCode},</if>
+            <if test="areaCode != null">areaCode = #{areaCode},</if>
+            <if test="cityCode != null">cityCode = #{cityCode},</if>
+            <if test="provinceCode != null">provinceCode = #{provinceCode},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteTAdministrativeDivisionsById" parameterType="Long">
+        delete
+        from t_administrative_divisions
+        where id = #{id}
+    </delete>
+
+    <delete id="deleteTAdministrativeDivisionsByIds" parameterType="String">
+        delete from t_administrative_divisions where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>