数据统计

This commit is contained in:
Tankaikai 2025-03-12 10:42:43 +08:00
parent 8820338941
commit aef8116606
8 changed files with 80 additions and 25 deletions

View File

@ -10,6 +10,7 @@ import com.czg.sa.StpKit;
import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.paginate.Page;
import com.pig4cloud.plugin.excel.annotation.ResponseExcel; import com.pig4cloud.plugin.excel.annotation.ResponseExcel;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@ -22,6 +23,7 @@ import java.util.List;
* @author tankaikai * @author tankaikai
* @since 2025-03-07 15:25 * @since 2025-03-07 15:25
*/ */
@Slf4j
@AllArgsConstructor @AllArgsConstructor
@RestController @RestController
@RequestMapping("/admin/sale/summary") @RequestMapping("/admin/sale/summary")
@ -62,6 +64,8 @@ public class SaleSummaryController {
@OperationLog("导出") @OperationLog("导出")
//@SaAdminCheckPermission("saleSummary:export") //@SaAdminCheckPermission("saleSummary:export")
public List<SaleSummaryInfoVo> summaryExport(SaleSummaryCountParam param) { public List<SaleSummaryInfoVo> summaryExport(SaleSummaryCountParam param) {
Long shopId = StpKit.USER.getShopId(0L);
param.setShopId(shopId);
return saleSummaryService.summaryList(param); return saleSummaryService.summaryList(param);
} }

View File

@ -32,5 +32,5 @@ public class SaleSummaryCountVo implements Serializable {
/** /**
* 退单量 * 退单量
*/ */
private Integer refundCount = 0; private BigDecimal refundCount = BigDecimal.ZERO;
} }

View File

