Commit 903d85ac by lcx

预算管理

parent 5684b17e
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Performance.DtoModels;
using Performance.DtoModels.Request;
using Performance.EntityModels;
using Performance.Services;
namespace Performance.Api.Controllers
{
[Route("api/[controller]")]
public class BudgetController : Controller
{
private readonly ClaimService claim;
private readonly BudgetService budgetService;
public BudgetController(ClaimService claim, BudgetService budgetService)
{
this.claim = claim;
this.budgetService = budgetService;
}
/// <summary>
/// 预算管理查询(包含金额、占比)
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost]
[Route("query")]
public ApiResponse<List<BudgetResponse>> Query([FromBody]BudgetRequest request)
{
if (request.HospitalId == 0 || request.Year == 0)
return new ApiResponse<List<BudgetResponse>>(ResponseType.ParameterError, "参数无效");
var result = budgetService.QueryBudgetByYear(request.HospitalId, request.Year);
return new ApiResponse<List<BudgetResponse>>(ResponseType.OK, "", result);
}
/// <summary>
/// 保存预算管理数据
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost]
[Route("save")]
public ApiResponse Save([FromBody]List<BudgetResponse> request)
{
var userId = claim.GetUserId();
var result = budgetService.SaveBudgetData(request, userId);
return result ? new ApiResponse(ResponseType.OK, "保存成功") : new ApiResponse(ResponseType.Fail, "保存失败");
}
/// <summary>
/// 修改预算管理数据
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost]
[Route("modify")]
public ApiResponse Modify([FromBody]List<BudgetResponse> request)
{
var result = budgetService.ModifyBudgetData(request);
return result ? new ApiResponse(ResponseType.OK, "修改成功") : new ApiResponse(ResponseType.Fail, "修改失败");
}
/// <summary>
/// 预算合计数据查询
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost]
[Route("result/query")]
public ApiResponse<List<per_budget_result>> Result([FromBody]BudgetRequest request)
{
if (request.HospitalId == 0 || request.Year == 0)
return new ApiResponse<List<per_budget_result>>(ResponseType.ParameterError, "参数无效");
var result = budgetService.QueryResultByYear(request.HospitalId, request.Year);
return new ApiResponse<List<per_budget_result>>(ResponseType.OK, "", result);
}
/// <summary>
/// 预算比例、历史比例查询
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost]
[Route("result/ratio")]
public ApiResponse<List<BudgetRatioResponse>> Ratio([FromBody]BudgetRequest request)
{
if (request.HospitalId == 0 || request.Year == 0)
return new ApiResponse<List<BudgetRatioResponse>>(ResponseType.ParameterError, "参数无效");
var result = budgetService.QueryBudgetRatio(request.HospitalId, request.Year);
return new ApiResponse<List<BudgetRatioResponse>>(ResponseType.OK, "", result);
}
/// <summary>
/// 保存预算合计数据
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost]
[Route("result/save")]
public ApiResponse ResultSave([FromBody]List<per_budget_result> request)
{
var userId = claim.GetUserId();
var result = budgetService.SaveBudgetRatio(request, userId);
return result ? new ApiResponse(ResponseType.OK, "保存成功") : new ApiResponse(ResponseType.Fail, "保存失败");
}
/// <summary>
/// 使用预算比例
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost]
[Route("result/use/{id}")]
public ApiResponse UseResult(int id)
{
var userId = claim.GetUserId();
var result = budgetService.UseResult(id);
return result ? new ApiResponse(ResponseType.OK, "操作成功") : new ApiResponse(ResponseType.Fail, "操作失败");
}
}
}
\ No newline at end of file
...@@ -200,6 +200,48 @@ ...@@ -200,6 +200,48 @@
<param name="request"></param> <param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.BudgetController.Query(Performance.DtoModels.Request.BudgetRequest)">
<summary>
预算管理查询(包含金额、占比)
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.BudgetController.Save(System.Collections.Generic.List{Performance.DtoModels.BudgetResponse})">
<summary>
保存预算管理数据
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.BudgetController.Modify(System.Collections.Generic.List{Performance.DtoModels.BudgetResponse})">
<summary>
修改预算管理数据
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.BudgetController.Result(Performance.DtoModels.Request.BudgetRequest)">
<summary>
预算合计数据查询
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.BudgetController.Ratio(Performance.DtoModels.Request.BudgetRequest)">
<summary>
预算比例、历史比例查询
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.BudgetController.ResultSave(System.Collections.Generic.List{Performance.EntityModels.per_budget_result})">
<summary>
保存预算合计数据
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ComputeController.GetCompute(Performance.DtoModels.ComputerRequest)"> <member name="M:Performance.Api.Controllers.ComputeController.GetCompute(Performance.DtoModels.ComputerRequest)">
<summary> <summary>
获取绩效发放列表 获取绩效发放列表
......
...@@ -1402,6 +1402,11 @@ ...@@ -1402,6 +1402,11 @@
路径 路径
</summary> </summary>
</member> </member>
<member name="P:Performance.DtoModels.Request.SmsCodeRequest.Type">
<summary>
短信验证类型 1 手机号登录 2 其他
</summary>
</member>
<member name="P:Performance.DtoModels.CofAgainRequest.AllotID"> <member name="P:Performance.DtoModels.CofAgainRequest.AllotID">
<summary> <summary>
...@@ -1847,11 +1852,6 @@ ...@@ -1847,11 +1852,6 @@
sheet页列表请求 sheet页列表请求
</summary> </summary>
</member> </member>
<member name="P:Performance.DtoModels.Request.SmsCodeRequest.Type">
<summary>
短信验证类型 1 手机号登录 2 其他
</summary>
</member>
<member name="P:Performance.DtoModels.SubmitAuditRequest.Type"> <member name="P:Performance.DtoModels.SubmitAuditRequest.Type">
<summary> <summary>
提交类型 1 模板提交 2 其他提交 提交类型 1 模板提交 2 其他提交
...@@ -2066,6 +2066,181 @@ ...@@ -2066,6 +2066,181 @@
科室 科室
</summary> </summary>
</member> </member>
<member name="P:Performance.DtoModels.BudgetRatioResponse.HospitalId">
<summary>
医院Id
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetRatioResponse.Year">
<summary>
年份
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetRatioResponse.PersonExpendRatio">
<summary>
人员经费实际比例
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetRatioResponse.NewPerformanceRatio">
<summary>
新绩效实际比例
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetRatioResponse.MedicinePropRatio">
<summary>
药占比实际比例
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetRatioResponse.MaterialCostsRatio">
<summary>
材料支出实际比例
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetRatioResponse.TotalMedicineRatio">
<summary>
药材合计实际比例
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetRatioResponse.DepreOfFixedAssetsRatio">
<summary>
固定资产折旧实际比例
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetRatioResponse.OtherExpensesRatio">
<summary>
其他费用实际比例
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetRatioResponse.TheCostInTotalRatio">
<summary>
人+药+材的支出实际比例
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetRatioResponse.TheCostCombinedRatio">
<summary>
成本合计实际比例
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetResponse.Type">
<summary>
数据来源 1. 金额 2. 占比
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetDto.HospitalRevenue">
<summary>
医院业务收入(万)
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetDto.TotalLaborCost">
<summary>
人力总成本(万)
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetDto.StaffSpendingFixed">
<summary>
人员支出固定部分(万)
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetDto.StaffSpendingBonus">
<summary>
人员支出浮动部分(奖金)
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetDto.MeritPayIncrement">
<summary>
绩效工资增量预算比例
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetDto.TotalMeritPay">
<summary>
绩效工资合计
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetDto.AmountOfStaff">
<summary>
人员数
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetDto.ThePerCapitaMerit">
<summary>
原人均月绩效(元)
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetDto.TheIncrementCapita">
<summary>
增量后人均绩效(元)
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetDto.Amplification">
<summary>
增长幅度
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetDto.IncrementCapitaRatio">
<summary>
增量后绩效工资人员经费比例
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetDto.TheDrugIncome">
<summary>
药品收入(万)
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetDto.TheDrugIncomeBudget">
<summary>
药品收入预算比例
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetDto.MaterialIncome">
<summary>
材料支出(万)
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetDto.MaterialIncomeBudget">
<summary>
材料支出预算比例
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetDto.TheCostInTotal">
<summary>
药品+材料+人支(万)
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetDto.DepreOfFixedAssets">
<summary>
固定资产折旧费(万)
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetDto.AmortOfIntangibleAssets">
<summary>
无形资产摊销费(万)
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetDto.MedicalRisk">
<summary>
提取医疗风险基金(万)
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetDto.OtherExpenses">
<summary>
其他费用(万)
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetDto.BalanceOfPayments">
<summary>
收支结余(%)
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetDto.FiscalSubsidies">
<summary>
财政补贴
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetDto.TheTotalHospitalBalance">
<summary>
医院总收支结余
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResponse.Source"> <member name="P:Performance.DtoModels.ComputeResponse.Source">
<summary> <summary>
来源 来源
......
...@@ -136,27 +136,36 @@ ...@@ -136,27 +136,36 @@
<member name="P:Performance.EntityModels.PerformanceDbContext.per_allot"> <member name="P:Performance.EntityModels.PerformanceDbContext.per_allot">
<summary> 医院绩效分配 </summary> <summary> 医院绩效分配 </summary>
</member> </member>
<member name="P:Performance.EntityModels.PerformanceDbContext.per_budget_amount">
<summary> 预算管理金额 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.per_budget_ratio">
<summary> 预算管理占比 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.per_budget_result">
<summary> 预算控制年度合计 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.per_first"> <member name="P:Performance.EntityModels.PerformanceDbContext.per_first">
<summary> 首次上传文件地址(当医院存在标准库时,首次上传用户提交固定格式的excel,开发人员配置SQL脚本) </summary> <summary> 首次上传文件地址(当医院存在标准库时,首次上传用户提交固定格式的excel,开发人员配置SQL脚本) </summary>
</member> </member>
<member name="P:Performance.EntityModels.PerformanceDbContext.per_sheet"> <member name="P:Performance.EntityModels.PerformanceDbContext.per_sheet">
<summary> 上传数据解析 </summary> <summary> 上传数据解析 </summary>
</member> </member>
<member name="P:Performance.EntityModels.PerformanceDbContext.rep_report">
<summary> 报表配置表 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.rep_group"> <member name="P:Performance.EntityModels.PerformanceDbContext.rep_group">
<summary> </summary> <summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.PerformanceDbContext.rep_group_selection"> <member name="P:Performance.EntityModels.PerformanceDbContext.rep_group_selection">
<summary> </summary> <summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.PerformanceDbContext.rep_selection">
<summary> 条件表 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.rep_importconfig"> <member name="P:Performance.EntityModels.PerformanceDbContext.rep_importconfig">
<summary> 导入报表SQL配置 </summary> <summary> 导入报表SQL配置 </summary>
</member> </member>
<member name="P:Performance.EntityModels.PerformanceDbContext.rep_report">
<summary> 报表配置表 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.rep_selection">
<summary> 条件表 </summary>
</member>
<member name="P:Performance.EntityModels.PerformanceDbContext.res_account"> <member name="P:Performance.EntityModels.PerformanceDbContext.res_account">
<summary> 科室核算结果 </summary> <summary> 科室核算结果 </summary>
</member> </member>
...@@ -2420,7 +2429,7 @@ ...@@ -2420,7 +2429,7 @@
</member> </member>
<member name="P:Performance.EntityModels.per_allot.States"> <member name="P:Performance.EntityModels.per_allot.States">
<summary> <summary>
0 数据未上传 1 数据已上传 2 正在校验数据 3 数据验证通过 4 数据错误 5 正在生成绩效 6 绩效结果解析成功 7 绩效解析失败 8 归档 9 等待生成 0 数据未上传 1 数据已上传 2 正在校验数据 3 数据验证通过 4 数据错误 5 正在生成绩效 6 下发绩效 7 绩效解析失败 8 归档 9 等待生成 10 绩效结果解析成功
</summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.per_allot.Remark"> <member name="P:Performance.EntityModels.per_allot.Remark">
...@@ -2438,6 +2447,391 @@ ...@@ -2438,6 +2447,391 @@
是否在抽取数据0 否、1 是、2 抽取成功、3 抽取失败 是否在抽取数据0 否、1 是、2 抽取成功、3 抽取失败
</summary> </summary>
</member> </member>
<member name="T:Performance.EntityModels.per_budget_amount">
<summary>
预算管理金额
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_amount.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_amount.HospitalId">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_amount.Year">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_amount.HospitalRevenue">
<summary>
医院业务收入(万)
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_amount.TotalLaborCost">
<summary>
人力总成本(万)
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_amount.StaffSpendingFixed">
<summary>
人员支出固定部分(万)
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_amount.StaffSpendingBonus">
<summary>
人员支出浮动部分(奖金)
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_amount.TotalMeritPay">
<summary>
绩效工资合计
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_amount.AmountOfStaff">
<summary>
人员数
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_amount.ThePerCapitaMerit">
<summary>
原人均月绩效(元)
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_amount.TheIncrementCapita">
<summary>
增量后人均绩效(元)
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_amount.TheDrugIncome">
<summary>
药品收入(万)
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_amount.MaterialIncome">
<summary>
材料支出(万)
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_amount.TheCostInTotal">
<summary>
药品+材料+人支(万)
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_amount.DepreOfFixedAssets">
<summary>
固定资产折旧费(万)
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_amount.AmortOfIntangibleAssets">
<summary>
无形资产摊销费(万)
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_amount.MedicalRisk">
<summary>
提取医疗风险基金(万)
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_amount.OtherExpenses">
<summary>
其他费用(万)
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_amount.BalanceOfPayments">
<summary>
收支结余(%)
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_amount.FiscalSubsidies">
<summary>
财政补贴
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_amount.TheTotalHospitalBalance">
<summary>
医院总收支结余
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_amount.CreateTime">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_amount.CreateUser">
<summary>
</summary>
</member>
<member name="T:Performance.EntityModels.per_budget_ratio">
<summary>
预算管理占比
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_ratio.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_ratio.HospitalId">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_ratio.Year">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_ratio.HospitalRevenue">
<summary>
医院业务收入预算比例
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_ratio.TotalLaborCost">
<summary>
人力总成本占比
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_ratio.StaffSpendingFixed">
<summary>
人员支出固定部分占比
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_ratio.StaffSpendingBonus">
<summary>
人员支出浮动部分占比
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_ratio.MeritPayIncrement">
<summary>
绩效工资增量预算比例
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_ratio.TotalMeritPay">
<summary>
绩效工资合计
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_ratio.Amplification">
<summary>
增长幅度
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_ratio.IncrementCapitaRatio">
<summary>
增量后绩效工资人员经费比例
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_ratio.TheDrugIncome">
<summary>
药品收入占比
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_ratio.TheDrugIncomeBudget">
<summary>
药品收入预算比例
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_ratio.MaterialIncome">
<summary>
材料支出占比
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_ratio.MaterialIncomeBudget">
<summary>
材料支出预算比例
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_ratio.TheCostInTotal">
<summary>
药品+材料+人支占比
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_ratio.DepreOfFixedAssets">
<summary>
固定资产折旧费占比
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_ratio.AmortOfIntangibleAssets">
<summary>
无形资产摊销费占比
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_ratio.MedicalRisk">
<summary>
提取医疗风险基金占比
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_ratio.OtherExpenses">
<summary>
其他费用占比
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_ratio.BalanceOfPayments">
<summary>
收支结余(%)
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_ratio.TheTotalHospitalBalance">
<summary>
医院总收支结余
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_ratio.CreateTime">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_ratio.CreateUser">
<summary>
</summary>
</member>
<member name="T:Performance.EntityModels.per_budget_result">
<summary>
预算控制年度合计
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_result.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_result.HospitalId">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_result.Year">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_result.Month">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_result.Grant">
<summary>
绩效可发比例
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_result.Adjust">
<summary>
调节系数
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_result.MedicalIncome">
<summary>
医疗收入
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_result.PersonnelExpenditure">
<summary>
人员经费
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_result.TheNewPerformance">
<summary>
新绩效
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_result.MedicineProportion">
<summary>
药占比(收入)
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_result.MaterialCosts">
<summary>
材料支出
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_result.TotalMedicine">
<summary>
药材比例合计
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_result.DepreOfFixedAssets">
<summary>
固定资产折旧
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_result.OtherExpenses">
<summary>
其他
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_result.TheCostInTotal">
<summary>
人+药+材的支出比例
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_result.TheCostCombined">
<summary>
成本合计
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_result.PersonExpendRatio">
<summary>
人员经费实际比例
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_result.NewPerformanceRatio">
<summary>
新绩效实际比例
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_result.MedicinePropRatio">
<summary>
药占比实际比例
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_result.MaterialCostsRatio">
<summary>
材料支出实际比例
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_result.TotalMedicineRatio">
<summary>
药材合计实际比例
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_result.DepreOfFixedAssetsRatio">
<summary>
固定资产折旧实际比例
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_result.OtherExpensesRatio">
<summary>
其他费用实际比例
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_result.TheCostInTotalRatio">
<summary>
人+药+材的支出实际比例
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_result.TheCostCombinedRatio">
<summary>
成本合计实际比例
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_result.CreateDate">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.per_budget_result.CreateUser">
<summary>
</summary>
</member>
<member name="T:Performance.EntityModels.per_first"> <member name="T:Performance.EntityModels.per_first">
<summary> <summary>
首次上传文件地址(当医院存在标准库时,首次上传用户提交固定格式的excel,开发人员配置SQL脚本) 首次上传文件地址(当医院存在标准库时,首次上传用户提交固定格式的excel,开发人员配置SQL脚本)
...@@ -2528,6 +2922,11 @@ ...@@ -2528,6 +2922,11 @@
报表Id 报表Id
</summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.rep_group.GroupName">
<summary>
</summary>
</member>
<member name="T:Performance.EntityModels.rep_group_selection"> <member name="T:Performance.EntityModels.rep_group_selection">
<summary> <summary>
...@@ -2745,7 +3144,7 @@ ...@@ -2745,7 +3144,7 @@
</member> </member>
<member name="P:Performance.EntityModels.rep_selection.Joint"> <member name="P:Performance.EntityModels.rep_selection.Joint">
<summary> <summary>
SQL拼接条件 SQL拼接条件 Equal、Like、In、Not Like、Not In
</summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.rep_selection.State"> <member name="P:Performance.EntityModels.rep_selection.State">
......
...@@ -200,6 +200,14 @@ public AutoMapperConfigs() ...@@ -200,6 +200,14 @@ public AutoMapperConfigs()
CreateMap<im_employee_clinic, ComputeEmployee>() CreateMap<im_employee_clinic, ComputeEmployee>()
.ForMember(dest => dest.JobNumber, opt => opt.MapFrom(src => src.PersonnelNumber)) .ForMember(dest => dest.JobNumber, opt => opt.MapFrom(src => src.PersonnelNumber))
.ReverseMap(); .ReverseMap();
CreateMap<per_budget_amount, BudgetResponse>()
.ForMember(dest => dest.Type, opt => opt.MapFrom(src => 1));
CreateMap<BudgetResponse, per_budget_amount>();
CreateMap<per_budget_ratio, BudgetResponse>()
.ForMember(dest => dest.Type, opt => opt.MapFrom(src => 2));
CreateMap<BudgetResponse, per_budget_ratio>();
} }
} }
} }
using System;
using System.Collections.Generic;
using System.Text;
namespace Performance.DtoModels.Request
{
public class BudgetRequest
{
public int HospitalId { get; set; }
public int Year { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Performance.DtoModels
{
public class BudgetRatioResponse
{
/// <summary>
/// 医院Id
/// </summary>
public int HospitalId { get; set; }
/// <summary>
/// 年份
/// </summary>
public int Year { get; set; }
/// <summary>
/// 人员经费实际比例
/// </summary>
public Nullable<decimal> PersonExpendRatio { get; set; }
/// <summary>
/// 新绩效实际比例
/// </summary>
public Nullable<decimal> NewPerformanceRatio { get; set; }
/// <summary>
/// 药占比实际比例
/// </summary>
public Nullable<decimal> MedicinePropRatio { get; set; }
/// <summary>
/// 材料支出实际比例
/// </summary>
public Nullable<decimal> MaterialCostsRatio { get; set; }
/// <summary>
/// 药材合计实际比例
/// </summary>
public Nullable<decimal> TotalMedicineRatio { get; set; }
/// <summary>
/// 固定资产折旧实际比例
/// </summary>
public Nullable<decimal> DepreOfFixedAssetsRatio { get; set; }
/// <summary>
/// 其他费用实际比例
/// </summary>
public Nullable<decimal> OtherExpensesRatio { get; set; }
/// <summary>
/// 人+药+材的支出实际比例
/// </summary>
public Nullable<decimal> TheCostInTotalRatio { get; set; }
/// <summary>
/// 成本合计实际比例
/// </summary>
public Nullable<decimal> TheCostCombinedRatio { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Performance.DtoModels
{
public class BudgetResponse : BudgetDto
{
public int Id { get; set; }
public int HospitalId { get; set; }
public int Year { get; set; }
/// <summary>
/// 数据来源 1. 金额 2. 占比
/// </summary>
public int Type { get; set; }
}
public class BudgetDto
{
/// <summary>
/// 医院业务收入(万)
/// </summary>
public Nullable<decimal> HospitalRevenue { get; set; }
/// <summary>
/// 人力总成本(万)
/// </summary>
public Nullable<decimal> TotalLaborCost { get; set; }
/// <summary>
/// 人员支出固定部分(万)
/// </summary>
public Nullable<decimal> StaffSpendingFixed { get; set; }
/// <summary>
/// 人员支出浮动部分(奖金)
/// </summary>
public Nullable<decimal> StaffSpendingBonus { get; set; }
/// <summary>
/// 绩效工资增量预算比例
/// </summary>
public Nullable<decimal> MeritPayIncrement { get; set; }
/// <summary>
/// 绩效工资合计
/// </summary>
public Nullable<decimal> TotalMeritPay { get; set; }
/// <summary>
/// 人员数
/// </summary>
public Nullable<decimal> AmountOfStaff { get; set; }
/// <summary>
/// 原人均月绩效(元)
/// </summary>
public Nullable<decimal> ThePerCapitaMerit { get; set; }
/// <summary>
/// 增量后人均绩效(元)
/// </summary>
public Nullable<decimal> TheIncrementCapita { get; set; }
/// <summary>
/// 增长幅度
/// </summary>
public Nullable<decimal> Amplification { get; set; }
/// <summary>
/// 增量后绩效工资人员经费比例
/// </summary>
public Nullable<decimal> IncrementCapitaRatio { get; set; }
/// <summary>
/// 药品收入(万)
/// </summary>
public Nullable<decimal> TheDrugIncome { get; set; }
/// <summary>
/// 药品收入预算比例
/// </summary>
public Nullable<decimal> TheDrugIncomeBudget { get; set; }
/// <summary>
/// 材料支出(万)
/// </summary>
public Nullable<decimal> MaterialIncome { get; set; }
/// <summary>
/// 材料支出预算比例
/// </summary>
public Nullable<decimal> MaterialIncomeBudget { get; set; }
/// <summary>
/// 药品+材料+人支(万)
/// </summary>
public Nullable<decimal> TheCostInTotal { get; set; }
/// <summary>
/// 固定资产折旧费(万)
/// </summary>
public Nullable<decimal> DepreOfFixedAssets { get; set; }
/// <summary>
/// 无形资产摊销费(万)
/// </summary>
public Nullable<decimal> AmortOfIntangibleAssets { get; set; }
/// <summary>
/// 提取医疗风险基金(万)
/// </summary>
public Nullable<decimal> MedicalRisk { get; set; }
/// <summary>
/// 其他费用(万)
/// </summary>
public Nullable<decimal> OtherExpenses { get; set; }
/// <summary>
/// 收支结余(%)
/// </summary>
public Nullable<decimal> BalanceOfPayments { get; set; }
/// <summary>
/// 财政补贴
/// </summary>
public Nullable<decimal> FiscalSubsidies { get; set; }
/// <summary>
/// 医院总收支结余
/// </summary>
public Nullable<decimal> TheTotalHospitalBalance { get; set; }
}
}
...@@ -142,6 +142,11 @@ public class per_budget_result ...@@ -142,6 +142,11 @@ public class per_budget_result
public Nullable<decimal> TheCostCombinedRatio { get; set; } public Nullable<decimal> TheCostCombinedRatio { get; set; }
/// <summary> /// <summary>
/// 1.初始 2. 确认使用发放/调节系数
/// </summary>
public int States { get; set; }
/// <summary>
/// ///
/// </summary> /// </summary>
public Nullable<DateTime> CreateDate { get; set; } public Nullable<DateTime> CreateDate { get; set; }
......
using AutoMapper;
using Microsoft.EntityFrameworkCore.Internal;
using NPOI.SS.Formula.Functions;
using Performance.DtoModels;
using Performance.EntityModels;
using Performance.Repository;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Performance.Services
{
public class BudgetService : IAutoInjection
{
private readonly PerforPerbudgetamountRepository perbudgetamountRepository;
private readonly PerforPerbudgetratioRepository perbudgetratioRepository;
private readonly PerforPerbudgetresultRepository perbudgetresultRepository;
private readonly PerforPerallotRepository perallotRepository;
public BudgetService(PerforPerbudgetamountRepository perbudgetamountRepository,
PerforPerbudgetratioRepository perbudgetratioRepository,
PerforPerbudgetresultRepository perbudgetresultRepository,
PerforPerallotRepository perallotRepository)
{
this.perbudgetamountRepository = perbudgetamountRepository;
this.perbudgetratioRepository = perbudgetratioRepository;
this.perbudgetresultRepository = perbudgetresultRepository;
this.perallotRepository = perallotRepository;
}
/// <summary>
/// 预算管理查询(包含金额、占比)
/// </summary>
/// <param name="hospitalid"></param>
/// <param name="year"></param>
/// <returns></returns>
public List<BudgetResponse> QueryBudgetByYear(int hospitalid, int year)
{
var nextYear = year + 1;
var amounts = perbudgetamountRepository.GetEntities(t => t.HospitalId == hospitalid && new List<int> { year, nextYear }.Contains(t.Year));
var ratios = perbudgetratioRepository.GetEntities(t => t.HospitalId == hospitalid && new List<int> { year, nextYear }.Contains(t.Year));
var result = Mapper.Map<List<BudgetResponse>>(amounts);
if (result == null)
return Mapper.Map<List<BudgetResponse>>(ratios);
else if (ratios != null && ratios.Any())
{
result.AddRange(Mapper.Map<List<BudgetResponse>>(ratios));
}
return result;
}
/// <summary>
/// 保存预算管理数据
/// </summary>
/// <param name="request"></param>
/// <param name="userId"></param>
/// <returns></returns>
public bool SaveBudgetData(List<BudgetResponse> request, int userId)
{
if (request == null || !request.Any(t => t.Type == 1) || !request.Any(t => t.Type == 2))
throw new PerformanceException("提交数据中含无效数据");
var amounts = Mapper.Map<List<per_budget_amount>>(request.Where(t => t.Type == 1));
amounts.ForEach(t =>
{
t.CreateTime = DateTime.Now;
t.CreateUser = userId;
});
if (amounts != null && perbudgetamountRepository.AddRange(amounts.ToArray()))
{
var ratios = Mapper.Map<List<per_budget_ratio>>(request.Where(t => t.Type == 2));
ratios.ForEach(t =>
{
t.CreateTime = DateTime.Now;
t.CreateUser = userId;
});
return perbudgetratioRepository.AddRange(ratios.ToArray());
}
return false;
}
/// <summary>
/// 修改预算管理数据
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public bool ModifyBudgetData(List<BudgetResponse> request)
{
if (request == null || !request.Any(t => t.Type == 1) || !request.Any(t => t.Type == 2))
throw new PerformanceException("提交数据中含无效数据");
var amounts = perbudgetamountRepository.GetEntities(w => request.Where(t => t.Type == 1).Select(t => t.Id).Contains(w.Id));
if (amounts != null && amounts.Any())
{
foreach (var item in amounts)
{
var data = request.FirstOrDefault(t => t.Type == 1 && t.Id == item.Id);
if (data == null) continue;
item.HospitalRevenue = data.HospitalRevenue;
item.HospitalRevenue = data.HospitalRevenue;
item.TotalLaborCost = data.TotalLaborCost;
item.StaffSpendingFixed = data.StaffSpendingFixed;
item.StaffSpendingBonus = data.StaffSpendingBonus;
item.TotalMeritPay = data.TotalMeritPay;
item.AmountOfStaff = data.AmountOfStaff;
item.ThePerCapitaMerit = data.ThePerCapitaMerit;
item.TheIncrementCapita = data.TheIncrementCapita;
item.TheDrugIncome = data.TheDrugIncome;
item.MaterialIncome = data.MaterialIncome;
item.TheCostInTotal = data.TheCostInTotal;
item.DepreOfFixedAssets = data.DepreOfFixedAssets;
item.AmortOfIntangibleAssets = data.AmortOfIntangibleAssets;
item.MedicalRisk = data.MedicalRisk;
item.OtherExpenses = data.OtherExpenses;
item.BalanceOfPayments = data.BalanceOfPayments;
item.FiscalSubsidies = data.FiscalSubsidies;
item.TheTotalHospitalBalance = data.TheTotalHospitalBalance;
}
perbudgetamountRepository.UpdateRange(amounts.ToArray());
}
var ratios = perbudgetratioRepository.GetEntities(w => request.Where(t => t.Type == 2).Select(t => t.Id).Contains(w.Id));
if (ratios != null && ratios.Any())
{
foreach (var item in ratios)
{
var data = request.FirstOrDefault(t => t.Type == 2 && t.Id == item.Id);
if (data == null) continue;
item.HospitalRevenue = data.HospitalRevenue;
item.TotalLaborCost = data.TotalLaborCost;
item.StaffSpendingFixed = data.StaffSpendingFixed;
item.StaffSpendingBonus = data.StaffSpendingBonus;
item.MeritPayIncrement = data.MeritPayIncrement;
item.TotalMeritPay = data.TotalMeritPay;
item.Amplification = data.Amplification;
item.IncrementCapitaRatio = data.IncrementCapitaRatio;
item.TheDrugIncome = data.TheDrugIncome;
item.TheDrugIncomeBudget = data.TheDrugIncomeBudget;
item.MaterialIncome = data.MaterialIncome;
item.MaterialIncomeBudget = data.MaterialIncomeBudget;
item.TheCostInTotal = data.TheCostInTotal;
item.DepreOfFixedAssets = data.DepreOfFixedAssets;
item.AmortOfIntangibleAssets = data.AmortOfIntangibleAssets;
item.MedicalRisk = data.MedicalRisk;
item.OtherExpenses = data.OtherExpenses;
item.BalanceOfPayments = data.BalanceOfPayments;
item.TheTotalHospitalBalance = data.TheTotalHospitalBalance;
}
perbudgetratioRepository.UpdateRange(ratios.ToArray());
}
return true;
}
/// <summary>
/// 预算合计数据查询
/// </summary>
/// <param name="hospitalid"></param>
/// <param name="year"></param>
/// <returns></returns>
public List<per_budget_result> QueryResultByYear(int hospitalid, int year)
{
var results = perbudgetresultRepository.GetEntities(t => t.HospitalId == hospitalid && t.Year == year);
return results;
}
/// <summary>
/// 预算比例、历史比例查询
/// </summary>
/// <param name="hospitalid"></param>
/// <param name="year"></param>
/// <returns></returns>
public List<BudgetRatioResponse> QueryBudgetRatio(int hospitalid, int year)
{
var nextYear = year + 1;
var ratios = perbudgetratioRepository.GetEntities(t => t.HospitalId == hospitalid && new List<int> { year, nextYear }.Contains(t.Year));
if (ratios != null && ratios.Any())
{
var result = ratios.Select(t => new BudgetRatioResponse
{
HospitalId = t.HospitalId,
Year = t.Year,
PersonExpendRatio = t.TotalLaborCost,
NewPerformanceRatio = t.TheCostInTotal,
MedicinePropRatio = t.TheDrugIncome,
MaterialCostsRatio = t.MaterialIncome,
TotalMedicineRatio = t.TheDrugIncome + t.MaterialIncome,
DepreOfFixedAssetsRatio = t.DepreOfFixedAssets,
OtherExpensesRatio = t.OtherExpenses,
TheCostInTotalRatio = t.TheCostInTotal,
TheCostCombinedRatio = t.TheCostInTotal,
});
return result.OrderBy(t => t.Year).ToList();
}
return new List<BudgetRatioResponse>();
}
/// <summary>
/// 保存预算合计数据
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public bool SaveBudgetRatio(List<per_budget_result> request, int userId)
{
if (request == null || !request.Any())
throw new PerformanceException("提交数据为空");
// 有效Id, 已经提交过的数据
var effectIds = request.Where(t => t.Id != 0).Select(t => t.Id);
if (effectIds != null && effectIds.Any())
{
var results = perbudgetresultRepository.GetEntities(t => effectIds.Contains(t.Id));
if (results == null || !results.Any())
throw new PerformanceException("提交数据中需要修改的数据无效");
foreach (var item in results)
{
var data = request.FirstOrDefault(t => t.Id == item.Id);
if (data == null) continue;
item.Grant = data.Grant;
item.Adjust = data.Adjust;
item.MedicalIncome = data.MedicalIncome;
item.PersonnelExpenditure = data.PersonnelExpenditure;
item.TheNewPerformance = data.TheNewPerformance;
item.MedicineProportion = data.MedicineProportion;
item.MaterialCosts = data.MaterialCosts;
item.TotalMedicine = data.TotalMedicine;
item.DepreOfFixedAssets = data.DepreOfFixedAssets;
item.OtherExpenses = data.OtherExpenses;
item.TheCostInTotal = data.TheCostInTotal;
item.TheCostCombined = data.TheCostCombined;
item.PersonExpendRatio = data.PersonExpendRatio;
item.NewPerformanceRatio = data.NewPerformanceRatio;
item.MedicinePropRatio = data.MedicinePropRatio;
item.MaterialCostsRatio = data.MaterialCostsRatio;
item.TotalMedicineRatio = data.TotalMedicineRatio;
item.DepreOfFixedAssetsRatio = data.DepreOfFixedAssetsRatio;
item.OtherExpensesRatio = data.OtherExpensesRatio;
item.TheCostInTotalRatio = data.TheCostInTotalRatio;
item.TheCostCombinedRatio = data.TheCostCombinedRatio;
}
perbudgetresultRepository.UpdateRange(results.ToArray());
}
var addData = request.Where(t => t.Id == 0);
if (addData != null && addData.Any())
{
addData.ToList().ForEach(t =>
{
t.CreateDate = DateTime.Now;
t.CreateUser = userId;
});
perbudgetresultRepository.AddRange(addData.ToArray());
}
return true;
}
/// <summary>
/// 修改发放系数、调节系数使用状态
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public bool UseResult(int id)
{
var result = perbudgetresultRepository.GetEntity(t => t.Id == id);
if (result == null)
throw new PerformanceException("所选数据不存在!");
result.States = 2;
return perbudgetresultRepository.Update(result);
}
public void GetAdjust(int allotId, ref decimal adjust)
{
var allot = perallotRepository.GetEntity(t => t.ID == allotId);
if (allot == null) return;
var result = perbudgetresultRepository.GetEntity(t => t.HospitalId == allot.HospitalId && t.Year == allot.Year && t.Month == allot.Month);
if (result == null || result.States != 2) return;
adjust = result.Adjust.Value;
}
public void GetGrant(int allotId, ref decimal grant)
{
var allot = perallotRepository.GetEntity(t => t.ID == allotId);
if (allot == null) return;
var result = perbudgetresultRepository.GetEntity(t => t.HospitalId == allot.HospitalId && t.Year == allot.Year && t.Month == allot.Month);
if (result == null || result.States != 2) return;
grant = result.Grant.Value;
}
}
}
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