优化
This commit is contained in:
@ -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;
|
||||
|
@ -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 ,
|
||||
mu.mobile ,
|
||||
CASE
|
||||
WHEN HOUR(mo.create_time) BETWEEN 0 AND 9 THEN '早'
|
||||
<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 ,
|
||||
mu.mobile ,
|
||||
CASE
|
||||
WHEN HOUR(mo.create_time) BETWEEN 0 AND 9 THEN '早'
|
||||
<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) 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,63 +116,114 @@
|
||||
</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,
|
||||
o.total_money,
|
||||
o.cash_amount,
|
||||
o.wx_amount,
|
||||
c.stores_name as storeName,
|
||||
c.stores_name as storeName,
|
||||
DATE_FORMAT(o.create_time, '%Y-%m-%d %H:%i:%s') as createTime,
|
||||
CASE
|
||||
WHEN HOUR(o.create_time) BETWEEN 0 AND 9 THEN '早上'
|
||||
CASE
|
||||
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,
|
||||
DATE_FORMAT(o.create_time, '%Y-%m-%d %H:%i:%s') as createTime,
|
||||
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 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,
|
||||
mu.address,
|
||||
mt.name as tagName,
|
||||
mt.name as tagName,
|
||||
mdo.total_money + mdo.subsidy_amount as marketPrice,
|
||||
mdo.total_money,
|
||||
mdo.subsidy_amount,
|
||||
@ -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,72 +266,78 @@
|
||||
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 ,
|
||||
t.serial_numbers ,
|
||||
t.price ,
|
||||
t.nick_name ,
|
||||
t.mobile ,
|
||||
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
|
||||
a.activity_name,
|
||||
m.name,
|
||||
t.serial_numbers,
|
||||
t.price,
|
||||
t.nick_name,
|
||||
t.mobile,
|
||||
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_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
|
||||
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,
|
||||
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
|
||||
<select id="exportOverspending"
|
||||
resultType="cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.OverspendingVO">
|
||||
|
||||
SELECT u.nickname,
|
||||
u.mobile,
|
||||
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>
|
Reference in New Issue
Block a user