浏览代码

Merge remote-tracking branch 'origin/zx_1026_1111' into zx_1026_1111

zouxuan 1 年之前
父节点
当前提交
acb7c5dbce

+ 63 - 32
mec-application/src/main/java/com/ym/mec/web/controller/open/OpenDouble11StaticsController.java

@@ -18,6 +18,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.jetbrains.annotations.NotNull;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -28,14 +29,7 @@ import java.math.BigDecimal;
 import java.rmi.MarshalledObject;
 import java.text.ParsePosition;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
+import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -147,29 +141,41 @@ public class OpenDouble11StaticsController extends BaseController {
                     .collect(Collectors.toMap(Organization::getId, Function.identity()));
             orgIdMap.putAll(mapById);
         }
-        setQueryParam(query, configParam);
-
-        List<Double11StaticWrapper.SaleAmountAndUser> saleAmount = studentPaymentOrderDao.saleStaticsByOrgId(query);
-        Map<Integer, Double11StaticWrapper.SaleAmountAndUser> idDataMap = saleAmount.stream()
-                .collect(Collectors.toMap(Double11StaticWrapper.SaleAmountAndUser::getOrganId, Function.identity()));
-
-        List<Double11StaticWrapper.SaleAmountAndUser> result = orgIdMap.entrySet().stream()
-                .map(next -> {
-                    if(idDataMap.containsKey(next.getKey())){
-                        Double11StaticWrapper.SaleAmountAndUser saleAmountAndUser = idDataMap.get(next.getKey());
-                        saleAmountAndUser.setOrganName(next.getValue().getName());
-                        return saleAmountAndUser;
-                    }
-
-                    Double11StaticWrapper.SaleAmountAndUser statics = new Double11StaticWrapper.SaleAmountAndUser();
-                    statics.setOrganId(next.getKey());
-                    statics.setOrganName(next.getValue().getName());
-                    statics.setActualAmount(new BigDecimal(0));
-                    statics.setBalancePaymentAmount(new BigDecimal(0));
-                    statics.setUserPurchaseNumber(0);
-                    return statics;
-                }).collect(Collectors.toList());
+        List<Double11StaticWrapper.SaleAmountAndUser> result;
+        Integer saleStaticsType = query.getSaleStaticsType();
+        if (0 == saleStaticsType) { //将不同类型数据汇总
+            List<Double11StaticWrapper.SaleAmountAndUser> allResult = new ArrayList<>();
+            for (int i = 1; i <= 6; i++) {
+                query.setSaleStaticsType(i);
+                setQueryParam(query, configParam);
+                List<Double11StaticWrapper.SaleAmountAndUser> oneResult = queryOrgSaleAmount(query, orgIdMap);
+                allResult.addAll(oneResult);
+            }
+            Map<Integer, List<Double11StaticWrapper.SaleAmountAndUser>> groupByOrg = allResult.stream()
+                    .collect(Collectors.groupingBy(Double11StaticWrapper.SaleAmountAndUser::getOrganId));
+            result = groupByOrg.entrySet().stream()
+                    .map(entry -> {
+                        Double11StaticWrapper.SaleAmountAndUser amount = new Double11StaticWrapper.SaleAmountAndUser();
+                        amount.setOrganId(entry.getKey());
+                        amount.setOrganName(orgIdMap.getOrDefault(entry.getKey(), new Organization()).getName());
+                        Set<Integer> userIds = new HashSet<>();
+                        for (Double11StaticWrapper.SaleAmountAndUser v : entry.getValue()) {
+                            amount.setActualAmount(amount.getActualAmount().add(v.getActualAmount()));
+                            amount.setBalancePaymentAmount(amount.getBalancePaymentAmount().add(v.getBalancePaymentAmount()));
+                            String userId = v.getUserIds();
+                            if (StringUtils.isNotEmpty(userId)) {
+                                userIds.addAll(Arrays.stream(userId.split(",")).map(Integer::valueOf).collect(Collectors.toList()));
+                            }
+                        }
+                        amount.setUserPurchaseNumber(userIds.size());
+                        return amount;
+                    }).collect(Collectors.toList());
+        } else {
+            setQueryParam(query, configParam);
+            result = queryOrgSaleAmount(query, orgIdMap);
+        }
 
