feat:菜品统计v2

This commit is contained in:
dzc committed 2026-06-16 10:23:45 +08:00
1 parent 07a46ad56b
commit 8b3b86a679
6 files changed
+82 -6

No files matched your search

@@ -21,4 +21,9 @@ public class HardCarVo extends HardCarEntity {
// 购买次数【统计使用】
private Long payCount;
// 统计使用
private Long merchantId;
private String merchantName;
}
@@ -124,10 +124,16 @@ public class HardCanteenTotalController {
return R.ok(canteenTotalService.productTotal(page, dto, null));
}
@Operation(summary = "菜品出售记录", description = "菜品出售记录")
@Operation(summary = "菜品出售统计", description = "菜品出售统计")
@PostMapping("/proudct-query")
public R<Page<HardCarVo>> proudctQuery(@ParameterObject Page page, @RequestBody HardCarDto dto) {
return R.ok(canteenTotalService.proudctQuery(page, dto));
}
@Operation(summary = "菜品出售商户统计", description = "菜品出售商户统计")
@PostMapping("/proudct-mch-query")
public R<Page<HardCarVo>> proudctMchQuery(@ParameterObject Page page, @RequestBody HardCarDto dto) {
return R.ok(canteenTotalService.proudctMchQuery(page, dto));
}
}
@@ -37,6 +37,11 @@ public interface HardCarMapper extends PjcloudBaseMapper<HardCarEntity> {
Page<HardCarVo> proudctQuery(Page page, @Param("dto") HardCarDto dto);
/**
* 菜品出售商户统计
*/
Page<HardCarVo> proudctMchQuery(Page page, HardCarDto dto);
List<HardCanteenProductTotalVo> listByDept(@Param("dto") HardOrderDto dto, DataScope dataScope);
List<HardCanteenProductTotalVo> listByHourType(@Param("dto") HardOrderDto dto);
@@ -47,10 +47,15 @@ public interface HardCanteenTotalService {
Page<HardCanteenProductTotalVo> productTotal(Page page, HardOrderDto dto, DataScope dataScope);
/**
* 菜品出售记录
* 菜品出售统计
*/
Page<HardCarVo> proudctQuery(Page page, HardCarDto dto);
/**
* 菜品出售商户统计
*/
Page<HardCarVo> proudctMchQuery(Page page, HardCarDto dto);
/**
* 食堂菜品购买部门统计
*/
@@ -188,7 +188,7 @@ public class HardCanteenTotalServiceImpl implements HardCanteenTotalService {
}
/**
* 菜品出售记录
* 菜品出售统计
*/
@Override
public Page<HardCarVo> proudctQuery(Page page, HardCarDto dto) {
@@ -196,6 +196,29 @@ public class HardCanteenTotalServiceImpl implements HardCanteenTotalService {
return hardCarMapper.proudctQuery(page, dto);
}
/**
* 菜品出售商户统计
*/
@Override
public Page<HardCarVo> proudctMchQuery(Page page, HardCarDto dto) {
dto.setOrderStatusCodes(HardOrderStatusEnum.getPaySuccessCodes());
Page<HardCarVo> pageList = hardCarMapper.proudctMchQuery(page, dto);
List<HardCarVo> records = pageList.getRecords();
// 查询商户
if (ObjectUtil.isNotEmpty(records)) {
List<Long> mchIdList = records.stream().map(HardCarVo::getMerchantId).distinct().filter(ObjectUtil::isNotEmpty).toList();
if (ObjectUtil.isNotEmpty(mchIdList)) {
List<MchManageVo> mchList = remoteMchService.getByIds(mchIdList).getData();
if (ObjectUtil.isNotEmpty(mchList)) {
for (HardCarVo i : records) {
mchList.stream().filter(m -> ObjectUtil.equals(i.getMerchantId(), m.getId())).findFirst().ifPresent(mch -> i.setMerchantName(mch.getName()));
}
}
}
}
return pageList;
}
/**
* 食堂菜品购买部门统计
*/
@@ -231,6 +231,41 @@
order by SUM(a.product_count) desc
</select>
<select id="proudctMchQuery" resultType="com.bsd.pjcloud.hard.api.vo.order.HardCarVo">
select
o.merchant_id,
a.product_id,
a.product_name,
a.product_pic,
a.product_price,
SUM(a.product_count) as count,
SUM(a.total_price) as totalPrice,
DATE_FORMAT(a.create_time, '%Y-%m-%d') as create_time
from hard_car a
inner join hard_parent_car p on a.parent_car_id = p.id and p.del_flag = '0'
inner join hard_order o on o.parent_car_id = p.id and o.del_flag = '0' and o.hour_type is not null
<where>
<include refid="whereA"/>
<if test="dto.orderStatusCodes != null and dto.orderStatusCodes.size() != 0">
and o.order_status in
<foreach collection="dto.orderStatusCodes" item="v" open="(" close=")" separator=",">
#{v}
</foreach>
</if>
<if test="dto.hourType != null and dto.hourType != '' ">
and o.hour_type = #{dto.hourType}
</if>
<if test="dto.merchantId != null">
and o.merchant_id = #{dto.merchantId}
</if>
<if test="dto.productName != null and dto.productName != '' ">
and a.product_name LIKE concat('%',#{dto.productName},'%')
</if>
</where>
group by o.merchant_id, a.product_id
order by o.merchant_id, SUM(a.product_count) desc
</select>
<select id="listByDept" resultType="com.bsd.pjcloud.hard.api.vo.order.HardCanteenProductTotalVo">
select
o.merchant_id as mchId,
@@ -416,7 +451,4 @@
order by SUM(a.product_count) desc
limit 10;
</select>
<select id="proudctTotalQuery" resultType="com.bsd.pjcloud.hard.api.vo.order.HardCarTotalVo">
</select>
</mapper>