|  | @@ -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());
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  }
 |