Browse Source

排序优先级重构

contract
Yen 2 years ago
parent
commit
4651e3e227
  1. 6
      src/main/java/com/qs/serve/modules/bms/controller/BmsChannelController.java
  2. 10
      src/main/java/com/qs/serve/modules/bms/controller/BmsChannelPointController.java
  3. 2
      src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java
  4. 2
      src/main/java/com/qs/serve/modules/bms/controller/BmsSubjectController.java
  5. 16
      src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java
  6. 8
      src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierVisitAddressController.java
  7. 43
      src/main/java/com/qs/serve/modules/bms/controller/my/BmsChannelMyController.java
  8. 53
      src/main/java/com/qs/serve/modules/bms/controller/my/BmsChannelPointMyController.java
  9. 16
      src/main/java/com/qs/serve/modules/bms/controller/my/BmsSupplierMyController.java
  10. 4
      src/main/java/com/qs/serve/modules/bms/entity/BmsChannel.java
  11. 3
      src/main/java/com/qs/serve/modules/bms/entity/BmsChannelPoint.java
  12. 2
      src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java
  13. 2
      src/main/java/com/qs/serve/modules/bms/entity/bo/BmsChannelPointBo.java
  14. 6
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelPointServiceImpl.java
  15. 5
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsSubjectRegionServiceImpl.java
  16. 4
      src/main/java/com/qs/serve/modules/his/entity/HisUserSupplier.java
  17. 63
      src/main/java/com/qs/serve/modules/tbs/common/dto/CostSortWrapper.java
  18. 137
      src/main/java/com/qs/serve/modules/tbs/common/util/CostSortWrapperUtil.java
  19. 3
      src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java
  20. 70
      src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetApplicationService.java
  21. 4
      src/main/resources/mapper/bms/BmsSupplierMapper.xml
  22. 7
      src/main/resources/mapper/his/HisUserSupplierMapper.xml

6
src/main/java/com/qs/serve/modules/bms/controller/BmsChannelController.java

