## Feat - 业绩统计
This commit is contained in:
parent
a2172da9ed
commit
07f8dbe8d3
|
@ -0,0 +1,19 @@
|
|||
package com.hzs.report.order;
|
||||
|
||||
import com.hzs.common.core.domain.R;
|
||||
import com.hzs.system.sys.dto.ApprovalBusinessResultDTO;
|
||||
|
||||
/**
|
||||
* 订单服务对外提供接口
|
||||
*/
|
||||
public interface IPerformanceSummaryServiceApi {
|
||||
|
||||
/**
|
||||
* 按天创建统计数据
|
||||
*
|
||||
* @param day
|
||||
* @return
|
||||
*/
|
||||
R<Boolean> createDataByDay(String day);
|
||||
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package com.hzs.report.order.controller;
|
||||
|
||||
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 销售业绩统计表 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author sangelxiu1
|
||||
* @since 2025-09-22
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/order/performance-summary")
|
||||
public class CuMemberPerformanceSummaryController {
|
||||
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package com.hzs.report.order.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.hzs.common.domain.report.CuMemberPerformanceSummary;
|
||||
import com.hzs.common.domain.sale.order.SaOrder;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 销售业绩统计表 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author sangelxiu1
|
||||
* @since 2025-09-22
|
||||
*/
|
||||
public interface CuMemberPerformanceSummaryMapper extends BaseMapper<CuMemberPerformanceSummary> {
|
||||
List<SaOrder> getOrderByDay(@Param("startDate") Date startDate, @Param("endDate") Date endDate, @Param("orderTypeList") List<Integer> orderTypeList);
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
package com.hzs.report.order.provider;
|
||||
|
||||
import com.hzs.common.core.domain.R;
|
||||
import com.hzs.report.order.IPerformanceSummaryServiceApi;
|
||||
import com.hzs.report.order.service.ICuMemberPerformanceSummaryService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.dubbo.config.annotation.DubboService;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* 销售业绩统计
|
||||
*/
|
||||
@DubboService
|
||||
@Slf4j
|
||||
public class PerformanceSummaryProvider implements IPerformanceSummaryServiceApi {
|
||||
@Resource
|
||||
ICuMemberPerformanceSummaryService iCuMemberPerformanceSummaryService;
|
||||
@Override
|
||||
public R<Boolean> createDataByDay(String day) {
|
||||
iCuMemberPerformanceSummaryService.createDataByDay(day);
|
||||
return R.ok();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
package com.hzs.report.order.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.hzs.common.domain.report.CuMemberPerformanceSummary;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 销售业绩统计表 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author sangelxiu1
|
||||
* @since 2025-09-22
|
||||
*/
|
||||
public interface ICuMemberPerformanceSummaryService extends IService<CuMemberPerformanceSummary> {
|
||||
void createDataByDay(String day);
|
||||
}
|
|
@ -0,0 +1,73 @@
|
|||
package com.hzs.report.order.service.impl;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.hzs.common.core.utils.DateUtils;
|
||||
import com.hzs.common.domain.report.CuMemberPerformanceSummary;
|
||||
import com.hzs.common.domain.sale.order.SaOrder;
|
||||
import com.hzs.report.order.mapper.CuMemberPerformanceSummaryMapper;
|
||||
import com.hzs.report.order.service.ICuMemberPerformanceSummaryService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 销售业绩统计表 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author sangelxiu1
|
||||
* @since 2025-09-22
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class CuMemberPerformanceSummaryServiceImpl extends ServiceImpl<CuMemberPerformanceSummaryMapper, CuMemberPerformanceSummary> implements ICuMemberPerformanceSummaryService {
|
||||
|
||||
@Override
|
||||
public void createDataByDay(String day) {
|
||||
Date startDate = DateUtils.getStartOfDay(day);
|
||||
Date endDate = DateUtils.getEndOfDay(day);
|
||||
LambdaQueryWrapper<CuMemberPerformanceSummary> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(CuMemberPerformanceSummary::getSummaryDate, startDate);
|
||||
baseMapper.delete(queryWrapper);
|
||||
List<Integer> orderTypeList = Arrays.asList(41, 42, 43);
|
||||
List<SaOrder> orderList = baseMapper.getOrderByDay(startDate, endDate, orderTypeList);
|
||||
Map<Integer, List<SaOrder>> groupedOrders = orderList.stream().collect(Collectors.groupingBy(SaOrder::getOrderType));
|
||||
CuMemberPerformanceSummary summary = CuMemberPerformanceSummary.getInitCuMemberPerformanceSummary(startDate);
|
||||
for (SaOrder saOrder : groupedOrders.get(41)) {
|
||||
summary.setRetailRegisterAmount(summary.getRetailDiscountAmount().add(saOrder.getOrderAmount()));
|
||||
summary.setRetailRegisterPv(summary.getRetailDiscountPv().add(saOrder.getOrderAchieve()));
|
||||
|
||||
summary.setTotalAmount(summary.getTotalAmount().add(saOrder.getOrderAmount()));
|
||||
summary.setTotalPv(summary.getTotalPv().add(saOrder.getOrderAmount()));
|
||||
}
|
||||
for (SaOrder saOrder : groupedOrders.get(42)) {
|
||||
summary.setRetailUpgradeAmount(summary.getRetailUpgradeAmount().add(saOrder.getOrderAmount()));
|
||||
summary.setRetailUpgradePv(summary.getRetailUpgradePv().add(saOrder.getOrderAchieve()));
|
||||
|
||||
summary.setTotalAmount(summary.getTotalAmount().add(saOrder.getOrderAmount()));
|
||||
summary.setTotalPv(summary.getTotalPv().add(saOrder.getOrderAmount()));
|
||||
}
|
||||
for (SaOrder saOrder : groupedOrders.get(43)) {
|
||||
summary.setRetailRepurchaseAmount(summary.getRetailRepurchaseAmount().add(saOrder.getOrderAmount()));
|
||||
summary.setRetailRepurchasePv(summary.getRetailRepurchasePv().add(saOrder.getOrderAchieve()));
|
||||
|
||||
summary.setTotalAmount(summary.getTotalAmount().add(saOrder.getOrderAmount()));
|
||||
summary.setTotalPv(summary.getTotalPv().add(saOrder.getOrderAmount()));
|
||||
}
|
||||
for (SaOrder saOrder : groupedOrders.get(44)) {
|
||||
summary.setRetailDiscountAmount(summary.getRetailDiscountAmount().add(saOrder.getOrderAmount()));
|
||||
summary.setDividendPv(summary.getDividendPv().add(saOrder.getOrderAchieve()));
|
||||
|
||||
summary.setTotalAmount(summary.getTotalAmount().add(saOrder.getOrderAmount()));
|
||||
summary.setTotalPv(summary.getTotalPv().add(saOrder.getOrderAmount()));
|
||||
}
|
||||
summary.setDividendPv(summary.getTotalPv().multiply(new BigDecimal("0.015")));
|
||||
baseMapper.insert(summary);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.hzs.report.order.mapper.CuMemberPerformanceSummaryMapper">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="BaseResultMap" type="com.hzs.common.domain.report.CuMemberPerformanceSummary">
|
||||
<result column="DEL_FLAG" property="delFlag" />
|
||||
<result column="PK_COUNTRY" property="pkCountry" />
|
||||
<result column="CREATION_TIME" property="creationTime" />
|
||||
<result column="MODIFIED_TIME" property="modifiedTime" />
|
||||
<result column="PK_CREATOR" property="pkCreator" />
|
||||
<result column="PK_MODIFIED" property="pkModified" />
|
||||
<result column="PK_ID" property="pkId" />
|
||||
<result column="SUMMARY_DATE" property="summaryDate" />
|
||||
<result column="RETAIL_REGISTER_AMOUNT" property="retailRegisterAmount" />
|
||||
<result column="RETAIL_REGISTER_PV" property="retailRegisterPv" />
|
||||
<result column="RETAIL_UPGRADE_AMOUNT" property="retailUpgradeAmount" />
|
||||
<result column="RETAIL_UPGRADE_PV" property="retailUpgradePv" />
|
||||
<result column="RETAIL_REPURCHASE_AMOUNT" property="retailRepurchaseAmount" />
|
||||
<result column="RETAIL_REPURCHASE_PV" property="retailRepurchasePv" />
|
||||
<result column="RETAIL_DISCOUNT_AMOUNT" property="retailDiscountAmount" />
|
||||
<result column="RETAIL_DISCOUNT_PV" property="retailDiscountPv" />
|
||||
<result column="TOTAL_AMOUNT" property="totalAmount" />
|
||||
<result column="TOTAL_PV" property="totalPv" />
|
||||
<result column="DIVIDEND_PV" property="dividendPv" />
|
||||
</resultMap>
|
||||
|
||||
<!-- 通用查询结果列 -->
|
||||
<sql id="Base_Column_List">
|
||||
DEL_FLAG,
|
||||
PK_COUNTRY,
|
||||
CREATION_TIME,
|
||||
MODIFIED_TIME,
|
||||
PK_CREATOR,
|
||||
PK_MODIFIED,
|
||||
PK_ID, SUMMARY_DATE, RETAIL_REGISTER_AMOUNT, RETAIL_REGISTER_PV, RETAIL_UPGRADE_AMOUNT, RETAIL_UPGRADE_PV, RETAIL_REPURCHASE_AMOUNT, RETAIL_REPURCHASE_PV, RETAIL_DISCOUNT_AMOUNT, RETAIL_DISCOUNT_PV, TOTAL_AMOUNT, TOTAL_PV, DIVIDEND_PV
|
||||
</sql>
|
||||
<select id="getOrderByDay" resultType="com.hzs.common.domain.sale.order.SaOrder">
|
||||
select * from sa_order
|
||||
where del_flag = 0
|
||||
and order_status = 1
|
||||
and pay_time between #{startDate} and #{endDate}
|
||||
and order_type in
|
||||
<foreach collection="orderTypeList" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
</select>
|
||||
|
||||
</mapper>
|
|
@ -0,0 +1,125 @@
|
|||
package com.hzs.common.domain.report;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.hzs.common.core.web.domain.BaseEntity;
|
||||
import lombok.*;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 销售业绩统计表
|
||||
* </p>
|
||||
*
|
||||
* @author sangelxiu1
|
||||
* @since 2025-09-22
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Accessors(chain = true)
|
||||
@TableName("CU_MEMBER_PERFORMANCE_SUMMARY")
|
||||
@KeySequence("C_M_PERFORMANCE_SUMMARY_SEQ")
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
public class CuMemberPerformanceSummary extends BaseEntity {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableField("PK_ID")
|
||||
private Long pkId;
|
||||
|
||||
/**
|
||||
* 统计日期
|
||||
*/
|
||||
@TableField("SUMMARY_DATE")
|
||||
private Date summaryDate;
|
||||
|
||||
/**
|
||||
* 精品专区销售金额
|
||||
*/
|
||||
@TableField("RETAIL_REGISTER_AMOUNT")
|
||||
private BigDecimal retailRegisterAmount;
|
||||
|
||||
/**
|
||||
* 精品专区销售业绩
|
||||
*/
|
||||
@TableField("RETAIL_REGISTER_PV")
|
||||
private BigDecimal retailRegisterPv;
|
||||
|
||||
/**
|
||||
* 甄选专区销售金额
|
||||
*/
|
||||
@TableField("RETAIL_UPGRADE_AMOUNT")
|
||||
private BigDecimal retailUpgradeAmount;
|
||||
|
||||
/**
|
||||
* 甄选专区销售业绩
|
||||
*/
|
||||
@TableField("RETAIL_UPGRADE_PV")
|
||||
private BigDecimal retailUpgradePv;
|
||||
|
||||
/**
|
||||
* 商城专区销售金额
|
||||
*/
|
||||
@TableField("RETAIL_REPURCHASE_AMOUNT")
|
||||
private BigDecimal retailRepurchaseAmount;
|
||||
|
||||
/**
|
||||
* 商城专区销售业绩
|
||||
*/
|
||||
@TableField("RETAIL_REPURCHASE_PV")
|
||||
private BigDecimal retailRepurchasePv;
|
||||
|
||||
/**
|
||||
* 五折专区销售金额
|
||||
*/
|
||||
@TableField("RETAIL_DISCOUNT_AMOUNT")
|
||||
private BigDecimal retailDiscountAmount;
|
||||
|
||||
/**
|
||||
* 五折专区销售业绩
|
||||
*/
|
||||
@TableField("RETAIL_DISCOUNT_PV")
|
||||
private BigDecimal retailDiscountPv;
|
||||
|
||||
/**
|
||||
* 当期销售金额合计
|
||||
*/
|
||||
@TableField("TOTAL_AMOUNT")
|
||||
private BigDecimal totalAmount;
|
||||
|
||||
/**
|
||||
* 当期销售业绩合计
|
||||
*/
|
||||
@TableField("TOTAL_PV")
|
||||
private BigDecimal totalPv;
|
||||
|
||||
/**
|
||||
* 当日分红合计(分红:所有专区PV值的1.5%每天进行记录)
|
||||
*/
|
||||
@TableField("DIVIDEND_PV")
|
||||
private BigDecimal dividendPv;
|
||||
|
||||
|
||||
public static CuMemberPerformanceSummary getInitCuMemberPerformanceSummary(Date summaryDate){
|
||||
return CuMemberPerformanceSummary.builder()
|
||||
.summaryDate(summaryDate)
|
||||
.retailRegisterAmount(BigDecimal.ZERO)
|
||||
.retailRegisterPv(BigDecimal.ZERO)
|
||||
.retailUpgradeAmount(BigDecimal.ZERO)
|
||||
.retailUpgradePv(BigDecimal.ZERO)
|
||||
.retailRepurchaseAmount(BigDecimal.ZERO)
|
||||
.retailRepurchasePv(BigDecimal.ZERO)
|
||||
.retailDiscountAmount(BigDecimal.ZERO)
|
||||
.retailDiscountPv(BigDecimal.ZERO)
|
||||
.totalAmount(BigDecimal.ZERO)
|
||||
.totalPv(BigDecimal.ZERO)
|
||||
.dividendPv(BigDecimal.ZERO)
|
||||
.build();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
CREATE TABLE CU_MEMBER_PERFORMANCE_SUMMARY
|
||||
(
|
||||
"PK_ID" NUMBER(20,0) NOT NULL ENABLE,
|
||||
"SUMMARY_DATE" DATE NOT NULL ENABLE,
|
||||
"RETAIL_REGISTER_AMOUNT" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE,
|
||||
"RETAIL_REGISTER_PV" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE,
|
||||
"RETAIL_UPGRADE_AMOUNT" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE,
|
||||
"RETAIL_UPGRADE_PV" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE,
|
||||
"RETAIL_REPURCHASE_AMOUNT" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE,
|
||||
"RETAIL_REPURCHASE_PV" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE,
|
||||
"RETAIL_DISCOUNT_AMOUNT" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE,
|
||||
"RETAIL_DISCOUNT_PV" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE,
|
||||
"TOTAL_AMOUNT" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE,
|
||||
"TOTAL_PV" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE,
|
||||
"DIVIDEND_PV" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE,
|
||||
"DEL_FLAG" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
|
||||
"PK_COUNTRY" NUMBER(4,0) DEFAULT 1 NOT NULL ENABLE,
|
||||
"CREATION_TIME" DATE DEFAULT sysdate NOT NULL ENABLE,
|
||||
"MODIFIED_TIME" DATE,
|
||||
"PK_CREATOR" NUMBER(20,0) NOT NULL ENABLE,
|
||||
"PK_MODIFIED" NUMBER(20,0)
|
||||
);
|
||||
|
||||
COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."SUMMARY_DATE" IS '统计日期';
|
||||
COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."RETAIL_REGISTER_AMOUNT" IS '精品专区销售金额';
|
||||
COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."RETAIL_REGISTER_PV" IS '精品专区销售业绩';
|
||||
COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."RETAIL_UPGRADE_AMOUNT" IS '甄选专区销售金额';
|
||||
COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."RETAIL_UPGRADE_PV" IS '甄选专区销售业绩';
|
||||
COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."RETAIL_REPURCHASE_AMOUNT" IS '商城专区销售金额';
|
||||
COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."RETAIL_REPURCHASE_PV" IS '商城专区销售业绩';
|
||||
COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."RETAIL_DISCOUNT_AMOUNT" IS '五折专区销售金额';
|
||||
COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."RETAIL_DISCOUNT_PV" IS '五折专区销售业绩';
|
||||
COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."TOTAL_AMOUNT" IS '当期销售金额合计';
|
||||
COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."TOTAL_PV" IS '当期销售业绩合计';
|
||||
COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."DIVIDEND_PV" IS '当日分红合计(分红:所有专区PV值的1.5%每天进行记录)';
|
||||
|
||||
COMMENT ON TABLE "CU_MEMBER_PERFORMANCE_SUMMARY" IS '销售业绩统计表';
|
||||
|
||||
|
||||
|
||||
CREATE SEQUENCE C_M_PERFORMANCE_SUMMARY_SEQ
|
||||
START WITH 1
|
||||
INCREMENT BY 1;
|
Loading…
Reference in New Issue