แก้ report เครื่องราช

This commit is contained in:
Harid Promsri (Bright) 2023-10-25 16:06:51 +07:00
parent 5065ad3269
commit 99598ffd2a
7 changed files with 83 additions and 47 deletions

View file

@ -1,12 +1,8 @@
using BMA.EHR.Application.Repositories.Reports;
using BMA.EHR.Domain.Common;
using BMA.EHR.Domain.Extensions;
using BMA.EHR.Domain.Models.Insignias;
using DocumentFormat.OpenXml.Drawing;
using DocumentFormat.OpenXml.EMMA;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.FileProviders;
using Swashbuckle.AspNetCore.Annotations;
using Telerik.Reporting;
using Telerik.Reporting.Processing;
@ -453,6 +449,7 @@ namespace BMA.EHR.Report.Service.Controllers
{
RowNo = (_Khr6List.Count + 1).ToString().ToThaiNumber(),
DepartmentName = _data.GetType().GetProperty("DepartmentName").GetValue(_data),
InsigniaInitial = _data.GetType().GetProperty("InsigniaInitial").GetValue(_data),
G1Male = _data.GetType().GetProperty("G1Male").GetValue(_data),
G1Female = _data.GetType().GetProperty("G1Female").GetValue(_data),
G2Male = _data.GetType().GetProperty("G2Male").GetValue(_data),
@ -496,6 +493,7 @@ namespace BMA.EHR.Report.Service.Controllers
{
try
{
//Guid ids = Guid.Parse(id);
var data = await _repository.GetCoinReport(id);
var YearInsignalPeriod = await _repository.GetYearInsigniaPeriod(id);
var mimeType = "";
@ -535,7 +533,7 @@ namespace BMA.EHR.Report.Service.Controllers
{
status = status,
row = detailList.Count + 1,
Number = (detailList.Count + 1).ToString().ToThaiNumber(),
//Number = (detailList.Count + 1).ToString().ToThaiNumber(),
InsigniaName = dataList[i].GetType().GetProperty("InsigniaName").GetValue(dataList[i]),
FullName = dataList[i].GetType().GetProperty("FullName").GetValue(dataList[i]),
InsigniaInitial = dataList[i].GetType().GetProperty("InsigniaInitial").GetValue(dataList[i]),
@ -559,20 +557,54 @@ namespace BMA.EHR.Report.Service.Controllers
var left = detailList.Where(x => x.status == false);
var right = detailList.Where(x => x.status == true);
var mergeList = new List<object>();
var InsigniaName = string.Empty;
var range = string.Empty;
var male = 0;
var female = 0;
var start = 0;
var stop = 0;
var colLeft = 0;
var colRight = 0;
for (int i = 0; i < detailList.Count / 2; i++)
{
if (InsigniaName != (string)left.ElementAt(i).GetType().GetProperty("InsigniaName").GetValue(left.ElementAt(i)))
{
InsigniaName = (string)left.ElementAt(i).GetType().GetProperty("InsigniaName").GetValue(left.ElementAt(i));
male = left.Count(x => x.Male == 1 && x.InsigniaName == InsigniaName) + right.Count(x => x.Male == 1 && x.InsigniaName == InsigniaName);
female = left.Count(x => x.Female == 1 && x.InsigniaName == InsigniaName) + right.Count(x => x.Female == 1 && x.InsigniaName == InsigniaName);
//find coin group range
var countGroup = detailList.Count(x => x.InsigniaName == InsigniaName);
var countGroupTemp = detailList.Count(x => x.InsigniaName == InsigniaName && x.FullName == "");
start = i == 0 ? (mergeList.Count + 1) : (stop + 1);
stop = i == 0 ? (mergeList.Count) + (countGroup - countGroupTemp) : (countGroup - countGroupTemp) == 1 ? start : start + (countGroup - countGroupTemp);
range = countGroup - countGroupTemp != 1 ? $"{start} - {stop}" : $"{start}";
//set column left and right when start
colLeft = start;
colRight = start + 25;
}
mergeList.Add(new
{
row = mergeList.Count + 1,
RowLeft = left.ElementAt(i).GetType().GetProperty("Number").GetValue(left.ElementAt(i)),
//RowLeft = left.ElementAt(i).GetType().GetProperty("Number").GetValue(left.ElementAt(i)),
ColLeft = colLeft.ToString().ToThaiNumber(),
NameLeft = left.ElementAt(i).GetType().GetProperty("FullName").GetValue(left.ElementAt(i)),
RowRight = right.ElementAt(i).GetType().GetProperty("Number").GetValue(right.ElementAt(i)),
//RowRight = right.ElementAt(i).GetType().GetProperty("Number").GetValue(right.ElementAt(i)),
ColRight = colRight.ToString().ToThaiNumber(),
NameRight = right.ElementAt(i).GetType().GetProperty("FullName").GetValue(right.ElementAt(i)),
InsigniaInitial = left.ElementAt(i).GetType().GetProperty("InsigniaInitial").GetValue(left.ElementAt(i)),
InsigniaName = left.ElementAt(i).GetType().GetProperty("InsigniaName").GetValue(left.ElementAt(i)),
Male = left.ElementAt(i).GetType().GetProperty("Male").GetValue(left.ElementAt(i)) + right.ElementAt(i).GetType().GetProperty("Male").GetValue(right.ElementAt(i)),
Female = left.ElementAt(i).GetType().GetProperty("Female").GetValue(left.ElementAt(i)) + right.ElementAt(i).GetType().GetProperty("Female").GetValue(right.ElementAt(i)),
Range = range.ToThaiNumber(),
Male = male.ToString().ToThaiNumber(),
Female = female.ToString().ToThaiNumber(),
});
if (mergeList.Count % 25 == 0)
{
//set column when new page
colLeft = colRight;
colRight = colLeft + 25;
}
colLeft++;
colRight++;
}
report.DataSource = mergeList;
}
@ -634,6 +666,7 @@ namespace BMA.EHR.Report.Service.Controllers
report.ReportParameters["Position"].Value = profile.GetType().GetProperty("Position").GetValue(profile);
report.ReportParameters["OCName"].Value = profile.GetType().GetProperty("OCName").GetValue(profile);
report.ReportParameters["BirthDate"].Value = profile.GetType().GetProperty("BirthDate").GetValue(profile);
report.ReportParameters["DateAppoint"].Value = profile.GetType().GetProperty("DateAppoint").GetValue(profile);
var historysalary = new List<dynamic>();
foreach (var _data in data)