From e21b1412e15d22f857d09fbfa02b741a6cad05ab Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Fri, 18 Jul 2025 15:20:00 +0800 Subject: [PATCH] =?UTF-8?q?##=20=E4=B8=9A=E7=BB=A9=E6=B1=87=E6=80=BB?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member/base/mapper/CuMemberMapper.java | 9 ++ .../member/base/service/ICuMemberService.java | 11 ++ .../service/impl/CuMemberServiceImpl.java | 64 ++++++++++ .../manage/CensusSummaryController.java | 116 ++++++++++++++++++ .../census/param/CensusSummaryParam.java | 55 +++++++++ .../hzs/member/census/vo/CensusSummaryVo.java | 82 +++++++++++++ .../mapper/member/base/CuMemberMapper.xml | 24 ++++ .../com/hzs/common/core/utils/DateUtils.java | 35 ++++++ 8 files changed, 396 insertions(+) create mode 100644 bd-business/bd-business-member/src/main/java/com/hzs/member/census/controller/manage/CensusSummaryController.java create mode 100644 bd-business/bd-business-member/src/main/java/com/hzs/member/census/param/CensusSummaryParam.java create mode 100644 bd-business/bd-business-member/src/main/java/com/hzs/member/census/vo/CensusSummaryVo.java diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/mapper/CuMemberMapper.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/mapper/CuMemberMapper.java index 1c18f5e1..a5e63dc7 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/mapper/CuMemberMapper.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/mapper/CuMemberMapper.java @@ -8,6 +8,7 @@ import com.hzs.common.domain.system.config.BdTradeWhiteConfig; import com.hzs.member.base.dto.MemberCountDTO; import com.hzs.member.base.param.*; import com.hzs.member.base.vo.*; +import com.hzs.member.census.param.CensusSummaryParam; import com.hzs.member.handlebusiness.vo.BusinessMemberVO; import com.hzs.member.handlebusiness.vo.HandleBusinessVO; import com.hzs.member.marketnews.param.MarketNewsParam; @@ -628,4 +629,12 @@ public interface CuMemberMapper extends BaseMapper { String getSharePosterImage(@Param("userId") Long userId); + /** + * 查询业绩汇总 + * + * @param censusSummaryParam + * @return + */ + List queryDateBySummary(CensusSummaryParam censusSummaryParam); + } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/ICuMemberService.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/ICuMemberService.java index 692fdc70..62a318a9 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/ICuMemberService.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/ICuMemberService.java @@ -12,6 +12,8 @@ import com.hzs.member.base.dto.ShowWaresDTO; import com.hzs.member.base.dto.ZeroElementRevokeDTO; import com.hzs.member.base.param.*; import com.hzs.member.base.vo.*; +import com.hzs.member.census.param.CensusSummaryParam; +import com.hzs.member.census.vo.CensusSummaryVo; import com.hzs.member.handlebusiness.dto.AnalysisBusinessAppealParam; import com.hzs.member.handlebusiness.vo.BusinessMemberVO; import com.hzs.member.handlebusiness.vo.HandleBusinessVO; @@ -900,4 +902,13 @@ public interface ICuMemberService extends IService { * @return */ String getSharePosterImage(); + + /** + * 查询汇总 + * + * @param censusSummaryParam 表格名称 + * @return + */ + List selectCensusSummary(CensusSummaryParam censusSummaryParam, List days); + } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberServiceImpl.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberServiceImpl.java index 03ae4f7e..d9d3be60 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberServiceImpl.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberServiceImpl.java @@ -42,6 +42,8 @@ import com.hzs.member.base.mapper.CuMemberMapper; import com.hzs.member.base.param.*; import com.hzs.member.base.service.*; import com.hzs.member.base.vo.*; +import com.hzs.member.census.param.CensusSummaryParam; +import com.hzs.member.census.vo.CensusSummaryVo; import com.hzs.member.detail.service.ICuMemberServiceLogService; import com.hzs.member.empty.service.ICuMemberEmptyCodeService; import com.hzs.member.handlebusiness.dto.AnalysisBusinessAppealParam; @@ -3237,4 +3239,66 @@ public class CuMemberServiceImpl extends ServiceImpl i return baseMapper.getSharePosterImage(SecurityUtils.getUserId()); } + + @Override + public List selectCensusSummary(CensusSummaryParam censusSummaryParam, List days) { + // 根据类型查询所有人各类型的订单业绩汇总 + List censusSummaryList = new ArrayList<>(); + for (String day : days) { + censusSummaryParam.setTime(day); + List memberMeritsSummaryVoList = baseMapper.queryDateBySummary(censusSummaryParam); + Map memberMeritsSummaryMap = memberMeritsSummaryVoList.stream().collect(Collectors.toMap(MemberMeritsSummaryVo::getOrderType, Function.identity())); + + CensusSummaryVo censusSummaryVo = new CensusSummaryVo(); + censusSummaryVo.setSettleDate(day); + + // 注册 + BigDecimal reAmount = BigDecimal.ZERO; + BigDecimal reAchieve = BigDecimal.ZERO; + if (memberMeritsSummaryMap.get(EOrderType.REGISTER_ORDER.getValue()) != null) { + reAmount = memberMeritsSummaryMap.get(EOrderType.REGISTER_ORDER.getValue()).getAmount(); + reAchieve = memberMeritsSummaryMap.get(EOrderType.REGISTER_ORDER.getValue()).getAchieve(); + } + censusSummaryVo.setRegisterAmount(reAmount); + censusSummaryVo.setRegisterPv(reAchieve); + + // 升级 + BigDecimal upAmount = BigDecimal.ZERO; + BigDecimal upAchieve = BigDecimal.ZERO; + if (memberMeritsSummaryMap.get(EOrderType.UPGRADE_ORDER.getValue()) != null) { + upAmount = memberMeritsSummaryMap.get(EOrderType.UPGRADE_ORDER.getValue()).getAmount(); + upAchieve = memberMeritsSummaryMap.get(EOrderType.UPGRADE_ORDER.getValue()).getAchieve(); + } + censusSummaryVo.setUpgradeAmount(upAmount); + censusSummaryVo.setUpgradePv(upAchieve); + + // 首购 + censusSummaryVo.setFirstPurchaseAmount(censusSummaryVo.getRegisterAmount().add(censusSummaryVo.getUpgradeAmount())); + censusSummaryVo.setFirstPurchasePv(censusSummaryVo.getRegisterPv().add(censusSummaryVo.getUpgradePv())); + + // 复购订单 + BigDecimal repurchaseAmount = BigDecimal.ZERO; + BigDecimal repurchaseAchieve = BigDecimal.ZERO; + if (memberMeritsSummaryMap.get(EOrderType.REPURCHASE_ORDER.getValue()) != null) { + repurchaseAmount = memberMeritsSummaryMap.get(EOrderType.REPURCHASE_ORDER.getValue()).getAmount(); + repurchaseAchieve = memberMeritsSummaryMap.get(EOrderType.REPURCHASE_ORDER.getValue()).getAchieve(); + } + // 复消 + if (memberMeritsSummaryMap.get(EOrderType.CONSUME_ORDER.getValue()) != null) { + repurchaseAmount = repurchaseAmount.add(memberMeritsSummaryMap.get(EOrderType.CONSUME_ORDER.getValue()).getAmount()); + } + + // 复购 + censusSummaryVo.setRepurchaseAmount(repurchaseAmount); + censusSummaryVo.setRepurchasePv(repurchaseAchieve); + + // 金额总计 + censusSummaryVo.setAmountTotal(censusSummaryVo.getFirstPurchaseAmount().add(censusSummaryVo.getRepurchaseAmount())); + // 业绩汇总 + censusSummaryVo.setPvTotal(censusSummaryVo.getFirstPurchasePv().add(censusSummaryVo.getRepurchasePv())); + censusSummaryList.add(censusSummaryVo); + } + return censusSummaryList; + } + } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/census/controller/manage/CensusSummaryController.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/census/controller/manage/CensusSummaryController.java new file mode 100644 index 00000000..17bf4d1a --- /dev/null +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/census/controller/manage/CensusSummaryController.java @@ -0,0 +1,116 @@ +package com.hzs.member.census.controller.manage; + +import com.hzs.common.core.annotation.AccessPermissions; +import com.hzs.common.core.utils.DateUtils; +import com.hzs.common.core.utils.StringUtils; +import com.hzs.common.core.utils.poi.ExcelUtil; +import com.hzs.common.core.web.controller.BaseController; +import com.hzs.common.core.web.domain.AjaxResult; +import com.hzs.common.security.utils.SecurityUtils; +import com.hzs.member.achieve.service.ICuMemberSettlePeriodService; +import com.hzs.member.base.service.ICuMemberService; +import com.hzs.member.census.param.CensusSummaryParam; +import com.hzs.member.census.vo.CensusSummaryVo; +import com.hzs.system.sys.IMenuColumnServiceApi; +import org.apache.dubbo.config.annotation.DubboReference; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +@RestController +@RequestMapping("/manage/member-structure") +public class CensusSummaryController extends BaseController { + + @Autowired + private ICuMemberSettlePeriodService memberSettlePeriodService; + @Autowired + private ICuMemberService memberService; + + @DubboReference + IMenuColumnServiceApi iMenuColumnServiceApi; + + /** + * 业绩汇总 + * + * @param censusSummaryParam + * @return + */ + @AccessPermissions("performanceTotal") + @GetMapping("/list") + public AjaxResult list(CensusSummaryParam censusSummaryParam) { + if (null == censusSummaryParam.getStartDate() + || null == censusSummaryParam.getEndDate()) { + return AjaxResult.success(new ArrayList<>()); + } + + List pkVertex = new ArrayList<>(); + if (StringUtils.isNotEmpty(censusSummaryParam.getPkBdVertexStr())) { + pkVertex = Arrays.stream(censusSummaryParam.getPkBdVertexStr().split(",")) + .map(Long::parseLong) + .collect(Collectors.toList()); + } + censusSummaryParam.setPkVertex(pkVertex); + + // 当天查询秒结 + Date date = new Date(); + // 查询当天 + String thisTime = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, date); + // 查询当前时间范围 + List days = new ArrayList<>(); + if (censusSummaryParam.getStartDate() != null && censusSummaryParam.getEndDate() != null) { + days = DateUtils.findDaysStr(DateUtils.parseDateTimeToStr(DateUtils.YYYY_MM_DD, censusSummaryParam.getStartDate()), DateUtils.parseDateTimeToStr(DateUtils.YYYY_MM_DD, censusSummaryParam.getEndDate())); + } else { + // 默认查询当天 + days.add(thisTime); + } + + censusSummaryParam.setPkCountry(SecurityUtils.getPkCountry()); + List resultList = memberService.selectCensusSummary(censusSummaryParam, days); + + return AjaxResult.success(resultList); + } + + /** + * 导出(导出) + */ + @PostMapping("/export") + public void export(CensusSummaryParam censusSummaryParam, HttpServletResponse response) { + if (censusSummaryParam.getStartDate() == null || censusSummaryParam.getEndDate() == null) { + ExcelUtil util = new ExcelUtil<>(CensusSummaryVo.class); + util.exportExcel(response, new ArrayList<>(), "业绩汇总信息"); + } + + // 当天查询秒结 + Date date = new Date(); + // 查询当天 + String thisTime = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, date); + if (censusSummaryParam.getMemberSettlePeriodId() != null) { + memberSettlePeriodService.getById(censusSummaryParam.getMemberSettlePeriodId()); + } else { + memberSettlePeriodService.getCuMemberSettlePeriodByDate(thisTime); + } + + // 查询当前时间范围 + List days = new ArrayList(); + if (censusSummaryParam.getStartDate() != null && censusSummaryParam.getEndDate() != null) { + days = DateUtils.findDaysStr(DateUtils.parseDateTimeToStr(DateUtils.YYYY_MM_DD, censusSummaryParam.getStartDate()), DateUtils.parseDateTimeToStr(DateUtils.YYYY_MM_DD, censusSummaryParam.getEndDate())); + } else { + // 默认查询当天 + days.add(thisTime); + } + + List resultList = memberService.selectCensusSummary(censusSummaryParam, days); + ExcelUtil util = new ExcelUtil<>(CensusSummaryVo.class, iMenuColumnServiceApi.queryMenuColumn("performanceTotal", SecurityUtils.getUserId()).getData()); + util.exportExcel(response, resultList, "业绩汇总信息"); + } + +} diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/census/param/CensusSummaryParam.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/census/param/CensusSummaryParam.java new file mode 100644 index 00000000..d5073e16 --- /dev/null +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/census/param/CensusSummaryParam.java @@ -0,0 +1,55 @@ +package com.hzs.member.census.param; + +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +public class CensusSummaryParam { + + /** + * 结算期数 + */ + private Long memberSettlePeriodId; + + /** + * 币种展示 + */ + private Long pkCurrency; + + /** + * 所属国家 + */ + private Integer pkCountry; + + /** + * 开始时间 + */ + private Date startDate; + + /** + * 结束时间 + */ + private Date endDate; + + /** + * 查询时间 + */ + private String time; + + /** + * 体系 + */ + private List pkVertex; + + /** + * 团队 + */ + private List pkMemberTeam; + /** + * 体系 + */ + private String pkBdVertexStr; + +} diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/census/vo/CensusSummaryVo.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/census/vo/CensusSummaryVo.java new file mode 100644 index 00000000..91faac1a --- /dev/null +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/census/vo/CensusSummaryVo.java @@ -0,0 +1,82 @@ +package com.hzs.member.census.vo; + +import com.hzs.common.core.annotation.Excel; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class CensusSummaryVo { + + /** + * 结算期数 + */ + private Integer numberPeriods; + + /** + * 结算时间 + */ + @Excel(name = "结算时间") + private String settleDate; + + /** + * 注册金额 + */ + @Excel(name = "注册金额") + private BigDecimal registerAmount; + + /** + * 注册业绩 + */ + @Excel(name = "注册业绩") + private BigDecimal registerPv; + + /** + * 升级金额 + */ + @Excel(name = "升级金额") + private BigDecimal upgradeAmount; + + /** + * 升级业绩 + */ + @Excel(name = "升级业绩") + private BigDecimal upgradePv; + + /** + * 首购金额 + */ + @Excel(name = "首购金额") + private BigDecimal firstPurchaseAmount; + + /** + * 首购业绩 + */ + @Excel(name = "首购业绩") + private BigDecimal firstPurchasePv; + + /** + * 复购金额 + */ + @Excel(name = "复购金额") + private BigDecimal repurchaseAmount; + + /** + * 复购pv + */ + @Excel(name = "复购业绩") + private BigDecimal repurchasePv; + + /** + * 金额总计 + */ + @Excel(name = "金额总计") + private BigDecimal amountTotal; + + /** + * 业绩汇总 + */ + @Excel(name = "业绩汇总") + private BigDecimal pvTotal; + +} diff --git a/bd-business/bd-business-member/src/main/resources/mapper/member/base/CuMemberMapper.xml b/bd-business/bd-business-member/src/main/resources/mapper/member/base/CuMemberMapper.xml index 8886787e..dfb5f75e 100644 --- a/bd-business/bd-business-member/src/main/resources/mapper/member/base/CuMemberMapper.xml +++ b/bd-business/bd-business-member/src/main/resources/mapper/member/base/CuMemberMapper.xml @@ -2477,6 +2477,7 @@ and t0.category = 0) where rownum = 1 + + + + diff --git a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/utils/DateUtils.java b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/utils/DateUtils.java index ddae36e6..aa66ce87 100644 --- a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/utils/DateUtils.java +++ b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/utils/DateUtils.java @@ -8,8 +8,10 @@ import java.time.*; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import java.time.temporal.TemporalAdjusters; +import java.util.ArrayList; import java.util.Calendar; import java.util.Date; +import java.util.List; /** * 时间工具类 @@ -875,4 +877,37 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { return before7days.getTime() < addtime.getTime(); } + + /** + * 获取两个时间内的每一天 + * + * @param startTime + * @param endTime + * @return + */ + public static List findDaysStr(String startTime, String endTime) { + SimpleDateFormat sdf = new SimpleDateFormat(DateUtils.YYYY_MM_DD); + Date dBegin = null; + Date dEnd = null; + try { + dBegin = sdf.parse(startTime); + dEnd = sdf.parse(endTime); + } catch (ParseException e) { + e.printStackTrace(); + } + List daysStrList = new ArrayList<>(); + daysStrList.add(sdf.format(dBegin)); + Calendar calBegin = Calendar.getInstance(); + calBegin.setTime(dBegin); + Calendar calEnd = Calendar.getInstance(); + calEnd.setTime(dEnd); + + while (dEnd.after(calBegin.getTime())) { + calBegin.add(Calendar.DAY_OF_MONTH, 1); + String dayStr = sdf.format(calBegin.getTime()); + daysStrList.add(dayStr); + } + return daysStrList; + } + }