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.BmsRegion2;
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.vo.BmsRegionTreeVo;
import com.qs.serve.modules.bms.service.*;
@ -60,72 +61,102 @@ public class BmsRegion2Controller {
* 树查询当前负责人
* @return
*/
private List<BmsRegionTreeVo> treeByCurrentUser(){
private List<BmsRegionTreeVo> treeByCurrentUser(String supplierId){
String userId = AuthContextUtils.getSysUserId();
LambdaQueryWrapper<BmsRegionUser> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsRegionUser::getType,1);
lqw.eq(BmsRegionUser::getUserId,userId);
List<BmsRegionUser> regionUsers = bmsRegionUserService.list(lqw);
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){
List<BmsRegion2> regionList = bmsRegion2Service.listByIds(regionIds);
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> list2 = listMap.get(2)==null?new ArrayList<>():listMap.get(2);
List<BmsRegion2> list3 = listMap.get(3)==null?new ArrayList<>():listMap.get(3);
List<BmsRegion2> list4 = listMap.get(3)==null?new ArrayList<>():listMap.get(4);
if (list4!=null){
list4.forEach(obj4->{
boolean exist = false;
for (BmsRegion2 obj3 : list3) {
if(obj3.getId().equals(obj4.getPid())){
List<BmsRegion2> childList = obj3.getChildNodes()==null?new ArrayList<>():obj3.getChildNodes();
childList.add(obj4);
obj3.setChildNodes(childList);
exist = true;
break;
}
}
if(!exist){
list3.add(obj4);
}
});
}
list3.forEach(obj3->{
boolean exist = false;
for (BmsRegion2 obj2 : list2) {
if(obj2.getId().equals(obj3.getPid())){
List<BmsRegion2> childList = obj2.getChildNodes()==null?new ArrayList<>():obj2.getChildNodes();
childList.add(obj3);
obj2.setChildNodes(childList);
exist = true;
break;
}
}
if(!exist){
list2.add(obj3);
}
});
list2.forEach(obj2->{
boolean exist = false;
for (BmsRegion2 obj1 : list1) {
if(obj1.getId().equals(obj2.getPid())){
List<BmsRegion2> childList = obj1.getChildNodes()==null?new ArrayList<>():obj1.getChildNodes();
childList.add(obj2);
obj1.setChildNodes(childList);
exist = true;
break;
}
}
if(!exist){
list1.add(obj2);
}
});
return toTreeNodeList(list1);
List<BmsRegion2> list4 = listMap.get(4)==null?new ArrayList<>():listMap.get(4);
List<BmsRegion2> allList = new ArrayList<>();
if(CollectionUtil.isNotEmpty(list1)){
allList.addAll(list1);
List<String> lv01Pids = list1.stream().map(BmsRegion2::getId).collect(Collectors.toList());
List<BmsRegion2> level02List = bmsRegion2Service.listChild(lv01Pids);
if(CollectionUtil.isNotEmpty(level02List)){
allList.addAll(level02List);
//list2 去重
list2 = removeExistList(list2, level02List);
List<String> lv02Pids = level02List.stream().map(BmsRegion2::getId).collect(Collectors.toList());
List<BmsRegion2> level03List = bmsRegion2Service.listChild(lv02Pids);
if(CollectionUtil.isNotEmpty(level03List)){
allList.addAll(level03List);
//list3 去重
list3 = removeExistList(list3,level03List);
List<String> lv03Pids = level03List.stream().map(BmsRegion2::getId).collect(Collectors.toList());
List<BmsRegion2> level04List = bmsRegion2Service.listChild(lv03Pids);
//list4 去重
list4 = removeExistList(list4,level04List);
allList.addAll(level04List);
}
}
}
if(CollectionUtil.isNotEmpty(list2)){
List<String> lv02Pids = list2.stream().map(BmsRegion2::getId).collect(Collectors.toList());
List<BmsRegion2> level03List = bmsRegion2Service.listChild(lv02Pids);
if(CollectionUtil.isNotEmpty(level03List)){
allList.addAll(level03List);
//list3 去重
list3 = removeExistList(list3,level03List);
List<String> lv03Pids = level03List.stream().map(BmsRegion2::getId).collect(Collectors.toList());
List<BmsRegion2> level04List = bmsRegion2Service.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(BmsRegion2::getId).collect(Collectors.toList());
List<BmsRegion2> level04List = bmsRegion2Service.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 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
@ -147,29 +178,23 @@ public class BmsRegion2Controller {
*/
@GetMapping("/tree")
@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)){
return R.ok(treeByCurrentUser());
return R.ok(treeByCurrentUser(supplierId));
}
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<>();
for (BmsRegion2 region2 : list) {
BmsRegionTreeVo treeNode = CopierUtil.copy(region2,new BmsRegionTreeVo());
treeNode.setId(region2.getId());
treeNode.setParentId(region2.getPid());
treeNode.setSort(0);
if(CollectionUtil.isNotEmpty(region2.getChildNodes())){
List<BmsRegionTreeVo> childList = toTreeNodeList(region2.getChildNodes());
for (BmsRegionTreeVo treeVo : childList) {
treeNode.addChildren(treeVo);
}
}
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")
@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)){
return R.ok(treeByCurrentUser());
return R.ok(treeByCurrentUser(supplierId));
}
return R.ok(bmsRegionService.getTree(listUserFlag!=null&&listUserFlag.equals(1)));
}
public List<BmsRegionTreeVo> treeByCurrentUser(){
public List<BmsRegionTreeVo> treeByCurrentUser(String supplierId){
String userId = AuthContextUtils.getSysUserId();
LambdaQueryWrapper<BmsRegionUser> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsRegionUser::getType,0);
lqw.eq(BmsRegionUser::getUserId,userId);
List<BmsRegionUser> regionUsers = bmsRegionUserService.list(lqw);
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){
List<BmsRegion> regionList = bmsRegionService.listByIds(regionIds);
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> list2 = listMap.get(2)==null?new ArrayList<>():listMap.get(2);
List<BmsRegion> list3 = listMap.get(3)==null?new ArrayList<>():listMap.get(3);
list3.forEach(obj3->{
boolean exist = false;
for (BmsRegion obj2 : list2) {
if(obj2.getId().equals(obj3.getPid())){
List<BmsRegion> childList = obj2.getChildNodes()==null?new ArrayList<>():obj2.getChildNodes();
childList.add(obj3);
obj2.setChildNodes(childList);
exist = true;
break;
}
}
if(!exist){
list2.add(obj3);
}
});
list2.forEach(obj2->{
boolean exist = false;
for (BmsRegion obj1 : list1) {
if(obj1.getId().equals(obj2.getPid())){
List<BmsRegion> childList = obj1.getChildNodes()==null?new ArrayList<>():obj1.getChildNodes();
childList.add(obj2);
obj1.setChildNodes(childList);
exist = true;
break;
}
}
if(!exist){
list1.add(obj2);
}
});
List<BmsRegion> list4 = listMap.get(4)==null?new ArrayList<>():listMap.get(4);
List<BmsRegion> allList = new ArrayList<>();
if(CollectionUtil.isNotEmpty(list1)){
allList.addAll(list1);
List<String> lv01Pids = list1.stream().map(BmsRegion::getId).collect(Collectors.toList());
List<BmsRegion> level02List = bmsRegionService.listChild(lv01Pids);
if(CollectionUtil.isNotEmpty(level02List)){
allList.addAll(level02List);
//list2 去重
list2 = removeExistList(list2, level02List);
List<String> lv02Pids = level02List.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);
}
}
}
if(CollectionUtil.isNotEmpty(list2)){
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;
}
private List<BmsRegionTreeVo> toTreeNodeList(List<BmsRegion> list){
List<BmsRegionTreeVo> treeVoList = new ArrayList<>();
for (BmsRegion region : list) {
BmsRegionTreeVo treeNode = CopierUtil.copy(region,new BmsRegionTreeVo());
treeNode.setId(region.getId());
treeNode.setParentId(region.getPid());
treeNode.setSort(0);
if(CollectionUtil.isNotEmpty(region.getChildNodes())){
List<BmsRegionTreeVo> childList = toTreeNodeList(region.getChildNodes());
for (BmsRegionTreeVo treeVo : childList) {
treeNode.addChildren(treeVo);
/**
* 移除包含的列
* @param settingList
* @param byPidLoadList
* @return
*/
private List<BmsRegion> removeExistList(List<BmsRegion> settingList, List<BmsRegion> 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;
}
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);
}
return treeVoList;
return TreeUtil.build(treeVoList,TreeUtil.DEFAULT_PID_STRING);
}
/**
* 根据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<BmsRegion2> listChild(String pid);
List<BmsRegion2> listChild(List<String> pid);
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(List<String> pids);
BmsRegion getByCode(String code);
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);
}
@Override
public List<BmsRegion2> listChild(List<String> pid) {
LambdaQueryWrapper<BmsRegion2> lqw = new LambdaQueryWrapper<>();
lqw.in(BmsRegion2::getPid,pid);
return this.list(lqw);
}
@Override
public BmsRegion2 getByCode(String code) {
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);
}
@Override
public List<BmsRegion> listChild(List<String> pid) {
LambdaQueryWrapper<BmsRegion> lqw = new LambdaQueryWrapper<>();
lqw.in(BmsRegion::getPid,pid);
return this.list(lqw);
}
@Override
public BmsRegion getByCode(String code) {
LambdaQueryWrapper<BmsRegion> lqw = new LambdaQueryWrapper<>();

Loading…
Cancel
Save