## 业绩汇总接口;
This commit is contained in:
parent
b4e065ff55
commit
2da43d2891
|
@ -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);
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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, "业绩汇总信息");
|
||||
}
|
||||
|
||||
}
|
|
@ -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;
|
||||
|
||||
}
|
|
@ -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;
|
||||
|
||||
}
|
|
@ -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>
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue