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 9fdee8a4..d0f546ce 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 @@ -44,6 +44,7 @@ public class BmsChannelMyController { private BmsChannelService bmsChannelService; private BmsMasterUserService bmsMasterUserService; private SysPostUserService postUserService; + private BmsSupplierService bmsSupplierService; private BmsSupplierChannelService bmsSupplierChannelService; /** @@ -64,6 +65,58 @@ public class BmsChannelMyController { return R.byPageHelperList(list); } + /** + * 导出列表 + * @param param + * @return + */ + @GetMapping("/export") + public R> export(BmsChannel param){ + + LambdaQueryWrapper channelWrapper = new LambdaQueryWrapper<>(param); + channelWrapper.orderByDesc(BmsChannel::getCreateTime); + if(param.getSelectStartTime()!=null) { + channelWrapper.ge(BmsChannel::getCreateTime, param.getSelectStartTime()); + channelWrapper.isNotNull(BmsChannel::getCreateBy); + } + if(param.getSelectEndTime()!=null) { + channelWrapper.le(BmsChannel::getCreateTime, param.getSelectEndTime()); + channelWrapper.isNotNull(BmsChannel::getCreateBy); + } + if(CollectionUtil.isNotEmpty(param.getSelectIds())){ + channelWrapper.in(BmsChannel::getId, param.getSelectIds()); + } + + //过滤为当前负责人 + LambdaQueryWrapper masterLqw = new LambdaQueryWrapper<>(); + masterLqw.eq(BmsMasterUser::getType,MasterUserType.Channel); + masterLqw.eq(BmsMasterUser::getUserId,AuthContextUtils.getSysUserId()); + List masterUsers = bmsMasterUserService.list(masterLqw); + List ids = masterUsers.stream().map(BmsMasterUser::getTargetId).collect(Collectors.toList()); + ids.add("#"); + channelWrapper.in(BmsChannel::getId,ids); + List list = bmsChannelService.list(channelWrapper); + + List channelIds = list.stream().map(a->a.getId()).collect(Collectors.toList()); + if(channelIds.size()>0) { + LambdaQueryWrapper supplierChannelLambdaQueryWrapper = new LambdaQueryWrapper<>(); + supplierChannelLambdaQueryWrapper.in(BmsSupplierChannel::getChannelId, channelIds); + List supplierChannelList = bmsSupplierChannelService.list(supplierChannelLambdaQueryWrapper); + List supplierIds = supplierChannelList.stream().map(a->a.getSupplierId().toString()).distinct().collect(Collectors.toList()); + if(supplierIds.size()>0){ + LambdaQueryWrapper supplierLqw = new LambdaQueryWrapper(); + supplierLqw.in(BmsSupplier::getId,supplierIds); + List supplierList = bmsSupplierService.list(supplierLqw); + list.forEach(a->{ + List supplierIdList = supplierChannelList.stream().filter(b->b.getChannelId().equals(a.getId())).map(b->b.getSupplierId()+"").collect(Collectors.toList()); + List supplierNames = supplierList.stream().filter(b->supplierIdList.contains(b.getId())).map(b->b.getName()).collect(Collectors.toList()); + a.setSupplierNames(supplierNames); + }); + } + } + return R.ok(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 dee76be1..b5fc60c3 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 @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.qs.serve.common.model.annotation.SysLog; import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.model.dto.RowParam; import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.util.*; @@ -59,9 +60,96 @@ public class BmsChannelPointMyController { private SysUserService sysUserService; private BmsRegionUserService bmsRegionUserService; private SysPostUserService postUserService; + private BmsChannelService bmsChannelService; private BmsMasterUserService bmsMasterUserService; private BmsSupplierChannelService bmsSupplierChannelService; + /** + * 导出 + * @param param + * @return + */ + @GetMapping("/export") + @PreAuthorize("hasRole('bms:channelPoint:query')") + public R> export(BmsChannelPoint param){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(param); + lqw.orderByDesc(BmsChannelPoint::getCreateTime); + if(param.getSelectStartTime()!=null) { + lqw.ge(BmsChannelPoint::getCreateTime, param.getSelectStartTime()); + lqw.isNotNull(BmsChannelPoint::getCreateBy); + } + if(param.getSelectEndTime()!=null) { + lqw.le(BmsChannelPoint::getCreateTime, param.getSelectEndTime()); + lqw.isNotNull(BmsChannelPoint::getCreateBy); + } + if(CollectionUtil.isNotEmpty(param.getSelectIds())){ + lqw.in(BmsChannelPoint::getId, param.getSelectIds()); + } + + //过滤为当前负责人 + LambdaQueryWrapper masterLqw = new LambdaQueryWrapper<>(); + masterLqw.in(BmsMasterUser::getType,MasterUserType.Channel,MasterUserType.Point); + masterLqw.eq(BmsMasterUser::getUserId,AuthContextUtils.getSysUserId()); + List masterUsers = bmsMasterUserService.list(masterLqw); + Map> masterUsersMap = masterUsers.stream().collect(Collectors.groupingBy(BmsMasterUser::getType)); + List channelMasterList = masterUsersMap.get(MasterUserType.Channel); + List pointMasterList = masterUsersMap.get(MasterUserType.Point); + List channelIds = new ArrayList<>(); + List pointIds = new ArrayList<>(); + channelIds.add("#"); + pointIds.add("#"); + if(CollectionUtil.isNotEmpty(channelMasterList)){ + List channelMasterIdsTmp = channelMasterList.stream().map(BmsMasterUser::getTargetId).collect(Collectors.toList()); + channelIds.addAll(channelMasterIdsTmp); + } + if(CollectionUtil.isNotEmpty(pointMasterList)){ + List pointMasterIdsTmp = pointMasterList.stream().map(BmsMasterUser::getTargetId).collect(Collectors.toList()); + pointIds.addAll(pointMasterIdsTmp); + } + lqw.and(qw->{ + qw.in(BmsChannelPoint::getChannelId,channelIds).or().in(BmsChannelPoint::getId,pointIds); + }); + + List list = bmsChannelPointService.list(lqw); + List bizRegionIds = new ArrayList<>(); + bizRegionIds.addAll(list.stream().filter(a->a.getBizRegionId()!=null).map(a->a.getBizRegionId()).collect(Collectors.toList())); + bizRegionIds = bizRegionIds.stream().distinct().collect(Collectors.toList()); + List region2List = new ArrayList<>(); + if(bizRegionIds.size()>0){ + LambdaQueryWrapper region2LambdaQueryWrapper = new LambdaQueryWrapper<>(); + region2LambdaQueryWrapper.in(BmsRegion2::getId,bizRegionIds); + region2List = bmsRegion2Service.list(region2LambdaQueryWrapper); + } + Map idToBizRegion = region2List.stream().collect(Collectors.toMap(BmsRegion2::getId, a->a)); + + for (BmsChannelPoint channelPoint : list) { + Long channelId = channelPoint.getChannelId(); + BmsChannel channel = bmsChannelService.getById(channelId); + if(channel!=null){ + channelPoint.setChannelName(channel.getChannelName()); + channelPoint.setChannelCode(channel.getChannelCode()); + channelPoint.setChannelType(channel.getChannelType()); + } + if(StringUtils.hasText(channelPoint.getBizRegionPath())){ + String[] bizRegions = channelPoint.getBizRegionPath().split("_"); + if(bizRegions.length>0){ + channelPoint.setBizRegionName(bizRegions[bizRegions.length-1]); + } + BmsRegion2 region2 = idToBizRegion.get(channelPoint.getBizRegionId()); + if(region2!=null){ + channelPoint.setBizRegionCode(region2.getCode()); + } + } + if(StringUtils.hasText(channelPoint.getSaleRegionPath())){ + String[] regions = channelPoint.getSaleRegionPath().split("_"); + if(regions.length>0){ + channelPoint.setSaleRegionName(regions[regions.length-1]); + } + } + } + return R.ok(list); + } + /** * 我负责的网店 @@ -74,7 +162,7 @@ public class BmsChannelPointMyController { if(count<1L){ return R.byEmptyList(); } - List list = bmsChannelPointService.selectChannelPointMyList(param, Arrays.asList(AuthContextUtils.getSysUserId())); + List list = bmsChannelPointService.selectChannelPointMyList(param, Arrays.asList(AuthContextUtils.getSysUserId()),new RowParam(true)); List bizRegionIds = new ArrayList<>(); bizRegionIds.addAll(list.stream().filter(a->a.getBizRegionId()!=null).map(a->a.getBizRegionId()).collect(Collectors.toList())); @@ -131,7 +219,7 @@ public class BmsChannelPointMyController { if(count < 1L){ return R.byEmptyList(); } - List pageList = bmsChannelPointService.selectChannelPointMyList(param, userIds); + List pageList = bmsChannelPointService.selectChannelPointMyList(param, userIds,new RowParam(true)); List bizRegionIds = new ArrayList<>(); bizRegionIds.addAll(pageList.stream().filter(a->a.getBizRegionId()!=null).map(a->a.getBizRegionId()).collect(Collectors.toList())); bizRegionIds = bizRegionIds.stream().distinct().collect(Collectors.toList()); @@ -184,7 +272,7 @@ public class BmsChannelPointMyController { if(count < 1L){ return R.byEmptyList(); } - List pageList = bmsChannelPointService.selectChannelPointMyList(param, userIds); + List pageList = bmsChannelPointService.selectChannelPointMyList(param, userIds,new RowParam(true)); List bizRegionIds = new ArrayList<>(); bizRegionIds.addAll(pageList.stream().filter(a->a.getBizRegionId()!=null).map(a->a.getBizRegionId()).collect(Collectors.toList())); bizRegionIds = bizRegionIds.stream().distinct().collect(Collectors.toList()); 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 a7baf8b1..3d80513b 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 @@ -8,6 +8,7 @@ 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.bo.BmsSupplierExcelBo; 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; @@ -21,10 +22,8 @@ import com.qs.serve.modules.wx.entity.WxUser; import com.qs.serve.modules.wx.service.WxUserService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.Arrays; @@ -235,6 +234,30 @@ public class BmsSupplierMyController { } + @PostMapping("/exportExcel") + @PreAuthorize("hasRole('bms:supplier:query')") + public R> exportExcel(@RequestBody BmsSupplier param){ + param = this.initQueryParam(param); + param.setCurrUserId(AuthContextUtils.getSysUserId()); + List list = bmsSupplierService.selectSupplierList(param); + initSupplierList(list); + initParentList(list); + List boList = list.stream().map(a->BmsSupplierExcelBo.toExcelBo(a)).collect(Collectors.toList()); + return R.ok(boList); + } + + + private void initParentList(List list){ + for (BmsSupplier supplier : list) { + if(StringUtils.hasText(supplier.getPid())&&!supplier.getPid().equals("0")){ + BmsSupplier parentInfo = bmsSupplierService.getById(supplier.getPid()); + supplier.setParentRegionInfo(parentInfo); + }else { + supplier.setPid(null); + } + } + } + /** * 显示关联 @@ -351,5 +374,90 @@ public class BmsSupplierMyController { hisUserSupplierService.selectListSupplier(param); return R.ok(); } + + + private BmsSupplier initQueryParam(BmsSupplier param){ + //兼容 前端接错参数 + if(param.getSupplierName()!=null){ + param.setName(param.getSupplierName()); + } + if(param.getSupplierCode()!=null){ + param.setCode(param.getSupplierCode()); + } + + if(StringUtils.hasText(param.getRegion2Label())){ + LambdaQueryWrapper region2LambdaQueryWrapper = new LambdaQueryWrapper<>(); + region2LambdaQueryWrapper.like(BmsRegion2::getPathNames,param.getRegion2Label()); + List region2List = bmsRegion2Service.list(region2LambdaQueryWrapper); + if(region2List.size()>0) { + param.setRegion2Ids(region2List.stream().map(a -> a.getId()).collect(Collectors.toList())); + }else{ + param.setRegion2Ids(Arrays.asList("#")); + } + } + if(StringUtils.hasText(param.getSearchRegion2FirstName())){ + LambdaQueryWrapper region2LambdaQueryWrapper = new LambdaQueryWrapper<>(); + region2LambdaQueryWrapper.like(BmsRegion2::getName,param.getSearchRegion2FirstName()); + List region2List = bmsRegion2Service.list(region2LambdaQueryWrapper); + if(region2List.size()>0) { + param.setSearchRegion2First(region2List.stream().map(a -> a.getId()).collect(Collectors.toList())); + }else{ + param.setSearchRegion2First(Arrays.asList("#")); + } + } + if(StringUtils.hasText(param.getSearchRegion2SecondName())){ + LambdaQueryWrapper region2LambdaQueryWrapper = new LambdaQueryWrapper<>(); + region2LambdaQueryWrapper.like(BmsRegion2::getName,param.getSearchRegion2SecondName()); + List region2List = bmsRegion2Service.list(region2LambdaQueryWrapper); + if(region2List.size()>0) { + param.setSearchRegion2Second(region2List.stream().map(a -> a.getId()).collect(Collectors.toList())); + }else{ + param.setSearchRegion2Second(Arrays.asList("#")); + } + } + if(StringUtils.hasText(param.getSearchRegion2ThirdName())){ + LambdaQueryWrapper region2LambdaQueryWrapper = new LambdaQueryWrapper<>(); + region2LambdaQueryWrapper.like(BmsRegion2::getName,param.getSearchRegion2ThirdName()); + List region2List = bmsRegion2Service.list(region2LambdaQueryWrapper); + if(region2List.size()>0) { + param.setSearchRegion2Third(region2List.stream().map(a -> a.getId()).collect(Collectors.toList())); + }else{ + param.setSearchRegion2Third(Arrays.asList("#")); + } + } + + if(StringUtils.hasText(param.getRegionLabel())){ + LambdaQueryWrapper regionLambdaQueryWrapper = new LambdaQueryWrapper<>(); + regionLambdaQueryWrapper.like(BmsRegion::getPathNames,param.getRegionLabel()); + List regionList = bmsRegionService.list(regionLambdaQueryWrapper); + if(regionList.size()>0) { + param.setRegionIds(regionList.stream().map(a -> a.getId()).collect(Collectors.toList())); + }else{ + param.setRegion2Ids(Arrays.asList("#")); + } + } + if(StringUtils.hasText(param.getSearchRegionFirstName())){ + LambdaQueryWrapper regionLambdaQueryWrapper = new LambdaQueryWrapper<>(); + regionLambdaQueryWrapper.like(BmsRegion::getName,param.getSearchRegionFirstName()); + List regionList = bmsRegionService.list(regionLambdaQueryWrapper); + if(regionList.size()>0) { + param.setSearchRegionFirst(regionList.stream().map(a -> a.getId()).collect(Collectors.toList())); + }else{ + param.setSearchRegionFirst(Arrays.asList("#")); + } + } + if(StringUtils.hasText(param.getSearchRegionSecondName())){ + LambdaQueryWrapper regionLambdaQueryWrapper = new LambdaQueryWrapper<>(); + regionLambdaQueryWrapper.like(BmsRegion::getName,param.getSearchRegionSecondName()); + List regionList = bmsRegionService.list(regionLambdaQueryWrapper); + if(regionList.size()>0) { + param.setSearchRegionSecond(regionList.stream().map(a -> a.getId()).collect(Collectors.toList())); + }else{ + param.setSearchRegionSecond(Arrays.asList("#")); + } + } + return param; + } + } diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsChannelPointService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsChannelPointService.java index 853cac98..a409c59b 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/BmsChannelPointService.java +++ b/src/main/java/com/qs/serve/modules/bms/service/BmsChannelPointService.java @@ -2,6 +2,7 @@ package com.qs.serve.modules.bms.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.qs.serve.common.model.dto.RowParam; import com.qs.serve.modules.bms.entity.BmsChannelPoint; import com.qs.serve.modules.bms.entity.bo.BmsChannelPointBo; import org.apache.ibatis.annotations.Param; @@ -20,7 +21,7 @@ public interface BmsChannelPointService extends IService { List selectChannelPointList(BmsChannelPoint channelPoint); - List selectChannelPointMyList(BmsChannelPoint channelPoint, List userIds); + List selectChannelPointMyList(BmsChannelPoint channelPoint, List userIds, RowParam rowParam); Long selectCountChannelPointMyList(BmsChannelPoint channelPoint, List userIds); 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 9a221558..da6f35c9 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 @@ -122,8 +122,8 @@ public class BmsChannelPointServiceImpl extends ServiceImpl selectChannelPointMyList(BmsChannelPoint channelPoint, List userIds) { - return baseMapper.selectPointByUserIds(channelPoint, userIds,channelPoint.getSupplierId(),new RowParam(true)); + public List selectChannelPointMyList(BmsChannelPoint channelPoint, List userIds,RowParam rowParam) { + return baseMapper.selectPointByUserIds(channelPoint, userIds,channelPoint.getSupplierId(),rowParam); } @Override