Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
performance
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zry
performance
Commits
9893add7
Commit
9893add7
authored
Nov 10, 2020
by
ruyun.zhang@suvalue.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/20201109' into v2020morge
parents
b7bb6d51
5934c8e2
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
196 additions
and
146 deletions
+196
-146
performance/Performance.Api/Controllers/AllotController.cs
+0
-1
performance/Performance.Api/Controllers/HospitalController.cs
+0
-1
performance/Performance.Api/Controllers/MenuController.cs
+0
-1
performance/Performance.Api/Util/JwtToken.cs
+1
-1
performance/Performance.Api/wwwroot/Performance.Api.xml
+0
-2
performance/Performance.Api/wwwroot/Performance.DtoModels.xml
+13
-0
performance/Performance.Api/wwwroot/Performance.EntityModels.xml
+5
-0
performance/Performance.DtoModels/PerExcel/PerDataAccountBaisc.cs
+2
-2
performance/Performance.DtoModels/Request/HospitalRequest.cs
+8
-3
performance/Performance.DtoModels/Response/DeptDetailResponse.cs
+2
-1
performance/Performance.DtoModels/Response/HospitalRequest.cs
+5
-0
performance/Performance.EntityModels/Entity/sys_hospital.cs
+21
-16
performance/Performance.Repository/PerforCofdirectorRepository.cs
+1
-1
performance/Performance.Services/AllotCompute/ProcessComputService.cs
+24
-13
performance/Performance.Services/AllotCompute/ResultComputeService.cs
+29
-20
performance/Performance.Services/AllotService.cs
+22
-20
performance/Performance.Services/ComputeService.cs
+40
-44
performance/Performance.Services/HospitalService.cs
+1
-0
performance/Performance.Services/OriginalService.cs
+5
-5
performance/Performance.Services/PerExcelService/ComputeEmpolyee/ComputeDirector.cs
+14
-14
performance/Performance.Services/PerExcelService/ExcelReadConfig.cs
+2
-0
performance/Performance.Services/PerExcelService/NopiSevice.cs
+1
-1
No files found.
performance/Performance.Api/Controllers/AllotController.cs
View file @
9893add7
...
...
@@ -188,7 +188,6 @@ public ApiResponse Generate([CustomizeValidator(RuleSet = "Delete"), FromBody] A
logManageService
.
WriteMsg
(
"等待绩效生成"
,
$"等待绩效生成
{
allot
.
Year
}
-
{
allot
.
Month
.
ToString
().
PadLeft
(
2
,
'0'
)}
月份绩效!"
,
1
,
allot
.
ID
,
"ReceiveMessage"
);
//_allotService.Generate(allot, email);
////BackgroundJob.Enqueue(() => _allotService.Generate(allot, email));
///
// 科室下发
resultComputeService
.
GenerateSecondAllot
(
allot
);
return
new
ApiResponse
(
ResponseType
.
OK
);
...
...
performance/Performance.Api/Controllers/HospitalController.cs
View file @
9893add7
...
...
@@ -25,7 +25,6 @@ public HospitalController(HospitalService hospitalService, ClaimService claimSer
/// <summary>
/// 获取当前登录用户管辖医院列表
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[
Route
(
"hospitallist"
)]
[
HttpPost
]
...
...
performance/Performance.Api/Controllers/MenuController.cs
View file @
9893add7
...
...
@@ -28,7 +28,6 @@ public MenuController(MenuService menuService, ClaimService claimService)
/// <summary>
/// 设置用户管辖医院
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[
Route
(
"menulist"
)]
[
HttpPost
]
...
...
performance/Performance.Api/Util/JwtToken.cs
View file @
9893add7
...
...
@@ -69,7 +69,7 @@ public static ClaimsPrincipal GetPrincipal(string token)
return
principal
;
}
catch
(
Exception
ex
)
catch
(
Exception
)
{
return
null
;
}
...
...
performance/Performance.Api/wwwroot/Performance.Api.xml
View file @
9893add7
...
...
@@ -887,7 +887,6 @@
<summary>
获取当前登录用户管辖医院列表
</summary>
<param
name=
"request"
></param>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.HospitalController.Insert(Performance.DtoModels.HospitalRequest)"
>
...
...
@@ -922,7 +921,6 @@
<summary>
设置用户管辖医院
</summary>
<param
name=
"request"
></param>
<returns></returns>
</member>
<member
name=
"T:Performance.Api.Controllers.OriginalController"
>
...
...
performance/Performance.Api/wwwroot/Performance.DtoModels.xml
View file @
9893add7
...
...
@@ -2012,6 +2012,11 @@
是否开启科室CMI占比 1 启用 2 禁用
</summary>
</member>
<member
name=
"P:Performance.DtoModels.HospitalRequest.IsOpenLogisticsSecondAllot"
>
<summary>
是否开启行政后勤二次绩效分配 1 启用 2 禁用
</summary>
</member>
<member
name=
"P:Performance.DtoModels.IncomeRequest.SheetNameKeyword"
>
<summary>
关键字匹配
...
...
@@ -2717,6 +2722,9 @@
<member
name=
"P:Performance.DtoModels.DetailDtos`1.IncomeType"
>
<summary>
1、收入 2、支出 3、工作量 4、特殊科室 5、科室奖罚 6、科室药占比考核 7、科室材料占比考核 8、调节后其他绩效
</summary>
</member>
<member
name=
"P:Performance.DtoModels.DetailDtos`1.OriginalType"
>
<summary>
原始SheetType
</summary>
</member>
<member
name=
"P:Performance.DtoModels.DetailDtos`1.Amount"
>
<summary>
金额
</summary>
</member>
...
...
@@ -2981,6 +2989,11 @@
是否开启护理部审核 1 启用 2 禁用
</summary>
</member>
<member
name=
"P:Performance.DtoModels.HospitalResponse.IsOpenLogisticsSecondAllot"
>
<summary>
是否开启行政后勤二次绩效分配 1 启用 2 禁用
</summary>
</member>
<member
name=
"P:Performance.DtoModels.IncomeResponse.SheetNameKeyword"
>
<summary>
关键字匹配
...
...
performance/Performance.Api/wwwroot/Performance.EntityModels.xml
View file @
9893add7
...
...
@@ -5288,6 +5288,11 @@
是否显示二次绩效科主任1 启用 2 禁用
</summary>
</member>
<member
name=
"P:Performance.EntityModels.sys_hospital.IsOpenLogisticsSecondAllot"
>
<summary>
是否开启行政后勤二次绩效分配 1 启用 2 禁用
</summary>
</member>
<member
name=
"T:Performance.EntityModels.sys_hospitalconfig"
>
<summary>
...
...
performance/Performance.DtoModels/PerExcel/PerDataAccountBaisc.cs
View file @
9893add7
...
...
@@ -81,12 +81,12 @@ public class PerDataAccountBaisc : IPerData
/// <summary>
/// 药占比奖罚
/// </summary>
public
decimal
MedicineExtra
{
get
;
set
;
}
public
decimal
?
MedicineExtra
{
get
;
set
;
}
/// <summary>
/// 材料占比奖罚
/// </summary>
public
decimal
MaterialsExtra
{
get
;
set
;
}
public
decimal
?
MaterialsExtra
{
get
;
set
;
}
/// <summary>
/// 医院奖罚
...
...
performance/Performance.DtoModels/Request/HospitalRequest.cs
View file @
9893add7
...
...
@@ -35,9 +35,9 @@ public class HospitalRequest
/// 医院状态 1 启用 2 禁用
/// </summary>
public
Nullable
<
int
>
States
{
get
;
set
;
}
/// <summary>
/// 是否开启年资系数 1 启用 2 禁用
/// </summary>
///
//
<summary>
///
//
是否开启年资系数 1 启用 2 禁用
///
//
</summary>
//public Nullable<int> IsOpenWorkYear { get; set; }
/// <summary>
/// 是否开启药占比系数 1 启用 2 禁用
...
...
@@ -59,6 +59,11 @@ public class HospitalRequest
/// 是否开启科室CMI占比 1 启用 2 禁用
/// </summary>
public
Nullable
<
int
>
IsOpenCMIPercent
{
get
;
set
;
}
/// <summary>
/// 是否开启行政后勤二次绩效分配 1 启用 2 禁用
/// </summary>
public
Nullable
<
int
>
IsOpenLogisticsSecondAllot
{
get
;
set
;
}
}
public
class
HospitalRequestValidator
:
AbstractValidator
<
HospitalRequest
>
...
...
performance/Performance.DtoModels/Response/DeptDetailResponse.cs
View file @
9893add7
...
...
@@ -49,7 +49,8 @@ public class DetailDtos<T>
/// <summary> 1、收入 2、支出 3、工作量 4、特殊科室 5、科室奖罚 6、科室药占比考核 7、科室材料占比考核 8、调节后其他绩效 </summary>
public
int
IncomeType
{
get
;
set
;
}
/// <summary> 原始SheetType </summary>
public
int
OriginalType
{
get
;
set
;
}
/// <summary> 金额 </summary>
public
decimal
Amount
{
get
;
set
;
}
...
...
performance/Performance.DtoModels/Response/HospitalRequest.cs
View file @
9893add7
...
...
@@ -27,5 +27,10 @@ public class HospitalResponse
/// 是否开启护理部审核 1 启用 2 禁用
/// </summary>
public
int
IsOpenNursingDeptAudit
{
get
;
set
;
}
/// <summary>
/// 是否开启行政后勤二次绩效分配 1 启用 2 禁用
/// </summary>
public
Nullable
<
int
>
IsOpenLogisticsSecondAllot
{
get
;
set
;
}
}
}
performance/Performance.EntityModels/Entity/sys_hospital.cs
View file @
9893add7
...
...
@@ -7,80 +7,80 @@
using
System.ComponentModel.DataAnnotations
;
using
System.ComponentModel.DataAnnotations.Schema
;
namespace
Performance.EntityModels
namespace
Performance.EntityModels
{
/// <summary>
/// 医院信息
/// </summary>
[
Table
(
"sys_hospital"
)]
public
class
sys_hospital
public
class
sys_hospital
{
/// <summary>
/// ID
/// </summary>
[
Key
]
public
int
ID
{
get
;
set
;
}
public
int
ID
{
get
;
set
;
}
/// <summary>
///
/// </summary>
public
Nullable
<
DateTime
>
CreateDate
{
get
;
set
;
}
/// <summary>
///
/// </summary>
public
Nullable
<
int
>
CreateUser
{
get
;
set
;
}
/// <summary>
/// 医院名称
/// </summary>
public
string
HosName
{
get
;
set
;
}
/// <summary>
/// 简称
/// </summary>
public
string
ShortName
{
get
;
set
;
}
/// <summary>
/// 医院区域编码
/// </summary>
public
string
AreaCode
{
get
;
set
;
}
/// <summary>
/// 医院等级
/// </summary>
public
string
HosLevel
{
get
;
set
;
}
/// <summary>
/// 医院类型
/// </summary>
public
string
HosType
{
get
;
set
;
}
/// <summary>
/// 医院状态 1 启用 2 禁用
/// </summary>
public
Nullable
<
int
>
States
{
get
;
set
;
}
/// <summary>
/// 是否开启年资系数 1 启用 2 禁用
/// </summary>
public
Nullable
<
int
>
IsOpenWorkYear
{
get
;
set
;
}
/// <summary>
/// 是否开启药占比系数 1 启用 2 禁用
/// </summary>
public
Nullable
<
int
>
IsOpenDrugprop
{
get
;
set
;
}
/// <summary>
/// 是否开启ICU有效收入系数 1 启用 2 禁用
/// </summary>
public
Nullable
<
int
>
IsOpenIncome
{
get
;
set
;
}
/// <summary>
/// 是否开启规模/效率绩效 1 启用 2 禁用
/// </summary>
public
Nullable
<
int
>
IsOpenDirector
{
get
;
set
;
}
/// <summary>
/// 是否显示绩效合计 1 显示绩效合计 2 显示管理绩效
/// </summary>
...
...
@@ -100,5 +100,10 @@ public class sys_hospital
/// 是否显示二次绩效科主任1 启用 2 禁用
/// </summary>
public
Nullable
<
int
>
IsShowSecondDirector
{
get
;
set
;
}
/// <summary>
/// 是否开启行政后勤二次绩效分配 1 启用 2 禁用
/// </summary>
public
Nullable
<
int
>
IsOpenLogisticsSecondAllot
{
get
;
set
;
}
}
}
performance/Performance.Repository/PerforCofdirectorRepository.cs
View file @
9893add7
...
...
@@ -149,7 +149,7 @@ union all
{
flag
=
connection
.
Execute
(
sql
,
new
{
allotid
},
commandTimeout
:
60
*
60
);
}
catch
(
Exception
ex
)
catch
(
Exception
)
{
}
...
...
performance/Performance.Services/AllotCompute/ProcessComputService.cs
View file @
9893add7
...
...
@@ -259,8 +259,7 @@ public void Save(List<PerSheet> perSheets, int allotId)
/// <param name="excel"></param>
/// <param name="perSheet"></param>
/// <returns></returns>
public
List
<
PerSheet
>
Compute
(
PerExcel
excel
,
List
<
PerSheet
>
perSheet
,
IEnumerable
<
AccountUnitTotal
>
extras
,
IEnumerable
<
AccountUnitTotal
>
drugExtras
,
IEnumerable
<
AccountUnitTotal
>
materialsExtras
)
public
List
<
PerSheet
>
Compute
(
PerExcel
excel
,
List
<
PerSheet
>
perSheet
)
{
var
accountList
=
excel
.
PerSheet
.
FirstOrDefault
(
t
=>
t
.
SheetType
==
SheetType
.
AccountBasic
)?.
PerData
?.
Select
(
t
=>
(
PerDataAccountBaisc
)
t
);
var
economicData
=
perSheet
.
FirstOrDefault
(
t
=>
t
.
SheetType
==
SheetType
.
ComputeEconomic
)?.
PerData
?.
Select
(
t
=>
(
PerData
)
t
);
...
...
@@ -284,9 +283,9 @@ public void Save(List<PerSheet> perSheets, int allotId)
foreach
(
var
dept
in
atDataList
)
{
//科室奖罚汇总结果
var
extra
=
extras
?.
FirstOrDefault
(
w
=>
w
.
UnitType
==
unitType
.
ToString
()
&&
w
.
AccountingUnit
==
dept
.
AccountingUnit
)?.
TotelValue
;
var
drugExtra
=
drugExtras
?.
FirstOrDefault
(
w
=>
w
.
UnitType
==
unitType
.
ToString
()
&&
w
.
AccountingUnit
==
dept
.
AccountingUnit
)?.
TotelValue
;
var
materialsExtra
=
materialsExtras
?.
FirstOrDefault
(
w
=>
w
.
UnitType
==
unitType
.
ToString
()
&&
w
.
AccountingUnit
==
dept
.
AccountingUnit
)?.
TotelValue
;
//
var extra = extras?.FirstOrDefault(w => w.UnitType == unitType.ToString() && w.AccountingUnit == dept.AccountingUnit)?.TotelValue;
//
var drugExtra = drugExtras?.FirstOrDefault(w => w.UnitType == unitType.ToString() && w.AccountingUnit == dept.AccountingUnit)?.TotelValue;
//
var materialsExtra = materialsExtras?.FirstOrDefault(w => w.UnitType == unitType.ToString() && w.AccountingUnit == dept.AccountingUnit)?.TotelValue;
//var scoreAverage = accountScoreAverages?.FirstOrDefault(w => w.UnitType == unitType.ToString() && w.AccountingUnit == dept.AccountingUnit)?.TotelValue;
var
econDoctor
=
economicData
.
FirstOrDefault
(
t
=>
t
.
UnitType
==
unitType
.
ToString
()
&&
t
.
AccountingUnit
==
dept
.
AccountingUnit
);
...
...
@@ -308,9 +307,13 @@ public void Save(List<PerSheet> perSheets, int allotId)
dept
.
AssessBeforeOtherFee
=
dept
?.
AssessBeforeOtherFee
??
0
;
dept
.
AssessLaterOtherFee
=
dept
?.
AssessLaterOtherFee
??
0
;
dept
.
AdjustLaterOtherFee
=
dept
?.
AdjustLaterOtherFee
??
0
;
dept
.
Extra
=
(
extra
??
0
);
dept
.
MedicineExtra
=
(
drugExtra
??
0
);
dept
.
MaterialsExtra
=
(
materialsExtra
??
0
);
//dept.Extra = (extra ?? 0);
//dept.MedicineExtra = (drugExtra ?? 0);
//dept.MaterialsExtra = (materialsExtra ?? 0);
dept
.
Extra
=
0
;
dept
.
MedicineExtra
=
dept
.
MedicineExtra
??
0
;
dept
.
MaterialsExtra
=
dept
.
MaterialsExtra
??
0
;
dept
.
PerforFee
=
dept
.
Income
*
dept
.
BasicFactor
;
//dept.PerforTotal = Math.Round((dept.PerforFee + dept.WorkloadFee + dept.OtherPerfor1 + dept.AssessBeforeOtherFee) ?? 0);
dept
.
PerforTotal
=
Math
.
Round
((
dept
.
PerforFee
+
dept
.
WorkloadFee
+
dept
.
AssessBeforeOtherFee
)
??
0
);
...
...
@@ -333,7 +336,7 @@ public void Save(List<PerSheet> perSheets, int allotId)
/// <param name="allot"></param>
/// <param name="excel"></param>
/// <param name="extras"></param>
public
void
ComputeOffice
(
per_allot
allot
,
PerExcel
excel
,
IEnumerable
<
AccountUnitTotal
>
extras
)
public
void
ComputeOffice
(
per_allot
allot
,
PerExcel
excel
)
{
//取出科室
var
accountList
=
excel
.
PerSheet
.
FirstOrDefault
(
t
=>
t
.
SheetType
==
SheetType
.
AccountBasic
)?.
PerData
?.
Select
(
t
=>
(
PerDataAccountBaisc
)
t
);
...
...
@@ -357,7 +360,7 @@ public void ComputeOffice(per_allot allot, PerExcel excel, IEnumerable<AccountUn
if
(!
empolyees
.
Any
())
continue
;
//科室奖罚汇总结果
var
extra
=
extras
?.
FirstOrDefault
(
w
=>
w
.
UnitType
==
account
.
AccountType
.
ToString
()
&&
w
.
AccountingUnit
==
account
.
AccountingUnit
)?.
TotelValue
;
//
var extra = extras?.FirstOrDefault(w => w.UnitType == account.AccountType.ToString() && w.AccountingUnit == account.AccountingUnit)?.TotelValue;
//var drugExtra = drugExtras.FirstOrDefault(w => w.UnitType == account.AccountType.ToString() && w.AccountingUnit == resAccount.AccountingUnit)?.TotelValue;
//var materialsExtra = materialsExtras.FirstOrDefault(w => w.UnitType == account.AccountType.ToString() && w.AccountingUnit == resAccount.AccountingUnit)?.TotelValue;
...
...
@@ -369,9 +372,17 @@ public void ComputeOffice(per_allot allot, PerExcel excel, IEnumerable<AccountUn
dept
.
ScoringAverage
=
resAccount
?.
ScoringAverage
==
null
?
0
:
resAccount
.
ScoringAverage
;
dept
.
AdjustFactor
=
resAccount
?.
AdjustFactor
==
null
?
0
:
resAccount
.
AdjustFactor
;
dept
.
Income
=
empolyees
.
Sum
(
w
=>
w
.
PerforTotal
??
0
);
dept
.
Extra
=
(
extra
??
0
);
dept
.
MedicineExtra
=
0
;
// (drugExtra ?? 0);
dept
.
MaterialsExtra
=
0
;
//(materialsExtra ?? 0);
//dept.Extra = (extra ?? 0);
//dept.MedicineExtra = 0;// (drugExtra ?? 0);
//dept.MaterialsExtra = 0;//(materialsExtra ?? 0);
dept
.
Extra
=
0
;
dept
.
MedicineExtra
=
resAccount
?.
MedicineExtra
??
0
;
// (drugExtra ?? 0);
dept
.
MaterialsExtra
=
resAccount
?.
MaterialsExtra
??
0
;
//(materialsExtra ?? 0);
dept
.
AssessBeforeOtherFee
=
resAccount
?.
AssessBeforeOtherFee
??
0
;
dept
.
AssessLaterOtherFee
=
resAccount
?.
AssessLaterOtherFee
??
0
;
dept
.
AdjustLaterOtherFee
=
resAccount
?.
AdjustLaterOtherFee
??
0
;
dept
.
PerforFee
=
empolyees
.
Sum
(
w
=>
w
.
PerforTotal
??
0
);
dept
.
PerforTotal
=
Math
.
Round
(
empolyees
.
Sum
(
w
=>
w
.
GiveFee
??
0
));
dept
.
RealGiveFee
=
Math
.
Round
(((
dept
.
PerforTotal
*
dept
.
ScoringAverage
+
dept
.
MedicineExtra
+
dept
.
MaterialsExtra
+
dept
.
Extra
)
*
dept
.
AdjustFactor
)
??
0
);
...
...
performance/Performance.Services/AllotCompute/ResultComputeService.cs
View file @
9893add7
...
...
@@ -23,6 +23,7 @@ public class ResultComputeService : IAutoInjection
private
readonly
PerforAgcomputeRepository
perforAgcomputeRepository
;
private
readonly
PerforAgsecondallotRepository
perforAgsecondallotRepository
;
private
readonly
PerforresreservedRepository
perforresreservedRepository
;
private
readonly
PerforHospitalRepository
hospitalRepository
;
private
readonly
PerforImemployeeRepository
perforImEmployeeRepository
;
private
readonly
PerforRescomputeRepository
perforRescomputeRepository
;
private
readonly
PerforResbaiscnormRepository
perforResbaiscnormRepository
;
...
...
@@ -34,6 +35,7 @@ public class ResultComputeService : IAutoInjection
private
readonly
PerforImemployeelogisticsRepository
perforImemployeelogisticsRepository
;
public
ResultComputeService
(
PerforHospitalRepository
hospitalRepository
,
PerforImemployeeRepository
perforImEmployeeRepository
,
PerforRescomputeRepository
perforRescomputeRepository
,
PerforResbaiscnormRepository
perforResbaiscnormRepository
,
...
...
@@ -52,6 +54,7 @@ public class ResultComputeService : IAutoInjection
{
this
.
baiscNormService
=
baiscNormService
;
this
.
computeDirector
=
computeDirector
;
this
.
hospitalRepository
=
hospitalRepository
;
this
.
perforImEmployeeRepository
=
perforImEmployeeRepository
;
this
.
perforRescomputeRepository
=
perforRescomputeRepository
;
this
.
perforResbaiscnormRepository
=
perforResbaiscnormRepository
;
...
...
@@ -73,8 +76,7 @@ public class ResultComputeService : IAutoInjection
/// 计算最终数据
/// </summary>
/// <param name="excel"></param>
public
List
<
res_baiscnorm
>
Compute
(
per_allot
allot
,
PerExcel
excel
,
List
<
PerSheet
>
accountSheet
,
IEnumerable
<
EmpolyeeTotal
>
employeeExtra
)
public
List
<
res_baiscnorm
>
Compute
(
per_allot
allot
,
List
<
PerSheet
>
accountSheet
)
{
//取出人员信息
var
empolyeeList
=
perforImemployeeclinicRepository
.
GetEntities
(
t
=>
t
.
AllotID
==
allot
.
ID
);
...
...
@@ -83,7 +85,7 @@ public class ResultComputeService : IAutoInjection
List
<
ComputeEmployee
>
computeEmployees
=
Mapper
.
Map
<
List
<
ComputeEmployee
>>(
empolyeeList
);
logManageService
.
WriteMsg
(
"正在生成绩效"
,
"科室主任、护士长 最终绩效数据计算"
,
1
,
allot
.
ID
,
"ReceiveMessage"
);
var
computResult
=
computeDirector
.
Compute
(
computeEmployees
,
accountSheet
,
allot
,
employeeExtra
);
var
computResult
=
computeDirector
.
Compute
(
computeEmployees
,
accountSheet
,
allot
);
//计算 绩效标准 基数(科主任、副主任、护士长 =>> 平均值)
List
<
res_baiscnorm
>
baiscnormList
=
new
List
<
res_baiscnorm
>();
baiscNormService
.
ComputeAvg
(
baiscnormList
,
computeEmployees
,
computResult
);
...
...
@@ -92,12 +94,12 @@ public class ResultComputeService : IAutoInjection
var
empolyeeList2
=
perforImEmployeeRepository
.
GetEntities
(
t
=>
t
.
AllotID
==
allot
.
ID
);
var
computeEmployees2
=
Mapper
.
Map
<
List
<
ComputeEmployee
>>(
empolyeeList2
);
logManageService
.
WriteMsg
(
"正在生成绩效"
,
"行政中高层 最终绩效数据计算"
,
1
,
allot
.
ID
,
"ReceiveMessage"
);
var
computResult2
=
computeDirector
.
Compute
(
computeEmployees2
,
allot
,
baiscnormList
,
employeeExtra
);
var
computResult2
=
computeDirector
.
Compute
(
computeEmployees2
,
allot
,
baiscnormList
);
var
empolyeeList3
=
perforImemployeelogisticsRepository
.
GetEntities
(
t
=>
t
.
AllotID
==
allot
.
ID
);
var
computeEmployees3
=
Mapper
.
Map
<
List
<
ComputeEmployee
>>(
empolyeeList3
);
logManageService
.
WriteMsg
(
"正在生成绩效"
,
"行政后勤 最终绩效数据计算"
,
1
,
allot
.
ID
,
"ReceiveMessage"
);
var
computResult3
=
computeDirector
.
Compute
(
computeEmployees3
,
allot
,
baiscnormList
,
employeeExtra
);
var
computResult3
=
computeDirector
.
Compute
(
computeEmployees3
,
allot
,
baiscnormList
);
//计算 行政中高层 平均值
baiscNormService
.
ComputeOtherAvg
(
baiscnormList
,
computResult2
,
empolyeeList2
);
...
...
@@ -122,9 +124,7 @@ public class ResultComputeService : IAutoInjection
/// </summary>
/// <param name="excel"></param>
/// <param name="allot"></param>
public
void
SpecialUnitCompute
(
PerExcel
excel
,
per_allot
allot
,
List
<
res_baiscnorm
>
baiscnormList
,
IEnumerable
<
AccountUnitTotal
>
accountExtras
,
IEnumerable
<
AccountUnitTotal
>
drugExtras
,
IEnumerable
<
AccountUnitTotal
>
materialsExtras
,
IEnumerable
<
EmpolyeeTotal
>
employeeExtra
)
public
void
SpecialUnitCompute
(
PerExcel
excel
,
per_allot
allot
,
List
<
res_baiscnorm
>
baiscnormList
)
{
var
isBudget
=
budgetService
.
GetAdjustAndGrant
(
allot
,
out
decimal
adjust
,
out
decimal
grant
);
var
typeList
=
EnumHelper
.
GetItems
<
PerforType
>();
...
...
@@ -170,9 +170,9 @@ public class ResultComputeService : IAutoInjection
foreach
(
var
item
in
accountDataList
)
{
//科室奖罚汇总结果
var
extra
=
accountExtras
?.
FirstOrDefault
(
w
=>
w
.
UnitType
==
UnitType
.
特殊核算组
.
ToString
()
&&
w
.
AccountingUnit
==
dept
?.
AccountingUnit
)?.
TotelValue
;
var
drugExtra
=
drugExtras
?.
FirstOrDefault
(
w
=>
w
.
UnitType
==
UnitType
.
特殊核算组
.
ToString
()
&&
w
.
AccountingUnit
==
dept
?.
AccountingUnit
)?.
TotelValue
;
var
materialsExtra
=
materialsExtras
?.
FirstOrDefault
(
w
=>
w
.
UnitType
==
UnitType
.
特殊核算组
.
ToString
()
&&
w
.
AccountingUnit
==
dept
?.
AccountingUnit
)?.
TotelValue
;
//
var extra = accountExtras?.FirstOrDefault(w => w.UnitType == UnitType.特殊核算组.ToString() && w.AccountingUnit == dept?.AccountingUnit)?.TotelValue;
//
var drugExtra = drugExtras?.FirstOrDefault(w => w.UnitType == UnitType.特殊核算组.ToString() && w.AccountingUnit == dept?.AccountingUnit)?.TotelValue;
//
var materialsExtra = materialsExtras?.FirstOrDefault(w => w.UnitType == UnitType.特殊核算组.ToString() && w.AccountingUnit == dept?.AccountingUnit)?.TotelValue;
//var scoreAverage = accountScoreAverages?.FirstOrDefault(w => w.UnitType == UnitType.特殊核算组.ToString() && w.AccountingUnit == dept?.AccountingUnit)?.TotelValue;
decimal
?
headcount
=
null
;
...
...
@@ -197,9 +197,13 @@ public class ResultComputeService : IAutoInjection
//ScoringAverage = scoreAverage.HasValue ? scoreAverage : dept?.ScoringAverage,
ScoringAverage
=
dept
?.
ScoringAverage
??
1
,
//OtherPerfor = dept?.OtherPerfor1,
Punishment
=
(
extra
??
0
),
MedicineExtra
=
(
drugExtra
??
0
),
MaterialsExtra
=
(
materialsExtra
??
0
),
//Punishment = (extra ?? 0),
//MedicineExtra = (drugExtra ?? 0),
//MaterialsExtra = (materialsExtra ?? 0),
Punishment
=
0
,
MedicineExtra
=
dept
?.
MedicineExtra
??
0
,
MaterialsExtra
=
dept
?.
MaterialsExtra
??
0
,
Adjust
=
isBudget
?
adjust
:
(
dept
?.
AdjustFactor
??
1
),
AssessBeforeOtherFee
=
dept
?.
AssessBeforeOtherFee
??
0
,
...
...
@@ -222,10 +226,10 @@ public class ResultComputeService : IAutoInjection
foreach
(
var
empolyee
in
empolyees
)
{
var
extra
=
employeeExtra
?.
Where
(
w
=>
!
string
.
IsNullOrEmpty
(
w
.
AccountingUnit
)
&&
!
string
.
IsNullOrEmpty
(
w
.
UnitType
)
&&
(!
string
.
IsNullOrEmpty
(
w
.
EmployeeName
)
||
!
string
.
IsNullOrEmpty
(
w
.
JobNumber
)))
.
FirstOrDefault
(
w
=>
w
.
AccountingUnit
==
empolyee
.
AccountingUnit
&&
w
.
UnitType
==
empolyee
.
UnitType
&&
w
.
JobNumber
==
empolyee
.
JobNumber
&&
w
.
EmployeeName
==
empolyee
.
DoctorName
)?.
TotelValue
;
//
var extra = employeeExtra?.Where(w => !string.IsNullOrEmpty(w.AccountingUnit) && !string.IsNullOrEmpty(w.UnitType)
//
&& (!string.IsNullOrEmpty(w.EmployeeName) || !string.IsNullOrEmpty(w.JobNumber)))
//
.FirstOrDefault(w => w.AccountingUnit == empolyee.AccountingUnit && w.UnitType == empolyee.UnitType
//
&& w.JobNumber == empolyee.JobNumber && w.EmployeeName == empolyee.DoctorName)?.TotelValue;
var
avg
=
(
group
.
Number
==
0
?
0
:
(
sumValue
/
group
.
Number
));
var
empolyeeAdjust
=
isBudget
?
adjust
:
empolyee
.
Adjust
;
var
compute
=
new
ComputeResult
...
...
@@ -239,7 +243,7 @@ public class ResultComputeService : IAutoInjection
JobTitle
=
empolyee
.
JobTitle
,
ScoreAverageRate
=
empolyee
.
ScoreAverageRate
,
Punishment
=
extra
??
0
,
Punishment
=
0
,
//OtherPerfor = empolyee.OtherPerfor,
OtherManagePerfor
=
empolyee
.
OtherManagePerfor
,
Number
=
group
.
Number
,
...
...
@@ -504,7 +508,12 @@ public void GenerateSecondAllot(per_allot allot)
List
<
ag_secondallot
>
insSecond
=
new
List
<
ag_secondallot
>();
List
<
ag_secondallot
>
updSecond
=
new
List
<
ag_secondallot
>();
var
types
=
new
int
[]
{
(
int
)
UnitType
.
行政高层
,
(
int
)
UnitType
.
行政中层
};
var
types
=
new
List
<
int
>
{
(
int
)
UnitType
.
行政高层
,
(
int
)
UnitType
.
行政中层
};
// 获取医院是否开启后勤二次分配
var
hospital
=
hospitalRepository
.
GetEntity
(
w
=>
w
.
ID
==
allot
.
HospitalId
);
if
(
hospital
?.
IsOpenLogisticsSecondAllot
!=
1
)
types
.
Add
((
int
)
UnitType
.
行政后勤
);
var
accountUnit
=
perforResaccountRepository
.
GetEntities
(
t
=>
t
.
AllotID
==
allot
.
ID
&&
!
types
.
Contains
(
t
.
UnitType
.
Value
));
var
specialList
=
perforResspecialunitRepository
.
GetEntities
(
t
=>
t
.
AllotID
==
allot
.
ID
);
...
...
performance/Performance.Services/AllotService.cs
View file @
9893add7
...
...
@@ -324,6 +324,7 @@ public void Generate(per_allot allot, string mail)
var
(
list
,
mergeSheets
)
=
processComputService
.
MergeCompute
(
excel
,
allot
.
ID
);
processComputService
.
Save
(
list
,
allot
.
ID
);
#
region
注释
////计算保底绩效参考标准(保底绩效临床医生人均绩效、保底绩效医技医生人均绩效、保底绩效护士人均绩效)
//logManageService.WriteMsg("计算保底绩效参考标准值", "正在保底绩效临床医生人均绩效、保底绩效医技医生人均绩效、保底绩效护士人均绩效", 1, allot.ID, "ReceiveMessage", true);
//var minimumBaiscnorm = processComputService.ComputeMinimum(excel, mergeSheets, allot.ID);
...
...
@@ -350,18 +351,18 @@ public void Generate(per_allot allot, string mail)
//logManageService.WriteMsg("计算保底绩效参考标准值", "保存保底绩效参考标准", 1, allot.ID, "ReceiveMessage", true);
//perforResbaiscnormRepository.AddRange(minimumBaiscnorm.ToArray());
// 科室奖罚汇总
logManageService
.
WriteMsg
(
"正在生成绩效"
,
"科室奖罚汇总"
,
1
,
allot
.
ID
,
"ReceiveMessage"
,
true
);
var
accountExtras
=
processComputService
.
GetAccountExtra
(
excel
,
SheetType
.
AccountExtra
,
true
);
// 科室药占比考核
logManageService
.
WriteMsg
(
"正在生成绩效"
,
"科室药占比考核"
,
1
,
allot
.
ID
,
"ReceiveMessage"
,
true
);
var
drugExtras
=
processComputService
.
GetAccountExtra
(
excel
,
SheetType
.
AccountDrugAssess
,
true
);
// 科室材料占比考核
logManageService
.
WriteMsg
(
"正在生成绩效"
,
"科室材料占比考核"
,
1
,
allot
.
ID
,
"ReceiveMessage"
,
true
);
var
materialsExtras
=
processComputService
.
GetAccountExtra
(
excel
,
SheetType
.
AccountMaterialsAssess
,
true
);
// 科室考核得分率
logManageService
.
WriteMsg
(
"正在生成绩效"
,
"科室考核得分率"
,
1
,
allot
.
ID
,
"ReceiveMessage"
,
true
);
var
accountScoreAverages
=
processComputService
.
GetAccountScoreAverage
(
excel
,
SheetType
.
AccountScoreAverage
,
true
);
//
//
科室奖罚汇总
//
logManageService.WriteMsg("正在生成绩效", "科室奖罚汇总", 1, allot.ID, "ReceiveMessage", true);
//
var accountExtras = processComputService.GetAccountExtra(excel, SheetType.AccountExtra, true);
//
//
科室药占比考核
//
logManageService.WriteMsg("正在生成绩效", "科室药占比考核", 1, allot.ID, "ReceiveMessage", true);
//
var drugExtras = processComputService.GetAccountExtra(excel, SheetType.AccountDrugAssess, true);
//
//
科室材料占比考核
//
logManageService.WriteMsg("正在生成绩效", "科室材料占比考核", 1, allot.ID, "ReceiveMessage", true);
//
var materialsExtras = processComputService.GetAccountExtra(excel, SheetType.AccountMaterialsAssess, true);
//
//
科室考核得分率
//
logManageService.WriteMsg("正在生成绩效", "科室考核得分率", 1, allot.ID, "ReceiveMessage", true);
//
var accountScoreAverages = processComputService.GetAccountScoreAverage(excel, SheetType.AccountScoreAverage, true);
////科室药占比考核
//logManageService.WriteMsg("正在生成绩效", "科室奖罚汇总", 1, allot.ID, "ReceiveMessage", true);
...
...
@@ -369,30 +370,31 @@ public void Generate(per_allot allot, string mail)
////科室材料考核
//logManageService.WriteMsg("正在生成绩效", "科室奖罚汇总", 1, allot.ID, "ReceiveMessage", true);
//var accountExtras = processComputService.GetAccountExtra(excel);
//var accountExtras = processComputService.GetAccountExtra(excel);
#
endregion
//重新计算科室业绩(含所有提供保底金额)
logManageService
.
WriteMsg
(
"正在生成绩效"
,
"计算科室业绩分"
,
1
,
allot
.
ID
,
"ReceiveMessage"
,
true
);
var
sheetLast
=
processComputService
.
Compute
(
excel
,
mergeSheets
,
accountExtras
,
drugExtras
,
materialsExtras
);
var
sheetLast
=
processComputService
.
Compute
(
excel
,
mergeSheets
);
//保存计算过程数据
logManageService
.
WriteMsg
(
"正在生成绩效"
,
"保存科室业绩结果及计算过程中产生的数据"
,
1
,
allot
.
ID
,
"ReceiveMessage"
,
true
);
processComputService
.
Save
(
sheetLast
,
allot
.
ID
);
//业务中层行政中高层医院奖罚
logManageService
.
WriteMsg
(
"正在生成绩效"
,
"业务中层行政中高层医院奖罚"
,
1
,
allot
.
ID
,
"ReceiveMessage"
,
true
);
var
employeeExtra
=
processComputService
.
GetEmployeeExtra
(
excel
);
//
//
业务中层行政中高层医院奖罚
//
logManageService.WriteMsg("正在生成绩效", "业务中层行政中高层医院奖罚", 1, allot.ID, "ReceiveMessage", true);
//
var employeeExtra = processComputService.GetEmployeeExtra(excel);
// 计算最总数据
logManageService
.
WriteMsg
(
"正在生成绩效"
,
"计算最终绩效数据"
,
1
,
allot
.
ID
,
"ReceiveMessage"
,
true
);
var
baiscnormList
=
resultComputeService
.
Compute
(
allot
,
excel
,
sheetLast
,
employeeExtra
);
var
baiscnormList
=
resultComputeService
.
Compute
(
allot
,
sheetLast
);
// 计算行政科室绩效
processComputService
.
ComputeOffice
(
allot
,
excel
,
accountExtras
);
processComputService
.
ComputeOffice
(
allot
,
excel
);
// 计算特殊科室
logManageService
.
WriteMsg
(
"正在生成绩效"
,
"计算最终特殊科室绩效数据"
,
1
,
allot
.
ID
,
"ReceiveMessage"
,
true
);
resultComputeService
.
SpecialUnitCompute
(
excel
,
allot
,
baiscnormList
,
accountExtras
,
drugExtras
,
materialsExtras
,
employeeExtra
);
resultComputeService
.
SpecialUnitCompute
(
excel
,
allot
,
baiscnormList
);
logManageService
.
WriteMsg
(
"正在生成绩效"
,
"保存最终特殊科室绩效数据"
,
1
,
allot
.
ID
,
"ReceiveMessage"
,
true
);
//保存 绩效人均参考标准
...
...
performance/Performance.Services/ComputeService.cs
View file @
9893add7
...
...
@@ -748,23 +748,15 @@ public DeptDataDetails<DetailModuleExtend> DeptDetail(int accountId)
groupbasis
+=
1
;
single
=
sheet
.
SheetName
.
Substring
(
0
,
3
);
Dictionary
<
SheetType
,
decimal
?>
pairs
=
new
Dictionary
<
SheetType
,
decimal
?>
{
{
SheetType
.
AccountExtra
,
account
.
Extra
},
{
SheetType
.
AccountDrugAssess
,
account
.
MedicineExtra
},
{
SheetType
.
AccountMaterialsAssess
,
account
.
MaterialsExtra
},
};
var
sheetName
=
new
Regex
(
"[0-9]*"
).
Replace
(
sheet
.
SheetName
,
""
,
5
).
Replace
(
"."
,
""
).
Replace
(
" "
,
""
);
var
(
sheettype
,
amount
)
=
ClinicDepartmentDetail
(
persheet
,
account
,
basicData
,
sheet
,
type
,
sheetName
);
(
sheettype
,
amount
)
=
CommonDepartmentDetail
(
basicData
,
sheet
,
type
,
pairs
,
sheettype
,
amount
);
(
sheettype
,
amount
)
=
CommonDepartmentDetail
(
basicData
,
sheet
,
type
);
var
items
=
CommonDetailItems
(
basicData
,
headers
,
sheet
,
type
);
if
(
sheet
.
SheetType
==
(
int
)
SheetType
.
Workload
)
{
if
((
sheetName
.
Contains
(
"医生"
)
&&
account
.
UnitType
==
(
int
)
UnitType
.
护理组
)
||
(
sheetName
.
Contains
(
"护理"
)
&&
account
.
UnitType
!=
(
int
)
UnitType
.
护理组
))
continue
;
if
((
sheetName
.
Contains
(
"医生"
)
&&
account
.
UnitType
==
(
int
)
UnitType
.
护理组
)
||
(
sheetName
.
Contains
(
"护理"
)
&&
account
.
UnitType
!=
(
int
)
UnitType
.
护理组
))
continue
;
var
workitems
=
cofworkitemRepository
.
GetEntities
(
t
=>
t
.
AllotID
==
account
.
AllotID
);
var
allotCmi
=
cofcmiRepository
.
GetEntity
(
t
=>
t
.
AllotId
==
account
.
AllotID
&&
t
.
UnitType
==
account
.
UnitType
&&
t
.
AccountingUnit
==
account
.
AccountingUnit
);
...
...
@@ -783,7 +775,7 @@ public DeptDataDetails<DetailModuleExtend> DeptDetail(int accountId)
items
=
items
.
Where
(
t
=>
(
t
.
ItemValue
??
0
)
!=
0
).
ToList
();
var
item
=
new
DetailDtos
{
ItemName
=
sheetName
,
IncomeType
=
sheettype
,
Amount
=
amount
,
GroupBasis
=
groupbasis
,
Items
=
items
};
var
item
=
new
DetailDtos
{
ItemName
=
sheetName
,
IncomeType
=
sheettype
,
OriginalType
=
sheet
.
SheetType
??
0
,
Amount
=
amount
,
GroupBasis
=
groupbasis
,
Items
=
items
};
deptDetails
.
Detail
.
Add
(
item
);
}
}
...
...
@@ -792,9 +784,10 @@ public DeptDataDetails<DetailModuleExtend> DeptDetail(int accountId)
//return deptDetails;
}
private
(
int
sheettype
,
decimal
amount
)
ClinicDepartmentDetail
(
List
<
per_sheet
>
persheet
,
res_account
account
,
List
<
im_data
>
basicData
,
per_sheet
sheet
,
UnitType
type
,
string
sheetName
,
int
sheettype
=
1
,
decimal
amount
=
0
m
)
private
(
int
sheettype
,
decimal
amount
)
ClinicDepartmentDetail
(
List
<
per_sheet
>
persheet
,
res_account
account
,
List
<
im_data
>
basicData
,
per_sheet
sheet
,
UnitType
type
,
string
sheetName
)
{
//var sheettype = 1; var amount = 0m;
var
sheettype
=
1
;
var
amount
=
0
m
;
if
(
sheet
.
SheetType
==
(
int
)
SheetType
.
Income
)
{
...
...
@@ -829,26 +822,37 @@ public DeptDataDetails<DetailModuleExtend> DeptDetail(int accountId)
return
(
sheettype
,
amount
);
}
private
(
int
sheettype
,
decimal
amount
)
CommonDepartmentDetail
(
List
<
im_data
>
basicData
,
per_sheet
sheet
,
UnitType
type
,
Dictionary
<
SheetType
,
decimal
?>
pairs
,
int
sheettype
=
1
,
decimal
amount
=
0
)
private
(
int
sheettype
,
decimal
amount
)
CommonDepartmentDetail
(
List
<
im_data
>
basicData
,
per_sheet
sheet
,
UnitType
type
)
{
int
sheettype
=
1
;
decimal
amount
=
0
;
//var sheettype = 1; var amount = 0m;
if
(
pairs
.
ContainsKey
((
SheetType
)
sheet
.
SheetType
))
{
sheettype
=
5
;
amount
=
pairs
[(
SheetType
)
sheet
.
SheetType
]
??
0
;
}
else
if
(
sheet
.
SheetType
==
(
int
)
SheetType
.
AccountScoreAverage
)
//if (pairs.ContainsKey((SheetType)sheet.SheetType))
//{
// sheettype = 5;
// amount = pairs[(SheetType)sheet.SheetType] ?? 0;
//}
//else if (sheet.SheetType == (int)SheetType.AccountScoreAverage)
//{
// sheettype = 8;
// amount = Math.Round(basicData.Where(t => t.SheetID == sheet.ID && t.UnitType == (int)type && t.IsTotal == 1)?.FirstOrDefault()?.CellValue ?? 0, 4);
//}
//else if (sheet.SheetType == (int)SheetType.AccountAdjustLaterOtherFee)
//{
// sheettype = 9;
// amount = Math.Round(basicData.Where(t => t.SheetID == sheet.ID && t.UnitType == (int)type && t.IsTotal == 1)?.FirstOrDefault()?.CellValue ?? 0, 0);
//}
SheetType
[]
pairs
=
new
SheetType
[]
{
sheettype
=
8
;
amount
=
Math
.
Round
(
basicData
.
Where
(
t
=>
t
.
SheetID
==
sheet
.
ID
&&
t
.
UnitType
==
(
int
)
type
&&
t
.
IsTotal
==
1
)?.
FirstOrDefault
()?.
CellValue
??
0
,
4
);
}
else
if
(
sheet
.
SheetType
==
(
int
)
SheetType
.
AccountAdjustLaterOtherFee
)
SheetType
.
AccountDrugAssess
,
SheetType
.
AccountMaterialsAssess
,
SheetType
.
AccountScoreAverage
,
SheetType
.
AccountAdjustLaterOtherFee
};
if
(
pairs
.
Contains
((
SheetType
)
sheet
.
SheetType
))
{
sheettype
=
9
;
sheettype
=
5
;
amount
=
Math
.
Round
(
basicData
.
Where
(
t
=>
t
.
SheetID
==
sheet
.
ID
&&
t
.
UnitType
==
(
int
)
type
&&
t
.
IsTotal
==
1
)?.
FirstOrDefault
()?.
CellValue
??
0
,
0
);
}
return
(
sheettype
,
amount
);
}
...
...
@@ -963,7 +967,8 @@ private DeptDataDetails<DetailModuleExtend> MergeDetails(DeptDataDetails details
{
ItemName
=
data
.
FirstOrDefault
(
t
=>
t
.
ItemName
.
IndexOf
(
"执行"
)
>
-
1
)
is
null
?
data
.
First
().
ItemName
:
data
.
FirstOrDefault
(
t
=>
t
.
ItemName
.
IndexOf
(
"执行"
)
>
-
1
).
ItemName
?.
Replace
(
"执行"
,
"开单/执行"
),
IncomeType
=
data
.
First
().
IncomeType
,
IncomeType
=
data
.
First
()?.
IncomeType
??
0
,
OriginalType
=
data
.
First
()?.
OriginalType
??
0
,
Amount
=
data
.
Sum
(
w
=>
w
.
Amount
),
GroupBasis
=
groupbasis
,
Items
=
items
...
...
@@ -1010,6 +1015,7 @@ public DeptDataDetails DeptOfficeDetail(int accountId)
{
ItemName
=
"行政后勤核算单元绩效测算表"
,
IncomeType
=
4
,
OriginalType
=
4
,
Amount
=
account
.
PerforTotal
??
0
,
Items
=
new
List
<
DetailModule
>(),
GroupBasis
=
1
,
...
...
@@ -1035,17 +1041,11 @@ public DeptDataDetails DeptOfficeDetail(int accountId)
foreach
(
var
sheet
in
persheet
.
Where
(
t
=>
t
.
SheetType
==
stype
))
{
groupBasis
++;
Dictionary
<
SheetType
,
decimal
?>
pairs
=
new
Dictionary
<
SheetType
,
decimal
?>
{
{
SheetType
.
AccountExtra
,
account
.
Extra
},
{
SheetType
.
AccountDrugAssess
,
account
.
MedicineExtra
},
{
SheetType
.
AccountMaterialsAssess
,
account
.
MaterialsExtra
},
};
var
(
sheettype
,
amount
)
=
CommonDepartmentDetail
(
basicData
,
sheet
,
UnitType
.
行政后勤
,
pairs
);
var
(
sheettype
,
amount
)
=
CommonDepartmentDetail
(
basicData
,
sheet
,
UnitType
.
行政后勤
);
var
items
=
CommonDetailItems
(
basicData
,
headers
,
sheet
,
UnitType
.
行政后勤
);
var
sheetName
=
new
Regex
(
"[0-9]*"
).
Replace
(
sheet
.
SheetName
,
""
,
5
).
Replace
(
"."
,
""
).
Replace
(
" "
,
""
);
var
item
=
new
DetailDtos
{
ItemName
=
sheetName
,
IncomeType
=
sheettype
,
Amount
=
amount
,
GroupBasis
=
groupBasis
,
Items
=
items
};
var
item
=
new
DetailDtos
{
ItemName
=
sheetName
,
IncomeType
=
sheettype
,
OriginalType
=
sheet
.
SheetType
??
0
,
Amount
=
amount
,
GroupBasis
=
groupBasis
,
Items
=
items
};
deptDetails
.
Detail
.
Add
(
item
);
}
}
...
...
@@ -1091,6 +1091,7 @@ public DeptDataDetails SpecialDeptDetail(ag_secondallot second)
{
ItemName
=
"特殊核算单元绩效测算表"
,
IncomeType
=
4
,
OriginalType
=
4
,
Amount
=
special
.
First
().
ResultsTotalFee
??
0
,
Items
=
new
List
<
DetailModule
>(),
GroupBasis
=
1
,
...
...
@@ -1124,17 +1125,11 @@ public DeptDataDetails SpecialDeptDetail(ag_secondallot second)
foreach
(
var
sheet
in
persheet
.
Where
(
t
=>
t
.
SheetType
==
stype
))
{
groupBasis
++;
Dictionary
<
SheetType
,
decimal
?>
pairs
=
new
Dictionary
<
SheetType
,
decimal
?>
{
{
SheetType
.
AccountExtra
,
special
.
FirstOrDefault
()?.
Punishment
},
{
SheetType
.
AccountDrugAssess
,
special
.
FirstOrDefault
()?.
MedicineExtra
},
{
SheetType
.
AccountMaterialsAssess
,
special
.
FirstOrDefault
()?.
MaterialsExtra
},
};
var
(
sheettype
,
amount
)
=
CommonDepartmentDetail
(
basicData
,
sheet
,
UnitType
.
特殊核算组
,
pairs
);
var
(
sheettype
,
amount
)
=
CommonDepartmentDetail
(
basicData
,
sheet
,
UnitType
.
特殊核算组
);
var
items
=
CommonDetailItems
(
basicData
,
headers
,
sheet
,
UnitType
.
特殊核算组
);
var
sheetName
=
new
Regex
(
"[0-9]*"
).
Replace
(
sheet
.
SheetName
,
""
,
5
).
Replace
(
"."
,
""
).
Replace
(
" "
,
""
);
var
item
=
new
DetailDtos
{
ItemName
=
sheetName
,
IncomeType
=
sheettype
,
Amount
=
amount
,
GroupBasis
=
groupBasis
,
Items
=
items
};
var
item
=
new
DetailDtos
{
ItemName
=
sheetName
,
IncomeType
=
sheettype
,
OriginalType
=
sheet
.
SheetType
??
0
,
Amount
=
amount
,
GroupBasis
=
groupBasis
,
Items
=
items
};
deptDetails
.
Detail
.
Add
(
item
);
}
}
...
...
@@ -1245,6 +1240,7 @@ public DeptDataDetails GetDoctorDetail(int computeId)
{
ItemName
=
itemName
.
Replace
(
"."
,
""
).
Replace
(
" "
,
""
),
IncomeType
=
sheet
.
SheetType
==
(
int
)
SheetType
.
PersonExtra
?
5
:
8
,
OriginalType
=
sheet
.
SheetType
??
0
,
Amount
=
sheetData
.
Where
(
t
=>
t
.
IsTotal
==
1
)?.
Sum
(
t
=>
t
.
CellValue
)
??
0
,
Items
=
sheetData
.
Where
(
t
=>
t
.
IsTotal
!=
1
)?.
Select
(
t
=>
new
DetailModule
{
...
...
performance/Performance.Services/HospitalService.cs
View file @
9893add7
...
...
@@ -134,6 +134,7 @@ public HospitalResponse Update(HospitalRequest request)
hospital
.
IsOpenDrugprop
=
request
.
IsOpenDrugprop
;
hospital
.
IsShowManage
=
request
.
IsShowManage
;
hospital
.
IsOpenCMIPercent
=
request
.
IsOpenCMIPercent
;
hospital
.
IsOpenLogisticsSecondAllot
=
request
.
IsOpenLogisticsSecondAllot
;
//hospital.IsOpenIncome = request.IsOpenIncome;
if
(!
_hospitalRepository
.
Update
(
hospital
))
...
...
performance/Performance.Services/OriginalService.cs
View file @
9893add7
...
...
@@ -112,15 +112,15 @@ public bool EditSheetData(int userId, OriginalRequest request)
break
;
}
}
catch
(
NotSupportedException
ex
)
catch
(
NotSupportedException
)
{
throw
new
PerformanceException
(
"提交参数不合规范"
);
}
catch
(
InvalidCastException
ex
)
catch
(
InvalidCastException
)
{
throw
new
PerformanceException
(
"提交参数不合规范"
);
}
catch
(
ArgumentException
ex
)
catch
(
ArgumentException
)
{
throw
new
PerformanceException
(
"提交参数不合规范"
);
}
...
...
@@ -256,7 +256,7 @@ private void SetValue<TEntity>(TEntity entity, CellRequest cell)
else
if
(
type
.
IndexOf
(
"string"
)
>
-
1
)
value
=
cell
.
CellValue
.
ToString
();
}
catch
(
Exception
ex
)
catch
{
throw
new
PerformanceException
(
"提交参数不合规范"
);
}
...
...
@@ -305,7 +305,7 @@ private bool EditFeeData(int userId, OriginalRequest request, bool basic)
entity
.
UpdateUser
=
userId
;
result
=
imdataRepository
.
Update
(
entity
);
}
catch
(
Exception
ex
)
catch
{
throw
new
PerformanceException
(
"提交参数不合规范"
);
}
...
...
performance/Performance.Services/PerExcelService/ComputeEmpolyee/ComputeDirector.cs
View file @
9893add7
...
...
@@ -282,7 +282,7 @@ public class ComputeDirector : IAutoInjection
/// <param name="nurseList"></param>
/// <param name="directorList"></param>
/// <returns></returns>
public
List
<
ComputeResult
>
Compute
(
List
<
ComputeEmployee
>
empolyeeList
,
List
<
PerSheet
>
accountSheet
,
per_allot
allot
,
IEnumerable
<
EmpolyeeTotal
>
employeeExtra
)
public
List
<
ComputeResult
>
Compute
(
List
<
ComputeEmployee
>
empolyeeList
,
List
<
PerSheet
>
accountSheet
,
per_allot
allot
)
{
var
basicRuleList
=
new
[]
{
...
...
@@ -398,13 +398,13 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<PerS
Attendance
=
empolyee
.
Attendance
??
0
,
};
var
extra
=
employeeExtra
?.
Where
(
w
=>
!
string
.
IsNullOrEmpty
(
w
.
AccountingUnit
)
&&
!
string
.
IsNullOrEmpty
(
w
.
UnitType
)
&&
(!
string
.
IsNullOrEmpty
(
w
.
EmployeeName
)
||
!
string
.
IsNullOrEmpty
(
w
.
JobNumber
)))
.
FirstOrDefault
(
w
=>
w
.
AccountingUnit
==
empolyee
.
AccountingUnit
&&
w
.
UnitType
==
empolyee
.
UnitType
&&
w
.
JobNumber
==
empolyee
.
JobNumber
&&
w
.
EmployeeName
==
empolyee
.
DoctorName
)?.
TotelValue
;
//
var extra = employeeExtra?.Where(w => !string.IsNullOrEmpty(w.AccountingUnit) && !string.IsNullOrEmpty(w.UnitType)
//
&& (!string.IsNullOrEmpty(w.EmployeeName) || !string.IsNullOrEmpty(w.JobNumber)))
//
.FirstOrDefault(w => w.AccountingUnit == empolyee.AccountingUnit && w.UnitType == empolyee.UnitType
//
&& w.JobNumber == empolyee.JobNumber && w.EmployeeName == empolyee.DoctorName)?.TotelValue;
compute
.
Avg
=
avg
*
(
empolyee
.
Basics
??
0
)
*
compute
.
Attendance
;
compute
.
Punishment
=
extra
??
0
;
compute
.
Punishment
=
0
;
// 考核前管理绩效
compute
.
ShouldGiveFee
=
Math
.
Round
((
compute
.
Efficiency
+
compute
.
Scale
)
*
compute
.
Grant
+
compute
.
OtherManagePerfor
??
0
);
// 考核后管理绩效
...
...
@@ -441,7 +441,7 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, List<PerS
/// <param name="empolyeeList"></param>
/// <param name="baiscnormList"></param>
/// <returns></returns>
public
List
<
ComputeResult
>
Compute
(
List
<
ComputeEmployee
>
empolyeeList
,
per_allot
allot
,
List
<
res_baiscnorm
>
baiscnormList
,
IEnumerable
<
EmpolyeeTotal
>
employeeExtra
)
public
List
<
ComputeResult
>
Compute
(
List
<
ComputeEmployee
>
empolyeeList
,
per_allot
allot
,
List
<
res_baiscnorm
>
baiscnormList
)
{
////年资系数
//var workyearList = perforCofworkyearRepository.GetEntities(t => t.AllotID == allot.ID);
...
...
@@ -464,10 +464,10 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, per_allot
var
perforTypeArray
=
EnumHelper
.
GetItems
<
PerforType
>();
foreach
(
var
item
in
needCompute
)
{
// 奖罚汇总
var
extra
=
employeeExtra
?.
Where
(
w
=>
!
string
.
IsNullOrEmpty
(
w
.
AccountingUnit
)
&&
!
string
.
IsNullOrEmpty
(
w
.
UnitType
)
&&
(!
string
.
IsNullOrEmpty
(
w
.
EmployeeName
)
||
!
string
.
IsNullOrEmpty
(
w
.
JobNumber
)))
.
FirstOrDefault
(
w
=>
w
.
AccountingUnit
==
item
.
AccountingUnit
&&
w
.
UnitType
==
item
.
AccountType
&&
w
.
JobNumber
==
item
.
JobNumber
&&
w
.
EmployeeName
==
item
.
DoctorName
)
?.
TotelValue
;
//
//
奖罚汇总
//
var extra = employeeExtra?.Where(w => !string.IsNullOrEmpty(w.AccountingUnit) && !string.IsNullOrEmpty(w.UnitType) && (!string.IsNullOrEmpty(w.EmployeeName) || !string.IsNullOrEmpty(w.JobNumber)))
//
.FirstOrDefault(w => w.AccountingUnit == item.AccountingUnit && w.UnitType == item.AccountType && w.JobNumber == item.JobNumber && w.EmployeeName == item.DoctorName)
//
?.TotelValue;
var
compute
=
new
ComputeResult
{
...
...
@@ -482,7 +482,7 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, per_allot
PostCoefficient
=
item
.
PostCoefficient
??
0
,
Attendance
=
item
.
Attendance
??
0
,
ScoreAverageRate
=
item
.
ScoreAverageRate
??
1
,
Punishment
=
extra
??
0
,
Punishment
=
0
,
OtherPerfor
=
item
.
OtherPerfor
??
0
,
JobTitle
=
item
.
JobTitle
,
JobNumber
=
item
.
JobNumber
,
...
...
@@ -523,9 +523,9 @@ public List<ComputeResult> Compute(List<ComputeEmployee> empolyeeList, per_allot
{
//考核前绩效
compute
.
PerforTotal
=
Math
.
Round
(
compute
.
BaiscNormValue
*
compute
.
PostCoefficient
*
compute
.
Attendance
+
compute
.
OtherPerfor
??
0
);
//考核后绩效
没什么用也不
显示
//考核后绩效
更加开关来控制
显示
compute
.
GiveFee
=
compute
.
PerforTotal
*
compute
.
ScoreAverageRate
;
//实发绩效
没什么用也不
显示
//实发绩效
更加开关来控制
显示
compute
.
RealGiveFee
=
Math
.
Round
(
compute
.
GiveFee
*
compute
.
Adjust
??
0
);
}
computeList
.
Add
(
compute
);
...
...
performance/Performance.Services/PerExcelService/ExcelReadConfig.cs
View file @
9893add7
...
...
@@ -80,6 +80,8 @@ public class ExcelReadConfig
new
ColumnInfo
(
nameof
(
PerDataAccountBaisc
.
BasicFactor
),
"预算比例"
,
true
),
//new ColumnInfo(nameof(PerDataAccountBaisc.OtherPerfor1), "其他绩效1", true),
new
ColumnInfo
(
nameof
(
PerDataAccountBaisc
.
AssessBeforeOtherFee
),
"考核前其他绩效"
,
true
),
new
ColumnInfo
(
nameof
(
PerDataAccountBaisc
.
MedicineExtra
),
"药占比奖罚"
,
true
),
new
ColumnInfo
(
nameof
(
PerDataAccountBaisc
.
MaterialsExtra
),
"材料占比奖罚"
,
true
),
new
ColumnInfo
(
nameof
(
PerDataAccountBaisc
.
ScoringAverage
),
"考核得分率"
,
true
),
new
ColumnInfo
(
nameof
(
PerDataAccountBaisc
.
AssessLaterOtherFee
),
"考核后其他绩效"
,
true
),
new
ColumnInfo
(
nameof
(
PerDataAccountBaisc
.
AdjustFactor
),
"调节系数"
,
true
),
...
...
performance/Performance.Services/PerExcelService/NopiSevice.cs
View file @
9893add7
...
...
@@ -83,7 +83,7 @@ public static string GetValue(this ICell cell)
return
string
.
Empty
;
}
}
catch
(
Exception
ex
)
catch
(
Exception
)
{
//throw ex;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment