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 ca9b0268..e4621ffb 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 @@ -55,41 +55,52 @@ public class BmsSubjectController { @GetMapping("/tree") @PreAuthorize("hasRole('bms:subject:query')") public R> getPage(String supplierId){ - List subjectList; + List subjectList = bmsSubjectService.list(); + List treeVoList = subjectList.stream().map(subject->{ + BmsSubjectTreeVo treeNode = CopierUtil.copy(subject,new BmsSubjectTreeVo()); + treeNode.setId(subject.getId().toString()); + treeNode.setParentId(subject.getPid().toString()); + treeNode.setApiSelectAble(0); + treeNode.setSort(0); + return treeNode; + }).collect(Collectors.toList()); + treeVoList = TreeUtil.buildByRecursive(treeVoList,TreeUtil.DEFAULT_PID_STRING); 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) + List subjectIds = subjectRegionList.stream().map(a->a.getSubjectId().toString()) .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); + recursionToSetSelectAble(treeVoList, subjectIds); + } + return R.ok(treeVoList); + } + + /** + * 递归设置可选 + * @param treeVoList + * @param subjectIds + */ + private void recursionToSetSelectAble(List treeVoList, List subjectIds) { + for (Object object : treeVoList) { + BmsSubjectTreeVo subjectTreeVo = (BmsSubjectTreeVo)object; + if(subjectTreeVo.getChildren().size()==0){ + if(subjectTreeVo.getBizRegionFlag().equals(0)&&subjectTreeVo.getSaleRegionFlag().equals(0)){ + subjectTreeVo.setApiSelectAble(1); + }else { + for (String subjectId : subjectIds) { + if(subjectTreeVo.getId().equals(subjectId)){ + subjectTreeVo.setApiSelectAble(1); + break; + } + } } + }else { + recursionToSetSelectAble(subjectTreeVo.getChildren(),subjectIds); } - }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()); - treeVoList = TreeUtil.buildByRecursive(treeVoList,TreeUtil.DEFAULT_PID_STRING); - return R.ok(treeVoList); } /** 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 7726a144..51358e0f 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 @@ -42,5 +42,7 @@ public class BmsSubjectTreeVo extends TreeNode { @Length(max = 255,message = "备注长度不能超过255字") private String remark; + /** supplierId,编辑客户费用申请时,科目是否可选 */ + private Integer apiSelectAble; }