fix(watch): 修复DM8不兼容的EXTRACT时间差计算
- WatchDataMapper.xml: insertSleep/updateSleep 替换 EXTRACT(H/M FROM interval) 为 TIMESTAMPDIFF - WatchDataWorkoutMapper.xml: 4处运动时长计算替换为 TIMESTAMPDIFF(SECOND, ...) - WatchDeviceMapper.xml: 设备看板运动时长字段替换为 TIMESTAMPDIFF - WatchMapper.java: getDataSteps 去掉 MAX 聚合避免 GROUP BY 报错
This commit is contained in:
+1
-1
@@ -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}")
|
||||
|
||||
+12
-8
@@ -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
|
||||
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
|
||||
order by data_date desc
|
||||
FETCH FIRST 1 ROWS ONLY);
|
||||
group by s.bind_user_id, s.watch_no, s.data_date)
|
||||
where rn = 1);
|
||||
</insert>
|
||||
|
||||
<update id="updateSleep">
|
||||
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)
|
||||
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
|
||||
order by data_date desc
|
||||
FETCH FIRST 1 ROWS ONLY),
|
||||
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
|
||||
|
||||
+4
-12
@@ -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 id="selectselectSportTimingTotal" resultType="com.renkang.watch.entity.WatchDataWorkout">
|
||||
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"
|
||||
from
|
||||
QH_WAT_DATA_WORKOUT
|
||||
WHERE
|
||||
@@ -245,9 +239,7 @@
|
||||
<select id="selectselectSportTimingTotalNew" resultType="com.renkang.watch.entity.WatchDataWorkout">
|
||||
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
|
||||
|
||||
+1
-1
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user