fix defect 25-04-2023

This commit is contained in:
Suphonchai Phoonsawat 2023-04-25 21:00:31 +07:00
parent de70220236
commit 2bd62de015
26 changed files with 3131 additions and 155 deletions

View file

@ -1189,6 +1189,7 @@ namespace BMA.EHR.Recruit.Service.Controllers
r.CStatus = workSheet?.Cells[row, 22]?.GetValue<string>();
r.ExamStatus = workSheet?.Cells[row, 24]?.GetValue<string>();
r.Number = workSheet?.Cells[row, 25]?.GetValue<string>() ?? "";
r.Major = workSheet.Name;
@ -1325,6 +1326,7 @@ namespace BMA.EHR.Recruit.Service.Controllers
position_name = dr["position_name"].ToString(),
exam_name = dr["exam_name"].ToString(),
exam_order = dr["exam_order"].ToString(),
score_year = Convert.ToInt32(dr["score_year"]).ToThaiYear().ToString(),
});
}
@ -1382,7 +1384,6 @@ namespace BMA.EHR.Recruit.Service.Controllers
}
}
[HttpGet("exam/{id:length(36)}/{examId}")]
public async Task<ActionResult<ResponseObject>> GetExamResultByPersonAsync(Guid id, string examId)
{
@ -1415,7 +1416,14 @@ namespace BMA.EHR.Recruit.Service.Controllers
IsSpecial = p.Isspecial,
Remark = p.Remark,
University = p.Educations.First().University,
PositionName = p.PositionName,
ExamName = p.RecruitImport.Name,
ExamOrder = p.RecruitImport.Order,
ExamYear = p.RecruitImport.Year.ToThaiYear(),
Score = sr == null ? 0 : sr.SumA + sr.SumB + sr.SumC,
Number = sr == null ? "" : sr.Number,
ExamCount = _recruitService.GetExamCount(p.CitizenId),
ScoreExpire = p.RecruitImport.AnnouncementDate == null ? "" : p.RecruitImport.AnnouncementDate.Value.AddYears(2).ToThaiShortDate(),
ScoreResult = sr == null ? null : new
{
ScoreAFull = sr.FullA,
@ -1577,7 +1585,7 @@ namespace BMA.EHR.Recruit.Service.Controllers
if (data == null)
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
if(data_pass == null)
if (data_pass == null)
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
var header = $"{data.Name} ครั้งที่ {data.Order}/{data.Year.ToThaiYear()}";
@ -1605,7 +1613,8 @@ namespace BMA.EHR.Recruit.Service.Controllers
r.LastName,
s.FullA,
s.SumA,
s.AStatus
s.AStatus,
}).ToList();
// copy template
@ -1627,7 +1636,113 @@ namespace BMA.EHR.Recruit.Service.Controllers
workSheet.Cells[row, 3].Value = $"{item.Prefix}{item.FirstName} {item.LastName}";
workSheet.Cells[row, 4].Value = item.FullA;
workSheet.Cells[row, 5].Value = item.SumA;
workSheet.Cells[row, 6].Value = "";
workSheet.Cells[row, 6].Value = item.AStatus;
row++;
}
excel.Save();
using (FileStream fs = new FileStream(exportFile, FileMode.Open, FileAccess.Read))
{
byte[] bytes = System.IO.File.ReadAllBytes(exportFile);
fs.Read(bytes, 0, System.Convert.ToInt32(fs.Length));
fs.Close();
var fname = Path.GetFileName(exportFile);
Response.Headers["Content-Disposition"] = $"inline; filename={fname}";
var ret = new FileContentResult(bytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
{
FileDownloadName = fname
};
return ret;
}
}
}
catch (Exception ex)
{
return Error(ex, "ไม่สามารถส่งออกรายชื่อผู้สอบผ่านได้!!");
}
finally
{
if (System.IO.File.Exists(exportFile))
System.IO.File.Delete(exportFile);
}
}
[HttpGet("export/pass/{id:length(36)}")]
public async Task<ActionResult<ResponseObject>> ExportPassExamResultAsync(Guid id)
{
var data = await _context.RecruitImports.AsQueryable()
.Include(x => x.Recruits)
.FirstOrDefaultAsync(x => x.Id == id);
var data_pass = await _context.RecruitImports.AsQueryable()
.Include(x => x.ScoreImport)
.ThenInclude(x => x.Scores)
.FirstOrDefaultAsync(x => x.Id == id);
if (data == null)
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
if (data_pass == null)
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
var header = $"{data.Name} ครั้งที่ {data.Order}/{data.Year.ToThaiYear()}";
var template_dir = Path.Combine(_webHostEnvironment.ContentRootPath, "Templates");
var template_file = Path.Combine(template_dir, "PassExamList.xlsx");
var tmpDir = Path.Combine(_webHostEnvironment.ContentRootPath, "tmp");
if (!Directory.Exists(tmpDir))
Directory.CreateDirectory(tmpDir);
var exportFile = Path.Combine(tmpDir, $"PassExamList_{DateTime.Now.ToString("yyyyMMddHHmmss")}.xlsx");
try
{
var result = (from r in data.Recruits.ToList()
join s in data_pass.ScoreImport.Scores.Where(x => x.ExamStatus == "ผ่าน").ToList() on r.ExamId equals s.ExamId
select new
{
r.ExamId,
r.CitizenId,
r.Prefix,
r.FirstName,
r.LastName,
Full = s.FullA + s.FullB + s.FullC,
Sum = s.SumA + s.SumB + s.SumC,
Status = s.ExamStatus,
r.PositionName,
s.Number
}).ToList();
// copy template
System.IO.File.Copy(template_file, exportFile);
using (var excel = new ExcelPackage(new FileInfo(exportFile)))
{
var workSheet = excel.Workbook.Worksheets[0];
workSheet.Cells[1, 2].Value = header;
var recruits = data.Recruits.OrderBy(x => x.ExamId).ToList();
var row = 4; // start at row 4
foreach (var item in result)
{
workSheet.Cells[row, 1].Value = item.ExamId;
workSheet.Cells[row, 2].Value = item.CitizenId;
workSheet.Cells[row, 3].Value = $"{item.Prefix}{item.FirstName} {item.LastName}";
workSheet.Cells[row, 4].Value = item.Full;
workSheet.Cells[row, 5].Value = item.Sum;
workSheet.Cells[row, 6].Value = item.Status;
workSheet.Cells[row, 7].Value = item.Number;
workSheet.Cells[row, 8].Value = item.PositionName;
row++;
}