fix:修改时间返回格式

ck
HuangHuiKang 1 month ago
parent a1db78fd3d
commit 6d651523c3

@ -0,0 +1,33 @@
package cn.iocoder.yudao.module.iot.controller.admin.device.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "管理后台 - 设备概况 Resp VO")
@Data
public class DeviceOverviewRespVO {
@Schema(description = "设备总数")
private Integer totalDevices;
@Schema(description = "运行")
private Integer runningCount;
@Schema(description = "待机")
private Integer standbyCount;
@Schema(description = "故障")
private Integer faultCount;
@Schema(description = "离线")
private Integer offlineCount;
@Schema(description = "利用率=运行/设备总数")
private String utilizationRate;
@Schema(description = "开机率=(运行+待机+故障)/设备总数")
private String bootRate;
@Schema(description = "故障率=故障/设备总数")
private String faultRate;
}

@ -150,7 +150,7 @@ public class BaogongRecordServiceImpl implements BaogongRecordService {
if (trendType == BaogongTrendTypeEnum.TODAY) { if (trendType == BaogongTrendTypeEnum.TODAY) {
LocalDate currentDate = now.toLocalDate(); LocalDate currentDate = now.toLocalDate();
reqVO.setBeginBaogongTime(currentDate.atStartOfDay()); reqVO.setBeginBaogongTime(currentDate.atStartOfDay());
reqVO.setEndBaogongTime(now.minusHours(1).withMinute(59).withSecond(59).withNano(999999999)); reqVO.setEndBaogongTime(currentDate.atTime(LocalTime.MAX));
} }
} }

@ -990,7 +990,7 @@ public class TaskServiceImpl implements TaskService {
if (trendType == BaogongTrendTypeEnum.TODAY) { if (trendType == BaogongTrendTypeEnum.TODAY) {
LocalDate currentDate = now.toLocalDate(); LocalDate currentDate = now.toLocalDate();
reqVO.setBeginTime(currentDate.atStartOfDay()); reqVO.setBeginTime(currentDate.atStartOfDay());
reqVO.setEndTime(now.minusHours(1).withMinute(59).withSecond(59).withNano(999999999)); reqVO.setEndTime(currentDate.atTime(LocalTime.MAX));
} }
} }

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

