ระบบวินัยเพิ่มค้นหาขั้นสูง #1628, #1629, #1630, #1631
Some checks failed
release-dev / release-dev (push) Failing after 12s

This commit is contained in:
Bright 2025-07-16 17:18:51 +07:00
parent 6b73a0aa47
commit 1b861c1a65
8 changed files with 406 additions and 0 deletions

View file

@ -106,6 +106,87 @@ namespace BMA.EHR.DisciplineComplaint.Service.Controllers
return Success(new { data, total = data_search.Count() });
}
/// <summary>
/// list รายการวินัยเรื่องร้องเรียน (ค้นหาขั้นสูง)
/// </summary>
/// <returns></returns>
/// <response code="200"></response>
/// <response code="400">ค่าตัวแปรที่ส่งมาไม่ถูกต้อง</response>
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
[HttpPost("advance-search")]
public async Task<ActionResult<ResponseObject>> GetAdvanceSearchDisciplineComplaint([FromBody] DisciplineComplaintAdvanceSearcRequest req)
{
var getPermission = await _permission.GetPermissionAPIAsync("LIST", "SYS_DISCIPLINE_COMPLAIN");
var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
if (jsonData["status"]?.ToString() != "200")
{
return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
}
var page = req.page <= 0 ? 1 : req.page;
var pageSize = req.pageSize <= 0 ? 25 : req.pageSize;
var keyword = string.IsNullOrEmpty(req.keyword) ? string.Empty : req.keyword;
var status = string.IsNullOrEmpty(req.status) ? string.Empty : req.status;
var data_search = (from x in _context.DisciplineComplaints
where x.Title.Contains(keyword) ||
(x.Appellant == null ? false : x.Appellant.Contains(keyword))
select x).ToList();
if (status.Trim().ToUpper() != "ALL")
data_search = data_search.Where(x => x.Status.Contains(status.Trim().ToUpper())).ToList();
if (
(req.dateReceivedStart.HasValue && req.dateReceivedEnd.HasValue) ||
(req.dateConsiderationStart.HasValue && req.dateConsiderationEnd.HasValue) ||
(!string.IsNullOrEmpty(req.respondentType)) ||
(!string.IsNullOrEmpty(req.offenseDetails)) ||
(!string.IsNullOrEmpty(req.levelConsideration))
)
{
data_search = data_search
.Where(x =>
(!req.dateReceivedStart.HasValue || !req.dateReceivedEnd.HasValue ||
(x.DateReceived.HasValue &&
x.DateReceived.Value.Date >= req.dateReceivedStart.Value.Date &&
x.DateReceived.Value.Date <= req.dateReceivedEnd.Value.Date))
&&
(!req.dateConsiderationStart.HasValue || !req.dateConsiderationEnd.HasValue ||
(x.DateConsideration.HasValue &&
x.DateConsideration.Value.Date >= req.dateConsiderationStart.Value.Date &&
x.DateConsideration.Value.Date <= req.dateConsiderationEnd.Value.Date))
&&
(string.IsNullOrEmpty(req.respondentType) || x.RespondentType == req.respondentType)
&&
(string.IsNullOrEmpty(req.offenseDetails) || x.OffenseDetails == req.offenseDetails)
&&
(string.IsNullOrEmpty(req.levelConsideration) || x.LevelConsideration == req.levelConsideration)
)
.ToList();
}
var data = data_search
.Select(x => new
{
Id = x.Id,//id ข้อมูลเรื่องร้องเรียน
Title = x.Title,//ชื่อเรื่อง
RespondentType = x.RespondentType,
Appellant = x.Appellant,//ผู้ถูกร้องเรียน
OffenseDetails = x.OffenseDetails,//ลักษณะความผิด
CreatedAt = x.CreatedAt,//วันที่สร้างเรื่องร้องเรียน
LevelConsideration = x.LevelConsideration,//ระดับการพิจารณา
DateConsideration = x.DateConsideration,//วันที่กำหนดพิจารณา
DateReceived = x.DateReceived,//วันที่รับเรื่อง
Status = x.Status,//สถานะเรื่องร้องเรียน มีดังนี้ ใหม่ (NEW), ยุติเรื่อง (STOP), มีมูลส่งไปสืบสวนแล้ว (SEND_INVESTIGATE)
Result = x.Result,
})
.OrderByDescending(x => x.DateConsideration)
.Skip((page - 1) * pageSize)
.Take(pageSize)
.ToList();
return Success(new { data, total = data_search.Count() });
}
/// <summary>
/// list รายการวินัยเรื่องร้องเรียนในหน้าออกคำสั่ง
/// </summary>

