## Opt - 我的->盒数

增加激活时间判断 & 计算达小区时包含注水,返回前台数据时剔出注水
This commit is contained in:
sangelxiu1 2025-06-13 12:02:06 +08:00
parent ac6dc2c5cd
commit 8d3408c421
5 changed files with 69 additions and 19 deletions

View File

@ -576,7 +576,7 @@
<update id="recalculateTeamNewBoxNum">
UPDATE ${retailsTableName}
SET TEAM_NEW_BOX_NUM = (
SET ENABLE_STATUS = 0, TEAM_NEW_BOX_NUM = (
SELECT SUM(boxNum)
FROM (
SELECT b.PK_ID, NVL(s.NEW_BOX_NUM, 0) AS boxNum

View File

@ -570,7 +570,8 @@ public class CuMemberRetailAchieveServiceImpl extends ServiceImpl<CuMemberRetail
.memberRetailSTable(memberSecondTable)
.pkMemberList(pkMemberList).systemType(systemType).build();
List<CuMemberRetailDataStatisticsDetailVO> statisticsDetailVOList = baseMapper.getRetailDataStatisticsDetail(memberAchieveVO);
CuMemberRetailDataStatisticsResultVO result = DataStatisticsUtil.getCalcMap(statisticsDetailVOList, userId);
CuMember cuMember = iCuMemberService.queryMember(userId);
CuMemberRetailDataStatisticsResultVO result = DataStatisticsUtil.getCalcMap(statisticsDetailVOList, cuMember);
log.info("statisticsDetailVOList: {}", JSONUtil.toJsonStr(statisticsDetailVOList));
log.info("calcMap -> {}", JSONUtil.toJsonStr(result));
return result;

View File

@ -1,6 +1,8 @@
package com.hzs.retail.member.utils;
import cn.hutool.core.util.ObjectUtil;
import com.hzs.common.core.enums.EYesNo;
import com.hzs.common.domain.member.base.CuMember;
import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsDetailVO;
import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsResultVO;
@ -24,11 +26,31 @@ public class DataStatisticsUtil {
private static final String BIG_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, CuMember cuMember){
Long pkId = cuMember.getPkId();
// 非激活直接返0
// 激活判断上一天的ENABLE_STATUS 0为正常 1为当天激活 不计算日结数据
if(EYesNo.NO.getIntValue() == cuMember.getIsActivate()){
return CuMemberRetailDataStatisticsResultVO.builder()
.totalBoxNum(0)
.totalPv(BigDecimal.ZERO)
.bigRangeTotalBoxNum(0)
.bigRangeTotalPv(BigDecimal.ZERO)
.smallRangeTotalBoxNum(0)
.smallRangeTotalPv(BigDecimal.ZERO)
.build();
}
calcDetailVOTotalField(detailVOList, pkId);
addVirtualBranch(detailVOList, pkId);
CuMemberRetailDataStatisticsDetailVO total = getDetailVOByPKID(detailVOList, pkId);
CuMemberRetailDataStatisticsDetailVO bigRange = getBigRangeDetailVO(detailVOList, pkId);
if(EYesNo.NO.getIntValue() == cuMember.getIsActivate()){
// 昨日非激活 排除昨日日结表数据
excludeDailySettlementData(detailVOList);
}else{
// 排除注水数据
excludeWaterInjectionData(detailVOList);
}
Integer smallRangeTotalBoxNum = total.getTotalBoxNum() - bigRange.getTotalBoxNum();
if(smallRangeTotalBoxNum < 0){
smallRangeTotalBoxNum = 0;
@ -62,31 +84,46 @@ public class DataStatisticsUtil {
// - detailVO.getBigBoxNum() // 个人注水大区盒数(日结)
// - detailVO.getSmallBoxNum() // 个人注水小区盒数(日结)
);
detailVO.setTotalPv(detailVO.getConsumePv()
detailVO.setTotalPv(
detailVO.getConsumePv()
// .add(detailVO.getNewConsumePv())
.add(detailVO.getTeamConsumePv())
// .add(detailVO.getTeamNewPv())
.add(detailVO.getSNewConsumePv())
.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));
// }
});
}
/**
* 排除昨日日结数据
* @param detailVOList
*/
public static void excludeDailySettlementData(List<CuMemberRetailDataStatisticsDetailVO> detailVOList){
detailVOList.parallelStream().forEach(detailVO -> {
detailVO.setTotalBoxNum(
detailVO.getTotalBoxNum()
- detailVO.getTeamBoxNum() // 团队累计消费盒数(日结)
);
detailVO.setTotalPv(
detailVO.getTotalPv().subtract(detailVO.getTeamConsumePv())
);
});
}
/**
* 排除昨日日结注水数据
* @param detailVOList
*/
public static void excludeWaterInjectionData(List<CuMemberRetailDataStatisticsDetailVO> detailVOList){
detailVOList.parallelStream().forEach(detailVO -> {
detailVO.setTotalBoxNum(
detailVO.getTotalBoxNum()
- detailVO.getBigBoxNum() // 注水大区
- detailVO.getSmallBoxNum() // 注水小区
);
});
}
/**
* 增加虚拟分支 主要为
* 1.自己的消费总数
@ -105,12 +142,16 @@ public class DataStatisticsUtil {
.memberCode(BIG_RANGE_VIRTUAL_NAME)
.totalBoxNum(detailVO.getBigBoxNum())
.totalPv(BigDecimal.ZERO)
.bigBoxNum(0)
.smallBoxNum(0)
.build();
CuMemberRetailDataStatisticsDetailVO smallRangeVirtualDetailVO = CuMemberRetailDataStatisticsDetailVO.builder()
.pkId(SMALL_RANGE_VIRTUAL_ID)
.memberCode(SMALL_RANGE_VIRTUAL_NAME)
.totalBoxNum(detailVO.getBigBoxNum())
.totalPv(BigDecimal.ZERO)
.bigBoxNum(0)
.smallBoxNum(0)
.build();
detailVOList.add(bigRangeVirtualDetailVO);
detailVOList.add(smallRangeVirtualDetailVO);
@ -133,6 +174,8 @@ public class DataStatisticsUtil {
.add(detailVO.getNewConsumePv())
.add(detailVO.getSNewConsumePv())
)
.bigBoxNum(0)
.smallBoxNum(0)
.build();
}

View File

@ -29,6 +29,11 @@ public class CuMemberRetailDataStatisticsDetailVO implements Serializable {
*/
private String memberCode;
/**
* 激活状态
*/
private Integer enableStatus;
/**
* 日结表-个人累计消费pv
*/

View File

@ -841,6 +841,7 @@
SELECT
cu.pk_id,
cu.MEMBER_CODE,
mr.ENABLE_STATUS,
NVL( mr.CONSUME_PV, 0 ) consumePv,
NVL( mr.NEW_CONSUME_PV, 0 ) newConsumePv,
NVL( mr.TEAM_CONSUME_PV, 0 ) teamConsumePv,