修复勤务日榜在线时长:CASE WHEN 实时算 open session 时长;关闭 stale 日志时补算 duration_seconds
This commit is contained in:
@@ -50,7 +50,17 @@ class DutyHallController extends Controller
|
||||
|
||||
// ① 在线时长(position_duty_logs)
|
||||
$dutyQuery = PositionDutyLog::query()
|
||||
->selectRaw('user_id, SUM(duration_seconds) as total_seconds, COUNT(*) as checkin_count');
|
||||
->selectRaw('
|
||||
user_id,
|
||||
SUM(
|
||||
CASE
|
||||
WHEN logout_at IS NULL
|
||||
THEN GREATEST(0, TIMESTAMPDIFF(SECOND, login_at, NOW()))
|
||||
ELSE duration_seconds
|
||||
END
|
||||
) as total_seconds,
|
||||
COUNT(*) as checkin_count
|
||||
');
|
||||
|
||||
// ② 管理操作(position_authority_logs,排除任命/撤销等人事操作)
|
||||
$authQuery = PositionAuthorityLog::query()
|
||||
|
||||
Reference in New Issue
Block a user