@ -2,6 +2,7 @@ package com.czg.order.vo;
import cn.idev.excel.annotation.ExcelIgnore; import cn.idev.excel.annotation.ExcelIgnore;
import cn.idev.excel.annotation.ExcelProperty; import cn.idev.excel.annotation.ExcelProperty;
import cn.idev.excel.annotation.write.style.ColumnWidth;
import com.alibaba.fastjson2.annotation.JSONField; import com.alibaba.fastjson2.annotation.JSONField;
import com.pig4cloud.plugin.excel.annotation.ExcelLine; import com.pig4cloud.plugin.excel.annotation.ExcelLine;
import lombok.Data; import lombok.Data;
@ -17,6 +18,7 @@ import java.math.BigDecimal;
* @since 2025-03-07 16:22 * @since 2025-03-07 16:22
*/ */
@Data @Data
@ColumnWidth(30)
public class SaleSummaryExportVo implements Serializable { public class SaleSummaryExportVo implements Serializable {
@Serial @Serial

View File

@ -1,10 +1,16 @@
package com.czg.order.vo; package com.czg.order.vo;
import cn.idev.excel.annotation.ExcelIgnore;
import cn.idev.excel.annotation.ExcelProperty;
import cn.idev.excel.annotation.write.style.ColumnWidth;
import com.alibaba.fastjson2.annotation.JSONField;
import com.pig4cloud.plugin.excel.annotation.ExcelLine;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
/** /**
* 销量统计明细 * 销量统计明细
@ -13,42 +19,47 @@ import java.io.Serializable;
*/ */
@NoArgsConstructor @NoArgsConstructor
@Data @Data
@ColumnWidth(30)
public class SaleSummaryInfoVo implements Serializable { public class SaleSummaryInfoVo implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* cateName * 导入时候回显行号
*/ */
private String cateName; @ExcelLine
@ExcelIgnore
@JSONField(serialize = false)
private Long lineNum;
/** /**
* name * 商品分类
*/ */
private String name; @ExcelProperty("商品分类")
private String categoryName;
/** /**
* productId * 商品名称
*/ */
private Integer productId; @ExcelProperty("商品名称")
private String productName;
/** /**
* refAmount * 销量
*/ */
private Integer refAmount; @ExcelProperty("销量")
private BigDecimal saleCount;
/** /**
* refNum * 销售金额
*/ */
private Integer refNum; @ExcelProperty("销售金额")
private BigDecimal saleAmount;
/** /**
* salesAmount * 退单量
*/ */
private Integer salesAmount; @ExcelProperty("退单量")
private BigDecimal refundCount;
/** /**
* salesNum * 退单金额
*/ */
private Integer salesNum; @ExcelProperty("退单金额")
/** private BigDecimal refundAmount;
* typeEnum
*/
private String typeEnum;
} }

View File

@ -2,6 +2,7 @@ package com.czg.order.vo;
import cn.idev.excel.annotation.ExcelIgnore; import cn.idev.excel.annotation.ExcelIgnore;
import cn.idev.excel.annotation.ExcelProperty; import cn.idev.excel.annotation.ExcelProperty;
import cn.idev.excel.annotation.write.style.ColumnWidth;
import com.alibaba.fastjson2.annotation.JSONField; import com.alibaba.fastjson2.annotation.JSONField;
import com.pig4cloud.plugin.excel.annotation.ExcelLine; import com.pig4cloud.plugin.excel.annotation.ExcelLine;
import lombok.Data; import lombok.Data;
@ -17,6 +18,7 @@ import java.math.BigDecimal;
* @since 2025-03-07 16:22 * @since 2025-03-07 16:22
*/ */
@Data @Data
@ColumnWidth(30)
public class TableSummaryExportVo implements Serializable { public class TableSummaryExportVo implements Serializable {
@Serial @Serial

View File

@ -5,6 +5,7 @@ import com.czg.order.param.DataSummaryProductSaleParam;
import com.czg.order.param.SaleSummaryCountParam; import com.czg.order.param.SaleSummaryCountParam;
import com.czg.order.vo.DataSummaryProductSaleRankingVo; import com.czg.order.vo.DataSummaryProductSaleRankingVo;
import com.czg.order.vo.SaleSummaryCountVo; import com.czg.order.vo.SaleSummaryCountVo;
import com.czg.order.vo.SaleSummaryInfoVo;
import com.mybatisflex.core.BaseMapper; import com.mybatisflex.core.BaseMapper;
import java.util.List; import java.util.List;
@ -21,4 +22,6 @@ public interface ShopProdStatisticMapper extends BaseMapper<ShopProdStatistic> {
SaleSummaryCountVo getSaleSummaryCount(SaleSummaryCountParam param); SaleSummaryCountVo getSaleSummaryCount(SaleSummaryCountParam param);
List<SaleSummaryInfoVo> findSaleSummaryList(SaleSummaryCountParam param);
} }

View File

@ -5,11 +5,13 @@ import com.czg.order.service.SaleSummaryService;
import com.czg.order.vo.SaleSummaryCountVo; import com.czg.order.vo.SaleSummaryCountVo;
import com.czg.order.vo.SaleSummaryInfoVo; import com.czg.order.vo.SaleSummaryInfoVo;
import com.czg.service.order.mapper.ShopProdStatisticMapper; import com.czg.service.order.mapper.ShopProdStatisticMapper;
import com.czg.utils.PageUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.mybatisflex.core.paginate.Page; import com.mybatisflex.core.paginate.Page;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
@ -34,13 +36,13 @@ public class SaleSummaryServiceImpl implements SaleSummaryService {
@Override @Override
public Page<SaleSummaryInfoVo> summaryPage(SaleSummaryCountParam param) { public Page<SaleSummaryInfoVo> summaryPage(SaleSummaryCountParam param) {
Page<SaleSummaryInfoVo> page = new Page<>(); PageHelper.startPage(PageUtil.buildPageHelp());
page.setRecords(new ArrayList<SaleSummaryInfoVo>()); PageInfo<SaleSummaryInfoVo> pageInfo = new PageInfo<>(shopProdStatisticMapper.findSaleSummaryList(param));
return page; return PageUtil.convert(pageInfo);
} }
@Override @Override
public List<SaleSummaryInfoVo> summaryList(SaleSummaryCountParam param) { public List<SaleSummaryInfoVo> summaryList(SaleSummaryCountParam param) {
return List.of(); return shopProdStatisticMapper.findSaleSummaryList(param);
} }
} }

View File

@ -43,4 +43,35 @@
]]> ]]>
</if> </if>
</select> </select>
<select id="findSaleSummaryList" resultType="com.czg.order.vo.SaleSummaryInfoVo">
select
t1.prod_id,
max(t1.id) as id,
t2.NAME AS product_name,
t3.name as category_name,
sum(t1.sale_count) as sale_count,
sum(t1.sale_amount) as sale_amount,
sum(t1.refund_count) as refund_count,
sum(t1.refund_amount) as refund_amount
from tb_shop_prod_statistic t1
left join tb_product t2 on t1.prod_id = t2.id
left join tb_shop_prod_category t3 on t2.category_id = t3.id
where t1.shop_id = #{shopId}
<if test="productName != null and productName != ''">
and t2.name like concat('%', #{productName}, '%')
</if>
<if test="prodCategoryId != null">
and t2.category_id = #{prodCategoryId}
</if>
<if test="beginDate != null and beginDate != ''">
and t1.create_day >= str_to_date(#{beginDate}, '%Y-%m-%d')
</if>
<if test="endDate != null and endDate != ''">
<![CDATA[
and t1.create_day <= str_to_date(#{endDate}, '%Y-%m-%d')
]]>
</if>
group by t1.prod_id
ORDER BY sum( t1.sale_count ) DESC,max(t1.id) DESC
</select>
</mapper> </mapper>