big-screen/njzscloud-svr/src/main/resources/mapper/ShouJuStatisticsMapper.xml

200 lines
11 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njzscloud.supervisory.statistics.mapper.ShouJuStatisticsMapper">
<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 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)
AND a.type != 4
AND b.name NOT LIKE '%青石%'
AND b.name NOT LIKE '%矿石%'
ORDER BY a.create_time DESC
LIMIT 5) t1
UNION ALL
SELECT car_number, weight, order_status, station_id
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.type != 4
AND b.name NOT LIKE '%青石%'
AND b.name NOT LIKE '%矿石%'
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>
<select id="getUserSummary" resultType="com.njzscloud.supervisory.statistics.pojo.UserSummary">
SELECT MAX(IF(group_id = 1, c, 0)) san_hu,
MAX(IF(group_id = 2, c, 0)) qing_yun,
MAX(IF(group_id = 7, c, 0)) wu_ye
FROM (SELECT group_id, FLOOR(COUNT(*) / 2) c
FROM ba_user
WHERE group_id IN (1, 2, 7)
GROUP BY group_id) t
</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 b.name garbage_name, IFNULL(SUM(a.weight), 0) 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)
INNER JOIN ba_goods_category c ON c.id = b.category_id
WHERE b.name NOT LIKE '%青石%'
AND b.name NOT LIKE '%拆除垃圾(派车清运零星客户专用)%'
AND b.name NOT LIKE '%拆除垃圾(活动优惠)%'
AND b.name NOT LIKE '%矿石%'
AND a.type != 4
GROUP BY b.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 b.name garbage_name, IFNULL(SUM(a.weight), 0) weight
FROM ba_order a
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 '%矿石%'
AND b.name NOT LIKE '%一期项目%'
AND a.type != 4
GROUP BY b.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, IFNULL(SUM(a.weight), 0) weight
FROM ba_order a
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 a.out_time >= UNIX_TIMESTAMP(DATE_FORMAT(CURDATE(), '%Y-%m-01 00:00:00'))
AND a.type != 4
AND b.name NOT LIKE '%青石%'
AND b.name NOT LIKE '%矿石%'
AND a.out_time <![CDATA[ < ]]> UNIX_TIMESTAMP(DATE_ADD(DATE_FORMAT(CURDATE(), '%Y-%m-01'), INTERVAL 1 MONTH))
GROUP BY a.goods_name) t
ORDER BY weight DESC
LIMIT 6
</select>
<select id="getOrderSummary" resultType="com.njzscloud.supervisory.statistics.pojo.OrderSummary">
SELECT *
FROM (SELECT t1.id user_id, finish, c quantity, t2.group_id, t2.company,'清运公司' group_name
FROM (SELECT b.id,
IF(a.status = 1, 1, 0) AS finish,
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)
AND a.type != 4
AND c.name NOT LIKE '%青石%'
AND c.name NOT LIKE '%矿石%'
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
LIMIT 47)tt1
UNION ALL
SELECT *
FROM (SELECT t1.id user_id, finish, c quantity, t2.group_id, t2.company,'物业' group_name
FROM (SELECT b.id,
IF(a.status = 1, 1, 0) AS finish,
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)
AND a.type != 4
AND c.name NOT LIKE '%青石%'
AND c.name NOT LIKE '%矿石%'
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 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}
AND a.type != 4
AND b.name NOT LIKE '%青石%'
AND b.name NOT LIKE '%矿石%'
ORDER BY a.create_time DESC
LIMIT 10
</select>
<select id="disposeWeight" resultType="java.lang.Double">
SELECT IFNULL(SUM(a.weight), 0) 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 a.out_time >= #{startTime}
AND a.out_time <![CDATA[ <= ]]> #{endTime}
AND b.name NOT LIKE '%青石%'
AND b.name NOT LIKE '%矿石%'
AND a.type != 4
</select>
<select id="getTodayOrderSummary" resultType="com.njzscloud.supervisory.statistics.pojo.TodayOrderSummary">
SELECT MAX(IF(order_status = '已完成', order_count, 0)) completed,
MAX(IF(order_status = '已取消', order_count, 0)) cancelled,
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)) + 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(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.type != 4
AND b.name NOT LIKE '%青石%'
AND b.name NOT LIKE '%矿石%'
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 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}
AND a.type != 4
AND b.name NOT LIKE '%青石%'
AND b.name NOT LIKE '%矿石%'
</select>
<select id="getGoodsNames" resultType="java.lang.String">
SELECT name
FROM ba_goods
<if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
${ew.customSqlSegment}
</if>
LIMIT #{count}
</select>
<select id="getChuzhi" resultType="java.util.Map">
SELECT b.id, a.weight
FROM ba_order a
INNER JOIN ba_goods b ON b.id = a.goods_id
WHERE a.status = '1'
AND YEAR (a.create_time) = YEAR (CURDATE())
</select>
</mapper>