Browse Source

区域列表查询

hexiao 2 years ago
parent
commit
d2abdfb1a2

+ 94 - 0
purchase-admin/src/main/java/com/ozs/web/controller/system/SysRegionController.java

@@ -0,0 +1,94 @@
+package com.ozs.web.controller.system;
+
+
+import com.ozs.common.core.controller.BaseController;
+import com.ozs.common.core.domain.AjaxResult;
+import com.ozs.common.core.domain.model.LoginUser;
+import com.ozs.system.domain.vo.SysRegionVO;
+import com.ozs.system.service.SysRegionService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+
+/**
+ * @author
+ * @version 1.0.0 创建于 2019-12-04
+ **/
+@RestController
+@Api(value = "SysRegionController", tags = {"行政区划管理"})
+@Slf4j
+@RequestMapping("/system/region")
+public class SysRegionController extends BaseController {
+
+    @Resource
+    private SysRegionService sysRegionService;
+
+    @ApiOperation(value = "获取省列表不限权", notes = "获取省列表不限权")
+    @GetMapping(value = "/getProvinceListNoneLimit", produces = "application/json;charset=utf-8")
+    public AjaxResult getProvinceList(HttpServletRequest request) {
+        List<SysRegionVO> list = this.sysRegionService.geAdministrativeDivisionList(null, 1);
+        return success(list);
+    }
+
+    @ApiOperation(value = "获取地级市列表不限权", notes = "获取地级市列表不限权")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "provinceId", value = "省区划ID", required = true)
+    })
+    @GetMapping(value = "/getCityListNoneLimit", produces = "application/json;charset=utf-8")
+    public AjaxResult getCityList(HttpServletRequest request,
+                                  @RequestParam(value = "provinceId", required = true)
+                                          Long provinceId) {
+        List<SysRegionVO> list = this.sysRegionService.geAdministrativeDivisionList(provinceId, 2);
+        return success(list);
+    }
+
+    @ApiOperation(value = "获取区县列表不限权", notes = "获取区县列表不限权")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "cityId", value = "地级市ID", required = true)
+    })
+    @GetMapping(value = "/getDistrictListNoneLimit", produces = "application/json;charset=utf-8")
+    public AjaxResult getDistrictList(HttpServletRequest request,
+                                      @RequestParam(value = "cityId", required = true)
+                                              Long cityId) {
+        List<SysRegionVO> list = this.sysRegionService.geAdministrativeDivisionList(cityId, 3);
+        return success(list);
+    }
+
+
+    @ApiOperation(value = "获取父级编码列表,省/市/县 -test", notes = "获取父级编码列表,省/市/县 -test")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "header", required = true, name = "token", dataType = "String", value = "token验证信息"),
+            @ApiImplicitParam(paramType = "query", name = "code", value = "行政区划编码", required = true)
+    })
+    @GetMapping(value = "/getParentAdministrativeDivisionCodeList", produces = "application/json;charset=utf-8")
+    public AjaxResult getParentAdministrativeDivisionCodeList(HttpServletRequest request,
+                                                              @RequestParam(value = "code", required = true)
+                                                                      String code) {
+
+        List<String> list = this.sysRegionService.getParentAdministrativeDivisionCodeList(code, true);
+        return success(list);
+
+    }
+
+    @ApiOperation(value = "获取父级名称列表,省/市/县 -test", notes = "获取父级名称列表,省/市/县 -test")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "header", required = true, name = "token", dataType = "String", value = "token验证信息"),
+            @ApiImplicitParam(paramType = "query", name = "code", value = "行政区划编码", required = true)
+    })
+    @GetMapping(value = "/getParentAdministrativeDivisionNames", produces = "application/json;charset=utf-8")
+    public AjaxResult getParentAdministrativeDivisionNames(HttpServletRequest request,
+                                                           @RequestParam(value = "code", required = true)
+                                                                   String code){
+            String list = this.sysRegionService.getParentAdministrativeDivisionNames(code);
+            return success(list);
+    }
+
+}

+ 60 - 0
purchase-system/src/main/java/com/ozs/system/domain/SysRegion.java

