大屏代码

master
lzq 2025-08-27 17:43:28 +08:00
parent 25d7b61330
commit 3344a271f4
2 changed files with 59 additions and 71 deletions

View File

@ -23,7 +23,8 @@ import java.util.stream.Collectors;
public class StatisticsService {
private final StatisticsMapper statisticsMapper;
private final String[] weeks = {"周日", "周一", "周二", "周三", "周四", "周五", "周六"};
private final String[] weeks = {"周一", "周二", "周三", "周四", "周五", "周六", "周日"};
private final String[] weeks_ = {"周日", "周一", "周二", "周三", "周四", "周五", "周六"};
private final String[] months = {"1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"};
public Map<String, Object> obtainData() throws Exception {
@ -167,19 +168,22 @@ public class StatisticsService {
Map<String, List<OrderAmountSummary>> week_temp_1 = GroupUtil.k_a(week_orderAmountSummary.stream().filter(it -> it.getCd() == 1), it -> {
Date outTime = it.getOutTime();
Week week = DateUtil.dayOfWeekEnum(outTime);
return weeks[week.getValue() - 1];
return weeks_[week.getValue() - 1];
});
Map<String, List<OrderAmountSummary>> week_temp_2 = GroupUtil.k_a(week_orderAmountSummary.stream().filter(it -> it.getCd() == 2), it -> {
Date outTime = it.getOutTime();
Week week = DateUtil.dayOfWeekEnum(outTime);
return weeks[week.getValue() - 1];
return weeks_[week.getValue() - 1];
});
List<Double> weekAmountIn = new ArrayList<>(weeks.length);
for (String week : weeks) {
List<OrderAmountSummary> orderAmountSummary = week_temp_1.getOrDefault(week, Collections.emptyList());
Double amount = orderAmountSummary.stream().map(OrderAmountSummary::getAmount).reduce(Integer::sum).orElse(0) / 100.0;
weekAmountIn.add(amount);
}
List<Double> weekAmountOut = new ArrayList<>(weeks.length);
for (String week : weeks) {
List<OrderAmountSummary> orderAmountSummary = week_temp_2.getOrDefault(week, Collections.emptyList());

View File

@ -6,25 +6,27 @@
<select id="getCarTrends" resultType="com.njzscloud.supervisory.statistics.pojo.CarTrends">
SELECT a.car_number, a.weight, a.order_status, a.station_id, b.name station_name
FROM (SELECT car_number, weight, order_status, station_id
FROM (SELECT car_number,
weight,
IF(status = 1, '已完成', IF(status = 4, '已取消', IF(car_status = 0, '已预约', IF(car_status = 1 AND admin_status = 0, '待看料', '待出场')))) order_status,
station_id
FROM ba_order
WHERE station_id = 1
AND status IN (0, 1, 2, 3)
ORDER BY create_time DESC
FROM (SELECT a.car_number,
a.weight,
IF(a.status = 1, '已完成', IF(a.status = 4, '已取消', IF(a.car_status = 0, '已预约', IF(a.car_status = 1 AND a.admin_status = 0, '待看料', '待出场')))) order_status,
a.station_id
FROM ba_order a
INNER JOIN ba_goods b ON b.id = a.goods_id AND b.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2)
WHERE a.station_id = 1
AND a.status IN (0, 1, 2, 3)
ORDER BY a.create_time DESC
LIMIT 5) t1
UNION ALL
SELECT car_number, weight, order_status, station_id
FROM (SELECT car_number,
weight,
IF(status = 1, '已完成', IF(status = 4, '已取消', IF(car_status = 0, '已预约', IF(car_status = 1 AND admin_status = 0, '待看料', '待出场')))) order_status,
station_id
FROM ba_order
WHERE station_id = 2
AND status IN (0, 1, 2, 3)
ORDER BY create_time DESC
FROM (SELECT a.car_number,
a.weight,
IF(a.status = 1, '已完成', IF(a.status = 4, '已取消', IF(a.car_status = 0, '已预约', IF(a.car_status = 1 AND a.admin_status = 0, '待看料', '待出场')))) order_status,
a.station_id
FROM ba_order a
INNER JOIN ba_goods b ON b.id = a.goods_id AND b.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2)
WHERE a.station_id = 2
AND a.status IN (0, 1, 2, 3)
ORDER BY a.create_time DESC
LIMIT 5) t2) a
INNER JOIN ba_station b ON b.id = a.station_id
</select>
@ -43,7 +45,7 @@
FROM (SELECT garbage_name, weight
FROM (SELECT b.name garbage_name, SUM(a.weight) weight
FROM ba_order a
INNER JOIN ba_goods b ON b.id = a.goods_id AND b.depot_type = 1
INNER JOIN ba_goods b ON b.id = a.goods_id AND b.depot_type = 1 AND b.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2)
INNER JOIN ba_goods_category c ON c.id = b.category_id
WHERE b.name NOT LIKE '%青石%'
AND b.name NOT LIKE '%拆除垃圾(派车清运零星客户专用)%'
@ -57,7 +59,7 @@
FROM (SELECT garbage_name, weight
FROM (SELECT b.name garbage_name, SUM(a.weight) weight
FROM ba_order a
INNER JOIN ba_goods b ON b.id = a.goods_id AND b.depot_type = 2
INNER JOIN ba_goods b ON b.id = a.goods_id AND b.depot_type = 2 AND b.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2)
INNER JOIN ba_goods_category c ON c.id = b.category_id
WHERE b.name NOT LIKE '%青石%'
AND b.name NOT LIKE '%矿石%'
@ -66,36 +68,13 @@
ORDER BY weight DESC
LIMIT 3) t2
</select>
<!-- <select id="getGarbageDisposeSummary"
resultType="com.njzscloud.supervisory.statistics.pojo.GarbageDisposeSummary">
SELECT garbage_name, weight, 1 depot_type, '入库' depot_name
FROM (SELECT garbage_name, weight
FROM (SELECT c.name garbage_name, SUM(a.weight) weight
FROM ba_order a
INNER JOIN ba_goods b ON b.id = a.goods_id AND b.depot_type = 1
INNER JOIN ba_goods_category c ON c.id = b.category_id
WHERE c.name NOT LIKE '%青石%'
GROUP BY c.name) t
ORDER BY weight DESC
LIMIT 3) t1
UNION ALL
SELECT garbage_name, weight, 2 depot_type, '出库' depot_name
FROM (SELECT garbage_name, weight
FROM (SELECT c.name garbage_name, SUM(a.weight) weight
FROM ba_order a
INNER JOIN ba_goods b ON b.id = a.goods_id AND b.depot_type = 2
INNER JOIN ba_goods_category c ON c.id = b.category_id
WHERE c.name NOT LIKE '%青石%'
GROUP BY c.name) t
ORDER BY weight DESC
LIMIT 3) t2
</select> -->
<select id="getCurrentMonthGarbageDisposeSummary"
resultType="com.njzscloud.supervisory.statistics.pojo.GarbageDisposeSummary">
SELECT goods_name garbage_name, weight
FROM (SELECT a.goods_name, SUM(a.weight) weight
FROM ba_order a
INNER JOIN ba_goods b ON b.id = a.goods_id AND b.depot_type = 2
INNER JOIN ba_goods b ON b.id = a.goods_id AND b.depot_type = 2 AND b.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2)
WHERE out_time >= UNIX_TIMESTAMP(DATE_FORMAT(CURDATE(), '%Y-%m-01 00:00:00'))
AND out_time <![CDATA[ < ]]> UNIX_TIMESTAMP(DATE_ADD(DATE_FORMAT(CURDATE(), '%Y-%m-01'), INTERVAL 1 MONTH))
GROUP BY a.goods_name) t
@ -110,6 +89,7 @@
COUNT(*) AS c
FROM ba_order a
INNER JOIN ba_user b ON b.id = a.vip_user AND b.group_id = 2
INNER JOIN ba_goods c ON c.id = a.goods_id AND c.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2)
WHERE a.status IN (0, 1, 2, 3)
GROUP BY b.id, IF(a.status = 1, 1, 0)) t1
INNER JOIN ba_user t2 ON t2.id = t1.id
@ -123,29 +103,31 @@
COUNT(*) AS c
FROM ba_order a
INNER JOIN ba_user b ON b.id IN (230, 343, 435)
INNER JOIN ba_goods c ON c.id = a.goods_id AND c.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2)
WHERE a.status IN (0, 1, 2, 3)
GROUP BY b.id, IF(a.status = 1, 1, 0)) t1
INNER JOIN ba_user t2 ON t2.id = t1.id
ORDER BY c DESC)tt2
</select>
<select id="obtainOrder" resultType="com.njzscloud.supervisory.statistics.pojo.OrderInfo">
SELECT car_number,
goods_name,
IF(status = 1, '已完成', IF(status = 4, '已取消', IF(car_status = 0, '已预约', IF(car_status = 1 AND admin_status = 0, '待看料', '待出场')))) order_status,
weight,
IF(in_time = 0, NULL, FROM_UNIXTIME(in_time)) in_time,
IF(out_time = 0, NULL, FROM_UNIXTIME(out_time)) out_time
FROM ba_order
WHERE vip_user = #{userId}
ORDER BY create_time DESC
SELECT a.car_number,
a.goods_name,
IF(a.status = 1, '已完成', IF(a.status = 4, '已取消', IF(a.car_status = 0, '已预约', IF(a.car_status = 1 AND a.admin_status = 0, '待看料', '待出场')))) order_status,
a.weight,
IF(a.in_time = 0, NULL, FROM_UNIXTIME(a.in_time)) in_time,
IF(a.out_time = 0, NULL, FROM_UNIXTIME(a.out_time)) out_time
FROM ba_order a
INNER JOIN ba_goods b ON b.id = a.goods_id AND b.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2)
WHERE a.vip_user = #{userId}
ORDER BY a.create_time DESC
LIMIT 10
</select>
<select id="disposeWeight" resultType="java.lang.Double">
SELECT SUM(a.weight) weight
FROM ba_order a
INNER JOIN ba_goods b ON b.id = a.goods_id AND b.depot_type = 1 AND b.id NOT IN (287,286,279,278,293,273,271,270,262,2)
WHERE out_time >= #{startTime}
AND out_time <![CDATA[ <= ]]> #{endTime}
WHERE a.out_time >= #{startTime}
AND a.out_time <![CDATA[ <= ]]> #{endTime}
</select>
<select id="getTodayOrderSummary" resultType="com.njzscloud.supervisory.statistics.pojo.TodayOrderSummary">
SELECT MAX(IF(order_status = '已完成', order_count, 0)) completed,
@ -153,18 +135,20 @@
MAX(IF(order_status = '已预约', order_count, 0)) waiting,
MAX(IF(order_status = '已完成', order_count, 0)) + MAX(IF(order_status = '已取消', order_count, 0)) + MAX(IF(order_status = '已预约', order_count, 0)) total
FROM (SELECT order_status, COUNT(*) order_count
FROM (SELECT IF(status = 1, '已完成', IF(status = 4, '已取消', IF(car_status = 0, '已预约', IF(car_status = 1 AND admin_status = 0, '待看料', '待出场'))))order_status
FROM ba_order
WHERE create_time >= UNIX_TIMESTAMP(CURDATE())
AND create_time <![CDATA[ < ]]> UNIX_TIMESTAMP(DATE_ADD(CURDATE(), INTERVAL 24 HOUR ))) t
FROM (SELECT IF(a.status = 1, '已完成', IF(a.status = 4, '已取消', IF(a.car_status = 0, '已预约', IF(a.car_status = 1 AND a.admin_status = 0, '待看料', '待出场')))) order_status
FROM ba_order a
INNER JOIN ba_goods b ON b.id = a.goods_id AND b.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2)
WHERE a.create_time >= UNIX_TIMESTAMP(CURDATE())
AND a.create_time <![CDATA[ < ]]> UNIX_TIMESTAMP(DATE_ADD(CURDATE(), INTERVAL 24 HOUR))) t
GROUP BY order_status) tt
</select>
<select id="getOrderAmountSummary"
resultType="com.njzscloud.supervisory.statistics.pojo.OrderAmountSummary">
SELECT price amount, FROM_UNIXTIME(out_time) out_time, who_pay cd
FROM ba_order
WHERE status = 1
AND out_time >= #{startTime}
AND out_time <![CDATA[ <= ]]> #{endTime}
SELECT a.price amount, FROM_UNIXTIME(a.out_time) out_time, a.who_pay cd
FROM ba_order a
INNER JOIN ba_goods b ON b.id = a.goods_id AND b.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2)
WHERE a.status = 1
AND a.out_time >= #{startTime}
AND a.out_time <![CDATA[ <= ]]> #{endTime}
</select>
</mapper>