+        // 排序
         String orderBy = Optional.ofNullable(query.getOrderBy()).orElse("saleAmount");
         int asc = Optional.ofNullable(query.getAsc()).orElse(0);
         if ("saleAmount".equals(orderBy)) {
@@ -192,6 +198,7 @@ public class OpenDouble11StaticsController extends BaseController {
         return R.from(result);
     }
 
+
     @ApiOperation(value = "2023双11销售统计详情", notes = "2023双11销售统计详情")
     @GetMapping("/queryStudentPaymentOrder")
     public R<PageInfo<Double11StaticWrapper.SaleStaticsStudent>> queryStudentPaymentOrder(Double11StaticWrapper.SaleStaticsStudentQuery query) {
@@ -256,12 +263,12 @@ public class OpenDouble11StaticsController extends BaseController {
 
         if (saleStaticsType == 1) {
             // 1V1
-            query.setGroupType(GroupType.VIP);
+            query.setGroupType(GroupType.ACTIVITY);
             query.setType(OrderTypeEnum.SMALL_CLASS_TO_BUY);
             query.setActivityId(configParam.getV1());
         } else if (saleStaticsType == 2) {
             // 1v2
-            query.setGroupType(GroupType.VIP);
+            query.setGroupType(GroupType.ACTIVITY);
             query.setType(OrderTypeEnum.SMALL_CLASS_TO_BUY);
             query.setActivityId(configParam.getV2());
         } else if (saleStaticsType == 3) {
@@ -298,4 +305,28 @@ public class OpenDouble11StaticsController extends BaseController {
         }
     }
 
+    private List<Double11StaticWrapper.SaleAmountAndUser> queryOrgSaleAmount(Double11StaticWrapper.SaleStaticsQuery query,
+                                                                             Map<Integer, Organization> orgIdMap) {
+        List<Double11StaticWrapper.SaleAmountAndUser> saleAmount = studentPaymentOrderDao.saleStaticsByOrgId(query);
+        Map<Integer, Double11StaticWrapper.SaleAmountAndUser> idDataMap = saleAmount.stream()
+                .collect(Collectors.toMap(Double11StaticWrapper.SaleAmountAndUser::getOrganId, Function.identity()));
+
+        return orgIdMap.entrySet().stream()
+                .map(next -> {
+                    if (idDataMap.containsKey(next.getKey())) {
+                        Double11StaticWrapper.SaleAmountAndUser saleAmountAndUser = idDataMap.get(next.getKey());
+                        saleAmountAndUser.setOrganName(next.getValue().getName());
+                        return saleAmountAndUser;
+                    }
+
+                    Double11StaticWrapper.SaleAmountAndUser statics = new Double11StaticWrapper.SaleAmountAndUser();
+                    statics.setOrganId(next.getKey());
+                    statics.setOrganName(next.getValue().getName());
+                    statics.setActualAmount(new BigDecimal(0));
+                    statics.setBalancePaymentAmount(new BigDecimal(0));
+                    statics.setUserPurchaseNumber(0);
+                    return statics;
+                }).collect(Collectors.toList());
+    }
+
 }

+ 7 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/Double11StaticWrapper.java

@@ -11,7 +11,9 @@ import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Pattern;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 
@@ -193,10 +195,13 @@ public class Double11StaticWrapper {
         private Integer userPurchaseNumber;
 
         @ApiModelProperty(hidden = true)
-        private BigDecimal actualAmount;
+        private String userIds;
 
         @ApiModelProperty(hidden = true)
-        private BigDecimal balancePaymentAmount;
+        private BigDecimal actualAmount = new BigDecimal(0);
+
+        @ApiModelProperty(hidden = true)
+        private BigDecimal balancePaymentAmount  = new BigDecimal(0);
 
         public BigDecimal getSaleAmount() {
             BigDecimal a = Optional.ofNullable(actualAmount).orElse(new BigDecimal(0));

+ 1 - 0
mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml

@@ -1294,6 +1294,7 @@
         , SUM(t.actual_amount_) AS 'actualAmount'
         , SUM(t.balance_payment_amount_) AS 'balancePaymentAmount'
         , COUNT(distinct t.user_id_) AS 'userPurchaseNumber'
+        , group_concat(distinct t.user_id_) AS 'userIds'
         FROM student_payment_order t
         <if test="param.goodId != null">
             LEFT JOIN sell_order so on t.order_no_ = so.order_no_