Commit c5d7f4fc by 纪旭 韦

基本完成绩效汇总三个表

parent cdff00e8
...@@ -279,6 +279,7 @@ public ApiResponse TableSpecial([FromBody] ConditionRequest request) ...@@ -279,6 +279,7 @@ public ApiResponse TableSpecial([FromBody] ConditionRequest request)
#region 全院发放
/// <summary> /// <summary>
/// 全院绩效发放(视图) /// 全院绩效发放(视图)
/// </summary> /// </summary>
...@@ -347,8 +348,67 @@ public IActionResult AllComputeViewDownload([FromBody] BeginEndTimeDown request) ...@@ -347,8 +348,67 @@ public IActionResult AllComputeViewDownload([FromBody] BeginEndTimeDown request)
return File(memoryStream, memi, Path.GetFileName(fileInfo.Name)); return File(memoryStream, memi, Path.GetFileName(fileInfo.Name));
} }
/// <summary>
/// 全院绩效发放汇总表(视图)
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[Route("wholehospital_grant_summary")]
[HttpPost]
public ApiResponse GetWholeHospitalGrantSummary([FromBody] HospitalGrantSummary request)
{
return new ApiResponse(ResponseType.OK, "ok", _computeService.GetPerformanceSummary(request, "view_allot_sign_emp"));
}
/// <summary> /// <summary>
/// 全院绩效发放汇总表(视图)下载
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[Route("wholehospital_grant_summary/download")]
[HttpPost]
public IActionResult WholeHospitalGrantSummaryDownload([FromBody] HospitalGrantSummaryDown request)
{
if (request.HospitalId == 0)
throw new PerformanceException("医院ID不能为空");
DateTime bdate = DateTime.Now;
DateTime edate = DateTime.Now;
if (string.IsNullOrEmpty(request.BeginTime) || !DateTime.TryParse(request.BeginTime, out bdate) ||
string.IsNullOrEmpty(request.EndTime) || !DateTime.TryParse(request.EndTime, out edate))
throw new PerformanceException("请输入正确的时间");
var (a,list) = _computeService.GetAllComputeViewByDateAndTotal("view_allot_sign_emp", bdate, edate.AddMonths(1), request.GroupBy, request.SumBy);
if (null == list)
throw new PerformanceException("当前绩效记录不存在");
List<string> headlist = new List<string>();
foreach (var item in request.GroupBy.Union(request.SumBy).ToList())
{
headlist.Add(item.ToLower());
}
var filepath = downloadService.AllComputerViewReportByDate(request.HospitalId, list, "/report/wholehospital_grant_summary", "全院绩效发放", bdate, edate.AddMonths(1), headlist.ToArray());
var memoryStream = new MemoryStream();
using (var stream = new FileStream(filepath, FileMode.Open))
{
stream.CopyToAsync(memoryStream).Wait();
}
memoryStream.Seek(0, SeekOrigin.Begin);
var provider = new FileExtensionContentTypeProvider();
FileInfo fileInfo = new FileInfo(filepath);
var memi = provider.Mappings[".xlsx"];
return File(memoryStream, memi, Path.GetFileName(fileInfo.Name));
}
#endregion
#region 全院核算发放
/// <summary>
/// 全院核算绩效发放(视图) /// 全院核算绩效发放(视图)
/// </summary> /// </summary>
/// <param name="request"></param> /// <param name="request"></param>
...@@ -380,58 +440,66 @@ public ApiResponse GethosdataView([FromBody] BeginEndTime request) ...@@ -380,58 +440,66 @@ public ApiResponse GethosdataView([FromBody] BeginEndTime request)
} }
/// <summary> /// <summary>
/// 全院核算绩效发放汇总表(视图) /// 全院核算绩效发放(视图) 下载
/// </summary> /// </summary>
/// <param name="request"></param> /// <param name="request"></param>
/// <returns></returns> /// <returns></returns>
[Route("wholehospital_grant_summary")] [Route("gethosdataView/download")]
[HttpPost] [HttpPost]
public ApiResponse GetWholeHospitalGrantSummary([FromBody] HospitalGrantSummary request) public IActionResult GethosdataView([FromBody] BeginEndTimeDown request)
{ {
if (request.HospitalId == 0)
throw new PerformanceException("医院ID不能为空");
DateTime bdate = DateTime.Now; DateTime bdate = DateTime.Now;
DateTime edate = DateTime.Now; DateTime edate = DateTime.Now;
if (string.IsNullOrEmpty(request.BeginTime) || !DateTime.TryParse(request.BeginTime, out bdate) || if (string.IsNullOrEmpty(request.BeginTime) || !DateTime.TryParse(request.BeginTime, out bdate) ||
string.IsNullOrEmpty(request.EndTime) || !DateTime.TryParse(request.EndTime, out edate)) string.IsNullOrEmpty(request.EndTime) || !DateTime.TryParse(request.EndTime, out edate))
throw new PerformanceException("请输入正确的时间"); throw new PerformanceException("请输入正确的时间");
var datas = _computeService.GetAllComputeViewByDateAndTotal("view_allot_sign_dept", bdate, edate.AddMonths(1),request.GroupBy,request.SumBy); var list = _computeService.GetAllComputeViewByDate("view_allot_sign_dept", bdate, edate.AddMonths(1));
if (null == datas) if (null == list)
throw new PerformanceException("当前绩效记录不存在"); throw new PerformanceException("当前绩效记录不存在");
var headlist = request.GroupBy.Union(request.SumBy).Select(t=>t.ToLower()).ToList(); var filepath = downloadService.AllComputerViewReportByDate(request.HospitalId, list, "/report/wholehospital_accounting_grant", "全院核算绩效发放", bdate, edate.AddMonths(1));
var AllComputeView = ComputeConfig.AllComputeView.Where(t=> headlist.Contains(t.Name.ToLower())).ToList();
List<Head> head = new List<Head>(); var memoryStream = new MemoryStream();
foreach (var item in AllComputeView) using (var stream = new FileStream(filepath, FileMode.Open))
{ {
Head head1 = new Head() stream.CopyToAsync(memoryStream).Wait();
{
Name = item.Name,
Alias = item.Alias
};
head.Add(head1);
} }
memoryStream.Seek(0, SeekOrigin.Begin);
var provider = new FileExtensionContentTypeProvider();
FileInfo fileInfo = new FileInfo(filepath);
var memi = provider.Mappings[".xlsx"];
return File(memoryStream, memi, Path.GetFileName(fileInfo.Name));
}
var list = new QueryComputeByDateGetTotal /// <summary>
{ /// 全院核算绩效发放汇总表(视图)
Head = head, /// </summary>
Data = datas.ToList(), /// <param name="request"></param>
TotalData = _computeService.SumDatas(datas), /// <returns></returns>
}; [Route("wholehospital_accounting_grant_summary")]
return new ApiResponse(ResponseType.OK, "ok", list); [HttpPost]
public ApiResponse GetWholeHospitalAccountingGrantSummary([FromBody] HospitalGrantSummary request)
{
return new ApiResponse(ResponseType.OK, "ok", _computeService.GetPerformanceSummary(request, "view_allot_sign_dept"));
} }
/// <summary> /// <summary>
/// 全院核算绩效发放(视图) 下载 /// 全院核算绩效发放汇总表(视图)下载
/// </summary> /// </summary>
/// <param name="request"></param> /// <param name="request"></param>
/// <returns></returns> /// <returns></returns>
[Route("gethosdataView/download")] [Route("wholehospital_accounting_grant_summary/download")]
[HttpPost] [HttpPost]
public IActionResult GethosdataView([FromBody] BeginEndTimeDown request) public IActionResult WholeHospitalAccountingGrantSummaryDownload([FromBody] HospitalGrantSummaryDown request)
{ {
if (request.HospitalId == 0) if (request.HospitalId == 0)
throw new PerformanceException("医院ID不能为空"); throw new PerformanceException("医院ID不能为空");
...@@ -442,11 +510,19 @@ public IActionResult GethosdataView([FromBody] BeginEndTimeDown request) ...@@ -442,11 +510,19 @@ public IActionResult GethosdataView([FromBody] BeginEndTimeDown request)
string.IsNullOrEmpty(request.EndTime) || !DateTime.TryParse(request.EndTime, out edate)) string.IsNullOrEmpty(request.EndTime) || !DateTime.TryParse(request.EndTime, out edate))
throw new PerformanceException("请输入正确的时间"); throw new PerformanceException("请输入正确的时间");
var list = _computeService.GetAllComputeViewByDate("view_allot_sign_dept", bdate, edate.AddMonths(1));
var (a,list) = _computeService.GetAllComputeViewByDateAndTotal("view_allot_sign_dept", bdate, edate.AddMonths(1), request.GroupBy, request.SumBy);
if (null == list) if (null == list)
throw new PerformanceException("当前绩效记录不存在"); throw new PerformanceException("当前绩效记录不存在");
var filepath = downloadService.AllComputerViewReportByDate(request.HospitalId, list, "/report/wholehospital_accounting_grant", "全院核算绩效发放", bdate, edate.AddMonths(1)); List<string> headlist = new List<string>();
foreach (var item in request.GroupBy.Union(request.SumBy).ToList())
{
headlist.Add(item.ToLower());
}
var filepath = downloadService.AllComputerViewReportByDate(request.HospitalId, list, "/report/wholehospital_accounting_grant_summary", "全院绩效发放", bdate, edate.AddMonths(1), headlist.ToArray());
var memoryStream = new MemoryStream(); var memoryStream = new MemoryStream();
using (var stream = new FileStream(filepath, FileMode.Open)) using (var stream = new FileStream(filepath, FileMode.Open))
...@@ -458,9 +534,12 @@ public IActionResult GethosdataView([FromBody] BeginEndTimeDown request) ...@@ -458,9 +534,12 @@ public IActionResult GethosdataView([FromBody] BeginEndTimeDown request)
FileInfo fileInfo = new FileInfo(filepath); FileInfo fileInfo = new FileInfo(filepath);
var memi = provider.Mappings[".xlsx"]; var memi = provider.Mappings[".xlsx"];
return File(memoryStream, memi, Path.GetFileName(fileInfo.Name)); return File(memoryStream, memi, Path.GetFileName(fileInfo.Name));
} }
#endregion
#region 全院财务发放
/// <summary> /// <summary>
/// 获取财务全院绩效列表(视图) /// 获取财务全院绩效列表(视图)
/// </summary> /// </summary>
...@@ -528,6 +607,66 @@ public IActionResult AllComputeByPMViewDownLoad([FromBody] BeginEndTimeDown requ ...@@ -528,6 +607,66 @@ public IActionResult AllComputeByPMViewDownLoad([FromBody] BeginEndTimeDown requ
var memi = provider.Mappings[".xlsx"]; var memi = provider.Mappings[".xlsx"];
return File(memoryStream, memi, Path.GetFileName(fileInfo.Name)); return File(memoryStream, memi, Path.GetFileName(fileInfo.Name));
} }
/// <summary>
/// 财务全院绩效发放汇总表(视图)
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[Route("wholehospital_finance_grant_summary")]
[HttpPost]
public ApiResponse GetWholeHospitalFinanceGrantSummary([FromBody] HospitalGrantSummary request)
{
return new ApiResponse(ResponseType.OK, "ok", _computeService.GetPerformanceSummary(request, "view_allot_sign_emp_finance"));
}
/// <summary>
/// 财务全院绩效发放汇总表(视图)下载
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[Route("wholehospital_finance_grant_summary/download")]
[HttpPost]
public IActionResult WholeHospitalFinanceGrantSummaryDownload([FromBody] HospitalGrantSummaryDown request)
{
if (request.HospitalId == 0)
throw new PerformanceException("医院ID不能为空");
DateTime bdate = DateTime.Now;
DateTime edate = DateTime.Now;
if (string.IsNullOrEmpty(request.BeginTime) || !DateTime.TryParse(request.BeginTime, out bdate) ||
string.IsNullOrEmpty(request.EndTime) || !DateTime.TryParse(request.EndTime, out edate))
throw new PerformanceException("请输入正确的时间");
var (a, list) = _computeService.GetAllComputeViewByDateAndTotal("view_allot_sign_dept", bdate, edate.AddMonths(1), request.GroupBy, request.SumBy);
if (null == list)
throw new PerformanceException("当前绩效记录不存在");
List<string> headlist = new List<string>();
foreach (var item in request.GroupBy.Union(request.SumBy).ToList())
{
headlist.Add(item.ToLower());
}
var filepath = downloadService.AllComputerViewReportByDate(request.HospitalId, list, "/report/wholehospital_finance_grant", "全院绩效发放", bdate, edate.AddMonths(1), headlist.ToArray());
var memoryStream = new MemoryStream();
using (var stream = new FileStream(filepath, FileMode.Open))
{
stream.CopyToAsync(memoryStream).Wait();
}
memoryStream.Seek(0, SeekOrigin.Begin);
var provider = new FileExtensionContentTypeProvider();
FileInfo fileInfo = new FileInfo(filepath);
var memi = provider.Mappings[".xlsx"];
return File(memoryStream, memi, Path.GetFileName(fileInfo.Name));
}
#endregion
#endregion #endregion
} }
} }
\ No newline at end of file
...@@ -45,5 +45,6 @@ public static void Main(string[] args) ...@@ -45,5 +45,6 @@ public static void Main(string[] args)
logging.SetMinimumLevel(LogLevel.Trace); logging.SetMinimumLevel(LogLevel.Trace);
}) })
.UseNLog(); .UseNLog();
} }
} }
...@@ -1663,6 +1663,20 @@ ...@@ -1663,6 +1663,20 @@
<param name="request"></param> <param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.ReportController.GetWholeHospitalGrantSummary(Performance.DtoModels.HospitalGrantSummary)">
<summary>
全院绩效发放汇总表(视图)
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ReportController.WholeHospitalGrantSummaryDownload(Performance.DtoModels.HospitalGrantSummaryDown)">
<summary>
全院绩效发放汇总表(视图)下载
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ReportController.GethosdataView(Performance.DtoModels.BeginEndTime)"> <member name="M:Performance.Api.Controllers.ReportController.GethosdataView(Performance.DtoModels.BeginEndTime)">
<summary> <summary>
全院核算绩效发放(视图) 全院核算绩效发放(视图)
...@@ -1670,16 +1684,23 @@ ...@@ -1670,16 +1684,23 @@
<param name="request"></param> <param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.ReportController.GetWholeHospitalGrantSummary(Performance.DtoModels.HospitalGrantSummary)"> <member name="M:Performance.Api.Controllers.ReportController.GethosdataView(Performance.DtoModels.BeginEndTimeDown)">
<summary>
全院核算绩效发放(视图) 下载
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ReportController.GetWholeHospitalAccountingGrantSummary(Performance.DtoModels.HospitalGrantSummary)">
<summary> <summary>
全院核算绩效发放汇总表(视图) 全院核算绩效发放汇总表(视图)
</summary> </summary>
<param name="request"></param> <param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.ReportController.GethosdataView(Performance.DtoModels.BeginEndTimeDown)"> <member name="M:Performance.Api.Controllers.ReportController.WholeHospitalAccountingGrantSummaryDownload(Performance.DtoModels.HospitalGrantSummaryDown)">
<summary> <summary>
全院核算绩效发放(视图) 下载 全院核算绩效发放汇总表(视图)下载
</summary> </summary>
<param name="request"></param> <param name="request"></param>
<returns></returns> <returns></returns>
...@@ -1698,6 +1719,20 @@ ...@@ -1698,6 +1719,20 @@
<param name="request"></param> <param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.ReportController.GetWholeHospitalFinanceGrantSummary(Performance.DtoModels.HospitalGrantSummary)">
<summary>
财务全院绩效发放汇总表(视图)
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ReportController.WholeHospitalFinanceGrantSummaryDownload(Performance.DtoModels.HospitalGrantSummaryDown)">
<summary>
财务全院绩效发放汇总表(视图)下载
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ReportGlobalController.GetAllReportGlobal(System.Int32)"> <member name="M:Performance.Api.Controllers.ReportGlobalController.GetAllReportGlobal(System.Int32)">
<summary> <summary>
获取报表配置信息 获取报表配置信息
......
...@@ -73,25 +73,34 @@ public class HospitalGrantSummary : BeginEndTime ...@@ -73,25 +73,34 @@ public class HospitalGrantSummary : BeginEndTime
public List<string> GroupBy { get; set; } public List<string> GroupBy { get; set; }
public List<string> SumBy { get; set; } public List<string> SumBy { get; set; }
} }
public class HospitalGrantSummaryDown : HospitalGrantSummary
{
public int HospitalId { get; set; }
public string[] heads { get; set; }
}
public class QueryComputeByDateGetPage public class QueryComputeByDateGetPage : GetPage
{ {
public List<dynamic> Data { get; set; } public List<dynamic> Data { get; set; }
public Dictionary<string, decimal> TotalData { get; set; } public Dictionary<string, decimal> TotalData { get; set; }
}
public class GetPage
{
public int CurrentPage { get; set; } public int CurrentPage { get; set; }
public int TotalPages { get; set; } public int TotalPages { get; set; }
public int PageSize { get; set; } public int PageSize { get; set; }
public int TotalCount { get; set; } public int TotalCount { get; set; }
} }
public class QueryComputeByDateGetTotal public class QueryComputeByDateGetTotal: GetPage
{ {
public List<Head> Head { get; set; } public List<Head> Head { get; set; }
public List<dynamic> Data { get; set; } public List<dynamic> Data { get; set; }
public Dictionary<string, decimal> TotalData { get; set; }} public decimal TotalData { get; set; }}
}
public class Head
{
public string Name { get; set; }
public string Alias { get; set; }
} }
public class Head
{
public string Name { get; set; }
public string Alias { get; set; }
}
...@@ -6,7 +6,7 @@ public class view_allot_sign_dept ...@@ -6,7 +6,7 @@ public class view_allot_sign_dept
public int AllotID { get; set; } public int AllotID { get; set; }
public int Year { get; set; } public int Year { get; set; }
public int Month { get; set; } public int Month { get; set; }
public int UnitName { get; set; } public int UnitType { get; set; }
public int AccountingUnit { get; set; } public int AccountingUnit { get; set; }
public int PerforFee { get; set; } public int PerforFee { get; set; }
public int WorkloadFee { get; set; } public int WorkloadFee { get; set; }
......
using Microsoft.EntityFrameworkCore; using Dapper;
using Microsoft.EntityFrameworkCore;
using Performance.DtoModels; using Performance.DtoModels;
using Performance.EntityModels; using Performance.EntityModels;
using System; using System;
...@@ -406,25 +407,43 @@ public List<dynamic> QueryComputeByDate(string viewName, DateTime beginTime, Dat ...@@ -406,25 +407,43 @@ public List<dynamic> QueryComputeByDate(string viewName, DateTime beginTime, Dat
return DapperQuery<dynamic>(sql, new { beginTime = beginTime.ToString("yyyy-MM-dd"), endTime = endTime.ToString("yyyy-MM-dd") }).ToList(); return DapperQuery<dynamic>(sql, new { beginTime = beginTime.ToString("yyyy-MM-dd"), endTime = endTime.ToString("yyyy-MM-dd") }).ToList();
} }
public List<dynamic> QueryComputeByDateAndTotal(string viewName, DateTime beginTime, DateTime endTime,List<string> groupBy, List<string> sumBy)
public (int count, List<dynamic> data) QueryComputeByDateAndTotal(string viewName, DateTime beginTime, DateTime endTime, List<string> groupBy, List<string> sumBy, int pageNumber, int pageSize)
{ {
string Groupby = ""; if (!new string[] { "view_allot_sign_dept", "view_allot_sign_emp", "view_allot_sign_emp_finance" }.Contains(viewName)) return (0, new List<dynamic>());
string Sumby = "";
foreach (var item in groupBy) var sql = $@" SELECT * FROM {viewName} where STR_TO_DATE(concat(Year,'-',Month,'-01'),'%Y-%m-%d') >= @beginTime
{ and STR_TO_DATE(concat(Year,'-',Month,'-01'),'%Y-%m-%d') < @endTime ";
Groupby += $@"{item},";
} Dictionary<string, List<string>> dict = new Dictionary<string, List<string>>
foreach (var item in sumBy)
{ {
Sumby += $@"Sum({item}) {item},"; { "view_allot_sign_dept_group", new List<string>{ "hospitalid", "allotid", "year", "month", "unittype", "accountingunit" } },
} { "view_allot_sign_dept_sum", new List<string>{ "perforfee", "workloadfee", "assessbeforeotherfee", "perfortotal", "scoringaverage", "extra", "medicineextra", "materialsextra", "assesslaterotherfee", "assesslaterperfortotal", "adjustfactor", "adjustlaterotherfee", "aprperforamount", "hideaprotherperforamount", "assesslatermanagementfee", "realgivefee" } },
Groupby = Groupby.Substring(0,Groupby.Length - 1); { "view_allot_sign_emp_group", new List<string>{ "hospitalid", "year", "month", "source", "allotid", "secondid", "states", "unittype", "accountingunit", "isshowmanage", "employeename", "jobnumber", "jobtitle", "emp_unittype", "emp_accountingunit", "bankcard", "batch", "jobcategory", "duty", "titleposition" } },
Sumby = Sumby.Substring(0,Sumby.Length - 1); { "view_allot_sign_emp_sum", new List<string>{ "perforsumfee", "performanagementfee", "nightworkperfor", "adjustlaterotherfee", "otherperfor", "hideotherperfor", "shouldgivefee", "reservedratiofee", "realgivefee" } },
{ "view_allot_sign_emp_finance_group", new List<string>{ "hospitalid", "year", "month", "allotid", "jobnumber", "employeename", "jobtitle", "unittype", "accountingunit", "bankcard", "jobcategory", "duty", "titleposition" } },
{ "view_allot_sign_emp_finance_sum", new List<string>{ "perforsumfee", "performanagementfee", "nightworkperfor", "adjustlaterotherfee", "otherperfor", "hideotherperfor", "shouldgivefee", "reservedratiofee", "realgivefee" } },
};
var sql = $@"SELECT {Groupby},{Sumby} FROM {viewName} where STR_TO_DATE(concat(Year,'-',Month,'-01'),'%Y-%m-%d') >= @beginTime if (groupBy == null || !groupBy.Any(t => !string.IsNullOrEmpty(t))) groupBy = dict[viewName + "_group"];
and STR_TO_DATE(concat(Year,'-',Month,'-01'),'%Y-%m-%d') < @endTime Group By {Groupby}";
return DapperQuery<dynamic>(sql, new { beginTime = beginTime.ToString("yyyy-MM-dd"), endTime = endTime.ToString("yyyy-MM-dd") }).ToList(); if (sumBy == null || !sumBy.Any(t => !string.IsNullOrEmpty(t))) sumBy = dict[viewName + "_sum"];
sql = $"select {string.Join(",", groupBy)}, {string.Join(",", sumBy.Select(t => $"sum({t}) {t}"))} from ({sql}) tab group by {string.Join(",", groupBy)}";
sql = $@" select 0 as count;{sql}";
if (pageNumber != 0 && pageSize != 0)
sql = $@" select count(1) count from ({sql}) tab;
select * from ({sql}) tab limit {pageSize} offset {(pageNumber - 1) * pageSize};";
var queryMulti = context.Database.GetDbConnection().QueryMultiple(sql, new { beginTime, endTime });
var count = queryMulti.ReadFirstOrDefault<int>();
var data = queryMulti.Read<dynamic>()?.ToList();
return (count, data);
} }
public CustonPagingData QueryCustom(CustomPagingRequest request, bool IsHead) public CustonPagingData QueryCustom(CustomPagingRequest request, bool IsHead)
......
...@@ -1999,7 +1999,7 @@ private decimal GetDecimal(decimal? value, decimal _ = 0) ...@@ -1999,7 +1999,7 @@ private decimal GetDecimal(decimal? value, decimal _ = 0)
/// </summary> /// </summary>
/// <param name="request"></param> /// <param name="request"></param>
/// <returns></returns> /// <returns></returns>
public List<cof_alias> CustomColumnHeaders(int hospitalId, string route) public List<cof_alias> CustomColumnHeaders(int hospitalId, string route,params string[] heads)
{ {
var init = new List<cof_alias>(); var init = new List<cof_alias>();
var alias = cofaliasRepository.GetEntities(t => t.HospitalId == hospitalId) ?? new List<cof_alias>(); var alias = cofaliasRepository.GetEntities(t => t.HospitalId == hospitalId) ?? new List<cof_alias>();
...@@ -2016,6 +2016,11 @@ public List<cof_alias> CustomColumnHeaders(int hospitalId, string route) ...@@ -2016,6 +2016,11 @@ public List<cof_alias> CustomColumnHeaders(int hospitalId, string route)
{ "/report/wholehospital_grant" , ComputeConfig.AllComputeViewByDate }, { "/report/wholehospital_grant" , ComputeConfig.AllComputeViewByDate },
{ "/report/wholehospital_accounting_grant" , ComputeConfig.AllComputeDepartmentViewByDate }, { "/report/wholehospital_accounting_grant" , ComputeConfig.AllComputeDepartmentViewByDate },
{ "/report/wholehospital_finance_grant" , ComputeConfig.AllComputePersonViewByDate }, { "/report/wholehospital_finance_grant" , ComputeConfig.AllComputePersonViewByDate },
{ "/report/wholehospital_grant_summary" , ComputeConfig.PerformanceTotal(route,heads) },
{ "/report/wholehospital_accounting_grant_summary" , ComputeConfig.PerformanceTotal(route,heads) },
{ "/report/wholehospital_finance_grant_summary" , ComputeConfig.PerformanceTotal(route,heads) },
}; };
init = pairs.ContainsKey(route.ToLower()) ? pairs[route.ToLower()] : new List<cof_alias>(); init = pairs.ContainsKey(route.ToLower()) ? pairs[route.ToLower()] : new List<cof_alias>();
} }
...@@ -2074,12 +2079,68 @@ public List<dynamic> GetAllComputeViewByDate(string viewName, DateTime beginTime ...@@ -2074,12 +2079,68 @@ public List<dynamic> GetAllComputeViewByDate(string viewName, DateTime beginTime
{ {
return reportRepository.QueryComputeByDate(viewName, beginTime, endTime); return reportRepository.QueryComputeByDate(viewName, beginTime, endTime);
} }
public List<dynamic> GetAllComputeViewByDateAndTotal(string viewName, DateTime beginTime, DateTime endTime,List<string> groupBy,List<string> sumBy) public (int count, List<dynamic> data) GetAllComputeViewByDateAndTotal(string viewName, DateTime beginTime, DateTime endTime,List<string> groupBy,List<string> sumBy,int pageNumber = 0,int pageSize = 0)
{ {
return reportRepository.QueryComputeByDateAndTotal(viewName, beginTime, endTime,groupBy,sumBy); return reportRepository.QueryComputeByDateAndTotal(viewName, beginTime, endTime,groupBy,sumBy,pageNumber,pageSize);
} }
public QueryComputeByDateGetTotal GetPerformanceSummary(HospitalGrantSummary request,string ViewName)
{
DateTime bdate = DateTime.Now;
DateTime edate = DateTime.Now;
if (string.IsNullOrEmpty(request.BeginTime) || !DateTime.TryParse(request.BeginTime, out bdate) ||
string.IsNullOrEmpty(request.EndTime) || !DateTime.TryParse(request.EndTime, out edate))
throw new PerformanceException("请输入正确的时间");
var headlist = request.GroupBy.Union(request.SumBy).Select(t => t.ToLower()).ToList();
List<cof_alias> AllComputeView = ComputeConfig.AllComputeView.ToList();
List<Head> head = new List<Head>();
if ((request.GroupBy != null && request.GroupBy.Any(t => !string.IsNullOrEmpty(t))) &&
(request.SumBy != null && request.SumBy.Any(t => !string.IsNullOrEmpty(t))))
AllComputeView = ComputeConfig.AllComputeView.Where(t => headlist.Contains(t.Name.ToLower())).ToList();
foreach (var item in AllComputeView)
{
Head head1 = new Head()
{
Name = item.Name,
Alias = item.Alias
};
head.Add(head1);
}
decimal TotalData = 0;
var(TotalCount, datas) = GetAllComputeViewByDateAndTotal(ViewName, bdate, edate.AddMonths(1), request.GroupBy, request.SumBy);
if (null == datas)
throw new PerformanceException("当前绩效记录不存在");
foreach (var item in SumDatas(datas))
{
TotalData += item.Value;
}
var list = new QueryComputeByDateGetTotal
{
Head = head,
Data = datas,
TotalData = TotalData,
TotalCount = TotalCount,
TotalPages = (int)Math.Ceiling((double)TotalCount / request.PageSize),
CurrentPage = request.CurrentPage,
PageSize = request.PageSize
};
return list;
}
/// <summary> /// <summary>
/// /// 合计数据
/// </summary> /// </summary>
/// <param name="datas"></param> /// <param name="datas"></param>
/// <returns></returns> /// <returns></returns>
...@@ -2119,6 +2180,16 @@ public List<dynamic> GetAllComputeViewByDateAndTotal(string viewName, DateTime b ...@@ -2119,6 +2180,16 @@ public List<dynamic> GetAllComputeViewByDateAndTotal(string viewName, DateTime b
public class ComputeConfig public class ComputeConfig
{ {
public static List<cof_alias> PerformanceTotal(string route,string[] heads)
{
if (route== "/report/wholehospital_grant_summary")
return AllComputeView.Where(t => heads.Contains(t.Name.ToLower())).ToList();
if (route == "/report/wholehospital_accounting_grant_summary")
return AllComputeDepartmentView.Where(t => heads.Contains(t.Name.ToLower())).ToList();
if (route == "/report/wholehospital_finance_grant_summary")
return AllComputePersonView.Where(t => heads.Contains(t.Name.ToLower())).ToList();
return null;
}
public static List<cof_alias> AllComputeView { get; } = new List<cof_alias> public static List<cof_alias> AllComputeView { get; } = new List<cof_alias>
{ {
new cof_alias{ Alias = "来源", Name = nameof(view_allot_sign_emp.Source), States = 1}, new cof_alias{ Alias = "来源", Name = nameof(view_allot_sign_emp.Source), States = 1},
...@@ -2160,6 +2231,9 @@ public static List<cof_alias> AllComputeViewByDate ...@@ -2160,6 +2231,9 @@ public static List<cof_alias> AllComputeViewByDate
} }
} }
public static List<cof_alias> AllComputePersonView { get; } = new List<cof_alias> public static List<cof_alias> AllComputePersonView { get; } = new List<cof_alias>
{ {
...@@ -2194,7 +2268,7 @@ public static List<cof_alias> AllComputePersonViewByDate ...@@ -2194,7 +2268,7 @@ public static List<cof_alias> AllComputePersonViewByDate
} }
public static List<cof_alias> AllComputeDepartmentView { get; } = new List<cof_alias> public static List<cof_alias> AllComputeDepartmentView { get; } = new List<cof_alias>
{ {
new cof_alias{ Alias = "核算群体", Name = nameof(view_allot_sign_dept.UnitName), States = 1}, new cof_alias{ Alias = "核算群体", Name = nameof(view_allot_sign_dept.UnitType), States = 1},
new cof_alias{ Alias = "核算单元", Name = nameof(view_allot_sign_dept.AccountingUnit), States = 1}, new cof_alias{ Alias = "核算单元", Name = nameof(view_allot_sign_dept.AccountingUnit), States = 1},
new cof_alias{ Alias = "业绩绩效", Name = nameof(view_allot_sign_dept.PerforFee), States = 1}, new cof_alias{ Alias = "业绩绩效", Name = nameof(view_allot_sign_dept.PerforFee), States = 1},
new cof_alias{ Alias = "工作量绩效", Name = nameof(view_allot_sign_dept.WorkloadFee), States = 1}, new cof_alias{ Alias = "工作量绩效", Name = nameof(view_allot_sign_dept.WorkloadFee), States = 1},
......
...@@ -191,18 +191,18 @@ public string AllComputerViewReport(int allotId, List<dynamic> dynamics, string ...@@ -191,18 +191,18 @@ public string AllComputerViewReport(int allotId, List<dynamic> dynamics, string
/// <param name="allData"></param> /// <param name="allData"></param>
/// <param name="isAll"></param> /// <param name="isAll"></param>
/// <returns></returns> /// <returns></returns>
public string AllComputerViewReportByDate(int hospitalId, List<dynamic> dynamics, string route, string name, DateTime beginTime, DateTime endTime) public string AllComputerViewReportByDate(int hospitalId, List<dynamic> dynamics, string route, string name, DateTime beginTime, DateTime endTime,params string[] headlist)
{ {
var hospital = perforHospital.GetEntity(t => t.ID == hospitalId); var hospital = perforHospital.GetEntity(t => t.ID == hospitalId);
var title = (beginTime.AddMonths(1).Date == endTime.Date) var title = (beginTime.AddMonths(1).Date == endTime.Date)
? $"{beginTime.ToString("yyyy年MM月")}{hospital.HosName}医院 --- {name}" ? $"{beginTime.ToString("yyyy年MM月")}{hospital.HosName}医院 --- {name}"
: $"{beginTime.ToString("yyyy年MM月")}{endTime.ToString("yyyy年MM月")}{hospital.HosName}医院 --- {name}"; : $"{beginTime.ToString("yyyy年MM月")}{endTime.ToString("yyyy年MM月")}{hospital.HosName}医院 --- {name}";
return AllComputerDown(hospital, dynamics, route, title, name); return AllComputerDown(hospital, dynamics, route, title, name, headlist);
} }
public string AllComputerDown(sys_hospital hospital, List<dynamic> dynamics, string route, string title, string name) public string AllComputerDown(sys_hospital hospital, List<dynamic> dynamics, string route, string title, string name, params string[] headlist)
{ {
var headList = _computeService.CustomColumnHeaders(hospital.ID, route).Where(w => w.States == 1).ToList(); var headList = _computeService.CustomColumnHeaders(hospital.ID, route, headlist).Where(w => w.States == 1).ToList();
var dpath = Path.Combine(evn.ContentRootPath, "Files", "PerformanceRelease", $"{hospital.ID}"); var dpath = Path.Combine(evn.ContentRootPath, "Files", "PerformanceRelease", $"{hospital.ID}");
FileHelper.CreateDirectory(dpath); FileHelper.CreateDirectory(dpath);
string filepath = Path.Combine(dpath, $"{hospital.HosName}-{name}-{DateTime.Now:yyyyMMdd}"); string filepath = Path.Combine(dpath, $"{hospital.HosName}-{name}-{DateTime.Now:yyyyMMdd}");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment