Browse Source

添加科目适用区域

contract
Yen 2 years ago
parent
commit
9fbe4f6aba
  1. 59
      src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectController.java
  2. 2
      src/main/java/com/qs/serve/modules/bms/entity/vo/BmsSubjectTreeVo.java

59
src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectController.java

@ -55,41 +55,52 @@ public class BmsSubjectController {
@GetMapping("/tree") @GetMapping("/tree")
@PreAuthorize("hasRole('bms:subject:query')") @PreAuthorize("hasRole('bms:subject:query')")
public R<List<BmsSubjectTreeVo>> getPage(String supplierId){ public R<List<BmsSubjectTreeVo>> getPage(String supplierId){
List<BmsSubject> subjectList; List<BmsSubject> subjectList = bmsSubjectService.list();
List<BmsSubjectTreeVo> 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)){ if(StringUtils.hasText(supplierId)){
BmsSupplier bmsSupplier = bmsSupplierService.getById(supplierId); BmsSupplier bmsSupplier = bmsSupplierService.getById(supplierId);
List<BmsSubjectRegion> subjectRegionList = bmsSubjectRegionService.listByRegionIds(bmsSupplier.listBizRegionIds(),1); List<BmsSubjectRegion> subjectRegionList = bmsSubjectRegionService.listByRegionIds(bmsSupplier.listBizRegionIds(),1);
List<BmsSubjectRegion> subjectRegionList2 = bmsSubjectRegionService.listByRegionIds(bmsSupplier.listSaleRegionIds(),0); List<BmsSubjectRegion> subjectRegionList2 = bmsSubjectRegionService.listByRegionIds(bmsSupplier.listSaleRegionIds(),0);
subjectRegionList.addAll(subjectRegionList2); subjectRegionList.addAll(subjectRegionList2);
//加载允许适用的科目 //加载允许适用的科目
List<Long> subjectIds = subjectRegionList.stream().map(BmsSubjectRegion::getSubjectId) List<String> subjectIds = subjectRegionList.stream().map(a->a.getSubjectId().toString())
.distinct().collect(Collectors.toList()); .distinct().collect(Collectors.toList());
subjectList = bmsSubjectService.listByIds(subjectIds); recursionToSetSelectAble(treeVoList, subjectIds);
List<Long> parentIds = subjectList.stream().filter(a->!a.getPid().equals(0L))
.map(BmsSubject::getPid).distinct().collect(Collectors.toList());
if(CollectionUtil.isNotEmpty(parentIds)){
List<BmsSubject> subjectList2 = bmsSubjectService.listByIds(parentIds);
subjectList.addAll(subjectList2);
List<Long> parentIds2 = subjectList2.stream().filter(a->!a.getPid().equals(0L))
.map(BmsSubject::getPid).distinct().collect(Collectors.toList());
if(CollectionUtil.isNotEmpty(parentIds2)){
List<BmsSubject> subjectList3 = bmsSubjectService.listByIds(parentIds2);
subjectList.addAll(subjectList3);
} }
return R.ok(treeVoList);
} }
/**
* 递归设置可选
* @param treeVoList
* @param subjectIds
*/
private void recursionToSetSelectAble(List<?> treeVoList, List<String> 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 { }else {
LambdaQueryWrapper<BmsSubject> subjectWrapper = new LambdaQueryWrapper<>(); for (String subjectId : subjectIds) {
subjectList = bmsSubjectService.list(subjectWrapper); if(subjectTreeVo.getId().equals(subjectId)){
subjectTreeVo.setApiSelectAble(1);
break;
}
}
}
}else {
recursionToSetSelectAble(subjectTreeVo.getChildren(),subjectIds);
}
} }
List<BmsSubjectTreeVo> 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);
} }
/** /**

2
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字") @Length(max = 255,message = "备注长度不能超过255字")
private String remark; private String remark;
/** supplierId,编辑客户费用申请时,科目是否可选 */
private Integer apiSelectAble;
} }

Loading…
Cancel
Save