Browse Source

成本中心(区域添加供应商负责人的区域)

contract
Yen 2 years ago
parent
commit
b35e13921e
  1. 145
      src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java
  2. 135
      src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java
  3. 1
      src/main/java/com/qs/serve/modules/bms/service/BmsRegion2Service.java
  4. 2
      src/main/java/com/qs/serve/modules/bms/service/BmsRegionService.java
  5. 7
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegion2ServiceImpl.java
  6. 8
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegionServiceImpl.java

145
src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java

@ -11,6 +11,7 @@ import com.qs.serve.common.util.*;
import com.qs.serve.modules.bms.entity.BmsRegion; import com.qs.serve.modules.bms.entity.BmsRegion;
import com.qs.serve.modules.bms.entity.BmsRegion2; import com.qs.serve.modules.bms.entity.BmsRegion2;
import com.qs.serve.modules.bms.entity.BmsRegionUser; import com.qs.serve.modules.bms.entity.BmsRegionUser;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.entity.bo.BmsRegionBatchBo; import com.qs.serve.modules.bms.entity.bo.BmsRegionBatchBo;
import com.qs.serve.modules.bms.entity.vo.BmsRegionTreeVo; import com.qs.serve.modules.bms.entity.vo.BmsRegionTreeVo;
import com.qs.serve.modules.bms.service.*; import com.qs.serve.modules.bms.service.*;
@ -60,72 +61,102 @@ public class BmsRegion2Controller {
* 树查询当前负责人 * 树查询当前负责人
* @return * @return
*/ */
private List<BmsRegionTreeVo> treeByCurrentUser(){ private List<BmsRegionTreeVo> treeByCurrentUser(String supplierId){
String userId = AuthContextUtils.getSysUserId(); String userId = AuthContextUtils.getSysUserId();
LambdaQueryWrapper<BmsRegionUser> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<BmsRegionUser> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsRegionUser::getType,1); lqw.eq(BmsRegionUser::getType,1);
lqw.eq(BmsRegionUser::getUserId,userId); lqw.eq(BmsRegionUser::getUserId,userId);
List<BmsRegionUser> regionUsers = bmsRegionUserService.list(lqw); List<BmsRegionUser> regionUsers = bmsRegionUserService.list(lqw);
List<String> regionIds = regionUsers.stream().map(BmsRegionUser::getRegionId).collect(Collectors.toList()); List<String> regionIds = regionUsers.stream().map(BmsRegionUser::getRegionId).collect(Collectors.toList());
if(StringUtils.hasText(supplierId)){
BmsSupplier supplier = bmsSupplierService.getById(supplierId);
regionIds.addAll(supplier.listBizRegionIds());
}
if(regionIds.size()>0){ if(regionIds.size()>0){
List<BmsRegion2> regionList = bmsRegion2Service.listByIds(regionIds); List<BmsRegion2> regionList = bmsRegion2Service.listByIds(regionIds);
Map<Integer,List<BmsRegion2>> listMap = regionList.stream().collect(Collectors.groupingBy(BmsRegion2::getLevel)); Map<Integer,List<BmsRegion2>> listMap = regionList.stream().collect(Collectors.groupingBy(BmsRegion2::getLevel));
List<BmsRegion2> list1 = listMap.get(1)==null?new ArrayList<>():listMap.get(1); List<BmsRegion2> list1 = listMap.get(1)==null?new ArrayList<>():listMap.get(1);
List<BmsRegion2> list2 = listMap.get(2)==null?new ArrayList<>():listMap.get(2); List<BmsRegion2> list2 = listMap.get(2)==null?new ArrayList<>():listMap.get(2);
List<BmsRegion2> list3 = listMap.get(3)==null?new ArrayList<>():listMap.get(3); List<BmsRegion2> list3 = listMap.get(3)==null?new ArrayList<>():listMap.get(3);
List<BmsRegion2> list4 = listMap.get(3)==null?new ArrayList<>():listMap.get(4); List<BmsRegion2> list4 = listMap.get(4)==null?new ArrayList<>():listMap.get(4);
if (list4!=null){
list4.forEach(obj4->{ List<BmsRegion2> allList = new ArrayList<>();
boolean exist = false; if(CollectionUtil.isNotEmpty(list1)){
for (BmsRegion2 obj3 : list3) { allList.addAll(list1);
if(obj3.getId().equals(obj4.getPid())){ List<String> lv01Pids = list1.stream().map(BmsRegion2::getId).collect(Collectors.toList());
List<BmsRegion2> childList = obj3.getChildNodes()==null?new ArrayList<>():obj3.getChildNodes(); List<BmsRegion2> level02List = bmsRegion2Service.listChild(lv01Pids);
childList.add(obj4); if(CollectionUtil.isNotEmpty(level02List)){
obj3.setChildNodes(childList); allList.addAll(level02List);
exist = true; //list2 去重
break; list2 = removeExistList(list2, level02List);
} List<String> lv02Pids = level02List.stream().map(BmsRegion2::getId).collect(Collectors.toList());
} List<BmsRegion2> level03List = bmsRegion2Service.listChild(lv02Pids);
if(!exist){ if(CollectionUtil.isNotEmpty(level03List)){
list3.add(obj4); allList.addAll(level03List);
} //list3 去重
}); list3 = removeExistList(list3,level03List);
} List<String> lv03Pids = level03List.stream().map(BmsRegion2::getId).collect(Collectors.toList());
list3.forEach(obj3->{ List<BmsRegion2> level04List = bmsRegion2Service.listChild(lv03Pids);
boolean exist = false; //list4 去重
for (BmsRegion2 obj2 : list2) { list4 = removeExistList(list4,level04List);
if(obj2.getId().equals(obj3.getPid())){ allList.addAll(level04List);
List<BmsRegion2> childList = obj2.getChildNodes()==null?new ArrayList<>():obj2.getChildNodes(); }
childList.add(obj3); }
obj2.setChildNodes(childList); }
exist = true;
break; if(CollectionUtil.isNotEmpty(list2)){
} List<String> lv02Pids = list2.stream().map(BmsRegion2::getId).collect(Collectors.toList());
} List<BmsRegion2> level03List = bmsRegion2Service.listChild(lv02Pids);
if(!exist){ if(CollectionUtil.isNotEmpty(level03List)){
list2.add(obj3); allList.addAll(level03List);
} //list3 去重
}); list3 = removeExistList(list3,level03List);
list2.forEach(obj2->{ List<String> lv03Pids = level03List.stream().map(BmsRegion2::getId).collect(Collectors.toList());
boolean exist = false; List<BmsRegion2> level04List = bmsRegion2Service.listChild(lv03Pids);
for (BmsRegion2 obj1 : list1) { //list4 去重
if(obj1.getId().equals(obj2.getPid())){ list4 = removeExistList(list4,level04List);
List<BmsRegion2> childList = obj1.getChildNodes()==null?new ArrayList<>():obj1.getChildNodes(); allList.addAll(level04List);
childList.add(obj2); }
obj1.setChildNodes(childList); list2.forEach(a->a.setPid("0"));
exist = true; allList.addAll(list2);
break; }
}
} if(CollectionUtil.isNotEmpty(list3)){
if(!exist){ List<String> lv03Pids = list3.stream().map(BmsRegion2::getId).collect(Collectors.toList());
list1.add(obj2); List<BmsRegion2> level04List = bmsRegion2Service.listChild(lv03Pids);
} //list4 去重
}); list4 = removeExistList(list4,level04List);
return toTreeNodeList(list1); allList.addAll(level04List);
list3.forEach(a->a.setPid("0"));
allList.addAll(list3);
}
if(CollectionUtil.isNotEmpty(list4)){
//list4 去重
list4.forEach(a->a.setPid("0"));
allList.addAll(list4);
}
return toTreeNodeList2(allList);
} }
return null; return null;
} }
/**
* 移除包含的列
* @param settingList
* @param byPidLoadList
* @return
*/
private List<BmsRegion2> removeExistList(List<BmsRegion2> settingList, List<BmsRegion2> byPidLoadList) {
if(CollectionUtil.isNotEmpty(settingList)&&CollectionUtil.isNotEmpty(byPidLoadList)){
settingList = settingList.stream().filter(a->
byPidLoadList.stream().noneMatch(b->b.getId().equals(a.getId()))
).collect(Collectors.toList());
}
return settingList;
}
/** /**
* 翻页查询 * 翻页查询
* @param param * @param param
@ -147,29 +178,23 @@ public class BmsRegion2Controller {
*/ */
@GetMapping("/tree") @GetMapping("/tree")
@PreAuthorize("hasRole('bms:region:query')") @PreAuthorize("hasRole('bms:region:query')")
public R<List<BmsRegionTreeVo>> getTree(Integer listUserFlag,Integer loadByCurrent){ public R<List<BmsRegionTreeVo>> getTree(Integer listUserFlag,Integer loadByCurrent,String supplierId){
if(loadByCurrent!=null&&loadByCurrent.equals(1)){ if(loadByCurrent!=null&&loadByCurrent.equals(1)){
return R.ok(treeByCurrentUser()); return R.ok(treeByCurrentUser(supplierId));
} }
return R.ok(bmsRegion2Service.getTree(listUserFlag!=null&&listUserFlag.equals(1))); return R.ok(bmsRegion2Service.getTree(listUserFlag!=null&&listUserFlag.equals(1)));
} }
private List<BmsRegionTreeVo> toTreeNodeList(List<BmsRegion2> list){ private List<BmsRegionTreeVo> toTreeNodeList2(List<BmsRegion2> list){
List<BmsRegionTreeVo> treeVoList = new ArrayList<>(); List<BmsRegionTreeVo> treeVoList = new ArrayList<>();
for (BmsRegion2 region2 : list) { for (BmsRegion2 region2 : list) {
BmsRegionTreeVo treeNode = CopierUtil.copy(region2,new BmsRegionTreeVo()); BmsRegionTreeVo treeNode = CopierUtil.copy(region2,new BmsRegionTreeVo());
treeNode.setId(region2.getId()); treeNode.setId(region2.getId());
treeNode.setParentId(region2.getPid()); treeNode.setParentId(region2.getPid());
treeNode.setSort(0); treeNode.setSort(0);
if(CollectionUtil.isNotEmpty(region2.getChildNodes())){
List<BmsRegionTreeVo> childList = toTreeNodeList(region2.getChildNodes());
for (BmsRegionTreeVo treeVo : childList) {
treeNode.addChildren(treeVo);
}
}
treeVoList.add(treeNode); treeVoList.add(treeNode);
} }
return treeVoList; return TreeUtil.build(treeVoList,TreeUtil.DEFAULT_PID_STRING);
} }
/** /**

135
src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java

@ -80,81 +80,124 @@ public class BmsRegionController {
*/ */
@GetMapping("/tree") @GetMapping("/tree")
@PreAuthorize("hasRole('bms:region:query')") @PreAuthorize("hasRole('bms:region:query')")
public R<List<BmsRegionTreeVo>> getTree(Integer listUserFlag,Integer loadByCurrent){ public R<List<BmsRegionTreeVo>> getTree(Integer listUserFlag,Integer loadByCurrent,String supplierId){
if(loadByCurrent!=null&&loadByCurrent.equals(1)){ if(loadByCurrent!=null&&loadByCurrent.equals(1)){
return R.ok(treeByCurrentUser()); return R.ok(treeByCurrentUser(supplierId));
} }
return R.ok(bmsRegionService.getTree(listUserFlag!=null&&listUserFlag.equals(1))); return R.ok(bmsRegionService.getTree(listUserFlag!=null&&listUserFlag.equals(1)));
} }
public List<BmsRegionTreeVo> treeByCurrentUser(){ public List<BmsRegionTreeVo> treeByCurrentUser(String supplierId){
String userId = AuthContextUtils.getSysUserId(); String userId = AuthContextUtils.getSysUserId();
LambdaQueryWrapper<BmsRegionUser> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<BmsRegionUser> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsRegionUser::getType,0); lqw.eq(BmsRegionUser::getType,0);
lqw.eq(BmsRegionUser::getUserId,userId); lqw.eq(BmsRegionUser::getUserId,userId);
List<BmsRegionUser> regionUsers = bmsRegionUserService.list(lqw); List<BmsRegionUser> regionUsers = bmsRegionUserService.list(lqw);
List<String> regionIds = regionUsers.stream().map(BmsRegionUser::getRegionId).collect(Collectors.toList()); List<String> regionIds = regionUsers.stream().map(BmsRegionUser::getRegionId).collect(Collectors.toList());
if(StringUtils.hasText(supplierId)){
BmsSupplier supplier = bmsSupplierService.getById(supplierId);
regionIds.addAll(supplier.listSaleRegionIds());
}
if(regionIds.size()>0){ if(regionIds.size()>0){
List<BmsRegion> regionList = bmsRegionService.listByIds(regionIds); List<BmsRegion> regionList = bmsRegionService.listByIds(regionIds);
Map<Integer,List<BmsRegion>> listMap = regionList.stream().collect(Collectors.groupingBy(BmsRegion::getLevel)); Map<Integer,List<BmsRegion>> listMap = regionList.stream().collect(Collectors.groupingBy(BmsRegion::getLevel));
List<BmsRegion> list1 = listMap.get(1)==null?new ArrayList<>():listMap.get(1); List<BmsRegion> list1 = listMap.get(1)==null?new ArrayList<>():listMap.get(1);
List<BmsRegion> list2 = listMap.get(2)==null?new ArrayList<>():listMap.get(2); List<BmsRegion> list2 = listMap.get(2)==null?new ArrayList<>():listMap.get(2);
List<BmsRegion> list3 = listMap.get(3)==null?new ArrayList<>():listMap.get(3); List<BmsRegion> list3 = listMap.get(3)==null?new ArrayList<>():listMap.get(3);
list3.forEach(obj3->{ List<BmsRegion> list4 = listMap.get(4)==null?new ArrayList<>():listMap.get(4);
boolean exist = false;
for (BmsRegion obj2 : list2) { List<BmsRegion> allList = new ArrayList<>();
if(obj2.getId().equals(obj3.getPid())){ if(CollectionUtil.isNotEmpty(list1)){
List<BmsRegion> childList = obj2.getChildNodes()==null?new ArrayList<>():obj2.getChildNodes(); allList.addAll(list1);
childList.add(obj3); List<String> lv01Pids = list1.stream().map(BmsRegion::getId).collect(Collectors.toList());
obj2.setChildNodes(childList); List<BmsRegion> level02List = bmsRegionService.listChild(lv01Pids);
exist = true; if(CollectionUtil.isNotEmpty(level02List)){
break; allList.addAll(level02List);
} //list2 去重
} list2 = removeExistList(list2, level02List);
if(!exist){ List<String> lv02Pids = level02List.stream().map(BmsRegion::getId).collect(Collectors.toList());
list2.add(obj3); List<BmsRegion> level03List = bmsRegionService.listChild(lv02Pids);
} if(CollectionUtil.isNotEmpty(level03List)){
}); allList.addAll(level03List);
list2.forEach(obj2->{ //list3 去重
boolean exist = false; list3 = removeExistList(list3,level03List);
for (BmsRegion obj1 : list1) { List<String> lv03Pids = level03List.stream().map(BmsRegion::getId).collect(Collectors.toList());
if(obj1.getId().equals(obj2.getPid())){ List<BmsRegion> level04List = bmsRegionService.listChild(lv03Pids);
List<BmsRegion> childList = obj1.getChildNodes()==null?new ArrayList<>():obj1.getChildNodes(); //list4 去重
childList.add(obj2); list4 = removeExistList(list4,level04List);
obj1.setChildNodes(childList); allList.addAll(level04List);
exist = true; }
break; }
} }
}
if(!exist){ if(CollectionUtil.isNotEmpty(list2)){
list1.add(obj2); List<String> lv02Pids = list2.stream().map(BmsRegion::getId).collect(Collectors.toList());
} List<BmsRegion> level03List = bmsRegionService.listChild(lv02Pids);
}); if(CollectionUtil.isNotEmpty(level03List)){
allList.addAll(level03List);
//list3 去重
list3 = removeExistList(list3,level03List);
List<String> lv03Pids = level03List.stream().map(BmsRegion::getId).collect(Collectors.toList());
List<BmsRegion> level04List = bmsRegionService.listChild(lv03Pids);
//list4 去重
list4 = removeExistList(list4,level04List);
allList.addAll(level04List);
}
list2.forEach(a->a.setPid("0"));
allList.addAll(list2);
}
if(CollectionUtil.isNotEmpty(list3)){
List<String> lv03Pids = list3.stream().map(BmsRegion::getId).collect(Collectors.toList());
List<BmsRegion> level04List = bmsRegionService.listChild(lv03Pids);
//list4 去重
list4 = removeExistList(list4,level04List);
allList.addAll(level04List);
list3.forEach(a->a.setPid("0"));
allList.addAll(list3);
}
if(CollectionUtil.isNotEmpty(list4)){
//list4 去重
list4.forEach(a->a.setPid("0"));
allList.addAll(list4);
}
return toTreeNodeList2(allList);
return toTreeNodeList(list1);
} }
return null; return null;
} }
private List<BmsRegionTreeVo> toTreeNodeList(List<BmsRegion> list){ /**
List<BmsRegionTreeVo> treeVoList = new ArrayList<>(); * 移除包含的列
for (BmsRegion region : list) { * @param settingList
BmsRegionTreeVo treeNode = CopierUtil.copy(region,new BmsRegionTreeVo()); * @param byPidLoadList
treeNode.setId(region.getId()); * @return
treeNode.setParentId(region.getPid()); */
treeNode.setSort(0); private List<BmsRegion> removeExistList(List<BmsRegion> settingList, List<BmsRegion> byPidLoadList) {
if(CollectionUtil.isNotEmpty(region.getChildNodes())){ if(CollectionUtil.isNotEmpty(settingList)&&CollectionUtil.isNotEmpty(byPidLoadList)){
List<BmsRegionTreeVo> childList = toTreeNodeList(region.getChildNodes()); settingList = settingList.stream().filter(a->
for (BmsRegionTreeVo treeVo : childList) { byPidLoadList.stream().noneMatch(b->b.getId().equals(a.getId()))
treeNode.addChildren(treeVo); ).collect(Collectors.toList());
} }
return settingList;
} }
private List<BmsRegionTreeVo> toTreeNodeList2(List<BmsRegion> list){
List<BmsRegionTreeVo> treeVoList = new ArrayList<>();
for (BmsRegion region2 : list) {
BmsRegionTreeVo treeNode = CopierUtil.copy(region2,new BmsRegionTreeVo());
treeNode.setId(region2.getId());
treeNode.setParentId(region2.getPid());
treeNode.setSort(0);
treeVoList.add(treeNode); treeVoList.add(treeNode);
} }
return treeVoList; return TreeUtil.build(treeVoList,TreeUtil.DEFAULT_PID_STRING);
} }
/** /**
* 根据ID查询 * 根据ID查询
* @param id * @param id

1
src/main/java/com/qs/serve/modules/bms/service/BmsRegion2Service.java

@ -17,6 +17,7 @@ public interface BmsRegion2Service extends IService<BmsRegion2> {
List<BmsRegionTreeVo> getTree(boolean listUserFlag); List<BmsRegionTreeVo> getTree(boolean listUserFlag);
List<BmsRegion2> listChild(String pid); List<BmsRegion2> listChild(String pid);
List<BmsRegion2> listChild(List<String> pid);
BmsRegion2 getByCode(String code); BmsRegion2 getByCode(String code);

2
src/main/java/com/qs/serve/modules/bms/service/BmsRegionService.java

@ -18,6 +18,8 @@ public interface BmsRegionService extends IService<BmsRegion> {
List<BmsRegion> listChild(String pid); List<BmsRegion> listChild(String pid);
List<BmsRegion> listChild(List<String> pids);
BmsRegion getByCode(String code); BmsRegion getByCode(String code);
BmsRegion getByName(String name,Integer level); BmsRegion getByName(String name,Integer level);

7
src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegion2ServiceImpl.java

@ -106,6 +106,13 @@ public class BmsRegion2ServiceImpl extends ServiceImpl<BmsRegion2Mapper,BmsRegio
return this.list(lqw); return this.list(lqw);
} }
@Override
public List<BmsRegion2> listChild(List<String> pid) {
LambdaQueryWrapper<BmsRegion2> lqw = new LambdaQueryWrapper<>();
lqw.in(BmsRegion2::getPid,pid);
return this.list(lqw);
}
@Override @Override
public BmsRegion2 getByCode(String code) { public BmsRegion2 getByCode(String code) {
LambdaQueryWrapper<BmsRegion2> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<BmsRegion2> lqw = new LambdaQueryWrapper<>();

8
src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegionServiceImpl.java

@ -115,6 +115,14 @@ public class BmsRegionServiceImpl extends ServiceImpl<BmsRegionMapper,BmsRegion>
return this.list(lqw); return this.list(lqw);
} }
@Override
public List<BmsRegion> listChild(List<String> pid) {
LambdaQueryWrapper<BmsRegion> lqw = new LambdaQueryWrapper<>();
lqw.in(BmsRegion::getPid,pid);
return this.list(lqw);
}
@Override @Override
public BmsRegion getByCode(String code) { public BmsRegion getByCode(String code) {
LambdaQueryWrapper<BmsRegion> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<BmsRegion> lqw = new LambdaQueryWrapper<>();

Loading…
Cancel
Save