|
|
|
|
@ -75,7 +75,7 @@
|
|
|
|
|
<select id="selectTrendByDay"
|
|
|
|
|
resultType="cn.iocoder.yudao.module.mes.controller.admin.baogongrecord.vo.BaogongRecordTrendDayRespVO">
|
|
|
|
|
SELECT
|
|
|
|
|
DATE_FORMAT(r.baogong_time, '%Y-%m-%d') AS day,
|
|
|
|
|
d.day AS day,
|
|
|
|
|
IFNULL(SUM(IFNULL(r.num, 0) + IFNULL(r.no_pass_num, 0)), 0) AS baogongNum,
|
|
|
|
|
CASE
|
|
|
|
|
WHEN IFNULL(SUM(IFNULL(r.num, 0) + IFNULL(r.no_pass_num, 0)), 0) = 0 THEN 0
|
|
|
|
|
@ -84,17 +84,112 @@
|
|
|
|
|
IFNULL(SUM(IFNULL(r.num, 0) + IFNULL(r.no_pass_num, 0)), 0) * 100, 2
|
|
|
|
|
)
|
|
|
|
|
END AS passRate
|
|
|
|
|
FROM mes_baogong_record r
|
|
|
|
|
WHERE r.deleted = b'0'
|
|
|
|
|
<if test="reqVO.beginBaogongTime != null">
|
|
|
|
|
AND r.baogong_time >= #{reqVO.beginBaogongTime}
|
|
|
|
|
</if>
|
|
|
|
|
<if test="reqVO.endBaogongTime != null">
|
|
|
|
|
AND r.baogong_time <= #{reqVO.endBaogongTime}
|
|
|
|
|
</if>
|
|
|
|
|
GROUP BY DATE_FORMAT(r.baogong_time, '%Y-%m-%d')
|
|
|
|
|
ORDER BY day ASC
|
|
|
|
|
FROM (
|
|
|
|
|
SELECT DATE_FORMAT(DATE_ADD(#{reqVO.beginBaogongTime}, INTERVAL seq.num DAY), '%Y-%m-%d') AS day
|
|
|
|
|
FROM (
|
|
|
|
|
SELECT 0 AS num UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL
|
|
|
|
|
SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL
|
|
|
|
|
SELECT 10 UNION ALL SELECT 11 UNION ALL SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL
|
|
|
|
|
SELECT 15 UNION ALL SELECT 16 UNION ALL SELECT 17 UNION ALL SELECT 18 UNION ALL SELECT 19 UNION ALL
|
|
|
|
|
SELECT 20 UNION ALL SELECT 21 UNION ALL SELECT 22 UNION ALL SELECT 23 UNION ALL SELECT 24 UNION ALL
|
|
|
|
|
SELECT 25 UNION ALL SELECT 26 UNION ALL SELECT 27 UNION ALL SELECT 28 UNION ALL SELECT 29 UNION ALL
|
|
|
|
|
SELECT 30
|
|
|
|
|
) seq
|
|
|
|
|
WHERE DATE_ADD(#{reqVO.beginBaogongTime}, INTERVAL seq.num DAY) <= #{reqVO.endBaogongTime}
|
|
|
|
|
) d
|
|
|
|
|
LEFT JOIN mes_baogong_record r
|
|
|
|
|
ON r.deleted = b'0'
|
|
|
|
|
AND DATE_FORMAT(r.baogong_time, '%Y-%m-%d') = d.day
|
|
|
|
|
GROUP BY d.day
|
|
|
|
|
ORDER BY d.day ASC
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
<select id="selectTrendByMonth"
|
|
|
|
|
resultType="cn.iocoder.yudao.module.mes.controller.admin.baogongrecord.vo.BaogongRecordTrendDayRespVO">
|
|
|
|
|
SELECT
|
|
|
|
|
m.day AS day,
|
|
|
|
|
IFNULL(SUM(IFNULL(r.num, 0) + IFNULL(r.no_pass_num, 0)), 0) AS baogongNum,
|
|
|
|
|
CASE
|
|
|
|
|
WHEN IFNULL(SUM(IFNULL(r.num, 0) + IFNULL(r.no_pass_num, 0)), 0) = 0 THEN 0
|
|
|
|
|
ELSE ROUND(
|
|
|
|
|
IFNULL(SUM(IFNULL(r.num, 0)), 0) /
|
|
|
|
|
IFNULL(SUM(IFNULL(r.num, 0) + IFNULL(r.no_pass_num, 0)), 0) * 100, 2
|
|
|
|
|
)
|
|
|
|
|
END AS passRate
|
|
|
|
|
FROM (
|
|
|
|
|
SELECT DATE_FORMAT(DATE_ADD(#{reqVO.beginBaogongTime}, INTERVAL seq.num MONTH), '%Y-%m') AS day
|
|
|
|
|
FROM (
|
|
|
|
|
SELECT 0 AS num UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL
|
|
|
|
|
SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL
|
|
|
|
|
SELECT 10 UNION ALL SELECT 11
|
|
|
|
|
) seq
|
|
|
|
|
) m
|
|
|
|
|
LEFT JOIN mes_baogong_record r
|
|
|
|
|
ON r.deleted = b'0'
|
|
|
|
|
AND DATE_FORMAT(r.baogong_time, '%Y-%m') = m.day
|
|
|
|
|
AND r.baogong_time >= #{reqVO.beginBaogongTime}
|
|
|
|
|
AND r.baogong_time <= #{reqVO.endBaogongTime}
|
|
|
|
|
GROUP BY m.day
|
|
|
|
|
ORDER BY m.day ASC
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
<select id="selectTrendByWeekday"
|
|
|
|
|
resultType="cn.iocoder.yudao.module.mes.controller.admin.baogongrecord.vo.BaogongRecordTrendDayRespVO">
|
|
|
|
|
SELECT
|
|
|
|
|
w.day_name AS day,
|
|
|
|
|
IFNULL(SUM(IFNULL(r.num, 0) + IFNULL(r.no_pass_num, 0)), 0) AS baogongNum,
|
|
|
|
|
CASE
|
|
|
|
|
WHEN IFNULL(SUM(IFNULL(r.num, 0) + IFNULL(r.no_pass_num, 0)), 0) = 0 THEN 0
|
|
|
|
|
ELSE ROUND(
|
|
|
|
|
IFNULL(SUM(IFNULL(r.num, 0)), 0) /
|
|
|
|
|
IFNULL(SUM(IFNULL(r.num, 0) + IFNULL(r.no_pass_num, 0)), 0) * 100, 2
|
|
|
|
|
)
|
|
|
|
|
END AS passRate
|
|
|
|
|
FROM (
|
|
|
|
|
SELECT 1 AS idx, DATE_FORMAT(#{reqVO.beginBaogongTime}, '%Y-%m-%d') AS day_key, '星期一' AS day_name UNION ALL
|
|
|
|
|
SELECT 2, DATE_FORMAT(DATE_ADD(#{reqVO.beginBaogongTime}, INTERVAL 1 DAY), '%Y-%m-%d'), '星期二' UNION ALL
|
|
|
|
|
SELECT 3, DATE_FORMAT(DATE_ADD(#{reqVO.beginBaogongTime}, INTERVAL 2 DAY), '%Y-%m-%d'), '星期三' UNION ALL
|
|
|
|
|
SELECT 4, DATE_FORMAT(DATE_ADD(#{reqVO.beginBaogongTime}, INTERVAL 3 DAY), '%Y-%m-%d'), '星期四' UNION ALL
|
|
|
|
|
SELECT 5, DATE_FORMAT(DATE_ADD(#{reqVO.beginBaogongTime}, INTERVAL 4 DAY), '%Y-%m-%d'), '星期五' UNION ALL
|
|
|
|
|
SELECT 6, DATE_FORMAT(DATE_ADD(#{reqVO.beginBaogongTime}, INTERVAL 5 DAY), '%Y-%m-%d'), '星期六' UNION ALL
|
|
|
|
|
SELECT 7, DATE_FORMAT(DATE_ADD(#{reqVO.beginBaogongTime}, INTERVAL 6 DAY), '%Y-%m-%d'), '星期日'
|
|
|
|
|
) w
|
|
|
|
|
LEFT JOIN mes_baogong_record r
|
|
|
|
|
ON r.deleted = b'0'
|
|
|
|
|
AND DATE_FORMAT(r.baogong_time, '%Y-%m-%d') = w.day_key
|
|
|
|
|
AND r.baogong_time >= #{reqVO.beginBaogongTime}
|
|
|
|
|
AND r.baogong_time <= #{reqVO.endBaogongTime}
|
|
|
|
|
GROUP BY w.idx, w.day_name
|
|
|
|
|
ORDER BY w.idx ASC
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
<select id="selectTrendByHour"
|
|
|
|
|
resultType="cn.iocoder.yudao.module.mes.controller.admin.baogongrecord.vo.BaogongRecordTrendDayRespVO">
|
|
|
|
|
SELECT
|
|
|
|
|
h.day AS day,
|
|
|
|
|
IFNULL(SUM(IFNULL(r.num, 0) + IFNULL(r.no_pass_num, 0)), 0) AS baogongNum,
|
|
|
|
|
CASE
|
|
|
|
|
WHEN IFNULL(SUM(IFNULL(r.num, 0) + IFNULL(r.no_pass_num, 0)), 0) = 0 THEN 0
|
|
|
|
|
ELSE ROUND(
|
|
|
|
|
IFNULL(SUM(IFNULL(r.num, 0)), 0) /
|
|
|
|
|
IFNULL(SUM(IFNULL(r.num, 0) + IFNULL(r.no_pass_num, 0)), 0) * 100, 2
|
|
|
|
|
)
|
|
|
|
|
END AS passRate
|
|
|
|
|
FROM (
|
|
|
|
|
SELECT '00:00' AS day UNION ALL SELECT '01:00' UNION ALL SELECT '02:00' UNION ALL SELECT '03:00' UNION ALL
|
|
|
|
|
SELECT '04:00' UNION ALL SELECT '05:00' UNION ALL SELECT '06:00' UNION ALL SELECT '07:00' UNION ALL
|
|
|
|
|
SELECT '08:00' UNION ALL SELECT '09:00' UNION ALL SELECT '10:00' UNION ALL SELECT '11:00' UNION ALL
|
|
|
|
|
SELECT '12:00' UNION ALL SELECT '13:00' UNION ALL SELECT '14:00' UNION ALL SELECT '15:00' UNION ALL
|
|
|
|
|
SELECT '16:00' UNION ALL SELECT '17:00' UNION ALL SELECT '18:00' UNION ALL SELECT '19:00' UNION ALL
|
|
|
|
|
SELECT '20:00' UNION ALL SELECT '21:00' UNION ALL SELECT '22:00' UNION ALL SELECT '23:00'
|
|
|
|
|
) h
|
|
|
|
|
LEFT JOIN mes_baogong_record r
|
|
|
|
|
ON r.deleted = b'0'
|
|
|
|
|
AND DATE_FORMAT(r.baogong_time, '%H:00') = h.day
|
|
|
|
|
AND r.baogong_time >= #{reqVO.beginBaogongTime}
|
|
|
|
|
AND r.baogong_time <= #{reqVO.endBaogongTime}
|
|
|
|
|
GROUP BY h.day
|
|
|
|
|
ORDER BY h.day ASC
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
</mapper>
|
|
|
|
|
</mapper>
|
|
|
|
|
|