diff --git a/Models/eva_adjust_postponement_detail_quota_02/eva_adjust_postponement_detail_quota_02Service.cs b/Models/eva_adjust_postponement_detail_quota_02/eva_adjust_postponement_detail_quota_02Service.cs index 347c827..3be5896 100644 --- a/Models/eva_adjust_postponement_detail_quota_02/eva_adjust_postponement_detail_quota_02Service.cs +++ b/Models/eva_adjust_postponement_detail_quota_02/eva_adjust_postponement_detail_quota_02Service.cs @@ -104,6 +104,10 @@ namespace TodoAPI2.Models into external_linkageResult2 from fk_external_linkageResult2 in external_linkageResult2.DefaultIfEmpty() + join sort_dep in ext.GetSortingDep() on fk_external_linkageResult2.department_id equals sort_dep.id + into sort_depResult2 + from fk_sort_depResult2 in sort_depResult2.DefaultIfEmpty() + join create_detail in _repository.Context.eva_create_evaluation_detail on fk_eva_adjust_postponementResult1A.create_evaluation_id equals create_detail.create_evaluation_id into create_detailResult @@ -114,9 +118,12 @@ namespace TodoAPI2.Models && (m_eva_adjust_postponement_detail_quota_02.adjust_postponement_quota_id == model.adjust_postponement_quota_id || !model.adjust_postponement_quota_id.HasValue) && (fk_create_detailResult.employee_id == m_eva_adjust_postponement_detail_quota_02.employee_id || fk_create_detailResult == null) - orderby fk_external_linkageResult2.department_degree_id, - fk_external_linkageResult2.department_code, - fk_external_linkageResult2.position_level_id, + orderby + fk_sort_depResult2.external_code, + //fk_external_linkageResult2.department_degree_id, + //fk_external_linkageResult2.department_code, + fk_external_linkageResult2.hpt_position_type_id, + fk_external_linkageResult2.hpl_position_level_id, fk_external_linkageResult2.employee_no select new eva_adjust_postponement_detail_quota_02ViewModel() { @@ -138,7 +145,7 @@ namespace TodoAPI2.Models emp_fullname = fk_external_linkageResult2.fullname, emp_position = fk_external_linkageResult2.position_name, emp_level = fk_external_linkageResult2.position_level_text, - emp_department_name = fk_external_linkageResult2.department_name, + emp_department_name = fk_sort_depResult2.external_name, total_score = fk_create_detailResult.score_supervisor, eva_result = fk_create_detailResult.level_score_supervisor, diff --git a/Models/eva_create_evaluation_detail_process/eva_create_evaluation_detail_processService.cs b/Models/eva_create_evaluation_detail_process/eva_create_evaluation_detail_processService.cs index b16b16d..527eaca 100644 --- a/Models/eva_create_evaluation_detail_process/eva_create_evaluation_detail_processService.cs +++ b/Models/eva_create_evaluation_detail_process/eva_create_evaluation_detail_processService.cs @@ -161,6 +161,7 @@ namespace TodoAPI2.Models public List GetListBySearch(eva_create_evaluation_detail_processSearchModel model, int? emp_id, string path) { var allemp = emp.GetListByemployee_type(null, null); + var all_org_id = from i in ext.GetAllChildInDep(model.org_id) select i.external_id; var data = ( from m_eva_create_evaluation_detail_process in _repository.Context.eva_create_evaluation_detail @@ -169,6 +170,10 @@ namespace TodoAPI2.Models into external_employeeResult from fk_external_employee in external_employeeResult.DefaultIfEmpty() + join sort_dep in ext.GetSortingDep() on fk_external_employee.department_id equals sort_dep.id + into sort_depResult2 + from fk_sort_depResult2 in sort_depResult2.DefaultIfEmpty() + join fk_external_chief in allemp on m_eva_create_evaluation_detail_process.chief equals fk_external_chief.id into external_chiefResult from fk_external_chief in external_chiefResult.DefaultIfEmpty() @@ -179,7 +184,7 @@ namespace TodoAPI2.Models where 1 == 1 && (m_eva_create_evaluation_detail_process.create_evaluation_id == model.create_evaluation_id || !model.create_evaluation_id.HasValue) - && (fk_external_employee.department_id == model.org_id || !model.org_id.HasValue) + && (all_org_id.Contains(fk_external_employee.department_id) || !model.org_id.HasValue) && (fk_external_employee.employee_no == model.search_employee_code || string.IsNullOrEmpty(model.search_employee_code)) && (fk_external_employee.fullname.Contains(model.search_employee_fullname) || string.IsNullOrEmpty(model.search_employee_fullname)) && emp_id.HasValue @@ -190,9 +195,12 @@ namespace TodoAPI2.Models || (fk_eva_create_evaluationResult10.supervisor2_id.HasValue && emp_id == fk_eva_create_evaluationResult10.supervisor2_id) ) - orderby fk_external_employee.department_degree_id, - fk_external_employee.department_code, - fk_external_employee.position_level_id, + orderby + fk_sort_depResult2.external_code, + //fk_external_employee.department_degree_id, + //fk_external_employee.department_code, + fk_external_employee.hpt_position_type_id, + fk_external_employee.hpl_position_level_id, fk_external_employee.employee_no select new eva_create_evaluation_detail_processViewModel() { @@ -204,7 +212,7 @@ namespace TodoAPI2.Models employee_position = fk_external_employee.position_name, employee_position_type = fk_external_employee.position_type_name, employee_position_level = fk_external_employee.position_level_text, - employee_org = fk_external_employee.department_name, + employee_org = fk_sort_depResult2.external_name, chief_fullname = fk_external_chief.fullname, chief_position = fk_external_chief.position_name, create_evaluation_id = m_eva_create_evaluation_detail_process.create_evaluation_id, @@ -212,7 +220,7 @@ namespace TodoAPI2.Models search_employee_code = fk_external_employee.employee_no, search_employee_fullname = fk_external_employee.fullname, - org_id_external_linkage_external_name = fk_external_employee.department_name, + org_id_external_linkage_external_name = fk_sort_depResult2.external_name, status_self = m_eva_create_evaluation_detail_process.status_self, status_chief = m_eva_create_evaluation_detail_process.status_chief, diff --git a/Models/external_employee/external_employeeService.cs b/Models/external_employee/external_employeeService.cs index 5b14856..10437aa 100644 --- a/Models/external_employee/external_employeeService.cs +++ b/Models/external_employee/external_employeeService.cs @@ -71,8 +71,14 @@ CONCAT(htm.title_name,' ',he.firstname,' ',he.lastname) as fullname,opd.position CONCAT(he.firstname,he.lastname) as halfname, orgdata.id as department_id,orgdata.department_name,orgdata.department_code,he.salary, he.employee_type_id, het.employee_type_name,opd.position_id as position_id, -u.email as user_email, u.id as user_id,hpl.position_level_name,he.position_level_id, -he.position_type_id,hpt.position_type_name,he.packing_date,he.cost_of_living, +u.email as user_email, u.id as user_id,hpl.position_level_name, + +he.position_level_id, +he.position_type_id, +hpl.position_level_id as hpl_position_level_id, +hpt.position_type_id as hpt_position_type_id, + +hpt.position_type_name,he.packing_date,he.cost_of_living, (CASE WHEN (SELECT hrm_work_rec.id FROM hrm_working_records as hrm_work_rec WHERE hrm_work_rec.employee_id = he.employee_id AND hrm_work_rec.start_date <= now() @@ -129,6 +135,7 @@ order by he.firstname, he.lastname; { i.position_type_id = Convert.ToInt32(dr["position_type_id"]); i.position_type_name = dr["position_type_name"].ToString(); + i.hpt_position_type_id = Convert.ToInt32(dr["hpt_position_type_id"]); } if (dr["position_id"] != DBNull.Value) @@ -155,6 +162,7 @@ order by he.firstname, he.lastname; { i.position_level_id = Convert.ToInt32(dr["position_level_id"]); i.position_level_text = dr["position_level_name"].ToString(); + i.hpl_position_level_id = Convert.ToInt32(dr["hpl_position_level_id"]); } i.salary = 0; if (dr["salary"] != DBNull.Value) diff --git a/Models/external_employee/external_employeeViewModel.cs b/Models/external_employee/external_employeeViewModel.cs index de7a1be..82f2396 100644 --- a/Models/external_employee/external_employeeViewModel.cs +++ b/Models/external_employee/external_employeeViewModel.cs @@ -35,6 +35,7 @@ namespace TodoAPI2.Models public int? employee_type_id { get; set; } public int? position_id { get; set; } public int? position_type_id { get; set; } + public int? hpt_position_type_id { get; set; } public string position_type_name { get; set; } public string user_email { get; set; } public int? user_id { get; set; } @@ -45,6 +46,7 @@ namespace TodoAPI2.Models public string employee_type_name { get; set; } public string employee_no { get; set; } public int? position_level_id { get; set; } + public int? hpl_position_level_id { get; set; } public string position_level_text { get; set; } public DateTime? packing_date { get; set; } public int? department_degree_id { get; set; } diff --git a/Models/external_linkage/Iexternal_linkageService.cs b/Models/external_linkage/Iexternal_linkageService.cs index 7874b3b..6221276 100644 --- a/Models/external_linkage/Iexternal_linkageService.cs +++ b/Models/external_linkage/Iexternal_linkageService.cs @@ -30,6 +30,9 @@ namespace TodoAPI2.Models List GetRelationshipForReport(); List GetFiscalYear(); List GetEvaRound(); + List GetAllChildInDep(int? dep_id); + List GetChildInDep(int? dep_id); + List GetSortingDep(); } } diff --git a/Models/external_linkage/external_linkageService.cs b/Models/external_linkage/external_linkageService.cs index b7179e9..b4c6aa3 100644 --- a/Models/external_linkage/external_linkageService.cs +++ b/Models/external_linkage/external_linkageService.cs @@ -249,7 +249,7 @@ namespace TodoAPI2.Models public List GetDepartmentData() { - var sql = string.Format("select * from public.{0}DepartmentData{0} where department_name != '' and deleted_at is null; ", '"'.ToString()); + var sql = string.Format("select * from public.{0}DepartmentData{0} where department_name != '' and deleted_at is null order by department_name; ", '"'.ToString()); var para = db.GetParameterListNpgsql(); DataTable dt = db.ExecuteDataTableNpgsql(sql, para); var result = new List(); @@ -371,6 +371,85 @@ namespace TodoAPI2.Models return result; } + public List GetAllChildInDep(int? dep_id) + { + var all_result = new List(); + if (dep_id.HasValue) + { + var result = GetChildInDep(dep_id); + all_result.AddRange(result); + foreach (var i in result) + { + var result2 = GetChildInDep(i.id.Value); + all_result.AddRange(result2); + } + } + return all_result; + } + + public List GetChildInDep(int? dep_id) + { + var sql = string.Format(@"select data1.id,data1.department_name +from public.{0}DepartmentData{0} data1 +left join org_organization_chart_details detail on data1.id=detail.department_id +where detail.parent_department_id={1} or data1.id={1};", '"'.ToString(), dep_id.ToString()); + var para = db.GetParameterListNpgsql(); + DataTable dt = db.ExecuteDataTableNpgsql(sql, para); + var result = new List(); + foreach (DataRow dr in dt.Rows) + { + var i = new external_linkageViewModel(); + i.external_id = Convert.ToInt32(dr["id"]); + i.external_code = dr["id"].ToString(); + i.external_name = dr["department_name"].ToString(); + result.Add(i); + } + return result; + } + + public List GetSortingDep() + { + var sql = string.Format(@" + +select orgdata.id, +case when orgdata2.department_name is not null then +concat(orgdata2.department_name,' - ',orgdata.department_name) +else orgdata.department_name end as full_dep, +orgdata.department_name, +orgdata.department_code,detail.parent_department_id, +case +when org_type_depart.department_degree_id = 1 then orgdata.department_code::int*1000 +when detail.parent_department_id is not null and detail.parent_department_id>0 +then orgdata2.department_code::int*1000+orgdata.department_code::int +else orgdata.department_code::int*100000 end as sort_order,org_type_depart.department_degree_id +from public.{0}DepartmentData{0} orgdata +left join org_organization_chart_details detail on orgdata.id = detail.department_id +left join public.{0}DepartmentData{0} orgdata2 on orgdata2.id = detail.parent_department_id +left join public.org_type_departments as org_type_depart on orgdata.department_type_id = org_type_depart.id +left join public.org_type_department_colors as org_depart_color +on org_type_depart.department_degree_id = org_depart_color.id +where orgdata.department_name is not null +order by case +when org_type_depart.department_degree_id = 1 then orgdata.department_code::int*1000 +when detail.parent_department_id is not null and detail.parent_department_id>0 +then orgdata2.department_code::int*1000+orgdata.department_code::int +else orgdata.department_code::int*100000 end + +", '"'.ToString()); + var para = db.GetParameterListNpgsql(); + DataTable dt = db.ExecuteDataTableNpgsql(sql, para); + var result = new List(); + foreach (DataRow dr in dt.Rows) + { + var i = new external_linkageViewModel(); + i.external_id = Convert.ToInt32(dr["id"]); + i.external_code = dr["sort_order"].ToString(); + i.external_name = dr["full_dep"].ToString(); + result.Add(i); + } + return result; + } + } } diff --git a/Models/search_employee_for_group/search_employee_for_groupService.cs b/Models/search_employee_for_group/search_employee_for_groupService.cs index a912fca..02ebce0 100644 --- a/Models/search_employee_for_group/search_employee_for_groupService.cs +++ b/Models/search_employee_for_group/search_employee_for_groupService.cs @@ -56,17 +56,29 @@ namespace TodoAPI2.Models public List GetListBySearch(search_employee_for_groupSearchModel model) { var allemp = emp.GetListByemployee_type(null, null); + var all_org_id = from i in ext.GetAllChildInDep(model.org_id) select i.external_id; var data = ( from m_search_employee_for_group in allemp + join sort_dep in ext.GetSortingDep() on m_search_employee_for_group.department_id equals sort_dep.id + into sort_depResult2 + from fk_sort_depResult2 in sort_depResult2.DefaultIfEmpty() + where 1 == 1 && (string.IsNullOrEmpty(model.employee_number) || (!string.IsNullOrEmpty(model.employee_number) && m_search_employee_for_group.employee_no.Contains(model.employee_number))) && (string.IsNullOrEmpty(model.fullname) || (!string.IsNullOrEmpty(model.fullname) && m_search_employee_for_group.fullname.Contains(model.fullname))) && (m_search_employee_for_group.position_id == model.position_id || !model.position_id.HasValue) - && (m_search_employee_for_group.department_id == model.org_id || !model.org_id.HasValue) + && (all_org_id.Contains(m_search_employee_for_group.department_id) || !model.org_id.HasValue) + + orderby + fk_sort_depResult2.external_code, + //fk_external_employee.department_degree_id, + //fk_external_employee.department_code, + m_search_employee_for_group.hpt_position_type_id, + m_search_employee_for_group.hpl_position_level_id, + m_search_employee_for_group.employee_no - orderby m_search_employee_for_group.fullname select new search_employee_for_groupViewModel() { id = m_search_employee_for_group.id, diff --git a/Views/eva_create_evaluation_detail_processView/eva_create_evaluation_detail_process.cshtml b/Views/eva_create_evaluation_detail_processView/eva_create_evaluation_detail_process.cshtml index 8801117..9f5fac4 100644 --- a/Views/eva_create_evaluation_detail_processView/eva_create_evaluation_detail_process.cshtml +++ b/Views/eva_create_evaluation_detail_processView/eva_create_evaluation_detail_process.cshtml @@ -26,7 +26,7 @@
-
+
@@ -41,7 +41,7 @@
-
+
@@ -52,7 +52,6 @@ เครื่องมือ - @@ -77,6 +76,7 @@ eva_create_evaluation_detail_process_InitiateDataTable(); eva_create_evaluation_detail_process_InitialForm(); SetupValidationRemark("eva_create_evaluation_detail_process"); + $("#s_eva_create_evaluation_detail_process_org_id").select2(); }); } diff --git a/Views/search_employee_for_groupView/search_employee_for_group.cshtml b/Views/search_employee_for_groupView/search_employee_for_group.cshtml index e07736d..d735b56 100644 --- a/Views/search_employee_for_groupView/search_employee_for_group.cshtml +++ b/Views/search_employee_for_groupView/search_employee_for_group.cshtml @@ -63,10 +63,11 @@ เลือก + - + diff --git a/wwwroot/js/eva_create_evaluation_detail_agreement/eva_create_evaluation_detail_agreement.js b/wwwroot/js/eva_create_evaluation_detail_agreement/eva_create_evaluation_detail_agreement.js index ca7ccf5..263ccdb 100644 --- a/wwwroot/js/eva_create_evaluation_detail_agreement/eva_create_evaluation_detail_agreement.js +++ b/wwwroot/js/eva_create_evaluation_detail_agreement/eva_create_evaluation_detail_agreement.js @@ -196,7 +196,6 @@ console.log(result); { "data": "org_id_external_linkage_external_name" }, { "data": "status_chief" }, { "data": "status_supervisor" }, - { "data": "id" } ], @@ -214,10 +213,13 @@ console.log(result); "render": function (data, type, row, meta) { if(row.status_chief === "Y"){ return " "; +}else{ + return ""; } } - }], + } + ], "language": { "url": appsite + "/DataTables-1.10.16/thai.json" }, diff --git a/wwwroot/js/search_employee_for_group/search_employee_for_group.js b/wwwroot/js/search_employee_for_group/search_employee_for_group.js index 68ac472..3621b92 100644 --- a/wwwroot/js/search_employee_for_group/search_employee_for_group.js +++ b/wwwroot/js/search_employee_for_group/search_employee_for_group.js @@ -164,6 +164,7 @@ var search_employee_for_group_setupTable = function (result) { search_employee_for_groupTableV = $('#search_employee_for_groupTable').DataTable({ "processing": true, "serverSide": false, + "ordering": false, "data": result, "select": { "style": 'multi' @@ -171,10 +172,10 @@ var search_employee_for_group_setupTable = function (result) { "columns": [ { "data": "" }, { "data": "employee_number" }, + { "data": "org_id_external_linkage_external_name" }, { "data": "fullname" }, { "data": "position_id_external_linkage_external_name" }, - { "data": "level_name" }, - { "data": "org_id_external_linkage_external_name" }, + { "data": "level_name" }, { "data": "remark" }, ], "columnDefs": [