@ -8,6 +8,7 @@ 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.PageUtil; import com.qs.serve.common.util.PageUtil;
import com.qs.serve.modules.bms.common.MasterUserType; import com.qs.serve.modules.bms.common.MasterUserType;
import com.qs.serve.modules.bms.controller.my.BmsChannelMyController;
import com.qs.serve.modules.bms.entity.BmsChannelPoint; import com.qs.serve.modules.bms.entity.BmsChannelPoint;
import com.qs.serve.modules.bms.entity.BmsMasterUser; import com.qs.serve.modules.bms.entity.BmsMasterUser;
import com.qs.serve.modules.bms.entity.BmsSupplierVisitType; import com.qs.serve.modules.bms.entity.BmsSupplierVisitType;
@ -47,7 +48,7 @@ public class BmsChannelController {
private HisUserChannelPointService hisUserChannelPointService; private HisUserChannelPointService hisUserChannelPointService;
private BmsMasterUserMapper bmsMasterUserMapper; private BmsMasterUserMapper bmsMasterUserMapper;
private BmsSupplierChannelService bmsSupplierChannelService; private BmsSupplierChannelService bmsSupplierChannelService;
private BmsChannelMyController bmsChannelMyController;
/** /**
* 翻页 * 翻页
* @param param * @param param
@ -56,6 +57,9 @@ public class BmsChannelController {
@GetMapping("/page") @GetMapping("/page")
@PreAuthorize("hasRole('bms:channel:query')") @PreAuthorize("hasRole('bms:channel:query')")
public R<PageVo<BmsChannel>> getPage(BmsChannel param){ public R<PageVo<BmsChannel>> getPage(BmsChannel param){
if(param.getLoadByCurrent()!=null&&param.getLoadByCurrent().equals(1)){
return bmsChannelMyController.getPage4UnderAndMine(param);
}
PageUtil.startPage(); PageUtil.startPage();
LambdaQueryWrapper<BmsChannel> channelWrapper = new LambdaQueryWrapper<>(param); LambdaQueryWrapper<BmsChannel> channelWrapper = new LambdaQueryWrapper<>(param);
channelWrapper.orderByDesc(BmsChannel::getCreateTime); channelWrapper.orderByDesc(BmsChannel::getCreateTime);

10
src/main/java/com/qs/serve/modules/bms/controller/BmsChannelPointController.java

@ -16,6 +16,7 @@ import com.qs.serve.modules.baz.common.BazTargetTypeConsts;
import com.qs.serve.modules.baz.entity.BazVisitInfo; import com.qs.serve.modules.baz.entity.BazVisitInfo;
import com.qs.serve.modules.baz.service.BazVisitInfoService; import com.qs.serve.modules.baz.service.BazVisitInfoService;
import com.qs.serve.modules.bms.common.MasterUserType; import com.qs.serve.modules.bms.common.MasterUserType;
import com.qs.serve.modules.bms.controller.my.BmsChannelPointMyController;
import com.qs.serve.modules.bms.entity.BmsChannel; import com.qs.serve.modules.bms.entity.BmsChannel;
import com.qs.serve.modules.bms.entity.BmsRegion; import com.qs.serve.modules.bms.entity.BmsRegion;
import com.qs.serve.modules.bms.entity.BmsRegion2; import com.qs.serve.modules.bms.entity.BmsRegion2;
@ -28,6 +29,7 @@ import com.qs.serve.modules.bms.service.*;
import com.qs.serve.modules.his.service.HisUserChannelPointService; import com.qs.serve.modules.his.service.HisUserChannelPointService;
import com.qs.serve.modules.sys.common.enums.BusinessLogType; import com.qs.serve.modules.sys.common.enums.BusinessLogType;
import com.qs.serve.modules.sys.service.SysBusinessLogService; import com.qs.serve.modules.sys.service.SysBusinessLogService;
import com.qs.serve.modules.sys.service.SysPostUserService;
import com.qs.serve.modules.tbs.entity.TbsActivityChannelPoint; import com.qs.serve.modules.tbs.entity.TbsActivityChannelPoint;
import com.qs.serve.modules.tbs.service.TbsActivityChannelPointService; import com.qs.serve.modules.tbs.service.TbsActivityChannelPointService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -62,6 +64,8 @@ public class BmsChannelPointController {
private BmsChannelPointMapper channelPointMapper; private BmsChannelPointMapper channelPointMapper;
private HisUserChannelPointService hisUserChannelPointService; private HisUserChannelPointService hisUserChannelPointService;
private BmsMasterUserService bmsMasterUserService; private BmsMasterUserService bmsMasterUserService;
private SysPostUserService postUserService;
private BmsChannelPointMyController bmsChannelPointMyController;
/** /**
* 获取我负责的网点 * 获取我负责的网点
@ -71,7 +75,8 @@ public class BmsChannelPointController {
@GetMapping("/page4Visit") @GetMapping("/page4Visit")
public R<PageVo<BmsUserPoint4VisitVo>> getPage4Visit(BmsPointVisitSo param){ public R<PageVo<BmsUserPoint4VisitVo>> getPage4Visit(BmsPointVisitSo param){
String sysUserId = AuthContextUtils.getSysUserId(); String sysUserId = AuthContextUtils.getSysUserId();
List<String> userIds = Arrays.asList(sysUserId); List<String> userIds = postUserService.listByChildIds(sysUserId);
userIds.add(sysUserId);
List<BmsUserPoint4VisitVo> list = channelPointMapper.selectUserPointList4Visit(param, userIds,new RowParam(true)); List<BmsUserPoint4VisitVo> list = channelPointMapper.selectUserPointList4Visit(param, userIds,new RowParam(true));
Long count = channelPointMapper.selectCountUserPointList4Visit(param,userIds); Long count = channelPointMapper.selectCountUserPointList4Visit(param,userIds);
for (BmsUserPoint4VisitVo visitVo : list) { for (BmsUserPoint4VisitVo visitVo : list) {
@ -93,6 +98,9 @@ public class BmsChannelPointController {
@GetMapping("/page") @GetMapping("/page")
@PreAuthorize("hasRole('bms:channelPoint:query')") @PreAuthorize("hasRole('bms:channelPoint:query')")
public R<PageVo<BmsChannelPoint>> getPage(BmsChannelPoint param){ public R<PageVo<BmsChannelPoint>> getPage(BmsChannelPoint param){
if(param.getLoadByCurrent()!=null&&param.getLoadByCurrent().equals(1)){
return bmsChannelPointMyController.page4UnderAndMine(param);
}
PageUtil.startPage(); PageUtil.startPage();
List<BmsChannelPoint> list = bmsChannelPointService.selectChannelPointList(param); List<BmsChannelPoint> list = bmsChannelPointService.selectChannelPointList(param);
for (BmsChannelPoint channelPoint : list) { for (BmsChannelPoint channelPoint : list) {

2
src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java

@ -74,8 +74,10 @@ public class BmsRegion2Controller {
List<String> regionIds = regionUsers.stream().map(BmsRegionUser::getRegionId).collect(Collectors.toList()); List<String> regionIds = regionUsers.stream().map(BmsRegionUser::getRegionId).collect(Collectors.toList());
if(StringUtils.hasText(supplierId)){ if(StringUtils.hasText(supplierId)){
BmsSupplier supplier = bmsSupplierService.getById(supplierId); BmsSupplier supplier = bmsSupplierService.getById(supplierId);
if(supplier.listBizRegionIds()!=null){
regionIds.addAll(supplier.listBizRegionIds()); regionIds.addAll(supplier.listBizRegionIds());
} }
}
if(regionIds.size()>0){ if(regionIds.size()>0){
List<BmsRegion2> regionList = bmsRegion2Service.listByIds(regionIds); List<BmsRegion2> regionList = bmsRegion2Service.listByIds(regionIds);
Map<Integer,List<BmsRegion2>> listMap = regionList.stream().collect(Collectors.groupingBy(BmsRegion2::getLevel)); Map<Integer,List<BmsRegion2>> listMap = regionList.stream().collect(Collectors.groupingBy(BmsRegion2::getLevel));

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

@ -67,6 +67,7 @@ public class BmsSubjectController {
treeVoList = TreeUtil.buildByRecursive(treeVoList,TreeUtil.DEFAULT_PID_STRING); treeVoList = TreeUtil.buildByRecursive(treeVoList,TreeUtil.DEFAULT_PID_STRING);
if(StringUtils.hasText(supplierId)&&!supplierId.equals("0")){ if(StringUtils.hasText(supplierId)&&!supplierId.equals("0")){
BmsSupplier bmsSupplier = bmsSupplierService.getById(supplierId); BmsSupplier bmsSupplier = bmsSupplierService.getById(supplierId);
if(bmsSupplier!=null){
LambdaQueryWrapper<BmsSubject> subjectLqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<BmsSubject> subjectLqw = new LambdaQueryWrapper<>();
subjectLqw.eq(BmsSubject::getBizRegionFlag,0).or().eq(BmsSubject::getSaleRegionFlag,0); subjectLqw.eq(BmsSubject::getBizRegionFlag,0).or().eq(BmsSubject::getSaleRegionFlag,0);
List<BmsSubject> bmsSubjectList = bmsSubjectService.list(subjectLqw); List<BmsSubject> bmsSubjectList = bmsSubjectService.list(subjectLqw);
@ -80,6 +81,7 @@ public class BmsSubjectController {
subjectIds.addAll(subjectIds2); subjectIds.addAll(subjectIds2);
recursionToSetSelectAble(treeVoList, subjectIds); recursionToSetSelectAble(treeVoList, subjectIds);
} }
}
return R.ok(treeVoList); return R.ok(treeVoList);
} }

16
src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java

@ -19,10 +19,12 @@ import com.qs.serve.modules.bms.mapper.BmsSupplierMapper;
import com.qs.serve.modules.bms.service.*; import com.qs.serve.modules.bms.service.*;
import com.qs.serve.modules.his.entity.HisUserSupplier; import com.qs.serve.modules.his.entity.HisUserSupplier;
import com.qs.serve.modules.his.service.HisUserSupplierService; import com.qs.serve.modules.his.service.HisUserSupplierService;
import com.qs.serve.modules.sys.entity.SysPostUser;
import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.entity.bo.SysRelateSuppliersParam; import com.qs.serve.modules.sys.entity.bo.SysRelateSuppliersParam;
import com.qs.serve.modules.sys.entity.bo.SysRelateSuppliersParam2; import com.qs.serve.modules.sys.entity.bo.SysRelateSuppliersParam2;
import com.qs.serve.modules.sys.entity.dto.SysUserSimpleVo; import com.qs.serve.modules.sys.entity.dto.SysUserSimpleVo;
import com.qs.serve.modules.sys.service.SysPostUserService;
import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.tbs.common.TbsCenterType; import com.qs.serve.modules.tbs.common.TbsCenterType;
import com.qs.serve.modules.tbs.entity.TbsBudget; import com.qs.serve.modules.tbs.entity.TbsBudget;
@ -56,6 +58,7 @@ public class BmsSupplierController {
private BmsRegionService bmsRegionService; private BmsRegionService bmsRegionService;
private BmsRegion2Service bmsRegion2Service; private BmsRegion2Service bmsRegion2Service;
private SysUserService sysUserService; private SysUserService sysUserService;
private SysPostUserService sysPostUserService;
private BmsSupplierMapper bmsSupplierMapper; private BmsSupplierMapper bmsSupplierMapper;
private HisUserSupplierService hisUserSupplierService; private HisUserSupplierService hisUserSupplierService;
private RedisService redisService; private RedisService redisService;
@ -70,7 +73,13 @@ public class BmsSupplierController {
@PreAuthorize("hasRole('bms:supplier:query')") @PreAuthorize("hasRole('bms:supplier:query')")
public R<List<BmsSupplier>> getList(BmsSupplier param){ public R<List<BmsSupplier>> getList(BmsSupplier param){
String userId = param.getUserId(); String userId = param.getUserId();
if(param.getLoadByCurrent()!=null&&param.getLoadByCurrent().equals(1)){
List<String> userIds = sysPostUserService.listByChildIds(userId);
userIds.add(userId);
param.setSelectUserIds(userIds);
}else {
param.setCurrUserId(userId); param.setCurrUserId(userId);
}
List<BmsSupplier> list = bmsSupplierService.selectSupplierList(param); List<BmsSupplier> list = bmsSupplierService.selectSupplierList(param);
initSupplierList(list); initSupplierList(list);
initParentList(list); initParentList(list);
@ -95,10 +104,13 @@ public class BmsSupplierController {
public R<PageVo<BmsSupplier>> getPage(@RequestBody BmsSupplier param){ public R<PageVo<BmsSupplier>> getPage(@RequestBody BmsSupplier param){
if(param.getLoadByCurrent()!=null&&param.getLoadByCurrent().equals(1)){ if(param.getLoadByCurrent()!=null&&param.getLoadByCurrent().equals(1)){
String userId = AuthContextUtils.getSysUserId(); String userId = AuthContextUtils.getSysUserId();
//初始化
hisUserSupplierService.initByUserId(userId,false); hisUserSupplierService.initByUserId(userId,false);
HisUserSupplier userSupplier = param.toHisUserSupplier(userId,null); //初始化
List<String> userIds = sysPostUserService.listByChildIds(userId);
userIds.add(userId);
HisUserSupplier userSupplier = param.toHisUserSupplier(null,null);
LambdaQueryWrapper<HisUserSupplier> lqw = new LambdaQueryWrapper<>(userSupplier); LambdaQueryWrapper<HisUserSupplier> lqw = new LambdaQueryWrapper<>(userSupplier);
lqw.in(HisUserSupplier::getUserId,userIds);
lqw.ne(HisUserSupplier::getSupplierId,0); lqw.ne(HisUserSupplier::getSupplierId,0);
PageHelper.startPage(param.getPageNum(),param.getPageSize()); PageHelper.startPage(param.getPageNum(),param.getPageSize());
List<HisUserSupplier> list = hisUserSupplierService.list(lqw); List<HisUserSupplier> list = hisUserSupplierService.list(lqw);

8
src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierVisitAddressController.java

@ -25,6 +25,7 @@ import com.qs.serve.modules.his.mapper.HisUserSupplierMapper;
import com.qs.serve.modules.his.service.HisUserSupplierService; import com.qs.serve.modules.his.service.HisUserSupplierService;
import com.qs.serve.modules.sys.common.enums.BusinessLogType; import com.qs.serve.modules.sys.common.enums.BusinessLogType;
import com.qs.serve.modules.sys.service.SysBusinessLogService; import com.qs.serve.modules.sys.service.SysBusinessLogService;
import com.qs.serve.modules.sys.service.SysPostUserService;
import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.sys.service.SysUserService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -56,6 +57,7 @@ public class BmsSupplierVisitAddressController {
private HisUserSupplierService hisUserSupplierService; private HisUserSupplierService hisUserSupplierService;
private HisUserSupplierMapper hisUserSupplierMapper; private HisUserSupplierMapper hisUserSupplierMapper;
private BazVisitFlowService bazVisitFlowService; private BazVisitFlowService bazVisitFlowService;
private SysPostUserService sysPostUserService;
/** /**
@ -68,14 +70,16 @@ public class BmsSupplierVisitAddressController {
String userId = AuthContextUtils.getSysUserId(); String userId = AuthContextUtils.getSysUserId();
hisUserSupplierService.initByUserId(userId,false); hisUserSupplierService.initByUserId(userId,false);
HisUserSupplier userSupplier = new HisUserSupplier(); HisUserSupplier userSupplier = new HisUserSupplier();
userSupplier.setUserId(userId); //userSupplier.setUserId(userId);
userSupplier.setSupplierName(param.getSupplierName()); userSupplier.setSupplierName(param.getSupplierName());
userSupplier.setSupplierCode(param.getSupplierCode()); userSupplier.setSupplierCode(param.getSupplierCode());
userSupplier.setQueryAddress(param.getAddress()); userSupplier.setQueryAddress(param.getAddress());
userSupplier.setQueryValue(param.getSearchValue()); userSupplier.setQueryValue(param.getSearchValue());
userSupplier.setLocalX(param.getLocalX()); userSupplier.setLocalX(param.getLocalX());
userSupplier.setLocalY(param.getLocalY()); userSupplier.setLocalY(param.getLocalY());
List<String> userIds = sysPostUserService.listByChildIds(userId);
userIds.add(userId);
userSupplier.setSelectUserIds(userIds);
PageHelper.startPage(param.getPageNum(),param.getPageSize()); PageHelper.startPage(param.getPageNum(),param.getPageSize());
List<HisUserSupplierAddressVo> list = hisUserSupplierMapper.selectHisUserSupplierAddressList(userSupplier); List<HisUserSupplierAddressVo> list = hisUserSupplierMapper.selectHisUserSupplierAddressList(userSupplier);

43
src/main/java/com/qs/serve/modules/bms/controller/my/BmsChannelMyController.java

@ -58,20 +58,6 @@ public class BmsChannelMyController {
*/ */
@GetMapping("/page") @GetMapping("/page")
public R<PageVo<BmsChannel>> getPage(BmsChannel param){ public R<PageVo<BmsChannel>> getPage(BmsChannel param){
// LambdaQueryWrapper<BmsMasterUser> lqw = new LambdaQueryWrapper<>();
// lqw.eq(BmsMasterUser::getUserId, AuthContextUtils.getSysUserId());
// lqw.eq(BmsMasterUser::getType,MasterUserType.Channel);
// lqw.select(BmsMasterUser::getTargetId);
// List<BmsMasterUser> masterUsers = bmsMasterUserService.list(lqw);
// List<String> targetIds = masterUsers.stream().map(BmsMasterUser::getTargetId).distinct().collect(Collectors.toList());
// if(CollectionUtil.isEmpty(targetIds)){
// return R.byEmptyList();
// }
// PageUtil.startPage();
// LambdaQueryWrapper<BmsChannel> channelWrapper = new LambdaQueryWrapper<>(param);
// channelWrapper.orderByDesc(BmsChannel::getCreateTime);
// channelWrapper.in(BmsChannel::getId,targetIds);
// List<BmsChannel> list = bmsChannelService.list(channelWrapper);
PageUtil.startPage(); PageUtil.startPage();
List<BmsChannel> list = bmsChannelService.selectChannelList(param, Arrays.asList(AuthContextUtils.getSysUserId())); List<BmsChannel> list = bmsChannelService.selectChannelList(param, Arrays.asList(AuthContextUtils.getSysUserId()));
return R.byPageHelperList(list); return R.byPageHelperList(list);
@ -90,20 +76,21 @@ public class BmsChannelMyController {
if(CollectionUtil.isEmpty(userIds)){ if(CollectionUtil.isEmpty(userIds)){
return R.byEmptyList(); return R.byEmptyList();
} }
// LambdaQueryWrapper<BmsMasterUser> lqw = new LambdaQueryWrapper<>(); PageUtil.startPage();
// lqw.in(BmsMasterUser::getUserId, userIds); List<BmsChannel> list = bmsChannelService.selectChannelList(param, userIds);
// lqw.eq(BmsMasterUser::getType,MasterUserType.Channel); return R.byPageHelperList(list);
// lqw.select(BmsMasterUser::getTargetId); }
// List<BmsMasterUser> masterUsers = bmsMasterUserService.list(lqw);
// List<String> targetIds = masterUsers.stream().map(BmsMasterUser::getTargetId).distinct().collect(Collectors.toList()); /**
// if(CollectionUtil.isEmpty(targetIds)){ * 翻页(下属负责的渠道)
// return R.byEmptyList(); * @param param
// } * @return
// PageUtil.startPage(); */
// LambdaQueryWrapper<BmsChannel> channelWrapper = new LambdaQueryWrapper<>(param); @GetMapping("/page4UnderAndMine")
// channelWrapper.orderByDesc(BmsChannel::getCreateTime); public R<PageVo<BmsChannel>> getPage4UnderAndMine(BmsChannel param){
// channelWrapper.in(BmsChannel::getId,targetIds); String loginUserId = AuthContextUtils.getSysUserId();
// List<BmsChannel> list = bmsChannelService.list(channelWrapper); List<String> userIds = postUserService.listByChildIds(loginUserId);
userIds.add(loginUserId);
PageUtil.startPage(); PageUtil.startPage();
List<BmsChannel> list = bmsChannelService.selectChannelList(param, userIds); List<BmsChannel> list = bmsChannelService.selectChannelList(param, userIds);
return R.byPageHelperList(list); return R.byPageHelperList(list);

53
src/main/java/com/qs/serve/modules/bms/controller/my/BmsChannelPointMyController.java

@ -67,10 +67,26 @@ public class BmsChannelPointMyController {
*/ */
@GetMapping("/page") @GetMapping("/page")
public R<PageVo<BmsChannelPoint>> getPage(BmsChannelPoint param){ public R<PageVo<BmsChannelPoint>> getPage(BmsChannelPoint param){
/*param.setUserId(AuthContextUtils.getSysUserId()); List<BmsChannelPoint> list = bmsChannelPointService.selectChannelPointMyList(param, Arrays.asList(AuthContextUtils.getSysUserId()));
param.setTenantId(AuthContextUtils.getTenant()); Long count = bmsChannelPointService.selectCountChannelPointMyList(param, Arrays.asList(AuthContextUtils.getSysUserId()));
List<BmsChannelPoint> list = bmsChannelPointService.selectChannelPointMyList(param); return R.byPageList(count,list);
for (BmsChannelPoint channelPoint : list) { }
/**
* 下属负责的网店
* @param param
* @return
*/
@GetMapping("/page4Under")
public R<PageVo<BmsChannelPoint>> getPage4Under(BmsChannelPoint param){
String loginUserId = AuthContextUtils.getSysUserId();
List<String> userIds = postUserService.listByChildIds(loginUserId);
if(userIds.size() == 0){return R.byEmptyList();}
List<BmsChannelPoint> pageList = bmsChannelPointService.selectChannelPointMyList(param, userIds);
Long count = bmsChannelPointService.selectCountChannelPointMyList(param, userIds);
for (BmsChannelPoint channelPoint : pageList) {
if(StringUtils.hasText(channelPoint.getBizRegionPath())){ if(StringUtils.hasText(channelPoint.getBizRegionPath())){
String[] bizRegions = channelPoint.getBizRegionPath().split("_"); String[] bizRegions = channelPoint.getBizRegionPath().split("_");
if(bizRegions.length>0){ if(bizRegions.length>0){
@ -83,41 +99,22 @@ public class BmsChannelPointMyController {
channelPoint.setSaleRegionName(regions[regions.length-1]); channelPoint.setSaleRegionName(regions[regions.length-1]);
} }
} }
}*/
List<BmsChannelPoint> list = bmsChannelPointService.selectChannelPointMyList(param, Arrays.asList(AuthContextUtils.getSysUserId()));
Long count = bmsChannelPointService.selectCountChannelPointMyList(param, Arrays.asList(AuthContextUtils.getSysUserId()));
return R.byPageList(count,list);
} }
return R.byPageList(count,pageList);
}
/** /**
* 下属负责的网店 * 下属负责的网店
* @param param * @param param
* @return * @return
*/ */
@GetMapping("/page4Under") @GetMapping("/page4UnderAndMine")
public R<PageVo<BmsChannelPoint>> getPage4Under(BmsChannelPoint param){ public R<PageVo<BmsChannelPoint>> page4UnderAndMine(BmsChannelPoint param){
String loginUserId = AuthContextUtils.getSysUserId(); String loginUserId = AuthContextUtils.getSysUserId();
List<String> userIds = postUserService.listByChildIds(loginUserId); List<String> userIds = postUserService.listByChildIds(loginUserId);
//旧版本加载方式 userIds.add(loginUserId);
// param.setUserIdList(userIds);
// LambdaQueryWrapper<BmsRegionUser> rulqw = new LambdaQueryWrapper<>();
// rulqw.select(BmsRegionUser::getPathIds,BmsRegionUser::getId);
// rulqw.eq(BmsRegionUser::getUserId,loginUserId);
// List<BmsRegionUser> regionUserList = bmsRegionUserService.list(rulqw);
// if(CollectionUtil.isNotEmpty(regionUserList)){
// List<String> regionPaths = regionUserList.stream().map(BmsRegionUser::getPathIds)
// .filter(StringUtils::hasText).distinct().collect(Collectors.toList());
// param.setSourceIdsList(regionPaths);
// }
// PageUtil.startPage();
// param.setTenantId(AuthContextUtils.getTenant());
// List<BmsChannelPoint> list = bmsChannelPointService.selectChannelPointMyUnderList(param);
//新版本加载方式
List<BmsChannelPoint> pageList = bmsChannelPointService.selectChannelPointMyList(param, userIds); List<BmsChannelPoint> pageList = bmsChannelPointService.selectChannelPointMyList(param, userIds);
Long count = bmsChannelPointService.selectCountChannelPointMyList(param, userIds); Long count = bmsChannelPointService.selectCountChannelPointMyList(param, userIds);
for (BmsChannelPoint channelPoint : pageList) { for (BmsChannelPoint channelPoint : pageList) {
if(StringUtils.hasText(channelPoint.getBizRegionPath())){ if(StringUtils.hasText(channelPoint.getBizRegionPath())){
String[] bizRegions = channelPoint.getBizRegionPath().split("_"); String[] bizRegions = channelPoint.getBizRegionPath().split("_");

16
src/main/java/com/qs/serve/modules/bms/controller/my/BmsSupplierMyController.java

@ -70,5 +70,21 @@ public class BmsSupplierMyController {
return R.byPageHelperList(list,supplierList); return R.byPageHelperList(list,supplierList);
} }
/**
* 我的和下属的客户翻页查询
* @param param
* @return
*/
@GetMapping("/underlingAndMinePage")
public R<PageVo<BmsSupplier>> getUnderlingAndMinePage(BmsSupplier param){
List<String> childIds = postUserService.listByChildIds(AuthContextUtils.getSysUserId());
childIds.add(AuthContextUtils.getSysUserId());
param.setSelectUserIds(childIds);
param.setSelectUserIdsFlag(true);
List<HisUserSupplier> list = hisUserSupplierService.selectSupplier(param,true);
List<BmsSupplier> supplierList = list.stream().map(HisUserSupplier::toSupplier).collect(Collectors.toList());
return R.byPageHelperList(list,supplierList);
}
} }

4
src/main/java/com/qs/serve/modules/bms/entity/BmsChannel.java

@ -82,5 +82,9 @@ public class BmsChannel implements Serializable {
/** 可投放费用标识 */ /** 可投放费用标识 */
private Integer costFlag; private Integer costFlag;
/** 值=1,过滤当前用户及下属负责数据 */
@TableField(exist = false)
private Integer loadByCurrent;
} }

3
src/main/java/com/qs/serve/modules/bms/entity/BmsChannelPoint.java

@ -180,5 +180,8 @@ public class BmsChannelPoint implements Serializable {
@TableField(exist = false) @TableField(exist = false)
private List<String> userIdList; private List<String> userIdList;
/** 值=1,过滤当前用户及下属负责数据 */
@TableField(exist = false)
private Integer loadByCurrent;
} }

2
src/main/java/com/qs/serve/modules/bms/entity/BmsSupplier.java

@ -199,7 +199,7 @@ public class BmsSupplier implements Serializable {
private String searchUserCode; private String searchUserCode;
/** /**
* =1过滤当前用户负责数据 * =1过滤当前用户及下属负责数据
*/ */
@TableField(exist = false) @TableField(exist = false)
private Integer loadByCurrent; private Integer loadByCurrent;

2
src/main/java/com/qs/serve/modules/bms/entity/bo/BmsChannelPointBo.java

@ -57,11 +57,9 @@ public class BmsChannelPointBo {
private String address; private String address;
/** 销售区域id */ /** 销售区域id */
@NotNull(message = "销售区域id不能为空")
private String saleRegionId; private String saleRegionId;
/** 行政区域id */ /** 行政区域id */
@NotNull(message = "行政区域id不能为空")
private String bizRegionId; private String bizRegionId;
/** 备注 */ /** 备注 */

6
src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelPointServiceImpl.java

@ -64,14 +64,18 @@ public class BmsChannelPointServiceImpl extends ServiceImpl<BmsChannelPointMappe
if(param.getSaleRegionId()!=null){ if(param.getSaleRegionId()!=null){
BmsRegion bmsRegion = bmsRegionService.getById(param.getSaleRegionId()); BmsRegion bmsRegion = bmsRegionService.getById(param.getSaleRegionId());
if(bmsRegion!=null) {
channelPoint.setSaleRegionPath(bmsRegion.getPathNames()); channelPoint.setSaleRegionPath(bmsRegion.getPathNames());
channelPoint.setSaleRegionPathIds(bmsRegion.getPathIds()); channelPoint.setSaleRegionPathIds(bmsRegion.getPathIds());
} }
}
if(param.getBizRegionId()!=null){ if(param.getBizRegionId()!=null){
BmsRegion2 bmsRegion2 = bmsRegion2Service.getById(param.getBizRegionId()); BmsRegion2 bmsRegion2 = bmsRegion2Service.getById(param.getBizRegionId());
if(bmsRegion2!=null) {
channelPoint.setBizRegionPath(bmsRegion2.getPathNames()); channelPoint.setBizRegionPath(bmsRegion2.getPathNames());
channelPoint.setBizRegionPathIds(bmsRegion2.getPathIds()); channelPoint.setBizRegionPathIds(bmsRegion2.getPathIds());
} }
}
if(channelPoint.getId()==null){ if(channelPoint.getId()==null){
this.save(channelPoint); this.save(channelPoint);
sysBusinessLogService.buildLog4Save(BusinessLogType.Point,channelPoint.getId()+"",channelPoint.getPointCode(),channelPoint.getPointName(),null,channelPoint); sysBusinessLogService.buildLog4Save(BusinessLogType.Point,channelPoint.getId()+"",channelPoint.getPointCode(),channelPoint.getPointName(),null,channelPoint);
@ -105,7 +109,7 @@ public class BmsChannelPointServiceImpl extends ServiceImpl<BmsChannelPointMappe
masterUser.setPointCode(channelPoint.getPointCode()); masterUser.setPointCode(channelPoint.getPointCode());
bmsMasterUserMapper.updateById(masterUser); bmsMasterUserMapper.updateById(masterUser);
} }
hisUserChannelPointService.flushPoint(channelPoint.getId(),channelPoint.getSaleRegionPathIds(),channelPoint.getBizRegionPathIds()); //hisUserChannelPointService.flushPoint(channelPoint.getId(),channelPoint.getSaleRegionPathIds(),channelPoint.getBizRegionPathIds());
return true; return true;
} }

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

@ -2,6 +2,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.CollectionUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -9,6 +10,7 @@ import com.qs.serve.modules.bms.entity.BmsSubjectRegion;
import com.qs.serve.modules.bms.service.BmsSubjectRegionService; import com.qs.serve.modules.bms.service.BmsSubjectRegionService;
import com.qs.serve.modules.bms.mapper.BmsSubjectRegionMapper; import com.qs.serve.modules.bms.mapper.BmsSubjectRegionMapper;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
@ -39,6 +41,9 @@ public class BmsSubjectRegionServiceImpl extends ServiceImpl<BmsSubjectRegionMap
@Override @Override
public List<BmsSubjectRegion> listByRegionIds(List<String> regionIds, Integer regionType) { public List<BmsSubjectRegion> listByRegionIds(List<String> regionIds, Integer regionType) {
if(CollectionUtil.isEmpty(regionIds)){
return new ArrayList<>();
}
LambdaQueryWrapper<BmsSubjectRegion> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<BmsSubjectRegion> lqw = new LambdaQueryWrapper<>();
lqw.in(BmsSubjectRegion::getRegionId,regionIds); lqw.in(BmsSubjectRegion::getRegionId,regionIds);
lqw.eq(BmsSubjectRegion::getType,regionType); lqw.eq(BmsSubjectRegion::getType,regionType);

4
src/main/java/com/qs/serve/modules/his/entity/HisUserSupplier.java

@ -16,6 +16,7 @@ import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import java.util.List;
/** /**
* 供应商负责人 实体类 * 供应商负责人 实体类
@ -110,6 +111,9 @@ public class HisUserSupplier implements Serializable {
@TableField(exist = false) @TableField(exist = false)
private String queryValue; private String queryValue;
@TableField(exist = false)
private List<String> selectUserIds;
@TableField(exist = false) @TableField(exist = false)
private String addressId; private String addressId;

63
src/main/java/com/qs/serve/modules/tbs/common/dto/CostSortWrapper.java

@ -0,0 +1,63 @@
package com.qs.serve.modules.tbs.common.dto;
import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.modules.tbs.entity.TbsActivity;
import com.qs.serve.modules.tbs.entity.TbsBudget;
import com.qs.serve.modules.tbs.entity.TbsBudgetCondition;
import com.qs.serve.modules.tbs.entity.TbsScheduleItemBudget;
import lombok.Data;
import java.util.*;
/**
* 用于排序
* @author YenHex
* @since 2023/5/18
*/
@Data
public class CostSortWrapper {
Set<Long> budgetSet4Subject = new HashSet<>();
Set<Long> budgetSet4NoSubject = new HashSet<>();
Set<Long> budgetSet4Condition = new HashSet<>();
Set<Long> budgetSet4NoCondition = new HashSet<>();
Map<Long,List<TbsBudgetCondition>> activityCostConditionsOfSort = new HashMap<>();
Map<Long,List<Long>> activityAllowBudgetId;
/**
* sort of timeline,filter timeline
* key is activity_id, value is schedule list
*/
Map<Long,List<TbsScheduleItemBudget>> activityScheduleItemMap = new HashMap<>();
public void putActivityCostCondition(Long activityId, List<TbsBudgetCondition> list){
activityCostConditionsOfSort.put(activityId, list);
}
/**
* 初始化科目排序因子
* @param budgetList
*/
public void initializeBudget(List<TbsBudget> budgetList){
if(CollectionUtil.isNotEmpty(budgetList)){
for (TbsBudget budget : budgetList) {
if(budget.getSubjectId()==null||budget.getSubjectId().equals(0L)){
budgetSet4NoSubject.add(budget.getId());
}else {
budgetSet4Subject.add(budget.getId());
}
if(budget.getConditionFlag()==null||budget.getConditionFlag().equals(0)){
budgetSet4NoCondition.add(budget.getId());
}else {
budgetSet4Condition.add(budget.getId());
}
}
}
}
}

137
src/main/java/com/qs/serve/modules/tbs/common/util/CostSortWrapperUtil.java

@ -0,0 +1,137 @@
package com.qs.serve.modules.tbs.common.util;
import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.modules.tbs.common.dto.CostSortWrapper;
import com.qs.serve.modules.tbs.entity.TbsActivity;
import com.qs.serve.modules.tbs.entity.TbsBudget;
import com.qs.serve.modules.tbs.entity.TbsBudgetCondition;
import com.qs.serve.modules.tbs.entity.TbsScheduleItemBudget;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import java.time.Duration;
import java.util.*;
/**
* 用于排序
* @author YenHex
* @since 2023/5/18
*/
@Slf4j
@Data
public class CostSortWrapperUtil {
public static List<TbsScheduleItemBudget> initializeSort(TbsActivity activity, List<TbsScheduleItemBudget> list, CostSortWrapper wrapper){
List<TbsScheduleItemBudget> resultSortList = new ArrayList<>();
if(CollectionUtil.isNotEmpty(list)){
//1.科目限制>品类之间>时间区间
//2.相同品类,取纬度最小值
//3.时间区间内,区间长度取最短
//3.时间区间内,区间长度相同,取最近结束时间
List<TbsScheduleItemBudget> tmpList4Subject = new ArrayList<>();
List<TbsScheduleItemBudget> tmpList4NotSubject = new ArrayList<>();
for (TbsScheduleItemBudget scheduleItemBudget : list) {
Long budgetId = scheduleItemBudget.getBudgetId();
if(wrapper.getBudgetSet4Subject().contains(budgetId)){
tmpList4Subject.add(scheduleItemBudget);
}else{
tmpList4NotSubject.add(scheduleItemBudget);
}
}
log.debug("活动【{}】匹配有科目预算数:{},无科目预算:{}",activity.getActivityCode() ,tmpList4Subject.size() , tmpList4NotSubject.size());
if(CollectionUtil.isNotEmpty(tmpList4Subject)){
CostSortWrapperUtil.sort4Condition(activity,tmpList4Subject,resultSortList,wrapper);
}
if(CollectionUtil.isNotEmpty(tmpList4NotSubject)){
CostSortWrapperUtil.sort4Condition(activity,tmpList4NotSubject,resultSortList,wrapper);
}
}
if(resultSortList.size()!=list.size()){
log.error("排序有误");
Assert.throwEx("排序有误");
}
return resultSortList;
}
/**
* 按有无条件分割
* @param activity
* @param list
* @param result
* @param wrapper
*/
private static void sort4Condition(TbsActivity activity,List<TbsScheduleItemBudget> list,List<TbsScheduleItemBudget> result,CostSortWrapper wrapper) {
List<TbsScheduleItemBudget> tmpList4Condition = new ArrayList<>();
List<TbsScheduleItemBudget> tmpList4NoCondition = new ArrayList<>();
for (TbsScheduleItemBudget scheduleItemBudget : list) {
Long budgetId = scheduleItemBudget.getBudgetId();
if(wrapper.getBudgetSet4Condition().contains(budgetId)){
tmpList4Condition.add(scheduleItemBudget);
}else{
tmpList4NoCondition.add(scheduleItemBudget);
}
}
log.debug("活动【{}】匹配有科目预算数:{},无科目预算:{}",activity.getActivityCode() ,tmpList4Condition.size() , tmpList4NoCondition.size());
if(CollectionUtil.isNotEmpty(tmpList4Condition)){
CostSortWrapperUtil.sort4GoodsCondition(activity,tmpList4Condition,result,wrapper);
}
if(CollectionUtil.isNotEmpty(tmpList4NoCondition)){
CostSortWrapperUtil.sort4NotGoodsCondition(tmpList4NoCondition,result,wrapper);
}
}
private static void sort4GoodsCondition(TbsActivity activity,List<TbsScheduleItemBudget> list,List<TbsScheduleItemBudget> result,CostSortWrapper wrapper){
if(CollectionUtil.isNotEmpty(list)){
List<TbsBudgetCondition> activityCostConditions = wrapper.getActivityCostConditionsOfSort().get(activity.getId());
Collections.sort(activityCostConditions, (o1, o2) -> {
int len1 = o1.getTargetLevelPathIds().split("_").length;
int len2 = o2.getTargetLevelPathIds().split("_").length;
if(len1==len2){
List<TbsScheduleItemBudget> scheduleItemBudgets = list;
Long day1 = null;
Long day2 = null;
for (TbsScheduleItemBudget itemBudget : scheduleItemBudgets) {
if(itemBudget.getBudgetId().equals(o1.getBudgetId())){
day1 = Duration.between(itemBudget.getStartDate(), itemBudget.getEndDate()).toDays();
}else if (itemBudget.getBudgetId().equals(o2.getBudgetId())){
day2 = Duration.between(itemBudget.getStartDate(), itemBudget.getEndDate()).toDays();
}
}
log.debug("活动【{}】 时间区间相同,day1:{} , day2:{}",activity.getActivityCode(),day1,day2);
if(day1!=null&&day2!=null){
return (int) (day1-day2);
}
}
return len2 - len1;
});
List<TbsScheduleItemBudget> newSortList = new ArrayList<>();
for (TbsBudgetCondition costCondition : activityCostConditions) {
for (TbsScheduleItemBudget scheduleItemBudget : list) {
if(scheduleItemBudget.getBudgetId().equals(costCondition.getBudgetId())){
newSortList.add(scheduleItemBudget);
}
}
}
if(newSortList.size()!=list.size()){
log.error("排序有误");
Assert.throwEx("排序有误");
}
result.addAll(newSortList);
}
}
private static void sort4NotGoodsCondition(List<TbsScheduleItemBudget> list,List<TbsScheduleItemBudget> result,CostSortWrapper wrapper){
if(CollectionUtil.isNotEmpty(list)){
Collections.sort(list, (o1, o2) -> {
Long day1 = Duration.between(o1.getStartDate(), o1.getEndDate()).toDays();
Long day2 = Duration.between(o2.getStartDate(), o2.getEndDate()).toDays();
log.debug("时间区间相同,day1:{} , day2:{}",day1,day2);
return (int) (day1-day2);
});
result.addAll(list);
}
}
}

3
src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java

@ -78,10 +78,9 @@ public class TbsCostApplyController {
private BmsSupplierService bmsSupplierService; private BmsSupplierService bmsSupplierService;
private SysUserService sysUserService; private SysUserService sysUserService;
private SeeYonService seeYonService; private SeeYonService seeYonService;
private TbsBudgetApplicationService budgetApplicationService; private TbsBudgetApplicationService budgetApplicationService;
private SysPostUserService postUserService; private SysPostUserService postUserService;
/** /**
* 预览 * 预览
* @param id * @param id

70
src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetApplicationService.java

@ -6,9 +6,10 @@ import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.CollectionUtil; import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.modules.sys.service.SysConfigService; import com.qs.serve.modules.sys.service.SysConfigService;
import com.qs.serve.modules.tbs.common.TbsGoodsType; import com.qs.serve.modules.tbs.common.TbsGoodsType;
import com.qs.serve.modules.tbs.common.dto.CostSortWrapper;
import com.qs.serve.modules.tbs.common.util.CostSortWrapperUtil;
import com.qs.serve.modules.tbs.common.util.TbsBudgetCostUtil; import com.qs.serve.modules.tbs.common.util.TbsBudgetCostUtil;
import com.qs.serve.modules.tbs.entity.*; import com.qs.serve.modules.tbs.entity.*;
import com.qs.serve.modules.tbs.entity.bo.TbsActivitySubjectBo;
import com.qs.serve.modules.tbs.entity.dto.TbsBudgetCostResult; import com.qs.serve.modules.tbs.entity.dto.TbsBudgetCostResult;
import com.qs.serve.modules.tbs.entity.vo.TbsBudgetTableVo; import com.qs.serve.modules.tbs.entity.vo.TbsBudgetTableVo;
import com.qs.serve.modules.tbs.mapper.TbsActivityGoodsMapper; import com.qs.serve.modules.tbs.mapper.TbsActivityGoodsMapper;
@ -187,12 +188,13 @@ public class TbsBudgetApplicationService {
Boolean overspend, Boolean overspend,
Boolean throwEx, Boolean throwEx,
Boolean buildTableFlag){ Boolean buildTableFlag){
CostSortWrapper costSortWrapper = new CostSortWrapper();
//考核期有关的预算id,判断逻辑为活动需要允许在 //考核期有关的预算id,判断逻辑为活动需要允许在
List<Long> budgetIds = new ArrayList<>(); List<Long> budgetIds = new ArrayList<>();
//没有预算的活动 //没有预算的活动
List<Long> noBudgetActivityIds = new ArrayList<>(); List<Long> noBudgetActivityIds = new ArrayList<>();
//所有满足条件的考核期,用于加载历史核销费用 //所有满足条件的考核期,用于加载历史核销费用
List<TbsScheduleItemBudget> scheduleItemList = this.loadScheduleBudgetAndSetting(activityList, budgetIds, noBudgetActivityIds); List<TbsScheduleItemBudget> scheduleItemList = this.loadScheduleBudgetAndSetting(activityList, budgetIds, noBudgetActivityIds,costSortWrapper);
List<String> centerIds = activityCenterList.stream().map(TbsActivityCenter::getCenterId).collect(Collectors.toList()); List<String> centerIds = activityCenterList.stream().map(TbsActivityCenter::getCenterId).collect(Collectors.toList());
List<Long> subjectIds = activitySubjects.stream().map(TbsActivitySubject::getSubjectId).collect(Collectors.toList()); List<Long> subjectIds = activitySubjects.stream().map(TbsActivitySubject::getSubjectId).collect(Collectors.toList());
// 加载所有条件 // 加载所有条件
@ -209,15 +211,18 @@ public class TbsBudgetApplicationService {
}else { }else {
budgetList = new ArrayList<>(); budgetList = new ArrayList<>();
} }
costSortWrapper.initializeBudget(budgetList);
List<TbsBudget> noConditionBudgetList = new ArrayList<>(); List<TbsBudget> noConditionBudgetList = new ArrayList<>();
//加载预算条件和关联预算匹配,返回是否由无条件预算 //加载预算条件和关联预算匹配,返回是否由无条件预算
boolean budgetNoCondition = this.loadConditionByBudgetsAndMatch(budgetList, noConditionBudgetList); boolean budgetNoCondition = this.loadConditionByBudgetsAndMatch(budgetList, noConditionBudgetList);
//预算条件需包含活动条件, Map结构:活动id->满足的预算id列表 //预算条件需包含活动条件, Map结构:活动id->满足的预算id列表
Map<Long,List<Long>> activityAllowBudgetIdMap = this.buildActivityBudgetMap(activityList, budgetList, noConditionBudgetList); Map<Long,List<Long>> activityAllowBudgetIdMap = this.buildActivityBudgetMap(activityList, budgetList, noConditionBudgetList);
costSortWrapper.setActivityAllowBudgetId(activityAllowBudgetIdMap);
//活动拦截 //活动拦截
if(!budgetNoCondition){ if(!budgetNoCondition){
this.handleNoBudgetActivity(throwEx, overspend, activityList, noBudgetActivityIds,activityAllowBudgetIdMap); this.handleNoBudgetActivity(throwEx, overspend, activityList, noBudgetActivityIds,activityAllowBudgetIdMap);
} }
//统计所有占用预算金额 //统计所有占用预算金额
Map<Long,BigDecimal> budgetItemAmountMap = new HashMap<>(scheduleItemList.size()); Map<Long,BigDecimal> budgetItemAmountMap = new HashMap<>(scheduleItemList.size());
//统计费用申请占用金额 //统计费用申请占用金额
@ -241,6 +246,7 @@ public class TbsBudgetApplicationService {
} }
budgetItemAmountMap.put(itemBudget.getId(),budgetItemAmount); budgetItemAmountMap.put(itemBudget.getId(),budgetItemAmount);
} }
//统计当前活动前置项占用预算 //统计当前活动前置项占用预算
Map<Long,BigDecimal> counterMap = new HashMap<>(); Map<Long,BigDecimal> counterMap = new HashMap<>();
//匹配预算主要方法 //匹配预算主要方法
@ -248,8 +254,9 @@ public class TbsBudgetApplicationService {
final List<TbsActivityCenterGoods> actUnMatchList = new ArrayList<>(); final List<TbsActivityCenterGoods> actUnMatchList = new ArrayList<>();
for (TbsActivityCenterGoods activityCostItem : centerGoodsList) { for (TbsActivityCenterGoods activityCostItem : centerGoodsList) {
this.matchActivityMain(activityCostItem,throwEx, overspend, activityList, budgetItemAmountMap, budgetList, this.matchActivityMain(activityCostItem,throwEx, overspend, activityList, budgetItemAmountMap, budgetList,
noConditionBudgetList, counterMap, actMatchList, actUnMatchList,activityAllowBudgetIdMap,budgetItemApplyAmountMap); noConditionBudgetList, counterMap, actMatchList, actUnMatchList,activityAllowBudgetIdMap,budgetItemApplyAmountMap,costSortWrapper);
} }
List<TbsBudgetCostItem> budgetMatchList = actMatchList.stream() List<TbsBudgetCostItem> budgetMatchList = actMatchList.stream()
.map(TbsActivityCenterGoods::toBudgetCostItem).collect(Collectors.toList()); .map(TbsActivityCenterGoods::toBudgetCostItem).collect(Collectors.toList());
List<TbsBudgetCostItem> budgetUnMatchList = actUnMatchList.stream() List<TbsBudgetCostItem> budgetUnMatchList = actUnMatchList.stream()
@ -448,7 +455,8 @@ public class TbsBudgetApplicationService {
final List<TbsActivityCenterGoods> actMatchList, final List<TbsActivityCenterGoods> actMatchList,
final List<TbsActivityCenterGoods> actUnMatchList, final List<TbsActivityCenterGoods> actUnMatchList,
final Map<Long,List<Long>> activityAllowBudgetIdMap, final Map<Long,List<Long>> activityAllowBudgetIdMap,
Map<Long,BigDecimal> budgetItemApplyAmountMap) { Map<Long,BigDecimal> budgetItemApplyAmountMap,
CostSortWrapper costSortWrapper) {
//过滤满全条件的预算 //过滤满全条件的预算
List<Long> allowBudgetIds = activityAllowBudgetIdMap.get(activityCostItem.getActivityId()); List<Long> allowBudgetIds = activityAllowBudgetIdMap.get(activityCostItem.getActivityId());
if(CollectionUtil.isEmpty(allowBudgetIds)){ if(CollectionUtil.isEmpty(allowBudgetIds)){
@ -470,7 +478,7 @@ public class TbsBudgetApplicationService {
break; break;
} }
} }
List<TbsBudget> currentItemBudgetList = this.filterMatchGoodsCondition(budgetList, activityCostItem.getTargetLevelPathIds(),currentActivity); List<TbsBudget> currentItemBudgetList = this.filterMatchGoodsCondition(budgetList, activityCostItem.getTargetLevelPathIds(),currentActivity,costSortWrapper);
//关联无条件预算 //关联无条件预算
currentItemBudgetList.addAll(noConditionBudgetList); currentItemBudgetList.addAll(noConditionBudgetList);
//提取可用预算的考核期 //提取可用预算的考核期
@ -503,6 +511,9 @@ public class TbsBudgetApplicationService {
} }
} }
//进行排序
currentScheduleItemBudgets = CostSortWrapperUtil.initializeSort(currentActivity,currentScheduleItemBudgets,costSortWrapper);
//检测是否有是否足够预算 //检测是否有是否足够预算
BigDecimal goodsAmount = activityCostItem.getCenterGoodsAmount(); BigDecimal goodsAmount = activityCostItem.getCenterGoodsAmount();
if(CollectionUtil.isNotEmpty(currentScheduleItemBudgets)){ if(CollectionUtil.isNotEmpty(currentScheduleItemBudgets)){
@ -588,7 +599,7 @@ public class TbsBudgetApplicationService {
* @return * @return
*/ */
@NotNull @NotNull
public List<TbsBudget> filterMatchGoodsCondition(List<TbsBudget> budgetList,String targetLevelPathIds,TbsActivity currentActivity) { public List<TbsBudget> filterMatchGoodsCondition(List<TbsBudget> budgetList,String targetLevelPathIds,TbsActivity currentActivity,CostSortWrapper costSortWrapper) {
String levelPath = targetLevelPathIds; String levelPath = targetLevelPathIds;
Set<String> levelPathSet = new LinkedHashSet<>(); Set<String> levelPathSet = new LinkedHashSet<>();
levelPathSet.add(levelPath); levelPathSet.add(levelPath);
@ -611,26 +622,27 @@ public class TbsBudgetApplicationService {
} }
} }
} }
Collections.sort(budgetConditionList, (o1, o2) -> { costSortWrapper.putActivityCostCondition(currentActivity.getId(), budgetConditionList);
int len1 = o1.getTargetLevelPathIds().split("_").length; // Collections.sort(budgetConditionList, (o1, o2) -> {
int len2 = o2.getTargetLevelPathIds().split("_").length; // int len1 = o1.getTargetLevelPathIds().split("_").length;
if(len1==len2){ // int len2 = o2.getTargetLevelPathIds().split("_").length;
List<TbsScheduleItemBudget> scheduleItemBudgets = currentActivity.getScheduleItemBudgetList(); // if(len1==len2){
Long day1 = null; // List<TbsScheduleItemBudget> scheduleItemBudgets = currentActivity.getScheduleItemBudgetList();
Long day2 = null; // Long day1 = null;
for (TbsScheduleItemBudget itemBudget : scheduleItemBudgets) { // Long day2 = null;
if(itemBudget.getBudgetId().equals(o1.getBudgetId())){ // for (TbsScheduleItemBudget itemBudget : scheduleItemBudgets) {
day1 = Duration.between(itemBudget.getStartDate(), itemBudget.getEndDate()).toDays(); // if(itemBudget.getBudgetId().equals(o1.getBudgetId())){
}else if (itemBudget.getBudgetId().equals(o2.getBudgetId())){ // day1 = Duration.between(itemBudget.getStartDate(), itemBudget.getEndDate()).toDays();
day2 = Duration.between(itemBudget.getStartDate(), itemBudget.getEndDate()).toDays(); // }else if (itemBudget.getBudgetId().equals(o2.getBudgetId())){
} // day2 = Duration.between(itemBudget.getStartDate(), itemBudget.getEndDate()).toDays();
} // }
if(day1!=null&&day2!=null){ // }
return (int) (day1-day2); // if(day1!=null&&day2!=null){
} // return (int) (day1-day2);
} // }
return len2 - len1; // }
}); // return len2 - len1;
// });
List<TbsBudget> currentItemBudgetList = new ArrayList<>(); List<TbsBudget> currentItemBudgetList = new ArrayList<>();
for (TbsBudgetCondition condition : budgetConditionList) { for (TbsBudgetCondition condition : budgetConditionList) {
for (TbsBudget budget : budgetList) { for (TbsBudget budget : budgetList) {
@ -703,10 +715,12 @@ public class TbsBudgetApplicationService {
* @return scheduleItemList 命中的考核期列表 * @return scheduleItemList 命中的考核期列表
*/ */
public List<TbsScheduleItemBudget> loadScheduleBudgetAndSetting(List<TbsActivity> activityList, public List<TbsScheduleItemBudget> loadScheduleBudgetAndSetting(List<TbsActivity> activityList,
List<Long> budgetIds, List<Long> noBudgetActivityIds) { List<Long> budgetIds, List<Long> noBudgetActivityIds,CostSortWrapper costSortWrapper) {
List<TbsScheduleItemBudget> scheduleItemList = new ArrayList<>(); List<TbsScheduleItemBudget> scheduleItemList = new ArrayList<>();
Set<Long> budgetIdsSet = new HashSet<>(); Set<Long> budgetIdsSet = new HashSet<>();
Map<Long,TbsScheduleItemBudget> allAllowScheduleItemTempMap = new HashMap<>(); Map<Long,TbsScheduleItemBudget> allAllowScheduleItemTempMap = new HashMap<>();
// of sort
Map<Long,List<TbsScheduleItemBudget>> activityScheduleItemMapOfSort = new HashMap<>();
for (TbsActivity activity : activityList) { for (TbsActivity activity : activityList) {
List<TbsScheduleItemBudget> budgetItemList = tbsScheduleItemBudgetService List<TbsScheduleItemBudget> budgetItemList = tbsScheduleItemBudgetService
.betweenDateList(activity.getPreStartDate(),activity.getPreEndDate()); .betweenDateList(activity.getPreStartDate(),activity.getPreEndDate());
@ -717,10 +731,12 @@ public class TbsBudgetApplicationService {
budgetIdsSet.add(item.getBudgetId()); budgetIdsSet.add(item.getBudgetId());
allAllowScheduleItemTempMap.put(item.getId(),item); allAllowScheduleItemTempMap.put(item.getId(),item);
} }
activityScheduleItemMapOfSort.put(activity.getId(),budgetItemList);
}else { }else {
noBudgetActivityIds.add(activity.getId()); noBudgetActivityIds.add(activity.getId());
} }
} }
costSortWrapper.setActivityScheduleItemMap(activityScheduleItemMapOfSort);
for (Long tmpId : allAllowScheduleItemTempMap.keySet()) { for (Long tmpId : allAllowScheduleItemTempMap.keySet()) {
scheduleItemList.add(allAllowScheduleItemTempMap.get(tmpId)); scheduleItemList.add(allAllowScheduleItemTempMap.get(tmpId));
} }

4
src/main/resources/mapper/bms/BmsSupplierMapper.xml

@ -74,9 +74,7 @@
<select id="selectSupplierList" parameterType="com.qs.serve.modules.bms.entity.BmsSupplier" resultMap="bmsSupplierMap"> <select id="selectSupplierList" parameterType="com.qs.serve.modules.bms.entity.BmsSupplier" resultMap="bmsSupplierMap">
SELECT <include refid="bmsSupplierSql"/> FROM `bms_supplier` `bms_supplier` SELECT <include refid="bmsSupplierSql"/> FROM `bms_supplier` `bms_supplier`
<if test="query.currUserId!=null and query.currUserId != ''">
LEFT JOIN `bms_supplier_user` ON `bms_supplier`.`id` = `bms_supplier_user`.`supplier_id`
</if>
<where> <where>
<if test="query.id != null"> and `bms_supplier`.`id` = #{query.id}</if> <if test="query.id != null"> and `bms_supplier`.`id` = #{query.id}</if>
<if test="query.regionFirst != null"> and `bms_supplier`.`region_first` = #{query.regionFirst}</if> <if test="query.regionFirst != null"> and `bms_supplier`.`region_first` = #{query.regionFirst}</if>

7
src/main/resources/mapper/his/HisUserSupplierMapper.xml

@ -98,6 +98,13 @@
or `his_user_supplier`.`supplier_code` like concat('%',#{query.queryValue},'%') or `his_user_supplier`.`supplier_code` like concat('%',#{query.queryValue},'%')
) )
</if> </if>
<if test="query.selectUserIds!=null and query.selectUserIds.size > 0">
and `his_user_supplier`.`user_id` in
<foreach collection="query.selectUserIds" item="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
</if>
</where> </where>
ORDER BY ORDER BY
<if test="query.localY!=null and query.localX!=null"> <if test="query.localY!=null and query.localX!=null">

Loading…
Cancel
Save