From c8c3598edd3d9143b2bc9d2c07a1215afedecf69 Mon Sep 17 00:00:00 2001 From: pengjie <2413927716@qq.com> Date: Thu, 25 Jun 2026 15:39:41 +0800 Subject: [PATCH] =?UTF-8?q?fix(watch):=20=E4=BF=AE=E5=A4=8DDM8=E4=B8=8D?= =?UTF-8?q?=E5=85=BC=E5=AE=B9=E7=9A=84=E7=9D=A1=E7=9C=A0=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?SQL=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit WatchStatUserInfoDaySleepMapper.xml 的 insertStat/updateStat 使用了 MySQL 专属的 timediff 和 time_to_sec 函数,DM8 报 "Member access [TIMEDIFF] unresolved"。改用 TIMESTAMPDIFF(SECOND,...) 兼容 DM8。 异常被 DataStepListener.handleStat 吞掉,导致任务显示成功但睡眠 数据从未写入 QH_WAT_STAT_USER_DAY_SLE,且 statCommon 循环中断使 后续 watchNo 的 updateLatestSleep 也不会执行,QH_WAT_DATA(type=4) 长期无值,后台列表睡眠列不显示。 --- .../xml/WatchStatUserInfoDaySleepMapper.xml | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDaySleepMapper.xml b/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDaySleepMapper.xml index 38d47f5..da7036e 100644 --- a/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDaySleepMapper.xml +++ b/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDaySleepMapper.xml @@ -52,22 +52,22 @@ (select #{id,jdbcType=VARCHAR}, s.bind_user_id, count(case when sm.sleep_type = '1' then 1 end) as long_count, - max(case when sm.sleep_type = '1' then time_to_sec(timediff(sm.end_time, sm.start_time)) end) / + max(case when sm.sleep_type = '1' then TIMESTAMPDIFF(SECOND, sm.start_time, sm.end_time) end) / 60 as long_duration_max, - min(case when sm.sleep_type = '1' then time_to_sec(timediff(sm.end_time, sm.start_time)) end) / + min(case when sm.sleep_type = '1' then TIMESTAMPDIFF(SECOND, sm.start_time, sm.end_time) end) / 60 as long_duration_min, - sum(case when sm.sleep_type = '1' then time_to_sec(timediff(sm.end_time, sm.start_time)) end) / + sum(case when sm.sleep_type = '1' then TIMESTAMPDIFF(SECOND, sm.start_time, sm.end_time) end) / 60 as long_duration_total, count(case when sm.sleep_type = '2' then 1 end) as short_count, - max(case when sm.sleep_type = '2' then time_to_sec(timediff(sm.end_time, sm.start_time)) end) / + max(case when sm.sleep_type = '2' then TIMESTAMPDIFF(SECOND, sm.start_time, sm.end_time) end) / 60 as short_duration_max, - min(case when sm.sleep_type = '2' then time_to_sec(timediff(sm.end_time, sm.start_time)) end) / + min(case when sm.sleep_type = '2' then TIMESTAMPDIFF(SECOND, sm.start_time, sm.end_time) end) / 60 as short_duration_min, - sum(case when sm.sleep_type = '2' then time_to_sec(timediff(sm.end_time, sm.start_time)) end) / + sum(case when sm.sleep_type = '2' then TIMESTAMPDIFF(SECOND, sm.start_time, sm.end_time) end) / 60 as short_duration_total, sum(length(sm.status) - length(replace(sm.status, '1', ''))) as deep_sleep_times, sum(length(sm.status) - length(replace(sm.status, '3', ''))) as light_sleep_times, - sum(time_to_sec(timediff(sm.end_time, sm.start_time))) / 60 as deep_light_times, + sum(TIMESTAMPDIFF(SECOND, sm.start_time, sm.end_time)) / 60 as deep_light_times, max(s.id) as sleep_id, max(sm.end_time) as last_upload_time, data_date, @@ -85,22 +85,22 @@ update QH_WAT_STAT_USER_DAY_SLE stat left join (select s.bind_user_id, count(case when sm.sleep_type = '1' then 1 end) as long_count, - max(case when sm.sleep_type = '1' then time_to_sec(timediff(sm.end_time, sm.start_time)) end) / + max(case when sm.sleep_type = '1' then TIMESTAMPDIFF(SECOND, sm.start_time, sm.end_time) end) / 60 as long_duration_max, - min(case when sm.sleep_type = '1' then time_to_sec(timediff(sm.end_time, sm.start_time)) end) / + min(case when sm.sleep_type = '1' then TIMESTAMPDIFF(SECOND, sm.start_time, sm.end_time) end) / 60 as long_duration_min, - sum(case when sm.sleep_type = '1' then time_to_sec(timediff(sm.end_time, sm.start_time)) end) / + sum(case when sm.sleep_type = '1' then TIMESTAMPDIFF(SECOND, sm.start_time, sm.end_time) end) / 60 as long_duration_total, count(case when sm.sleep_type = '2' then 1 end) as short_count, - max(case when sm.sleep_type = '2' then time_to_sec(timediff(sm.end_time, sm.start_time)) end) / + max(case when sm.sleep_type = '2' then TIMESTAMPDIFF(SECOND, sm.start_time, sm.end_time) end) / 60 as short_duration_max, - min(case when sm.sleep_type = '2' then time_to_sec(timediff(sm.end_time, sm.start_time)) end) / + min(case when sm.sleep_type = '2' then TIMESTAMPDIFF(SECOND, sm.start_time, sm.end_time) end) / 60 as short_duration_min, - sum(case when sm.sleep_type = '2' then time_to_sec(timediff(sm.end_time, sm.start_time)) end) / + sum(case when sm.sleep_type = '2' then TIMESTAMPDIFF(SECOND, sm.start_time, sm.end_time) end) / 60 as short_duration_total, sum(length(sm.status) - length(replace(sm.status, '1', ''))) as deep_sleep_times, sum(length(sm.status) - length(replace(sm.status, '3', ''))) as light_sleep_times, - sum(time_to_sec(timediff(sm.end_time, sm.start_time))) / 60 as deep_light_times, + sum(TIMESTAMPDIFF(SECOND, sm.start_time, sm.end_time)) / 60 as deep_light_times, max(s.id) as sleep_id, max(sm.end_time) as last_upload_time, data_date