Commit d8184d59 by 799284587@qq.com

Merge branch 'feature/report' into develop

# Conflicts:
#	performance/Performance.Repository/PerforReportRepository .cs
parents 0802839d 9a8280a4
......@@ -30,5 +30,19 @@ public ApiResponse AvgPerfor([CustomizeValidator(RuleSet = "Query"), FromBody]Re
var list = reportService.GetAvgPerfor(request.HospitalId);
return new ApiResponse(ResponseType.OK, "", list);
}
/// <summary>
/// 人群绩效比
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[Route("avgratio")]
[HttpPost]
public ApiResponse AvgRatio([CustomizeValidator(RuleSet = "Query"), FromBody]ReportRequest request)
{
var list = reportService.AvgRatio(request.HospitalId);
return new ApiResponse(ResponseType.OK, "", list);
}
}
}
\ No newline at end of file
......@@ -155,6 +155,8 @@ public enum PerforType
临床医生,
[Description("医技医生人均绩效")]
医技医生,
[Description("行政高层人均绩效")]
行政高层,
[Description("行政中层人均绩效")]
行政中层,
[Description("行政工勤人均绩效")]
......
......@@ -17,30 +17,18 @@ public PerforReportRepository(PerformanceDbContext context) : base(context)
/// <returns></returns>
public List<PerReport> GetAvgPerfor(int hospitalid)
{
string sql = @"SELECT t.date x,t.FitPeople y,ROUND( IFNULL( SUM( t.RealGiveFee ), 0 ) / count( 1 ), 2 ) VALUE
FROM
(
SELECT rc.ID,rc.AllotID,rc.AccountingUnit,
CASE
WHEN rc.FitPeople IN ( SELECT DISTINCT FitPeople FROM per_allot WHERE AccountType = '行政高层' ) THEN
'院领导绩效'
WHEN rc.FitPeople IN ( SELECT DISTINCT FitPeople FROM per_allot WHERE AccountType = '行政中层' ) THEN
'行政职能中层绩效'
WHEN rc.FitPeople IN ( SELECT DISTINCT FitPeople FROM per_allot WHERE AccountType = '行政工勤' ) THEN
'行政工勤绩效'
WHEN rc.FitPeople IN ( '临床科室主任人均绩效', '临床科室副主任人均绩效', '医技科室主任人均绩效', '医技科室副主任人均绩效' )
AND rc.AccountType IN ( '临床科室', '医技科室' ) THEN
'临床主任绩效'
WHEN rc.FitPeople IN ( '护士长人均绩效' ) AND rc.AccountType IN ( '临床科室', '医技科室' ) THEN
'临床护理绩效'
END FitPeople,rc.RealGiveFee,
date_format( str_to_date( CONCAT( allot.`Month`, '/', allot.`Year` ), '%m/%Y' ), '%Y-%m' ) date
FROM
res_compute rc
LEFT JOIN per_allot allot ON rc.AllotID = allot.ID
WHERE
allot.HospitalId = @hospitalid
) t GROUP BY t.date,t.FitPeople";
string sql = @"select concat(allot.year,'-',lpad(allot.month,2,'0')) x, positionname y,avgvalue value
from res_baiscnorm bc left join per_allot allot on bc.allotid = allot.id where allot.hospitalid = @hospitalid
order by str_to_date(concat(allot.month, '/', allot.year),'%m/%Y')";
return DapperQuery(sql, new { hospitalid }).ToList();
}
public List<PerReport> AvgRatio(int hospitalid)
{
string sql = @"select concat(allot.year,'-',lpad(allot.month,2,'0')) x, bc.PositionName y,round(bc.AvgValue / rbn.AvgValue,2) value
from res_baiscnorm bc left join res_baiscnorm rbn on bc.AllotID = rbn.AllotID and rbn.PositionName = '临床科室主任人均绩效'
LEFT JOIN per_allot allot ON bc.AllotID = allot.ID where allot.hospitalid = @hospitalid order by value desc;";
return DapperQuery(sql, new { hospitalid }).ToList();
}
}
......
......@@ -61,7 +61,9 @@ public List<res_baiscnorm> ComputeOtherAvg(List<res_baiscnorm> baiscnormList, Li
//行政绩效平均值项目
new { type = AccountUnitType.行政中层, reference = PerforType.行政中层 },
new { type = AccountUnitType.行政工勤, reference = PerforType.行政工勤 },
new { type = AccountUnitType.行政高层, reference = PerforType.行政高层 },
};
foreach (var item in keyList)
{
var count = empolyeeList.Count(t => t.AccountType == item.type.ToString());
......@@ -107,22 +109,36 @@ public List<res_baiscnorm> ComputeOtherAvg(List<res_baiscnorm> baiscnormList, Li
}
/// <summary>
/// 获取临床护士平均绩效
/// 获取临床医生护士平均绩效
/// </summary>
/// <param name="list"></param>
/// <returns></returns>
public List<res_baiscnorm> NurseBaiscnorm(List<res_baiscnorm> baiscnormList, List<PerSheet> list)
public List<res_baiscnorm> DocterNurseBaiscnorm(List<res_baiscnorm> baiscnormList, List<PerSheet> list)
{
var sheet = list.FirstOrDefault(t => t.SheetType == SheetType.ComputeNurseAccount);
var perdata = sheet.PerData.Select(t => (PerDataAccountNurse)t);
var baiscnorm = new res_baiscnorm
// 护士
var sheetNurse = list.FirstOrDefault(t => t.SheetType == SheetType.ComputeNurseAccount);
var perdataNurse = sheetNurse.PerData.Select(t => (PerDataAccountNurse)t);
var baiscnormNurse = new res_baiscnorm
{
PositionName = EnumHelper.GetDescription(PerforType.护士),
TotelNumber = perdata.Sum(t => t.Number),
TotelValue = perdata.Sum(t => t.PerforTotal),
AvgValue = perdata.Sum(t => t.PerforTotal) / perdata.Sum(t => t.Number)
TotelNumber = perdataNurse.Sum(t => t.Number),
TotelValue = perdataNurse.Sum(t => t.PerforTotal),
AvgValue = perdataNurse.Sum(t => t.PerforTotal) / perdataNurse.Sum(t => t.Number)
};
baiscnormList.Add(baiscnorm);
baiscnormList.Add(baiscnormNurse);
// 医生
var sheetDocter = list.FirstOrDefault(t => t.SheetType == SheetType.ComputeDoctorAccount);
var perdataDocter = sheetDocter.PerData.Select(t => (PerDataAccountDoctor)t);
var baiscnormDocter = new res_baiscnorm
{
PositionName = EnumHelper.GetDescription(PerforType.临床医生),
TotelNumber = perdataDocter.Sum(t => t.Number),
TotelValue = perdataDocter.Sum(t => t.PerforTotal),
AvgValue = perdataDocter.Sum(t => t.PerforTotal) / perdataDocter.Sum(t => t.Number)
};
baiscnormList.Add(baiscnormDocter);
return baiscnormList;
}
}
......
......@@ -51,7 +51,7 @@ public List<res_baiscnorm> Compute(per_allot allot, PerExcel excel, List<PerShee
//计算 绩效标准 基数(科主任、副主任、护士长 =>> 平均值)
List<res_baiscnorm> baiscnormList = new List<res_baiscnorm>();
baiscNormService.ComputeAvg(baiscnormList, computResult, empolyeeList);
baiscNormService.NurseBaiscnorm(baiscnormList, perSheets);
baiscNormService.DocterNurseBaiscnorm(baiscnormList, perSheets);
var computResult2 = computeDirector.Compute(computeEmployees, allot, baiscnormList);
//计算 行政人员 平均值
......
......@@ -22,5 +22,13 @@ public List<PerReport> GetAvgPerfor(int hospitalid)
{
return perforReportRepository.GetAvgPerfor(hospitalid);
}
/// <summary>
/// 人群绩效比
/// </summary>
/// <returns></returns>
public List<PerReport> AvgRatio(int hospitalid)
{
return perforReportRepository.AvgRatio(hospitalid);
}
}
}
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