diff --git a/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/WatchMapper.java b/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/WatchMapper.java index 88b4105..9529b9d 100644 --- a/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/WatchMapper.java +++ b/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/WatchMapper.java @@ -33,7 +33,7 @@ public interface WatchMapper { @Select("SELECT AVG(ROUND((CAST(d.wake_up_time AS DATE) - CAST(d.fall_asleep_time AS DATE)) * 24 * 60)) AS aveMinute FROM QH_WAT_DATA_SLEEP_NEW_DAY d LEFT JOIN QH_WAT_DATA_SLEEP_NEW n ON d.sleep_id = n.id WHERE n.id IN (SELECT id FROM QH_WAT_DATA_SLEEP_NEW WHERE bind_user_id = #{id})") Double getAverageSleep(@Param("id") String id); - @Select("SELECT MAX(data_value) AS dataValue, data_date AS dataDate FROM QH_WAT_DATA_STEPS WHERE bind_user_id = #{id} ORDER BY data_date DESC FETCH FIRST 1 ROWS ONLY") + @Select("SELECT data_value AS dataValue, data_date AS dataDate FROM QH_WAT_DATA_STEPS WHERE bind_user_id = #{id} ORDER BY data_date DESC FETCH FIRST 1 ROWS ONLY") WatchDataDTO getDataSteps(@Param("id") String id); @Select("SELECT SUM(data_value) AS totalValue FROM QH_WAT_DATA_DISTANCE WHERE bind_user_id = #{id}") diff --git a/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchDataMapper.xml b/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchDataMapper.xml index c7c9aaf..eaeb245 100644 --- a/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchDataMapper.xml +++ b/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchDataMapper.xml @@ -233,29 +233,33 @@ insert into QH_WAT_DATA (id, userid, username, orgcode, watch_no, type, data_value, last_update_time) (select #{id,jdbcType=VARCHAR}, bind_user_id, #{username,jdbcType=VARCHAR}, #{orgcode,jdbcType=VARCHAR}, #{watchNo,jdbcType=VARCHAR}, 4, - NVL(SUM(EXTRACT(HOUR FROM (sm.end_time - sm.start_time)) * 60 + EXTRACT(MINUTE FROM (sm.end_time - sm.start_time))), 0) as deep_light_times, data_date - from QH_WAT_DATA_SLEEP_NEW s - left join QH_WAT_DATA_SLEEP_NEW_MIN sm on s.id = sm.sleep_id - where s.bind_user_id = #{userid,jdbcType=VARCHAR} - and s.watch_no = #{watchNo,jdbcType=VARCHAR} - and s.sleep_flag = '1' - group by s.bind_user_id, s.watch_no, s.data_date - order by data_date desc - FETCH FIRST 1 ROWS ONLY); + NVL(total_minutes, 0), data_date + from (select s.bind_user_id, s.watch_no, s.data_date, + SUM(TIMESTAMPDIFF(MINUTE, sm.start_time, sm.end_time)) as total_minutes, + ROW_NUMBER() OVER (PARTITION BY s.bind_user_id, s.watch_no ORDER BY s.data_date desc) as rn + from QH_WAT_DATA_SLEEP_NEW s + left join QH_WAT_DATA_SLEEP_NEW_MIN sm on s.id = sm.sleep_id + where s.bind_user_id = #{userid,jdbcType=VARCHAR} + and s.watch_no = #{watchNo,jdbcType=VARCHAR} + and s.sleep_flag = '1' + group by s.bind_user_id, s.watch_no, s.data_date) + where rn = 1); update QH_WAT_DATA wd set wd.orgcode = #{orgcode,jdbcType=VARCHAR}, - wd.data_value = (select NVL(SUM(EXTRACT(HOUR FROM (sm.end_time - sm.start_time)) * 60 + EXTRACT(MINUTE FROM (sm.end_time - sm.start_time))), 0) - from QH_WAT_DATA_SLEEP_NEW s - left join QH_WAT_DATA_SLEEP_NEW_MIN sm on s.id = sm.sleep_id - where s.bind_user_id = #{userid,jdbcType=VARCHAR} - and s.watch_no = #{watchNo,jdbcType=VARCHAR} - and s.sleep_flag = '1' - group by s.bind_user_id, s.watch_no, s.data_date - order by data_date desc - FETCH FIRST 1 ROWS ONLY), + wd.data_value = (select NVL(total_minutes, 0) + from (select s.bind_user_id, s.watch_no, s.data_date, + SUM(TIMESTAMPDIFF(MINUTE, sm.start_time, sm.end_time)) as total_minutes, + ROW_NUMBER() OVER (PARTITION BY s.bind_user_id, s.watch_no ORDER BY s.data_date desc) as rn + from QH_WAT_DATA_SLEEP_NEW s + left join QH_WAT_DATA_SLEEP_NEW_MIN sm on s.id = sm.sleep_id + where s.bind_user_id = #{userid,jdbcType=VARCHAR} + and s.watch_no = #{watchNo,jdbcType=VARCHAR} + and s.sleep_flag = '1' + group by s.bind_user_id, s.watch_no, s.data_date) + where rn = 1), wd.last_update_time = (select data_date from ( select data_date from QH_WAT_DATA_SLEEP_NEW diff --git a/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchDataWorkoutMapper.xml b/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchDataWorkoutMapper.xml index e4b2fdf..f703e95 100644 --- a/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchDataWorkoutMapper.xml +++ b/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchDataWorkoutMapper.xml @@ -20,9 +20,7 @@ ELSE 0 END ) AS sugarCalories, - SUM(NVL(EXTRACT(SECOND FROM (end_time_stamp - start_time_stamp)) + - EXTRACT(MINUTE FROM (end_time_stamp - start_time_stamp)) * 60 + - EXTRACT(HOUR FROM (end_time_stamp - start_time_stamp)) * 3600, 0)) as "totalTime" + SUM(NVL(TIMESTAMPDIFF(SECOND, start_time_stamp, end_time_stamp), 0)) as "totalTime" FROM QH_WAT_DATA_WORKOUT WHERE @@ -88,9 +86,7 @@ ELSE 0 END AS sugarCalories, - NVL(EXTRACT(SECOND FROM (end_time_stamp - start_time_stamp)) + - EXTRACT(MINUTE FROM (end_time_stamp - start_time_stamp)) * 60 + - EXTRACT(HOUR FROM (end_time_stamp - start_time_stamp)) * 3600, 0) as "totalTime" + NVL(TIMESTAMPDIFF(SECOND, start_time_stamp, end_time_stamp), 0) as "totalTime" from QH_WAT_DATA_WORKOUT WHERE @@ -104,9 +100,7 @@ select NVL(SUM(calorie),0) as "calorie", - NVL(SUM(EXTRACT(SECOND FROM (end_time_stamp - start_time_stamp)) + - EXTRACT(MINUTE FROM (end_time_stamp - start_time_stamp)) * 60 + - EXTRACT(HOUR FROM (end_time_stamp - start_time_stamp)) * 3600),0) as "totalTime", + NVL(SUM(TIMESTAMPDIFF(SECOND, start_time_stamp, end_time_stamp)),0) as "totalTime", MIN(start_time_stamp) AS "dataDate" from QH_WAT_DATA_WORKOUT diff --git a/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchDeviceMapper.xml b/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchDeviceMapper.xml index 6d260ad..872ab9d 100644 --- a/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchDeviceMapper.xml +++ b/health-watch/health-watch-biz/src/main/java/com/renkang/watch/mapper/xml/WatchDeviceMapper.xml @@ -438,7 +438,7 @@ COALESCE(steps.step_value, 0) AS stepValue, COALESCE(steps.last_upload_time, NULL) AS stepTime, COALESCE(workout.start_time_stamp, NULL) AS durationTime, - COALESCE(EXTRACT(MINUTE FROM (workout.end_time_stamp - workout.start_time_stamp)),0) AS durationTotalValue, + COALESCE(TIMESTAMPDIFF(SECOND, workout.start_time_stamp, workout.end_time_stamp),0) AS durationTotalValue, workout.workout_type AS workoutType, COALESCE(hr.errorNum, 0) AS rateAbnormalValue,