From 66bb39bc186e7e4350a3061a1c2f23ee4be9422b Mon Sep 17 00:00:00 2001 From: wanghao Date: Thu, 18 Dec 2025 17:25:00 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=AF=BC=E5=85=A5=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=8F=8A=E6=9C=80=E6=96=B0=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WatchStatUserInfoDayHeartRateMapper.xml | 62 +++++++++------- .../xml/WatchStatUserInfoDaySpo2Mapper.xml | 48 +++++++----- .../xml/WatchStatUserInfoDayStressMapper.xml | 74 +++++++++++-------- .../xml/WatchStatUserInfoDayTempMapper.xml | 64 +++++++++------- 4 files changed, 148 insertions(+), 100 deletions(-) diff --git a/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDayHeartRateMapper.xml b/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDayHeartRateMapper.xml index ccec13b..32b0f5b 100644 --- a/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDayHeartRateMapper.xml +++ b/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDayHeartRateMapper.xml @@ -358,31 +358,43 @@ update watch_stat_user_info_day_heart_rate stat - left join (select bind_user_id, - ifnull(max(data_value), 0) as max_value, - ifnull(min(data_value), 0) as min_value, - ifnull(avg(data_value), 0) as avg_value, - ifnull(max(silence_value), 0) as silence_max_value, - ifnull(min(silence_value), 0) as silence_min_value, - ifnull(avg(silence_value), 0) as silence_avg_value, - ifnull(max(time_stamp), NOW()) as last_upload_time, - ifnull(data_value, 0) as new_value, - ifnull(silence_value, 0) as silence_new_value, - data_date - from watch_data_heart_rate - where bind_user_id = #{userId,jdbcType=VARCHAR} - and data_date = #{dataDate,jdbcType=DATE} - group by bind_user_id, data_date) data on stat.user_id = data.bind_user_id - set stat.max_value = data.max_value, - stat.min_value = data.min_value, - stat.avg_value = data.avg_value, - stat.silence_max_value = data.silence_max_value, - stat.silence_min_value = data.silence_min_value, - stat.silence_avg_value = data.silence_avg_value, - stat.last_upload_time = data.last_upload_time, - stat.new_value = data.new_value, - stat.silence_new_value = data.silence_new_value, - stat.org_code = #{orgCode,jdbcType=VARCHAR} + left join ( + select + wd.bind_user_id, + ifnull(max(wd.data_value), 0) as max_value, + ifnull(min(wd.data_value), 0) as min_value, + ifnull(avg(wd.data_value), 0) as avg_value, + ifnull(max(wd.silence_value), 0) as silence_max_value, + ifnull(min(wd.silence_value), 0) as silence_min_value, + ifnull(avg(wd.silence_value), 0) as silence_avg_value, + ifnull(max(wd.time_stamp), NOW()) as last_upload_time, + latest.new_value, + latest.silence_new_value, + wd.data_date + from watch_data_heart_rate wd + left join ( + select bind_user_id, data_date, data_value as new_value, silence_value as silence_new_value + from watch_data_heart_rate t1 + where (bind_user_id, data_date, time_stamp) in ( + select bind_user_id, data_date, max(time_stamp) + from watch_data_heart_rate + group by bind_user_id, data_date + ) + ) latest on wd.bind_user_id = latest.bind_user_id and wd.data_date = latest.data_date + where wd.bind_user_id = #{userId,jdbcType=VARCHAR} + and wd.data_date = #{dataDate,jdbcType=DATE} + group by wd.bind_user_id, wd.data_date, latest.new_value, latest.silence_new_value + ) data on stat.user_id = data.bind_user_id and stat.data_date = data.data_date + set stat.max_value = data.max_value, + stat.min_value = data.min_value, + stat.avg_value = data.avg_value, + stat.silence_max_value = data.silence_max_value, + stat.silence_min_value = data.silence_min_value, + stat.silence_avg_value = data.silence_avg_value, + stat.last_upload_time = data.last_upload_time, + stat.new_value = data.new_value, + stat.silence_new_value = IF(data.silence_new_value IS NULL OR data.silence_new_value = 0, stat.silence_new_value, data.silence_new_value), + stat.org_code = #{orgCode,jdbcType=VARCHAR} where stat.user_id = #{userId,jdbcType=VARCHAR} and stat.data_date = #{dataDate,jdbcType=DATE}; diff --git a/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDaySpo2Mapper.xml b/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDaySpo2Mapper.xml index f7db12c..66f28aa 100644 --- a/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDaySpo2Mapper.xml +++ b/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDaySpo2Mapper.xml @@ -55,24 +55,36 @@ update watch_stat_user_info_day_spo2 stat - left join (select bind_user_id, - ifnull(max(data_value), 0) as max_value, - ifnull(min(data_value), 0) as min_value, - ifnull(avg(data_value), 0) as avg_value, - ifnull(max(time_stamp), 0) as last_upload_time, - ifnull(data_value, 0) as new_value, - data_date - from watch_data_spo2 - where bind_user_id = #{userId,jdbcType=VARCHAR} - and data_date = #{dataDate,jdbcType=DATE} - group by bind_user_id, data_date) data on stat.user_id = data.bind_user_id - set stat.max_value = data.max_value, - stat.min_value = data.min_value, - stat.avg_value = data.avg_value, - stat.last_upload_time = data.last_upload_time, - stat.new_value = data.new_value, - stat.org_code = #{orgCode,jdbcType=VARCHAR} + left join ( + select + wd.bind_user_id, + ifnull(max(wd.data_value), 0) as max_value, + ifnull(min(wd.data_value), 0) as min_value, + ifnull(avg(wd.data_value), 0) as avg_value, + ifnull(max(wd.time_stamp), 0) as last_upload_time, + latest.new_value, + wd.data_date + from watch_data_spo2 wd + left join ( + select bind_user_id, data_date, data_value as new_value + from watch_data_spo2 t1 + where (bind_user_id, data_date, time_stamp) in ( + select bind_user_id, data_date, max(time_stamp) + from watch_data_spo2 + group by bind_user_id, data_date + ) + ) latest on wd.bind_user_id = latest.bind_user_id and wd.data_date = latest.data_date + where wd.bind_user_id = #{userId,jdbcType=VARCHAR} + and wd.data_date = #{dataDate,jdbcType=DATE} + group by wd.bind_user_id, wd.data_date, latest.new_value + ) data on stat.user_id = data.bind_user_id and stat.data_date = data.data_date + set stat.max_value = data.max_value, + stat.min_value = data.min_value, + stat.avg_value = data.avg_value, + stat.last_upload_time = data.last_upload_time, + stat.new_value = data.new_value, + stat.org_code = #{orgCode,jdbcType=VARCHAR} where stat.user_id = #{userId,jdbcType=VARCHAR} - and stat.data_date = #{dataDate,jdbcType=DATE}; + and stat.data_date = #{dataDate,jdbcType=DATE}; diff --git a/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDayStressMapper.xml b/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDayStressMapper.xml index c4878b4..d89eb45 100644 --- a/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDayStressMapper.xml +++ b/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDayStressMapper.xml @@ -22,41 +22,53 @@ insert into watch_stat_user_info_day_stress(id, user_id, max_value, min_value, avg_value, data_date, last_upload_time, new_value, org_code) - (select #{id,jdbcType=VARCHAR}, - bind_user_id, - ifnull(max(data_value), 0), - ifnull(min(data_value), 0), - ifnull(avg(data_value), 0), - ifnull(max(end_time_stamp), NOW()), - ifnull(data_value, 0), - data_date, - #{orgCode,jdbcType=VARCHAR} - from watch_data_stress - where bind_user_id = #{userId,jdbcType=VARCHAR} - and data_date = #{dataDate,jdbcType=DATE} - group by bind_user_id, data_date); + (select #{id,jdbcType=VARCHAR}, + bind_user_id, + ifnull(max(data_value), 0), + ifnull(min(data_value), 0), + ifnull(avg(data_value), 0), + data_date, + ifnull(max(end_time_stamp), NOW()), + ifnull(data_value, 0), + #{orgCode,jdbcType=VARCHAR} + from watch_data_stress + where bind_user_id = #{userId,jdbcType=VARCHAR} + and data_date = #{dataDate,jdbcType=DATE} + group by bind_user_id, data_date); update watch_stat_user_info_day_stress stat - left join (select bind_user_id, - ifnull(max(data_value), 0) as max_value, - ifnull(min(data_value), 0) as min_value, - ifnull(avg(data_value), 0) as avg_value, - ifnull(max(end_time_stamp), NOW()) as last_upload_time, - ifnull(data_value, 0) as new_value, - data_date - from watch_data_stress - where bind_user_id = #{userId,jdbcType=VARCHAR} - and data_date = #{dataDate,jdbcType=DATE} - group by bind_user_id, data_date) data on stat.user_id = data.bind_user_id - set stat.max_value = data.max_value, - stat.min_value = data.min_value, - stat.avg_value = data.avg_value, - stat.last_upload_time = data.last_upload_time, - stat.new_value = data.new_value, - stat.org_code = #{orgCode,jdbcType=VARCHAR} + left join ( + select + wd.bind_user_id, + ifnull(max(wd.data_value), 0) as max_value, + ifnull(min(wd.data_value), 0) as min_value, + ifnull(avg(wd.data_value), 0) as avg_value, + ifnull(max(wd.end_time_stamp), NOW()) as last_upload_time, + latest.new_value, + wd.data_date + from watch_data_stress wd + left join ( + select bind_user_id, data_date, data_value as new_value + from watch_data_stress t1 + where (bind_user_id, data_date, end_time_stamp) in ( + select bind_user_id, data_date, max(end_time_stamp) + from watch_data_stress + group by bind_user_id, data_date + ) + ) latest on wd.bind_user_id = latest.bind_user_id and wd.data_date = latest.data_date + where wd.bind_user_id = #{userId,jdbcType=VARCHAR} + and wd.data_date = #{dataDate,jdbcType=DATE} + group by wd.bind_user_id, wd.data_date, latest.new_value + ) data on stat.user_id = data.bind_user_id and stat.data_date = data.data_date + set stat.max_value = data.max_value, + stat.min_value = data.min_value, + stat.avg_value = data.avg_value, + stat.last_upload_time = data.last_upload_time, + stat.new_value = data.new_value, + stat.org_code = #{orgCode,jdbcType=VARCHAR} where stat.user_id = #{userId,jdbcType=VARCHAR} - and stat.data_date = #{dataDate,jdbcType=DATE}; + and stat.data_date = #{dataDate,jdbcType=DATE}; \ No newline at end of file diff --git a/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDayTempMapper.xml b/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDayTempMapper.xml index 19822cd..faed779 100644 --- a/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDayTempMapper.xml +++ b/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchStatUserInfoDayTempMapper.xml @@ -58,32 +58,44 @@ update watch_stat_user_info_day_temp stat - left join (select bind_user_id, - ifnull(max(data_value), 0) as max_value, - ifnull(min(data_value), 0) as min_value, - ifnull(avg(data_value), 0) as avg_value, - ifnull(max(skin_tempera), 0) as skin_max_value, - ifnull(min(skin_tempera), 0) as skin_min_value, - ifnull(avg(skin_tempera), 0) as skin_avg_value, - ifnull(max(time_stamp), NOW()) as last_upload_time, - ifnull(data_value, 0) as new_value, - ifnull(skin_tempera, 0) as skin_new_value, - data_date - from watch_data_temperature - where bind_user_id = #{userId,jdbcType=VARCHAR} - and data_date = #{dataDate,jdbcType=DATE} - group by bind_user_id, data_date) data on stat.user_id = data.bind_user_id - set stat.max_value = data.max_value, - stat.min_value = data.min_value, - stat.avg_value = data.avg_value, - stat.skin_max_value = data.skin_max_value, - stat.skin_min_value = data.skin_min_value, - stat.skin_avg_value = data.skin_avg_value, - stat.last_upload_time = data.last_upload_time, - stat.new_value = data.new_value, - stat.skin_new_value = data.skin_new_value, - stat.org_code = #{orgCode,jdbcType=VARCHAR} + left join ( + select + wd.bind_user_id, + ifnull(max(wd.data_value), 0) as max_value, + ifnull(min(wd.data_value), 0) as min_value, + ifnull(avg(wd.data_value), 0) as avg_value, + ifnull(max(wd.skin_tempera), 0) as skin_max_value, + ifnull(min(wd.skin_tempera), 0) as skin_min_value, + ifnull(avg(wd.skin_tempera), 0) as skin_avg_value, + ifnull(max(wd.time_stamp), NOW()) as last_upload_time, + latest.new_value, + latest.skin_new_value, + wd.data_date + from watch_data_temperature wd + left join ( + select bind_user_id, data_date, data_value as new_value, skin_tempera as skin_new_value + from watch_data_temperature t1 + where (bind_user_id, data_date, time_stamp) in ( + select bind_user_id, data_date, max(time_stamp) + from watch_data_temperature + group by bind_user_id, data_date + ) + ) latest on wd.bind_user_id = latest.bind_user_id and wd.data_date = latest.data_date + where wd.bind_user_id = #{userId,jdbcType=VARCHAR} + and wd.data_date = #{dataDate,jdbcType=DATE} + group by wd.bind_user_id, wd.data_date, latest.new_value, latest.skin_new_value + ) data on stat.user_id = data.bind_user_id and stat.data_date = data.data_date + set stat.max_value = data.max_value, + stat.min_value = data.min_value, + stat.avg_value = data.avg_value, + stat.skin_max_value = data.skin_max_value, + stat.skin_min_value = data.skin_min_value, + stat.skin_avg_value = data.skin_avg_value, + stat.last_upload_time = data.last_upload_time, + stat.new_value = data.new_value, + stat.skin_new_value = IF(data.skin_new_value IS NULL OR data.skin_new_value = 0, stat.skin_new_value, data.skin_new_value), + stat.org_code = #{orgCode,jdbcType=VARCHAR} where stat.user_id = #{userId,jdbcType=VARCHAR} - and stat.data_date = #{dataDate,jdbcType=DATE}; + and stat.data_date = #{dataDate,jdbcType=DATE};