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};