## Opt - 业绩独立大小区条件&市场动态列表接口
This commit is contained in:
parent
ca0321a43a
commit
0dccb9792f
|
@ -181,7 +181,6 @@ public class ApiRetailHomePageController extends BaseController {
|
||||||
*/
|
*/
|
||||||
@PostMapping("/market-dynamics")
|
@PostMapping("/market-dynamics")
|
||||||
public AjaxResult getMarketDynamics(@RequestBody MarketDynamicsQueryDateParam param) {
|
public AjaxResult getMarketDynamics(@RequestBody MarketDynamicsQueryDateParam param) {
|
||||||
retailAchieveService.getMarketDynamics(param);
|
return AjaxResult.success(retailAchieveService.getMarketDynamics(param));
|
||||||
return AjaxResult.success();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,8 +2,10 @@ package com.hzs.retail.member.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.hzs.common.domain.member.achieve.CuMemberRetailRange;
|
import com.hzs.common.domain.member.achieve.CuMemberRetailRange;
|
||||||
|
import com.hzs.retail.member.param.MarketDynamicsQueryDateParam;
|
||||||
import com.hzs.retail.member.vo.CuMemberRetailAchieveVO;
|
import com.hzs.retail.member.vo.CuMemberRetailAchieveVO;
|
||||||
import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsDetailVO;
|
import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsDetailVO;
|
||||||
|
import com.hzs.retail.member.vo.MarketDynamicsDetailVO;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -174,6 +176,8 @@ public interface CuMemberRetailRangeMapper extends BaseMapper<CuMemberRetailRang
|
||||||
*/
|
*/
|
||||||
List<CuMemberRetailDataStatisticsDetailVO> getRetailDataStatisticsDetail(CuMemberRetailAchieveVO cuMemberAchieveVO);
|
List<CuMemberRetailDataStatisticsDetailVO> getRetailDataStatisticsDetail(CuMemberRetailAchieveVO cuMemberAchieveVO);
|
||||||
|
|
||||||
|
List<MarketDynamicsDetailVO> getMarketDynamicsDetail(@Param("param") MarketDynamicsQueryDateParam param);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询当天自己新增盒数
|
* 查询当天自己新增盒数
|
||||||
*
|
*
|
||||||
|
|
|
@ -6,6 +6,7 @@ import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
|
@ -17,6 +18,7 @@ import java.io.Serializable;
|
||||||
public class MarketDynamicsQueryDateParam implements Serializable {
|
public class MarketDynamicsQueryDateParam implements Serializable {
|
||||||
private Long pkId;
|
private Long pkId;
|
||||||
private String nowDate;
|
private String nowDate;
|
||||||
|
private String yesterdayDate;
|
||||||
private String lastMonthDate;
|
private String lastMonthDate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -24,10 +26,12 @@ public class MarketDynamicsQueryDateParam implements Serializable {
|
||||||
*/
|
*/
|
||||||
private String currentMonthTableName;
|
private String currentMonthTableName;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private String lastMonthTableName;
|
private String lastMonthTableName;
|
||||||
private String currentDayTableName;
|
private String currentDayTableName;
|
||||||
|
|
||||||
|
private List<Long> pkIdList;
|
||||||
/**
|
/**
|
||||||
* 查询条件 (会员编号/会员姓名)
|
* 查询条件 (会员编号/会员姓名)
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -3,6 +3,7 @@ package com.hzs.retail.member.service;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.hzs.common.domain.member.achieve.CuMemberRetailRange;
|
import com.hzs.common.domain.member.achieve.CuMemberRetailRange;
|
||||||
import com.hzs.retail.member.param.MarketDynamicsQueryDateParam;
|
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.CuMemberRetailAchieveVO;
|
||||||
import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsDetailVO;
|
import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsDetailVO;
|
||||||
import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsResultVO;
|
import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsResultVO;
|
||||||
|
@ -114,5 +115,5 @@ public interface ICuMemberRetailAchieveService extends IService<CuMemberRetailRa
|
||||||
*/
|
*/
|
||||||
CuMemberRetailDataStatisticsResultVO getRetailDataStatisticsDetail(Long pkMember, Integer pkCountry, Integer systemType);
|
CuMemberRetailDataStatisticsResultVO getRetailDataStatisticsDetail(Long pkMember, Integer pkCountry, Integer systemType);
|
||||||
|
|
||||||
List<MarketDynamicsDetailVO> getMarketDynamics(MarketDynamicsQueryDateParam param);
|
PageResult<MarketDynamicsDetailVO> getMarketDynamics(MarketDynamicsQueryDateParam param);
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,7 @@ import com.hzs.retail.member.mapper.CuMemberRetailRangeMapper;
|
||||||
import com.hzs.retail.member.param.MarketDynamicsQueryDateParam;
|
import com.hzs.retail.member.param.MarketDynamicsQueryDateParam;
|
||||||
import com.hzs.retail.member.service.ICuMemberRetailAchieveService;
|
import com.hzs.retail.member.service.ICuMemberRetailAchieveService;
|
||||||
import com.hzs.retail.member.utils.DataStatisticsUtil;
|
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.CuMemberRetailAchieveVO;
|
||||||
import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsDetailVO;
|
import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsDetailVO;
|
||||||
import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsResultVO;
|
import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsResultVO;
|
||||||
|
@ -307,18 +308,20 @@ public class CuMemberRetailAchieveServiceImpl extends ServiceImpl<CuMemberRetail
|
||||||
*/
|
*/
|
||||||
private String getTableName() {
|
private String getTableName() {
|
||||||
String localDate = LocalDate.now().minus(1, ChronoUnit.DAYS).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
String localDate = LocalDate.now().minus(1, ChronoUnit.DAYS).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
||||||
int period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(localDate).getPkId();
|
CuMemberSettlePeriod cuMemberSettlePeriod =iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(localDate);
|
||||||
if(ObjectUtil.isEmpty(period)){
|
if(ObjectUtil.isEmpty(cuMemberSettlePeriod)){
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
int period = cuMemberSettlePeriod.getPkId();
|
||||||
return TableNameConstants.CU_MEMBER_RETAIL_RANGE + period;
|
return TableNameConstants.CU_MEMBER_RETAIL_RANGE + period;
|
||||||
}
|
}
|
||||||
private String getDayTableName() {
|
private String getDayTableName() {
|
||||||
String localDate = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
String localDate = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
||||||
int period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(localDate).getPkId();
|
CuMemberSettlePeriod cuMemberSettlePeriod =iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(localDate);
|
||||||
if(ObjectUtil.isEmpty(period)){
|
if(ObjectUtil.isEmpty(cuMemberSettlePeriod)){
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
int period = cuMemberSettlePeriod.getPkId();
|
||||||
return TableNameConstants.CU_MEMBER_RETAIL_S + period;
|
return TableNameConstants.CU_MEMBER_RETAIL_S + period;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -586,19 +589,26 @@ public class CuMemberRetailAchieveServiceImpl extends ServiceImpl<CuMemberRetail
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<MarketDynamicsDetailVO> getMarketDynamics(MarketDynamicsQueryDateParam param) {
|
public PageResult<MarketDynamicsDetailVO> getMarketDynamics(MarketDynamicsQueryDateParam param) {
|
||||||
|
Long pkMember = SecurityUtils.getUserId();
|
||||||
|
Integer systemType = SecurityUtils.getSystemType();
|
||||||
|
|
||||||
DataStatisticsUtil.setQueryDateParam(param);
|
DataStatisticsUtil.setQueryDateParam(param);
|
||||||
param.setCurrentDayTableName(getDayTableName());
|
param.setCurrentDayTableName(getDayTableName());
|
||||||
param.setCurrentMonthTableName(getDayTableName(param.getNowDate()));
|
param.setCurrentMonthTableName(getDayTableName(param.getYesterdayDate()));
|
||||||
param.setCurrentDayTableName(getDayTableName(param.getLastMonthDate()));
|
param.setLastMonthTableName(getDayTableName(param.getLastMonthDate()));
|
||||||
log.info("MarketDynamicsQueryDateParam : {}", JSONUtil.toJsonStr(param));
|
log.info("MarketDynamicsQueryDateParam : {}", JSONUtil.toJsonStr(param));
|
||||||
return Collections.emptyList();
|
List<Long> pkMemberList = baseMapper.selectDirectPushByPkMember(pkMember, systemType);
|
||||||
|
param.setPkIdList(pkMemberList);
|
||||||
|
List<MarketDynamicsDetailVO> detailVOList = baseMapper.getMarketDynamicsDetail(param);
|
||||||
|
log.info("detailVOList : {}", JSONUtil.toJsonStr(detailVOList));
|
||||||
|
return DataStatisticsUtil.getMarketDynamicsAssemblyData(detailVOList, param);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getDayTableName(String localDate) {
|
private String getDayTableName(String localDate) {
|
||||||
CuMemberSettlePeriod cuMemberSettlePeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(localDate);
|
CuMemberSettlePeriod cuMemberSettlePeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(localDate);
|
||||||
if(ObjectUtil.isEmpty(cuMemberSettlePeriod)){
|
if(ObjectUtil.isEmpty(cuMemberSettlePeriod)){
|
||||||
return null;
|
return TableNameConstants.CU_MEMBER_RETAIL_RANGE;
|
||||||
}
|
}
|
||||||
int period = cuMemberSettlePeriod.getPkId();
|
int period = cuMemberSettlePeriod.getPkId();
|
||||||
return TableNameConstants.CU_MEMBER_RETAIL_RANGE + period;
|
return TableNameConstants.CU_MEMBER_RETAIL_RANGE + period;
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
package com.hzs.retail.member.utils;
|
package com.hzs.retail.member.utils;
|
||||||
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.hzs.common.core.enums.EYesNo;
|
import com.hzs.common.core.enums.EYesNo;
|
||||||
import com.hzs.common.domain.member.base.CuMember;
|
import com.hzs.common.domain.member.base.CuMember;
|
||||||
import com.hzs.retail.member.param.MarketDynamicsQueryDateParam;
|
import com.hzs.retail.member.param.MarketDynamicsQueryDateParam;
|
||||||
import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsDetailVO;
|
import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsDetailVO;
|
||||||
import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsResultVO;
|
import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsResultVO;
|
||||||
|
import com.hzs.retail.member.vo.MarketDynamicsDetailVO;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
|
@ -17,6 +19,7 @@ import java.util.ArrayList;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户统计数据工具
|
* 用户统计数据工具
|
||||||
|
@ -49,7 +52,8 @@ public class DataStatisticsUtil {
|
||||||
calcDetailVOTotalField(detailVOList, pkId);
|
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 bigRangeBox = getBigRangeBoxDetailVO(detailVOList, pkId);
|
||||||
|
CuMemberRetailDataStatisticsDetailVO bigRangePv = getBigRangePVDetailVO(detailVOList, pkId);
|
||||||
if(EYesNo.NO.getIntValue() == cuMember.getIsActivate()){
|
if(EYesNo.NO.getIntValue() == cuMember.getIsActivate()){
|
||||||
// 昨日非激活 排除昨日日结表数据
|
// 昨日非激活 排除昨日日结表数据
|
||||||
excludeDailySettlementData(detailVOList);
|
excludeDailySettlementData(detailVOList);
|
||||||
|
@ -57,19 +61,19 @@ public class DataStatisticsUtil {
|
||||||
// 排除注水数据
|
// 排除注水数据
|
||||||
excludeWaterInjectionData(detailVOList, pkId);
|
excludeWaterInjectionData(detailVOList, pkId);
|
||||||
}
|
}
|
||||||
Integer smallRangeTotalBoxNum = total.getTotalBoxNum() - bigRange.getTotalBoxNum();
|
Integer smallRangeTotalBoxNum = total.getTotalBoxNum() - bigRangeBox.getTotalBoxNum();
|
||||||
if(smallRangeTotalBoxNum < 0){
|
if(smallRangeTotalBoxNum < 0){
|
||||||
smallRangeTotalBoxNum = 0;
|
smallRangeTotalBoxNum = 0;
|
||||||
}
|
}
|
||||||
BigDecimal smallRangeTotalPv = total.getTotalPv().subtract(bigRange.getTotalPv());
|
BigDecimal smallRangeTotalPv = total.getTotalPv().subtract(bigRangePv.getTotalPv());
|
||||||
if(smallRangeTotalPv.compareTo(BigDecimal.ZERO) < 0){
|
if(smallRangeTotalPv.compareTo(BigDecimal.ZERO) < 0){
|
||||||
smallRangeTotalPv = BigDecimal.ZERO;
|
smallRangeTotalPv = BigDecimal.ZERO;
|
||||||
}
|
}
|
||||||
return CuMemberRetailDataStatisticsResultVO.builder()
|
return CuMemberRetailDataStatisticsResultVO.builder()
|
||||||
.totalBoxNum(total.getTotalBoxNum())
|
.totalBoxNum(total.getTotalBoxNum())
|
||||||
.totalPv(formatPV(total.getTotalPv()))
|
.totalPv(formatPV(total.getTotalPv()))
|
||||||
.bigRangeTotalBoxNum(bigRange.getTotalBoxNum())
|
.bigRangeTotalBoxNum(bigRangeBox.getTotalBoxNum())
|
||||||
.bigRangeTotalPv(formatPV(bigRange.getTotalPv()))
|
.bigRangeTotalPv(formatPV(bigRangePv.getTotalPv()))
|
||||||
.smallRangeTotalBoxNum(smallRangeTotalBoxNum)
|
.smallRangeTotalBoxNum(smallRangeTotalBoxNum)
|
||||||
.smallRangeTotalPv(formatPV(smallRangeTotalPv))
|
.smallRangeTotalPv(formatPV(smallRangeTotalPv))
|
||||||
.build();
|
.build();
|
||||||
|
@ -219,6 +223,23 @@ public class DataStatisticsUtil {
|
||||||
return detailVOList.parallelStream().filter(o -> o.getPkId().equals(pkId)).findFirst().orElse(null);
|
return detailVOList.parallelStream().filter(o -> o.getPkId().equals(pkId)).findFirst().orElse(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 组装市场动态列表数据
|
||||||
|
* @param detailVOList
|
||||||
|
*/
|
||||||
|
public static PageResult<MarketDynamicsDetailVO> getMarketDynamicsAssemblyData(List<MarketDynamicsDetailVO> detailVOList, MarketDynamicsQueryDateParam param){
|
||||||
|
if(StrUtil.isNotEmpty(param.getKeyWords())){
|
||||||
|
detailVOList = detailVOList.parallelStream().filter(o -> param.getKeyWords().contains(o.getMemberCode()) || param.getKeyWords().contains(o.getMemberName())).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
MarketDynamicsDetailVO bigRange = detailVOList.parallelStream()
|
||||||
|
.max(Comparator.comparingInt(MarketDynamicsDetailVO::getTotalBoxNum))
|
||||||
|
.orElse(null);
|
||||||
|
detailVOList = detailVOList.parallelStream().filter(o -> !o.getPkId().equals(bigRange.getPkId())).collect(Collectors.toList());
|
||||||
|
PageResult<MarketDynamicsDetailVO> result = MemoryPageUtils.paginate(detailVOList, param.getPageNum(), param.getPageSize());
|
||||||
|
result.setBigRange(bigRange);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
private static Integer getMaxTotalBoxNum(List<CuMemberRetailDataStatisticsDetailVO> detailVOList) {
|
private static Integer getMaxTotalBoxNum(List<CuMemberRetailDataStatisticsDetailVO> detailVOList) {
|
||||||
return detailVOList.parallelStream()
|
return detailVOList.parallelStream()
|
||||||
.map(CuMemberRetailDataStatisticsDetailVO::getTotalBoxNum)
|
.map(CuMemberRetailDataStatisticsDetailVO::getTotalBoxNum)
|
||||||
|
@ -226,12 +247,18 @@ public class DataStatisticsUtil {
|
||||||
.max(Integer::compare)
|
.max(Integer::compare)
|
||||||
.orElse(null);
|
.orElse(null);
|
||||||
}
|
}
|
||||||
private static CuMemberRetailDataStatisticsDetailVO getBigRangeDetailVO(List<CuMemberRetailDataStatisticsDetailVO> detailVOList, Long pkId){
|
private static CuMemberRetailDataStatisticsDetailVO getBigRangeBoxDetailVO(List<CuMemberRetailDataStatisticsDetailVO> detailVOList, Long pkId){
|
||||||
return detailVOList.parallelStream()
|
return detailVOList.stream()
|
||||||
.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);
|
||||||
}
|
}
|
||||||
|
private static CuMemberRetailDataStatisticsDetailVO getBigRangePVDetailVO(List<CuMemberRetailDataStatisticsDetailVO> detailVOList, Long pkId){
|
||||||
|
return detailVOList.stream()
|
||||||
|
.filter(vo -> vo.getTotalBoxNum() != null && !vo.getPkId().equals(pkId))
|
||||||
|
.max(Comparator.comparing(CuMemberRetailDataStatisticsDetailVO::getTotalPv))
|
||||||
|
.orElse(null);
|
||||||
|
}
|
||||||
public static BigDecimal formatPV(BigDecimal pv){
|
public static BigDecimal formatPV(BigDecimal pv){
|
||||||
return pv.divide(
|
return pv.divide(
|
||||||
new BigDecimal("10000"),
|
new BigDecimal("10000"),
|
||||||
|
@ -242,9 +269,11 @@ public class DataStatisticsUtil {
|
||||||
public static void setQueryDateParam(MarketDynamicsQueryDateParam param){
|
public static void setQueryDateParam(MarketDynamicsQueryDateParam param){
|
||||||
LocalDate.now(ZoneId.of("Asia/Shanghai"));
|
LocalDate.now(ZoneId.of("Asia/Shanghai"));
|
||||||
LocalDate currentDate = LocalDate.now();
|
LocalDate currentDate = LocalDate.now();
|
||||||
|
LocalDate yesterdayDate = currentDate.minusDays(1);
|
||||||
LocalDate previousMonthDate = currentDate.minusMonths(1);
|
LocalDate previousMonthDate = currentDate.minusMonths(1);
|
||||||
LocalDate lastDayOfPreviousMonth = previousMonthDate.with(TemporalAdjusters.lastDayOfMonth());
|
LocalDate lastDayOfPreviousMonth = previousMonthDate.with(TemporalAdjusters.lastDayOfMonth());
|
||||||
param.setNowDate(currentDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
param.setNowDate(currentDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
||||||
|
param.setYesterdayDate(yesterdayDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
||||||
param.setLastMonthDate(lastDayOfPreviousMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
param.setLastMonthDate(lastDayOfPreviousMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
||||||
// System.out.println("当前日期: " + currentDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
// System.out.println("当前日期: " + currentDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
||||||
// System.out.println("上一个月最后一天: " + lastDayOfPreviousMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
// System.out.println("上一个月最后一天: " + lastDayOfPreviousMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
package com.hzs.retail.member.utils;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class MemoryPageUtils {
|
||||||
|
public static <T> PageResult<T> paginate(List<T> dataList, int pageNum, int pageSize) {
|
||||||
|
// 校验参数有效性
|
||||||
|
if (pageNum <= 0) pageNum = 1;
|
||||||
|
if (pageSize <= 0) pageSize = 10; // 默认每页10条
|
||||||
|
|
||||||
|
int total = dataList.size();
|
||||||
|
int start = (pageNum - 1) * pageSize;
|
||||||
|
if (start >= total) {
|
||||||
|
return new PageResult<>(total, new ArrayList<>());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 计算结束索引(避免超出列表长度)
|
||||||
|
int end = Math.min(start + pageSize, total);
|
||||||
|
List<T> pageData = dataList.subList(start, end);
|
||||||
|
|
||||||
|
return new PageResult<>(total, pageData);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
package com.hzs.retail.member.utils;
|
||||||
|
|
||||||
|
import com.hzs.retail.member.vo.MarketDynamicsDetailVO;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class PageResult<T> {
|
||||||
|
private long total;
|
||||||
|
private List<T> rows;
|
||||||
|
private MarketDynamicsDetailVO bigRange;
|
||||||
|
|
||||||
|
public PageResult(long total, List<T> rows) {
|
||||||
|
this.total = total;
|
||||||
|
this.rows = rows;
|
||||||
|
}
|
||||||
|
|
||||||
|
// getter/setter 省略
|
||||||
|
}
|
|
@ -105,5 +105,13 @@ public class CuMemberRetailDataStatisticsDetailVO implements Serializable {
|
||||||
*/
|
*/
|
||||||
private Integer smallBoxNum;
|
private Integer smallBoxNum;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CuMemberRetailDataStatisticsDetailVO clone() {
|
||||||
|
try {
|
||||||
|
return (CuMemberRetailDataStatisticsDetailVO) super.clone();
|
||||||
|
} catch (CloneNotSupportedException e) {
|
||||||
|
throw new AssertionError();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,10 @@ import java.math.BigDecimal;
|
||||||
* 市场动态列表对象
|
* 市场动态列表对象
|
||||||
*/
|
*/
|
||||||
public class MarketDynamicsDetailVO implements Serializable {
|
public class MarketDynamicsDetailVO implements Serializable {
|
||||||
|
/**
|
||||||
|
* 用户ID
|
||||||
|
*/
|
||||||
|
private Long pkId;
|
||||||
/**
|
/**
|
||||||
* 用户编号
|
* 用户编号
|
||||||
*/
|
*/
|
||||||
|
@ -28,11 +32,13 @@ public class MarketDynamicsDetailVO implements Serializable {
|
||||||
/**
|
/**
|
||||||
* 结算等级
|
* 结算等级
|
||||||
*/
|
*/
|
||||||
private String pkSettleGrade;
|
private Integer pkSettleGrade;
|
||||||
|
private String gradeName;
|
||||||
/**
|
/**
|
||||||
* 真实奖衔
|
* 真实奖衔
|
||||||
*/
|
*/
|
||||||
private String pkAwards;
|
private Integer pkAwards;
|
||||||
|
private String awardsName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 今日业绩
|
* 今日业绩
|
||||||
|
@ -71,4 +77,9 @@ public class MarketDynamicsDetailVO implements Serializable {
|
||||||
* 上月盒数
|
* 上月盒数
|
||||||
*/
|
*/
|
||||||
private Integer lastMonthBoxNum;
|
private Integer lastMonthBoxNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 累计消费盒数
|
||||||
|
*/
|
||||||
|
private Integer totalBoxNum;
|
||||||
}
|
}
|
||||||
|
|
|
@ -872,4 +872,40 @@
|
||||||
</if>
|
</if>
|
||||||
</where>
|
</where>
|
||||||
</select>
|
</select>
|
||||||
|
<select id="getMarketDynamicsDetail" resultType="com.hzs.retail.member.vo.MarketDynamicsDetailVO">
|
||||||
|
SELECT
|
||||||
|
cu.pk_id,
|
||||||
|
cu.MEMBER_CODE,
|
||||||
|
cu.MEMBER_NAME,
|
||||||
|
cu.PK_SETTLE_GRADE,
|
||||||
|
grade.GRADE_NAME,
|
||||||
|
cu.PK_AWARDS,
|
||||||
|
awards.AWARDS_NAME,
|
||||||
|
currentMonth.ENABLE_STATUS,
|
||||||
|
NVL( currentDay.NEW_CONSUME_PV + currentDay.TEAM_NEW_PV, 0 ) todayPv,
|
||||||
|
NVL( currentDay.NEW_BOX_NUM + currentDay.TEAM_NEW_BOX_NUM, 0 ) todayBoxNum,
|
||||||
|
NVL( currentMonth.NEW_CONSUME_PV + currentMonth.TEAM_NEW_PV, 0 ) yesterdayPv,
|
||||||
|
NVL( currentMonth.NEW_BOX_NUM + currentMonth.TEAM_NEW_BOX_NUM, 0 ) yesterdayBoxNum,
|
||||||
|
NVL( currentMonth.MONTH_CONSUME_PV, 0 ) currentMonthPv,
|
||||||
|
NVL( currentMonth.MONTH_BOX_NUM , 0 ) currentMonthBoxNum,
|
||||||
|
NVL( lastMonth.MONTH_CONSUME_PV, 0 ) lastMonthPv,
|
||||||
|
NVL( lastMonth.MONTH_BOX_NUM, 0 ) lastMonthBoxNum,
|
||||||
|
NVL( currentMonth.CONSUME_BOX_NUM + currentDay.NEW_BOX_NUM + currentDay.TEAM_NEW_BOX_NUM, 0 ) totalBoxNum
|
||||||
|
FROM
|
||||||
|
cu_member cu
|
||||||
|
LEFT JOIN ${param.currentDayTableName} currentDay ON cu.PK_ID = currentDay.PK_MEMBER
|
||||||
|
LEFT JOIN ${param.currentMonthTableName} currentMonth ON cu.PK_ID = currentMonth.PK_MEMBER AND cu.CATEGORY = 0
|
||||||
|
LEFT JOIN ${param.lastMonthTableName} lastMonth ON cu.PK_ID = lastMonth.PK_MEMBER AND cu.CATEGORY = 0
|
||||||
|
LEFT JOIN BD_GRADE grade on grade.PK_ID = cu.PK_SETTLE_GRADE
|
||||||
|
LEFT JOIN BD_AWARDS awards on awards.PK_ID = cu.PK_AWARDS
|
||||||
|
<where>
|
||||||
|
<if test="param.pkIdList != null and param.pkIdList.size > 0">
|
||||||
|
cu.pk_id in
|
||||||
|
<foreach collection="param.pkIdList" item="pkMember" separator="," open="(" close=")">
|
||||||
|
#{pkMember}
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
order by totalBoxNum desc, todayPv desc, cu.CREATION_TIME desc, cu.pk_id asc
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
Loading…
Reference in New Issue