Browse Source

添加科目适用区域

contract
Yen 2 years ago
parent
commit
3888a02473
  1. 46
      src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectController.java
  2. 19
      src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java
  3. 6
      src/main/java/com/qs/serve/modules/bms/entity/vo/BmsSubjectTreeVo.java
  4. 8
      src/main/java/com/qs/serve/modules/bms/service/BmsSubjectRegionService.java
  5. 8
      src/main/java/com/qs/serve/modules/bms/service/BmsSubjectService.java
  6. 7
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectRegionServiceImpl.java
  7. 11
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectServiceImpl.java

46
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.dto.R;
import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.CollectionUtil; import com.qs.serve.common.util.*;
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.modules.bms.entity.*; import com.qs.serve.modules.bms.entity.*;
import com.qs.serve.modules.bms.entity.bo.BmsCostCenterBo; import com.qs.serve.modules.bms.entity.bo.BmsCostCenterBo;
import com.qs.serve.modules.bms.entity.vo.BmsRegionTreeVo; import com.qs.serve.modules.bms.entity.vo.BmsRegionTreeVo;
@ -48,25 +45,51 @@ public class BmsSubjectController {
private BmsSubjectRegionService bmsSubjectRegionService; private BmsSubjectRegionService bmsSubjectRegionService;
private BmsRegionService bmsRegionService; private BmsRegionService bmsRegionService;
private BmsRegion2Service bmsRegion2Service; private BmsRegion2Service bmsRegion2Service;
private BmsSupplierService bmsSupplierService;
/** /**
* 树查询 * 树查询
* @param param * @param
* @return * @return
*/ */
@GetMapping("/tree") @GetMapping("/tree")
@PreAuthorize("hasRole('bms:subject:query')") @PreAuthorize("hasRole('bms:subject:query')")
public R<List<BmsSubjectTreeVo>> getPage(BmsSubject param){ public R<List<BmsSubjectTreeVo>> getPage(String supplierId){
LambdaQueryWrapper<BmsSubject> subjectWrapper = new LambdaQueryWrapper<>(param); List<BmsSubject> subjectList;
List<BmsSubject> list = bmsSubjectService.list(subjectWrapper); if(StringUtils.hasText(supplierId)){
List<BmsSubjectTreeVo> treeVoList = list.stream().map(subject->{ BmsSupplier bmsSupplier = bmsSupplierService.getById(supplierId);
List<BmsSubjectRegion> subjectRegionList = bmsSubjectRegionService.listByRegionIds(bmsSupplier.listBizRegionIds(),1);
List<BmsSubjectRegion> subjectRegionList2 = bmsSubjectRegionService.listByRegionIds(bmsSupplier.listSaleRegionIds(),0);
subjectRegionList.addAll(subjectRegionList2);
//加载允许适用的科目
List<Long> subjectIds = subjectRegionList.stream().map(BmsSubjectRegion::getSubjectId)
.distinct().collect(Collectors.toList());
subjectList = bmsSubjectService.listByIds(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);
}
}
}else {
LambdaQueryWrapper<BmsSubject> subjectWrapper = new LambdaQueryWrapper<>();
subjectList = bmsSubjectService.list(subjectWrapper);
}
List<BmsSubjectTreeVo> treeVoList = subjectList.stream().map(subject->{
BmsSubjectTreeVo treeNode = CopierUtil.copy(subject,new BmsSubjectTreeVo()); BmsSubjectTreeVo treeNode = CopierUtil.copy(subject,new BmsSubjectTreeVo());
treeNode.setId(subject.getId().toString()); treeNode.setId(subject.getId().toString());
treeNode.setParentId(subject.getPid().toString()); treeNode.setParentId(subject.getPid().toString());
treeNode.setSort(0); treeNode.setSort(0);
return treeNode; return treeNode;
}).collect(Collectors.toList()); }).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()); subject.setPathNames(subject.getSubjectName());
}else { }else {
BmsSubject parent = bmsSubjectService.getById(subject.getPid()); BmsSubject parent = bmsSubjectService.getById(subject.getPid());
if(parent.getLevel()+1>3){
Assert.throwEx("最多支持3级");
}
subject.setLevel(parent.getLevel()+1); subject.setLevel(parent.getLevel()+1);
subject.setPathNames(parent.getPathNames()+"_"+subject.getSubjectName()); subject.setPathNames(parent.getPathNames()+"_"+subject.getSubjectName());
} }

