From 4225e554d499d0c54cdb0ae2068b038c07c17502 Mon Sep 17 00:00:00 2001 From: sangelxiu1 <15781802@163.com> Date: Wed, 6 Aug 2025 09:03:58 +0800 Subject: [PATCH] =?UTF-8?q?##=20Opt=20-=20=E9=80=89=E6=8B=A9=E5=8C=BA?= =?UTF-8?q?=E5=9F=9F=E5=A4=B1=E6=95=88=E4=B9=8B=E5=90=8E=EF=BC=8C=E5=86=8D?= =?UTF-8?q?=E6=AC=A1=E9=9C=80=E8=A6=81=E9=80=89=E6=8B=A9=E5=8C=BA=E5=9F=9F?= =?UTF-8?q?=EF=BC=8C=E9=9C=80=E8=A6=81=E6=9C=88=E6=80=BB=E4=B8=9A=E7=BB=A9?= =?UTF-8?q?30=E4=B8=87=EF=BC=8C=E5=B0=8F=E5=B8=82=E5=9C=BA10=E4=B8=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/RetailMemberController.java | 44 +++++++++++-- .../ICuMemberRetailAchieveService.java | 8 +-- .../CuMemberRetailAchieveServiceImpl.java | 65 +++++++++++++++++-- .../member/utils/DataStatisticsUtil.java | 52 +++++++++++++++ .../retail/member/vo/BigAndSmallRangeVO.java | 18 +++++ .../hzs/retail/member/vo/CurrentMonthVO.java | 19 ++++++ 6 files changed, 193 insertions(+), 13 deletions(-) create mode 100644 bd-business/bd-business-member/src/main/java/com/hzs/retail/member/vo/BigAndSmallRangeVO.java create mode 100644 bd-business/bd-business-member/src/main/java/com/hzs/retail/member/vo/CurrentMonthVO.java diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/controller/api/RetailMemberController.java b/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/controller/api/RetailMemberController.java index 909f774e..34c86e7c 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/controller/api/RetailMemberController.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/controller/api/RetailMemberController.java @@ -45,6 +45,8 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; @@ -109,7 +111,7 @@ public class RetailMemberController extends BaseController { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(CuMemberRetailRegion::getPkMember, userId); int countNum = iCuMemberRetailRegionService.count(queryWrapper); - boolean isFirst = countNum > 0; + boolean notFirst = countNum > 0; log.info("cuMemberRetailRegionExt -> {}", JSONUtil.toJsonStr(cuMemberRetailRegionExt)); if (null != cuMemberRetailRegionExt) { @@ -155,9 +157,24 @@ public class RetailMemberController extends BaseController { && totalBoxNum.compareTo(grade.getBoxTotal()) >= 0 && smallBoxNum.compareTo(grade.getBoxSmallTotal()) >=0 ){ - return AjaxResult.success(RetailMemberRegionVO.builder() - .regionStatus(EYesNo.YES.getIntValue()) - .build()); + if(notFirst){ + LocalDate today = LocalDate.now(); + DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE; + CurrentMonthVO currentMonthVO = retailAchieveService.getCurrentMonthPV(today.format(formatter), userId, pkCountry, systemType); + if(ObjectUtil.isNotEmpty(currentMonthVO) + && currentMonthVO.getTotalCurrentMonthPV().compareTo(SysConstants.TOTAL_AREA_PV) >= 0 + && currentMonthVO.getSmallCurrentMonthPV().compareTo(SysConstants.SMALL_AREA_PV) >=0 + ){ + + return AjaxResult.success(RetailMemberRegionVO.builder() + .regionStatus(EYesNo.YES.getIntValue()) + .build()); + } + }else{ + return AjaxResult.success(RetailMemberRegionVO.builder() + .regionStatus(EYesNo.YES.getIntValue()) + .build()); + } } // if(ObjectUtil.isNotEmpty(retailAchieve.getArealPv()) // && result.getTotalPv().multiply(new BigDecimal("10000")).compareTo(SysConstants.TOTAL_AREA_PV) >= 0 @@ -216,6 +233,7 @@ public class RetailMemberController extends BaseController { CuMemberRetailRegionExt cuMemberRetailRegionExt = iCuMemberRetailRegionService.getRegionByMember(userId, EGrade.S_VIP.getValue(), systemType); log.info("cuMemberRetailRegionExt -> {}", JSONUtil.toJsonStr(cuMemberRetailRegionExt)); + if (null != cuMemberRetailRegionExt) { if (EYesNo.YES.getIntValue() == cuMemberRetailRegionExt.getIsRegion()) { canSet = true; @@ -234,12 +252,28 @@ public class RetailMemberController extends BaseController { canSet = true; } }else{ + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(CuMemberRetailRegion::getPkMember, userId); + int countNum = iCuMemberRetailRegionService.count(queryWrapper); + boolean notFirst = countNum > 0; GradeDTO grade = gradeServiceApi.getGradeByGradeValue(EGrade.S_VIP.getValue(), pkCountry).getData(); if(ObjectUtil.isNotEmpty(totalBoxNum) && totalBoxNum.compareTo(grade.getBoxTotal()) >= 0 && smallBoxNum.compareTo(grade.getBoxSmallTotal()) >=0 ){ - canSet = true; + if(notFirst){ + LocalDate today = LocalDate.now(); + DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE; + CurrentMonthVO currentMonthVO = retailAchieveService.getCurrentMonthPV(today.format(formatter), userId, pkCountry, systemType); + if(ObjectUtil.isNotEmpty(currentMonthVO) + && currentMonthVO.getTotalCurrentMonthPV().compareTo(SysConstants.TOTAL_AREA_PV) >= 0 + && currentMonthVO.getSmallCurrentMonthPV().compareTo(SysConstants.SMALL_AREA_PV) >=0 + ){ + canSet = true; + } + }else{ + canSet = true; + } } // if(result.getTotalPv().multiply(new BigDecimal("10000")).compareTo(SysConstants.TOTAL_AREA_PV) >= 0 // && result.getSmallRangeTotalPv().multiply(new BigDecimal("10000")).compareTo(SysConstants.SMALL_AREA_PV) >=0 diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/service/ICuMemberRetailAchieveService.java b/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/service/ICuMemberRetailAchieveService.java index 9f369375..464ed89e 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/service/ICuMemberRetailAchieveService.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/service/ICuMemberRetailAchieveService.java @@ -4,10 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.hzs.common.domain.member.achieve.CuMemberRetailRange; import com.hzs.retail.member.param.MarketDynamicsQueryDateParam; import com.hzs.retail.member.utils.PageResult; -import com.hzs.retail.member.vo.CuMemberRetailAchieveVO; -import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsDetailVO; -import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsResultVO; -import com.hzs.retail.member.vo.MarketDynamicsDetailVO; +import com.hzs.retail.member.vo.*; import java.util.List; import java.util.Map; @@ -115,5 +112,8 @@ public interface ICuMemberRetailAchieveService extends IService getMarketDynamics(MarketDynamicsQueryDateParam param); } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/service/impl/CuMemberRetailAchieveServiceImpl.java b/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/service/impl/CuMemberRetailAchieveServiceImpl.java index c9d25241..549489da 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/service/impl/CuMemberRetailAchieveServiceImpl.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/service/impl/CuMemberRetailAchieveServiceImpl.java @@ -20,10 +20,7 @@ import com.hzs.retail.member.param.MarketDynamicsQueryDateParam; import com.hzs.retail.member.service.ICuMemberRetailAchieveService; import com.hzs.retail.member.utils.DataStatisticsUtil; import com.hzs.retail.member.utils.PageResult; -import com.hzs.retail.member.vo.CuMemberRetailAchieveVO; -import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsDetailVO; -import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsResultVO; -import com.hzs.retail.member.vo.MarketDynamicsDetailVO; +import com.hzs.retail.member.vo.*; import com.hzs.system.config.IGradeServiceApi; import com.hzs.system.config.dto.GradeDTO; import lombok.extern.slf4j.Slf4j; @@ -360,6 +357,22 @@ public class CuMemberRetailAchieveServiceImpl extends ServiceImpl pkMemberList = baseMapper.selectDirectPushByPkMember(pkMember, systemType); + pkMemberList.add(userId); + CuMemberRetailAchieveVO memberAchieveVO = CuMemberRetailAchieveVO.builder() + .memberRetailTable(memberRetailTable) + .memberRetailSTable(memberSecondTable) + .pkMemberList(pkMemberList).systemType(systemType).build(); + List statisticsDetailVOList = baseMapper.getRetailDataStatisticsDetail(memberAchieveVO); + CuMember cuMember = iCuMemberService.queryMember(userId); + BigAndSmallRangeVO bigAndSmallRangeVO = DataStatisticsUtil.getBigAndSmallRangeVO(statisticsDetailVOList, cuMember); + MarketDynamicsQueryDateParam param = new MarketDynamicsQueryDateParam(); + DataStatisticsUtil.setQueryDateParam(param); + param.setCurrentDayTableName(memberSecondTable); + param.setCurrentMonthTableName(memberRetailTable); + param.setLastMonthTableName(getDayTableName(param.getLastMonthDate())); + List detailVOList = baseMapper.getMarketDynamicsDetail(param); + BigDecimal totalMouthPV = detailVOList.stream() + .map(MarketDynamicsDetailVO::getCurrentMonthPv) + .filter(Objects::nonNull) + .reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal bigMouthPV = BigDecimal.ZERO; + MarketDynamicsDetailVO bigRange = detailVOList.stream().filter(vo -> { + assert bigAndSmallRangeVO != null; + return vo.getPkId().equals(bigAndSmallRangeVO.getBigRangeId()); + }).findFirst().orElse(null); + if(ObjectUtil.isNotEmpty(bigRange)){ + bigMouthPV = bigRange.getCurrentMonthPv(); + } + BigDecimal smallMountPV = totalMouthPV.subtract(bigMouthPV); + return CurrentMonthVO.builder().smallCurrentMonthPV(smallMountPV).totalCurrentMonthPV(totalMouthPV).build(); + } + @Override public PageResult getMarketDynamics(MarketDynamicsQueryDateParam param) { Long pkMember = SecurityUtils.getUserId(); diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/utils/DataStatisticsUtil.java b/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/utils/DataStatisticsUtil.java index e78da820..2c9d0ad1 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/utils/DataStatisticsUtil.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/utils/DataStatisticsUtil.java @@ -5,6 +5,7 @@ import cn.hutool.core.util.StrUtil; import com.hzs.common.core.enums.EYesNo; import com.hzs.common.domain.member.base.CuMember; import com.hzs.retail.member.param.MarketDynamicsQueryDateParam; +import com.hzs.retail.member.vo.BigAndSmallRangeVO; import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsDetailVO; import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsResultVO; import com.hzs.retail.member.vo.MarketDynamicsDetailVO; @@ -309,4 +310,55 @@ public class DataStatisticsUtil { // .lastMonthDate(lastDayOfPreviousMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))) // .build(); } + + + public static CuMemberRetailDataStatisticsDetailVO getBigRangeWithPV(List detailVOList, CuMember cuMember){ + Long pkId = cuMember.getPkId(); + // 非激活直接返0 + // 激活判断上一天的ENABLE_STATUS 0为正常 1为当天激活 不计算日结数据 + if(EYesNo.NO.getIntValue() == cuMember.getIsActivate()){ + return CuMemberRetailDataStatisticsDetailVO.builder() + .build(); + } + calcDetailVOTotalField(detailVOList, pkId); + addVirtualBranch(detailVOList, pkId); + CuMemberRetailDataStatisticsDetailVO total = getDetailVOByPKID(detailVOList, pkId); + if(EYesNo.NO.getIntValue() == cuMember.getIsActivate()){ + // 昨日非激活 排除昨日日结表数据 + excludeDailySettlementData(detailVOList); + } + else{ + // 排除注水数据 + excludeWaterInjectionData(detailVOList, pkId); + } + return getBigRangePVDetailVO(detailVOList, pkId); + } + + + public static BigAndSmallRangeVO getBigAndSmallRangeVO(List detailVOList, CuMember cuMember){ + Long pkId = cuMember.getPkId(); + BigAndSmallRangeVO bigAndSmallRangeVO = new BigAndSmallRangeVO(); + // 非激活直接返0 + // 激活判断上一天的ENABLE_STATUS 0为正常 1为当天激活 不计算日结数据 + if(EYesNo.NO.getIntValue() == cuMember.getIsActivate()){ + return null; + } + calcDetailVOTotalField(detailVOList, pkId); + addVirtualBranch(detailVOList, pkId); + CuMemberRetailDataStatisticsDetailVO total = getDetailVOByPKID(detailVOList, pkId); + if(EYesNo.NO.getIntValue() == cuMember.getIsActivate()){ + // 昨日非激活 排除昨日日结表数据 + excludeDailySettlementData(detailVOList); + } + else{ + // 排除注水数据 + excludeWaterInjectionData(detailVOList, pkId); + } + CuMemberRetailDataStatisticsDetailVO big = getBigRangePVDetailVO(detailVOList, pkId); + bigAndSmallRangeVO.setBigRangeId(big.getPkId()); + List smallIdList = detailVOList.stream() + .map(CuMemberRetailDataStatisticsDetailVO::getPkId).filter(id -> !id.equals(big.getPkId())).collect(Collectors.toList()); + bigAndSmallRangeVO.setSmallRangeId(smallIdList); + return bigAndSmallRangeVO; + } } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/vo/BigAndSmallRangeVO.java b/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/vo/BigAndSmallRangeVO.java new file mode 100644 index 00000000..8ca2c923 --- /dev/null +++ b/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/vo/BigAndSmallRangeVO.java @@ -0,0 +1,18 @@ +package com.hzs.retail.member.vo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class BigAndSmallRangeVO implements Serializable { + private Long bigRangeId; + private List smallRangeId; +} diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/vo/CurrentMonthVO.java b/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/vo/CurrentMonthVO.java new file mode 100644 index 00000000..9dee3c48 --- /dev/null +++ b/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/vo/CurrentMonthVO.java @@ -0,0 +1,19 @@ +package com.hzs.retail.member.vo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class CurrentMonthVO implements Serializable { + private BigDecimal totalCurrentMonthPV; + private BigDecimal smallCurrentMonthPV; +}