|
@@ -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;
|
|
|
})
|