Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
160 changes: 78 additions & 82 deletions app/src/main/resources/data.sql
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,6 @@ VALUES (1, 'test1@ajou.ac.kr', '망고보스', null, '010-1234-5678', '11111111'
(6, 'test6@ajou.ac.kr', '정알바', null, '010-7712-2367', '66666666', '1997-09-01',
'http://k.kakaocdn.net/dn/bD4Rih/btsNXAxY4w1/XuxLt8jAsnIA5ZaHVjkE0k/img_110x110.jpg',
'STAFF', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(999, 'test999@ajou.ac.kr', '이관수', null, '010-1231-2231', '999', '1990-06-09',
'http://k.kakaocdn.net/dn/bD4Rih/btsNXAxY4w1/XuxLt8jAsnIA5ZaHVjkE0k/img_110x110.jpg',
'ADMIN', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);

INSERT INTO store (store_id, boss_id, name, address, business_number, store_type, invite_code,
attendance_method, gps_range_meters, gps_latitude, gps_longitude, qr_code, overtime_limit,
Expand All @@ -29,17 +26,15 @@ VALUES (1, 1, '망고쥬스', '경기도 수원시 영통구 월드컵로 206',
'123456ABCDEF', 30, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(2, 1, '망고코코넛', '경기 수원시 팔달구 아주로 37', '1248210324', 'CAFE', '3A4C78', 'QR', 15, 37.2822024, 127.0463244,
'JUADEFSE2392', 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(3, 1, '스몰하노이', '경기도 고양시 일산서구 성저로 92', '1953100092', 'RESTAURANT', 'BJJ38L', 'QR', 15, 37.685024, 126.757285,
'KOP22WT78JUC', 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);

INSERT INTO transfer_account (transfer_id, bank_code, account_number, account_holder, fin_account,
created_at, modified_at)
VALUES (1, 'NH', '3020000012816', '망고보스', '00820100029430000000000027417', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);

INSERT INTO payroll_setting (payroll_setting_id, auto_transfer_enabled, deduction_unit, commuting_allowance,
transfer_date, transfer_account_id, store_id)
VALUES (1, true, 10, 3000, 20, 1, 1),
VALUES (1, false, 10, 3000, 20, 1, 1),
(2, false, 10, 0, null, null, 2),
(3, false, 10, 0, null, null, 3);

INSERT INTO required_document (store_id, document_type, is_required, created_at, modified_at)
VALUES (1, 'RESIDENT_REGISTRATION', false, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
Expand All @@ -50,10 +45,6 @@ VALUES (1, 'RESIDENT_REGISTRATION', false, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
(2, 'BANK_ACCOUNT', false, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(2, 'ID_CARD', false, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(2, 'HEALTH_CERTIFICATE', false, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(3, 'RESIDENT_REGISTRATION', false, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(3, 'BANK_ACCOUNT', false, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(3, 'ID_CARD', false, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(3, 'HEALTH_CERTIFICATE', false, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);

INSERT INTO staff (staff_id, user_id, store_id, name, profile_image_url, withholding_type,
hourly_wage, bank_code, account_number,
Expand All @@ -67,80 +58,85 @@ VALUES (1, 2, 1, '망알바',
(3, 4, 1, '보알바',
'https://mblogthumb-phinf.pstatic.net/MjAyMDAyMTBfODAg/MDAxNTgxMzA0MTE3ODMy.ACRLtB9v5NH-I2qjWrwiXLb7TeUiG442cJmcdzVum7cg.eTLpNg_n0rAS5sWOsofRrvBy0qZk_QcWSfUiIagTfd8g.JPEG.lattepain/1581304118739.jpg?type=w800',
'NONE', 10030, 'NH', '3020000013132', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(4, 5, 1, '스알바',
(4, 5, 2, '스알바',
'https://mblogthumb-phinf.pstatic.net/MjAyMDAyMTBfODAg/MDAxNTgxMzA0MTE3ODMy.ACRLtB9v5NH-I2qjWrwiXLb7TeUiG442cJmcdzVum7cg.eTLpNg_n0rAS5sWOsofRrvBy0qZk_QcWSfUiIagTfd8g.JPEG.lattepain/1581304118739.jpg?type=w800',
'SOCIAL_INSURANCE', 10030, 'NH', '3020000013095', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(5, 6, 1, '정알바',
(5, 6, 2, '정알바',
'http://k.kakaocdn.net/dn/bD4Rih/btsNXAxY4w1/XuxLt8jAsnIA5ZaHVjkE0k/img_110x110.jpg',
'INCOME_TAX', 10030, 'NH', '3020000013094', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);

INSERT INTO schedule (schedule_id, staff_id, regular_group_id, work_date, start_time, end_time, store_id,
substitution_state,
created_at, modified_at)
VALUES (1, 1, null, '2025-04-01', '2025-04-01 09:00:00', '2025-04-01 15:30:00', 1, 'NONE', CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP),
(2, 2, null, '2025-05-01', '2025-05-01 13:00:00', '2025-05-01 18:00:00', 1, 'NONE', CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP),
(3, 1, null, '2025-05-03', '2025-05-03 10:00:00', '2025-05-03 18:00:00', 1, 'NONE', CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP),
(4, 2, null, '2025-05-03', '2025-05-03 10:00:00', '2025-05-03 18:00:00', 1, 'NONE', CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP),
(5, 1, null, '2025-05-05', '2025-05-05 09:00:00', '2025-05-05 14:30:00', 1, 'NONE', CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP),
(6, 3, null, '2025-05-07', '2025-05-07 10:00:00', '2025-05-07 14:00:00', 1, 'NONE', CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP),
(7, 1, null, '2025-05-08', '2025-05-08 09:00:00', '2025-05-08 14:00:00', 1, 'NONE', CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP),
(8, 4, null, '2025-05-10', '2025-05-10 10:00:00', '2025-05-10 14:00:00', 1, 'NONE', CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP),
(9, 1, null, '2025-05-10', '2025-05-10 10:00:00', '2025-05-10 14:00:00', 1, 'NONE', CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP),
(10, 1, null, '2025-04-01', '2025-04-01 09:00:00', '2025-04-01 15:00:00', 1, 'NONE', CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP),
(11, 2, null, '2025-04-02', '2025-04-02 10:00:00', '2025-04-02 16:00:00', 1, 'NONE', CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP),
(12, 3, null, '2025-04-03', '2025-04-03 13:00:00', '2025-04-03 17:00:00', 1, 'NONE', CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP),
(13, 4, null, '2025-04-04', '2025-04-04 14:00:00', '2025-04-04 18:00:00', 1, 'NONE', CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP),
(14, 5, null, '2025-04-05', '2025-04-05 09:00:00', '2025-04-05 13:00:00', 1, 'NONE', CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP),
(15, 1, null, '2025-04-06', '2025-04-06 11:00:00', '2025-04-06 17:00:00', 1, 'NONE', CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP),
(16, 2, null, '2025-04-07', '2025-04-07 08:30:00', '2025-04-07 14:30:00', 1, 'NONE', CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP),
(17, 1, null, '2025-06-20', '2025-06-20 11:00:00', '2025-06-20 13:30:00', 1, 'NONE', CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP);
INSERT INTO schedule (schedule_id, staff_id, regular_group_id, work_date, start_time, end_time, store_id, substitution_state, created_at, modified_at)
VALUES
(1, 1, null, '2025-04-01', '2025-04-01 09:00:00', '2025-04-01 15:30:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(2, 2, null, '2025-04-01', '2025-04-01 09:00:00', '2025-04-01 15:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(3, 2, null, '2025-04-02', '2025-04-02 10:00:00', '2025-04-02 16:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(4, 3, null, '2025-04-03', '2025-04-03 13:00:00', '2025-04-03 17:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(5, 1, null, '2025-04-06', '2025-04-06 11:00:00', '2025-04-06 17:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(6, 2, null, '2025-04-07', '2025-04-07 08:30:00', '2025-04-07 14:30:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(7, 2, null, '2025-05-01', '2025-05-01 13:00:00', '2025-05-01 18:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(8, 1, null, '2025-05-03', '2025-05-03 10:00:00', '2025-05-03 18:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(10, 1, null, '2025-05-05', '2025-05-05 09:00:00', '2025-05-05 14:30:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(11, 3, null, '2025-05-06', '2025-05-06 09:00:00', '2025-05-06 14:30:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(12, 2, null, '2025-05-07', '2025-05-07 10:30:00', '2025-05-07 15:30:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(13, 3, null, '2025-05-07', '2025-05-07 10:00:00', '2025-05-07 14:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(14, 1, null, '2025-05-08', '2025-05-08 09:00:00', '2025-05-08 14:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(15, 3, null, '2025-05-08', '2025-05-08 13:00:00', '2025-05-08 19:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(16, 1, null, '2025-05-09', '2025-05-09 12:00:00', '2025-05-09 18:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(17, 2, null, '2025-05-10', '2025-05-10 08:00:00', '2025-05-10 13:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(18, 1, null, '2025-05-10', '2025-05-10 10:00:00', '2025-05-10 14:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(19, 3, null, '2025-05-11', '2025-05-11 09:30:00', '2025-05-11 15:30:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(20, 1, null, '2025-05-12', '2025-05-12 08:30:00', '2025-05-12 14:30:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(21, 2, null, '2025-05-13', '2025-05-13 11:30:00', '2025-05-13 19:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(22, 2, null, '2025-05-14', '2025-05-14 09:30:00', '2025-05-14 17:30:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(23, 2, null, '2025-05-15', '2025-05-15 08:00:00', '2025-05-15 16:30:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(24, 2, null, '2025-05-16', '2025-05-16 10:00:00', '2025-05-16 15:30:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(25, 3, null, '2025-05-17', '2025-05-17 08:30:00', '2025-05-17 15:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(28, 3, null, '2025-05-20', '2025-05-20 08:30:00', '2025-05-20 15:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(29, 3, null, '2025-05-21', '2025-05-21 08:30:00', '2025-05-21 16:30:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(30, 1, null, '2025-05-22', '2025-05-22 09:30:00', '2025-05-22 17:30:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(31, 1, null, '2025-05-23', '2025-05-23 08:00:00', '2025-05-23 14:30:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(32, 3, null, '2025-05-24', '2025-05-24 08:00:00', '2025-05-24 15:30:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(33, 2, null, '2025-05-25', '2025-05-25 09:30:00', '2025-05-25 16:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(34, 1, null, '2025-05-26', '2025-05-26 08:00:00', '2025-05-26 15:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(35, 2, null, '2025-05-27', '2025-05-27 10:00:00', '2025-05-27 18:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(37, 2, null, '2025-05-29', '2025-05-29 10:00:00', '2025-05-29 15:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(38, 2, null, '2025-05-30', '2025-05-30 08:00:00', '2025-05-30 14:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(39, 3, null, '2025-05-31', '2025-05-31 09:00:00', '2025-05-31 17:00:00', 1, 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);

INSERT INTO attendance(attendance_id, schedule_id, clock_in_time, clock_out_time, clock_in_status, clock_out_status,
attendance_state,
created_at, modified_at)
VALUES (1, 1, '2025-04-01 09:00:00', '2025-04-01 15:30:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP),
(2, 2, '2025-05-01 13:00:00', '2025-05-01 18:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP),
(3, 3, '2025-05-03 10:05:00', '2025-05-03 18:00:00', 'LATE', 'NORMAL', 'NONE', CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP),
(4, 4, null, null, 'ABSENT', 'ABSENT', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(5, 5, '2025-05-05 09:00:00', '2025-05-05 14:30:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP),
(6, 6, '2025-05-07 10:00:00', '2025-05-07 13:00:00', 'NORMAL', 'EARLY_LEAVE', 'NONE', CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP),
(7, 7, '2025-05-08 09:00:00', '2025-05-08 14:20:00', 'NORMAL', 'OVERTIME', 'NONE', CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP),
(8, 8, null, null, 'ABSENT', 'ABSENT', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(9, 9, null, null, 'ABSENT', 'ABSENT', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(10, 10, '2025-04-01 09:00:00', '2025-04-01 15:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP),
(11, 11, '2025-04-02 10:00:00', '2025-04-02 16:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP),
(12, 12, '2025-04-03 13:00:00', '2025-04-03 17:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP),
(13, 13, '2025-04-04 14:00:00', '2025-04-04 18:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP),
(14, 14, '2025-04-05 09:00:00', '2025-04-05 13:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP),
(15, 15, '2025-04-06 11:00:00', '2025-04-06 17:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP),
(16, 16, '2025-04-07 08:30:00', '2025-04-07 14:30:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP);
INSERT INTO attendance (attendance_id, schedule_id, clock_in_time, clock_out_time, clock_in_status, clock_out_status, attendance_state, created_at, modified_at)
VALUES
(1, 1, '2025-04-01 09:00:00', '2025-04-01 15:30:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(2, 2, '2025-04-01 09:00:00', '2025-04-01 15:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(3, 3, '2025-04-02 10:00:00', '2025-04-02 16:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(4, 4, '2025-04-03 13:05:00', '2025-04-03 16:30:00', 'LATE', 'EARLY_LEAVE', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(5, 5, null, null, 'ABSENT', 'ABSENT', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(6, 6, '2025-04-07 08:30:00', '2025-04-07 14:30:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(7, 7, '2025-05-01 13:00:00', '2025-05-01 18:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(8, 8, '2025-05-03 10:05:00', '2025-05-03 18:00:00', 'LATE', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(9, 10, '2025-05-05 09:00:00', '2025-05-05 14:30:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(10, 11, '2025-05-06 09:05:00', '2025-05-06 14:25:00', 'LATE', 'EARLY_LEAVE', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(11, 12, '2025-05-07 10:30:00', '2025-05-07 15:30:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(12, 13, null, null, 'ABSENT', 'ABSENT', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(13, 14, '2025-05-08 09:00:00', '2025-05-08 14:10:00', 'NORMAL', 'OVERTIME', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(14, 15, '2025-05-08 13:00:00', '2025-05-08 19:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(15, 16, '2025-05-09 12:05:00', '2025-05-09 18:00:00', 'LATE', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(16, 17, '2025-05-10 08:00:00', '2025-05-10 13:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(17, 18, null, null, 'ABSENT', 'ABSENT', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(18, 19, '2025-05-11 09:30:00', '2025-05-11 15:30:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(19, 20, '2025-05-12 08:40:00', '2025-05-12 14:20:00', 'LATE', 'EARLY_LEAVE', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(20, 21, '2025-05-13 11:30:00', '2025-05-13 19:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(21, 22, null, null, 'ABSENT', 'ABSENT', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(22, 23, '2025-05-15 08:00:00', '2025-05-15 16:30:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(23, 24, '2025-05-16 10:00:00', '2025-05-16 15:20:00', 'NORMAL', 'EARLY_LEAVE', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(24, 25, '2025-05-17 08:35:00', '2025-05-17 15:00:00', 'LATE', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(25, 28, '2025-05-20 08:30:00', '2025-05-20 15:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(26, 29, null, null, 'ABSENT', 'ABSENT', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(27, 30, '2025-05-22 09:30:00', '2025-05-22 17:30:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(28, 31, '2025-05-23 08:10:00', '2025-05-23 14:30:00', 'LATE', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(29, 32, '2025-05-24 08:00:00', '2025-05-24 15:30:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(30, 33, '2025-05-25 09:35:00', '2025-05-25 16:00:00', 'LATE', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(31, 34, '2025-05-26 08:00:00', '2025-05-26 15:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(32, 35, null, null, 'ABSENT', 'ABSENT', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(33, 37, '2025-05-29 10:05:00', '2025-05-29 15:10:00', 'LATE', 'OVERTIME', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(34, 38, '2025-05-30 08:00:00', '2025-05-30 14:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(35, 39, '2025-05-31 09:00:00', '2025-05-31 17:00:00', 'NORMAL', 'NORMAL', 'NONE', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,16 @@ public class AutoClockOutService {

@Transactional
public void autoClockOut() {
List<ScheduleForNotificationProjection> schedules = scheduleRepository.findAllSchedulesWithoutClockOut();
List<AttendanceEntity> attendances = schedules.stream().map(projection -> {
List<ScheduleForNotificationProjection> projections = scheduleRepository.findAllSchedulesWithoutClockOut();
List<AttendanceEntity> attendances = projections.stream().map(projection -> {
ScheduleEntity schedule = projection.getSchedule();
if (schedule.getAttendance() == null) {
return recordAbsentAttendance(schedule);
}
return recordNormalClockOutAttendance(schedule.getAttendance(), schedule.getEndTime());
}).toList();
attendanceRepository.saveAll(attendances);
notifyAbsentClockOut(projections);
}

private AttendanceEntity recordAbsentAttendance(final ScheduleEntity schedule) {
Expand Down