Commit 439f4778 by 纪旭 韦

增加汇总,及优化代码

parent d739a710
......@@ -1617,13 +1617,11 @@
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ReportController.AllComputeViewDownload(System.Int32,System.String,System.String)">
<member name="M:Performance.Api.Controllers.ReportController.AllComputeViewDownload(Performance.DtoModels.BeginEndTimeDown)">
<summary>
全院绩效发放(视图)下载
</summary>
<param name="BeginTime"></param>
<param name="EndTime"></param>
<param name="HospitalId"></param>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ReportController.GethosdataView(Performance.DtoModels.BeginEndTime)">
......@@ -1633,29 +1631,25 @@
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ReportController.GethosdataView(System.Int32,System.String,System.String)">
<member name="M:Performance.Api.Controllers.ReportController.GethosdataView(Performance.DtoModels.BeginEndTimeDown)">
<summary>
全院核算绩效发放(视图) 下载
</summary>
<param name="BeginTime"></param>
<param name="EndTime"></param>
<param name="HospitalId"></param>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ReportController.AllComputeViewByPM(Performance.DtoModels.BeginEndTime)">
<summary>
获取全院绩效列表(人事科
获取财务全院绩效列表(视图
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ReportController.AllComputeByPMViewDownLoad(System.Int32,System.String,System.String)">
<member name="M:Performance.Api.Controllers.ReportController.AllComputeByPMViewDownLoad(Performance.DtoModels.BeginEndTimeDown)">
<summary>
全院绩效列表(人事科)下载
获取财务全院绩效列表(视图)下载
</summary>
<param name="BeginTime"></param>
<param name="EndTime"></param>
<param name="HospitalId"></param>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ReportGlobalController.GetAllReportGlobal(System.Int32)">
......
......@@ -53,21 +53,27 @@ public class ComputerAliasRequest
public string Route { get; set; }
}
public class BeginEndTime
{
{
public string BeginTime { get; set; } // 2021-01
public string EndTime { get; set; } // 2021-08
public int CurrentPage { get; set; }
public int PageSize { get; set; }
}
public class BeginEndTimeDown
{
public string BeginTime { get; set; } // 2021-01
public string EndTime { get; set; } // 2021-08
public int HospitalId { get; set; }
}
public class QueryComputeByDateGetPage
public class QueryComputeByDateGetPage
{
public List<dynamic> Data { get; set; }
public int CurrentPage { get; set; }
public int TotalPages { get; set; }
public int PageSize { get; set; }
public int TotalCount { get; set; }
public Dictionary<string, decimal> TotalData { get; set; }
public int CurrentPage { get; set; }
public int TotalPages { get; set; }
public int PageSize { get; set; }
public int TotalCount { get; set; }
}
}
......@@ -2009,9 +2009,9 @@ public List<cof_alias> CustomColumnHeaders(int hospitalId, string route)
{ "/result/wholehospital" , ComputeConfig.AllComputePersonView },
{ "/result/print/compute" , ComputeConfig.AllComputeDepartmentView },
{ "/report/compute" , ComputeConfig.AllComputeViewByDate },
{ "/report/wholehospital" , ComputeConfig.AllComputePersonViewByDate },
{ "/report/print/compute" , ComputeConfig.AllComputeDepartmentViewByDate },
{ "/report/wholehospital_grant" , ComputeConfig.AllComputeViewByDate },
{ "/report/wholehospital_accounting_grant" , ComputeConfig.AllComputeDepartmentViewByDate },
{ "/report/wholehospital_finance_grant" , ComputeConfig.AllComputePersonViewByDate },
};
var init = pairs.ContainsKey(route.ToLower()) ? pairs[route.ToLower()] : new List<cof_alias>();
foreach (var item in init)
......@@ -2075,6 +2075,65 @@ public List<dynamic> GetAllComputeViewByDate(string viewName, string BeginTime,
return reportRepository.QueryComputeByDate(0, viewName, BeginTime, EndTime);
}
/// <summary>
///
/// </summary>
/// <param name="datas"></param>
/// <returns></returns>
public Dictionary<string, decimal> SumDatas(List<dynamic> datas)
{
string[] notSum = new string[] { "hospitalid", "allotid", "year", "month", "jobnumber", "bankcard", "jobtitle", "secondid", "states", "isshowmanage", "batch" };
Dictionary<string, decimal> pairs = new Dictionary<string, decimal>();
foreach (var dt in datas)
{
var row = (IDictionary<string, object>)dt;
foreach (var item in row)
{
if (notSum.Contains(item.Key.ToLower())) continue;
if (decimal.TryParse(item.Value?.ToString(), out decimal v))
{
if (pairs.TryGetValue(item.Key, out decimal sum))
{
sum += v;
pairs[item.Key] = sum;
}
else
{
pairs[item.Key] = v;
}
}
}
}
return pairs;
}
/// <summary>
/// 限制绩效发放输入的时间格式
/// </summary>
/// <param name="BeginTime"></param>
/// <param name="EndTime"></param>
/// <returns></returns>
public BeginEndTime performanceImposeDate(string BeginTime, string EndTime)
{
var Bdate = DateTime.Now;
var Edate = DateTime.Now;
if (string.IsNullOrEmpty(BeginTime) || !DateTime.TryParse(BeginTime, out Bdate) ||
string.IsNullOrEmpty(EndTime) || !DateTime.TryParse(EndTime, out Edate))
throw new PerformanceException("请输入正确的时间");
if (Bdate > Edate)
throw new PerformanceException("开始时间不能大于结束时间");
string beginDate = Bdate.Year + $"-{Bdate.Month.ToString().PadLeft(2, '0')}";
string endDate = Edate.Year + $"-{Edate.Month.ToString().PadLeft(2, '0')}";
return new BeginEndTime
{
BeginTime = beginDate,
EndTime = endDate
};
}
}
public class ComputeConfig
......@@ -2115,7 +2174,7 @@ public static List<cof_alias> AllComputeViewByDate
_allComputeViewByDate.Add(new cof_alias { Alias = "年份", Name = nameof(view_allot_sign_emp.Year), States = 1 });
_allComputeViewByDate.Add(new cof_alias { Alias = "月份", Name = nameof(view_allot_sign_emp.Month), States = 1 });
_allComputeViewByDate.AddRange(AllComputeView);
}
}
return _allComputeViewByDate;
}
}
......
......@@ -181,57 +181,7 @@ public string AllComputerViewReport(int allotId, List<dynamic> dynamics, string
{
var allot = perallotRepository.GetEntity(t => t.ID == allotId);
var hospital = perforHospital.GetEntity(t => t.ID == allot.HospitalId);
var alias = perforCofalias.GetEntities(t => t.HospitalId == hospital.ID);
var headList = _computeService.CustomColumnHeaders(hospital.ID, route).Where(w => w.States == 1).ToList();
var dpath = Path.Combine(evn.ContentRootPath, "Files", "PerformanceRelease", $"{allot.HospitalId}");
FileHelper.CreateDirectory(dpath);
string filepath = Path.Combine(dpath, $"{hospital.HosName}-{name}-{DateTime.Now:yyyyMMdd}");
FileHelper.DeleteFile(filepath);
using (FileStream fs = new FileStream(filepath, FileMode.OpenOrCreate))
using (ExcelPackage package = new ExcelPackage(fs))
{
var worksheet = package.Workbook.Worksheets.Add(name);
if (dynamics != null && dynamics.Count() > 0)
{
var headers = ((IDictionary<string, object>)dynamics.ElementAt(0)).Keys;
for (int col = 0; col < headList.Count; col++)
{
worksheet.SetValue(1, col + 1, headList[col].Alias);
}
for (int col = 0; col < headList.Count; col++)
{
for (int row = 0; row < dynamics.Count(); row++)
{
var data = dynamics.ElementAt(row);
var temp = (IDictionary<string, object>)data;
var value = temp[headList[col].Name];
worksheet.Cells[row + 2, col + 1].Value = value;
}
if (col == 0)
worksheet.SetValue(dynamics.Count() + 2, col + 1, "合计");
else
worksheet.Cells[dynamics.Count() + 2, col + 1].Formula = string.Format("SUM({0})", new ExcelAddress(2, col + 1, dynamics.Count() + 1, col + 1).Address);
}
}
worksheet.View.FreezePanes(2, 1);
for (int row = worksheet.Dimension.Start.Row; row <= worksheet.Dimension.End.Row; row++)
{
for (int col = worksheet.Dimension.Start.Column; col <= worksheet.Dimension.End.Column; col++)
{
worksheet.Cells[row, col].Style.Border.BorderAround(ExcelBorderStyle.Thin);
worksheet.Cells[row, col].Style.Numberformat.Format = "#,##0.00";
}
}
package.Save();
}
return filepath;
return AllComputerDown(hospital, dynamics, route, name);
}
/// <summary>
/// 财务、全院绩效发放下载(时间段)
......@@ -243,15 +193,15 @@ public string AllComputerViewReport(int allotId, List<dynamic> dynamics, string
public string AllComputerViewReportByDate(int HospitalId, List<dynamic> dynamics, string route, string name)
{
var hospital = perforHospital.GetEntity(t => t.ID == HospitalId);
var alias = perforCofalias.GetEntities(t => t.HospitalId == hospital.ID);
return AllComputerDown(hospital, dynamics, route, name);
}
public string AllComputerDown(sys_hospital hospital,List<dynamic> dynamics, string route, string name)
{
var headList = _computeService.CustomColumnHeaders(hospital.ID, route).Where(w => w.States == 1).ToList();
var dpath = Path.Combine(evn.ContentRootPath, "Files", "PerformanceRelease", $"{HospitalId}");
var dpath = Path.Combine(evn.ContentRootPath, "Files", "PerformanceRelease", $"{hospital.ID}");
FileHelper.CreateDirectory(dpath);
string filepath = Path.Combine(dpath, $"{hospital.HosName}-{name}-{DateTime.Now:yyyyMMdd}");
FileHelper.DeleteFile(filepath);
using (FileStream fs = new FileStream(filepath, FileMode.OpenOrCreate))
using (ExcelPackage package = new ExcelPackage(fs))
{
......
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