This commit is contained in:
zt
2025-08-18 14:11:59 +08:00
parent 08ea3906a4
commit 274ed9320d
2 changed files with 215 additions and 91 deletions

View File

@ -14,6 +14,14 @@ public class OverspendingVO {
@ExcelProperty("手机")
private String mobile;
@ExcelProperty("食堂(元)")
@NumberFormat("#0.00")
private BigDecimal canteenAmount;
@ExcelProperty("超市金额(元)")
@NumberFormat("#0.00")
private BigDecimal marketAmount;
@ExcelProperty("消费金额(元)")
@NumberFormat("#0.00")
private BigDecimal totalMoney;

View File

@ -8,16 +8,17 @@
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
<select id="selectOrder" resultType="cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.OrderExcelVO">
select
mu.nickname ,
<select id="selectOrder"
resultType="cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.OrderExcelVO">
select mu.nickname,
mu.mobile,
CASE
WHEN HOUR (mo.create_time) BETWEEN 0 AND 9 THEN '早'
WHEN HOUR(mo.create_time) BETWEEN 10 AND 15 THEN '中'
WHEN HOUR(mo.create_time) BETWEEN 16 AND 23 THEN '晚'
ELSE '未知'
END AS timeSlot,
END
AS timeSlot,
mo.total_money ,
md.dishes_name ,
md.unit_price ,
@ -27,20 +28,35 @@
from member_order_detail md
left join member_dish_order mo on md.order_id = mo.id
left join member_user mu on mu.id = mo.user_id
where DATE_FORMAT(md.create_time, '%Y%m%d') between #{startTime} and #{endTime} and mo.store_id = #{carteenId}
order by mo.user_id,order_id
where DATE_FORMAT(md.create_time, '%Y%m%d') between
#{startTime}
and
#{endTime}
and
mo
.
store_id
=
#{carteenId}
order
by
mo
.
user_id,
order_id
</select>
<select id="selectStoreOrder" resultType="cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.StoreOrderExcelVO">
select
mu.nickname ,
<select id="selectStoreOrder"
resultType="cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.StoreOrderExcelVO">
select mu.nickname,
mu.mobile,
CASE
WHEN HOUR (mo.create_time) BETWEEN 0 AND 9 THEN '早'
WHEN HOUR(mo.create_time) BETWEEN 10 AND 15 THEN '中'
WHEN HOUR(mo.create_time) BETWEEN 16 AND 23 THEN '晚'
ELSE '未知'
END AS timeSlot,
END
AS timeSlot,
mo.total_price ,
md.goods_name ,
md.custom_price ,
@ -50,20 +66,49 @@
from member_store_order_detail md
left join member_store_order mo on md.order_id = mo.order_id
left join member_user mu on mu.id = mo.user_id
where DATE_FORMAT(md.create_time, '%Y%m%d') between #{startTime} and #{endTime} and mo.carteen_id = #{carteenId}
and md.deleted = false and mo.status != 3
order by mo.user_id,mo.order_id
where DATE_FORMAT(md.create_time, '%Y%m%d') between
#{startTime}
and
#{endTime}
and
mo
.
carteen_id
=
#{carteenId}
and
md
.
deleted
=
false
and
mo
.
status
!=
3
order
by
mo
.
user_id,
mo
.
order_id
</select>
<select id="selectStoreSaleGoods" resultType="cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.StoreSaleGoodsVO">
<select id="selectStoreSaleGoods"
resultType="cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.StoreSaleGoodsVO">
select md.goods_name,
md.custom_price,
sum(md.number) as sumNum,
sum(md.number * md.custom_price) as totalPrice
from member_store_order_detail md
left join member_store_order mo on md.order_id = mo.order_id
where DATE_FORMAT(md.create_time, '%Y%m%d') between #{startTime} and #{endTime} and mo.carteen_id = #{carteenId}
where DATE_FORMAT(md.create_time, '%Y%m%d') between #{startTime} and #{endTime}
and mo.carteen_id = #{carteenId}
and md.deleted = false
and mo.deleted = false
and mo.status != 3 and mo.status != 4
@ -71,7 +116,8 @@
</select>
<select id="exportGroupOrderExcel" resultType="cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.GroupOrderVO">
<select id="exportGroupOrderExcel"
resultType="cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.GroupOrderVO">
select u.nickname,
u.mobile,
o.store_name,
@ -84,21 +130,37 @@
WHEN HOUR (o.create_time) BETWEEN 0 AND 9 THEN '早上'
WHEN HOUR(o.create_time) BETWEEN 10 AND 15 THEN '中午'
WHEN HOUR(o.create_time) BETWEEN 16 AND 23 THEN '晚上'
ELSE '未知' END AS timeSlot,
ELSE '未知'
END AS timeSlot,
CASE
WHEN o.order_status = 0 THEN '未完成'
WHEN o.order_status = 1 THEN '已完成'
WHEN o.order_status = 2 THEN '未完全支付'
ELSE '未知' END AS orderStatus
ELSE '未知'
END AS orderStatus
from member_dish_order o
left join member_user u on o.user_id = u.id
left join t_carteen c on o.store_id = c.id
where o.deleted = false
and o.user_id in (select member_id from member_group_member where group_id = #{groupId})
and DATE_FORMAT(o.create_time, '%Y-%m-%d') BETWEEN #{startTime} AND #{endTime}
and o.user_id in (select member_id from member_group_member where group_id =
#{groupId}
)
and
DATE_FORMAT
(
o
.
create_time,
'%Y-%m-%d'
)
BETWEEN
#{startTime}
AND
#{endTime}
</select>
<select id="exportGroupStoreOrderExcel" resultType="cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.GroupStoreOrderVO">
<select id="exportGroupStoreOrderExcel"
resultType="cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.GroupStoreOrderVO">
select u.nickname,
u.mobile,
o.total_price,
@ -107,22 +169,56 @@
WHEN HOUR (o.create_time) BETWEEN 0 AND 9 THEN '早上'
WHEN HOUR(o.create_time) BETWEEN 10 AND 15 THEN '中午'
WHEN HOUR(o.create_time) BETWEEN 16 AND 23 THEN '晚上'
ELSE '未知' END AS timeSlot,
ELSE '未知'
END AS timeSlot,
CASE
WHEN o.status = 1 THEN '已支付'
WHEN o.status = 2 THEN '已完成'
WHEN o.status = 3 THEN '已取消'
when o.status = 4 THEN '已退款'
ELSE '未知' END AS orderStatus
ELSE '未知'
END AS orderStatus
from member_store_order o
left join member_user u on o.user_id = u.id
where o.carteen_id = #{carteenId}
and o.deleted = false
and o.user_id in (select member_id from member_group_member where group_id = #{groupId})
and DATE_FORMAT(o.create_time, '%Y-%m-%d') BETWEEN #{startTime} AND #{endTime}
where o.carteen_id =
#{carteenId}
and
o
.
deleted
=
false
and
o
.
user_id
in
(
select
member_id
from
member_group_member
where
group_id
=
#{groupId}
)
and
DATE_FORMAT
(
o
.
create_time,
'%Y-%m-%d'
)
BETWEEN
#{startTime}
AND
#{endTime}
</select>
<select id="exportSubsidyExcel" resultType="cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.SubsidyExcelVO">
<select id="exportSubsidyExcel"
resultType="cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.SubsidyExcelVO">
select mu.name,
mu.mobile,
mu.identity_card,
@ -136,17 +232,31 @@
WHEN HOUR(mdo.create_time) BETWEEN 10 AND 15 THEN '中午'
WHEN HOUR(mdo.create_time) BETWEEN 16 AND 23 THEN '晚上'
ELSE '未知'
END AS timeSlot,
END
AS timeSlot,
DATE_FORMAT(mdo.create_time, '%Y-%m-%d') as createTime
from member_dish_order mdo
left join member_user mu on mdo.user_id = mu.id
left join member_tag mt on mu.tag_ids = mt.id
where subsidy_amount > 0 and mdo.deleted = false
and mdo.store_id = #{carteenId}
and DATE_FORMAT(mdo.create_time, '%Y-%m-%d %H:%i:%s') BETWEEN #{startTime} AND #{endTime}
and mdo.store_id =
#{carteenId}
and
DATE_FORMAT
(
mdo
.
create_time,
'%Y-%m-%d %H:%i:%s'
)
BETWEEN
#{startTime}
AND
#{endTime}
</select>
<select id="exportCashAmountExcel" resultType="cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.CashAmountExcelVO">
<select id="exportCashAmountExcel"
resultType="cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.CashAmountExcelVO">
select mu.nickname,
mu.name,
mu.mobile,
@ -156,13 +266,15 @@
DATE_FORMAT(mc.create_time, '%Y-%m-%d') as createTime
from member_card mc
left join member_user mu on mc.user_id = mu.id
where mc.type = '5' and mc.deleted = false
where mc.type = '5'
and mc.deleted = false
and mc.carteen_id = #{carteenId}
and DATE_FORMAT(mc.create_time, '%Y-%m-%d') BETWEEN #{startTime} AND #{endTime}
</select>
<select id="exportActivityMx" resultType="cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.ActivityMxVO">
<select id="exportActivityMx"
resultType="cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.ActivityMxVO">
select t.id,
a.activity_name,
m.name,
@ -173,55 +285,59 @@
t.reserve_time,
t.create_time
from (select * from member_activity_pay where deleted = false) t
left join member_activity_table_dish d on t.activity_id = d.activity_id and SUBSTRING_INDEX(t.serial_numbers, ',', 1) = d.serial_number
left join member_activity_table_dish d on t.activity_id = d.activity_id and
SUBSTRING_INDEX(t.serial_numbers, ',', 1) = d.serial_number
left join member_activity_merchant m on d.merchant_id = m.id
left join member_activity a on a.id = t.activity_id
and d.deleted = false and t.deleted = false
</select>
<select id="exportActivityReserve" resultType="cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.ActivityReserveVO">
SELECT
m.name,
SUM(CASE WHEN t.reserve_time = '2025-06-13' THEN 1 ELSE 0 END) AS 'day1',
SUM(CASE WHEN t.reserve_time = '2025-06-14' THEN 1 ELSE 0 END) AS 'day2',
SUM(CASE WHEN t.reserve_time = '2025-06-15' THEN 1 ELSE 0 END) AS 'day3',
SUM(CASE WHEN t.reserve_time = '2025-06-16' THEN 1 ELSE 0 END) AS 'day4',
SUM(CASE WHEN t.reserve_time = '2025-06-17' THEN 1 ELSE 0 END) AS 'day5',
SUM(CASE WHEN t.reserve_time = '2025-06-18' THEN 1 ELSE 0 END) AS 'day6',
SUM(CASE WHEN t.reserve_time = '2025-06-19' THEN 1 ELSE 0 END) AS 'day7',
SUM(CASE WHEN t.reserve_time = '2025-06-20' THEN 1 ELSE 0 END) AS 'day8',
SUM(CASE WHEN t.reserve_time = '2025-06-21' THEN 1 ELSE 0 END) AS 'day9',
SUM(CASE WHEN t.reserve_time = '2025-06-22' THEN 1 ELSE 0 END) AS 'day10'
<select id="exportActivityReserve"
resultType="cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.ActivityReserveVO">
SELECT m.name,
SUM(CASE WHEN t.reserve_time = '2025-06-13' THEN 1 ELSE 0 END) AS 'day1', SUM(CASE WHEN t.reserve_time = '2025-06-14' THEN 1 ELSE 0 END) AS 'day2', SUM(CASE WHEN t.reserve_time = '2025-06-15' THEN 1 ELSE 0 END) AS 'day3', SUM(CASE WHEN t.reserve_time = '2025-06-16' THEN 1 ELSE 0 END) AS 'day4', SUM(CASE WHEN t.reserve_time = '2025-06-17' THEN 1 ELSE 0 END) AS 'day5', SUM(CASE WHEN t.reserve_time = '2025-06-18' THEN 1 ELSE 0 END) AS 'day6', SUM(CASE WHEN t.reserve_time = '2025-06-19' THEN 1 ELSE 0 END) AS 'day7', SUM(CASE WHEN t.reserve_time = '2025-06-20' THEN 1 ELSE 0 END) AS 'day8', SUM(CASE WHEN t.reserve_time = '2025-06-21' THEN 1 ELSE 0 END) AS 'day9', SUM(CASE WHEN t.reserve_time = '2025-06-22' THEN 1 ELSE 0 END) AS 'day10'
FROM member_activity_merchant m
LEFT JOIN member_activity_table_dish d ON d.merchant_id = m.id AND d.deleted = 0
LEFT JOIN (select * from member_activity_pay_table where reserve_time is not null and deleted = 0) t
ON t.activity_id = d.activity_id
AND t.serial_numbers = d.serial_number
AND t.reserve_time BETWEEN '2025-06-13' AND '2025-06-22'
WHERE
m.deleted = 0
WHERE m.deleted = 0
GROUP BY m.name
ORDER BY m.name
</select>
<select id="exportOverspending" resultType="cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.OverspendingVO">
SELECT
u.nickname,
<select id="exportOverspending"
resultType="cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.OverspendingVO">
SELECT u.nickname,
u.mobile,
DATE_FORMAT(o.create_time, '%Y-%m-%d') as createTime ,
SUM(total_money) AS totalMoney,
SUM(total_money)-37 AS overMoney
FROM
member_dish_order o left join member_user u on o.user_id = u.id and u.deleted = 0
WHERE
o.deleted = 0
and DATE_FORMAT(o.create_time, '%Y-%m-%d') between #{startTime} and #{endTime}
and o.user_id in (select member_id from member_group_member m where m.group_id = #{groupId})
GROUP BY
o.user_id, DATE_FORMAT(o.create_time, '%Y-%m-%d')
HAVING
SUM(total_money) > 37
ORDER BY
createTime , totalMoney DESC
SUM(CASE WHEN source = 'canteen' THEN amount ELSE 0 END) AS canteenAmount,
SUM(CASE WHEN source = 'market' THEN amount ELSE 0 END) AS marketAmount,
consume_date AS createTime,
SUM(amount) AS totalMoney,
SUM(amount) - 37 AS overMoney
FROM (
SELECT user_id, DATE (create_time) AS consume_date,
total_money AS amount, 'canteen' AS source
FROM member_dish_order
WHERE deleted = 0
AND create_time IS NOT NULL
AND order_status = '1'
AND user_id IS NOT NULL
UNION ALL
SELECT user_id, DATE (create_time) AS consume_date, total_price AS amount, 'market' AS source
FROM member_store_order
WHERE deleted = 0
AND create_time IS NOT NULL
AND status = '2'
AND user_id IS NOT NULL
) AS ao left join member_user u
on u.id = ao.user_id
where ao.user_id in (select member_id from member_group_member m where m.group_id =#{groupId})
and ao.consume_date between #{startTime} and #{endTime}
GROUP BY ao.user_id, ao.consume_date
HAVING SUM (ao.amount) > 37
ORDER BY createTime;
</select>
</mapper>