@@ -0,0 +1,60 @@
+package com.ozs.system.domain;
+
+
+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 io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * 行政区划表(GtAdministrativeDivision)实体类
+ *
+ * @author makejava
+ * @since 2022-05-27 10:06:42
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName("sys_region")
+@ApiModel(value = "行政区划表", description = "")
+public class SysRegion implements Serializable {
+
+    private static final long serialVersionUID = -29268323465542897L;
+
+    @TableId(value = "ID", type = IdType.AUTO)
+    private Long id;
+
+
+    @ApiModelProperty("行政区划")
+    @TableField("ADMINISTRATIVE_DIVISION")
+    private String administrativeDivision;
+
+
+    @ApiModelProperty("父节点")
+    @TableField("PID")
+    private Long pid;
+
+
+    @ApiModelProperty("代码")
+    @TableField("CODE")
+    private String code;
+
+
+    @ApiModelProperty("等级(0中国,1省/直辖市,2地级市,3区县)")
+    @TableField("LEVEL")
+    private Integer level;
+
+
+    @ApiModelProperty("汇总状态,0不需要, 1待汇总")
+    @TableField("COLLECT_STATUS")
+    private String collectStatus;
+
+
+}

+ 46 - 0
purchase-system/src/main/java/com/ozs/system/domain/vo/SysRegionVO.java

@@ -0,0 +1,46 @@
+package com.ozs.system.domain.vo;
+
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 行政区划表(GtAdministrativeDivision)实体类
+ *
+ * @author makejava
+ * @since 2022-05-27 10:06:42
+ */
+
+@Data
+@TableName("sys_region")
+@ApiModel(value = "行政区划表", description = "")
+public class SysRegionVO implements Serializable {
+    private static final long serialVersionUID = -98482270296164594L;
+
+    private Long id;
+
+
+    @ApiModelProperty("行政区划")
+    private String administrativeDivision;
+
+
+    @ApiModelProperty("code")
+    private String code;
+
+
+    @ApiModelProperty("pid")
+    private Long pid;
+
+
+    @ApiModelProperty("等级(0中国,1省/直辖市,2地级市,3区县)")
+    private Integer level;
+
+    @ApiModelProperty(dataType = "List",name = "children",value = "子菜单集合")
+    private List<SysRegionVO> children = new ArrayList<>();
+}

+ 11 - 0
purchase-system/src/main/java/com/ozs/system/mapper/SysRegionMapper.java

@@ -0,0 +1,11 @@
+package com.ozs.system.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ozs.system.domain.SysRegion;
+import org.apache.ibatis.annotations.Mapper;
+
+
+@Mapper
+public interface SysRegionMapper extends BaseMapper<SysRegion> {
+}

+ 17 - 0
purchase-system/src/main/java/com/ozs/system/service/ISysRegionService.java

@@ -0,0 +1,17 @@
+package com.ozs.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ozs.system.domain.SysRegion;
+import org.springframework.stereotype.Service;
+
+
+
+/**
+ *
+ * @author makejava
+ * @since 2021-05-21 00:08:38
+ */
+public interface ISysRegionService extends IService<SysRegion> {
+
+
+}

+ 141 - 0
purchase-system/src/main/java/com/ozs/system/service/SysRegionService.java

@@ -0,0 +1,141 @@
+package com.ozs.system.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.ozs.system.domain.SysRegion;
+import com.ozs.system.domain.vo.SysRegionVO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ *
+ * @author makejava
+ * @since 2021-05-21 00:08:38
+ */
+@Service
+public class SysRegionService {
+
+    @Resource
+    private ISysRegionService gtAdministrativeDivisionService;
+
+
+
+    /**
+     * 获取行政区域列表
+     * @return
+     */
+    public List<SysRegionVO> geAdministrativeDivisionList(Long parentId, int level) {
+        List<SysRegionVO> result = new ArrayList<>();
+
+        QueryWrapper<SysRegion> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(SysRegion::getLevel,level)
+                .eq(parentId != null,SysRegion::getPid,parentId)
+                .orderByAsc(SysRegion::getId);
+
+        List<SysRegion>  gtAdministrativeDivisionList = this.gtAdministrativeDivisionService.list(queryWrapper);
+        if(!ObjectUtils.isEmpty(gtAdministrativeDivisionList)){
+            gtAdministrativeDivisionList.forEach(item ->{
+                SysRegionVO vo = new SysRegionVO();
+                BeanUtils.copyProperties(item, vo);
+                result.add(vo);
+            });
+        }
+        return result;
+    }
+
+
+
+    /**
+     *  递归获取administrativeDivisionCodes 上级编码列表 省,市,区(包含自身)
+     * @return
+     */
+    public String getParentAdministrativeDivisionCodes(String administrativeDivisionCode) {
+        List<String> list = getParentAdministrativeDivisionCodeList(administrativeDivisionCode,true);
+        if(!ObjectUtils.isEmpty(list)){
+            StringBuilder sb = new StringBuilder();
+            list.forEach(item ->{
+                sb.append(item).append(",");
+            });
+            String parentAdministrativeDivisionCodes = sb.toString();
+            if (parentAdministrativeDivisionCodes.endsWith(",")) {
+                parentAdministrativeDivisionCodes = parentAdministrativeDivisionCodes.substring(0, parentAdministrativeDivisionCodes.length() - 1);
+            }
+            return parentAdministrativeDivisionCodes;
+        } else {
+            return administrativeDivisionCode;
+        }
+    }
+
+    /**
+     *  递归获取administrativeDivisionCodes 上级编码列表 省,市,区(包含自身)
+     * @return
+     */
+    public List<String> getParentAdministrativeDivisionCodeList(String administrativeDivisionCode) {
+        return getParentAdministrativeDivisionCodeList(administrativeDivisionCode,false);
+    }
+
+    /**
+     *  递归获取administrativeDivisionCodes 上级编码列表 省,市,区(包含自身)
+     * @return
+     */
+    public List<String> getParentAdministrativeDivisionCodeList(String administrativeDivisionCode,boolean hasChina) {
+        List<String> administrativeDivisionCodes = new ArrayList<>();
+        QueryWrapper<SysRegion> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(SysRegion::getCode,administrativeDivisionCode);
+        SysRegion gtAdministrativeDivision = this.gtAdministrativeDivisionService.getOne(queryWrapper);
+        if(gtAdministrativeDivision == null){
+            return null;
+        } else {
+            administrativeDivisionCodes.add(administrativeDivisionCode);
+        }
+        getParentAdministrativeDivisionCodeList(gtAdministrativeDivision.getPid(), administrativeDivisionCodes);
+
+        List<String> administrativeDivisionCodes2 = new ArrayList<>();
+       for(int i = administrativeDivisionCodes.size() - 1; i >= 0; i--){
+           administrativeDivisionCodes2.add(administrativeDivisionCodes.get(i));
+       }
+        if(hasChina){
+            administrativeDivisionCodes2.add(0,"000000");
+        }
+        return administrativeDivisionCodes2;
+    }
+
+    private void getParentAdministrativeDivisionCodeList(Long pid,List<String> administrativeDivisionCodes) {
+        SysRegion parent = this.gtAdministrativeDivisionService.getById(pid);
+        if (parent != null && 0 != parent.getLevel()) {
+            administrativeDivisionCodes.add(parent.getCode());
+            getParentAdministrativeDivisionCodeList(parent.getPid(),administrativeDivisionCodes);
+        }
+    }
+
+    /**
+     *  递归获取administrativeDivisionNames 父名称: 省/市/区,包含自身
+     * @return
+             */
+    public String getParentAdministrativeDivisionNames(String administrativeDivisionCode) {
+        QueryWrapper<SysRegion> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(SysRegion::getCode,administrativeDivisionCode);
+        SysRegion gtAdministrativeDivision = this.gtAdministrativeDivisionService.getOne(queryWrapper);
+        if(gtAdministrativeDivision == null){
+            return null;
+        }
+      return getParentAdministrativeDivisionName(gtAdministrativeDivision.getPid(),gtAdministrativeDivision.getAdministrativeDivision());
+    }
+
+    private String getParentAdministrativeDivisionName(Long pid,String pAdministrativeDivisionName) {
+        SysRegion parent = this.gtAdministrativeDivisionService.getById(pid);
+        if(parent != null && 0 != parent.getLevel()){
+            pAdministrativeDivisionName = parent.getAdministrativeDivision() + "/" + pAdministrativeDivisionName;
+            pAdministrativeDivisionName = getParentAdministrativeDivisionName(parent.getPid(),pAdministrativeDivisionName);
+        }
+
+        return pAdministrativeDivisionName;
+    }
+
+
+}

+ 12 - 0
purchase-system/src/main/java/com/ozs/system/service/impl/SysRegionServiceImpl.java

@@ -0,0 +1,12 @@
+package com.ozs.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ozs.system.domain.SysRegion;
+import com.ozs.system.mapper.SysRegionMapper;
+import com.ozs.system.service.ISysRegionService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class SysRegionServiceImpl extends ServiceImpl<SysRegionMapper, SysRegion> implements ISysRegionService {
+
+}