View file

@ -100,6 +100,88 @@ namespace BMA.EHR.DisciplineDisciplinary.Service.Controllers
return Success(new { data, total = data_search.Count() });
}
/// <summary>
/// list รายการวินัยเรื่องสอบสวน (ค้นหาขั้นสูง)
/// </summary>
/// <returns></returns>
/// <response code="200"></response>
/// <response code="400">ค่าตัวแปรที่ส่งมาไม่ถูกต้อง</response>
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
[HttpPost("advance-search")]
public async Task<ActionResult<ResponseObject>> GetAdvanceSearcDisciplineDisciplinary([FromBody] DisciplineDisciplinaryAdvanceSearcRequest req)
{
var getPermission = await _permission.GetPermissionAPIAsync("LIST", "SYS_DISCIPLINE_INTERROGATE");
var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
if (jsonData["status"]?.ToString() != "200")
{
return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
}
var page = req.page <= 0 ? 1 : req.page;
var pageSize = req.pageSize <= 0 ? 25 : req.pageSize;
var keyword = string.IsNullOrEmpty(req.keyword) ? string.Empty : req.keyword;
var status = string.IsNullOrEmpty(req.status) ? string.Empty : req.status;
var data_search = (from x in _context.DisciplineDisciplinarys
where x.Title.Contains(keyword)
select x).ToList();
if (status.Trim().ToUpper() != "ALL")
data_search = data_search.Where(x => x.Status.Contains(status.Trim().ToUpper())).ToList();
if (
(req.disciplinaryDateStart.HasValue && req.disciplinaryDateEnd.HasValue) ||
(req.dateReceivedStart.HasValue && req.dateReceivedEnd.HasValue) ||
(!string.IsNullOrEmpty(req.respondentType)) ||
(!string.IsNullOrEmpty(req.offenseDetails)) ||
(!string.IsNullOrEmpty(req.disciplinaryFaultLevel)) ||
(!string.IsNullOrEmpty(req.disciplinaryCaseFault))
)
{
data_search = data_search
.Where(x =>
(!req.dateReceivedStart.HasValue || !req.dateReceivedEnd.HasValue ||
(x.DateReceived.HasValue &&
x.DateReceived.Value.Date >= req.dateReceivedStart.Value.Date &&
x.DateReceived.Value.Date <= req.dateReceivedEnd.Value.Date))
&&
(!req.disciplinaryDateStart.HasValue || !req.disciplinaryDateEnd.HasValue ||
(x.DateConsideration.HasValue &&
x.DateConsideration.Value.Date >= req.disciplinaryDateStart.Value.Date &&
x.DateConsideration.Value.Date <= req.disciplinaryDateEnd.Value.Date))
&&
(string.IsNullOrEmpty(req.respondentType) || x.RespondentType == req.respondentType)
&&
(string.IsNullOrEmpty(req.offenseDetails) || x.OffenseDetails == req.offenseDetails)
&&
(string.IsNullOrEmpty(req.disciplinaryFaultLevel) || x.DisciplinaryFaultLevel == req.disciplinaryFaultLevel)
&&
(string.IsNullOrEmpty(req.disciplinaryCaseFault) || x.DisciplinaryCaseFault.Contains(req.disciplinaryCaseFault))
)
.ToList();
}
var data = data_search
.Select(x => new
{
Id = x.Id,//id ข้อมูลเรื่องสอบสวน
Title = x.Title,//ชื่อเรื่อง
RespondentType = x.RespondentType,//ผู้ถูกสืบสวน
OffenseDetails = x.OffenseDetails,//ลักษณะความผิด
DisciplinaryFaultLevel = x.DisciplinaryFaultLevel,//ระดับโทษความผิด
DisciplinaryCaseFault = x.DisciplinaryCaseFault,//กรณีความผิด
Status = x.Status,//สถานะหรือผลการสอบสวน
CreatedAt = x.CreatedAt,//วันที่สร้างเรื่องสอบสวน
DisciplinaryDateStart = x.DisciplinaryDateStart, //วันที่เริ่มการสอบสวน
DisciplinaryDateEnd = x.DisciplinaryDateEnd, //วันที่สิ้นสุดการสอบสวน
})
.OrderByDescending(x => x.DisciplinaryDateStart)
.Skip((page - 1) * pageSize)
.Take(pageSize)
.ToList();
return Success(new { data, total = data_search.Count() });
}
/// <summary>
/// get รายการวินัยเรื่องสอบสวน
/// </summary>

