njzscloud/njzscloud-svr/src/main/resources/mapper/bs/SupervisionStatisticsMapper...

473 lines
23 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.bs.mapper.SupervisionStatisticsMapper">
<select id="getDispatchSummary" resultType="com.njzscloud.supervisory.bs.pojo.result.DispatchSummary">
SELECT MAX(IF(order_status = 'DaiPaiDan', c, 0)) dai_pai_che,
MAX(IF(order_status = 'DaiJieDan', c, 0)) wei_jie_dan,
MAX(IF(order_status = 'QingYunZhong', c, 0)) yun_shu_zhong,
MAX(IF(order_status = 'YiWanCheng', c, 0)) yi_wan_cheng
FROM (SELECT order_status, COUNT(*) c
FROM order_info
WHERE order_status IN ('DaiPaiDan', 'DaiJieDan', 'QingYunZhong', 'YiWanCheng')
GROUP BY order_status) t
</select>
<select id="getYuYueSummary" resultType="com.njzscloud.supervisory.bs.pojo.result.YuYueSummary">
SELECT zuo_tian,
jin_tian,
IF(zuo_tian = 0, IF(jin_tian = 0, 0, 100),
ROUND((jin_tian - zuo_tian / zuo_tian) * 100, 2)) zeng_zhang_lv
FROM (SELECT MAX(IF(t = 1, c, 0)) zuo_tian,
MAX(IF(t = 2, c, 0)) jin_tian
FROM (SELECT COUNT(*) c, 1 t
FROM order_info a
WHERE UNIX_TIMESTAMP(a.create_time) >= UNIX_TIMESTAMP(CURDATE())
AND UNIX_TIMESTAMP(a.create_time) <![CDATA[ < ]]> UNIX_TIMESTAMP(DATE_ADD(CURDATE(), INTERVAL -24 HOUR))
UNION ALL
SELECT COUNT(*) c, 2 t
FROM order_info a
WHERE UNIX_TIMESTAMP(a.create_time) >= UNIX_TIMESTAMP(CURDATE())
AND UNIX_TIMESTAMP(a.create_time) <![CDATA[ < ]]> UNIX_TIMESTAMP(DATE_ADD(CURDATE(), INTERVAL 24 HOUR))) t) tt
</select>
<select id="getDisposeTotalWeight" resultType="java.lang.Integer">
SELECT SUM(settle_weight) total_weight
FROM order_info a
INNER JOIN order_car_in_out b ON b.id = a.car_in_out_id
WHERE order_status = 'YiWanCheng'
</select>
<select id="getCarSummary" resultType="com.njzscloud.supervisory.bs.pojo.result.CarSummary">
SELECT MAX(IF(t = 1, c, 0)) yun_shu_zhong,
MAX(IF(t = 2, c, 0)) car_count
FROM (SELECT COUNT(*) c, 1 t
FROM order_info
WHERE order_status IN ('QingYunZhong', 'YiJinChang', 'YiChuChang')
UNION ALL
SELECT COUNT(*) c, 2 t
FROM biz_truck) t
</select>
<select id="getTodayCarCount" resultType="java.lang.Integer">
SELECT COUNT(*) car_count
FROM order_info a
WHERE UNIX_TIMESTAMP(a.create_time) >= UNIX_TIMESTAMP(CURDATE())
AND UNIX_TIMESTAMP(a.create_time) <![CDATA[ < ]]> UNIX_TIMESTAMP(DATE_ADD(CURDATE(), INTERVAL 24 HOUR))
AND a.order_status = 'YiWanCheng'
</select>
<select id="getTotalCarCount" resultType="java.lang.Integer">
SELECT COUNT(*)
FROM biz_truck
WHERE audit_status = 'TongGuo'
AND deleted = 0
</select>
<select id="getRegionSummary" resultType="com.njzscloud.supervisory.bs.pojo.result.RegionSummary">
SELECT b.area,
IFNULL(SUM(c.settle_weight), 0) total_weight
FROM order_info a
INNER JOIN order_cargo_place b ON b.id = a.cargo_place_id
INNER JOIN order_car_in_out c ON c.id = a.car_in_out_id
WHERE a.order_status = 'YiWanCheng'
GROUP BY b.area
</select>
<select id="getCompanySummary" resultType="com.njzscloud.supervisory.bs.pojo.result.CompanySummary">
SELECT t1.total_weight, t2.company_name company
FROM (SELECT IFNULL(SUM(b.settle_weight), 0) total_weight, a.trans_company_id
FROM order_info a
INNER JOIN order_car_in_out b ON b.id = a.car_in_out_id
WHERE order_status = 'YiWanCheng'
GROUP BY a.trans_company_id) t1
INNER JOIN biz_company t2 ON t2.id = t1.trans_company_id
ORDER BY t1.total_weight DESC
LIMIT 5
</select>
<select id="getStationInfo" resultType="com.njzscloud.supervisory.bs.pojo.result.StationInfo">
SELECT company_name `name`,
lat latitude,
lng longitude
FROM biz_company
WHERE station = 1
</select>
<select id="getOrders" resultType="com.njzscloud.supervisory.bs.pojo.result.Order">
SELECT a.id order_id,
a.sn order_no,
d.nickname realname,
d.phone mobile,
i.category_name goods_category_name,
a.create_time,
CASE order_status
WHEN 'YiYuYue' THEN '已预约'
WHEN 'DaiPaiDan' THEN '待派单'
WHEN 'DaiJieDan' THEN '待接单'
WHEN 'YiJieDan' THEN '已接单'
WHEN 'QingYunZhong' THEN '清运中'
WHEN 'YiJinChang' THEN '已进场'
WHEN 'YiChuChang' THEN '已出场'
WHEN 'YiWanCheng' THEN '已完成'
ELSE ''
END order_status,
g.license_plate car_number,
f.nickname driver_name,
e.goods_name goods_name,
c.company_name company,
h.address,
h.lng lon,
h.lat,
IF(a.order_status = 'YiWanCheng', 1, 0) finish,
g.gps
FROM order_info a
LEFT JOIN (SELECT a.id, a.company_name, b.nickname
FROM biz_company a
INNER JOIN sys_user b ON b.id = a.user_id) c ON c.id = a.trans_company_id
LEFT JOIN sys_user d ON d.id = a.user_id
LEFT JOIN sys_user f ON f.id = a.driver_id
LEFT JOIN order_goods e ON e.id = a.goods_id
LEFT JOIN biz_truck g ON g.id = a.truck_id
INNER JOIN order_cargo_place h ON h.id = a.cargo_place_id
INNER JOIN goods_category i ON i.id = e.goods_category_id
WHERE a.order_status IN ('YiYuYue', 'DaiPaiDan', 'DaiJieDan', 'QingYunZhong', 'YiJinChang', 'YiChuChang', 'YiWanCheng')
ORDER BY a.create_time DESC
LIMIT 50
</select>
<select id="getProjects" resultType="com.njzscloud.supervisory.bs.pojo.result.Project">
SELECT g.project_name,
g.area,
g.town street,
g.address,
c.nickname realname,
c.phone mobile
FROM biz_project g
LEFT JOIN sys_user c ON c.id = g.user_id
ORDER BY g.create_time DESC
LIMIT 10
</select>
<select id="dataStatistics" resultType="java.util.Map">
SELECT MAX(IF(t = 1, c, 0)) todayTotalWeight,
MAX(IF(t = 2, c, 0)) yesterdayTotalWeight,
MAX(IF(t = 3, c, 0)) currentMonthTotalWeight,
MAX(IF(t = 4, c, 0)) lastMonthTotalWeight,
MAX(IF(t = 5, c, 0)) todayFinishCount,
MAX(IF(t = 6, c, 0)) todayTotalCount,
MAX(IF(t = 7, c, 0)) yesterdayFinishCount,
MAX(IF(t = 8, c, 0)) yesterdayTotalCount,
MAX(IF(t = 9, c, 0)) todayWarnCount,
MAX(IF(t = 10, c, 0)) todayUnwarnCount,
MAX(IF(t = 11, c, 0)) yesterdayWarnCount,
MAX(IF(t = 12, c, 0)) yesterdayUnwarnCount,
MAX(IF(t = 13, c, 0)) todayTotalCount,
MAX(IF(t = 14, c, 0)) yesterdayTotalCount,
MAX(IF(t = 15, c, 0)) currentMonthTotalCount,
MAX(IF(t = 16, c, 0)) lastMonthTotalCount
FROM (SELECT ROUND(SUM(b.settle_weight) / 1000, 2) c, 1 t
FROM order_info a
INNER JOIN order_car_in_out b ON b.id = a.car_in_out_id
WHERE a.deleted = 0
AND a.order_status = 'YiWanCheng'
AND b.out_time >= CURDATE()
AND b.out_time <![CDATA[ < ]]> DATE_ADD(CURDATE(), INTERVAL 1 DAY)
UNION ALL
SELECT ROUND(SUM(b.settle_weight) / 1000, 2) c, 2 t
FROM order_info a
INNER JOIN order_car_in_out b ON b.id = a.car_in_out_id
WHERE a.deleted = 0
AND a.order_status = 'YiWanCheng'
AND b.out_time >= DATE_SUB(CURDATE(), INTERVAL 1 DAY)
AND b.out_time <![CDATA[ < ]]> CURDATE()
UNION ALL
SELECT ROUND(SUM(b.settle_weight) / 1000, 2) c, 3 t
FROM order_info a
INNER JOIN order_car_in_out b ON b.id = a.car_in_out_id
WHERE a.deleted = 0
AND a.order_status = 'YiWanCheng'
AND b.out_time >= DATE_FORMAT(NOW(), '%Y-%m-01 00:00:00')
AND b.out_time <![CDATA[ < ]]> DATE_ADD(DATE_FORMAT(NOW(), '%Y-%m-01'), INTERVAL 1 MONTH)
UNION ALL
SELECT ROUND(SUM(b.settle_weight) / 1000, 2) c, 4 t
FROM order_info a
INNER JOIN order_car_in_out b ON b.id = a.car_in_out_id
WHERE a.deleted = 0
AND a.order_status = 'YiWanCheng'
AND b.out_time >= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y-%m-01 00:00:00')
AND b.out_time <![CDATA[ < ]]> DATE_FORMAT(NOW(), '%Y-%m-01 00:00:00')
UNION ALL
SELECT COUNT(*) c, 5 t
FROM order_info a
INNER JOIN order_car_in_out b ON b.id = a.car_in_out_id
WHERE a.deleted = 0
AND a.order_status = 'YiWanCheng'
AND b.out_time >= CURDATE()
AND b.out_time <![CDATA[ < ]]> DATE_ADD(CURDATE(), INTERVAL 1 DAY)
UNION ALL
SELECT COUNT(*) c, 6 t
FROM order_info a
INNER JOIN order_car_in_out b ON b.id = a.car_in_out_id
WHERE a.deleted = 0
AND a.order_status <![CDATA[ <> ]]> 'YiQuXiao'
AND b.out_time >= CURDATE()
AND b.out_time <![CDATA[ < ]]> DATE_ADD(CURDATE(), INTERVAL 1 DAY)
UNION ALL
SELECT COUNT(*) c, 7 t
FROM order_info a
INNER JOIN order_car_in_out b ON b.id = a.car_in_out_id
WHERE a.deleted = 0
AND a.order_status = 'YiWanCheng'
AND b.out_time >= DATE_SUB(CURDATE(), INTERVAL 1 DAY)
AND b.out_time <![CDATA[ < ]]> CURDATE()
UNION ALL
SELECT COUNT(*) c, 8 t
FROM order_info a
INNER JOIN order_car_in_out b ON b.id = a.car_in_out_id
WHERE a.deleted = 0
AND a.order_status <![CDATA[ <> ]]> 'YiQuXiao'
AND b.out_time >= DATE_SUB(CURDATE(), INTERVAL 1 DAY)
AND b.out_time <![CDATA[ < ]]> CURDATE()
UNION ALL
SELECT COUNT(*) c, 9 t
FROM order_info a
INNER JOIN order_car_in_out b ON b.id = a.car_in_out_id
WHERE a.deleted = 0
AND a.warn = 1
AND b.out_time >= CURDATE()
AND b.out_time <![CDATA[ < ]]> DATE_ADD(CURDATE(), INTERVAL 1 DAY)
UNION ALL
SELECT COUNT(*) c, 10 t
FROM order_info a
INNER JOIN order_car_in_out b ON b.id = a.car_in_out_id
WHERE a.deleted = 0
AND a.warn = 0
AND b.out_time >= CURDATE()
AND b.out_time <![CDATA[ < ]]> DATE_ADD(CURDATE(), INTERVAL 1 DAY)
UNION ALL
SELECT COUNT(*) c, 11 t
FROM order_info a
INNER JOIN order_car_in_out b ON b.id = a.car_in_out_id
WHERE a.deleted = 0
AND a.warn = 1
AND b.out_time >= DATE_SUB(CURDATE(), INTERVAL 1 DAY)
AND b.out_time <![CDATA[ < ]]> CURDATE()
UNION ALL
SELECT COUNT(*) c, 12 t
FROM order_info a
INNER JOIN order_car_in_out b ON b.id = a.car_in_out_id
WHERE a.deleted = 0
AND a.warn = 0
AND b.out_time >= DATE_SUB(CURDATE(), INTERVAL 1 DAY)
AND b.out_time <![CDATA[ < ]]> CURDATE()
UNION ALL
SELECT COUNT(*) c, 14 t
FROM order_info a
INNER JOIN order_car_in_out b ON b.id = a.car_in_out_id
WHERE a.deleted = 0
AND a.order_status = 'YiWanCheng'
AND b.out_time >= DATE_SUB(CURDATE(), INTERVAL 1 DAY)
AND b.out_time <![CDATA[ < ]]> CURDATE()
UNION ALL
SELECT COUNT(*) c, 15 t
FROM order_info a
INNER JOIN order_car_in_out b ON b.id = a.car_in_out_id
WHERE a.deleted = 0
AND a.order_status = 'YiWanCheng'
AND b.out_time >= DATE_FORMAT(NOW(), '%Y-%m-01 00:00:00')
AND b.out_time <![CDATA[ < ]]> DATE_ADD(DATE_FORMAT(NOW(), '%Y-%m-01'), INTERVAL 1 MONTH)
UNION ALL
SELECT COUNT(*) c, 16 t
FROM order_info a
INNER JOIN order_car_in_out b ON b.id = a.car_in_out_id
WHERE a.deleted = 0
AND a.order_status = 'YiWanCheng'
AND b.out_time >= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y-%m-01 00:00:00')
AND b.out_time <![CDATA[ < ]]> DATE_FORMAT(NOW(), '%Y-%m-01 00:00:00')) tt
</select>
<select id="warnTruck" resultType="java.util.Map">
SELECT license_plate licensePlate,
warn_content warnContent,
last_time lastTime
FROM (SELECT b.license_plate, '离线' warn_content, c.last_time
FROM order_info a
INNER JOIN biz_truck b ON b.id = a.truck_id AND b.deleted = 0
INNER JOIN device_localizer c ON c.terminal_id = b.gps AND c.deleted = 0
WHERE c.last_time <![CDATA[ < ]]> DATE_SUB(NOW(), INTERVAL 5 MINUTE)
UNION ALL
SELECT b.license_plate, c.warn_content, c.create_time last_time
FROM order_info a
INNER JOIN biz_truck b ON b.id = a.truck_id AND b.deleted = 0
INNER JOIN biz_warn c ON c.order_id = a.id AND c.deleted = 0
WHERE c.create_time >= CURDATE()
AND c.create_time <![CDATA[ < ]]> DATE_ADD(CURDATE(), INTERVAL 1 DAY)) t
ORDER BY last_time DESC
LIMIT 50
</select>
<select id="truckStatistics" resultType="java.util.Map">
SELECT MAX(IF(t_ = 1, c_, 0)) offlineCount,
MAX(IF(t_ = 2, c_, 0)) totalCount
FROM (SELECT COUNT(*) c_, 1 t_
FROM device_localizer c
WHERE c.last_time <![CDATA[ < ]]> DATE_SUB(NOW(), INTERVAL 5 MINUTE)
AND c.deleted = 0
UNION ALL
SELECT COUNT(*) c_, 2 t_
FROM device_localizer c
WHERE c.deleted = 0) t
</select>
<select id="projectStatistics" resultType="java.util.Map">
SELECT b.lng,
b.lat,
b.address,
IFNULL(d.project_name, c.nickname) projectName
FROM order_info a
INNER JOIN order_cargo_place b ON b.id = a.cargo_place_id
INNER JOIN sys_user c ON c.id = a.user_id
LEFT JOIN biz_project d ON d.id = a.project_id
WHERE a.deleted = 0
LIMIT 50
</select>
<select id="trendStatistics" resultType="java.util.Map">
SELECT b.settle_weight weight, DATE_FORMAT(b.out_time, '%Y-%m-%d %H:%i:%s') timepoint
FROM order_info a
INNER JOIN order_car_in_out b ON b.id = a.car_in_out_id
WHERE a.deleted = 0
AND a.order_status = 'YiWanCheng'
AND b.out_time >= '${startTime}'
AND b.out_time <![CDATA[ <= ]]> '${endTime}'
</select>
<select id="categoryStatistics" resultType="java.util.Map">
SELECT c.goods_name categoryName, ROUND(SUM(b.settle_weight) / 1000, 2) weight
FROM order_info a
INNER JOIN order_car_in_out b ON b.id = a.car_in_out_id
INNER JOIN order_goods c ON c.id = a.goods_id
INNER JOIN goods_category d ON d.id = c.goods_category_id
WHERE a.deleted = 0
AND a.order_status = 'YiWanCheng'
GROUP BY c.goods_name
</select>
<select id="orderStatistics" resultType="java.util.Map">
SELECT MAX(IF(t_ = 1, c_, 0)) totalCount,
MAX(IF(t_ = 2, c_, 0)) incCount
FROM (SELECT COUNT(*) c_, 1 t_
FROM order_info a
INNER JOIN order_car_in_out b ON b.id = a.car_in_out_id
WHERE a.deleted = 0
AND a.order_status = 'YiWanCheng'
UNION ALL
SELECT COUNT(*) c_, 2 t_
FROM order_info a
INNER JOIN order_car_in_out b ON b.id = a.car_in_out_id
WHERE a.deleted = 0
AND a.order_status = 'YiWanCheng'
AND b.out_time >= CURDATE()
AND b.out_time <![CDATA[ < ]]> DATE_ADD(CURDATE(), INTERVAL 1 DAY)) t
</select>
<select id="weightStatistics" resultType="java.util.Map">
SELECT MAX(IF(t_ = 1, c_, 0)) totalWeight,
MAX(IF(t_ = 2, c_, 0)) incWeight
FROM (SELECT ROUND(SUM(b.settle_weight) / 1000, 2) c_, 1 t_
FROM order_info a
INNER JOIN order_car_in_out b ON b.id = a.car_in_out_id
WHERE a.deleted = 0
AND a.order_status = 'YiWanCheng'
UNION ALL
SELECT ROUND(SUM(b.settle_weight) / 1000, 2) c_, 2 t_
FROM order_info a
INNER JOIN order_car_in_out b ON b.id = a.car_in_out_id
WHERE a.deleted = 0
AND a.order_status = 'YiWanCheng'
AND b.out_time >= CURDATE()
AND b.out_time <![CDATA[ < ]]> DATE_ADD(CURDATE(), INTERVAL 1 DAY)) t
</select>
<select id="userStatistics" resultType="java.util.Map">
SELECT MAX(IF(t_ = 1, c_, 0)) totalCount,
MAX(IF(t_ = 2, c_, 0)) incCount
FROM (SELECT COUNT(*) c_, 1 t_
FROM sys_user
WHERE biz_obj IN ('GeRen', 'WuYe', 'ShiGongDanWei', 'ChaiQian', 'SheQu')
UNION ALL
SELECT COUNT(*) c_, 2 t_
FROM sys_user
WHERE biz_obj IN ('GeRen', 'WuYe', 'ShiGongDanWei', 'ChaiQian', 'SheQu')
AND create_time >= CURDATE()
AND create_time <![CDATA[ < ]]> DATE_ADD(CURDATE(), INTERVAL 1 DAY)) t
</select>
<select id="dataTable" resultType="java.util.Map">
select areaName,
goodsName,
weight,
complateCount,
totalCount,
ROUND((complateCount / totalCount) * 100, 2) complateRate
from (SELECT c.area_name areaName,
d.goods_name goodsName,
ROUND(SUM(if(a.order_status = 'YiWanCheng', b.settle_weight, 0)) / 1000, 2) weight,
count(if(a.order_status = 'YiWanCheng', 1, null)) complateCount,
count(*) totalCount
FROM order_info a
INNER JOIN order_car_in_out b ON b.id = a.car_in_out_id
INNER JOIN order_cargo_place c ON c.id = a.cargo_place_id
INNER JOIN order_goods d ON d.id = a.goods_id
WHERE a.deleted = 0
AND a.order_status = 'YiWanCheng'
AND b.out_time >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)
AND b.out_time &lt; DATE_ADD(CURDATE(), INTERVAL 1 DAY)
GROUP BY c.area_name, d.goods_name) t
</select>
<select id="activeProjectStatistics" resultType="java.util.Map">
SELECT MAX(IF(t_ = 1, c_, 0)) totalCount,
MAX(IF(t_ = 2, c_, 0)) incCount
FROM (SELECT count(*) c_, 1 t_
FROM biz_project a
WHERE a.deleted = 0
UNION ALL
SELECT count(*) c_, 2 t_
FROM biz_project a
WHERE a.deleted = 0
AND a.create_time >= CURDATE()
AND a.create_time <![CDATA[ < ]]> DATE_ADD(CURDATE(), INTERVAL 1 DAY)) t
</select>
<select id="transStatistics" resultType="java.util.Map">
SELECT MAX(IF(t_ = 1, c_, 0)) totalCount,
MAX(IF(t_ = 2, c_, 0)) incCount
FROM (SELECT COUNT(*) c_, 1 t_
FROM sys_user
WHERE biz_obj IN ('QiYe', 'GeTi')
UNION ALL
SELECT COUNT(*) c_, 2 t_
FROM sys_user
WHERE biz_obj IN ('QiYe', 'GeTi')
AND create_time >= CURDATE()
AND create_time <![CDATA[ < ]]> DATE_ADD(CURDATE(), INTERVAL 1 DAY)) t
</select>
<select id="getKehuList" resultType="java.util.Map">
SELECT a.biz_obj bizObj,
CASE a.biz_obj
WHEN 'GeRen' THEN '个人'
WHEN 'WuYe' THEN '物业'
WHEN 'ShiGongDanWei' THEN '施工单位'
WHEN 'ChaiQian' THEN '拆迁公司'
WHEN 'SheQu' THEN '社区/村/街道'
ELSE ''
END bizObjTxt,
b.company_name companyName,
IFNULL(b.contacts, a.nickname) contacts,
IFNULL(b.phone, a.phone) phone,
b.province_name provinceName,
b.city_name cityName,
b.area_name areaName,
b.address,
b.uscc
FROM sys_user a
LEFT JOIN biz_company b ON b.user_id = a.id AND b.audit_status = 'TongGuo' AND b.deleted = 0
WHERE a.biz_obj IN ('WuYe', 'ShiGongDanWei', 'ChaiQian', 'SheQu')
AND a.deleted = 0
</select>
</mapper>