Commit 504d5033 by 纪旭 韦

Merge branch 'feature/绩效发放汇总表' into feature/绩效发放汇总表_

parents e2f79e1f 099e2e68
......@@ -386,8 +386,14 @@ public ApiResponse<res_baiscnorm> EditHospitalAvg([FromBody] ComputerAvgRequest
[HttpPost]
public ApiResponse CustomColumnHeaders([FromBody] ComputerAliasRequest request)
{
var result = _computeService.CustomColumnHeaders(request.HospitalId, request.Route);
if (request.Heads != null)
for (int i = 0; i < request.Heads.Length; i++)
{
request.Heads[i] = request.Heads[i].ToLower();
}
var result = _computeService.CustomColumnHeaders(request.HospitalId, request.Route, request.Heads);
return new ApiResponse(ResponseType.OK, result);
}
/// <summary>
......
......@@ -279,6 +279,7 @@ public ApiResponse TableSpecial([FromBody] ConditionRequest request)
#region 全院发放
/// <summary>
/// 全院绩效发放(视图)
/// </summary>
......@@ -347,7 +348,66 @@ public IActionResult AllComputeViewDownload([FromBody] BeginEndTimeDown request)
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>
/// <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>
......@@ -380,6 +440,8 @@ public ApiResponse GethosdataView([FromBody] BeginEndTime request)
}
/// <summary>
/// 全院核算绩效发放(视图) 下载
/// </summary>
......@@ -416,7 +478,68 @@ public IActionResult GethosdataView([FromBody] BeginEndTimeDown request)
return File(memoryStream, memi, Path.GetFileName(fileInfo.Name));
}
/// <summary>
/// 全院核算绩效发放汇总表(视图)
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[Route("wholehospital_accounting_grant_summary")]
[HttpPost]
public ApiResponse GetWholeHospitalAccountingGrantSummary([FromBody] HospitalGrantSummary request)
{
return new ApiResponse(ResponseType.OK, "ok", _computeService.GetPerformanceSummary(request, "view_allot_sign_dept"));
}
/// <summary>
/// 全院核算绩效发放汇总表(视图)下载
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[Route("wholehospital_accounting_grant_summary/download")]
[HttpPost]
public IActionResult WholeHospitalAccountingGrantSummaryDownload([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_accounting_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>
......@@ -484,6 +607,66 @@ public IActionResult AllComputeByPMViewDownLoad([FromBody] BeginEndTimeDown requ
var memi = provider.Mappings[".xlsx"];
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
}
}
\ No newline at end of file
......@@ -45,5 +45,6 @@ public static void Main(string[] args)
logging.SetMinimumLevel(LogLevel.Trace);
})
.UseNLog();
}
}
......@@ -1663,6 +1663,20 @@
<param name="request"></param>
<returns></returns>
</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)">
<summary>
全院核算绩效发放(视图)
......@@ -1677,6 +1691,20 @@
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ReportController.GetWholeHospitalAccountingGrantSummary(Performance.DtoModels.HospitalGrantSummary)">
<summary>
全院核算绩效发放汇总表(视图)
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ReportController.WholeHospitalAccountingGrantSummaryDownload(Performance.DtoModels.HospitalGrantSummaryDown)">
<summary>
全院核算绩效发放汇总表(视图)下载
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ReportController.AllComputeViewByPM(Performance.DtoModels.BeginEndTime)">
<summary>
获取财务全院绩效列表(视图)
......@@ -1691,6 +1719,20 @@
<param name="request"></param>
<returns></returns>
</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)">
<summary>
获取报表配置信息
......
......@@ -1695,6 +1695,11 @@
状态 1 可用 0 禁用
</summary>
</member>
<member name="P:Performance.EntityModels.cof_alias.SumStatus">
<summary>
状态 1 求和 0 不求和
</summary>
</member>
<member name="T:Performance.EntityModels.cof_check">
<summary>
上传excel文件校验配置
......
using FluentValidation;
using Performance.EntityModels;
using System;
using System.Collections.Generic;
using System.Text;
......@@ -49,8 +50,8 @@ public ComputerRequestValidator()
public class ComputerAliasRequest
{
public int HospitalId { get; set; }
public string Route { get; set; }
public string[] Heads { get; set; }
}
public class BeginEndTime
{
......@@ -59,6 +60,7 @@ public class BeginEndTime
public int CurrentPage { get; set; }
public int PageSize { get; set; }
}
public class BeginEndTimeDown
{
public string BeginTime { get; set; } // 2021-01
......@@ -66,14 +68,34 @@ public class BeginEndTimeDown
public int HospitalId { get; set; }
}
public class HospitalGrantSummary : BeginEndTime
{
public List<string> GroupBy { 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 Dictionary<string, decimal> TotalData { get; set; }
}
public class GetPage
{
public int CurrentPage { get; set; }
public int TotalPages { get; set; }
public int PageSize { get; set; }
public int TotalCount { get; set; }
}
}
public class QueryComputeByDateGetTotal: GetPage
{
public List<dynamic> Data { get; set; }
public decimal TotalData { get; set; }}
}
......@@ -50,5 +50,9 @@ public class cof_alias
/// 状态 1 可用 0 禁用
/// </summary>
public Nullable<int> States { get; set; }
/// <summary>
/// 状态 1 求和 0 不求和
/// </summary>
public Nullable<int> SumStatus { get; set; }
}
}
......@@ -6,7 +6,7 @@ public class view_allot_sign_dept
public int AllotID { get; set; }
public int Year { get; set; }
public int Month { get; set; }
public int UnitName { get; set; }
public int UnitType { get; set; }
public int AccountingUnit { get; set; }
public int PerforFee { get; set; }
public int WorkloadFee { get; set; }
......
using Microsoft.EntityFrameworkCore;
using Dapper;
using Microsoft.EntityFrameworkCore;
using Performance.DtoModels;
using Performance.EntityModels;
using System;
......@@ -397,6 +398,7 @@ public List<dynamic> QueryCompute(int allotId, string viewName)
return DapperQuery<dynamic>(sql, new { allotId })?.ToList();
}
public List<dynamic> QueryComputeByDate(string viewName, DateTime beginTime, DateTime endTime)
{
var sql = $@"SELECT * FROM {viewName}
......@@ -406,6 +408,42 @@ 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();
}
public (int count, List<dynamic> data) QueryComputeByDateAndTotal(string viewName, DateTime beginTime, DateTime endTime, List<string> groupBy, List<string> sumBy, int pageNumber, int pageSize)
{
if (!new string[] { "view_allot_sign_dept", "view_allot_sign_emp", "view_allot_sign_emp_finance" }.Contains(viewName)) return (0, new List<dynamic>());
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 ";
Dictionary<string, List<string>> dict = new Dictionary<string, List<string>>
{
{ "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" } },
{ "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" } },
{ "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" } },
};
if (groupBy == null || !groupBy.Any(t => !string.IsNullOrEmpty(t))) groupBy = dict[viewName + "_group"];
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)}";
if (pageNumber != 0 && pageSize != 0)
sql = $@" select count(1) count from ({sql}) tab;
{sql} limit {pageSize} offset {(pageNumber - 1)};";
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)
{
var result = new CustonPagingData();
......
......@@ -191,18 +191,18 @@ public string AllComputerViewReport(int allotId, List<dynamic> dynamics, string
/// <param name="allData"></param>
/// <param name="isAll"></param>
/// <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 title = (beginTime.AddMonths(1).Date == endTime.Date)
? $"{beginTime.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}");
FileHelper.CreateDirectory(dpath);
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