@ -31,81 +31,92 @@
<select id="selectTrendByDay" <select id="selectTrendByDay"
resultType="cn.iocoder.yudao.module.mes.controller.admin.task.vo.TaskTrendItemRespVO"> resultType="cn.iocoder.yudao.module.mes.controller.admin.task.vo.TaskTrendItemRespVO">
SELECT SELECT
DATE_FORMAT(t.create_time, '%Y-%m-%d') AS day, d.day AS day,
COUNT(1) AS count COUNT(t.id) AS count
FROM mes_task t FROM (
WHERE t.deleted = b'0' SELECT DATE_FORMAT(DATE_ADD(#{reqVO.beginTime}, INTERVAL seq.num DAY), '%Y-%m-%d') AS day
<if test="reqVO.beginTime != null"> FROM (
AND t.create_time &gt;= #{reqVO.beginTime} SELECT 0 AS num UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL
</if> SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL
<if test="reqVO.endTime != null"> SELECT 10 UNION ALL SELECT 11 UNION ALL SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL
AND t.create_time &lt;= #{reqVO.endTime} SELECT 15 UNION ALL SELECT 16 UNION ALL SELECT 17 UNION ALL SELECT 18 UNION ALL SELECT 19 UNION ALL
</if> SELECT 20 UNION ALL SELECT 21 UNION ALL SELECT 22 UNION ALL SELECT 23 UNION ALL SELECT 24 UNION ALL
GROUP BY DATE_FORMAT(t.create_time, '%Y-%m-%d') SELECT 25 UNION ALL SELECT 26 UNION ALL SELECT 27 UNION ALL SELECT 28 UNION ALL SELECT 29 UNION ALL
ORDER BY day ASC SELECT 30
) seq
WHERE DATE_ADD(#{reqVO.beginTime}, INTERVAL seq.num DAY) &lt;= #{reqVO.endTime}
) d
LEFT JOIN mes_task t
ON t.deleted = b'0'
AND DATE_FORMAT(t.create_time, '%Y-%m-%d') = d.day
GROUP BY d.day
ORDER BY d.day ASC
</select> </select>
<select id="selectTrendByMonth" <select id="selectTrendByMonth"
resultType="cn.iocoder.yudao.module.mes.controller.admin.task.vo.TaskTrendItemRespVO"> resultType="cn.iocoder.yudao.module.mes.controller.admin.task.vo.TaskTrendItemRespVO">
SELECT SELECT
DATE_FORMAT(t.create_time, '%Y-%m') AS day, m.day AS day,
COUNT(1) AS count COUNT(t.id) AS count
FROM mes_task t FROM (
WHERE t.deleted = b'0' SELECT DATE_FORMAT(DATE_ADD(#{reqVO.beginTime}, INTERVAL seq.num MONTH), '%Y-%m') AS day
<if test="reqVO.beginTime != null"> FROM (
AND t.create_time &gt;= #{reqVO.beginTime} SELECT 0 AS num UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL
</if> SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL
<if test="reqVO.endTime != null"> SELECT 10 UNION ALL SELECT 11
AND t.create_time &lt;= #{reqVO.endTime} ) seq
</if> ) m
GROUP BY DATE_FORMAT(t.create_time, '%Y-%m') LEFT JOIN mes_task t
ORDER BY day ASC ON t.deleted = b'0'
AND DATE_FORMAT(t.create_time, '%Y-%m') = m.day
AND t.create_time &gt;= #{reqVO.beginTime}
AND t.create_time &lt;= #{reqVO.endTime}
GROUP BY m.day
ORDER BY m.day ASC
</select> </select>
<select id="selectTrendByWeekday" <select id="selectTrendByWeekday"
resultType="cn.iocoder.yudao.module.mes.controller.admin.task.vo.TaskTrendItemRespVO"> resultType="cn.iocoder.yudao.module.mes.controller.admin.task.vo.TaskTrendItemRespVO">
SELECT SELECT
t.day_name AS day, w.day_name AS day,
t.count COUNT(t.id) AS count
FROM ( FROM (
SELECT SELECT 1 AS idx, DATE_FORMAT(#{reqVO.beginTime}, '%Y-%m-%d') AS day_key, '星期一' AS day_name UNION ALL
CASE DAYOFWEEK(create_time) SELECT 2, DATE_FORMAT(DATE_ADD(#{reqVO.beginTime}, INTERVAL 1 DAY), '%Y-%m-%d'), '星期二' UNION ALL
WHEN 1 THEN '星期日' SELECT 3, DATE_FORMAT(DATE_ADD(#{reqVO.beginTime}, INTERVAL 2 DAY), '%Y-%m-%d'), '星期三' UNION ALL
WHEN 2 THEN '星期一' SELECT 4, DATE_FORMAT(DATE_ADD(#{reqVO.beginTime}, INTERVAL 3 DAY), '%Y-%m-%d'), '星期四' UNION ALL
WHEN 3 THEN '星期二' SELECT 5, DATE_FORMAT(DATE_ADD(#{reqVO.beginTime}, INTERVAL 4 DAY), '%Y-%m-%d'), '星期五' UNION ALL
WHEN 4 THEN '星期三' SELECT 6, DATE_FORMAT(DATE_ADD(#{reqVO.beginTime}, INTERVAL 5 DAY), '%Y-%m-%d'), '星期六' UNION ALL
WHEN 5 THEN '星期四' SELECT 7, DATE_FORMAT(DATE_ADD(#{reqVO.beginTime}, INTERVAL 6 DAY), '%Y-%m-%d'), '星期日'
WHEN 6 THEN '星期五' ) w
WHEN 7 THEN '星期六' LEFT JOIN mes_task t
END AS day_name, ON t.deleted = b'0'
DAYOFWEEK(create_time) AS weekday AND DATE_FORMAT(t.create_time, '%Y-%m-%d') = w.day_key
FROM mes_task AND t.create_time &gt;= #{reqVO.beginTime}
WHERE deleted = b'0' AND t.create_time &lt;= #{reqVO.endTime}
<if test="reqVO.beginTime != null"> GROUP BY w.idx, w.day_name
AND create_time &gt;= #{reqVO.beginTime} ORDER BY w.idx ASC
</if>
<if test="reqVO.endTime != null">
AND create_time &lt;= #{reqVO.endTime}
</if>
) t
GROUP BY t.weekday, t.day_name
ORDER BY t.weekday ASC
</select> </select>
<select id="selectTrendByHour" <select id="selectTrendByHour"
resultType="cn.iocoder.yudao.module.mes.controller.admin.task.vo.TaskTrendItemRespVO"> resultType="cn.iocoder.yudao.module.mes.controller.admin.task.vo.TaskTrendItemRespVO">
SELECT SELECT
DATE_FORMAT(t.create_time, '%H:00') AS day, h.day AS day,
COUNT(1) AS count COUNT(t.id) AS count
FROM mes_task t FROM (
WHERE t.deleted = b'0' SELECT '00:00' AS day UNION ALL SELECT '01:00' UNION ALL SELECT '02:00' UNION ALL SELECT '03:00' UNION ALL
<if test="reqVO.beginTime != null"> SELECT '04:00' UNION ALL SELECT '05:00' UNION ALL SELECT '06:00' UNION ALL SELECT '07:00' UNION ALL
AND t.create_time &gt;= #{reqVO.beginTime} SELECT '08:00' UNION ALL SELECT '09:00' UNION ALL SELECT '10:00' UNION ALL SELECT '11:00' UNION ALL
</if> SELECT '12:00' UNION ALL SELECT '13:00' UNION ALL SELECT '14:00' UNION ALL SELECT '15:00' UNION ALL
<if test="reqVO.endTime != null"> SELECT '16:00' UNION ALL SELECT '17:00' UNION ALL SELECT '18:00' UNION ALL SELECT '19:00' UNION ALL
AND t.create_time &lt;= #{reqVO.endTime} SELECT '20:00' UNION ALL SELECT '21:00' UNION ALL SELECT '22:00' UNION ALL SELECT '23:00'
</if> ) h
GROUP BY DATE_FORMAT(t.create_time, '%H:00') LEFT JOIN mes_task t
ORDER BY DATE_FORMAT(t.create_time, '%H:00') ASC ON t.deleted = b'0'
AND DATE_FORMAT(t.create_time, '%H:00') = h.day
AND t.create_time &gt;= #{reqVO.beginTime}
AND t.create_time &lt;= #{reqVO.endTime}
GROUP BY h.day
ORDER BY h.day ASC
</select> </select>
</mapper> </mapper>

Loading…
Cancel
Save