forked from angelo/java-retail-app
## Feat - 新增秒结补偿MQ逻辑
查当前ID伞下秒结表的sum(NEW_BOX_NUM)更新至当前用户的TEAM_NEW_BOX_NUM
This commit is contained in:
parent
b32e00d74e
commit
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.*;
|
||||||
|
@ -14,10 +16,7 @@ import com.hzs.bonus.bonus.service.ICuMemberBonusService;
|
||||||
import com.hzs.bonus.bonus.vo.MemberBonusDetailSerVO;
|
import com.hzs.bonus.bonus.vo.MemberBonusDetailSerVO;
|
||||||
import com.hzs.bonus.bonus.vo.MemberBonusDetailVO;
|
import com.hzs.bonus.bonus.vo.MemberBonusDetailVO;
|
||||||
import com.hzs.bonus.bonus.vo.MemberBonusVO;
|
import com.hzs.bonus.bonus.vo.MemberBonusVO;
|
||||||
import com.hzs.common.core.constant.HttpStatus;
|
import com.hzs.common.core.constant.*;
|
||||||
import com.hzs.common.core.constant.MemberBonusFieldConstants;
|
|
||||||
import com.hzs.common.core.constant.MemberFieldConstants;
|
|
||||||
import com.hzs.common.core.constant.SystemFieldConstants;
|
|
||||||
import com.hzs.common.core.domain.R;
|
import com.hzs.common.core.domain.R;
|
||||||
import com.hzs.common.core.enums.*;
|
import com.hzs.common.core.enums.*;
|
||||||
import com.hzs.common.core.utils.ComputeUtil;
|
import com.hzs.common.core.utils.ComputeUtil;
|
||||||
|
@ -38,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;
|
||||||
|
@ -55,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;
|
||||||
|
|
||||||
|
@ -693,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