## 业绩汇总接口;

This commit is contained in:
cabbage 2025-07-18 15:20:00 +08:00
parent b4e065ff55
commit 2da43d2891
8 changed files with 396 additions and 0 deletions

View File

@ -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<CuMember> {
String getSharePosterImage(@Param("userId") Long userId);
/**
* 查询业绩汇总
*
* @param censusSummaryParam
* @return
*/
List<MemberMeritsSummaryVo> queryDateBySummary(CensusSummaryParam censusSummaryParam);
}

View File

@ -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<CuMember> {
* @return
*/
String getSharePosterImage();
/**
* 查询汇总
*
* @param censusSummaryParam 表格名称
* @return
*/
List<CensusSummaryVo> selectCensusSummary(CensusSummaryParam censusSummaryParam, List<String> days);
}

View File

@ -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<CuMemberMapper, CuMember> i
return baseMapper.getSharePosterImage(SecurityUtils.getUserId());
}
@Override
public List<CensusSummaryVo> selectCensusSummary(CensusSummaryParam censusSummaryParam, List<String> days) {
// 根据类型查询所有人各类型的订单业绩汇总
List<CensusSummaryVo> censusSummaryList = new ArrayList<>();
for (String day : days) {
censusSummaryParam.setTime(day);
List<MemberMeritsSummaryVo> memberMeritsSummaryVoList = baseMapper.queryDateBySummary(censusSummaryParam);
Map<Integer, MemberMeritsSummaryVo> 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;
}
}

View File

@ -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<Long> 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<String> 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<CensusSummaryVo> 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<CensusSummaryVo> 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<String> 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<CensusSummaryVo> resultList = memberService.selectCensusSummary(censusSummaryParam, days);
ExcelUtil<CensusSummaryVo> util = new ExcelUtil<>(CensusSummaryVo.class, iMenuColumnServiceApi.queryMenuColumn("performanceTotal", SecurityUtils.getUserId()).getData());
util.exportExcel(response, resultList, "业绩汇总信息");
}
}

View File

@ -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<Long> pkVertex;
/**
* 团队
*/
private List<Long> pkMemberTeam;
/**
* 体系
*/
private String pkBdVertexStr;
}

View File

@ -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;
}

View File

@ -2477,6 +2477,7 @@
and t0.category = 0)
where rownum = 1
</select>
<select id="getSharePosterImage" resultType="java.lang.String" parameterType="java.lang.Long">
select
bv.SHARE_POSTER_IMAGE AS sharePosterImage
@ -2486,4 +2487,27 @@
where cm.PK_ID = ${userId}
</select>
<select id="queryDateBySummary" resultType="com.hzs.member.base.vo.MemberMeritsSummaryVo">
select sa.order_type orderType,
sum(sa.order_amount - nvl(sa.consume_amount, 0)) amount,
sum(sa.order_achieve) achieve
from sa_order sa
inner join cu_member cm
on sa.pk_member = cm.pk_id
and cm.del_flag = 0
and cm.category = 0
where sa.order_status = 1
and sa.del_flag = 0
and to_char(sa.pay_time, 'yyyy-mm-dd') = #{time}
and sa.pk_country = #{pkCountry}
<if test="pkVertex != null and pkVertex.size > 0 ">
and cm.pk_vertex in
<foreach collection="pkVertex" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
group by sa.order_type
</select>
</mapper>

View File

@ -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<String> 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<String> 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;
}
}