From 3888a024732be113aff98e7ccc5a704c2792c7b5 Mon Sep 17 00:00:00 2001 From: Yen Date: Thu, 9 Mar 2023 14:30:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=A7=91=E7=9B=AE=E9=80=82?= =?UTF-8?q?=E7=94=A8=E5=8C=BA=E5=9F=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bms/controller/BmsSubjectController.java | 46 +++++++++++++++---- .../serve/modules/bms/entity/BmsSupplier.java | 19 ++++++++ .../bms/entity/vo/BmsSubjectTreeVo.java | 6 +++ .../bms/service/BmsSubjectRegionService.java | 8 ++++ .../bms/service/BmsSubjectService.java | 8 ++++ .../impl/BmsSubjectRegionServiceImpl.java | 7 +++ .../service/impl/BmsSubjectServiceImpl.java | 11 +++++ 7 files changed, 95 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectController.java index 67148782..ca9b0268 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectController.java @@ -6,10 +6,7 @@ import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.SystemModule; -import com.qs.serve.common.util.CollectionUtil; -import com.qs.serve.common.util.CopierUtil; -import com.qs.serve.common.util.PageUtil; -import com.qs.serve.common.util.TreeUtil; +import com.qs.serve.common.util.*; import com.qs.serve.modules.bms.entity.*; import com.qs.serve.modules.bms.entity.bo.BmsCostCenterBo; import com.qs.serve.modules.bms.entity.vo.BmsRegionTreeVo; @@ -48,25 +45,51 @@ public class BmsSubjectController { private BmsSubjectRegionService bmsSubjectRegionService; private BmsRegionService bmsRegionService; private BmsRegion2Service bmsRegion2Service; + private BmsSupplierService bmsSupplierService; /** * 树查询 - * @param param + * @param * @return */ @GetMapping("/tree") @PreAuthorize("hasRole('bms:subject:query')") - public R> getPage(BmsSubject param){ - LambdaQueryWrapper subjectWrapper = new LambdaQueryWrapper<>(param); - List list = bmsSubjectService.list(subjectWrapper); - List treeVoList = list.stream().map(subject->{ + public R> getPage(String supplierId){ + List subjectList; + if(StringUtils.hasText(supplierId)){ + BmsSupplier bmsSupplier = bmsSupplierService.getById(supplierId); + List subjectRegionList = bmsSubjectRegionService.listByRegionIds(bmsSupplier.listBizRegionIds(),1); + List subjectRegionList2 = bmsSubjectRegionService.listByRegionIds(bmsSupplier.listSaleRegionIds(),0); + subjectRegionList.addAll(subjectRegionList2); + //加载允许适用的科目 + List subjectIds = subjectRegionList.stream().map(BmsSubjectRegion::getSubjectId) + .distinct().collect(Collectors.toList()); + subjectList = bmsSubjectService.listByIds(subjectIds); + List parentIds = subjectList.stream().filter(a->!a.getPid().equals(0L)) + .map(BmsSubject::getPid).distinct().collect(Collectors.toList()); + if(CollectionUtil.isNotEmpty(parentIds)){ + List subjectList2 = bmsSubjectService.listByIds(parentIds); + subjectList.addAll(subjectList2); + List parentIds2 = subjectList2.stream().filter(a->!a.getPid().equals(0L)) + .map(BmsSubject::getPid).distinct().collect(Collectors.toList()); + if(CollectionUtil.isNotEmpty(parentIds2)){ + List subjectList3 = bmsSubjectService.listByIds(parentIds2); + subjectList.addAll(subjectList3); + } + } + }else { + LambdaQueryWrapper subjectWrapper = new LambdaQueryWrapper<>(); + subjectList = bmsSubjectService.list(subjectWrapper); + } + List treeVoList = subjectList.stream().map(subject->{ BmsSubjectTreeVo treeNode = CopierUtil.copy(subject,new BmsSubjectTreeVo()); treeNode.setId(subject.getId().toString()); treeNode.setParentId(subject.getPid().toString()); treeNode.setSort(0); return treeNode; }).collect(Collectors.toList()); - return R.ok(TreeUtil.buildByRecursive(treeVoList,TreeUtil.DEFAULT_PID_STRING)); + treeVoList = TreeUtil.buildByRecursive(treeVoList,TreeUtil.DEFAULT_PID_STRING); + return R.ok(treeVoList); } /** @@ -139,6 +162,9 @@ public class BmsSubjectController { subject.setPathNames(subject.getSubjectName()); }else { BmsSubject parent = bmsSubjectService.getById(subject.getPid()); + if(parent.getLevel()+1>3){ + Assert.throwEx("最多支持3级"); + } subject.setLevel(parent.getLevel()+1); subject.setPathNames(parent.getPathNames()+"_"+subject.getSubjectName()); } diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java index d78b85e1..37272a78 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java +++ b/src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java @@ -3,6 +3,7 @@ package com.qs.serve.modules.bms.entity; import java.math.BigDecimal; import java.time.LocalDateTime; import java.io.Serializable; +import java.util.ArrayList; import java.util.List; import com.baomidou.mybatisplus.annotation.*; @@ -237,6 +238,24 @@ public class BmsSupplier implements Serializable { @TableField(exist = false) private Integer pageSize; + public List listBizRegionIds(){ + List list = new ArrayList<>(); + list.add(this.getRegion2First()); + list.add(this.getRegion2Second()); + list.add(this.getRegion2Third()); + list.add(this.getRegion2Fourthly()); + return list; + } + + public List listSaleRegionIds(){ + List list = new ArrayList<>(); + list.add(this.getRegionFirst()); + list.add(this.getRegionSecond()); + list.add(this.getRegionThird()); + list.add(this.getRegionFourthly()); + return list; + } + public HisUserSupplier toHisUserSupplier(String userId,Integer type){ HisUserSupplier userSupplier = new HisUserSupplier(); userSupplier.setUserId(userId); diff --git a/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsSubjectTreeVo.java b/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsSubjectTreeVo.java index 247b0a32..7726a144 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsSubjectTreeVo.java +++ b/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsSubjectTreeVo.java @@ -32,6 +32,12 @@ public class BmsSubjectTreeVo extends TreeNode { @NotNull(message = "父级id不能为空") private Long pid; + /** 销售区域:0全部可见;1-部分可见;2-全部不可见 */ + private Integer saleRegionFlag; + + /** 行政区域:0全部可见;1-部分可见;2-全部不可见 */ + private Integer bizRegionFlag; + /** 备注 */ @Length(max = 255,message = "备注长度不能超过255字") private String remark; diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsSubjectRegionService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsSubjectRegionService.java index 34d066a2..2b6a63d1 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/BmsSubjectRegionService.java +++ b/src/main/java/com/qs/serve/modules/bms/service/BmsSubjectRegionService.java @@ -25,5 +25,13 @@ public interface BmsSubjectRegionService extends IService { */ List listBySubjectId(Long subjectId,Integer regionType); + /** + * 获取适用区域 + * @param regionIds + * @param regionType 类型:0=销售区域;1=行政区域 + * @return + */ + List listByRegionIds(List regionIds,Integer regionType); + } diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsSubjectService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsSubjectService.java index 11ae1ec0..13755fef 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/BmsSubjectService.java +++ b/src/main/java/com/qs/serve/modules/bms/service/BmsSubjectService.java @@ -12,6 +12,14 @@ import java.util.List; */ public interface BmsSubjectService extends IService { + /** + * id加载列表 + * @param ids + * @param noInIds 不在列表 + * @return + */ + List listByIds(List ids,List noInIds); + List listChild(Long pid); void updatePathNameByParent(BmsSubject subject); diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectRegionServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectRegionServiceImpl.java index 41f13eb9..7847adda 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectRegionServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectRegionServiceImpl.java @@ -37,5 +37,12 @@ public class BmsSubjectRegionServiceImpl extends ServiceImpl listByRegionIds(List regionIds, Integer regionType) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.in(BmsSubjectRegion::getRegionId,regionIds); + lqw.eq(BmsSubjectRegion::getType,regionType); + return this.list(lqw); + } } diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectServiceImpl.java index 2aedbbe5..fb982674 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectServiceImpl.java @@ -3,6 +3,7 @@ package com.qs.serve.modules.bms.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.qs.serve.common.util.Assert; +import com.qs.serve.common.util.CollectionUtil; import com.qs.serve.modules.bms.entity.BmsRegion2; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -25,6 +26,16 @@ import java.util.stream.Collectors; @AllArgsConstructor public class BmsSubjectServiceImpl extends ServiceImpl implements BmsSubjectService { + @Override + public List listByIds(List ids, List noInIds) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.in(BmsSubject::getId,ids); + if(CollectionUtil.isNotEmpty(noInIds)){ + lqw.notIn(BmsSubject::getId,noInIds); + } + return this.list(lqw); + } + @Override public List listChild(Long pid) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>();