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("手机") @ExcelProperty("手机")
private String mobile; private String mobile;
@ExcelProperty("食堂(元)")
@NumberFormat("#0.00")
private BigDecimal canteenAmount;
@ExcelProperty("超市金额(元)")
@NumberFormat("#0.00")
private BigDecimal marketAmount;
@ExcelProperty("消费金额(元)") @ExcelProperty("消费金额(元)")
@NumberFormat("#0.00") @NumberFormat("#0.00")
private BigDecimal totalMoney; private BigDecimal totalMoney;

View File

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