fix: 캘린더 모달 중복 카드 문제 및 삭제 권한 개선
- monthly_worker_status 조회 시 GROUP BY로 중복 데이터 합산 - 작업보고서 삭제 권한을 그룹장 이상으로 제한 (admin, system, group_leader) - 중복 데이터 정리를 위한 마이그레이션 SQL 추가 (009_fix_duplicate_monthly_status.sql) - synology_deployment 버전에도 동일 수정 적용
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
-- 009_add_overtime_warning_columns.sql
|
||||
-- monthly_summary 테이블에 12시간 초과(확인필요) 상태 컬럼 추가
|
||||
|
||||
-- monthly_summary 테이블에 컬럼 추가
|
||||
ALTER TABLE monthly_summary
|
||||
ADD COLUMN overtime_warning_workers INT DEFAULT 0 COMMENT '확인필요(12시간초과) 작업자 수' AFTER error_workers,
|
||||
ADD COLUMN has_overtime_warning BOOLEAN DEFAULT FALSE COMMENT '확인필요 상태 있음' AFTER has_errors;
|
||||
|
||||
-- UpdateDailySummary 프로시저 업데이트
|
||||
DROP PROCEDURE IF EXISTS UpdateDailySummary;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE UpdateDailySummary(
|
||||
IN p_date DATE
|
||||
)
|
||||
BEGIN
|
||||
DECLARE v_year INT;
|
||||
DECLARE v_month INT;
|
||||
|
||||
SET v_year = YEAR(p_date);
|
||||
SET v_month = MONTH(p_date);
|
||||
|
||||
INSERT INTO monthly_summary (
|
||||
year, month, date,
|
||||
total_workers, working_workers,
|
||||
incomplete_workers, partial_workers, complete_workers,
|
||||
overtime_workers, vacation_workers, error_workers, overtime_warning_workers,
|
||||
total_work_hours, total_work_count, total_error_count,
|
||||
has_issues, has_errors, has_overtime_warning
|
||||
)
|
||||
SELECT
|
||||
v_year, v_month, p_date,
|
||||
COUNT(*) as total_workers,
|
||||
COUNT(CASE WHEN work_status != 'incomplete' THEN 1 END) as working_workers,
|
||||
COUNT(CASE WHEN work_status = 'incomplete' THEN 1 END) as incomplete_workers,
|
||||
COUNT(CASE WHEN work_status = 'partial' THEN 1 END) as partial_workers,
|
||||
COUNT(CASE WHEN work_status IN ('complete', 'overtime', 'vacation-full', 'vacation-half', 'vacation-quarter', 'vacation-half-half') THEN 1 END) as complete_workers,
|
||||
COUNT(CASE WHEN work_status = 'overtime' THEN 1 END) as overtime_workers,
|
||||
COUNT(CASE WHEN work_status LIKE 'vacation%' THEN 1 END) as vacation_workers,
|
||||
COUNT(CASE WHEN work_status = 'error' THEN 1 END) as error_workers,
|
||||
COUNT(CASE WHEN work_status = 'overtime-warning' THEN 1 END) as overtime_warning_workers,
|
||||
SUM(total_work_hours) as total_work_hours,
|
||||
SUM(total_work_count) as total_work_count,
|
||||
SUM(error_work_count) as total_error_count,
|
||||
MAX(has_issues) as has_issues,
|
||||
MAX(has_error) as has_errors,
|
||||
MAX(CASE WHEN work_status = 'overtime-warning' THEN 1 ELSE 0 END) as has_overtime_warning
|
||||
FROM monthly_worker_status
|
||||
WHERE date = p_date
|
||||
ON DUPLICATE KEY UPDATE
|
||||
total_workers = VALUES(total_workers),
|
||||
working_workers = VALUES(working_workers),
|
||||
incomplete_workers = VALUES(incomplete_workers),
|
||||
partial_workers = VALUES(partial_workers),
|
||||
complete_workers = VALUES(complete_workers),
|
||||
overtime_workers = VALUES(overtime_workers),
|
||||
vacation_workers = VALUES(vacation_workers),
|
||||
error_workers = VALUES(error_workers),
|
||||
overtime_warning_workers = VALUES(overtime_warning_workers),
|
||||
total_work_hours = VALUES(total_work_hours),
|
||||
total_work_count = VALUES(total_work_count),
|
||||
total_error_count = VALUES(total_error_count),
|
||||
has_issues = VALUES(has_issues),
|
||||
has_errors = VALUES(has_errors),
|
||||
has_overtime_warning = VALUES(has_overtime_warning),
|
||||
last_updated = CURRENT_TIMESTAMP;
|
||||
END //
|
||||
DELIMITER ;
|
||||
Reference in New Issue
Block a user