แก้ไขหลายอย่าง

This commit is contained in:
nakorn
2022-03-21 17:19:56 +07:00
parent 9774fb0a9c
commit ba57633ab8
4 changed files with 27 additions and 26 deletions

View File

@@ -313,15 +313,15 @@ and u.id=@user_id;
{
var sql = string.Format(@"
select {0}b{0}.{0}employee_id{0}, (
SELECT SUM(tad_general.total_dayoff) FROM tad_general_leaves as tad_general
SELECT SUM((select count(d::date) as d from generate_series(case when start_date<@start_date then @start_date else start_date end,case when end_date>@end_date then @end_date else end_date end, '1 day'::interval) d where extract('dow' from d) not in (0, 6))) FROM tad_general_leaves as tad_general
LEFT JOIN tad_leave_types as leave_type ON tad_general.leave_type_id = CAST(leave_type.id as varchar)
WHERE tad_general.deleted_at is null
AND leave_type.deleted_at is null
AND leave_type.id = 2
AND tad_general.employee_id = b.employee_id
AND tad_general.status = '3'
AND tad_general.start_date >= @start_date
AND tad_general.end_date <= @end_date
AND ((tad_general.start_date between @start_date and @end_date)
or (tad_general.end_date between @start_date and @end_date))
) as sum_day_sick_leave, (
SELECT COUNT(tad_general.*) FROM tad_general_leaves as tad_general
LEFT JOIN tad_leave_types as leave_type ON tad_general.leave_type_id = CAST(leave_type.id as varchar)
@@ -330,18 +330,18 @@ select {0}b{0}.{0}employee_id{0}, (
AND leave_type.id = 2
AND tad_general.employee_id = b.employee_id
AND tad_general.status = '3'
AND tad_general.start_date >= @start_date
AND tad_general.end_date <= @end_date
AND ((tad_general.start_date between @start_date and @end_date)
or (tad_general.end_date between @start_date and @end_date))
) as count_sick_leave, (
SELECT SUM(tad_general.total_dayoff) FROM tad_general_leaves as tad_general
SELECT SUM((select count(d::date) as d from generate_series(case when start_date<@start_date then @start_date else start_date end,case when end_date>@end_date then @end_date else end_date end, '1 day'::interval) d where extract('dow' from d) not in (0, 6))) FROM tad_general_leaves as tad_general
LEFT JOIN tad_leave_types as leave_type ON tad_general.leave_type_id = CAST(leave_type.id as varchar)
WHERE tad_general.deleted_at is null
AND leave_type.deleted_at is null
AND leave_type.id = 4
AND tad_general.employee_id = b.employee_id
AND tad_general.status = '3'
AND tad_general.start_date >= @start_date
AND tad_general.end_date <= @end_date
AND ((tad_general.start_date between @start_date and @end_date)
or (tad_general.end_date between @start_date and @end_date))
) as sum_day_personal_leave, (
SELECT COUNT(tad_general.*) FROM tad_general_leaves as tad_general
LEFT JOIN tad_leave_types as leave_type ON tad_general.leave_type_id = CAST(leave_type.id as varchar)
@@ -350,18 +350,18 @@ select {0}b{0}.{0}employee_id{0}, (
AND leave_type.id = 4
AND tad_general.employee_id = b.employee_id
AND tad_general.status = '3'
AND tad_general.start_date >= @start_date
AND tad_general.end_date <= @end_date
AND ((tad_general.start_date between @start_date and @end_date)
or (tad_general.end_date between @start_date and @end_date))
) as count_personal_leave, (
SELECT SUM(tad_general.total_dayoff) FROM tad_general_leaves as tad_general
SELECT SUM((select count(d::date) as d from generate_series(case when start_date<@start_date then @start_date else start_date end,case when end_date>@end_date then @end_date else end_date end, '1 day'::interval) d where extract('dow' from d) not in (0, 6))) FROM tad_general_leaves as tad_general
LEFT JOIN tad_leave_types as leave_type ON tad_general.leave_type_id = CAST(leave_type.id as varchar)
WHERE tad_general.deleted_at is null
AND leave_type.deleted_at is null
AND leave_type.id = 1
AND tad_general.employee_id = b.employee_id
AND tad_general.status = '3'
AND tad_general.start_date >= @start_date
AND tad_general.end_date <= @end_date
AND ((tad_general.start_date between @start_date and @end_date)
or (tad_general.end_date between @start_date and @end_date))
) as sum_day_vacation_leave, (
SELECT COUNT(tad_general.*) FROM tad_general_leaves as tad_general
LEFT JOIN tad_leave_types as leave_type ON tad_general.leave_type_id = CAST(leave_type.id as varchar)
@@ -370,8 +370,8 @@ select {0}b{0}.{0}employee_id{0}, (
AND leave_type.id = 1
AND tad_general.employee_id = b.employee_id
AND tad_general.status = '3'
AND tad_general.start_date >= @start_date
AND tad_general.end_date <= @end_date
AND ((tad_general.start_date between @start_date and @end_date)
or (tad_general.end_date between @start_date and @end_date))
) as count_vacation_leave, (
SELECT COUNT(DISTINCT tad_stop.date) FROM tad_stop_workings as tad_stop
WHERE tad_stop.deleted_at is null
@@ -398,15 +398,15 @@ select {0}b{0}.{0}employee_id{0}, (
AND prs_time_result.record_type = 'Absence'
AND prs_time_result.date BETWEEN @start_date AND @end_date
) as count_absence_tad_processing_time_results, (
SELECT SUM(tad_general.total_dayoff) FROM tad_general_leaves as tad_general
SELECT SUM((select count(d::date) as d from generate_series(case when start_date<@start_date then @start_date else start_date end,case when end_date>@end_date then @end_date else end_date end, '1 day'::interval) d where extract('dow' from d) not in (0, 6))) FROM tad_general_leaves as tad_general
LEFT JOIN tad_leave_types as leave_type ON tad_general.leave_type_id = CAST(leave_type.id as varchar)
WHERE tad_general.deleted_at is null
AND leave_type.deleted_at is null
AND leave_type.id in (2,4)
AND tad_general.employee_id = b.employee_id
AND tad_general.status = '3'
AND tad_general.start_date >= @start_date
AND tad_general.end_date <= @end_date
AND ((tad_general.start_date between @start_date and @end_date)
or (tad_general.end_date between @start_date and @end_date))
) as sum_day_sick_personal_leave, (
SELECT COUNT(tad_general.*) FROM tad_general_leaves as tad_general
LEFT JOIN tad_leave_types as leave_type ON tad_general.leave_type_id = CAST(leave_type.id as varchar)
@@ -415,8 +415,8 @@ select {0}b{0}.{0}employee_id{0}, (
AND leave_type.id in (2,4)
AND tad_general.employee_id = b.employee_id
AND tad_general.status = '3'
AND tad_general.start_date >= @start_date
AND tad_general.end_date <= @end_date
AND ((tad_general.start_date between @start_date and @end_date)
or (tad_general.end_date between @start_date and @end_date))
) as count_sick_personal_leave from {0}tad_table_workings{0} as {0}a{0} left join {0}hrm_employees{0} as {0}b{0} on {0}a{0}.{0}employee_id{0} = {0}b{0}.{0}employee_id{0} left join {0}tad_workshifts{0} as {0}c{0} on {0}a{0}.{0}workshift_id{0} = {0}c{0}.{0}id{0} where {0}a{0}.{0}deleted_at{0} is null and {0}b{0}.{0}deleted_at{0} is null and {0}c{0}.{0}deleted_at{0} is null and {0}b{0}.{0}employee_id{0} = @employee_id
", '"'.ToString());