INSERT INTO hrm_attendance (emp_id, work_date, check_in_time, status) VALUES (#{empId}, #{workDate}, #{checkInTime}, 'PRESENT') ON CONFLICT (emp_id, work_date) DO UPDATE SET check_in_time=#{checkInTime} UPDATE hrm_attendance SET check_out_time=#{checkOutTime}, work_minutes=EXTRACT(EPOCH FROM (#{checkOutTime}::timestamp - check_in_time))/60 WHERE emp_id=#{empId} AND work_date=#{workDate} INSERT INTO hrm_leaves (emp_id, leave_type_id, start_date, end_date, days, reason, status, created_by) VALUES (#{empId}, #{leaveTypeId}, #{startDate}, #{endDate}, #{days}, #{reason}, #{status}, #{createdBy}) UPDATE hrm_leaves SET status=#{status}, approved_by=#{approvedBy}, updated_at=NOW() WHERE id=#{id} INSERT INTO hrm_leave_types (type_code, type_name, is_paid, max_days) VALUES (#{typeCode}, #{typeName}, #{isPaid}, #{maxDays}) INSERT INTO hrm_overtime (emp_id, ot_date, start_time, end_time, ot_minutes, reason, created_by) VALUES (#{empId}, #{otDate}, #{startTime}, #{endTime}, #{otMinutes}, #{reason}, #{createdBy})