report placement, retire
This commit is contained in:
parent
1b04e2dfc3
commit
082f4b2f59
6 changed files with 984 additions and 29 deletions
|
|
@ -2773,15 +2773,285 @@ namespace BMA.EHR.Placement.Service.Controllers
|
|||
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||
[HttpGet("report1")]
|
||||
public async Task<ActionResult<ResponseObject>> report1(string? nodeId = null, int? node = 0, DateOnly? startDate = null, DateOnly? startEnd = null)
|
||||
public async Task<ActionResult<ResponseObject>> report1(string nodeId = "", int? node = null, DateTime? startDate = null, DateTime? endDate = null)
|
||||
{
|
||||
var data = new
|
||||
var apiUrl = $"{_configuration["API"]}/org/find/node-all";
|
||||
var data = new object();
|
||||
var data1 = new List<dynamic>();
|
||||
var data2 = new List<dynamic>();
|
||||
using (var client = new HttpClient())
|
||||
{
|
||||
template = "placement01",
|
||||
reportName = "xlsx-report",
|
||||
data = ""
|
||||
};
|
||||
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.Replace("Bearer ", ""));
|
||||
var _req = new HttpRequestMessage(HttpMethod.Post, apiUrl);
|
||||
var _res = await client.PostAsJsonAsync(apiUrl, new
|
||||
{
|
||||
node,
|
||||
nodeId,
|
||||
});
|
||||
var _result = await _res.Content.ReadAsStringAsync();
|
||||
var orgs = JsonConvert.DeserializeObject<NodeAllRequest>(_result);
|
||||
|
||||
if (orgs == null || orgs.result == null)
|
||||
return Error("ไม่พบหน่วยงานนี้ในระบบ", 404);
|
||||
|
||||
int no = 1;
|
||||
|
||||
foreach (var item in orgs.result.isRootTrue)
|
||||
{
|
||||
var placementProfiles = _context.PlacementProfiles
|
||||
.Where(x =>
|
||||
x.CreatedAt.Date >= startDate &&
|
||||
x.CreatedAt.Date <= endDate &&
|
||||
x.rootId.Contains(item.rootId) &&
|
||||
x.PlacementStatus.Trim().ToUpper() == "DONE")
|
||||
.GroupBy(x => x.typeCommand.Trim().ToUpper())
|
||||
.Select(g => new
|
||||
{
|
||||
TypeCommand = g.Key,
|
||||
Count = g.Count()
|
||||
})
|
||||
.ToList();
|
||||
|
||||
var placementAppointments = _context.PlacementAppointments
|
||||
.Where(x =>
|
||||
x.CreatedAt.Date >= startDate &&
|
||||
x.CreatedAt.Date <= endDate &&
|
||||
x.rootId.Contains(item.rootId) &&
|
||||
x.Status.Trim().ToUpper() == "DONE" &&
|
||||
x.type.Trim().ToUpper() == "OFFICER")
|
||||
.GroupBy(x => x.typeCommand.Trim().ToUpper())
|
||||
.Select(g => new
|
||||
{
|
||||
TypeCommand = g.Key,
|
||||
Count = g.Count()
|
||||
})
|
||||
.ToList();
|
||||
|
||||
var pt_count = _context.PlacementTransfers
|
||||
.Where(x =>
|
||||
x.CreatedAt.Date >= startDate &&
|
||||
x.CreatedAt.Date <= endDate &&
|
||||
x.rootOldId.Contains(item.rootId) &&
|
||||
x.Status.Trim().ToUpper() == "DONE")
|
||||
.Count();
|
||||
|
||||
var pr_count = _context.PlacementReceives
|
||||
.Where(x =>
|
||||
x.CreatedAt.Date >= startDate &&
|
||||
x.CreatedAt.Date <= endDate &&
|
||||
x.rootId.Contains(item.rootId) &&
|
||||
x.Status.Trim().ToUpper() == "DONE")
|
||||
.Count();
|
||||
|
||||
var po_count = _context.PlacementOfficers
|
||||
.Where(x =>
|
||||
x.CreatedAt.Date >= startDate &&
|
||||
x.CreatedAt.Date <= endDate &&
|
||||
x.rootOldId.Contains(item.rootId) &&
|
||||
x.Status.Trim().ToUpper() == "DONE")
|
||||
.Count();
|
||||
|
||||
var prp_count = _context.PlacementRepatriations
|
||||
.Where(x =>
|
||||
x.CreatedAt.Date >= startDate &&
|
||||
x.CreatedAt.Date <= endDate &&
|
||||
x.rootOldId.Contains(item.rootId) &&
|
||||
x.Status.Trim().ToUpper() == "DONE")
|
||||
.Count();
|
||||
|
||||
var ro_count = _context.RetirementOthers
|
||||
.Where(x =>
|
||||
x.CreatedAt.Date >= startDate &&
|
||||
x.CreatedAt.Date <= endDate &&
|
||||
x.rootOldId.Contains(item.rootId) &&
|
||||
x.Status.Trim().ToUpper() == "DONE")
|
||||
.Count();
|
||||
|
||||
var pp_appoint = placementProfiles.FirstOrDefault(x => x.TypeCommand == "APPOINT")?.Count ?? 0;
|
||||
var pp_slip = placementProfiles.FirstOrDefault(x => x.TypeCommand == "SLIP")?.Count ?? 0;
|
||||
var pp_move = placementProfiles.FirstOrDefault(x => x.TypeCommand == "MOVE")?.Count ?? 0;
|
||||
|
||||
var pa_appoint = placementAppointments.FirstOrDefault(x => x.TypeCommand == "APPOINT")?.Count ?? 0;
|
||||
var pa_slip = placementAppointments.FirstOrDefault(x => x.TypeCommand == "SLIP")?.Count ?? 0;
|
||||
var pa_move = placementAppointments.FirstOrDefault(x => x.TypeCommand == "MOVE")?.Count ?? 0;
|
||||
|
||||
data1.Add(new
|
||||
{
|
||||
no = no,
|
||||
rootName = item.name,
|
||||
pp_appoint = pp_appoint,
|
||||
pp_slip = pp_slip,
|
||||
pp_move = pp_move,
|
||||
pa_appoint = pa_appoint,
|
||||
pa_slip = pa_slip,
|
||||
pa_move = pa_move,
|
||||
pt_count = pt_count,
|
||||
pr_count = pr_count,
|
||||
po_count = po_count,
|
||||
prp_count = prp_count,
|
||||
ro_count = ro_count,
|
||||
total = (pp_appoint + pp_slip + pp_move + pa_appoint + pa_slip + pa_move + pt_count + pr_count + po_count + prp_count + ro_count)
|
||||
});
|
||||
no++;
|
||||
}
|
||||
no = 1;
|
||||
foreach (var item in orgs.result.isRootFalse)
|
||||
{
|
||||
var placementProfiles = _context.PlacementProfiles
|
||||
.Where(x =>
|
||||
x.CreatedAt.Date >= startDate &&
|
||||
x.CreatedAt.Date <= endDate &&
|
||||
x.rootId.Contains(item.rootId) &&
|
||||
x.PlacementStatus.Trim().ToUpper() == "DONE")
|
||||
.GroupBy(x => x.typeCommand.Trim().ToUpper())
|
||||
.Select(g => new
|
||||
{
|
||||
TypeCommand = g.Key,
|
||||
Count = g.Count()
|
||||
})
|
||||
.ToList();
|
||||
|
||||
var placementAppointments = _context.PlacementAppointments
|
||||
.Where(x =>
|
||||
x.CreatedAt.Date >= startDate &&
|
||||
x.CreatedAt.Date <= endDate &&
|
||||
x.rootId.Contains(item.rootId) &&
|
||||
x.Status.Trim().ToUpper() == "DONE" &&
|
||||
x.type.Trim().ToUpper() == "OFFICER")
|
||||
.GroupBy(x => x.typeCommand.Trim().ToUpper())
|
||||
.Select(g => new
|
||||
{
|
||||
TypeCommand = g.Key,
|
||||
Count = g.Count()
|
||||
})
|
||||
.ToList();
|
||||
|
||||
var pt_count = _context.PlacementTransfers
|
||||
.Where(x =>
|
||||
x.CreatedAt.Date >= startDate &&
|
||||
x.CreatedAt.Date <= endDate &&
|
||||
x.rootOldId.Contains(item.rootId) &&
|
||||
x.Status.Trim().ToUpper() == "DONE")
|
||||
.Count();
|
||||
|
||||
var pr_count = _context.PlacementReceives
|
||||
.Where(x =>
|
||||
x.CreatedAt.Date >= startDate &&
|
||||
x.CreatedAt.Date <= endDate &&
|
||||
x.rootId.Contains(item.rootId) &&
|
||||
x.Status.Trim().ToUpper() == "DONE")
|
||||
.Count();
|
||||
|
||||
var po_count = _context.PlacementOfficers
|
||||
.Where(x =>
|
||||
x.CreatedAt.Date >= startDate &&
|
||||
x.CreatedAt.Date <= endDate &&
|
||||
x.rootOldId.Contains(item.rootId) &&
|
||||
x.Status.Trim().ToUpper() == "DONE")
|
||||
.Count();
|
||||
|
||||
var prp_count = _context.PlacementRepatriations
|
||||
.Where(x =>
|
||||
x.CreatedAt.Date >= startDate &&
|
||||
x.CreatedAt.Date <= endDate &&
|
||||
x.rootOldId.Contains(item.rootId) &&
|
||||
x.Status.Trim().ToUpper() == "DONE")
|
||||
.Count();
|
||||
|
||||
var ro_count = _context.RetirementOthers
|
||||
.Where(x =>
|
||||
x.CreatedAt.Date >= startDate &&
|
||||
x.CreatedAt.Date <= endDate &&
|
||||
x.rootOldId.Contains(item.rootId) &&
|
||||
x.Status.Trim().ToUpper() == "DONE")
|
||||
.Count();
|
||||
|
||||
var pp_appoint = placementProfiles.FirstOrDefault(x => x.TypeCommand == "APPOINT")?.Count ?? 0;
|
||||
var pp_slip = placementProfiles.FirstOrDefault(x => x.TypeCommand == "SLIP")?.Count ?? 0;
|
||||
var pp_move = placementProfiles.FirstOrDefault(x => x.TypeCommand == "MOVE")?.Count ?? 0;
|
||||
|
||||
var pa_appoint = placementAppointments.FirstOrDefault(x => x.TypeCommand == "APPOINT")?.Count ?? 0;
|
||||
var pa_slip = placementAppointments.FirstOrDefault(x => x.TypeCommand == "SLIP")?.Count ?? 0;
|
||||
var pa_move = placementAppointments.FirstOrDefault(x => x.TypeCommand == "MOVE")?.Count ?? 0;
|
||||
|
||||
data2 .Add(new
|
||||
{
|
||||
no = no,
|
||||
rootName = item.name,
|
||||
pp_appoint = pp_appoint,
|
||||
pp_slip = pp_slip,
|
||||
pp_move = pp_move,
|
||||
pa_appoint = pa_appoint,
|
||||
pa_slip = pa_slip,
|
||||
pa_move = pa_move,
|
||||
pt_count = pt_count,
|
||||
pr_count = pr_count,
|
||||
po_count = po_count,
|
||||
prp_count = prp_count,
|
||||
ro_count = ro_count,
|
||||
total = (pp_appoint + pp_slip + pp_move + pa_appoint + pa_slip + pa_move + pt_count + pr_count + po_count + prp_count + ro_count)
|
||||
});
|
||||
no++;
|
||||
}
|
||||
}
|
||||
|
||||
data = new
|
||||
{
|
||||
template = "reportPlacement01All",
|
||||
reportName = "xlsx-report",
|
||||
data = new
|
||||
{
|
||||
date = $"ตั้งแต่วันที่ {startDate.Value.Date.ToThaiShortDate().ToThaiNumber()} ถึง {endDate.Value.Date.ToThaiShortDate().ToThaiNumber()}",
|
||||
dateCurrent = $"ณ วันที่ {DateTime.Now.Date.ToThaiShortDate().ToThaiNumber()}",
|
||||
data1,
|
||||
data1Count = new
|
||||
{
|
||||
pp_appoint = data1.Where(x => x.pp_appoint > 0).Sum(x => x.pp_appoint),
|
||||
pp_slip = data1.Where(x => x.pp_slip > 0).Sum(x => x.pp_slip),
|
||||
pp_move = data1.Where(x => x.pp_move > 0).Sum(x => x.pp_move),
|
||||
pa_appoint = data1.Where(x => x.pa_appoint > 0).Sum(x => x.pa_appoint),
|
||||
pa_slip = data1.Where(x => x.pa_slip > 0).Sum(x => x.pa_slip),
|
||||
pa_move = data1.Where(x => x.pa_move > 0).Sum(x => x.pa_move),
|
||||
pt_count = data1.Where(x => x.pt_count > 0).Sum(x => x.pt_count),
|
||||
pr_count = data1.Where(x => x.pr_count > 0).Sum(x => x.pr_count),
|
||||
po_count = data1.Where(x => x.po_count > 0).Sum(x => x.po_count),
|
||||
prp_count = data1.Where(x => x.prp_count > 0).Sum(x => x.prp_count),
|
||||
ro_count = data1.Where(x => x.ro_count > 0).Sum(x => x.ro_count),
|
||||
total = data1.Where(x => x.total > 0).Sum(x => x.total)
|
||||
},
|
||||
data2,
|
||||
data2Count = new
|
||||
{
|
||||
pp_appoint = data2.Where(x => x.pp_appoint > 0).Sum(x => x.pp_appoint),
|
||||
pp_slip = data2.Where(x => x.pp_slip > 0).Sum(x => x.pp_slip),
|
||||
pp_move = data2.Where(x => x.pp_move > 0).Sum(x => x.pp_move),
|
||||
pa_appoint = data2.Where(x => x.pa_appoint > 0).Sum(x => x.pa_appoint),
|
||||
pa_slip = data2.Where(x => x.pa_slip > 0).Sum(x => x.pa_slip),
|
||||
pa_move = data2.Where(x => x.pa_move > 0).Sum(x => x.pa_move),
|
||||
pt_count = data2.Where(x => x.pt_count > 0).Sum(x => x.pt_count),
|
||||
pr_count = data2.Where(x => x.pr_count > 0).Sum(x => x.pr_count),
|
||||
po_count = data2.Where(x => x.po_count > 0).Sum(x => x.po_count),
|
||||
prp_count = data2.Where(x => x.prp_count > 0).Sum(x => x.prp_count),
|
||||
ro_count = data2.Where(x => x.ro_count > 0).Sum(x => x.ro_count),
|
||||
total = data2.Where(x => x.total > 0).Sum(x => x.total)
|
||||
},
|
||||
sum = new
|
||||
{
|
||||
pp_appoint = data1.Where(x => x.pp_appoint > 0).Sum(x => x.pp_appoint) + data2.Where(x => x.pp_appoint > 0).Sum(x => x.pp_appoint),
|
||||
pp_slip = data1.Where(x => x.pp_slip > 0).Sum(x => x.pp_slip) + data2.Where(x => x.pp_slip > 0).Sum(x => x.pp_slip),
|
||||
pp_move = data1.Where(x => x.pp_move > 0).Sum(x => x.pp_move) + data2.Where(x => x.pp_move > 0).Sum(x => x.pp_move),
|
||||
pa_appoint = data1.Where(x => x.pa_appoint > 0).Sum(x => x.pa_appoint) + data2.Where(x => x.pa_appoint > 0).Sum(x => x.pa_appoint),
|
||||
pa_slip = data1.Where(x => x.pa_slip > 0).Sum(x => x.pa_slip) + data2.Where(x => x.pa_slip > 0).Sum(x => x.pa_slip),
|
||||
pa_move = data1.Where(x => x.pa_move > 0).Sum(x => x.pa_move) + data2.Where(x => x.pa_move > 0).Sum(x => x.pa_move),
|
||||
pt_count = data1.Where(x => x.pt_count > 0).Sum(x => x.pt_count) + data2.Where(x => x.pt_count > 0).Sum(x => x.pt_count),
|
||||
pr_count = data1.Where(x => x.pr_count > 0).Sum(x => x.pr_count) + data2.Where(x => x.pr_count > 0).Sum(x => x.pr_count),
|
||||
po_count = data1.Where(x => x.po_count > 0).Sum(x => x.po_count) + data2.Where(x => x.po_count > 0).Sum(x => x.po_count),
|
||||
prp_count = data1.Where(x => x.prp_count > 0).Sum(x => x.prp_count) + data2.Where(x => x.prp_count > 0).Sum(x => x.prp_count),
|
||||
ro_count = data1.Where(x => x.ro_count > 0).Sum(x => x.ro_count) + data2.Where(x => x.ro_count > 0).Sum(x => x.ro_count),
|
||||
total = data1.Where(x => x.total > 0).Sum(x => x.total) + data2.Where(x => x.total > 0).Sum(x => x.total)
|
||||
}
|
||||
}
|
||||
};
|
||||
return Success(data);
|
||||
}
|
||||
|
||||
|
|
@ -2794,17 +3064,129 @@ namespace BMA.EHR.Placement.Service.Controllers
|
|||
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||
[HttpGet("report2")]
|
||||
public async Task<ActionResult<ResponseObject>> report2(string? nodeId = null, int? node = 0, DateOnly? startDate = null, DateOnly? startEnd = null)
|
||||
public async Task<ActionResult<ResponseObject>> report2(string nodeId = "", int? node = null, DateTime? startDate = null, DateTime? endDate = null)
|
||||
{
|
||||
|
||||
var data = new
|
||||
var apiUrl = $"{_configuration["API"]}/org/find/node-all";
|
||||
var data = new object();
|
||||
var data1 = new List<dynamic>();
|
||||
var data2 = new List<dynamic>();
|
||||
using (var client = new HttpClient())
|
||||
{
|
||||
template = "placement02",
|
||||
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.Replace("Bearer ", ""));
|
||||
var _req = new HttpRequestMessage(HttpMethod.Post, apiUrl);
|
||||
var _res = await client.PostAsJsonAsync(apiUrl, new
|
||||
{
|
||||
node,
|
||||
nodeId,
|
||||
});
|
||||
var _result = await _res.Content.ReadAsStringAsync();
|
||||
var orgs = JsonConvert.DeserializeObject<NodeAllRequest>(_result);
|
||||
|
||||
if (orgs == null || orgs.result == null)
|
||||
return Error("ไม่พบหน่วยงานนี้ในระบบ", 404);
|
||||
|
||||
int no = 1;
|
||||
|
||||
foreach (var item in orgs.result.isRootTrue)
|
||||
{
|
||||
var placementAppointments = _context.PlacementAppointments
|
||||
.Where(x =>
|
||||
x.CreatedAt.Date >= startDate &&
|
||||
x.CreatedAt.Date <= endDate &&
|
||||
x.rootId.Contains(item.rootId) &&
|
||||
x.Status.Trim().ToUpper() == "DONE" &&
|
||||
x.type.Trim().ToUpper() == "OFFICER")
|
||||
.GroupBy(x => x.typeCommand.Trim().ToUpper())
|
||||
.Select(g => new
|
||||
{
|
||||
TypeCommand = g.Key,
|
||||
Count = g.Count()
|
||||
})
|
||||
.ToList();
|
||||
|
||||
var pa_appoint = placementAppointments.FirstOrDefault(x => x.TypeCommand == "APPOINT")?.Count ?? 0;
|
||||
var pa_slip = placementAppointments.FirstOrDefault(x => x.TypeCommand == "SLIP")?.Count ?? 0;
|
||||
var pa_move = placementAppointments.FirstOrDefault(x => x.TypeCommand == "MOVE")?.Count ?? 0;
|
||||
|
||||
data1.Add(new
|
||||
{
|
||||
no = no,
|
||||
rootName = item.name,
|
||||
pa_appoint = pa_appoint,
|
||||
pa_slip = pa_slip,
|
||||
pa_move = pa_move,
|
||||
total = (pa_appoint + pa_slip + pa_move)
|
||||
});
|
||||
no++;
|
||||
}
|
||||
no = 1;
|
||||
foreach (var item in orgs.result.isRootFalse)
|
||||
{
|
||||
var placementAppointments = _context.PlacementAppointments
|
||||
.Where(x =>
|
||||
x.CreatedAt.Date >= startDate &&
|
||||
x.CreatedAt.Date <= endDate &&
|
||||
x.rootId.Contains(item.rootId) &&
|
||||
x.Status.Trim().ToUpper() == "DONE" &&
|
||||
x.type.Trim().ToUpper() == "OFFICER")
|
||||
.GroupBy(x => x.typeCommand.Trim().ToUpper())
|
||||
.Select(g => new
|
||||
{
|
||||
TypeCommand = g.Key,
|
||||
Count = g.Count()
|
||||
})
|
||||
.ToList();
|
||||
|
||||
var pa_appoint = placementAppointments.FirstOrDefault(x => x.TypeCommand == "APPOINT")?.Count ?? 0;
|
||||
var pa_slip = placementAppointments.FirstOrDefault(x => x.TypeCommand == "SLIP")?.Count ?? 0;
|
||||
var pa_move = placementAppointments.FirstOrDefault(x => x.TypeCommand == "MOVE")?.Count ?? 0;
|
||||
|
||||
data2.Add(new
|
||||
{
|
||||
no = no,
|
||||
rootName = item.name,
|
||||
pa_appoint = pa_appoint,
|
||||
pa_slip = pa_slip,
|
||||
pa_move = pa_move,
|
||||
total = (pa_appoint + pa_slip + pa_move)
|
||||
});
|
||||
no++;
|
||||
}
|
||||
}
|
||||
|
||||
data = new
|
||||
{
|
||||
template = "reportPlacement02All",
|
||||
reportName = "xlsx-report",
|
||||
data = ""
|
||||
|
||||
data = new
|
||||
{
|
||||
date = $"ตั้งแต่วันที่ {startDate.Value.Date.ToThaiShortDate().ToThaiNumber()} ถึง {endDate.Value.Date.ToThaiShortDate().ToThaiNumber()}",
|
||||
dateCurrent = $"ณ วันที่ {DateTime.Now.Date.ToThaiShortDate().ToThaiNumber()}",
|
||||
data1,
|
||||
data1Count = new
|
||||
{
|
||||
pa_appoint = data1.Where(x => x.pa_appoint > 0).Sum(x => x.pa_appoint),
|
||||
pa_slip = data1.Where(x => x.pa_slip > 0).Sum(x => x.pa_slip),
|
||||
pa_move = data1.Where(x => x.pa_move > 0).Sum(x => x.pa_move),
|
||||
total = data1.Where(x => x.total > 0).Sum(x => x.total)
|
||||
},
|
||||
data2,
|
||||
data2Count = new
|
||||
{
|
||||
pa_appoint = data2.Where(x => x.pa_appoint > 0).Sum(x => x.pa_appoint),
|
||||
pa_slip = data2.Where(x => x.pa_slip > 0).Sum(x => x.pa_slip),
|
||||
pa_move = data2.Where(x => x.pa_move > 0).Sum(x => x.pa_move),
|
||||
total = data2.Where(x => x.total > 0).Sum(x => x.total)
|
||||
},
|
||||
sum = new
|
||||
{
|
||||
pa_appoint = data1.Where(x => x.pa_appoint > 0).Sum(x => x.pa_appoint) + data2.Where(x => x.pa_appoint > 0).Sum(x => x.pa_appoint),
|
||||
pa_slip = data1.Where(x => x.pa_slip > 0).Sum(x => x.pa_slip) + data2.Where(x => x.pa_slip > 0).Sum(x => x.pa_slip),
|
||||
pa_move = data1.Where(x => x.pa_move > 0).Sum(x => x.pa_move) + data2.Where(x => x.pa_move > 0).Sum(x => x.pa_move),
|
||||
total = data1.Where(x => x.total > 0).Sum(x => x.total) + data2.Where(x => x.total > 0).Sum(x => x.total)
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
return Success(data);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue