|
@@ -1,17 +1,29 @@
|
|
|
package com.ankaibei.workFlow.webadmin.api;
|
|
|
|
|
|
+import com.ankaibei.workFlow.webadmin.upms.model.SysRegion;
|
|
|
+import com.ankaibei.workFlow.webadmin.upms.service.SysRegionService;
|
|
|
import com.ankaibei.workFlow.webadmin.utils.GaoDeWebUtil;
|
|
|
import com.ankaibei.workflow.api.AreaApi;
|
|
|
import com.ankaibei.workflow.vo.AreaInfo;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import io.jsonwebtoken.lang.Collections;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.util.ObjectUtils;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@RestController
|
|
|
@RequestMapping("/foreign/admin/area")
|
|
|
public class AreaApiService implements AreaApi {
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private SysRegionService sysRegionService;
|
|
|
|
|
|
@Override
|
|
|
@RequestMapping("/getInfoLikeKeywordsAndSubdistrict")
|
|
@@ -19,16 +31,105 @@ public class AreaApiService implements AreaApi {
|
|
|
return GaoDeWebUtil.getInfoLikeKeywordsAndSubdistrict(keywords, subdistrict);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 查询省份信息
|
|
|
+ */
|
|
|
@Override
|
|
|
@RequestMapping("/getProvinces")
|
|
|
public List<AreaInfo> getProvinces() {
|
|
|
- return GaoDeWebUtil.getProvinces();
|
|
|
+
|
|
|
+ QueryWrapper<SysRegion> qw = new QueryWrapper();
|
|
|
+ qw.eq("level", "province");
|
|
|
+ List<SysRegion> list = sysRegionService.list(qw);
|
|
|
+ if (!Collections.isEmpty(list)) {
|
|
|
+ return list.stream().map(o -> {
|
|
|
+ AreaInfo areaInfo = new AreaInfo();
|
|
|
+ BeanUtils.copyProperties(o, areaInfo);
|
|
|
+ return areaInfo;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ return new ArrayList<>();
|
|
|
+// return GaoDeWebUtil.getProvinces();
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ // 根据父编码获取子集合
|
|
|
@Override
|
|
|
@RequestMapping("/getCity")
|
|
|
public List<AreaInfo> getCity(String keywords) {
|
|
|
- return GaoDeWebUtil.getCity(keywords);
|
|
|
+ if (StringUtils.isBlank(keywords)) {
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+ List<SysRegion> list = sysRegionService.list();
|
|
|
+ if (!Collections.isEmpty(list)) {
|
|
|
+ List<AreaInfo> collect = list.stream().filter(fo -> {
|
|
|
+ if (fo.getAdcode().equals(keywords) || fo.getName().contains(keywords)) {
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }).filter(o -> o.getLevel().equals("province"))
|
|
|
+ .map(o -> {
|
|
|
+ AreaInfo areaInfo = new AreaInfo();
|
|
|
+ BeanUtils.copyProperties(o, areaInfo);
|
|
|
+ return areaInfo;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ List<AreaInfo> areaInfos = buildData(collect, list);
|
|
|
+// return areaInfos;
|
|
|
+ // 构建树
|
|
|
+ return buildTree(areaInfos, list);
|
|
|
+ }
|
|
|
+ return new ArrayList<>();
|
|
|
+// return GaoDeWebUtil.getCity(keywords);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 构建树
|
|
|
+ *
|
|
|
+ * @param areaInfos 满足条件的子区域集合
|
|
|
+ * @param list 全部行政区域
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<AreaInfo> buildTree(List<AreaInfo> areaInfos, List<SysRegion> list) {
|
|
|
+ if (areaInfos.size() > 0) {
|
|
|
+ for (AreaInfo areaInfo : areaInfos) {
|
|
|
+ List<AreaInfo> collect1 = list.stream()
|
|
|
+ .filter(o -> o.getParentAdcode().equals(areaInfo.getAdcode()))
|
|
|
+ .map(o -> {
|
|
|
+ AreaInfo ai = new AreaInfo();
|
|
|
+ BeanUtils.copyProperties(o, ai);
|
|
|
+ return ai;
|
|
|
+ })
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ areaInfo.setDistricts(collect1);
|
|
|
+ if (!ObjectUtils.isEmpty(collect1) && collect1.size() > 0) {
|
|
|
+ buildTree(collect1, list);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return areaInfos;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 构建数据
|
|
|
+ *
|
|
|
+ * @param collect 满足条件的父集合
|
|
|
+ * @param list 全部行政区域
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<AreaInfo> buildData(List<AreaInfo> collect, List<SysRegion> list) {
|
|
|
+ List<AreaInfo> rlist = new ArrayList<>();
|
|
|
+ for (AreaInfo areaInfo : collect) {
|
|
|
+ List<AreaInfo> collect1 = list.stream().filter(o -> o.getParentAdcode().equals(areaInfo.getAdcode()))
|
|
|
+ .map(o -> {
|
|
|
+ AreaInfo ai = new AreaInfo();
|
|
|
+ BeanUtils.copyProperties(o, ai);
|
|
|
+ return ai;
|
|
|
+ })
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ rlist.addAll(collect1);
|
|
|
+ }
|
|
|
+ return rlist;
|
|
|
}
|
|
|
|
|
|
}
|