From 12ac0bea25ac834fa2d703f37fdd9f2e2ce7a907 Mon Sep 17 00:00:00 2001 From: Yen Date: Wed, 24 Jul 2024 09:23:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8C=BA=E5=9F=9F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bms/controller/BmsRegion2Controller.java | 55 +++++++++++++++++++ .../bms/controller/BmsRegionController.java | 47 ++++++++++++++-- 2 files changed, 98 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java index c48f27a8..7a3a371c 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java @@ -18,11 +18,13 @@ import com.qs.serve.modules.bms.entity.bo.BmsRegionBatchBo; import com.qs.serve.modules.bms.entity.so.BmsBizRegionTreeSo; import com.qs.serve.modules.bms.entity.vo.BmsRegionTreeVo; import com.qs.serve.modules.bms.service.*; +import com.qs.serve.modules.sys.service.SysPostUserService; import com.qs.serve.modules.tbs.common.TbsCenterType; import com.qs.serve.modules.tbs.entity.TbsBudget; import com.qs.serve.modules.tbs.service.TbsBudgetService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.Nullable; import org.springframework.cache.annotation.Cacheable; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -51,6 +53,7 @@ public class BmsRegion2Controller { private BmsRegionUserService bmsRegionUserService; private TbsBudgetService tbsBudgetService; private BirBudgetTargetService birBudgetTargetService; + private SysPostUserService postUserService; /** * 列表 @@ -82,6 +85,38 @@ public class BmsRegion2Controller { regionIds.addAll(supplier.listBizRegionIds()); } } + return buildTreeSortUpward(regionIds); + } + + /** + * 树查询(当前负责人及区域负责人) + * @return + */ + private List treeByCurrentUserAndRegionMgr(String supplierId){ + String userId = AuthContextUtils.getSysUserId(); + List userIds = postUserService.listByChildIds(userId); + userIds.add(userId); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(BmsRegionUser::getType,1); + lqw.in(BmsRegionUser::getUserId,userIds); + List regionUsers = bmsRegionUserService.list(lqw); + List regionIds = regionUsers.stream().map(BmsRegionUser::getRegionId).collect(Collectors.toList()); + if(StringUtils.hasText(supplierId)){ + BmsSupplier supplier = bmsSupplierService.getById(supplierId); + if(supplier.listBizRegionIds()!=null){ + regionIds.addAll(supplier.listBizRegionIds()); + } + } + return buildTreeSortUpward(regionIds); + } + + /** + * 向上创建树数据 + * @param regionIds + * @return + */ + @Nullable + private List buildTreeSortUpward(List regionIds) { if(regionIds.size()>0){ List regionList = bmsRegion2Service.listByIds(regionIds); Map> listMap = regionList.stream().collect(Collectors.groupingBy(BmsRegion2::getLevel)); @@ -189,6 +224,7 @@ public class BmsRegion2Controller { @GetMapping("/tree") @PreAuthorize("hasRole('bms:region:query')") public R> getTree(BmsBizRegionTreeSo so){ + // 用于审批辅助 if(so.getLoadByCurrent()!=null&&so.getLoadByCurrent().equals(2)) { BirBudgetTargetSo query = new BirBudgetTargetSo(); query.setLoadType(so.getType()); @@ -210,6 +246,7 @@ public class BmsRegion2Controller { } return R.ok(treeVoList); } + // 当前负责人 if(so.getLoadByCurrent()!=null&&so.getLoadByCurrent().equals(1)){ if(so.getOnlySupplierFlag()!=null&&so.getOnlySupplierFlag().equals(1)){ BmsSupplier supplier = bmsSupplierService.getById(so.getSupplierId()); @@ -227,6 +264,24 @@ public class BmsRegion2Controller { return R.ok(treeByCurrentUser(so.getSupplierId())); } } + // 当前负责人及区域负责人 + if(so.getLoadByCurrent()!=null&&so.getLoadByCurrent().equals(3)){ + if(so.getOnlySupplierFlag()!=null&&so.getOnlySupplierFlag().equals(1)){ + BmsSupplier supplier = bmsSupplierService.getById(so.getSupplierId()); + List rlist = bmsRegion2Service.listByIds(supplier.listBizRegionIds()); + List treeVoList = new ArrayList<>(); + for (BmsRegion2 region2 : rlist) { + BmsRegionTreeVo treeNode = CopierUtil.copy(region2,new BmsRegionTreeVo()); + treeNode.setId(region2.getId()); + treeNode.setParentId(region2.getPid()); + treeNode.setSort(0); + treeVoList.add(treeNode); + } + return R.ok(treeVoList); + }else { + return R.ok(treeByCurrentUserAndRegionMgr(so.getSupplierId())); + } + } return R.ok(bmsRegion2Service.getTree(so.getListUserFlag()!=null&&so.getListUserFlag().equals(1))); } diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java index 84bda940..61fbcf11 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java @@ -18,11 +18,13 @@ import com.qs.serve.modules.bms.entity.vo.BmsRegionTreeVo; import com.qs.serve.modules.bms.service.*; import com.qs.serve.modules.his.entity.HisUserSupplier; import com.qs.serve.modules.his.service.HisUserSupplierService; +import com.qs.serve.modules.sys.service.SysPostUserService; import com.qs.serve.modules.tbs.common.TbsCenterType; import com.qs.serve.modules.tbs.entity.TbsBudget; import com.qs.serve.modules.tbs.service.TbsBudgetService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.Nullable; import org.springframework.cache.annotation.Cacheable; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -55,6 +57,7 @@ public class BmsRegionController { private TbsBudgetService tbsBudgetService; private BmsCostCenterService bmsCostCenterService; private BirBudgetTargetService birBudgetTargetService; + private SysPostUserService postUserService; /** * 列表 @@ -115,13 +118,24 @@ public class BmsRegionController { if(so.getStopFlag()==null){ so.setStopFlag(0); } + // 当前负责人 if(so.getLoadByCurrent()!=null&&so.getLoadByCurrent().equals(1)){ return R.ok(treeByCurrentUser(so.getSupplierId(),so.getStopFlag())); } + // 当前负责人及下属负责人 + if(so.getLoadByCurrent()!=null&&so.getLoadByCurrent().equals(3)){ + return R.ok(treeByCurrentUserAndChildUser(so.getSupplierId(),so.getStopFlag())); + } return R.ok(bmsRegionService.getTree(so.getListUserFlag()!=null&&so.getListUserFlag().equals(1), so.getStopFlag())); } + /** + * 加载当前负责人的 + * @param supplierId + * @param stopFlag + * @return + */ public List treeByCurrentUser(String supplierId,Integer stopFlag){ String userId = AuthContextUtils.getSysUserId(); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); @@ -133,8 +147,33 @@ public class BmsRegionController { BmsSupplier supplier = bmsSupplierService.getById(supplierId); regionIds.addAll(supplier.listSaleRegionIds()); } - //List hisUserSuppliers = hisUserSupplierService.selectHisSupplier(null,false); - //List supplierIds = hisUserSuppliers.stream().map(HisUserSupplier::getSupplierId).collect(Collectors.toList()); + return buildRegionTreeByRegionIds(stopFlag, regionIds); + } + + /** + * 加载当前负责人和下属的 + * @param supplierId + * @param stopFlag + * @return + */ + public List treeByCurrentUserAndChildUser(String supplierId,Integer stopFlag){ + String userId = AuthContextUtils.getSysUserId(); + List userIds = postUserService.listByChildIds(userId); + userIds.add(userId); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(BmsRegionUser::getType,0); + lqw.in(BmsRegionUser::getUserId,userIds); + List regionUsers = bmsRegionUserService.list(lqw); + List regionIds = regionUsers.stream().map(BmsRegionUser::getRegionId).collect(Collectors.toList()); + if(StringUtils.hasText(supplierId)){ + BmsSupplier supplier = bmsSupplierService.getById(supplierId); + regionIds.addAll(supplier.listSaleRegionIds()); + } + return buildRegionTreeByRegionIds(stopFlag, regionIds); + } + + @Nullable + private List buildRegionTreeByRegionIds(Integer stopFlag, List regionIds) { List supplierIds = hisUserSupplierService.selectHisSupplier(null,false); supplierIds.add(0L); List supplierList = bmsSupplierService.listByIds(supplierIds); @@ -153,7 +192,7 @@ public class BmsRegionController { List regionList = bmsRegionService.listByIds(regionIds); if(regionList.size()==0){ - return toTreeNodeList2(allSelectList,stopFlag); + return toTreeNodeList2(allSelectList, stopFlag); } List pathIds = regionList.stream().filter(b->b.getPathIds()!=null) @@ -162,7 +201,7 @@ public class BmsRegionController { .flatMap(pathId -> Arrays.stream(pathId.split("_"))) .collect(Collectors.toList()); regionList = bmsRegionService.listByIds(idList); - return toTreeNodeList2(regionList,stopFlag); + return toTreeNodeList2(regionList, stopFlag); } return null;