From 34fa4b5a4ef7e97fdcfcc168b9be946305da5e93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E7=AB=B9=E7=BA=A2?= Date: Tue, 7 May 2024 15:21:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=85=E5=A4=84=E7=90=86=20=E6=88=91?= =?UTF-8?q?=E7=9A=84=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/cool/store/dao/LineInfoDAO.java | 11 +++ .../com/cool/store/dao/ShopStageInfoDAO.java | 6 ++ .../com/cool/store/mapper/LineInfoMapper.java | 3 +- .../store/mapper/ShopStageInfoMapper.java | 7 ++ .../main/resources/mapper/LineInfoMapper.xml | 16 ++- .../resources/mapper/ShopStageInfoMapper.xml | 35 +++++++ .../cool/store/dto/InvestmentCountDTO.java | 29 ++++++ .../vo/desk/PreparationCommonPendingVO.java | 33 +++++++ .../com/cool/store/service/DeskService.java | 45 +++++++++ .../store/service/impl/DeskServiceImpl.java | 98 ++++++++++++++++++- .../store/controller/webb/DeskController.java | 46 +++++++++ 11 files changed, 326 insertions(+), 3 deletions(-) create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/InvestmentCountDTO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/vo/desk/PreparationCommonPendingVO.java diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/LineInfoDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/LineInfoDAO.java index e342d85cc..5357e9e4d 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/LineInfoDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/LineInfoDAO.java @@ -1,5 +1,6 @@ package com.cool.store.dao; +import com.cool.store.dto.InvestmentCountDTO; import com.cool.store.dto.PendingCountDTO; import com.cool.store.dto.openPreparation.PlanLineDTO; import com.cool.store.entity.LineInfoDO; @@ -144,6 +145,16 @@ public class LineInfoDAO { PendingCountDTO pendingCount = lineInfoMapper.pendingCount(userId); return pendingCount; } + + public InvestmentCountDTO investmentData(String userId) { + if (StringUtils.isBlank(userId)){ + return null; + } + InvestmentCountDTO investmentData = lineInfoMapper.investmentData(userId); + return investmentData; + } + + public List getLines(List lineIdList){ return lineInfoMapper.getLines(lineIdList); } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopStageInfoDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopStageInfoDAO.java index b4e182f8f..f21ffe11c 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopStageInfoDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopStageInfoDAO.java @@ -224,4 +224,10 @@ public class ShopStageInfoDAO { return shopStageInfoMapper.getShopContractIncompletion(); } + + public List getSpecialShopStageInfo(List shopIds, Integer shopSubStage, + List shopSubStageStatusList,String investmentUserId,Integer queryUserType){ + return shopStageInfoMapper.getSpecialShopStageInfo( shopIds, shopSubStage, shopSubStageStatusList,investmentUserId,queryUserType); + } + } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/LineInfoMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/LineInfoMapper.java index d4479ddd7..fb9a4bf5b 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/LineInfoMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/LineInfoMapper.java @@ -1,5 +1,6 @@ package com.cool.store.mapper; +import com.cool.store.dto.InvestmentCountDTO; import com.cool.store.dto.PendingCountDTO; import com.cool.store.dto.openPreparation.PlanLineDTO; import com.cool.store.entity.LineInfoDO; @@ -73,7 +74,7 @@ public interface LineInfoMapper extends Mapper { */ PendingCountDTO pendingCount(@Param("userId") String userId); - + InvestmentCountDTO investmentData(@Param("userId") String userId); diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopStageInfoMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopStageInfoMapper.java index a5ea6e4d0..4e096e609 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopStageInfoMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopStageInfoMapper.java @@ -124,4 +124,11 @@ public interface ShopStageInfoMapper extends Mapper { */ List getShopContractIncompletion(); + + List getSpecialShopStageInfo(@Param("shopIds") List shopIds, + @Param("shopSubStage") Integer shopSubStage, + @Param("shopSubStageStatusList") List shopSubStageStatusList, + @Param("investmentUserId") String investmentUserId, + @Param("queryUserType") Integer queryUserType); + } diff --git a/coolstore-partner-dao/src/main/resources/mapper/LineInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/LineInfoMapper.xml index 8a2195410..c34d93bf4 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/LineInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/LineInfoMapper.xml @@ -357,6 +357,20 @@ xfsg_line_info where deleted = 0 and line_status = 1 + + + + \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/InvestmentCountDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/InvestmentCountDTO.java new file mode 100644 index 000000000..980b445a3 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/InvestmentCountDTO.java @@ -0,0 +1,29 @@ +package com.cool.store.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author suzhuhong + * @Date 2024/5/7 15:08 + * @Version 1.0 + */ +@Data +public class InvestmentCountDTO { + + @ApiModelProperty("意向加盟数量") + private Integer intendCount; + @ApiModelProperty("邀约面谈数据") + private Integer interviewCount; + @ApiModelProperty("一审面试数据") + private Integer firstInterviewCount; + @ApiModelProperty("缴纳意向金数据") + private Integer payStageCount; + @ApiModelProperty("意向签约数据") + private Integer signingCount; + @ApiModelProperty("门店体验数量") + private Integer storeExperienceCount; + @ApiModelProperty("二审面试数据") + private Integer secondInterviewCount; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/desk/PreparationCommonPendingVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/desk/PreparationCommonPendingVO.java new file mode 100644 index 000000000..d1b895779 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/desk/PreparationCommonPendingVO.java @@ -0,0 +1,33 @@ +package com.cool.store.vo.desk; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author suzhuhong + * @Date 2024/5/7 10:48 + * @Version 1.0 + */ +@Data +public class PreparationCommonPendingVO { + + @ApiModelProperty("门店名称") + private String storeName; + @ApiModelProperty("门店负责人名称") + private String shopManagerUserName; + @ApiModelProperty("招商经理名称") + private String partnerName; + @ApiModelProperty("手机号") + private String partnerPhone; + @ApiModelProperty("所属战区") + private String regionNodeName; + @ApiModelProperty("阶段状态") + private Integer subStageStatus; + @ApiModelProperty("线索ID") + private Long lineId; + @ApiModelProperty("店铺ID") + private Long shopId; + @ApiModelProperty("提交时间") + private String submitTime; + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/DeskService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/DeskService.java index e2b2d4f1a..33023a2e2 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/DeskService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/DeskService.java @@ -1,6 +1,7 @@ package com.cool.store.service; import com.cool.store.context.LoginUserInfo; +import com.cool.store.dto.InvestmentCountDTO; import com.cool.store.dto.PendingCountDTO; import com.cool.store.entity.HyPartnerLabelDO; import com.cool.store.entity.LineInfoDO; @@ -106,4 +107,48 @@ public interface DeskService { */ PendingCountDTO getPendingCount(LoginUserInfo user); + InvestmentCountDTO getInvestmentCount(LoginUserInfo user); + + + /** + * 系统建店待处理数据 + * @param pageNum + * @param pageSize + * @param user + * @return + */ + PageInfo systemBuildStorePendingList(Integer pageNum, Integer pageSize, LoginUserInfo user); + /** + * 缴纳加盟费待处理数据 + * @param pageNum + * @param pageSize + * @param user + * @return + */ + PageInfo payFranchiseFeesPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user); + /** + * 加盟合同签约待处理数据 + * @param pageNum + * @param pageSize + * @param user + * @return + */ + PageInfo signingOfFranchiseContractPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user); + /** + * 开业运营方案待处理数据 + * @param pageNum + * @param pageSize + * @param user + * @return + */ + PageInfo openingAndOperationPlanPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user); + /** + * 首批订货清单待处理数据 + * @param pageNum + * @param pageSize + * @param user + * @return + */ + PageInfo firstOrderListPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user); + } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DeskServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DeskServiceImpl.java index c59f00ace..3278e6a8d 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DeskServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DeskServiceImpl.java @@ -3,16 +3,21 @@ package com.cool.store.service.impl; import cn.hutool.core.bean.BeanUtil; import com.cool.store.context.LoginUserInfo; import com.cool.store.dao.*; +import com.cool.store.dto.InvestmentCountDTO; import com.cool.store.dto.PendingCountDTO; +import com.cool.store.dto.openPreparation.PlanLineDTO; import com.cool.store.entity.*; import com.cool.store.enums.InterviewTypeEnum; import com.cool.store.enums.WorkflowSubStageStatusEnum; +import com.cool.store.enums.point.ShopSubStageEnum; +import com.cool.store.enums.point.ShopSubStageStatusEnum; import com.cool.store.mapper.IntentAgreementMapper; -import com.cool.store.mapper.LineInterviewMapper; import com.cool.store.mapper.TrainingExperienceMapper; import com.cool.store.service.DeskService; +import com.cool.store.service.RegionService; import com.cool.store.utils.StringUtil; import com.cool.store.utils.poi.DateUtils; +import com.cool.store.utils.poi.constant.Constants; import com.cool.store.vo.BaseInfoVO; import com.cool.store.vo.LabelBaseInfoVO; import com.cool.store.vo.desk.*; @@ -47,6 +52,14 @@ public class DeskServiceImpl implements DeskService { IntentAgreementMapper intentAgreementMapper; @Resource TrainingExperienceMapper trainingExperienceMapper; + @Resource + ShopStageInfoDAO shopStageInfoDAO; + @Resource + ShopInfoDAO shopInfoDAO; + @Resource + EnterpriseUserDAO enterpriseUserDAO; + @Resource + RegionService regionService; @Override public PageInfo intendPendingList(Integer pageNum, Integer pageSize,String userId) { @@ -300,4 +313,87 @@ public class DeskServiceImpl implements DeskService { return pendingCount; } + @Override + public InvestmentCountDTO getInvestmentCount(LoginUserInfo user) { + return lineInfoDAO.investmentData(user.getUserId()); + } + + + @Override + public PageInfo systemBuildStorePendingList(Integer pageNum, Integer pageSize, LoginUserInfo user) { + return commonPendingVOPageInfo(pageNum, pageSize, user, ShopSubStageEnum.SHOP_STAGE_3, Arrays.asList(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_30.getShopSubStageStatus()), Constants.ZERO_INTEGER); + } + + @Override + public PageInfo payFranchiseFeesPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user) { + return commonPendingVOPageInfo(pageNum, pageSize, user, ShopSubStageEnum.SHOP_STAGE_7, + Arrays.asList(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_70.getShopSubStageStatus(),ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_72.getShopSubStageStatus()), Constants.ZERO_INTEGER); + } + + @Override + public PageInfo signingOfFranchiseContractPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user) { + return commonPendingVOPageInfo(pageNum, pageSize, user, ShopSubStageEnum.SHOP_STAGE_8, + Arrays.asList(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_80.getShopSubStageStatus(),ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_85.getShopSubStageStatus()), Constants.ZERO_INTEGER); + } + + @Override + public PageInfo openingAndOperationPlanPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user) { + return commonPendingVOPageInfo(pageNum, pageSize, user, ShopSubStageEnum.SHOP_STAGE_14, Arrays.asList(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_140.getShopSubStageStatus()), Constants.ONE_INTEGER); + } + + @Override + public PageInfo firstOrderListPendingList(Integer pageNum, Integer pageSize, LoginUserInfo user) { + return commonPendingVOPageInfo(pageNum, pageSize, user, ShopSubStageEnum.SHOP_STAGE_15, Arrays.asList(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_150.getShopSubStageStatus()), Constants.ONE_INTEGER); + } + + + /** + * 通用查询 + * @param pageNum + * @param pageSize + * @param user + * @param shopSubStageEnum + * @param subStageStatusList + * @return + */ + private PageInfo commonPendingVOPageInfo(Integer pageNum, Integer pageSize, LoginUserInfo user,ShopSubStageEnum shopSubStageEnum,List subStageStatusList,Integer type){ + PageHelper.startPage(pageNum, pageSize); + List specialShopStageInfo = shopStageInfoDAO.getSpecialShopStageInfo(null, shopSubStageEnum.getShopSubStage(), + subStageStatusList, user.getUserId(),type); + PageInfo result = new PageInfo<>(specialShopStageInfo); + List shopIds = specialShopStageInfo.stream().map(ShopStageInfoDO::getShopId).collect(Collectors.toList()); + List lineIds = specialShopStageInfo.stream().map(ShopStageInfoDO::getLineId).collect(Collectors.toList()); + List shopInfoList = shopInfoDAO.getShopListByIds(shopIds); + List lines = lineInfoDAO.getLines(lineIds); + + //将shopInfoList 转为map + Map shopInfoMap = shopInfoList.stream().collect(Collectors.toMap(ShopInfoDO::getId, shop -> shop)); + //将lines 转为map + Map lineMap = lines.stream().collect(Collectors.toMap(PlanLineDTO::getLineId, line -> line)); + + + List regionIds = shopInfoList.stream().map(ShopInfoDO::getRegionId).distinct().collect(Collectors.toList()); + List developmentManagers = shopInfoList.stream().filter(x->StringUtil.isNotEmpty(x.getShopManagerUserId())).map(ShopInfoDO::getShopManagerUserId).distinct().collect(Collectors.toList()); + Map userNameMap = enterpriseUserDAO.getUserNameMap(developmentManagers); + Map regionNameMap = regionService.getBelongWarRegionNameMap(regionIds); + + List list = new ArrayList<>(); + specialShopStageInfo.forEach(x->{ + PreparationCommonPendingVO preparationCommonPendingVO = new PreparationCommonPendingVO(); + preparationCommonPendingVO.setLineId(x.getLineId()); + preparationCommonPendingVO.setShopId(x.getShopId()); + preparationCommonPendingVO.setSubStageStatus(x.getShopSubStageStatus()); + ShopInfoDO shopInfoDO = shopInfoMap.getOrDefault(x.getShopId(),new ShopInfoDO()); + preparationCommonPendingVO.setStoreName(shopInfoDO.getShopName()); + PlanLineDTO planLineDTO = lineMap.getOrDefault(x.getLineId(), new PlanLineDTO()); + preparationCommonPendingVO.setPartnerName(planLineDTO.getUsername()); + preparationCommonPendingVO.setPartnerPhone(planLineDTO.getMobile()); + preparationCommonPendingVO.setShopManagerUserName(userNameMap.getOrDefault(shopInfoDO.getShopManagerUserId(),"")); + preparationCommonPendingVO.setRegionNodeName(regionNameMap.getOrDefault(shopInfoDO.getRegionId(),"")); + list.add(preparationCommonPendingVO); + }); + result.setList(list); + return result; + } + } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/DeskController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/DeskController.java index 9848043a7..c332a8d71 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/DeskController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/DeskController.java @@ -2,6 +2,7 @@ package com.cool.store.controller.webb; import com.cool.store.context.CurrentUserHolder; import com.cool.store.context.LoginUserInfo; +import com.cool.store.dto.InvestmentCountDTO; import com.cool.store.dto.PendingCountDTO; import com.cool.store.response.ResponseResult; import com.cool.store.service.DeskService; @@ -97,4 +98,49 @@ public class DeskController { } + @ApiOperation("招商经理-我的数据") + @GetMapping("/getInvestmentCount") + public ResponseResult getInvestmentCount(@RequestParam(value = "pageNumber",required = true,defaultValue = "1")Integer pageNumber, + @RequestParam(value = "pageSize",required = true,defaultValue = "10")Integer pageSize) { + LoginUserInfo userInfo = CurrentUserHolder.getUser(); + return ResponseResult.success(deskService.getInvestmentCount(userInfo)); + } + + + @ApiOperation("待处理-系统建店") + @GetMapping("/systemBuildStorePendingList") + public ResponseResult> systemBuildStorePendingList(@RequestParam(value = "pageNumber",required = true,defaultValue = "1")Integer pageNumber, + @RequestParam(value = "pageSize",required = true,defaultValue = "10")Integer pageSize) { + LoginUserInfo userInfo = CurrentUserHolder.getUser(); + return ResponseResult.success(deskService.systemBuildStorePendingList(pageNumber,pageSize,userInfo)); + } + @ApiOperation("待处理-支付加盟费保证金") + @GetMapping("/payFranchiseFeesPendingList") + public ResponseResult> payFranchiseFeesPendingList(@RequestParam(value = "pageNumber",required = true,defaultValue = "1")Integer pageNumber, + @RequestParam(value = "pageSize",required = true,defaultValue = "10")Integer pageSize) { + LoginUserInfo userInfo = CurrentUserHolder.getUser(); + return ResponseResult.success(deskService.payFranchiseFeesPendingList(pageNumber,pageSize,userInfo)); + } + @ApiOperation("待处理-签约加盟合同") + @GetMapping("/signingOfFranchiseContractPendingList") + public ResponseResult> signingOfFranchiseContractPendingList(@RequestParam(value = "pageNumber",required = true,defaultValue = "1")Integer pageNumber, + @RequestParam(value = "pageSize",required = true,defaultValue = "10")Integer pageSize) { + LoginUserInfo userInfo = CurrentUserHolder.getUser(); + return ResponseResult.success(deskService.signingOfFranchiseContractPendingList(pageNumber,pageSize,userInfo)); + } + @ApiOperation("待处理-开店运营方案") + @GetMapping("/openingAndOperationPlanPendingList") + public ResponseResult> openingAndOperationPlanPendingList(@RequestParam(value = "pageNumber",required = true,defaultValue = "1")Integer pageNumber, + @RequestParam(value = "pageSize",required = true,defaultValue = "10")Integer pageSize) { + LoginUserInfo userInfo = CurrentUserHolder.getUser(); + return ResponseResult.success(deskService.openingAndOperationPlanPendingList(pageNumber,pageSize,userInfo)); + } + @ApiOperation("待处理-首批订货清单") + @GetMapping("/firstOrderListPendingList") + public ResponseResult> firstOrderListPendingList(@RequestParam(value = "pageNumber",required = true,defaultValue = "1")Integer pageNumber, + @RequestParam(value = "pageSize",required = true,defaultValue = "10")Integer pageSize) { + LoginUserInfo userInfo = CurrentUserHolder.getUser(); + return ResponseResult.success(deskService.firstOrderListPendingList(pageNumber,pageSize,userInfo)); + } + }