feat(wms): 重构发货报表统计功能

- 修改发货报表返回结构,支持汇总和按类型统计
- 新增WmsDeliveryReportResultVo用于封装报表结果
- 新增WmsDeliveryReportSummaryVo用于汇总统计
- 新增WmsDeliveryReportByTypeVo用于按类型统计
- 调整Mapper层SQL查询逻辑,分离汇总与明细查询
- 更新Controller层接口返回类型
- 优化Service层实现,组装新的报表数据结构
This commit is contained in:
2025-11-27 11:05:01 +08:00
parent e7d050326f
commit f7a441906f
8 changed files with 181 additions and 12 deletions

View File

@@ -56,7 +56,7 @@
ORDER BY dp.create_time DESC
</select>
<select id="selectDeliveryReport" resultType="com.klp.domain.vo.WmsDeliveryReportVo">
<select id="selectDeliveryReportByType" resultType="com.klp.domain.vo.WmsDeliveryReportByTypeVo">
SELECT
dwd.product_name as productName,
COUNT(DISTINCT dw.waybill_id) as waybillCount,
@@ -89,7 +89,38 @@
GROUP BY dwd.product_name
ORDER BY totalWeight DESC
</select>
<select id="selectDeliveryReportSummary" resultType="com.klp.domain.vo.WmsDeliveryReportSummaryVo">
SELECT
COUNT(DISTINCT dw.waybill_id) as waybillCount,
SUM(dwd.quantity) as coilCount,
SUM(dwd.weight) as totalWeight,
CASE
WHEN #{startTime} IS NOT NULL AND #{endTime} IS NOT NULL THEN
ROUND(COUNT(DISTINCT dw.waybill_id) / (DATEDIFF(#{endTime}, #{startTime}) + 1), 2)
ELSE 0
END as dailyWaybillCount,
CASE
WHEN #{startTime} IS NOT NULL AND #{endTime} IS NOT NULL THEN
ROUND(SUM(dwd.quantity) / (DATEDIFF(#{endTime}, #{startTime}) + 1), 2)
ELSE 0
END as dailyCoilCount,
CASE
WHEN #{startTime} IS NOT NULL AND #{endTime} IS NOT NULL THEN
ROUND(SUM(dwd.weight) / (DATEDIFF(#{endTime}, #{startTime}) + 1), 2)
ELSE 0
END as dailyWeight,
#{startTime} as startTime,
#{endTime} as endTime
FROM wms_delivery_waybill_detail dwd
LEFT JOIN wms_delivery_waybill dw ON dwd.waybill_id = dw.waybill_id AND dw.del_flag = 0
WHERE dwd.del_flag = 0
<if test="startTime != null">
AND dw.create_time >= #{startTime}
</if>
<if test="endTime != null">
AND dw.create_time &lt;= #{endTime}
</if>
</select>
</mapper>