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})")
|
@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);
|
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);
|
WatchDataDTO getDataSteps(@Param("id") String id);
|
||||||
|
|
||||||
@Select("SELECT SUM(data_value) AS totalValue FROM QH_WAT_DATA_DISTANCE WHERE bind_user_id = #{id}")
|
@Select("SELECT SUM(data_value) AS totalValue FROM QH_WAT_DATA_DISTANCE WHERE bind_user_id = #{id}")
|
||||||
|
|||||||
+22
-18
@@ -233,29 +233,33 @@
|
|||||||
insert into QH_WAT_DATA (id, userid, username, orgcode, watch_no, type, data_value, last_update_time)
|
insert into QH_WAT_DATA (id, userid, username, orgcode, watch_no, type, data_value, last_update_time)
|
||||||
(select #{id,jdbcType=VARCHAR}, bind_user_id,
|
(select #{id,jdbcType=VARCHAR}, bind_user_id,
|
||||||
#{username,jdbcType=VARCHAR}, #{orgcode,jdbcType=VARCHAR}, #{watchNo,jdbcType=VARCHAR}, 4,
|
#{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 QH_WAT_DATA_SLEEP_NEW s
|
from (select s.bind_user_id, s.watch_no, s.data_date,
|
||||||
left join QH_WAT_DATA_SLEEP_NEW_MIN sm on s.id = sm.sleep_id
|
SUM(TIMESTAMPDIFF(MINUTE, sm.start_time, sm.end_time)) as total_minutes,
|
||||||
where s.bind_user_id = #{userid,jdbcType=VARCHAR}
|
ROW_NUMBER() OVER (PARTITION BY s.bind_user_id, s.watch_no ORDER BY s.data_date desc) as rn
|
||||||
and s.watch_no = #{watchNo,jdbcType=VARCHAR}
|
from QH_WAT_DATA_SLEEP_NEW s
|
||||||
and s.sleep_flag = '1'
|
left join QH_WAT_DATA_SLEEP_NEW_MIN sm on s.id = sm.sleep_id
|
||||||
group by s.bind_user_id, s.watch_no, s.data_date
|
where s.bind_user_id = #{userid,jdbcType=VARCHAR}
|
||||||
order by data_date desc
|
and s.watch_no = #{watchNo,jdbcType=VARCHAR}
|
||||||
FETCH FIRST 1 ROWS ONLY);
|
and s.sleep_flag = '1'
|
||||||
|
group by s.bind_user_id, s.watch_no, s.data_date)
|
||||||
|
where rn = 1);
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
<update id="updateSleep">
|
<update id="updateSleep">
|
||||||
update QH_WAT_DATA wd
|
update QH_WAT_DATA wd
|
||||||
set wd.orgcode = #{orgcode,jdbcType=VARCHAR},
|
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 QH_WAT_DATA_SLEEP_NEW s
|
from (select s.bind_user_id, s.watch_no, s.data_date,
|
||||||
left join QH_WAT_DATA_SLEEP_NEW_MIN sm on s.id = sm.sleep_id
|
SUM(TIMESTAMPDIFF(MINUTE, sm.start_time, sm.end_time)) as total_minutes,
|
||||||
where s.bind_user_id = #{userid,jdbcType=VARCHAR}
|
ROW_NUMBER() OVER (PARTITION BY s.bind_user_id, s.watch_no ORDER BY s.data_date desc) as rn
|
||||||
and s.watch_no = #{watchNo,jdbcType=VARCHAR}
|
from QH_WAT_DATA_SLEEP_NEW s
|
||||||
and s.sleep_flag = '1'
|
left join QH_WAT_DATA_SLEEP_NEW_MIN sm on s.id = sm.sleep_id
|
||||||
group by s.bind_user_id, s.watch_no, s.data_date
|
where s.bind_user_id = #{userid,jdbcType=VARCHAR}
|
||||||
order by data_date desc
|
and s.watch_no = #{watchNo,jdbcType=VARCHAR}
|
||||||
FETCH FIRST 1 ROWS ONLY),
|
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 (
|
wd.last_update_time = (select data_date from (
|
||||||
select data_date
|
select data_date
|
||||||
from QH_WAT_DATA_SLEEP_NEW
|
from QH_WAT_DATA_SLEEP_NEW
|
||||||
|
|||||||
+4
-12
@@ -20,9 +20,7 @@
|
|||||||
ELSE 0
|
ELSE 0
|
||||||
END
|
END
|
||||||
) AS sugarCalories,
|
) AS sugarCalories,
|
||||||
SUM(NVL(EXTRACT(SECOND FROM (end_time_stamp - start_time_stamp)) +
|
SUM(NVL(TIMESTAMPDIFF(SECOND, start_time_stamp, end_time_stamp), 0)) as "totalTime"
|
||||||
EXTRACT(MINUTE FROM (end_time_stamp - start_time_stamp)) * 60 +
|
|
||||||
EXTRACT(HOUR FROM (end_time_stamp - start_time_stamp)) * 3600, 0)) as "totalTime"
|
|
||||||
FROM
|
FROM
|
||||||
QH_WAT_DATA_WORKOUT
|
QH_WAT_DATA_WORKOUT
|
||||||
WHERE
|
WHERE
|
||||||
@@ -88,9 +86,7 @@
|
|||||||
ELSE 0
|
ELSE 0
|
||||||
END
|
END
|
||||||
AS sugarCalories,
|
AS sugarCalories,
|
||||||
NVL(EXTRACT(SECOND FROM (end_time_stamp - start_time_stamp)) +
|
NVL(TIMESTAMPDIFF(SECOND, start_time_stamp, end_time_stamp), 0) as "totalTime"
|
||||||
EXTRACT(MINUTE FROM (end_time_stamp - start_time_stamp)) * 60 +
|
|
||||||
EXTRACT(HOUR FROM (end_time_stamp - start_time_stamp)) * 3600, 0) as "totalTime"
|
|
||||||
from
|
from
|
||||||
QH_WAT_DATA_WORKOUT
|
QH_WAT_DATA_WORKOUT
|
||||||
WHERE
|
WHERE
|
||||||
@@ -104,9 +100,7 @@
|
|||||||
<select id="selectselectSportTimingTotal" resultType="com.renkang.watch.entity.WatchDataWorkout">
|
<select id="selectselectSportTimingTotal" resultType="com.renkang.watch.entity.WatchDataWorkout">
|
||||||
select
|
select
|
||||||
NVL(SUM(calorie),0) as "calorie",
|
NVL(SUM(calorie),0) as "calorie",
|
||||||
NVL(SUM(EXTRACT(SECOND FROM (end_time_stamp - start_time_stamp)) +
|
NVL(SUM(TIMESTAMPDIFF(SECOND, start_time_stamp, end_time_stamp)),0) as "totalTime"
|
||||||
EXTRACT(MINUTE FROM (end_time_stamp - start_time_stamp)) * 60 +
|
|
||||||
EXTRACT(HOUR FROM (end_time_stamp - start_time_stamp)) * 3600),0) as "totalTime"
|
|
||||||
from
|
from
|
||||||
QH_WAT_DATA_WORKOUT
|
QH_WAT_DATA_WORKOUT
|
||||||
WHERE
|
WHERE
|
||||||
@@ -245,9 +239,7 @@
|
|||||||
<select id="selectselectSportTimingTotalNew" resultType="com.renkang.watch.entity.WatchDataWorkout">
|
<select id="selectselectSportTimingTotalNew" resultType="com.renkang.watch.entity.WatchDataWorkout">
|
||||||
select
|
select
|
||||||
NVL(SUM(calorie),0) as "calorie",
|
NVL(SUM(calorie),0) as "calorie",
|
||||||
NVL(SUM(EXTRACT(SECOND FROM (end_time_stamp - start_time_stamp)) +
|
NVL(SUM(TIMESTAMPDIFF(SECOND, start_time_stamp, end_time_stamp)),0) as "totalTime",
|
||||||
EXTRACT(MINUTE FROM (end_time_stamp - start_time_stamp)) * 60 +
|
|
||||||
EXTRACT(HOUR FROM (end_time_stamp - start_time_stamp)) * 3600),0) as "totalTime",
|
|
||||||
MIN(start_time_stamp) AS "dataDate"
|
MIN(start_time_stamp) AS "dataDate"
|
||||||
from
|
from
|
||||||
QH_WAT_DATA_WORKOUT
|
QH_WAT_DATA_WORKOUT
|
||||||
|
|||||||
+1
-1
@@ -438,7 +438,7 @@
|
|||||||
COALESCE(steps.step_value, 0) AS stepValue,
|
COALESCE(steps.step_value, 0) AS stepValue,
|
||||||
COALESCE(steps.last_upload_time, NULL) AS stepTime,
|
COALESCE(steps.last_upload_time, NULL) AS stepTime,
|
||||||
COALESCE(workout.start_time_stamp, NULL) AS durationTime,
|
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,
|
workout.workout_type AS workoutType,
|
||||||
|
|
||||||
COALESCE(hr.errorNum, 0) AS rateAbnormalValue,
|
COALESCE(hr.errorNum, 0) AS rateAbnormalValue,
|
||||||
|
|||||||
Reference in New Issue
Block a user