Compare commits
	
		
			2 Commits
		
	
	
		
			f5b00b773e
			...
			b7b487a7d4
		
	
	| Author | SHA1 | Date | 
|---|---|---|
| 
							
							
								
								 | 
						b7b487a7d4 | |
| 
							
							
								
								 | 
						4d5e592019 | 
| 
						 | 
					@ -137,4 +137,6 @@ public interface CuMemberBonusMapper extends BaseMapper<CuMemberBonus> {
 | 
				
			||||||
     * @param: null null
 | 
					     * @param: null null
 | 
				
			||||||
     **/
 | 
					     **/
 | 
				
			||||||
    List<CuMemberBonus> queryWeekMemberBonus(@Param("startPeriod") int startPeriod, @Param("endPeriod") int endPeriod);
 | 
					    List<CuMemberBonus> queryWeekMemberBonus(@Param("startPeriod") int startPeriod, @Param("endPeriod") int endPeriod);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void recalculateTeamNewBoxNum(@Param("pkId") Long pkId, @Param("retailsTableName") String retailsTableName);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,11 +1,11 @@
 | 
				
			||||||
package com.hzs.bonus.bonus.service;
 | 
					package com.hzs.bonus.bonus.service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.baomidou.mybatisplus.extension.service.IService;
 | 
					import com.baomidou.mybatisplus.extension.service.IService;
 | 
				
			||||||
 | 
					import com.hzs.bonus.bonus.param.BonusParam;
 | 
				
			||||||
 | 
					import com.hzs.bonus.bonus.vo.MemberBonusVO;
 | 
				
			||||||
import com.hzs.common.core.web.page.TableDataInfo;
 | 
					import com.hzs.common.core.web.page.TableDataInfo;
 | 
				
			||||||
import com.hzs.common.domain.member.bonus.CuMemberBonus;
 | 
					import com.hzs.common.domain.member.bonus.CuMemberBonus;
 | 
				
			||||||
import com.hzs.common.domain.member.ext.CuMemberBonusExt;
 | 
					import com.hzs.common.domain.member.ext.CuMemberBonusExt;
 | 
				
			||||||
import com.hzs.bonus.bonus.param.BonusParam;
 | 
					 | 
				
			||||||
import com.hzs.bonus.bonus.vo.MemberBonusVO;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.Date;
 | 
					import java.util.Date;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
| 
						 | 
					@ -165,4 +165,12 @@ public interface ICuMemberBonusService extends IService<CuMemberBonus> {
 | 
				
			||||||
    void calculateBonusTotal(CuMemberBonusExt cuMemberBonusExt, CuMemberBonusExt memberBonusExt);
 | 
					    void calculateBonusTotal(CuMemberBonusExt cuMemberBonusExt, CuMemberBonusExt memberBonusExt);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    CuMemberBonusExt initCuMemberBonus();
 | 
					    CuMemberBonusExt initCuMemberBonus();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 用户激活后会抛出MQ
 | 
				
			||||||
 | 
					     * 在此需要补偿该用户的当日秒结的团队新增
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param pkIdList
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    void recalculateTeamNewBoxNum(List<Long> pkIdList);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,10 +1,12 @@
 | 
				
			||||||
package com.hzs.bonus.bonus.service.impl;
 | 
					package com.hzs.bonus.bonus.service.impl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import cn.hutool.core.bean.BeanUtil;
 | 
					import cn.hutool.core.bean.BeanUtil;
 | 
				
			||||||
 | 
					import cn.hutool.json.JSONUtil;
 | 
				
			||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 | 
					import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 | 
				
			||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 | 
					import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 | 
				
			||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
					import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
				
			||||||
import com.github.pagehelper.PageInfo;
 | 
					import com.github.pagehelper.PageInfo;
 | 
				
			||||||
 | 
					import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
 | 
				
			||||||
import com.hzs.bonus.achieve.service.ICuMemberTreeService;
 | 
					import com.hzs.bonus.achieve.service.ICuMemberTreeService;
 | 
				
			||||||
import com.hzs.bonus.achieve.service.impl.CuMemberBonusSettle;
 | 
					import com.hzs.bonus.achieve.service.impl.CuMemberBonusSettle;
 | 
				
			||||||
import com.hzs.bonus.bonus.mapper.*;
 | 
					import com.hzs.bonus.bonus.mapper.*;
 | 
				
			||||||
| 
						 | 
					@ -35,6 +37,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
import org.springframework.stereotype.Service;
 | 
					import org.springframework.stereotype.Service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.math.BigDecimal;
 | 
					import java.math.BigDecimal;
 | 
				
			||||||
 | 
					import java.time.LocalDate;
 | 
				
			||||||
 | 
					import java.time.format.DateTimeFormatter;
 | 
				
			||||||
import java.time.temporal.ChronoUnit;
 | 
					import java.time.temporal.ChronoUnit;
 | 
				
			||||||
import java.util.*;
 | 
					import java.util.*;
 | 
				
			||||||
import java.util.stream.Collectors;
 | 
					import java.util.stream.Collectors;
 | 
				
			||||||
| 
						 | 
					@ -52,6 +56,9 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
 | 
				
			||||||
    ICurrencyServiceApi iCurrencyServiceApi;
 | 
					    ICurrencyServiceApi iCurrencyServiceApi;
 | 
				
			||||||
    @DubboReference
 | 
					    @DubboReference
 | 
				
			||||||
    IBonusItemsServiceApi iBonusItemsServiceApi;
 | 
					    IBonusItemsServiceApi iBonusItemsServiceApi;
 | 
				
			||||||
 | 
					    @Autowired
 | 
				
			||||||
 | 
					    private ICuMemberSettlePeriodService iCuMemberSettlePeriodService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private CuMemberBonusDetailMapper cuMemberBonusDetailMapper;
 | 
					    private CuMemberBonusDetailMapper cuMemberBonusDetailMapper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -690,4 +697,18 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
 | 
				
			||||||
        cuMemberBonusList.forEach(cuMemberBonus -> cuMemberBonusMap.put(cuMemberBonus.getPkMember(), cuMemberBonus));
 | 
					        cuMemberBonusList.forEach(cuMemberBonus -> cuMemberBonusMap.put(cuMemberBonus.getPkMember(), cuMemberBonus));
 | 
				
			||||||
        return cuMemberBonusMap;
 | 
					        return cuMemberBonusMap;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void recalculateTeamNewBoxNum(List<Long> pkIdList) {
 | 
				
			||||||
 | 
					        String retailsTableName = getDayTableName();
 | 
				
			||||||
 | 
					        log.info("recalculateTeamNewBoxNum: pkIdList: {}, tableName: {}", JSONUtil.toJsonStr(pkIdList), retailsTableName);
 | 
				
			||||||
 | 
					        for (Long pkId : pkIdList) {
 | 
				
			||||||
 | 
					            baseMapper.recalculateTeamNewBoxNum(pkId, retailsTableName);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    private String getDayTableName() {
 | 
				
			||||||
 | 
					        String localDate = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
 | 
				
			||||||
 | 
					        int period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(localDate).getPkId();
 | 
				
			||||||
 | 
					        return TableNameConstants.CU_MEMBER_RETAIL_S + period;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,46 @@
 | 
				
			||||||
 | 
					package com.hzs.bonus.listener;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import cn.hutool.json.JSONUtil;
 | 
				
			||||||
 | 
					import com.hzs.bonus.bonus.service.IBonusSettleService;
 | 
				
			||||||
 | 
					import com.hzs.bonus.bonus.service.ICuMemberBonusService;
 | 
				
			||||||
 | 
					import com.hzs.bonus.bonus.service.ICuMemberRetailLogService;
 | 
				
			||||||
 | 
					import com.hzs.common.core.constant.CountryConstants;
 | 
				
			||||||
 | 
					import com.hzs.common.core.constant.MagicNumberConstants;
 | 
				
			||||||
 | 
					import com.hzs.common.core.constant.RabbitMqConstants;
 | 
				
			||||||
 | 
					import com.hzs.common.core.enums.EYesNo;
 | 
				
			||||||
 | 
					import com.hzs.common.domain.member.bonus.CuMemberRetailLog;
 | 
				
			||||||
 | 
					import com.hzs.common.domain.sale.ext.SaOrderExt;
 | 
				
			||||||
 | 
					import com.rabbitmq.client.Channel;
 | 
				
			||||||
 | 
					import lombok.extern.slf4j.Slf4j;
 | 
				
			||||||
 | 
					import org.springframework.amqp.rabbit.annotation.*;
 | 
				
			||||||
 | 
					import org.springframework.amqp.support.AmqpHeaders;
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
 | 
					import org.springframework.messaging.Message;
 | 
				
			||||||
 | 
					import org.springframework.stereotype.Component;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 订单秒接
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@Slf4j
 | 
				
			||||||
 | 
					@Component
 | 
				
			||||||
 | 
					public class SaOrderSecondActivateCompensationListener {
 | 
				
			||||||
 | 
					    @Autowired
 | 
				
			||||||
 | 
					    private ICuMemberBonusService memberBonusService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @RabbitListener(bindings = @QueueBinding(
 | 
				
			||||||
 | 
					            exchange = @Exchange(value = RabbitMqConstants.ORDER_SECOND_ACTIVATE_COMPENSATION_EXCHANGE, type = "topic"),
 | 
				
			||||||
 | 
					            value = @Queue(value = RabbitMqConstants.ORDER_SECOND_ACTIVATE_COMPENSATION_QUEUE, durable = "true", autoDelete = "false"),
 | 
				
			||||||
 | 
					            key = RabbitMqConstants.ORDER_SECOND_ACTIVATE_COMPENSATION_KEY))
 | 
				
			||||||
 | 
					    @RabbitHandler
 | 
				
			||||||
 | 
					    public void onMessage(Message<List<Long>> message, Channel channel) throws Exception {
 | 
				
			||||||
 | 
					        List<Long> activateCompensationIdList = message.getPayload();
 | 
				
			||||||
 | 
					        log.info("秒结开始消费,接收到的参数:{}", JSONUtil.toJsonStr(activateCompensationIdList));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Long deliveryTag = (Long) message.getHeaders().get(AmqpHeaders.DELIVERY_TAG);
 | 
				
			||||||
 | 
					        channel.basicAck(deliveryTag, false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        memberBonusService.recalculateTeamNewBoxNum(activateCompensationIdList);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -574,4 +574,23 @@
 | 
				
			||||||
        group by cb.pk_member
 | 
					        group by cb.pk_member
 | 
				
			||||||
    </select>
 | 
					    </select>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <update id="recalculateTeamNewBoxNum">
 | 
				
			||||||
 | 
					        UPDATE ${retailsTableName}
 | 
				
			||||||
 | 
					        SET TEAM_NEW_BOX_NUM = (
 | 
				
			||||||
 | 
					            SELECT SUM(boxNum)
 | 
				
			||||||
 | 
					            FROM (
 | 
				
			||||||
 | 
					                     SELECT b.PK_ID, NVL(s.NEW_BOX_NUM, 0) AS boxNum
 | 
				
			||||||
 | 
					                     FROM ${retailsTableName} s
 | 
				
			||||||
 | 
					                              RIGHT JOIN (
 | 
				
			||||||
 | 
					                         SELECT cm.PK_ID
 | 
				
			||||||
 | 
					                         FROM cu_member cm
 | 
				
			||||||
 | 
					                         WHERE cm.PK_ID != #{pkId}
 | 
				
			||||||
 | 
					                         START WITH cm.PK_ID = #{pkId}
 | 
				
			||||||
 | 
					                         CONNECT BY PRIOR cm.pk_id = cm.pk_parent
 | 
				
			||||||
 | 
					                         ORDER BY LEVEL
 | 
				
			||||||
 | 
					                     ) b ON s.PK_MEMBER = b.PK_ID
 | 
				
			||||||
 | 
					                 ) c
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        WHERE PK_MEMBER = #{pkId}
 | 
				
			||||||
 | 
					    </update>
 | 
				
			||||||
</mapper>
 | 
					</mapper>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,11 +7,12 @@ import cn.hutool.core.lang.tree.TreeNodeConfig;
 | 
				
			||||||
import cn.hutool.core.lang.tree.TreeUtil;
 | 
					import cn.hutool.core.lang.tree.TreeUtil;
 | 
				
			||||||
import cn.hutool.json.JSONUtil;
 | 
					import cn.hutool.json.JSONUtil;
 | 
				
			||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 | 
					import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 | 
				
			||||||
import com.hzs.bonus.settle.IMemberSettleBonusApi;
 | 
					 | 
				
			||||||
import com.hzs.common.core.annotation.RepeatSubmitSimple;
 | 
					import com.hzs.common.core.annotation.RepeatSubmitSimple;
 | 
				
			||||||
import com.hzs.common.core.config.BdConfig;
 | 
					import com.hzs.common.core.constant.SysConstants;
 | 
				
			||||||
import com.hzs.common.core.constant.msg.AreaConstants;
 | 
					import com.hzs.common.core.constant.msg.AreaConstants;
 | 
				
			||||||
import com.hzs.common.core.enums.*;
 | 
					import com.hzs.common.core.enums.EGrade;
 | 
				
			||||||
 | 
					import com.hzs.common.core.enums.ENoticeWebsiteType;
 | 
				
			||||||
 | 
					import com.hzs.common.core.enums.EYesNo;
 | 
				
			||||||
import com.hzs.common.core.utils.PageUtils;
 | 
					import com.hzs.common.core.utils.PageUtils;
 | 
				
			||||||
import com.hzs.common.core.web.controller.BaseController;
 | 
					import com.hzs.common.core.web.controller.BaseController;
 | 
				
			||||||
import com.hzs.common.core.web.domain.AjaxResult;
 | 
					import com.hzs.common.core.web.domain.AjaxResult;
 | 
				
			||||||
| 
						 | 
					@ -37,7 +38,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
import org.springframework.web.bind.annotation.*;
 | 
					import org.springframework.web.bind.annotation.*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.validation.Valid;
 | 
					import javax.validation.Valid;
 | 
				
			||||||
import java.math.BigDecimal;
 | 
					 | 
				
			||||||
import java.util.ArrayList;
 | 
					import java.util.ArrayList;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -60,11 +60,6 @@ public class RetailMemberController extends BaseController {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @DubboReference
 | 
					    @DubboReference
 | 
				
			||||||
    IAreaServiceApi iAreaServiceApi;
 | 
					    IAreaServiceApi iAreaServiceApi;
 | 
				
			||||||
    @DubboReference
 | 
					 | 
				
			||||||
    IMemberSettleBonusApi iMemberSettleBonusApi;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // 2025年6月11日 判断可选择收益区域的伞下+自身业绩阈值 (30万)
 | 
					 | 
				
			||||||
    private static final BigDecimal REGIONAL_PERFORMANCE_THRESHOLD = new BigDecimal("300000");
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 获取登录会员信息
 | 
					     * 获取登录会员信息
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
| 
						 | 
					@ -117,7 +112,7 @@ public class RetailMemberController extends BaseController {
 | 
				
			||||||
            if(EYesNo.YES.getIntValue() == cuMemberRetailRegionExt.getIsActivate()){
 | 
					            if(EYesNo.YES.getIntValue() == cuMemberRetailRegionExt.getIsActivate()){
 | 
				
			||||||
                CuMemberRetailAchieveVO retailAchieve = iCuMemberRetailAchieveService.selectMemberSumAchieve(userId, pkCountry, systemType);
 | 
					                CuMemberRetailAchieveVO retailAchieve = iCuMemberRetailAchieveService.selectMemberSumAchieve(userId, pkCountry, systemType);
 | 
				
			||||||
                log.info("retailAchieve : {}", JSONUtil.toJsonStr(retailAchieve));
 | 
					                log.info("retailAchieve : {}", JSONUtil.toJsonStr(retailAchieve));
 | 
				
			||||||
                if(retailAchieve.getArealPv().compareTo(REGIONAL_PERFORMANCE_THRESHOLD) >= 0){
 | 
					                if(retailAchieve.getArealPv().compareTo(SysConstants.TOTAL_AREA_PV) >= 0){
 | 
				
			||||||
                    return AjaxResult.success(RetailMemberRegionVO.builder()
 | 
					                    return AjaxResult.success(RetailMemberRegionVO.builder()
 | 
				
			||||||
                            .regionStatus(EYesNo.YES.getIntValue())
 | 
					                            .regionStatus(EYesNo.YES.getIntValue())
 | 
				
			||||||
                            .build());
 | 
					                            .build());
 | 
				
			||||||
| 
						 | 
					@ -175,7 +170,7 @@ public class RetailMemberController extends BaseController {
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if(EYesNo.YES.getIntValue() == cuMemberRetailRegionExt.getIsActivate()){
 | 
					            if(EYesNo.YES.getIntValue() == cuMemberRetailRegionExt.getIsActivate()){
 | 
				
			||||||
                CuMemberRetailAchieveVO retailAchieve = iCuMemberRetailAchieveService.selectMemberSumAchieve(userId, pkCountry, systemType);
 | 
					                CuMemberRetailAchieveVO retailAchieve = iCuMemberRetailAchieveService.selectMemberSumAchieve(userId, pkCountry, systemType);
 | 
				
			||||||
                if(retailAchieve.getArealPv().compareTo(REGIONAL_PERFORMANCE_THRESHOLD) >= 0){
 | 
					                if(retailAchieve.getArealPv().compareTo(SysConstants.TOTAL_AREA_PV) >= 0){
 | 
				
			||||||
                    canSet = true;
 | 
					                    canSet = true;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,7 +5,10 @@ import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsDetailVO;
 | 
				
			||||||
import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsResultVO;
 | 
					import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsResultVO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.math.BigDecimal;
 | 
					import java.math.BigDecimal;
 | 
				
			||||||
import java.util.*;
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.Comparator;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import java.util.Objects;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * 用户统计数据工具
 | 
					 * 用户统计数据工具
 | 
				
			||||||
| 
						 | 
					@ -22,42 +25,65 @@ public class DataStatisticsUtil {
 | 
				
			||||||
    private static final String SMALL_RANGE_VIRTUAL_NAME = "注水小区虚拟分支";
 | 
					    private static final String SMALL_RANGE_VIRTUAL_NAME = "注水小区虚拟分支";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static CuMemberRetailDataStatisticsResultVO getCalcMap(List<CuMemberRetailDataStatisticsDetailVO> detailVOList, Long pkId){
 | 
					    public static CuMemberRetailDataStatisticsResultVO getCalcMap(List<CuMemberRetailDataStatisticsDetailVO> detailVOList, Long pkId){
 | 
				
			||||||
        calcDetailVOTotalField(detailVOList);
 | 
					        calcDetailVOTotalField(detailVOList, pkId);
 | 
				
			||||||
        addVirtualBranch(detailVOList, pkId);
 | 
					        addVirtualBranch(detailVOList, pkId);
 | 
				
			||||||
        CuMemberRetailDataStatisticsDetailVO total = getDetailVOByPKID(detailVOList, pkId);
 | 
					        CuMemberRetailDataStatisticsDetailVO total = getDetailVOByPKID(detailVOList, pkId);
 | 
				
			||||||
        CuMemberRetailDataStatisticsDetailVO bigRange = getBigRangeDetailVO(detailVOList, pkId);
 | 
					        CuMemberRetailDataStatisticsDetailVO bigRange = getBigRangeDetailVO(detailVOList, pkId);
 | 
				
			||||||
 | 
					        Integer smallRangeTotalBoxNum = total.getTotalBoxNum() - bigRange.getTotalBoxNum();
 | 
				
			||||||
 | 
					        if(smallRangeTotalBoxNum < 0){
 | 
				
			||||||
 | 
					            smallRangeTotalBoxNum = 0;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        BigDecimal smallRangeTotalPv = total.getTotalPv().subtract(bigRange.getTotalPv());
 | 
				
			||||||
 | 
					        if(smallRangeTotalPv.compareTo(BigDecimal.ZERO) < 0){
 | 
				
			||||||
 | 
					            smallRangeTotalPv = BigDecimal.ZERO;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        return CuMemberRetailDataStatisticsResultVO.builder()
 | 
					        return CuMemberRetailDataStatisticsResultVO.builder()
 | 
				
			||||||
                .totalBoxNum(total.getTotalBoxNum())
 | 
					                .totalBoxNum(total.getTotalBoxNum())
 | 
				
			||||||
                .totalPv(total.getTotalPv())
 | 
					                .totalPv(total.getTotalPv())
 | 
				
			||||||
                .bigRangeTotalBoxNum(bigRange.getTotalBoxNum())
 | 
					                .bigRangeTotalBoxNum(bigRange.getTotalBoxNum())
 | 
				
			||||||
                .bigRangeTotalPv(bigRange.getTotalPv())
 | 
					                .bigRangeTotalPv(bigRange.getTotalPv())
 | 
				
			||||||
                .smallRangeTotalBoxNum(total.getTotalBoxNum() - bigRange.getTotalBoxNum())
 | 
					                .smallRangeTotalBoxNum(smallRangeTotalBoxNum)
 | 
				
			||||||
                .smallRangeTotalPv(total.getTotalPv().subtract(bigRange.getTotalPv()))
 | 
					                .smallRangeTotalPv(smallRangeTotalPv)
 | 
				
			||||||
                .build();
 | 
					                .build();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 计算集合内数据总数
 | 
					     * 计算集合内数据总数
 | 
				
			||||||
     * @param detailVOList
 | 
					     * @param detailVOList
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public static void calcDetailVOTotalField(List<CuMemberRetailDataStatisticsDetailVO> detailVOList){
 | 
					    public static void calcDetailVOTotalField(List<CuMemberRetailDataStatisticsDetailVO> detailVOList, Long pkId){
 | 
				
			||||||
        detailVOList.parallelStream().forEach(detailVO -> {
 | 
					        detailVOList.parallelStream().forEach(detailVO -> {
 | 
				
			||||||
            detailVO.setTotalBoxNum(
 | 
					            detailVO.setTotalBoxNum(
 | 
				
			||||||
                    detailVO.getConsumeBoxNum()         // 个人累计消费盒数(日结)
 | 
					                    detailVO.getConsumeBoxNum()         // 个人累计消费盒数(日结)
 | 
				
			||||||
                     + detailVO.getNewBoxNum()          // 个人新增盒数(日结)
 | 
					//                     + detailVO.getNewBoxNum()          // 个人新增盒数(日结)
 | 
				
			||||||
                     + detailVO.getTeamBoxNum()         // 团队累计消费盒数(日结)
 | 
					                     + detailVO.getTeamBoxNum()         // 团队累计消费盒数(日结)
 | 
				
			||||||
                     + detailVO.getTeamNewBoxNum()      // 团队新增盒数(日结)
 | 
					//                     + detailVO.getTeamNewBoxNum()      // 团队新增盒数(日结)
 | 
				
			||||||
                     + detailVO.getSNewBoxNum()         // 个人新增消费盒数(秒结)
 | 
					                     + detailVO.getSNewBoxNum()         // 个人新增消费盒数(秒结)
 | 
				
			||||||
                     + detailVO.getSTeamNewBoxNum()     // 团队新增盒数(秒结)
 | 
					                     + detailVO.getSTeamNewBoxNum()     // 团队新增盒数(秒结)
 | 
				
			||||||
//                     - detailVO.getBigBoxNum()          // 个人注水大区盒数(日结)
 | 
					//                     - detailVO.getBigBoxNum()          // 个人注水大区盒数(日结)
 | 
				
			||||||
//                     - detailVO.getSmallBoxNum()        // 个人注水小区盒数(日结)
 | 
					//                     - detailVO.getSmallBoxNum()        // 个人注水小区盒数(日结)
 | 
				
			||||||
            );
 | 
					            );
 | 
				
			||||||
            detailVO.setTotalPv(detailVO.getConsumePv()
 | 
					            detailVO.setTotalPv(detailVO.getConsumePv()
 | 
				
			||||||
                    .add(detailVO.getNewConsumePv())
 | 
					//                    .add(detailVO.getNewConsumePv())
 | 
				
			||||||
                    .add(detailVO.getTeamConsumePv())
 | 
					                    .add(detailVO.getTeamConsumePv())
 | 
				
			||||||
                    .add(detailVO.getTeamNewPv())
 | 
					//                    .add(detailVO.getTeamNewPv())
 | 
				
			||||||
                    .add(detailVO.getSNewConsumePv())
 | 
					                    .add(detailVO.getSNewConsumePv())
 | 
				
			||||||
                    .add(detailVO.getSTeamNewPv())
 | 
					                    .add(detailVO.getSTeamNewPv())
 | 
				
			||||||
            );
 | 
					            );
 | 
				
			||||||
 | 
					            // self增加当日伞下
 | 
				
			||||||
 | 
					//            if(detailVO.getPkId().equals(pkId)){
 | 
				
			||||||
 | 
					//                List<CuMemberRetailDataStatisticsDetailVO> subList = detailVOList.parallelStream().filter(o -> !o.getPkId().equals(pkId)).collect(Collectors.toList());
 | 
				
			||||||
 | 
					//                int subSTotalNewBoxNum = subList.parallelStream()
 | 
				
			||||||
 | 
					//                        .map(CuMemberRetailDataStatisticsDetailVO::getSNewBoxNum)
 | 
				
			||||||
 | 
					//                        .filter(Objects::nonNull)
 | 
				
			||||||
 | 
					//                        .mapToInt(Integer::intValue)
 | 
				
			||||||
 | 
					//                        .sum();
 | 
				
			||||||
 | 
					//                BigDecimal subSTotalNewPv = subList.parallelStream()
 | 
				
			||||||
 | 
					//                        .map(CuMemberRetailDataStatisticsDetailVO::getSNewConsumePv)
 | 
				
			||||||
 | 
					//                        .filter(Objects::nonNull)
 | 
				
			||||||
 | 
					//                        .reduce(BigDecimal.ZERO, BigDecimal::add);
 | 
				
			||||||
 | 
					//                detailVO.setTotalBoxNum(detailVO.getTotalBoxNum() + subSTotalNewBoxNum);
 | 
				
			||||||
 | 
					//                detailVO.setTotalPv(detailVO.getTotalPv().add(subSTotalNewPv));
 | 
				
			||||||
 | 
					//            }
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -137,18 +163,18 @@ public class DataStatisticsUtil {
 | 
				
			||||||
     * @return
 | 
					     * @return
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public static CuMemberRetailDataStatisticsDetailVO getDetailVOByPKID(List<CuMemberRetailDataStatisticsDetailVO> detailVOList, Long pkId){
 | 
					    public static CuMemberRetailDataStatisticsDetailVO getDetailVOByPKID(List<CuMemberRetailDataStatisticsDetailVO> detailVOList, Long pkId){
 | 
				
			||||||
        return detailVOList.stream().filter(o -> o.getPkId().equals(pkId)).findFirst().orElse(null);
 | 
					        return detailVOList.parallelStream().filter(o -> o.getPkId().equals(pkId)).findFirst().orElse(null);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static Integer getMaxTotalBoxNum(List<CuMemberRetailDataStatisticsDetailVO> detailVOList) {
 | 
					    private static Integer getMaxTotalBoxNum(List<CuMemberRetailDataStatisticsDetailVO> detailVOList) {
 | 
				
			||||||
        return detailVOList.stream()
 | 
					        return detailVOList.parallelStream()
 | 
				
			||||||
                .map(CuMemberRetailDataStatisticsDetailVO::getTotalBoxNum)
 | 
					                .map(CuMemberRetailDataStatisticsDetailVO::getTotalBoxNum)
 | 
				
			||||||
                .filter(Objects::nonNull)
 | 
					                .filter(Objects::nonNull)
 | 
				
			||||||
                .max(Integer::compare)
 | 
					                .max(Integer::compare)
 | 
				
			||||||
                .orElse(null);
 | 
					                .orElse(null);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    private static CuMemberRetailDataStatisticsDetailVO getBigRangeDetailVO(List<CuMemberRetailDataStatisticsDetailVO> detailVOList, Long pkId){
 | 
					    private static CuMemberRetailDataStatisticsDetailVO getBigRangeDetailVO(List<CuMemberRetailDataStatisticsDetailVO> detailVOList, Long pkId){
 | 
				
			||||||
        return detailVOList.stream()
 | 
					        return detailVOList.parallelStream()
 | 
				
			||||||
                .filter(vo -> vo.getTotalBoxNum() != null && !vo.getPkId().equals(pkId))
 | 
					                .filter(vo -> vo.getTotalBoxNum() != null && !vo.getPkId().equals(pkId))
 | 
				
			||||||
                .max(Comparator.comparingInt(CuMemberRetailDataStatisticsDetailVO::getTotalBoxNum))
 | 
					                .max(Comparator.comparingInt(CuMemberRetailDataStatisticsDetailVO::getTotalBoxNum))
 | 
				
			||||||
                .orElse(null);
 | 
					                .orElse(null);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue