From 9e7b5dd397e17fe141cc7630df51699125857756 Mon Sep 17 00:00:00 2001 From: jiangqs <jiangqs> Date: 星期二, 20 六月 2023 18:35:35 +0800 Subject: [PATCH] BUG修复和营销统计 --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 151 +++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 136 insertions(+), 15 deletions(-) diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java index cf27bba..02652ac 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java @@ -982,7 +982,9 @@ // 将set中的shopId转换为逗号分隔的字符串 String joinedString = String.join(",", set); // 通过remoteShopService获取MgtSimpleShopVoList - List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(joinedString).getData(); + MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto(); + mgtBaseBathDto.setIds(joinedString); + List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData(); // 将MgtSimpleShopVoList转换为Map<Long, MgtSimpleShopVo>,以便后续根据shopId获取对应的MgtSimpleShopVo Map<Long, MgtSimpleShopVo> map = simpleShopVoList.stream() .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity())); @@ -1043,16 +1045,22 @@ String shopJoinedString = String.join(",", shopIdSet.stream().map(Object::toString).collect(Collectors.toList())); String userJoinedString = String.join(",", userIdSet.stream().map(Object::toString).collect(Collectors.toList())); // 从远程服务获取店铺和用户信息 - List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(shopJoinedString).getData(); + MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto(); + mgtBaseBathDto.setIds(shopJoinedString); + List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData(); Map<Long, MgtSimpleShopVo> shopMap = simpleShopVoList.stream() .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity())); - List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(userJoinedString).getData(); + mgtBaseBathDto = new MgtBaseBathDto(); + mgtBaseBathDto.setIds(userJoinedString); + List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData(); Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream() .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity())); // 遍历列表,设置店铺名称、用户名称和未支付金额 for (MgtActivityOrderPageVo mgtActivityOrderPageVo : activityOrderPageVoList) { mgtActivityOrderPageVo.setShopName(shopMap.get(mgtActivityOrderPageVo.getShopId()).getShopName()); - mgtActivityOrderPageVo.setUserName(userMap.get(mgtActivityOrderPageVo.getUserId()).getUserName()); + if(userMap.get(mgtActivityOrderPageVo.getUserId())!=null){ + mgtActivityOrderPageVo.setUserName(userMap.get(mgtActivityOrderPageVo.getUserId()).getNickName()); + } BigDecimal unPaidMoney = mgtActivityOrderPageVo.getReceivableMoney().subtract(mgtActivityOrderPageVo.getPayMoney()); mgtActivityOrderPageVo.setUnPaidMoney(unPaidMoney == null ? zeroBig : unPaidMoney); } @@ -1149,20 +1157,35 @@ shopIdSet.add(mgtShopOrderPageVo.getShopId()); userIdSet.add(mgtShopOrderPageVo.getUserId()); } - // 将店铺 ID 和用户 ID 转换为逗号分隔的字符串 - String shopJoinedString = String.join(",", shopIdSet.stream().map(Object::toString).collect(Collectors.toList())); - String userJoinedString = String.join(",", userIdSet.stream().map(Object::toString).collect(Collectors.toList())); // 从远程服务获取店铺和用户信息 - List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(shopJoinedString).getData(); - Map<Long, MgtSimpleShopVo> shopMap = simpleShopVoList.stream() - .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity())); - List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(userJoinedString).getData(); - Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream() - .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity())); + Map<Long, MgtSimpleShopVo> shopMap = null; + Map<Long, MgtSimpleMemberVo> userMap = null; + if(shopIdSet!=null&&!shopIdSet.isEmpty()){ + String shopJoinedString = String.join(",", shopIdSet.stream().map(Object::toString).collect(Collectors.toList())); + MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto(); + mgtBaseBathDto.setIds(shopJoinedString); + List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData(); + shopMap = simpleShopVoList.stream() + .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity())); + } + if(userIdSet!=null&&!userIdSet.isEmpty()){ + String userJoinedString = String.join(",", userIdSet.stream().map(Object::toString).collect(Collectors.toList())); + MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto(); + mgtBaseBathDto.setIds(userJoinedString); + List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData(); + userMap = simpleMemberVoList.stream() + .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity())); + } // 遍历列表,设置店铺名称、用户名称和未支付金额 for (MgtShopOrderPageVo mgtShopOrderPageVo : shopOrderPageVoList) { - mgtShopOrderPageVo.setShopName(shopMap.get(mgtShopOrderPageVo.getShopId()).getShopName()); - mgtShopOrderPageVo.setUserName(userMap.get(mgtShopOrderPageVo.getUserId()).getUserName()); + if(shopMap!=null&&!shopMap.isEmpty()){ + mgtShopOrderPageVo.setShopName(shopMap.get(mgtShopOrderPageVo.getShopId()).getShopName()); + } + if(userMap!=null&&!userMap.isEmpty()){ + if(userMap.get(mgtShopOrderPageVo.getUserId())!=null){ + mgtShopOrderPageVo.setUserName(userMap.get(mgtShopOrderPageVo.getUserId()).getNickName()); + } + } BigDecimal unPaidMoney = mgtShopOrderPageVo.getReceivableMoney().subtract(mgtShopOrderPageVo.getPayMoney()); mgtShopOrderPageVo.setUnPaidMoney(unPaidMoney == null ? zeroBig : unPaidMoney); } @@ -1348,4 +1371,102 @@ } return mgtTotalOrderTotalVo; } + + + /** + * @description + * @author jqs + * @date 2023/6/20 9:27 + * @param mgtBaseShopDto + * @return MgtTotalActivityTotalVo + */ + @Override + public MgtTotalActivityTotalVo getTotalActivityTotal(MgtBaseShopDto mgtBaseShopDto){ + //获取基础统计 + MgtTotalActivityTotalVo totalActivityTotalVo = orderMapper.getTotalActivityTotal(mgtBaseShopDto); + //获取商品分类销售数据 + List<MgtMapTotalVo> mgtMapTotalVoGoodsType = orderMapper.listTotalActivityTotalGoodsType(mgtBaseShopDto); + if (mgtMapTotalVoGoodsType != null && mgtMapTotalVoGoodsType.size() > 0) { + String[] goodsTypeKey = new String[mgtMapTotalVoGoodsType.size()]; + Integer[] goodsTypeTotalValue = new Integer[mgtMapTotalVoGoodsType.size()]; + BigDecimal[] goodsTypeMoneyValue = new BigDecimal[mgtMapTotalVoGoodsType.size()]; + // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组 + for (int i = 0; i < mgtMapTotalVoGoodsType.size(); i++) { + goodsTypeTotalValue[i] = mgtMapTotalVoGoodsType.get(i).getMapValueFirst(); + goodsTypeMoneyValue[i] = mgtMapTotalVoGoodsType.get(i).getMapValueSecond(); + if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("1")){ + goodsTypeKey[i] = "周期"; + totalActivityTotalVo.setCycleTotal(mgtMapTotalVoGoodsType.get(i).getMapValueFirst()); + totalActivityTotalVo.setCycleMoney(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()); + totalActivityTotalVo.setCyclePerson(mgtMapTotalVoGoodsType.get(i).getMapValueThird()); + }else if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("2")){ + goodsTypeKey[i] = "服务"; + totalActivityTotalVo.setServiceTotal(mgtMapTotalVoGoodsType.get(i).getMapValueFirst()); + totalActivityTotalVo.setServiceMoney(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()); + totalActivityTotalVo.setServicePerson(mgtMapTotalVoGoodsType.get(i).getMapValueThird()); + }else if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("3")){ + goodsTypeKey[i] = "体验"; + totalActivityTotalVo.setExperienceTotal(mgtMapTotalVoGoodsType.get(i).getMapValueFirst()); + totalActivityTotalVo.setExperienceMoney(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()); + totalActivityTotalVo.setExperiencePerson(mgtMapTotalVoGoodsType.get(i).getMapValueThird()); + }else if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("4")){ + goodsTypeKey[i] = "单品"; + } + } + totalActivityTotalVo.setGoodsTypeKey(goodsTypeKey); + totalActivityTotalVo.setGoodsTypeTotalValue(goodsTypeTotalValue); + totalActivityTotalVo.setGoodsTypeMoneyValue(goodsTypeMoneyValue); + } + //获取订单分布 + List<MgtMapTotalVo> mgtMapTotalVos = orderMapper.listTotalActivityTotal(mgtBaseShopDto); + if (mgtMapTotalVos != null && mgtMapTotalVos.size() > 0) { + String[] orderTotalKey = new String[mgtMapTotalVos.size()]; + Integer[] orderTotalValue = new Integer[mgtMapTotalVos.size()]; + BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalVos.size()]; + for (int i = 0; i < mgtMapTotalVos.size(); i++) { + orderTotalKey[i] = mgtMapTotalVos.get(i).getMapKey(); + orderTotalValue[i] = mgtMapTotalVos.get(i).getMapValueFirst(); + orderMoneyValue[i] = mgtMapTotalVos.get(i).getMapValueSecond(); + } + totalActivityTotalVo.setOrderTotalKey(orderTotalKey); + totalActivityTotalVo.setOrderTotalValue(orderTotalValue); + totalActivityTotalVo.setOrderMoneyValue(orderMoneyValue); + } + return totalActivityTotalVo; + } + + /** + * @description + * @author jqs + * @date 2023/6/20 9:56 + * @param mgtActivityAgeDto + * @return MgtTotalActivityTotalVo + */ + @Override + public MgtTotalActivityTotalVo getTotalActivityAgeRank(MgtActivityAgeDto mgtActivityAgeDto){ + List<Long> userIds = orderMapper.getUserIdAgeRank(mgtActivityAgeDto); + mgtActivityAgeDto.setUserIds(userIds); + userIds = remoteMemberService.listUserIdByAge(mgtActivityAgeDto).getData(); + mgtActivityAgeDto.setUserIds(userIds); + MgtTotalActivityTotalVo totalActivityTotalVo = orderMapper.getTotalActivityAgeRank(mgtActivityAgeDto); + return totalActivityTotalVo; + } + + /** + * @description + * @author jqs + * @date 2023/6/20 15:31 + * @param mgtBaseShopDto + * @return MgtTotalDataTotalVo + */ + @Override + public MgtTotalDataTotalVo getTotalDataTotal(MgtBaseShopDto mgtBaseShopDto){ + //获取人数统计 + MgtTotalDataTotalVo mgtTotalDataTotalVo = orderMapper.getTotalDataTotal(mgtBaseShopDto); + Integer reorderPerson = orderMapper.getReorderPerson(mgtBaseShopDto); + mgtTotalDataTotalVo.setReorderPerson(reorderPerson); + Integer returnedPerson = orderMapper.getReturnedPerson(mgtBaseShopDto); + mgtTotalDataTotalVo.setReturnedPerson(returnedPerson); + return mgtTotalDataTotalVo; + } } -- Gitblit v1.7.1