View file

@ -100,6 +100,87 @@ namespace BMA.EHR.DisciplineInvestigate.Service.Controllers
return Success(new { data, total = data_search.Count() });
}
/// <summary>
/// list รายการวินัยเรื่องสืบสวน (ค้นหาขั้นสูง)
/// </summary>
/// <returns></returns>
/// <response code="200"></response>
/// <response code="400">ค่าตัวแปรที่ส่งมาไม่ถูกต้อง</response>
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
[HttpPost("advance-search")]
public async Task<ActionResult<ResponseObject>> GetAdvanceSearchDisciplineInvestigate([FromBody] DisciplineInvestigateAdvanceSearcRequest req)
{
var getPermission = await _permission.GetPermissionAPIAsync("LIST", "SYS_DISCIPLINE_INVESTIGATE");
var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
if (jsonData["status"]?.ToString() != "200")
{
return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
}
var page = req.page <= 0 ? 1 : req.page;
var pageSize = req.pageSize <= 0 ? 25 : req.pageSize;
var keyword = string.IsNullOrEmpty(req.keyword) ? string.Empty : req.keyword;
var status = string.IsNullOrEmpty(req.status) ? string.Empty : req.status;
var data_search = (from x in _context.DisciplineInvestigates
where x.Title.Contains(keyword)
select x).ToList();
if (status.Trim().ToUpper() != "ALL")
data_search = data_search.Where(x => x.Status.Contains(status.Trim().ToUpper())).ToList();
if (
(req.investigationDateStart.HasValue && req.investigationDateEnd.HasValue) ||
(req.dateReceivedStart.HasValue && req.dateReceivedEnd.HasValue) ||
(!string.IsNullOrEmpty(req.respondentType)) ||
(!string.IsNullOrEmpty(req.offenseDetails)) ||
(!string.IsNullOrEmpty(req.investigationDetail)) ||
(!string.IsNullOrEmpty(req.investigationStatusResult))
)
{
data_search = data_search
.Where(x =>
(!req.dateReceivedStart.HasValue || !req.dateReceivedEnd.HasValue ||
(x.DateReceived.HasValue &&
x.DateReceived.Value.Date >= req.dateReceivedStart.Value.Date &&
x.DateReceived.Value.Date <= req.dateReceivedEnd.Value.Date))
&&
(!req.investigationDateStart.HasValue || !req.investigationDateEnd.HasValue ||
(x.DateConsideration.HasValue &&
x.DateConsideration.Value.Date >= req.investigationDateStart.Value.Date &&
x.DateConsideration.Value.Date <= req.investigationDateEnd.Value.Date))
&&
(string.IsNullOrEmpty(req.respondentType) || x.RespondentType == req.respondentType)
&&
(string.IsNullOrEmpty(req.offenseDetails) || x.OffenseDetails == req.offenseDetails)
&&
(string.IsNullOrEmpty(req.investigationDetail) || x.InvestigationDetail == req.investigationDetail)
&&
(string.IsNullOrEmpty(req.investigationStatusResult) || x.InvestigationStatusResult == req.investigationStatusResult)
)
.ToList();
}
var data = data_search
.Select(x => new
{
Id = x.Id,//id ข้อมูลเรื่องสืบสวน
Title = x.Title,//ชื่อเรื่อง
RespondentType = x.RespondentType,//ผู้ถูกสืบสวน
OffenseDetails = x.OffenseDetails,//ลักษณะความผิด
Status = x.Status,//สถานะหรือผลการสืบสวน
InvestigationDateStart = x.InvestigationDateStart,
InvestigationDateEnd = x.InvestigationDateEnd,
CreatedAt = x.CreatedAt,//วันที่สร้างเรื่องสืบสวน
InvestigationDetail = x.InvestigationDetail,
InvestigationStatusResult = x.InvestigationStatusResult,
})
.OrderByDescending(x => x.InvestigationDateStart)
.Skip((page - 1) * pageSize)
.Take(pageSize)
.ToList();
return Success(new { data, total = data_search.Count() });
}
// /// <summary>
// /// get รายการวินัยเรื่องร้องเรียน
// /// </summary>

View file

@ -120,6 +120,99 @@ namespace BMA.EHR.DisciplineResult.Service.Controllers
return Success(new { data, total = data_search.Count() });
}
/// <summary>
/// list รายการสรุปผลการพิจารณาทางวินัย (ค้นหาขั้นสูง)
/// </summary>
/// <returns></returns>
/// <response code="200"></response>
/// <response code="400">ค่าตัวแปรที่ส่งมาไม่ถูกต้อง</response>
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
[HttpPost("advance-search")]
public async Task<ActionResult<ResponseObject>> GetAdvanceSearcDisciplineResult([FromBody] DisciplineResultAdvanceSearcRequest req)
{
var getPermission = await _permission.GetPermissionAPIAsync("LIST", "SYS_DISCIPLINE_RESULT");
var jsonData = JsonConvert.DeserializeObject<JObject>(getPermission);
if (jsonData["status"]?.ToString() != "200")
{
return Error(jsonData["message"]?.ToString(), StatusCodes.Status403Forbidden);
}
var page = req.page <= 0 ? 1 : req.page;
var pageSize = req.pageSize <= 0 ? 25 : req.pageSize;
var keyword = string.IsNullOrEmpty(req.keyword) ? string.Empty : req.keyword;
var status = string.IsNullOrEmpty(req.status) ? string.Empty : req.status;
var data_search = await _context.DisciplineDisciplinarys.AsQueryable()
.Where(x => x.Title.Contains(keyword))
.Where(x => x.Status.Contains("DONE") || x.Status.Contains("REPORT"))
.ToListAsync();
if (status.Trim().ToUpper() != "ALL")
data_search = data_search.Where(x => x.Status.Contains(status.Trim().ToUpper())).ToList();
if (
(req.disciplinaryDateStart.HasValue && req.disciplinaryDateEnd.HasValue) ||
(!string.IsNullOrEmpty(req.respondentType)) ||
(!string.IsNullOrEmpty(req.offenseDetails)) ||
(!string.IsNullOrEmpty(req.disciplinaryFaultLevel)) ||
(!string.IsNullOrEmpty(req.disciplinaryCaseFault)) ||
(!string.IsNullOrEmpty(req.resultDisciplineType)) ||
(!string.IsNullOrEmpty(req.resultTitleType)) ||
(!string.IsNullOrEmpty(req.resultOc)) ||
(req.resultYear.HasValue)
)
{
data_search = data_search
.Where(x =>
(!req.disciplinaryDateStart.HasValue || !req.disciplinaryDateEnd.HasValue ||
(x.DateReceived.HasValue &&
x.DateReceived.Value.Date >= req.disciplinaryDateStart.Value.Date &&
x.DateReceived.Value.Date <= req.disciplinaryDateEnd.Value.Date))
&&
(string.IsNullOrEmpty(req.respondentType) || x.RespondentType == req.respondentType)
&&
(string.IsNullOrEmpty(req.offenseDetails) || x.OffenseDetails == req.offenseDetails)
&&
(string.IsNullOrEmpty(req.disciplinaryFaultLevel) || x.DisciplinaryFaultLevel == req.disciplinaryFaultLevel)
&&
(string.IsNullOrEmpty(req.disciplinaryCaseFault) || x.DisciplinaryCaseFault.Contains(req.disciplinaryCaseFault))
&&
(string.IsNullOrEmpty(req.resultDisciplineType) || x.ResultDisciplineType.Contains(req.resultDisciplineType))
&&
(string.IsNullOrEmpty(req.resultTitleType) || x.ResultTitleType.Contains(req.resultTitleType))
&&
(string.IsNullOrEmpty(req.resultOc) || x.ResultOc.Contains(req.resultOc))
&&
(!req.resultYear.HasValue || x.ResultYear == req.resultYear)
)
.ToList();
}
var data = data_search
.Select(x => new
{
Id = x.Id,//id ข้อมูลเรื่องสอบสวน
Title = x.Title,//ชื่อเรื่อง
RespondentType = x.RespondentType,//ผู้ถูกสืบสวน
OffenseDetails = x.OffenseDetails,//ลักษณะความผิด
DisciplinaryFaultLevel = x.DisciplinaryFaultLevel,//ระดับโทษความผิด
DisciplinaryCaseFault = x.DisciplinaryCaseFault,//กรณีความผิด
Status = x.Status,//สถานะหรือผลการสอบสวน
CreatedAt = x.CreatedAt,//วันที่สร้างเรื่องสอบสวน
DisciplinaryDateStart = x.DisciplinaryDateStart, //วันที่เริ่มการสอบสวน
DisciplinaryDateEnd = x.DisciplinaryDateEnd, //วันที่สิ้นสุดการสอบสวน
ResultOc = x.ResultOc,//หน่วยงาย/ส่วนราชการ
ResultDisciplineType = x.ResultDisciplineType,//หน่วยงาย/ส่วนราชการ
ResultTitleType = x.ResultTitleType,//ประเภทของเรื่อง
ResultYear = x.ResultYear,//ปีงบประมาณ
})
.OrderByDescending(x => x.CreatedAt)
.Skip((page - 1) * pageSize)
.Take(pageSize)
.ToList();
return Success(new { data, total = data_search.Count() });
}
/// <summary>
/// get รายการสรุปผลการพิจารณาทางวินัย
/// </summary>

View file

@ -63,4 +63,19 @@ namespace BMA.EHR.Discipline.Service.Requests
public string? posLevelName { get; set; }
public string? profileType { get; set; }
}
public class DisciplineComplaintAdvanceSearcRequest
{
public int page { get; set; } = 1;
public int pageSize { get; set; } = 25;
public string keyword { get; set; } = string.Empty;
public string status { get; set; } = string.Empty;
public DateTime? dateReceivedStart { get; set; } // วันที่เริ่มต้นรับเรื่อง
public DateTime? dateReceivedEnd { get; set; } // วันที่สิ้นสุดรับเรื่อง
public string? respondentType { get; set; } // ผู้ถูกร้องเรียน
public string? offenseDetails { get; set; } // ลักษณะความผิด
public string? levelConsideration { get; set; } // ระดับการพิจารณา
public DateTime? dateConsiderationStart { get; set; } // วันที่เริ่มต้นการพิจารณา
public DateTime? dateConsiderationEnd { get; set; } // วันที่สิ้นสุดการพิจารณา
}
}

View file

@ -33,4 +33,21 @@ namespace BMA.EHR.Discipline.Service.Requests
public string respondentType { get; set; }// *ผู้ถูกร้องเรียน (PERSON คือ บุคคล, ORGANIZATION คือ หน่วยงาน, BANGKOK คือ กรุงเทพมหานคร)
}
public class DisciplineDisciplinaryAdvanceSearcRequest
{
public int page { get; set; } = 1;
public int pageSize { get; set; } = 25;
public string keyword { get; set; } = string.Empty;
public string status { get; set; } = string.Empty;
public string? respondentType { get; set; } // ผู้ถูกสืบสวน
public string? offenseDetails { get; set; } // ลักษณะความผิด
public string? disciplinaryFaultLevel { get; set; } // ระดับโทษความผิด
public string? disciplinaryCaseFault { get; set; } // กรณีความผิด
public DateTime? disciplinaryDateStart { get; set; } // วันที่สอบสวนเริ่มต้น
public DateTime? disciplinaryDateEnd { get; set; } // วันที่สิ้นสุดสอบสวน
public DateTime? dateReceivedStart { get; set; } // วันที่เริ่มต้นรับเรื่อง
public DateTime? dateReceivedEnd { get; set; } // วันที่สิ้นสุดรับเรื่อง
}
}

View file

@ -21,4 +21,21 @@ namespace BMA.EHR.Discipline.Service.Requests
public string respondentType { get; set; }// *ผู้ถูกร้องเรียน (PERSON คือ บุคคล, ORGANIZATION คือ หน่วยงาน, BANGKOK คือ กรุงเทพมหานคร)
}
public class DisciplineInvestigateAdvanceSearcRequest
{
public int page { get; set; } = 1;
public int pageSize { get; set; } = 25;
public string keyword { get; set; } = string.Empty;
public string status { get; set; } = string.Empty;
public string? respondentType { get; set; } // ผู้ถูกสืบสวน
public string? offenseDetails { get; set; } // ลักษณะความผิด
public string? investigationDetail { get; set; } // ลักษณะการสืบสวน
public DateTime? investigationDateStart { get; set; } // วันที่สืบสวนเริ่มต้น
public DateTime? investigationDateEnd { get; set; } // วันที่สิ้นสุดสืบสวน
public DateTime? dateReceivedStart { get; set; } // วันที่เริ่มต้นรับเรื่อง
public DateTime? dateReceivedEnd { get; set; } // วันที่สิ้นสุดรับเรื่อง
public string? investigationStatusResult { get; set; } // ผลการสืบสวน
}
}

View file

@ -10,4 +10,24 @@ namespace BMA.EHR.Discipline.Service.Requests
public string? titleType { get; set; }//
public int? year { get; set; }//
}
public class DisciplineResultAdvanceSearcRequest
{
public int page { get; set; } = 1;
public int pageSize { get; set; } = 25;
public string keyword { get; set; } = string.Empty;
public string status { get; set; } = string.Empty;
public string? respondentType { get; set; } // ผู้ถูกสืบสวน
public string? offenseDetails { get; set; } // ลักษณะความผิด
public string? disciplinaryFaultLevel { get; set; } // ระดับโทษความผิด
public string? disciplinaryCaseFault { get; set; } // กรณีความผิด
public DateTime? disciplinaryDateStart { get; set; } // วันที่เริ่มต้นสอบสวน
public DateTime? disciplinaryDateEnd { get; set; } // วันที่สิ้นสุดสอบสวน
public string? resultDisciplineType { get; set; } // ประเภทวินัย
public string? resultTitleType { get; set; } // ประเภทของเรื่อง
public string? resultOc { get; set; } // หน่วยงาน/ส่วนราชการ
public int? resultYear { get; set; } // ปีงบประมาณ
}
}