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) {
LocalDate currentDate = now.toLocalDate();
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) {
LocalDate currentDate = now.toLocalDate();
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"
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,22 +84,30 @@
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 &gt;= #{reqVO.beginBaogongTime}
</if>
<if test="reqVO.endBaogongTime != null">
AND r.baogong_time &lt;= #{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) &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 id="selectTrendByMonth"
resultType="cn.iocoder.yudao.module.mes.controller.admin.baogongrecord.vo.BaogongRecordTrendDayRespVO">
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,
CASE
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
)
END AS passRate
FROM mes_baogong_record r
WHERE r.deleted = b'0'
<if test="reqVO.beginBaogongTime != null">
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 &gt;= #{reqVO.beginBaogongTime}
</if>
<if test="reqVO.endBaogongTime != null">
AND r.baogong_time &lt;= #{reqVO.endBaogongTime}
</if>
GROUP BY DATE_FORMAT(r.baogong_time, '%Y-%m')
ORDER BY day ASC
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
t.day_name AS day,
IFNULL(SUM(IFNULL(t.num, 0) + IFNULL(t.no_pass_num, 0)), 0) AS baogongNum,
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(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(
IFNULL(SUM(IFNULL(t.num, 0)), 0) /
IFNULL(SUM(IFNULL(t.num, 0) + IFNULL(t.no_pass_num, 0)), 0) * 100, 2
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
r.num,
r.no_pass_num,
CASE DAYOFWEEK(r.baogong_time)
WHEN 1 THEN '星期日'
WHEN 2 THEN '星期一'
WHEN 3 THEN '星期二'
WHEN 4 THEN '星期三'
WHEN 5 THEN '星期四'
WHEN 6 THEN '星期五'
WHEN 7 THEN '星期六'
END AS day_name,
DAYOFWEEK(r.baogong_time) AS weekday
FROM mes_baogong_record r
WHERE r.deleted = b'0'
<if test="reqVO.beginBaogongTime != null">
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 &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
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
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,
CASE
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
)
END AS passRate
FROM mes_baogong_record r
WHERE r.deleted = b'0'
<if test="reqVO.beginBaogongTime != null">
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 &gt;= #{reqVO.beginBaogongTime}
</if>
<if test="reqVO.endBaogongTime != null">
AND r.baogong_time &lt;= #{reqVO.endBaogongTime}
</if>
GROUP BY DATE_FORMAT(r.baogong_time, '%H:00')
ORDER BY DATE_FORMAT(r.baogong_time, '%H:00') ASC
GROUP BY h.day
ORDER BY h.day ASC
</select>
</mapper>

@ -31,81 +31,92 @@
<select id="selectTrendByDay"
resultType="cn.iocoder.yudao.module.mes.controller.admin.task.vo.TaskTrendItemRespVO">
SELECT
DATE_FORMAT(t.create_time, '%Y-%m-%d') AS day,
COUNT(1) AS count
FROM mes_task t
WHERE t.deleted = b'0'
<if test="reqVO.beginTime != null">
AND t.create_time &gt;= #{reqVO.beginTime}
</if>
<if test="reqVO.endTime != null">
AND t.create_time &lt;= #{reqVO.endTime}
</if>
GROUP BY DATE_FORMAT(t.create_time, '%Y-%m-%d')
ORDER BY day ASC
d.day AS day,
COUNT(t.id) AS count
FROM (
SELECT DATE_FORMAT(DATE_ADD(#{reqVO.beginTime}, 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.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 id="selectTrendByMonth"
resultType="cn.iocoder.yudao.module.mes.controller.admin.task.vo.TaskTrendItemRespVO">
SELECT
DATE_FORMAT(t.create_time, '%Y-%m') AS day,
COUNT(1) AS count
FROM mes_task t
WHERE t.deleted = b'0'
<if test="reqVO.beginTime != null">
m.day AS day,
COUNT(t.id) AS count
FROM (
SELECT DATE_FORMAT(DATE_ADD(#{reqVO.beginTime}, 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_task t
ON t.deleted = b'0'
AND DATE_FORMAT(t.create_time, '%Y-%m') = m.day
AND t.create_time &gt;= #{reqVO.beginTime}
</if>
<if test="reqVO.endTime != null">
AND t.create_time &lt;= #{reqVO.endTime}
</if>
GROUP BY DATE_FORMAT(t.create_time, '%Y-%m')
ORDER BY day ASC
GROUP BY m.day
ORDER BY m.day ASC
</select>
<select id="selectTrendByWeekday"
resultType="cn.iocoder.yudao.module.mes.controller.admin.task.vo.TaskTrendItemRespVO">
SELECT
t.day_name AS day,
t.count
w.day_name AS day,
COUNT(t.id) AS count
FROM (
SELECT
CASE DAYOFWEEK(create_time)
WHEN 1 THEN '星期日'
WHEN 2 THEN '星期一'
WHEN 3 THEN '星期二'
WHEN 4 THEN '星期三'
WHEN 5 THEN '星期四'
WHEN 6 THEN '星期五'
WHEN 7 THEN '星期六'
END AS day_name,
DAYOFWEEK(create_time) AS weekday
FROM mes_task
WHERE deleted = b'0'
<if test="reqVO.beginTime != null">
AND create_time &gt;= #{reqVO.beginTime}
</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 1 AS idx, DATE_FORMAT(#{reqVO.beginTime}, '%Y-%m-%d') AS day_key, '星期一' AS day_name UNION ALL
SELECT 2, DATE_FORMAT(DATE_ADD(#{reqVO.beginTime}, INTERVAL 1 DAY), '%Y-%m-%d'), '星期二' UNION ALL
SELECT 3, DATE_FORMAT(DATE_ADD(#{reqVO.beginTime}, INTERVAL 2 DAY), '%Y-%m-%d'), '星期三' UNION ALL
SELECT 4, DATE_FORMAT(DATE_ADD(#{reqVO.beginTime}, INTERVAL 3 DAY), '%Y-%m-%d'), '星期四' UNION ALL
SELECT 5, DATE_FORMAT(DATE_ADD(#{reqVO.beginTime}, INTERVAL 4 DAY), '%Y-%m-%d'), '星期五' UNION ALL
SELECT 6, DATE_FORMAT(DATE_ADD(#{reqVO.beginTime}, INTERVAL 5 DAY), '%Y-%m-%d'), '星期六' UNION ALL
SELECT 7, DATE_FORMAT(DATE_ADD(#{reqVO.beginTime}, INTERVAL 6 DAY), '%Y-%m-%d'), '星期日'
) w
LEFT JOIN mes_task t
ON t.deleted = b'0'
AND DATE_FORMAT(t.create_time, '%Y-%m-%d') = w.day_key
AND t.create_time &gt;= #{reqVO.beginTime}
AND t.create_time &lt;= #{reqVO.endTime}
GROUP BY w.idx, w.day_name
ORDER BY w.idx ASC
</select>
<select id="selectTrendByHour"
resultType="cn.iocoder.yudao.module.mes.controller.admin.task.vo.TaskTrendItemRespVO">
SELECT
DATE_FORMAT(t.create_time, '%H:00') AS day,
COUNT(1) AS count
FROM mes_task t
WHERE t.deleted = b'0'
<if test="reqVO.beginTime != null">
h.day AS day,
COUNT(t.id) AS count
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_task t
ON t.deleted = b'0'
AND DATE_FORMAT(t.create_time, '%H:00') = h.day
AND t.create_time &gt;= #{reqVO.beginTime}
</if>
<if test="reqVO.endTime != null">
AND t.create_time &lt;= #{reqVO.endTime}
</if>
GROUP BY DATE_FORMAT(t.create_time, '%H:00')
ORDER BY DATE_FORMAT(t.create_time, '%H:00') ASC
GROUP BY h.day
ORDER BY h.day ASC
</select>
</mapper>

Loading…
Cancel
Save