Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
39f890e754
|
@ -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<CuMemberRetailRegion> 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<CuMemberRetailRegion> 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
|
||||
|
|
|
@ -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<CuMemberRetailRa
|
|||
*/
|
||||
CuMemberRetailDataStatisticsResultVO getRetailDataStatisticsDetail(Long pkMember, Integer pkCountry, Integer systemType);
|
||||
|
||||
|
||||
CurrentMonthVO getCurrentMonthPV(String date, Long pkMember, Integer pkCountry, Integer systemType);
|
||||
|
||||
PageResult<MarketDynamicsDetailVO> getMarketDynamics(MarketDynamicsQueryDateParam param);
|
||||
}
|
||||
|
|
|
@ -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<CuMemberRetail
|
|||
int period = cuMemberSettlePeriod.getPkId();
|
||||
return TableNameConstants.CU_MEMBER_RETAIL_S + period;
|
||||
}
|
||||
private String getTableNameSpecial4Date(String localDate) {
|
||||
CuMemberSettlePeriod cuMemberSettlePeriod =iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(localDate);
|
||||
if(ObjectUtil.isEmpty(cuMemberSettlePeriod)){
|
||||
return null;
|
||||
}
|
||||
int period = cuMemberSettlePeriod.getPkId();
|
||||
return TableNameConstants.CU_MEMBER_RETAIL_RANGE + period;
|
||||
}
|
||||
private String getDayTableNameSpecial4Date(String localDate) {
|
||||
CuMemberSettlePeriod cuMemberSettlePeriod =iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(localDate);
|
||||
if(ObjectUtil.isEmpty(cuMemberSettlePeriod)){
|
||||
return null;
|
||||
}
|
||||
int period = cuMemberSettlePeriod.getPkId();
|
||||
return TableNameConstants.CU_MEMBER_RETAIL_S + period;
|
||||
}
|
||||
public static boolean isBeforeThreeAm() {
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
// 获取当天凌晨3点的时间(日期与当前日期相同,时间为03:00:00)
|
||||
|
@ -637,6 +650,50 @@ public class CuMemberRetailAchieveServiceImpl extends ServiceImpl<CuMemberRetail
|
|||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CurrentMonthVO getCurrentMonthPV(String date, Long pkMember, Integer pkCountry, Integer systemType) {
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
LocalDate today = LocalDate.now();
|
||||
String yesterdayDate;
|
||||
String memberRetailTable = TableNameConstants.CU_MEMBER_RETAIL_S;
|
||||
if (today.getDayOfMonth() != 1) {
|
||||
LocalDate previousDay = today.minusDays(1);
|
||||
yesterdayDate = previousDay.format(DateTimeFormatter.ISO_LOCAL_DATE);
|
||||
memberRetailTable = getTableNameSpecial4Date(yesterdayDate);
|
||||
}
|
||||
String memberSecondTable = getDayTableNameSpecial();
|
||||
//查询直推会员
|
||||
List<Long> pkMemberList = baseMapper.selectDirectPushByPkMember(pkMember, systemType);
|
||||
pkMemberList.add(userId);
|
||||
CuMemberRetailAchieveVO memberAchieveVO = CuMemberRetailAchieveVO.builder()
|
||||
.memberRetailTable(memberRetailTable)
|
||||
.memberRetailSTable(memberSecondTable)
|
||||
.pkMemberList(pkMemberList).systemType(systemType).build();
|
||||
List<CuMemberRetailDataStatisticsDetailVO> 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<MarketDynamicsDetailVO> 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<MarketDynamicsDetailVO> getMarketDynamics(MarketDynamicsQueryDateParam param) {
|
||||
Long pkMember = SecurityUtils.getUserId();
|
||||
|
|
|
@ -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<CuMemberRetailDataStatisticsDetailVO> 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<CuMemberRetailDataStatisticsDetailVO> 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<Long> smallIdList = detailVOList.stream()
|
||||
.map(CuMemberRetailDataStatisticsDetailVO::getPkId).filter(id -> !id.equals(big.getPkId())).collect(Collectors.toList());
|
||||
bigAndSmallRangeVO.setSmallRangeId(smallIdList);
|
||||
return bigAndSmallRangeVO;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<Long> smallRangeId;
|
||||
}
|
|
@ -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;
|
||||
}
|
Loading…
Reference in New Issue