19
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.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
@ -237,6 +238,24 @@ public class BmsSupplier implements Serializable {
@TableField(exist = false) @TableField(exist = false)
private Integer pageSize; private Integer pageSize;
public List<String> listBizRegionIds(){
List<String> list = new ArrayList<>();
list.add(this.getRegion2First());
list.add(this.getRegion2Second());
list.add(this.getRegion2Third());
list.add(this.getRegion2Fourthly());
return list;
}
public List<String> listSaleRegionIds(){
List<String> 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){ public HisUserSupplier toHisUserSupplier(String userId,Integer type){
HisUserSupplier userSupplier = new HisUserSupplier(); HisUserSupplier userSupplier = new HisUserSupplier();
userSupplier.setUserId(userId); userSupplier.setUserId(userId);

6
src/main/java/com/qs/serve/modules/bms/entity/vo/BmsSubjectTreeVo.java

@ -32,6 +32,12 @@ public class BmsSubjectTreeVo extends TreeNode {
@NotNull(message = "父级id不能为空") @NotNull(message = "父级id不能为空")
private Long pid; private Long pid;
/** 销售区域:0全部可见;1-部分可见;2-全部不可见 */
private Integer saleRegionFlag;
/** 行政区域:0全部可见;1-部分可见;2-全部不可见 */
private Integer bizRegionFlag;
/** 备注 */ /** 备注 */
@Length(max = 255,message = "备注长度不能超过255字") @Length(max = 255,message = "备注长度不能超过255字")
private String remark; private String remark;

8
src/main/java/com/qs/serve/modules/bms/service/BmsSubjectRegionService.java

@ -25,5 +25,13 @@ public interface BmsSubjectRegionService extends IService<BmsSubjectRegion> {
*/ */
List<BmsSubjectRegion> listBySubjectId(Long subjectId,Integer regionType); List<BmsSubjectRegion> listBySubjectId(Long subjectId,Integer regionType);
/**
* 获取适用区域
* @param regionIds
* @param regionType 类型0=销售区域1=行政区域
* @return
*/
List<BmsSubjectRegion> listByRegionIds(List<String> regionIds,Integer regionType);
} }

8
src/main/java/com/qs/serve/modules/bms/service/BmsSubjectService.java

@ -12,6 +12,14 @@ import java.util.List;
*/ */
public interface BmsSubjectService extends IService<BmsSubject> { public interface BmsSubjectService extends IService<BmsSubject> {
/**
* id加载列表
* @param ids
* @param noInIds 不在列表
* @return
*/
List<BmsSubject> listByIds(List<Long> ids,List<Long> noInIds);
List<BmsSubject> listChild(Long pid); List<BmsSubject> listChild(Long pid);
void updatePathNameByParent(BmsSubject subject); void updatePathNameByParent(BmsSubject subject);

7
src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectRegionServiceImpl.java

@ -37,5 +37,12 @@ public class BmsSubjectRegionServiceImpl extends ServiceImpl<BmsSubjectRegionMap
return this.list(lqw); return this.list(lqw);
} }
@Override
public List<BmsSubjectRegion> listByRegionIds(List<String> regionIds, Integer regionType) {
LambdaQueryWrapper<BmsSubjectRegion> lqw = new LambdaQueryWrapper<>();
lqw.in(BmsSubjectRegion::getRegionId,regionIds);
lqw.eq(BmsSubjectRegion::getType,regionType);
return this.list(lqw);
}
} }

11
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.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.util.Assert; import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.modules.bms.entity.BmsRegion2; import com.qs.serve.modules.bms.entity.BmsRegion2;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -25,6 +26,16 @@ import java.util.stream.Collectors;
@AllArgsConstructor @AllArgsConstructor
public class BmsSubjectServiceImpl extends ServiceImpl<BmsSubjectMapper,BmsSubject> implements BmsSubjectService { public class BmsSubjectServiceImpl extends ServiceImpl<BmsSubjectMapper,BmsSubject> implements BmsSubjectService {
@Override
public List<BmsSubject> listByIds(List<Long> ids, List<Long> noInIds) {
LambdaQueryWrapper<BmsSubject> lqw = new LambdaQueryWrapper<>();
lqw.in(BmsSubject::getId,ids);
if(CollectionUtil.isNotEmpty(noInIds)){
lqw.notIn(BmsSubject::getId,noInIds);
}
return this.list(lqw);
}
@Override @Override
public List<BmsSubject> listChild(Long pid) { public List<BmsSubject> listChild(Long pid) {
LambdaQueryWrapper<BmsSubject> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<BmsSubject> lqw = new LambdaQueryWrapper<>();

Loading…
Cancel
Save