diff --git a/src/main/java/com/qs/serve/common/model/dto/R.java b/src/main/java/com/qs/serve/common/model/dto/R.java index 14f3a14a..23ba1fff 100644 --- a/src/main/java/com/qs/serve/common/model/dto/R.java +++ b/src/main/java/com/qs/serve/common/model/dto/R.java @@ -148,6 +148,10 @@ public class R implements Serializable { } public static R> byPageHelperList(List data){ + return R.ok(buildPageHelperList(data)); + } + + public static PageVo buildPageHelperList(List data){ PageVo pageVo = new PageVo<>(); PageInfo pageInfo = new PageInfo<>(data); pageVo.setPageSize(pageInfo.getPageSize()); @@ -155,7 +159,7 @@ public class R implements Serializable { pageVo.setTotal(pageInfo.getTotal()); pageVo.setList(data); pageVo.setTotalPage(new Long(pageInfo.getPages())); - return R.ok(pageVo); + return pageVo; } public static R> byEmptyList(){ diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsChannelController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsChannelController.java index 80200fd8..6881591f 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsChannelController.java +++ b/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.util.PageUtil; 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.BmsMasterUser; import com.qs.serve.modules.bms.entity.BmsSupplierVisitType; @@ -47,7 +48,7 @@ public class BmsChannelController { private HisUserChannelPointService hisUserChannelPointService; private BmsMasterUserMapper bmsMasterUserMapper; private BmsSupplierChannelService bmsSupplierChannelService; - + private BmsChannelMyController bmsChannelMyController; /** * 翻页 * @param param @@ -56,6 +57,9 @@ public class BmsChannelController { @GetMapping("/page") @PreAuthorize("hasRole('bms:channel:query')") public R> getPage(BmsChannel param){ + if(param.getLoadByCurrent()!=null&¶m.getLoadByCurrent().equals(1)){ + return bmsChannelMyController.getPage4UnderAndMine(param); + } PageUtil.startPage(); LambdaQueryWrapper channelWrapper = new LambdaQueryWrapper<>(param); channelWrapper.orderByDesc(BmsChannel::getCreateTime); @@ -134,7 +138,7 @@ public class BmsChannelController { public R deleteById(@PathVariable("id") Long id){ LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(TbsActivityChannel::getChannelId,id); - if(activityChannelService.count()>0){ + if(activityChannelService.count(lqw)>0){ return R.error("活动含当前渠道,删除失败"); } diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsChannelPointController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsChannelPointController.java index 242fd3b5..295dae72 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsChannelPointController.java +++ b/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.service.BazVisitInfoService; 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.BmsRegion; 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.sys.common.enums.BusinessLogType; 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.service.TbsActivityChannelPointService; import lombok.AllArgsConstructor; @@ -62,6 +64,8 @@ public class BmsChannelPointController { private BmsChannelPointMapper channelPointMapper; private HisUserChannelPointService hisUserChannelPointService; private BmsMasterUserService bmsMasterUserService; + private SysPostUserService postUserService; + private BmsChannelPointMyController bmsChannelPointMyController; /** * 获取我负责的网点 @@ -71,7 +75,8 @@ public class BmsChannelPointController { @GetMapping("/page4Visit") public R> getPage4Visit(BmsPointVisitSo param){ String sysUserId = AuthContextUtils.getSysUserId(); - List userIds = Arrays.asList(sysUserId); + List userIds = postUserService.listByChildIds(sysUserId); + userIds.add(sysUserId); List list = channelPointMapper.selectUserPointList4Visit(param, userIds,new RowParam(true)); Long count = channelPointMapper.selectCountUserPointList4Visit(param,userIds); for (BmsUserPoint4VisitVo visitVo : list) { @@ -93,6 +98,9 @@ public class BmsChannelPointController { @GetMapping("/page") @PreAuthorize("hasRole('bms:channelPoint:query')") public R> getPage(BmsChannelPoint param){ + if(param.getLoadByCurrent()!=null&¶m.getLoadByCurrent().equals(1)){ + return bmsChannelPointMyController.page4UnderAndMine(param); + } PageUtil.startPage(); List list = bmsChannelPointService.selectChannelPointList(param); for (BmsChannelPoint channelPoint : list) { diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java index 6c5f86da..2b1bdc09 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsRegion2Controller.java @@ -74,7 +74,9 @@ public class BmsRegion2Controller { List regionIds = regionUsers.stream().map(BmsRegionUser::getRegionId).collect(Collectors.toList()); if(StringUtils.hasText(supplierId)){ BmsSupplier supplier = bmsSupplierService.getById(supplierId); - regionIds.addAll(supplier.listBizRegionIds()); + if(supplier.listBizRegionIds()!=null){ + regionIds.addAll(supplier.listBizRegionIds()); + } } if(regionIds.size()>0){ List regionList = bmsRegion2Service.listByIds(regionIds); 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 f20325ad..96a626bc 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 @@ -67,18 +67,20 @@ public class BmsSubjectController { treeVoList = TreeUtil.buildByRecursive(treeVoList,TreeUtil.DEFAULT_PID_STRING); if(StringUtils.hasText(supplierId)&&!supplierId.equals("0")){ BmsSupplier bmsSupplier = bmsSupplierService.getById(supplierId); - LambdaQueryWrapper subjectLqw = new LambdaQueryWrapper<>(); - subjectLqw.eq(BmsSubject::getBizRegionFlag,0).or().eq(BmsSubject::getSaleRegionFlag,0); - List bmsSubjectList = bmsSubjectService.list(subjectLqw); - List subjectRegionList = bmsSubjectRegionService.listByRegionIds(bmsSupplier.listBizRegionIds(),1); - List subjectRegionList2 = bmsSubjectRegionService.listByRegionIds(bmsSupplier.listSaleRegionIds(),0); - subjectRegionList.addAll(subjectRegionList2); - List subjectIds = bmsSubjectList.stream().map(a->a.getId().toString()).collect(Collectors.toList()); - //加载允许适用的科目 - List subjectIds2 = subjectRegionList.stream().map(a->a.getSubjectId().toString()) - .distinct().collect(Collectors.toList()); - subjectIds.addAll(subjectIds2); - recursionToSetSelectAble(treeVoList, subjectIds); + if(bmsSupplier!=null){ + LambdaQueryWrapper subjectLqw = new LambdaQueryWrapper<>(); + subjectLqw.eq(BmsSubject::getBizRegionFlag,0).or().eq(BmsSubject::getSaleRegionFlag,0); + List bmsSubjectList = bmsSubjectService.list(subjectLqw); + List subjectRegionList = bmsSubjectRegionService.listByRegionIds(bmsSupplier.listBizRegionIds(),1); + List subjectRegionList2 = bmsSubjectRegionService.listByRegionIds(bmsSupplier.listSaleRegionIds(),0); + subjectRegionList.addAll(subjectRegionList2); + List subjectIds = bmsSubjectList.stream().map(a->a.getId().toString()).collect(Collectors.toList()); + //加载允许适用的科目 + List subjectIds2 = subjectRegionList.stream().map(a->a.getSubjectId().toString()) + .distinct().collect(Collectors.toList()); + subjectIds.addAll(subjectIds2); + recursionToSetSelectAble(treeVoList, subjectIds); + } } return R.ok(treeVoList); } diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java index c8a9ca68..4bbc7dcc 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java @@ -2,6 +2,7 @@ package com.qs.serve.modules.bms.controller; import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; import com.qs.serve.common.framework.redis.RedisService; import com.qs.serve.common.model.annotation.SysLog; @@ -19,10 +20,12 @@ import com.qs.serve.modules.bms.mapper.BmsSupplierMapper; import com.qs.serve.modules.bms.service.*; import com.qs.serve.modules.his.entity.HisUserSupplier; 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.bo.SysRelateSuppliersParam; import com.qs.serve.modules.sys.entity.bo.SysRelateSuppliersParam2; 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.tbs.common.TbsCenterType; import com.qs.serve.modules.tbs.entity.TbsBudget; @@ -56,6 +59,7 @@ public class BmsSupplierController { private BmsRegionService bmsRegionService; private BmsRegion2Service bmsRegion2Service; private SysUserService sysUserService; + private SysPostUserService sysPostUserService; private BmsSupplierMapper bmsSupplierMapper; private HisUserSupplierService hisUserSupplierService; private RedisService redisService; @@ -70,7 +74,13 @@ public class BmsSupplierController { @PreAuthorize("hasRole('bms:supplier:query')") public R> getList(BmsSupplier param){ String userId = param.getUserId(); - param.setCurrUserId(userId); + if(param.getLoadByCurrent()!=null&¶m.getLoadByCurrent().equals(1)){ + List userIds = sysPostUserService.listByChildIds(userId); + userIds.add(userId); + param.setSelectUserIds(userIds); + }else { + param.setCurrUserId(userId); + } List list = bmsSupplierService.selectSupplierList(param); initSupplierList(list); initParentList(list); @@ -95,14 +105,19 @@ public class BmsSupplierController { public R> getPage(@RequestBody BmsSupplier param){ if(param.getLoadByCurrent()!=null&¶m.getLoadByCurrent().equals(1)){ String userId = AuthContextUtils.getSysUserId(); - //初始化 hisUserSupplierService.initByUserId(userId,false); - HisUserSupplier userSupplier = param.toHisUserSupplier(userId,null); - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(userSupplier); - lqw.ne(HisUserSupplier::getSupplierId,0); + //初始化 + List userIds = sysPostUserService.listByChildIds(userId); + userIds.add(userId); + HisUserSupplier userSupplier = param.toHisUserSupplier(null,null); + QueryWrapper lqw = new QueryWrapper<>(userSupplier); + lqw.select("distinct his_user_supplier.supplier_id"); + lqw.lambda().in(HisUserSupplier::getUserId,userIds) + .ne(HisUserSupplier::getSupplierId,0); PageHelper.startPage(param.getPageNum(),param.getPageSize()); List list = hisUserSupplierService.list(lqw); - List supplierList = list.stream().map(HisUserSupplier::toSupplier).collect(Collectors.toList()); + List supplierIds = list.stream().map(HisUserSupplier::getSupplierId).collect(Collectors.toList()); + List supplierList = bmsSupplierService.listByIds(supplierIds); return R.byPageHelperList(list,supplierList); } PageHelper.startPage(param.getPageNum(),param.getPageSize()); diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierVisitAddressController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierVisitAddressController.java index 1f217ea6..8abc2d0d 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierVisitAddressController.java +++ b/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.sys.common.enums.BusinessLogType; 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 lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -56,6 +57,7 @@ public class BmsSupplierVisitAddressController { private HisUserSupplierService hisUserSupplierService; private HisUserSupplierMapper hisUserSupplierMapper; private BazVisitFlowService bazVisitFlowService; + private SysPostUserService sysPostUserService; /** @@ -68,14 +70,16 @@ public class BmsSupplierVisitAddressController { String userId = AuthContextUtils.getSysUserId(); hisUserSupplierService.initByUserId(userId,false); HisUserSupplier userSupplier = new HisUserSupplier(); - userSupplier.setUserId(userId); + //userSupplier.setUserId(userId); userSupplier.setSupplierName(param.getSupplierName()); userSupplier.setSupplierCode(param.getSupplierCode()); userSupplier.setQueryAddress(param.getAddress()); userSupplier.setQueryValue(param.getSearchValue()); userSupplier.setLocalX(param.getLocalX()); userSupplier.setLocalY(param.getLocalY()); - + List userIds = sysPostUserService.listByChildIds(userId); + userIds.add(userId); + userSupplier.setSelectUserIds(userIds); PageHelper.startPage(param.getPageNum(),param.getPageSize()); List list = hisUserSupplierMapper.selectHisUserSupplierAddressList(userSupplier); diff --git a/src/main/java/com/qs/serve/modules/bms/controller/my/BmsChannelMyController.java b/src/main/java/com/qs/serve/modules/bms/controller/my/BmsChannelMyController.java index c6230284..32227ffa 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/my/BmsChannelMyController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/my/BmsChannelMyController.java @@ -58,20 +58,6 @@ public class BmsChannelMyController { */ @GetMapping("/page") public R> getPage(BmsChannel param){ -// LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); -// lqw.eq(BmsMasterUser::getUserId, AuthContextUtils.getSysUserId()); -// lqw.eq(BmsMasterUser::getType,MasterUserType.Channel); -// lqw.select(BmsMasterUser::getTargetId); -// List masterUsers = bmsMasterUserService.list(lqw); -// List targetIds = masterUsers.stream().map(BmsMasterUser::getTargetId).distinct().collect(Collectors.toList()); -// if(CollectionUtil.isEmpty(targetIds)){ -// return R.byEmptyList(); -// } -// PageUtil.startPage(); -// LambdaQueryWrapper channelWrapper = new LambdaQueryWrapper<>(param); -// channelWrapper.orderByDesc(BmsChannel::getCreateTime); -// channelWrapper.in(BmsChannel::getId,targetIds); -// List list = bmsChannelService.list(channelWrapper); PageUtil.startPage(); List list = bmsChannelService.selectChannelList(param, Arrays.asList(AuthContextUtils.getSysUserId())); return R.byPageHelperList(list); @@ -90,20 +76,21 @@ public class BmsChannelMyController { if(CollectionUtil.isEmpty(userIds)){ return R.byEmptyList(); } -// LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); -// lqw.in(BmsMasterUser::getUserId, userIds); -// lqw.eq(BmsMasterUser::getType,MasterUserType.Channel); -// lqw.select(BmsMasterUser::getTargetId); -// List masterUsers = bmsMasterUserService.list(lqw); -// List targetIds = masterUsers.stream().map(BmsMasterUser::getTargetId).distinct().collect(Collectors.toList()); -// if(CollectionUtil.isEmpty(targetIds)){ -// return R.byEmptyList(); -// } -// PageUtil.startPage(); -// LambdaQueryWrapper channelWrapper = new LambdaQueryWrapper<>(param); -// channelWrapper.orderByDesc(BmsChannel::getCreateTime); -// channelWrapper.in(BmsChannel::getId,targetIds); -// List list = bmsChannelService.list(channelWrapper); + PageUtil.startPage(); + List list = bmsChannelService.selectChannelList(param, userIds); + return R.byPageHelperList(list); + } + + /** + * 翻页(下属负责的渠道) + * @param param + * @return + */ + @GetMapping("/page4UnderAndMine") + public R> getPage4UnderAndMine(BmsChannel param){ + String loginUserId = AuthContextUtils.getSysUserId(); + List userIds = postUserService.listByChildIds(loginUserId); + userIds.add(loginUserId); PageUtil.startPage(); List list = bmsChannelService.selectChannelList(param, userIds); return R.byPageHelperList(list); diff --git a/src/main/java/com/qs/serve/modules/bms/controller/my/BmsChannelPointMyController.java b/src/main/java/com/qs/serve/modules/bms/controller/my/BmsChannelPointMyController.java index 9153396b..60d7ea07 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/my/BmsChannelPointMyController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/my/BmsChannelPointMyController.java @@ -67,10 +67,26 @@ public class BmsChannelPointMyController { */ @GetMapping("/page") public R> getPage(BmsChannelPoint param){ - /*param.setUserId(AuthContextUtils.getSysUserId()); - param.setTenantId(AuthContextUtils.getTenant()); - List list = bmsChannelPointService.selectChannelPointMyList(param); - for (BmsChannelPoint channelPoint : list) { + List list = bmsChannelPointService.selectChannelPointMyList(param, Arrays.asList(AuthContextUtils.getSysUserId())); + Long count = bmsChannelPointService.selectCountChannelPointMyList(param, Arrays.asList(AuthContextUtils.getSysUserId())); + return R.byPageList(count,list); + } + + + + /** + * 下属负责的网店 + * @param param + * @return + */ + @GetMapping("/page4Under") + public R> getPage4Under(BmsChannelPoint param){ + String loginUserId = AuthContextUtils.getSysUserId(); + List userIds = postUserService.listByChildIds(loginUserId); + if(userIds.size() == 0){return R.byEmptyList();} + List pageList = bmsChannelPointService.selectChannelPointMyList(param, userIds); + Long count = bmsChannelPointService.selectCountChannelPointMyList(param, userIds); + for (BmsChannelPoint channelPoint : pageList) { if(StringUtils.hasText(channelPoint.getBizRegionPath())){ String[] bizRegions = channelPoint.getBizRegionPath().split("_"); if(bizRegions.length>0){ @@ -83,41 +99,22 @@ public class BmsChannelPointMyController { channelPoint.setSaleRegionName(regions[regions.length-1]); } } - }*/ - List 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 * @return */ - @GetMapping("/page4Under") - public R> getPage4Under(BmsChannelPoint param){ + @GetMapping("/page4UnderAndMine") + public R> page4UnderAndMine(BmsChannelPoint param){ String loginUserId = AuthContextUtils.getSysUserId(); List userIds = postUserService.listByChildIds(loginUserId); - //旧版本加载方式 -// param.setUserIdList(userIds); -// LambdaQueryWrapper rulqw = new LambdaQueryWrapper<>(); -// rulqw.select(BmsRegionUser::getPathIds,BmsRegionUser::getId); -// rulqw.eq(BmsRegionUser::getUserId,loginUserId); -// List regionUserList = bmsRegionUserService.list(rulqw); -// if(CollectionUtil.isNotEmpty(regionUserList)){ -// List regionPaths = regionUserList.stream().map(BmsRegionUser::getPathIds) -// .filter(StringUtils::hasText).distinct().collect(Collectors.toList()); -// param.setSourceIdsList(regionPaths); -// } -// PageUtil.startPage(); -// param.setTenantId(AuthContextUtils.getTenant()); -// List list = bmsChannelPointService.selectChannelPointMyUnderList(param); - //新版本加载方式 + userIds.add(loginUserId); List pageList = bmsChannelPointService.selectChannelPointMyList(param, userIds); Long count = bmsChannelPointService.selectCountChannelPointMyList(param, userIds); - for (BmsChannelPoint channelPoint : pageList) { if(StringUtils.hasText(channelPoint.getBizRegionPath())){ String[] bizRegions = channelPoint.getBizRegionPath().split("_"); diff --git a/src/main/java/com/qs/serve/modules/bms/controller/my/BmsSupplierContactsMyController.java b/src/main/java/com/qs/serve/modules/bms/controller/my/BmsSupplierContactsMyController.java index eecc5365..7fc0c9cf 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/my/BmsSupplierContactsMyController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/my/BmsSupplierContactsMyController.java @@ -40,6 +40,7 @@ public class BmsSupplierContactsMyController { private final HisUserSupplierService hisUserSupplierService; private BmsSupplierContactsService bmsSupplierContactsService; + private BmsSupplierService bmsSupplierService; /** @@ -49,11 +50,8 @@ public class BmsSupplierContactsMyController { */ @GetMapping("/page") public R> getPage(BmsSupplierContactsSo param){ - - List list = hisUserSupplierService.selectSupplier(null,false); - List supplierList = list.stream().map(HisUserSupplier::toSupplier).collect(Collectors.toList()); - List supplierIds = supplierList.stream().map(a->a.getId()).distinct().collect(Collectors.toList()); - + List hisUserSuppliers = hisUserSupplierService.selectHisSupplier(null,false); + List supplierIds = hisUserSuppliers.stream().map(HisUserSupplier::getSupplierId).collect(Collectors.toList()); PageUtil.startPage(); BmsSupplierContacts query = CopierUtil.copy(param,new BmsSupplierContacts()); LambdaQueryWrapper contactsLambdaQueryWrapper = new LambdaQueryWrapper<>(query); diff --git a/src/main/java/com/qs/serve/modules/bms/controller/my/BmsSupplierMyController.java b/src/main/java/com/qs/serve/modules/bms/controller/my/BmsSupplierMyController.java index b0055da4..940445e6 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/my/BmsSupplierMyController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/my/BmsSupplierMyController.java @@ -4,12 +4,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.github.pagehelper.PageHelper; import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.R; -import com.qs.serve.common.util.AuthContextUtils; -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.BmsRegion; +import com.qs.serve.modules.bms.entity.BmsRegion2; import com.qs.serve.modules.bms.entity.BmsSupplier; import com.qs.serve.modules.bms.entity.vo.BmsSupplierTreeVo; +import com.qs.serve.modules.bms.service.BmsRegion2Service; +import com.qs.serve.modules.bms.service.BmsRegionService; import com.qs.serve.modules.bms.service.BmsSupplierService; import com.qs.serve.modules.his.entity.HisUserSupplier; import com.qs.serve.modules.his.service.HisUserSupplierService; @@ -40,6 +41,8 @@ import java.util.stream.Collectors; @RequestMapping("/my/supplier") public class BmsSupplierMyController { + private BmsRegionService bmsRegionService; + private BmsRegion2Service bmsRegion2Service; private final BmsSupplierService bmsSupplierService; private final HisUserSupplierService hisUserSupplierService; private SysPostUserService postUserService; @@ -52,9 +55,9 @@ public class BmsSupplierMyController { */ @GetMapping("/page") public R> getPage(BmsSupplier param){ - List list = hisUserSupplierService.selectSupplier(param,true); - List supplierList = list.stream().map(HisUserSupplier::toSupplier).collect(Collectors.toList()); - return R.byPageHelperList(list,supplierList); + PageVo pageVo = hisUserSupplierService.selectPageSupplier(param); + initSupplierList(pageVo.getList()); + return R.ok(pageVo); } /** @@ -67,9 +70,68 @@ public class BmsSupplierMyController { List childIds = postUserService.listByChildIds(AuthContextUtils.getSysUserId()); param.setSelectUserIds(childIds); param.setSelectUserIdsFlag(true); - List list = hisUserSupplierService.selectSupplier(param,true); - List supplierList = list.stream().map(HisUserSupplier::toSupplier).collect(Collectors.toList()); - return R.byPageHelperList(list,supplierList); + PageVo pageVo = hisUserSupplierService.selectPageSupplier(param); + initSupplierList(pageVo.getList()); + return R.ok(pageVo); + } + + /** + * 我的和下属的客户,翻页查询 + * @param param + * @return + */ + @GetMapping("/underlingAndMinePage") + public R> getUnderlingAndMinePage(BmsSupplier param){ + List childIds = postUserService.listByChildIds(AuthContextUtils.getSysUserId()); + childIds.add(AuthContextUtils.getSysUserId()); + param.setSelectUserIds(childIds); + param.setSelectUserIdsFlag(true); + PageVo pageVo = hisUserSupplierService.selectPageSupplier(param); + initSupplierList(pageVo.getList()); + return R.ok(pageVo); + } + + + + /** + * 显示关联 + * @param list + */ + private void initSupplierList(List list){ + for (BmsSupplier supplier : list) { + String regionId = null; + if(StringUtils.isNotEmpty(supplier.getRegionFourthly())){ + regionId = supplier.getRegionFourthly(); + }else if(StringUtils.isNotEmpty(supplier.getRegionThird())){ + regionId = supplier.getRegionThird(); + }else if (StringUtils.isNotEmpty(supplier.getRegionSecond())){ + regionId = supplier.getRegionSecond(); + }else if (StringUtils.isNotEmpty(supplier.getRegionFirst())){ + regionId = supplier.getRegionFirst(); + } + if(regionId!=null){ + BmsRegion region = bmsRegionService.getById(regionId); + if(region!=null){ + supplier.setRegionLabel(region.getName()); + } + } + String region2Id = null; + if(StringUtils.isNotEmpty(supplier.getRegion2Fourthly())){ + region2Id = supplier.getRegion2Fourthly(); + }else if(StringUtils.isNotEmpty(supplier.getRegion2Third())){ + region2Id = supplier.getRegion2Third(); + }else if (StringUtils.isNotEmpty(supplier.getRegion2Second())){ + region2Id = supplier.getRegion2Second(); + }else if (StringUtils.isNotEmpty(supplier.getRegion2First())){ + region2Id = supplier.getRegion2First(); + } + if(region2Id!=null){ + BmsRegion2 region = bmsRegion2Service.getById(region2Id); + if(region!=null){ + supplier.setRegion2Label(region.getName()); + } + } + } } diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsChannel.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsChannel.java index 1fc8056c..ed17f74d 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/BmsChannel.java +++ b/src/main/java/com/qs/serve/modules/bms/entity/BmsChannel.java @@ -82,5 +82,9 @@ public class BmsChannel implements Serializable { /** 可投放费用标识 */ private Integer costFlag; + /** 值=1,过滤当前用户及下属负责数据 */ + @TableField(exist = false) + private Integer loadByCurrent; + } diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsChannelPoint.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsChannelPoint.java index b6d68f25..252e07ba 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/BmsChannelPoint.java +++ b/src/main/java/com/qs/serve/modules/bms/entity/BmsChannelPoint.java @@ -180,5 +180,8 @@ public class BmsChannelPoint implements Serializable { @TableField(exist = false) private List userIdList; + /** 值=1,过滤当前用户及下属负责数据 */ + @TableField(exist = false) + private Integer loadByCurrent; } 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 08d034ea..22ffb4d8 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 @@ -199,7 +199,7 @@ public class BmsSupplier implements Serializable { private String searchUserCode; /** - * 值=1,过滤当前用户负责数据 + * 值=1,过滤当前用户及下属负责数据 */ @TableField(exist = false) private Integer loadByCurrent; diff --git a/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsChannelPointBo.java b/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsChannelPointBo.java index 331ba3bf..d946af0b 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsChannelPointBo.java +++ b/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsChannelPointBo.java @@ -57,11 +57,9 @@ public class BmsChannelPointBo { private String address; /** 销售区域id */ - @NotNull(message = "销售区域id不能为空") private String saleRegionId; /** 行政区域id */ - @NotNull(message = "行政区域id不能为空") private String bizRegionId; /** 备注 */ diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierService.java index acd526bd..aaeddd74 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierService.java +++ b/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierService.java @@ -30,6 +30,8 @@ public interface BmsSupplierService extends IService { List listByRegion2Id(String regionId); + List listByRegionIds(List regionIds,Integer level); + void editBatch(BmsSupplierBatchBo param); void flashParentId(); diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelPointServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelPointServiceImpl.java index 957994ab..07429ac7 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelPointServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelPointServiceImpl.java @@ -64,13 +64,17 @@ public class BmsChannelPointServiceImpl extends ServiceImpl private SysUserService sysUserService; private BmsChannelPointMapper bmsChannelPointMapper; private BmsFactoryService bmsFactoryService; - private HisUserChannelPointService hisUserChannelPointService; + private BmsSupplierApplicationService bmsSupplierApplicationService; @Override public boolean saveBmsRegion(BmsRegion param){ @@ -60,8 +60,11 @@ public class BmsRegionServiceImpl extends ServiceImpl if(!ori.getName().equals(param.getName())||changePid) { BmsRegion parentRegion = this.updatePathByPid(param.getId()); if(changePid){ + /*停用的逻辑 hisUserChannelPointService.removeRegion(2,ori.getPathIds()); - hisUserChannelPointService.flushRegion(2,parentRegion.getPathIds()); + hisUserChannelPointService.flushRegion(2,parentRegion.getPathIds());*/ + //todo 更新客户 + //bmsSupplierApplicationService.listByRegionIds() } } return b; 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 7847adda..ab3328db 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 @@ -2,6 +2,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.CollectionUtil; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; 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.mapper.BmsSubjectRegionMapper; +import java.util.ArrayList; import java.util.List; /** @@ -39,6 +41,9 @@ public class BmsSubjectRegionServiceImpl extends ServiceImpl listByRegionIds(List regionIds, Integer regionType) { + if(CollectionUtil.isEmpty(regionIds)){ + return new ArrayList<>(); + } LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.in(BmsSubjectRegion::getRegionId,regionIds); lqw.eq(BmsSubjectRegion::getType,regionType); diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierApplicationService.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierApplicationService.java index 6fd4bd0a..3c7c80d7 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierApplicationService.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierApplicationService.java @@ -7,6 +7,8 @@ import com.qs.serve.common.util.CollectionUtil; import com.qs.serve.common.util.CopierUtil; import com.qs.serve.modules.bms.entity.BmsRegion; import com.qs.serve.modules.bms.entity.BmsRegion2; +import com.qs.serve.modules.bms.entity.BmsSupplier; +import com.qs.serve.modules.bms.mapper.BmsSupplierMapper; import com.qs.serve.modules.bms.service.BmsRegion2Service; import com.qs.serve.modules.bms.service.BmsRegionService; import com.qs.serve.modules.tbs.common.TbsCenterType; @@ -47,6 +49,7 @@ public class BmsSupplierApplicationService { private TbsBudgetConditionMapper budgetConditionMapper; private TbsScheduleItemBudgetMapper scheduleItemBudgetMapper; private TbsActivityMapper activityMapper; + private BmsSupplierMapper bmsSupplierMapper; /** * 客户更新区域时,预算政策统计 @@ -297,4 +300,28 @@ public class BmsSupplierApplicationService { } } + public List listByRegionIds(List regionIds, Integer level) { + if(regionIds.size()>0){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + if(level.equals(1)){ + lqw.and( + aa->aa.in(BmsSupplier::getRegionFirst,regionIds) + .or().in(BmsSupplier::getRegion2First,regionIds) + ); + }else if(level.equals(2)){ + lqw.and( + aa->aa.in(BmsSupplier::getRegionSecond,regionIds) + .or().in(BmsSupplier::getRegion2Second,regionIds) + ); + }else if(level.equals(3)){ + lqw.and( + aa->aa.in(BmsSupplier::getRegionThird,regionIds) + .or().in(BmsSupplier::getRegion2Third,regionIds) + ); + } + return bmsSupplierMapper.selectList(lqw); + } + return new ArrayList<>(); + } + } diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java index 16852523..0430a965 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java @@ -168,6 +168,11 @@ public class BmsSupplierServiceImpl extends ServiceImpl listByRegionIds(List regionIds, Integer level) { + return supplierApplicationService.listByRegionIds(regionIds, level); + } + @Override public void editBatch(BmsSupplierBatchBo batchBo) { for (BmsSupplierBatchBo.BmsSupplierDto param : batchBo.getSupplierList()) { diff --git a/src/main/java/com/qs/serve/modules/his/entity/HisUserSupplier.java b/src/main/java/com/qs/serve/modules/his/entity/HisUserSupplier.java index 8710f734..7969e883 100644 --- a/src/main/java/com/qs/serve/modules/his/entity/HisUserSupplier.java +++ b/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.NotBlank; +import java.util.List; /** * 供应商负责人 实体类 @@ -110,6 +111,9 @@ public class HisUserSupplier implements Serializable { @TableField(exist = false) private String queryValue; + @TableField(exist = false) + private List selectUserIds; + @TableField(exist = false) private String addressId; diff --git a/src/main/java/com/qs/serve/modules/his/service/HisUserSupplierService.java b/src/main/java/com/qs/serve/modules/his/service/HisUserSupplierService.java index bb7c67d7..ca206934 100644 --- a/src/main/java/com/qs/serve/modules/his/service/HisUserSupplierService.java +++ b/src/main/java/com/qs/serve/modules/his/service/HisUserSupplierService.java @@ -1,6 +1,7 @@ package com.qs.serve.modules.his.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.modules.bms.entity.BmsSupplier; import com.qs.serve.modules.his.entity.HisUserSupplier; @@ -13,7 +14,11 @@ import java.util.List; */ public interface HisUserSupplierService extends IService { - List selectSupplier(BmsSupplier param,boolean usePage); + List selectHisSupplier(BmsSupplier param,boolean usePage); + + List selectListSupplier(BmsSupplier param); + + PageVo selectPageSupplier(BmsSupplier param); boolean initByUserId(String userId,boolean hasCheck); diff --git a/src/main/java/com/qs/serve/modules/his/service/impl/HisUserSupplierServiceImpl.java b/src/main/java/com/qs/serve/modules/his/service/impl/HisUserSupplierServiceImpl.java index 5a00a9b7..45da1c1d 100644 --- a/src/main/java/com/qs/serve/modules/his/service/impl/HisUserSupplierServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/his/service/impl/HisUserSupplierServiceImpl.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; +import com.qs.serve.common.model.dto.PageVo; +import com.qs.serve.common.model.dto.R; import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.common.util.CollectionUtil; import com.qs.serve.common.util.PageUtil; @@ -43,7 +45,7 @@ public class HisUserSupplierServiceImpl extends ServiceImpl selectSupplier(BmsSupplier param, boolean usePage) { + public List selectHisSupplier(BmsSupplier param, boolean usePage) { if(param==null){ param = new BmsSupplier(); } @@ -61,15 +63,32 @@ public class HisUserSupplierServiceImpl extends ServiceImpl(); } HisUserSupplier userSupplier = param.toHisUserSupplier(null,null); - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(userSupplier); - lqw.in(HisUserSupplier::getUserId,userIds); - lqw.ne(HisUserSupplier::getSupplierId,0); + QueryWrapper lqw = new QueryWrapper<>(userSupplier); + lqw.select("distinct his_user_supplier.supplier_id"); + lqw.lambda().in(HisUserSupplier::getUserId,userIds) + .ne(HisUserSupplier::getSupplierId,0); if(usePage){ PageUtil.startPage(); } return this.list(lqw); } + @Override + public List selectListSupplier(BmsSupplier param) { + List hisUserSuppliers = selectHisSupplier(param,false); + List supplierIds = hisUserSuppliers.stream().map(HisUserSupplier::getSupplierId).collect(Collectors.toList()); + List supplierList = bmsSupplierService.listByIds(supplierIds); + return supplierList; + } + + @Override + public PageVo selectPageSupplier(BmsSupplier param) { + List hisUserSuppliers = selectHisSupplier(param,true); + List supplierIds = hisUserSuppliers.stream().map(HisUserSupplier::getSupplierId).collect(Collectors.toList()); + List supplierList = bmsSupplierService.listByIds(supplierIds); + return R.buildPageHelperList(supplierList); + } + @Override public boolean checkInit(String userId) { LambdaQueryWrapper lqwExist = new LambdaQueryWrapper<>(); @@ -159,24 +178,7 @@ public class HisUserSupplierServiceImpl extends ServiceImpl userSuppliers,Integer type,List regionIds,Integer level,String userId){ if(regionIds.size()>0){ - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - if(level.equals(1)){ - lqw.and( - aa->aa.in(BmsSupplier::getRegionFirst,regionIds) - .or().in(BmsSupplier::getRegion2First,regionIds) - ); - }else if(level.equals(2)){ - lqw.and( - aa->aa.in(BmsSupplier::getRegionSecond,regionIds) - .or().in(BmsSupplier::getRegion2Second,regionIds) - ); - }else if(level.equals(3)){ - lqw.and( - aa->aa.in(BmsSupplier::getRegionThird,regionIds) - .or().in(BmsSupplier::getRegion2Third,regionIds) - ); - } - List supplierList = bmsSupplierService.list(lqw); + List supplierList = bmsSupplierService.listByRegionIds(regionIds,level); for (BmsSupplier supplier : supplierList) { HisUserSupplier userSupplier = supplier.toHisUserSupplier(userId,type); userSuppliers.add(userSupplier); diff --git a/src/main/java/com/qs/serve/modules/tbs/common/dto/CostSortWrapper.java b/src/main/java/com/qs/serve/modules/tbs/common/dto/CostSortWrapper.java new file mode 100644 index 00000000..c010899b --- /dev/null +++ b/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 budgetSet4Subject = new HashSet<>(); + Set budgetSet4NoSubject = new HashSet<>(); + + Set budgetSet4Condition = new HashSet<>(); + Set budgetSet4NoCondition = new HashSet<>(); + + + Map> activityCostConditionsOfSort = new HashMap<>(); + Map> activityAllowBudgetId; + + /** + * sort of timeline,filter timeline + * key is activity_id, value is schedule list + */ + Map> activityScheduleItemMap = new HashMap<>(); + + + public void putActivityCostCondition(Long activityId, List list){ + activityCostConditionsOfSort.put(activityId, list); + } + + /** + * 初始化科目排序因子 + * @param budgetList + */ + public void initializeBudget(List 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()); + } + } + } + } + + +} diff --git a/src/main/java/com/qs/serve/modules/tbs/common/util/CostSortWrapperUtil.java b/src/main/java/com/qs/serve/modules/tbs/common/util/CostSortWrapperUtil.java new file mode 100644 index 00000000..900c7b82 --- /dev/null +++ b/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 initializeSort(TbsActivity activity, List list, CostSortWrapper wrapper){ + List resultSortList = new ArrayList<>(); + if(CollectionUtil.isNotEmpty(list)){ + //1.科目限制>品类之间>时间区间 + //2.相同品类,取纬度最小值 + //3.时间区间内,区间长度取最短 + //3.时间区间内,区间长度相同,取最近结束时间 + List tmpList4Subject = new ArrayList<>(); + List 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 list,List result,CostSortWrapper wrapper) { + List tmpList4Condition = new ArrayList<>(); + List 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 list,List result,CostSortWrapper wrapper){ + if(CollectionUtil.isNotEmpty(list)){ + List 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 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 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 list,List 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); + } + } + +} diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java index 5a2054ea..eaf18960 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java @@ -78,10 +78,9 @@ public class TbsCostApplyController { private BmsSupplierService bmsSupplierService; private SysUserService sysUserService; private SeeYonService seeYonService; - private TbsBudgetApplicationService budgetApplicationService; - private SysPostUserService postUserService; + /** * 预览 * @param id diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetApplicationService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetApplicationService.java index 63ea297b..8dcf0c7d 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetApplicationService.java +++ b/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.modules.sys.service.SysConfigService; 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.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.vo.TbsBudgetTableVo; import com.qs.serve.modules.tbs.mapper.TbsActivityGoodsMapper; @@ -187,12 +188,13 @@ public class TbsBudgetApplicationService { Boolean overspend, Boolean throwEx, Boolean buildTableFlag){ + CostSortWrapper costSortWrapper = new CostSortWrapper(); //考核期有关的预算id,判断逻辑为活动需要允许在 List budgetIds = new ArrayList<>(); //没有预算的活动 List noBudgetActivityIds = new ArrayList<>(); //所有满足条件的考核期,用于加载历史核销费用 - List scheduleItemList = this.loadScheduleBudgetAndSetting(activityList, budgetIds, noBudgetActivityIds); + List scheduleItemList = this.loadScheduleBudgetAndSetting(activityList, budgetIds, noBudgetActivityIds,costSortWrapper); List centerIds = activityCenterList.stream().map(TbsActivityCenter::getCenterId).collect(Collectors.toList()); List subjectIds = activitySubjects.stream().map(TbsActivitySubject::getSubjectId).collect(Collectors.toList()); // 加载所有条件 @@ -209,15 +211,18 @@ public class TbsBudgetApplicationService { }else { budgetList = new ArrayList<>(); } + costSortWrapper.initializeBudget(budgetList); List noConditionBudgetList = new ArrayList<>(); //加载预算条件和关联预算匹配,返回是否由无条件预算 boolean budgetNoCondition = this.loadConditionByBudgetsAndMatch(budgetList, noConditionBudgetList); //预算条件需包含活动条件, Map结构:活动id->满足的预算id列表 Map> activityAllowBudgetIdMap = this.buildActivityBudgetMap(activityList, budgetList, noConditionBudgetList); + costSortWrapper.setActivityAllowBudgetId(activityAllowBudgetIdMap); //活动拦截 if(!budgetNoCondition){ this.handleNoBudgetActivity(throwEx, overspend, activityList, noBudgetActivityIds,activityAllowBudgetIdMap); } + //统计所有占用预算金额 Map budgetItemAmountMap = new HashMap<>(scheduleItemList.size()); //统计费用申请占用金额 @@ -241,6 +246,7 @@ public class TbsBudgetApplicationService { } budgetItemAmountMap.put(itemBudget.getId(),budgetItemAmount); } + //统计当前活动前置项占用预算 Map counterMap = new HashMap<>(); //匹配预算主要方法 @@ -248,8 +254,9 @@ public class TbsBudgetApplicationService { final List actUnMatchList = new ArrayList<>(); for (TbsActivityCenterGoods activityCostItem : centerGoodsList) { this.matchActivityMain(activityCostItem,throwEx, overspend, activityList, budgetItemAmountMap, budgetList, - noConditionBudgetList, counterMap, actMatchList, actUnMatchList,activityAllowBudgetIdMap,budgetItemApplyAmountMap); + noConditionBudgetList, counterMap, actMatchList, actUnMatchList,activityAllowBudgetIdMap,budgetItemApplyAmountMap,costSortWrapper); } + List budgetMatchList = actMatchList.stream() .map(TbsActivityCenterGoods::toBudgetCostItem).collect(Collectors.toList()); List budgetUnMatchList = actUnMatchList.stream() @@ -448,7 +455,8 @@ public class TbsBudgetApplicationService { final List actMatchList, final List actUnMatchList, final Map> activityAllowBudgetIdMap, - Map budgetItemApplyAmountMap) { + Map budgetItemApplyAmountMap, + CostSortWrapper costSortWrapper) { //过滤满全条件的预算 List allowBudgetIds = activityAllowBudgetIdMap.get(activityCostItem.getActivityId()); if(CollectionUtil.isEmpty(allowBudgetIds)){ @@ -470,7 +478,7 @@ public class TbsBudgetApplicationService { break; } } - List currentItemBudgetList = this.filterMatchGoodsCondition(budgetList, activityCostItem.getTargetLevelPathIds(),currentActivity); + List currentItemBudgetList = this.filterMatchGoodsCondition(budgetList, activityCostItem.getTargetLevelPathIds(),currentActivity,costSortWrapper); //关联无条件预算 currentItemBudgetList.addAll(noConditionBudgetList); //提取可用预算的考核期 @@ -503,6 +511,9 @@ public class TbsBudgetApplicationService { } } + //进行排序 + currentScheduleItemBudgets = CostSortWrapperUtil.initializeSort(currentActivity,currentScheduleItemBudgets,costSortWrapper); + //检测是否有是否足够预算 BigDecimal goodsAmount = activityCostItem.getCenterGoodsAmount(); if(CollectionUtil.isNotEmpty(currentScheduleItemBudgets)){ @@ -518,7 +529,7 @@ public class TbsBudgetApplicationService { lastAmount = BigDecimal.ZERO; } //判断是否够用 - if(budgetAmount.subtract(lastAmount).subtract(totalUsed).compareTo(goodsAmount)>0){ + if(budgetAmount.subtract(lastAmount).subtract(totalUsed).compareTo(goodsAmount)>-1){ activityCostItem.setBudgetId(itemBudget.getBudgetId()); activityCostItem.setScheduleId(itemBudget.getScheduleId()); activityCostItem.setScheduleItemId(itemBudget.getScheduleItemId()); @@ -588,7 +599,7 @@ public class TbsBudgetApplicationService { * @return */ @NotNull - public List filterMatchGoodsCondition(List budgetList,String targetLevelPathIds,TbsActivity currentActivity) { + public List filterMatchGoodsCondition(List budgetList,String targetLevelPathIds,TbsActivity currentActivity,CostSortWrapper costSortWrapper) { String levelPath = targetLevelPathIds; Set levelPathSet = new LinkedHashSet<>(); levelPathSet.add(levelPath); @@ -611,26 +622,27 @@ public class TbsBudgetApplicationService { } } } - Collections.sort(budgetConditionList, (o1, o2) -> { - int len1 = o1.getTargetLevelPathIds().split("_").length; - int len2 = o2.getTargetLevelPathIds().split("_").length; - if(len1==len2){ - List scheduleItemBudgets = currentActivity.getScheduleItemBudgetList(); - 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(); - } - } - if(day1!=null&&day2!=null){ - return (int) (day1-day2); - } - } - return len2 - len1; - }); + costSortWrapper.putActivityCostCondition(currentActivity.getId(), budgetConditionList); +// Collections.sort(budgetConditionList, (o1, o2) -> { +// int len1 = o1.getTargetLevelPathIds().split("_").length; +// int len2 = o2.getTargetLevelPathIds().split("_").length; +// if(len1==len2){ +// List scheduleItemBudgets = currentActivity.getScheduleItemBudgetList(); +// 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(); +// } +// } +// if(day1!=null&&day2!=null){ +// return (int) (day1-day2); +// } +// } +// return len2 - len1; +// }); List currentItemBudgetList = new ArrayList<>(); for (TbsBudgetCondition condition : budgetConditionList) { for (TbsBudget budget : budgetList) { @@ -703,10 +715,12 @@ public class TbsBudgetApplicationService { * @return scheduleItemList 命中的考核期列表 */ public List loadScheduleBudgetAndSetting(List activityList, - List budgetIds, List noBudgetActivityIds) { + List budgetIds, List noBudgetActivityIds,CostSortWrapper costSortWrapper) { List scheduleItemList = new ArrayList<>(); Set budgetIdsSet = new HashSet<>(); Map allAllowScheduleItemTempMap = new HashMap<>(); + // of sort + Map> activityScheduleItemMapOfSort = new HashMap<>(); for (TbsActivity activity : activityList) { List budgetItemList = tbsScheduleItemBudgetService .betweenDateList(activity.getPreStartDate(),activity.getPreEndDate()); @@ -717,10 +731,12 @@ public class TbsBudgetApplicationService { budgetIdsSet.add(item.getBudgetId()); allAllowScheduleItemTempMap.put(item.getId(),item); } + activityScheduleItemMapOfSort.put(activity.getId(),budgetItemList); }else { noBudgetActivityIds.add(activity.getId()); } } + costSortWrapper.setActivityScheduleItemMap(activityScheduleItemMapOfSort); for (Long tmpId : allAllowScheduleItemTempMap.keySet()) { scheduleItemList.add(allAllowScheduleItemTempMap.get(tmpId)); } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java index 0f3cd44e..6012d62a 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetServiceImpl.java @@ -95,6 +95,8 @@ public class TbsBudgetServiceImpl extends ServiceImpl // if(sameCondition){ // Assert.throwEx("已存在相同条件预算"); // } + budget.setBudgetCode(budgetBo.getBudgetCode()); + budget.setSubjectId(budgetBo.getSubjectId()); BmsSubject subject = null; if(budget.getSubjectId()!=0L){ subject = subjectService.getById(budgetBo.getSubjectId()); diff --git a/src/main/resources/mapper/bms/BmsSupplierChannelMapper.xml b/src/main/resources/mapper/bms/BmsSupplierChannelMapper.xml index 387ca466..a06d8674 100644 --- a/src/main/resources/mapper/bms/BmsSupplierChannelMapper.xml +++ b/src/main/resources/mapper/bms/BmsSupplierChannelMapper.xml @@ -56,7 +56,7 @@ and `bms_channel`.`channel_name` LIKE CONCAT('%',#{query.channelName},'%') and `bms_channel`.`channel_code` LIKE CONCAT('%',#{query.channelCode},'%') - and `bms_channel`.`channel_type` = #{query.channelType} + and `bms_channel`.`channel_type` = #{query.channelType} and `bms_supplier`.`name` LIKE CONCAT('%',#{query.supplierName},'%') and `bms_supplier`.`code` LIKE CONCAT('%',#{query.supplierCode},'%') diff --git a/src/main/resources/mapper/bms/BmsSupplierMapper.xml b/src/main/resources/mapper/bms/BmsSupplierMapper.xml index 3758f784..6f1bcc55 100644 --- a/src/main/resources/mapper/bms/BmsSupplierMapper.xml +++ b/src/main/resources/mapper/bms/BmsSupplierMapper.xml @@ -74,9 +74,7 @@ SELECT DISTINCT his_user_supplier.supplier_id, @@ -89,8 +46,6 @@ and `his_user_supplier`.`biz_region_fourthly` = #{query.bizRegionFourthly} and `his_user_supplier`.`tenant_id` = #{query.tenantId} and `his_user_supplier`.`cost_flag` = #{query.costFlag} - - and `bms_supplier_visit_address`.`address_detail` like concat('%',#{query.queryAddress},'%') and (`bms_supplier_visit_address`.`address_detail` like concat('%',#{query.queryValue},'%') @@ -98,6 +53,13 @@ or `his_user_supplier`.`supplier_code` like concat('%',#{query.queryValue},'%') ) + + and `his_user_supplier`.`user_id` in + + #{selectId} + + + ORDER BY