yangyb 2 долоо хоног өмнө
parent
commit
473c54b0f4

+ 2 - 2
operating-service/src/main/java/com/txz/operating/controller/DivisionsController.java

@@ -124,8 +124,8 @@ public class DivisionsController {
 
     @PostMapping("/treeList")
     @ApiOperation(value = "获取树列表")
-    public Result<List<AreaTreeVo>> treeList(@RequestParam(required = false) String name) {
-        List<AreaTreeVo> treedList = divisionsService.treeList(name);
+    public Result<List<AreaTreeVo>> treeList(@RequestParam(required = false) String name, @RequestParam(required = false) Integer pid) {
+        List<AreaTreeVo> treedList = divisionsService.treeList(name, pid);
         return Result.success(treedList);
     }
 }

+ 1 - 1
operating-service/src/main/java/com/txz/operating/service/DivisionsService.java

@@ -17,5 +17,5 @@ public interface DivisionsService extends Service<Divisions> {
      *
      * @return
      */
-    List<AreaTreeVo> treeList(String name);
+    List<AreaTreeVo> treeList(String name, Integer pid);
 }

+ 36 - 8
operating-service/src/main/java/com/txz/operating/service/impl/DivisionsServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.txz.operating.core.AbstractService;
+import com.txz.operating.core.ServiceException;
 import com.txz.operating.dao.DivisionsMapper;
 import com.txz.operating.model.Districts;
 import com.txz.operating.model.Divisions;
@@ -42,7 +43,7 @@ public class DivisionsServiceImpl extends AbstractService<Divisions> implements
     private UnionsService unionsService;
 
     @Override
-    public List<AreaTreeVo> treeList(String name) {
+    public List<AreaTreeVo> treeList(String name, Integer pid) {
         List<Divisions> allTree = findAll();
         if (CollectionUtils.isEmpty(allTree)) {
             return Collections.emptyList();
@@ -53,6 +54,7 @@ public class DivisionsServiceImpl extends AbstractService<Divisions> implements
                     AreaTreeVo vo = new AreaTreeVo();
                     BeanUtil.copyProperties(divisions, vo);
                     vo.setLevel(1);
+                    vo.setPid(0);
                     return vo;
                 })
                 .collect(Collectors.toList());
@@ -66,25 +68,48 @@ public class DivisionsServiceImpl extends AbstractService<Divisions> implements
                     .orElse(null);
             if (root == null) {
                 Districts districts = districtsService.findBy("name", name);
-                if (districts != null) {
+                if (districts != null && districts.getDivisionId().equals(pid)) {
                     root = new AreaTreeVo();
                     BeanUtil.copyProperties(districts, root);
+                    root.setPid(districts.getDivisionId());
                     root.setLevel(2);
                 }
             }
             if (root == null) {
-                Upazilas upazilas = upazilasService.findBy("name", name);
-                if (upazilas != null) {
+                Condition upazilasCondition = new Condition(Upazilas.class);
+                Example.Criteria upazilasCriteria = upazilasCondition.createCriteria();
+                upazilasCriteria.andEqualTo("districtId", pid);
+                upazilasCriteria.andEqualTo("name", name);
+                List<Upazilas> upazilasList = upazilasService.findByCondition(upazilasCondition);
+                if (upazilasList.size() > 1 && pid == null) {
+                    throw new ServiceException("当前地区有多个,请输入上级");
+                }
+                upazilasList = upazilasList.stream()
+                        .filter(unions -> unions.getDistrictId().equals(pid))
+                        .collect(Collectors.toList());
+                if (upazilasList.size() == 1) {
                     root = new AreaTreeVo();
-                    BeanUtil.copyProperties(upazilas, root);
+                    BeanUtil.copyProperties(upazilasList.get(0), root);
+                    root.setPid(upazilasList.get(0).getDistrictId());
                     root.setLevel(3);
                 }
             }
             if (root == null) {
-                Unions unions = unionsService.findBy("name", name);
-                if (unions != null) {
+                Condition unionsCondition = new Condition(Unions.class);
+                Example.Criteria unionsCriteria = unionsCondition.createCriteria();
+                unionsCriteria.andEqualTo("upazillaId", pid);
+                unionsCriteria.andEqualTo("name", name);
+                List<Unions> unionsList = unionsService.findByCondition(unionsCondition);
+                if (unionsList.size() > 1 && pid == null) {
+                    throw new ServiceException("当前地区有多个,请输入上级");
+                }
+                unionsList = unionsList.stream()
+                        .filter(unions -> unions.getUpazillaId().equals(pid))
+                        .collect(Collectors.toList());
+                if (unionsList.size() == 1) {
                     root = new AreaTreeVo();
-                    BeanUtil.copyProperties(unions, root);
+                    BeanUtil.copyProperties(unionsList.get(0), root);
+                    root.setPid(unionsList.get(0).getUpazillaId());
                     root.setLevel(4);
                 }
             }
@@ -120,6 +145,7 @@ public class DivisionsServiceImpl extends AbstractService<Divisions> implements
                         AreaTreeVo vo = new AreaTreeVo();
                         BeanUtil.copyProperties(districts, vo);
                         vo.setLevel(2);
+                        vo.setPid(districts.getDivisionId());
                         return vo;
                     })
                     .collect(Collectors.toList());
@@ -132,6 +158,7 @@ public class DivisionsServiceImpl extends AbstractService<Divisions> implements
                     .map(upazilas -> {
                         AreaTreeVo vo = new AreaTreeVo();
                         BeanUtil.copyProperties(upazilas, vo);
+                        vo.setPid(upazilas.getDistrictId());
                         vo.setLevel(3);
                         return vo;
                     })
@@ -146,6 +173,7 @@ public class DivisionsServiceImpl extends AbstractService<Divisions> implements
                     .map(unions -> {
                         AreaTreeVo vo = new AreaTreeVo();
                         BeanUtil.copyProperties(unions, vo);
+                        vo.setPid(unions.getUpazillaId());
                         vo.setLevel(4);
                         return vo;
                     })

+ 3 - 1
operating-service/src/main/java/com/txz/operating/web/vo/AreaTreeVo.java

@@ -8,7 +8,9 @@ import java.util.List;
 @Data
 public class AreaTreeVo {
 
-    private Long id;
+    private Integer id;
+
+    private Integer pid;
 
     @ApiModelProperty("内容")
     private String name;