|
|
@@ -3,16 +3,14 @@ package com.cyksj.service.mange.statistics.impl;
|
|
|
import cn.hutool.core.date.DateTime;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.cyksj.common.constant.Constant;
|
|
|
import com.cyksj.dto.Result;
|
|
|
import com.cyksj.enums.GatewayResponse;
|
|
|
import com.cyksj.mapper.*;
|
|
|
-import com.cyksj.mapper.manage.statistics.AppleOneDataMapper;
|
|
|
-import com.cyksj.mapper.manage.statistics.RealGoodsDataMapper;
|
|
|
-import com.cyksj.mapper.manage.statistics.StatisticsUserDataMapper;
|
|
|
-import com.cyksj.mapper.manage.statistics.StreamingAccountDataMapper;
|
|
|
+import com.cyksj.mapper.manage.statistics.*;
|
|
|
import com.cyksj.model.entity.*;
|
|
|
import com.cyksj.model.excel.ExcelAccountData;
|
|
|
import com.cyksj.model.excel.ExcelSheetAndData;
|
|
|
@@ -72,6 +70,8 @@ public class StatisticsDataServiceImpl implements StatisticsDataService {
|
|
|
|
|
|
private final StatisticsUserDataMapper statisticsUserDataMapper;
|
|
|
|
|
|
+ private final StatisticsFashionGoodsDataMapper statisticsFashionGoodsDataMapper;
|
|
|
+
|
|
|
@Override
|
|
|
public Result<BackgroundDataView> getStatisticsByCondition(Long startTime, Long endTime) {
|
|
|
BackgroundDataView backgroundDataView = new BackgroundDataView();
|
|
|
@@ -111,8 +111,7 @@ public class StatisticsDataServiceImpl implements StatisticsDataService {
|
|
|
}).collect(Collectors.toList());
|
|
|
backgroundDataView.setFashionGoodsDataViews(collect);
|
|
|
} else {
|
|
|
- List<StatisticsFashionGoodsData> fashionGoodsData = beanSearcher.searchAll(StatisticsFashionGoodsData.class, MapUtils.builder()
|
|
|
- .field(StatisticsFashionGoodsData::getCreatedTime, startDate, endDate).op(Operator.Between).build());
|
|
|
+ List<StatisticsFashionGoodsData> fashionGoodsData = statisticsFashionGoodsDataMapper.statisticsFashionGoodsData(startDate, endDate);
|
|
|
Optional.ofNullable(fashionGoodsData).ifPresent(list -> list.forEach(data -> {
|
|
|
GoodsDon goodsDon = goodsDonMapper.selectOne(Wrappers.lambdaQuery(GoodsDon.class).eq(GoodsDon::getId, data.getGoodsId()).last("limit 1"));
|
|
|
if (goodsDon != null) {
|
|
|
@@ -122,7 +121,7 @@ public class StatisticsDataServiceImpl implements StatisticsDataService {
|
|
|
if (goodsDonSku != null) {
|
|
|
data.setSpecVal(goodsDonSku.getSpecVal());
|
|
|
}
|
|
|
- data.setRefundMoney(getRefundMoney(data.getGoodsId(), null, startDate, endDate));
|
|
|
+ data.setRefundMoney(getRefundMoney(null, data.getSkuId(), startDate, endDate));
|
|
|
}));
|
|
|
backgroundDataView.setFashionGoodsDataViews(fashionGoodsData);
|
|
|
}
|
|
|
@@ -293,7 +292,7 @@ public class StatisticsDataServiceImpl implements StatisticsDataService {
|
|
|
}
|
|
|
|
|
|
private void exportFashionData(List<ExcelSheetAndData> excelSheetDataList, String startDate, String endDate) {
|
|
|
- List<Long> goodsIds = statisticsUserDataMapper.getAllFashionGoods(startDate, endDate);
|
|
|
+ List<Long> goodsIds = goodsDonMapper.selectList(Wrappers.lambdaQuery(GoodsDon.class).eq(GoodsDon::getType, Constant.realGoodsType.get(1))).stream().map(GoodsDon::getId).collect(Collectors.toList());
|
|
|
List<ExcelRealGoodsData> fashionData = new ArrayList<>();
|
|
|
goodsIds.forEach(goodsId -> {
|
|
|
//查找所有规格
|
|
|
@@ -318,7 +317,7 @@ public class StatisticsDataServiceImpl implements StatisticsDataService {
|
|
|
}
|
|
|
|
|
|
private void exportRealGoodsData(List<ExcelSheetAndData> excelSheetDataList, String startDate, String endDate) {
|
|
|
- List<Long> goodsIds = statisticsUserDataMapper.getAllRealGoods(startDate, endDate);
|
|
|
+ List<Long> goodsIds = goodsDonMapper.selectList(Wrappers.lambdaQuery(GoodsDon.class).eq(GoodsDon::getType, Constant.realGoodsType.get(0))).stream().map(GoodsDon::getId).collect(Collectors.toList());
|
|
|
List<ExcelRealGoodsData> realGoodsData = new ArrayList<>();
|
|
|
goodsIds.forEach(goodsId -> {
|
|
|
//查找所有规格
|
|
|
@@ -343,11 +342,15 @@ public class StatisticsDataServiceImpl implements StatisticsDataService {
|
|
|
}
|
|
|
|
|
|
private void exportStreamingAccountData(List<ExcelSheetAndData> excelSheetDataList, String startDate, String endDate) {
|
|
|
- List<Long> goodsIds = statisticsUserDataMapper.getAllStreaming(startDate, endDate);
|
|
|
+ List<Account> accounts = accountService.getNoAppleOneAccount(2l);
|
|
|
+ Map<Long, List<Account>> accountMaps = accounts.stream().collect(Collectors.groupingBy(Account::getGoodsId));
|
|
|
List<ExcelStreamingAccountData> streamingAccountData = new ArrayList<>();
|
|
|
- goodsIds.forEach(goodsId -> {
|
|
|
+ accountMaps.forEach((goodsId, accountList) -> {
|
|
|
//订单数据
|
|
|
ExcelStreamingAccountData exportData = statisticsUserDataMapper.getExportStreamingAccountData(goodsId, null, null, startDate, endDate);
|
|
|
+ if (exportData == null || exportData.getNumOfUser() == 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
exportData.setName(goodsDonMapper.selectById(goodsId).getTitle());
|
|
|
//兑换单数
|
|
|
exportData.setNumOfExCodeOrder(statisticsUserDataMapper.getExportStreamingAccountData(goodsId, null, true, startDate, endDate).getNumOfOrder());
|
|
|
@@ -370,18 +373,23 @@ public class StatisticsDataServiceImpl implements StatisticsDataService {
|
|
|
private void exportAppleOneData(List<ExcelSheetAndData> excelSheetDataList, String startDate, String endDate) {
|
|
|
Map<String, List<GoodsDonSku>> appleOneMap = statistics.getAppleOneMap();
|
|
|
List<ExcelAppleOneData> appleData = new ArrayList<>();
|
|
|
- appleOneMap.forEach((k, v) -> {
|
|
|
+ appleOneMap.forEach((areaName, goodsDonSkuList) -> {
|
|
|
ExcelAppleOneData appleDataExcel = new ExcelAppleOneData();
|
|
|
- appleDataExcel.setArea(k);
|
|
|
- Set<Long> skuIds = v.stream().map(GoodsDonSku::getId).collect(Collectors.toSet());
|
|
|
- List<OrderDon> orderDons = orderDonMapper.selectList(Wrappers.lambdaQuery(OrderDon.class).in(OrderDon::getSkuId, skuIds).notIn(OrderDon::getStatus, Constant.noOrderStatus).between(OrderDon::getCreatedTime, startDate, endDate));
|
|
|
+ appleDataExcel.setArea(areaName);
|
|
|
+ Set<Long> skuIds = goodsDonSkuList.stream().map(GoodsDonSku::getId).collect(Collectors.toSet());
|
|
|
+ List<OrderDon> orderDons = orderDonMapper.selectList(Wrappers.lambdaQuery(OrderDon.class).in(OrderDon::getSkuId, skuIds)
|
|
|
+ .notIn(OrderDon::getStatus, Constant.noOrderAllStatus)
|
|
|
+ .ge(ObjectUtil.isNotNull(startDate), OrderDon::getCreatedTime, startDate)
|
|
|
+ .lt(ObjectUtil.isNotNull(endDate), OrderDon::getCreatedTime, endDate));
|
|
|
appleDataExcel.setNumOfOrder(orderDons.size());
|
|
|
Set<Long> userSet = Optional.ofNullable(orderDons.stream().map(OrderDon::getUserId).collect(Collectors.toSet())).orElse(new HashSet<>());
|
|
|
appleDataExcel.setNumOfUser(userSet.size());
|
|
|
List<OrderDon> exCodeOrders = orderDonMapper.selectList(Wrappers.lambdaQuery(OrderDon.class)
|
|
|
.eq(OrderDon::getType, OrderDon.Type.EX_CODE)
|
|
|
.in(OrderDon::getSkuId, skuIds)
|
|
|
- .notIn(OrderDon::getStatus, Constant.noOrderStatus).between(OrderDon::getCreatedTime, startDate, endDate));
|
|
|
+ .notIn(OrderDon::getStatus, Constant.noOrderAllStatus)
|
|
|
+ .ge(ObjectUtil.isNotNull(startDate), OrderDon::getCreatedTime, startDate)
|
|
|
+ .lt(ObjectUtil.isNotNull(endDate), OrderDon::getCreatedTime, endDate));
|
|
|
if (orderDons.isEmpty()) {
|
|
|
return;
|
|
|
}
|
|
|
@@ -391,22 +399,32 @@ public class StatisticsDataServiceImpl implements StatisticsDataService {
|
|
|
List<OrderDon> distributeOrders = orderDonMapper.selectList(Wrappers.lambdaQuery(OrderDon.class)
|
|
|
.eq(OrderDon::getIsDistribute, true)
|
|
|
.in(OrderDon::getSkuId, skuIds)
|
|
|
- .notIn(OrderDon::getStatus, Constant.noOrderStatus).between(OrderDon::getCreatedTime, startDate, endDate));
|
|
|
+ .notIn(OrderDon::getStatus, Constant.noOrderAllStatus)
|
|
|
+ .ge(ObjectUtil.isNotNull(startDate), OrderDon::getCreatedTime, startDate)
|
|
|
+ .lt(ObjectUtil.isNotNull(endDate), OrderDon::getCreatedTime, endDate));
|
|
|
appleDataExcel.setDisOrder(distributeOrders.size());
|
|
|
Optional<BigDecimal> distributeMoney = distributeOrders.stream().map(OrderDon::getMoney).reduce(BigDecimal::add);
|
|
|
appleDataExcel.setDisMoney(distributeMoney.isPresent() ? distributeMoney.get().divide(BigDecimal.valueOf(100)) : BigDecimal.ZERO);
|
|
|
Map<Long, List<OrderDon>> skuMaps = orderDons.stream().collect(Collectors.groupingBy(OrderDon::getSkuId));
|
|
|
- v.forEach(sku -> {
|
|
|
+ Integer monthOrder = 0;
|
|
|
+ Integer searOrder = 0;
|
|
|
+ Integer yearOrder = 0;
|
|
|
+ for (GoodsDonSku sku : goodsDonSkuList) {
|
|
|
Long skuId = sku.getId();
|
|
|
- List<OrderDon> dons = Optional.ofNullable(skuMaps.get(skuId)).orElse(new ArrayList<>());
|
|
|
- if (sku.getSpecVal().contains(Constant.payType.get(0)) && !sku.getSpecVal().contains(Constant.payType.get(2))) {
|
|
|
- appleDataExcel.setMonth(dons.size());
|
|
|
- } else if (sku.getSpecVal().contains(Constant.payType.get(1))) {
|
|
|
- appleDataExcel.setSeason(dons.size());
|
|
|
- } else if (!sku.getSpecVal().contains(Constant.payType.get(0)) && sku.getSpecVal().contains(Constant.payType.get(2))) {
|
|
|
- appleDataExcel.setYear(dons.size());
|
|
|
+ if (StrUtil.isNotBlank(sku.getSpecVal())) {
|
|
|
+ List<OrderDon> dons = Optional.ofNullable(skuMaps.get(skuId)).orElse(new ArrayList<>());
|
|
|
+ if (sku.getSpecVal().contains(Constant.payType.get(0)) && !sku.getSpecVal().contains(Constant.payType.get(2))) {
|
|
|
+ monthOrder += dons.size();
|
|
|
+ } else if (sku.getSpecVal().contains(Constant.payType.get(1))) {
|
|
|
+ searOrder += dons.size();
|
|
|
+ } else if (!sku.getSpecVal().contains(Constant.payType.get(0)) && sku.getSpecVal().contains(Constant.payType.get(2))) {
|
|
|
+ yearOrder += dons.size();
|
|
|
+ }
|
|
|
}
|
|
|
- });
|
|
|
+ }
|
|
|
+ appleDataExcel.setMonth(monthOrder);
|
|
|
+ appleDataExcel.setSeason(searOrder);
|
|
|
+ appleDataExcel.setYear(yearOrder);
|
|
|
appleData.add(appleDataExcel);
|
|
|
});
|
|
|
if (appleData.isEmpty()) {
|