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
5295ed43
Commit
5295ed43
authored
Aug 10, 2023
by
ruyun.zhang@suvalue.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/管理绩效' into develop
parents
3a58a07e
dc0562f1
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
1093 additions
and
47 deletions
+1093
-47
performance/Performance.Api/Controllers/ComputeController.cs
+101
-0
performance/Performance.Api/Controllers/MenuController.cs
+78
-12
performance/Performance.Api/wwwroot/Performance.Api.xml
+66
-1
performance/Performance.Api/wwwroot/Performance.DtoModels.xml
+73
-3
performance/Performance.Api/wwwroot/Performance.EntityModels.xml
+29
-1
performance/Performance.DtoModels/AutoMapper/AutoMapperConfigs.cs
+2
-0
performance/Performance.DtoModels/Enum.cs
+54
-0
performance/Performance.DtoModels/Request/EmpDetailRequest.cs
+20
-0
performance/Performance.DtoModels/Request/MenuRequest.cs
+43
-0
performance/Performance.DtoModels/Request/UniteDeptDetailRequest.cs
+10
-4
performance/Performance.DtoModels/Response/MenuResponse.cs
+4
-1
performance/Performance.DtoModels/Response/UniteDeptDetailResponse.cs
+1
-0
performance/Performance.EntityModels/Context/PerformanceDbContext.cs
+3
-1
performance/Performance.EntityModels/Entity/cof_dept_detail_emp.cs
+39
-0
performance/Performance.Repository/Repository/PerforCofDeptDetailEmpRepository.cs
+19
-0
performance/Performance.Services/ComputeService.UniteDeptDetail.cs
+353
-1
performance/Performance.Services/ComputeService.cs
+12
-3
performance/Performance.Services/MenuService.cs
+142
-1
performance/Performance.Services/RedistributionService.cs
+1
-1
performance/Performance.Services/UserService.cs
+43
-18
No files found.
performance/Performance.Api/Controllers/ComputeController.cs
View file @
5295ed43
...
...
@@ -242,6 +242,104 @@ public IActionResult DownloadUniteDeptdetail([FromBody] UniteDeptDetailRequest r
}
#
region
新
-
管理绩效
/// <summary>
/// 管理绩效详情显示隐藏设置--加载
/// </summary>
/// <param name="allotId"></param>
/// <returns></returns>
[
Route
(
"emp/detail/setting/get"
)]
[
HttpPost
]
public
ApiResponse
GetEmpDetailSetting
([
FromQuery
]
int
allotId
)
{
var
response
=
_computeService
.
GetEmpDetailSetting
(
allotId
);
return
new
ApiResponse
(
ResponseType
.
OK
,
response
);
}
/// <summary>
/// 管理绩效详情显示隐藏设置--保存
/// </summary>
/// <param name="allotId"></param>
/// <param name="request"></param>
/// <returns></returns>
[
Route
(
"emp/detail/setting/save"
)]
[
HttpPost
]
public
ApiResponse
SaveEmpDetailSetting
([
FromQuery
]
int
allotId
,
[
FromBody
]
List
<
UniteDeptDetailItem
>
request
)
{
_computeService
.
SaveEmpDetailSetting
(
allotId
,
request
);
return
new
ApiResponse
(
ResponseType
.
OK
,
"保存成功"
);
}
/// <summary>
/// 管理绩效详情
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[
Route
(
"emp/detail"
)]
[
HttpPost
]
public
ApiResponse
EmpDetail
([
FromBody
]
EmpDetailRequest
request
)
{
#
region
提示
// 两个入口
// 一种只传参数 ComputeId
// 一种只传参数 AllotId、UnitType、AccountingUnit
/*
考核前绩效
核算人数
人均绩效
基础绩效系数(6.11 个人岗位系数)
出勤率
实际人均
效率绩效人数
效率系数
效率绩效小计
规模绩效系数
规模绩效小计
管理绩效发放系数
考核前管理绩效
考核得分率
考核后管理绩效
医院奖罚(5.2 业务中层行政中高层业务奖罚)
其他管理绩效(6.9 其他管理绩效)
调节系数
调节后其他绩效(6.10 调节后其他管理绩效)
绩效合计
*/
#
endregion
var
userid
=
_claim
.
GetUserId
();
var
response
=
_computeService
.
EmpDetail
(
request
,
userid
);
return
new
ApiResponse
(
ResponseType
.
OK
,
response
);
}
/// <summary>
/// 管理绩效详情下载
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[
Route
(
"download/emp/detail"
)]
[
HttpPost
]
public
IActionResult
DownloadEmpDetail
([
FromBody
]
EmpDetailRequest
request
)
{
var
userid
=
_claim
.
GetUserId
();
var
response
=
_computeService
.
EmpDetail
(
request
,
userid
);
var
filepath
=
_computeService
.
ExcelDownload
(
response
,
"管理绩效详情"
,
request
.
AllotId
);
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
20230531
即将弃用,由新接口替代
/// <summary>
/// 科室绩效详情
...
...
@@ -432,6 +530,7 @@ public ApiResponse GetBaiscnorm([FromBody] ComputerRequest request)
return
new
ApiResponse
(
ResponseType
.
OK
,
"ok"
,
list
);
}
#
region
20230727
即将弃用,由新接口替代
/// <summary>
/// 医生绩效详情
/// </summary>
...
...
@@ -444,6 +543,8 @@ public ApiResponse DoctorDetail(int computeId)
var
result
=
_computeService
.
GetDoctorDetail
(
computeId
);
return
new
ApiResponse
(
ResponseType
.
OK
,
result
);
}
#
endregion
#
region
人均绩效修改
...
...
performance/Performance.Api/Controllers/MenuController.cs
View file @
5295ed43
using
FluentValidation.AspNetCore
;
using
Microsoft.AspNetCore.Mvc
;
using
Microsoft.Extensions.Caching.Memory
;
using
Microsoft.Extensions.Options
;
using
Newtonsoft.Json.Linq
;
using
Microsoft.AspNetCore.Mvc
;
using
Performance.DtoModels
;
using
Performance.DtoModels.
AppSettings
;
using
Performance.
Infrastructure
;
using
Performance.DtoModels.
Request
;
using
Performance.
EntityModels
;
using
Performance.Services
;
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Threading.Tasks
;
namespace
Performance.Api.Controllers
{
[
Route
(
"api
/[controller]
"
)]
[
Route
(
"api"
)]
public
class
MenuController
:
Controller
{
private
MenuService
_menuService
;
...
...
@@ -26,15 +20,87 @@ public MenuController(MenuService menuService, ClaimService claimService)
}
/// <summary>
///
设置用户管辖医院
///
用户登录后菜单列表
/// </summary>
/// <returns></returns>
[
Route
(
"menulist"
)]
[
Route
(
"menu
/menu
list"
)]
[
HttpPost
]
public
ApiResponse
<
List
<
MenuResponse
>>
MenuList
()
{
var
menuList
=
_menuService
.
GetMenuList
(
_claim
.
GetUserId
());
return
new
ApiResponse
<
List
<
MenuResponse
>>(
ResponseType
.
OK
,
menuList
);
}
#
region
菜单管理
/// <summary>
/// 菜单管理列表(树状结构)
/// </summary>
/// <returns></returns>
[
Route
(
"system/menu"
)]
[
HttpPost
]
public
ApiResponse
<
List
<
MenuResponse
>>
GetSystemMenu
()
{
var
getSystemMenu
=
_menuService
.
GetSystemMenu
();
return
new
ApiResponse
<
List
<
MenuResponse
>>(
ResponseType
.
OK
,
getSystemMenu
);
}
/// <summary>
/// 新增/新增子级
/// </summary>
/// <returns></returns>
[
Route
(
"system/menu/add"
)]
[
HttpPost
]
public
ApiResponse
AddSystemMenu
([
FromBody
]
MenuRequest
menuRequest
)
{
return
_menuService
.
AddSystemMenu
(
menuRequest
);
}
/// <summary>
/// 修改
/// </summary>
/// <returns></returns>
[
Route
(
"system/menu/update"
)]
[
HttpPost
]
public
ApiResponse
UpdateSystemMenu
([
FromBody
]
MenuRequest
menuRequest
)
{
return
_menuService
.
UpdateSystemMenu
(
menuRequest
);
}
/// <summary>
/// 删除
/// </summary>
/// <returns></returns>
[
Route
(
"system/menu/delete"
)]
[
HttpPost
]
public
ApiResponse
DeleteSystemMenu
(
int
menuID
)
{
return
_menuService
.
DeleteSystemMenu
(
menuID
);
}
/// <summary>
/// 当前菜单下的角色
/// </summary>
/// <returns></returns>
[
Route
(
"system/menu/getrole"
)]
[
HttpPost
]
public
ApiResponse
<
List
<
sys_role_menu
>>
GetRoleSystemMenu
(
int
menuID
)
{
return
_menuService
.
GetRoleSystemMenu
(
menuID
);
}
/// <summary>
/// 设置角色
/// </summary>
/// <returns></returns>
[
Route
(
"system/menu/setrole"
)]
[
HttpPost
]
public
ApiResponse
SetRoleSystemMenu
([
FromBody
]
RoleRequest
roleRequest
)
{
return
_menuService
.
SetRoleSystemMenu
(
roleRequest
);
}
#
endregion
}
}
performance/Performance.Api/wwwroot/Performance.Api.xml
View file @
5295ed43
...
...
@@ -1074,6 +1074,35 @@
<param
name=
"request"
></param>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.ComputeController.GetEmpDetailSetting(System.Int32)"
>
<summary>
管理绩效详情显示隐藏设置--加载
</summary>
<param
name=
"allotId"
></param>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.ComputeController.SaveEmpDetailSetting(System.Int32,System.Collections.Generic.List{Performance.DtoModels.UniteDeptDetailItem})"
>
<summary>
管理绩效详情显示隐藏设置--保存
</summary>
<param
name=
"allotId"
></param>
<param
name=
"request"
></param>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.ComputeController.EmpDetail(Performance.DtoModels.EmpDetailRequest)"
>
<summary>
管理绩效详情
</summary>
<param
name=
"request"
></param>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.ComputeController.DownloadEmpDetail(Performance.DtoModels.EmpDetailRequest)"
>
<summary>
管理绩效详情下载
</summary>
<param
name=
"request"
></param>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.ComputeController.DeptDetail(Performance.DtoModels.DeptDetailRequest)"
>
<summary>
科室绩效详情
...
...
@@ -2202,7 +2231,43 @@
</member>
<member
name=
"M:Performance.Api.Controllers.MenuController.MenuList"
>
<summary>
设置用户管辖医院
用户登录后菜单列表
</summary>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.MenuController.GetSystemMenu"
>
<summary>
菜单管理列表(树状结构)
</summary>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.MenuController.AddSystemMenu(Performance.DtoModels.Request.MenuRequest)"
>
<summary>
新增/新增子级
</summary>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.MenuController.UpdateSystemMenu(Performance.DtoModels.Request.MenuRequest)"
>
<summary>
修改
</summary>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.MenuController.DeleteSystemMenu(System.Int32)"
>
<summary>
删除
</summary>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.MenuController.GetRoleSystemMenu(System.Int32)"
>
<summary>
当前菜单下的角色
</summary>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.MenuController.SetRoleSystemMenu(Performance.DtoModels.Request.RoleRequest)"
>
<summary>
设置角色
</summary>
<returns></returns>
</member>
...
...
performance/Performance.Api/wwwroot/Performance.DtoModels.xml
View file @
5295ed43
...
...
@@ -2304,6 +2304,46 @@
总人数
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Request.MenuRequest.ParentID"
>
<summary>
父级菜单ID
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Request.MenuRequest.MenuName"
>
<summary>
菜单名称
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Request.MenuRequest.MenuUrl"
>
<summary>
菜单Url
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Request.MenuRequest.States"
>
<summary>
菜单状态 1 启用 2禁用
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Request.MenuRequest.Sort"
>
<summary>
排序
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Request.RoleRequest.MenuID"
>
<summary>
菜单id
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Request.RoleRequest.RoleID"
>
<summary>
角色
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Request.RoleRequest.TogetherAdd"
>
<summary>
为父级添加相同角色
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Request.SmsCodeRequest.Type"
>
<summary>
短信验证类型 1 手机号登录 2 其他
...
...
@@ -2439,6 +2479,21 @@
费用类别
</summary>
</member>
<member
name=
"T:Performance.DtoModels.UniteDeptDetailRequest"
>
<summary>
查看科室绩效详情
</summary>
</member>
<member
name=
"P:Performance.DtoModels.UniteDeptDetailRequest.AllotId"
>
<summary>
绩效id
</summary>
</member>
<member
name=
"P:Performance.DtoModels.UniteDeptDetailRequest.UnitType"
>
<summary>
核算单元类型
</summary>
</member>
<member
name=
"P:Performance.DtoModels.EmployeeRequest.ID"
>
<summary>
...
...
@@ -2825,21 +2880,31 @@
提交类型 1 模板提交 2 其他提交
</summary>
</member>
<member
name=
"T:Performance.DtoModels.
UniteDept
DetailRequest"
>
<member
name=
"T:Performance.DtoModels.
Emp
DetailRequest"
>
<summary>
查看科室绩效详情
</summary>
</member>
<member
name=
"P:Performance.DtoModels.
UniteDept
DetailRequest.AllotId"
>
<member
name=
"P:Performance.DtoModels.
Emp
DetailRequest.AllotId"
>
<summary>
绩效id
</summary>
</member>
<member
name=
"P:Performance.DtoModels.
UniteDept
DetailRequest.UnitType"
>
<member
name=
"P:Performance.DtoModels.
Emp
DetailRequest.UnitType"
>
<summary>
核算单元类型
</summary>
</member>
<member
name=
"P:Performance.DtoModels.EmpDetailRequest.AccountingUnit"
>
<summary>
核算单元
</summary>
</member>
<member
name=
"P:Performance.DtoModels.EmpDetailRequest.ComputeId"
>
<summary>
表ID
</summary>
</member>
<member
name=
"P:Performance.DtoModels.UserListRequest.Role"
>
<summary>
角色
...
...
@@ -4801,6 +4866,11 @@
1 删除 2 驳回 3 修改 4 新增
</summary>
</member>
<member
name=
"P:Performance.DtoModels.MenuResponse.ParentID"
>
<summary>
父级菜单ID
</summary>
</member>
<member
name=
"P:Performance.DtoModels.MenuResponse.MenuName"
>
<summary>
菜单名称
...
...
performance/Performance.Api/wwwroot/Performance.EntityModels.xml
View file @
5295ed43
...
...
@@ -86,7 +86,10 @@
<summary>
</summary>
</member>
<member
name=
"P:Performance.EntityModels.PerformanceDbContext.cof_dept_detail"
>
<summary>
</summary>
<summary>
科室详情配置
</summary>
</member>
<member
name=
"P:Performance.EntityModels.PerformanceDbContext.cof_emp_detail"
>
<summary>
管理绩效配置
</summary>
</member>
<member
name=
"P:Performance.EntityModels.PerformanceDbContext.cof_depttype"
>
<summary>
科室类型
</summary>
...
...
@@ -1878,6 +1881,31 @@
</summary>
</member>
<member
name=
"T:Performance.EntityModels.cof_emp_detail"
>
<summary>
</summary>
</member>
<member
name=
"P:Performance.EntityModels.cof_emp_detail.Id"
>
<summary>
</summary>
</member>
<member
name=
"P:Performance.EntityModels.cof_emp_detail.AllotId"
>
<summary>
</summary>
</member>
<member
name=
"P:Performance.EntityModels.cof_emp_detail.Settings"
>
<summary>
</summary>
</member>
<member
name=
"P:Performance.EntityModels.cof_emp_detail.CreateTime"
>
<summary>
</summary>
</member>
<member
name=
"T:Performance.EntityModels.cof_director"
>
<summary>
规模绩效、效率绩效计算系数配置
...
...
performance/Performance.DtoModels/AutoMapper/AutoMapperConfigs.cs
View file @
5295ed43
...
...
@@ -50,6 +50,8 @@ public AutoMapperConfigs()
.
ForMember
(
dest
=>
dest
.
ID
,
opt
=>
opt
.
MapFrom
(
src
=>
src
.
MenuID
));
CreateMap
<
sys_menu
,
MenuResponse
>()
.
ForMember
(
dest
=>
dest
.
MenuID
,
opt
=>
opt
.
MapFrom
(
src
=>
src
.
ID
));
CreateMap
<
MenuRequest
,
sys_menu
>();
CreateMap
<
sys_menu
,
MenuRequest
>();
// 绩效 请求
CreateMap
<
AllotRequest
,
per_allot
>();
...
...
performance/Performance.DtoModels/Enum.cs
View file @
5295ed43
...
...
@@ -233,4 +233,58 @@ public enum Format
四位小数百分比
,
}
}
public
class
ManagementDept
{
public
enum
TitleManage
{
//人员工号 = 2701,
//人员分类 = 2801,
//核算单元 = 2901,
考核前其他绩效
=
3001
,
考核前绩效
=
3101
,
核算人数
=
3200
,
人均绩效
=
3300
,
基础绩效系数
=
3400
,
出勤率
=
3501
,
实际人均
=
3600
,
效率绩效人数
=
3700
,
效率系数
=
3800
,
效率绩效小计
=
3900
,
规模绩效系数
=
4000
,
规模绩效小计
=
4100
,
管理绩效发放系数
=
4200
,
考核前管理绩效
=
4300
,
考核得分率
=
4401
,
考核后管理绩效
=
4500
,
医院奖罚
=
4601
,
夜班费
=
4611
,
考核后绩效
=
4621
,
其他管理绩效
=
4700
,
调节系数
=
4801
,
调节后其他绩效
=
4901
,
绩效合计
=
5001
,
}
public
enum
DisplayRule
{
始终隐藏
,
始终显示
,
下发显示
,
总额下发后显示
,
}
public
enum
Format
{
无
,
整数
,
一位小数
,
两位小数
,
三位小数
,
四位小数
,
整数百分比
,
一位小数百分比
,
两位小数百分比
,
三位小数百分比
,
四位小数百分比
,
}
}
}
performance/Performance.DtoModels/Request/EmpDetailRequest.cs
0 → 100644
View file @
5295ed43
using
FluentValidation
;
namespace
Performance.DtoModels
{
/// <summary>
/// 查看科室绩效详情
/// </summary>
public
class
UniteDeptDetailRequest
{
/// <summary>
/// 绩效id
/// </summary>
public
int
AllotId
{
get
;
set
;
}
/// <summary>
/// 核算单元类型
/// </summary>
public
string
UnitType
{
get
;
set
;
}
public
string
AccountingUnit
{
get
;
set
;
}
}
}
performance/Performance.DtoModels/Request/MenuRequest.cs
0 → 100644
View file @
5295ed43
namespace
Performance.DtoModels.Request
{
public
class
MenuRequest
{
public
int
ID
{
get
;
set
;
}
/// <summary>
/// 父级菜单ID
/// </summary>
public
int
ParentID
{
get
;
set
;
}
/// <summary>
/// 菜单名称
/// </summary>
public
string
MenuName
{
get
;
set
;
}
/// <summary>
/// 菜单Url
/// </summary>
public
string
?
MenuUrl
{
get
;
set
;
}
/// <summary>
/// 菜单状态 1 启用 2禁用
/// </summary>
public
int
States
{
get
;
set
;
}
/// <summary>
/// 排序
/// </summary>
public
int
?
Sort
{
get
;
set
;
}
}
public
class
RoleRequest
{
/// <summary>
/// 菜单id
/// </summary>
public
int
MenuID
{
get
;
set
;
}
/// <summary>
/// 角色
/// </summary>
public
int
[]
RoleID
{
get
;
set
;
}
/// <summary>
/// 为父级添加相同角色
/// </summary>
public
bool
TogetherAdd
{
get
;
set
;
}
}
}
performance/Performance.DtoModels/Request/UniteDeptDetailRequest.cs
View file @
5295ed43
using
FluentValidation
;
namespace
Performance.DtoModels
namespace
Performance.DtoModels
{
/// <summary>
/// 查看科室绩效详情
/// </summary>
public
class
UniteDept
DetailRequest
public
class
Emp
DetailRequest
{
/// <summary>
/// 绩效id
...
...
@@ -15,6 +13,14 @@ public class UniteDeptDetailRequest
/// 核算单元类型
/// </summary>
public
string
UnitType
{
get
;
set
;
}
/// <summary>
/// 核算单元
/// </summary>
public
string
AccountingUnit
{
get
;
set
;
}
/// <summary>
/// 表ID
/// </summary>
public
int
?
ComputeId
{
get
;
set
;
}
}
}
performance/Performance.DtoModels/Response/MenuResponse.cs
View file @
5295ed43
...
...
@@ -7,7 +7,10 @@ namespace Performance.DtoModels
public
class
MenuResponse
{
public
int
MenuID
{
get
;
set
;
}
/// <summary>
/// 父级菜单ID
/// </summary>
public
int
ParentID
{
get
;
set
;
}
/// <summary>
/// 菜单名称
/// </summary>
...
...
performance/Performance.DtoModels/Response/UniteDeptDetailResponse.cs
View file @
5295ed43
...
...
@@ -10,6 +10,7 @@ public class UniteDeptDetailResponse
/// <summary> 0 不显示 1 显示 </summary>
public
int
ShowFormula
{
get
;
set
;
}
public
List
<
DeptDetailItem
>
DetailItems
{
get
;
set
;
}
}
public
class
DeptDetailItem
{
...
...
performance/Performance.EntityModels/Context/PerformanceDbContext.cs
View file @
5295ed43
...
...
@@ -69,8 +69,10 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options)
public
virtual
DbSet
<
cof_check
>
cof_check
{
get
;
set
;
}
/// <summary> </summary>
public
virtual
DbSet
<
cof_cmi
>
cof_cmi
{
get
;
set
;
}
/// <summary>
</summary>
/// <summary>
科室详情配置
</summary>
public
virtual
DbSet
<
cof_dept_detail
>
cof_dept_detail
{
get
;
set
;
}
/// <summary>管理绩效配置</summary>
public
virtual
DbSet
<
cof_emp_detail
>
cof_emp_detail
{
get
;
set
;
}
/// <summary> 科室类型 </summary>
public
virtual
DbSet
<
cof_depttype
>
cof_depttype
{
get
;
set
;
}
/// <summary> 规模绩效、效率绩效计算系数配置 </summary>
...
...
performance/Performance.EntityModels/Entity/cof_dept_detail_emp.cs
0 → 100644
View file @
5295ed43
//-----------------------------------------------------------------------
// <copyright file=" cof_emp_detail.cs">
// * FileName: cof_emp_detail.cs
// </copyright>
//-----------------------------------------------------------------------
using
System
;
using
System.ComponentModel.DataAnnotations
;
using
System.ComponentModel.DataAnnotations.Schema
;
namespace
Performance.EntityModels
{
/// <summary>
///
/// </summary>
[
Table
(
"cof_emp_detail"
)]
public
class
cof_emp_detail
{
/// <summary>
///
/// </summary>
[
Key
]
public
int
Id
{
get
;
set
;
}
/// <summary>
///
/// </summary>
public
int
AllotId
{
get
;
set
;
}
/// <summary>
///
/// </summary>
public
string
Settings
{
get
;
set
;
}
/// <summary>
///
/// </summary>
public
DateTime
CreateTime
{
get
;
set
;
}
}
}
performance/Performance.Repository/Repository/PerforCofDeptDetailEmpRepository.cs
0 → 100644
View file @
5295ed43
//-----------------------------------------------------------------------
// <copyright file="cof_emp_detail.cs">
// * FileName: cof_emp_detail.cs
// </copyright>
//-----------------------------------------------------------------------
using
Performance.EntityModels
;
namespace
Performance.Repository
{
/// <summary>
/// cof_emp_detail
/// </summary>
public
partial
class
PerforCofEmpDetailRepository
:
PerforRepository
<
cof_emp_detail
>
{
public
PerforCofEmpDetailRepository
(
PerformanceDbContext
context
)
:
base
(
context
)
{
}
}
}
performance/Performance.Services/ComputeService.UniteDeptDetail.cs
View file @
5295ed43
...
...
@@ -417,7 +417,15 @@ void RecursionUseSettings(List<DeptDetailItem> detailItems, List<UniteDeptDetail
var
cfg
=
userDetailItems
.
FirstOrDefault
(
w
=>
w
.
Title
==
detail
.
Title
);
// 部分左右侧显示全部格式化
detail
.
TotalFormat
=
ValueFormating
(
detail
.
Total
,
cfg
?.
Format
);
if
(
detail
?.
Total
==
0
)
{
detail
.
TotalFormat
=
detail
.
TotalFormat
==
null
?
"0"
:
detail
.
TotalFormat
;
}
else
{
detail
.
TotalFormat
=
ValueFormating
(
detail
.
Total
,
cfg
?.
Format
);
}
// 只对右侧设置排序
detail
.
Sort
=
cfg
==
null
?
detail
.
Sort
:
cfg
.
Sort
;
// 备注
...
...
@@ -934,5 +942,349 @@ int GetMaxColumnIndex(int maxColIndex, List<DeptDetailItem> detailItems)
#
endregion
#
region
管理绩效详情显示隐藏设置
--
加载和保存
public
List
<
UniteDeptDetailItem
>
GetEmpDetailSetting
(
int
allotId
)
{
var
allot
=
perforPerallotRepository
.
GetEntity
(
t
=>
t
.
ID
==
allotId
);
if
(
allot
==
null
)
throw
new
PerformanceException
(
"绩效月信息错误"
);
var
response
=
new
List
<
UniteDeptDetailItem
>()
{
};
#
region
行政工勤
//response.Add(new UniteDeptDetailItem { Title = ManagementDept.TitleManage.人员工号.ToString() });
//response.Add(new UniteDeptDetailItem { Title = ManagementDept.TitleManage.人员分类.ToString() });
//response.Add(new UniteDeptDetailItem { Title = ManagementDept.TitleManage.核算单元.ToString() });
response
.
Add
(
new
UniteDeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
考核前其他绩效
.
ToString
()
});
response
.
Add
(
new
UniteDeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
夜班费
.
ToString
()
});
response
.
Add
(
new
UniteDeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
考核后绩效
.
ToString
()
});
#
endregion
#
region
管理绩效
response
.
Add
(
new
UniteDeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
核算人数
.
ToString
()
});
response
.
Add
(
new
UniteDeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
人均绩效
.
ToString
()
});
response
.
Add
(
new
UniteDeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
基础绩效系数
.
ToString
()
});
response
.
Add
(
new
UniteDeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
实际人均
.
ToString
()
});
response
.
Add
(
new
UniteDeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
效率绩效人数
.
ToString
()
});
response
.
Add
(
new
UniteDeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
效率系数
.
ToString
(),
Format
=
UniteDept
.
Format
.
两位小数
.
ToString
()
});
response
.
Add
(
new
UniteDeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
效率绩效小计
.
ToString
()
});
response
.
Add
(
new
UniteDeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
规模绩效系数
.
ToString
(),
Format
=
UniteDept
.
Format
.
两位小数
.
ToString
()
});
response
.
Add
(
new
UniteDeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
规模绩效小计
.
ToString
()
});
response
.
Add
(
new
UniteDeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
管理绩效发放系数
.
ToString
()
});
response
.
Add
(
new
UniteDeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
考核前管理绩效
.
ToString
()
});
response
.
Add
(
new
UniteDeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
考核后管理绩效
.
ToString
()
});
response
.
Add
(
new
UniteDeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
其他管理绩效
.
ToString
()
});
#
endregion
#
region
共有
response
.
Add
(
new
UniteDeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
考核前绩效
.
ToString
()
});
response
.
Add
(
new
UniteDeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
出勤率
.
ToString
(),
Format
=
UniteDept
.
Format
.
整数百分比
.
ToString
()
});
response
.
Add
(
new
UniteDeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
考核得分率
.
ToString
(),
Format
=
UniteDept
.
Format
.
整数百分比
.
ToString
()
});
response
.
Add
(
new
UniteDeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
医院奖罚
.
ToString
()
});
response
.
Add
(
new
UniteDeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
调节系数
.
ToString
(),
Format
=
UniteDept
.
Format
.
整数百分比
.
ToString
()
});
response
.
Add
(
new
UniteDeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
调节后其他绩效
.
ToString
()
});
response
.
Add
(
new
UniteDeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
绩效合计
.
ToString
()
});
#
endregion
//初始化配置
InitRecursion
(
response
,
null
);
#
region
排序
var
enumItems
=
EnumHelper
.
GetItems
<
ManagementDept
.
TitleManage
>();
foreach
(
var
detail
in
response
)
{
var
cfg
=
enumItems
.
FirstOrDefault
(
w
=>
w
.
Name
==
detail
.
Title
);
detail
.
Sort
=
cfg
==
null
?
detail
.
Sort
:
cfg
.
Value
;
}
#
endregion
var
entity
=
_perforCofEmpDetailRepository
.
GetEntity
(
w
=>
w
.
AllotId
==
allotId
);
var
cofDeptDetail
=
string
.
IsNullOrEmpty
(
entity
?.
Settings
)
?
new
List
<
UniteDeptDetailItem
>()
:
JsonHelper
.
Deserialize
<
List
<
UniteDeptDetailItem
>>(
entity
.
Settings
);
GetRecursionUseSettings
(
response
,
cofDeptDetail
);
response
=
response
.
OrderBy
(
w
=>
w
.
Sort
).
ToList
();
return
response
;
}
public
void
SaveEmpDetailSetting
(
int
allotId
,
List
<
UniteDeptDetailItem
>
request
)
{
var
entity
=
_perforCofEmpDetailRepository
.
GetEntity
(
w
=>
w
.
AllotId
==
allotId
);
if
(
entity
==
null
)
{
entity
=
new
cof_emp_detail
{
AllotId
=
allotId
,
CreateTime
=
DateTime
.
Now
,
Settings
=
JsonHelper
.
Serialize
(
request
)
};
_perforCofEmpDetailRepository
.
Add
(
entity
);
}
else
{
entity
.
Settings
=
JsonHelper
.
Serialize
(
request
);
_perforCofEmpDetailRepository
.
Update
(
entity
);
}
}
public
List
<
UniteDeptDetailResponse
>
EmpDetail
(
EmpDetailRequest
request
,
int
userid
)
{
//当角色对应时过滤
var
userInfo
=
_userRepository
.
GetUser
(
userid
);
if
(
userInfo
?.
User
==
null
)
throw
new
NotImplementedException
(
"当前用户不存在"
);
if
(
userInfo
.
URole
==
null
)
throw
new
NotImplementedException
(
"当前用户暂未分配角色"
);
if
(!
userInfo
.
Hospitals
.
NotNullOrEmpty
())
throw
new
NotImplementedException
(
"当前用户暂未分配医院"
);
var
responses
=
new
List
<
UniteDeptDetailResponse
>();
var
resComputes
=
new
List
<
res_compute
>();
if
(
request
.
ComputeId
>
0
)
{
var
temp
=
_perforRescomputeRepository
.
GetEntity
(
t
=>
t
.
ID
==
request
.
ComputeId
);
if
(
temp
==
null
)
return
new
List
<
UniteDeptDetailResponse
>();
resComputes
.
Add
(
temp
);
}
else
{
// 查询当前角色下科室的绩效
UnitTypeUtil
.
Maps
.
TryGetValue
(
userInfo
?.
URole
.
Type
??
0
,
out
string
[]
unitTypes
);
if
(
unitTypes
==
null
||
!
unitTypes
.
Any
())
return
new
List
<
UniteDeptDetailResponse
>();
var
accountingUnit
=
userInfo
.
User
.
Department
;
var
hospitalId
=
userInfo
.
HospitalIds
.
First
();
if
(
userInfo
.
IsSecondAdmin
)
{
var
secondList
=
_agsecondallotRepository
.
Get
(
request
.
AllotId
,
unitTypes
,
userInfo
.
User
.
Department
);
accountingUnit
=
secondList
.
FirstOrDefault
()?.
Department
;
unitTypes
=
new
string
[]
{
secondList
.
FirstOrDefault
()?.
UnitType
};
}
Dictionary
<
int
,
List
<
string
>>
dict
=
new
Dictionary
<
int
,
List
<
string
>>
{
{
(
int
)
Role
.
科主任
,
new
List
<
string
>{
AccountUnitType
.
科主任
.
ToString
()}
},
{
(
int
)
Role
.
护士长
,
new
List
<
string
>{
AccountUnitType
.
护士长
.
ToString
()
}
},
{
(
int
)
Role
.
行政科室
,
new
List
<
string
>
{
AccountUnitType
.
行政中层
.
ToString
()
}
},
{
(
int
)
Role
.
特殊科室
,
new
List
<
string
>
{
AccountUnitType
.
科主任
.
ToString
()
,
AccountUnitType
.
护士长
.
ToString
()
}
},
};
int
roleType
=
userInfo
?.
URole
.
Type
??
0
;
var
accountTypes
=
userInfo
!=
null
&&
dict
.
ContainsKey
(
roleType
)
?
dict
[
roleType
]
:
new
List
<
string
>();
var
temp
=
_rescomputeRepository
.
GetEntities
(
t
=>
t
.
AllotID
==
request
.
AllotId
&&
t
.
AccountingUnit
==
accountingUnit
&&
(
unitTypes
.
Contains
(
t
.
UnitType
)
||
accountTypes
.
Contains
(
t
.
AccountType
)));
if
(
temp
==
null
)
return
new
List
<
UniteDeptDetailResponse
>();
resComputes
.
AddRange
(
temp
);
}
foreach
(
var
resCompute
in
resComputes
)
{
var
allot
=
perforPerallotRepository
.
GetEntity
(
t
=>
t
.
ID
==
resCompute
.
AllotID
);
if
(
allot
==
null
)
throw
new
PerformanceException
(
"绩效月信息错误"
);
if
(!
Enum
.
TryParse
(
resCompute
.
UnitType
==
null
?
resCompute
.
AccountType
:
resCompute
.
UnitType
,
ignoreCase
:
true
,
out
UnitType
unitType
))
throw
new
PerformanceException
(
"核算组别错误"
);
var
ignore
=
_configuration
.
GetSection
(
"UniteDeptDetailIgnore"
).
Get
<
string
[
]>
()
??
Array
.
Empty
<
string
>();
var
persheet
=
_perforPerSheetRepository
.
GetEntities
(
t
=>
t
.
AllotID
==
resCompute
.
AllotID
)
??
new
List
<
per_sheet
>();
var
headers
=
_perforImheaderRepository
.
GetEntities
(
t
=>
t
.
AllotID
==
resCompute
.
AllotID
)
??
new
List
<
im_header
>();
var
basicData
=
_perforImDataRepository
.
GetEntities
(
t
=>
t
.
AllotID
==
resCompute
.
AllotID
&&
t
.
AccountingUnit
==
resCompute
.
AccountingUnit
)
??
new
List
<
im_data
>();
var
employee
=
_perforImemployeeclinicRepository
.
GetEntity
(
t
=>
t
.
AllotID
==
resCompute
.
AllotID
&&
t
.
AccountingUnit
==
resCompute
.
AccountingUnit
&&
t
.
UnitType
==
resCompute
.
UnitType
&&
t
.
PersonnelNumber
==
resCompute
.
JobNumber
);
var
response
=
new
UniteDeptDetailResponse
{
// Title = $"相关信息: {resCompute.JobNumber} {resCompute.EmployeeName} {resCompute.AccountType} {resCompute.AccountingUnit}",
Title
=
$"
{
resCompute
.
EmployeeName
}
(
{
resCompute
.
JobNumber
}
)
{
resCompute
.
AccountType
}
{
resCompute
.
AccountingUnit
}
"
,
UnitType
=
resCompute
?.
UnitType
,
AccountingUnit
=
resCompute
?.
AccountingUnit
,
DetailItems
=
new
List
<
DeptDetailItem
>()
};
#
region
行政工勤
//response.DetailItems.Add(new DeptDetailItem { Title = ManagementDept.TitleManage.人员工号.ToString(), TotalFormat = resCompute.JobNumber });
//response.DetailItems.Add(new DeptDetailItem { Title = ManagementDept.TitleManage.人员分类.ToString(), TotalFormat = resCompute.AccountType });
//response.DetailItems.Add(new DeptDetailItem { Title = ManagementDept.TitleManage.核算单元.ToString(), TotalFormat = resCompute.AccountingUnit });
response
.
DetailItems
.
Add
(
new
DeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
考核前其他绩效
.
ToString
(),
Total
=
resCompute
.
AssessBeforeOtherFee
??
0
});
response
.
DetailItems
.
Add
(
new
DeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
夜班费
.
ToString
(),
Total
=
resCompute
.
NightWorkPerfor
??
0
});
response
.
DetailItems
.
Add
(
new
DeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
考核后绩效
.
ToString
(),
Total
=
resCompute
.
GiveFee
??
0
});
#
endregion
response
.
DetailItems
.
Add
(
new
DeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
考核前绩效
.
ToString
(),
Total
=
resCompute
.
PerforTotal
??
0
});
response
.
DetailItems
.
Add
(
new
DeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
核算人数
.
ToString
(),
Total
=
resCompute
.
Number
??
0
});
response
.
DetailItems
.
Add
(
new
DeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
人均绩效
.
ToString
(),
Total
=
(
resCompute
.
Number
??
0
)
==
0
?
0
:
resCompute
.
PerforTotal
/
resCompute
.
Number
??
0
});
response
.
DetailItems
.
Add
(
new
DeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
出勤率
.
ToString
(),
Total
=
resCompute
.
Attendance
??
1
});
response
.
DetailItems
.
Add
(
new
DeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
实际人均
.
ToString
(),
Total
=
resCompute
.
Avg
??
0
});
response
.
DetailItems
.
Add
(
new
DeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
效率绩效人数
.
ToString
(),
Total
=
resCompute
.
PermanentStaff
??
0
});
response
.
DetailItems
.
Add
(
new
DeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
效率系数
.
ToString
(),
Total
=
employee
?.
Efficiency
??
0
});
response
.
DetailItems
.
Add
(
new
DeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
效率绩效小计
.
ToString
(),
Total
=
resCompute
.
Efficiency
??
0
});
response
.
DetailItems
.
Add
(
new
DeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
规模绩效系数
.
ToString
(),
Total
=
employee
?.
Scale
??
0
});
response
.
DetailItems
.
Add
(
new
DeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
规模绩效小计
.
ToString
(),
Total
=
resCompute
.
Scale
??
0
});
response
.
DetailItems
.
Add
(
new
DeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
管理绩效发放系数
.
ToString
(),
Total
=
employee
?.
Management
??
0
});
response
.
DetailItems
.
Add
(
new
DeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
考核前管理绩效
.
ToString
(),
Total
=
resCompute
.
ShouldGiveFee
??
0
});
response
.
DetailItems
.
Add
(
new
DeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
考核得分率
.
ToString
(),
Total
=
resCompute
.
ScoreAverageRate
??
1
});
response
.
DetailItems
.
Add
(
new
DeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
考核后管理绩效
.
ToString
(),
Total
=
GetDecimal
(
resCompute
.
ShouldGiveFee
*
resCompute
.
ScoreAverageRate
*
resCompute
.
Attendance
+
resCompute
.
Punishment
??
0
),
Remark
=
resCompute
.
Remark
});
response
.
DetailItems
.
Add
(
new
DeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
调节系数
.
ToString
(),
Total
=
employee
?.
Adjust
??
1
});
var
isShowManage
=
IsShowManage
(
resCompute
.
AllotID
.
Value
);
var
array
=
new
List
<
int
>();
if
(
resCompute
.
AccountType
==
AccountUnitType
.
行政中层
.
ToString
())
{
array
=
new
List
<
int
>()
{
(
int
)
ManagementDept
.
TitleManage
.
考核前其他绩效
,
(
int
)
ManagementDept
.
TitleManage
.
考核前绩效
,
(
int
)
ManagementDept
.
TitleManage
.
出勤率
,
(
int
)
ManagementDept
.
TitleManage
.
考核得分率
,
(
int
)
ManagementDept
.
TitleManage
.
医院奖罚
,
(
int
)
ManagementDept
.
TitleManage
.
夜班费
,
(
int
)
ManagementDept
.
TitleManage
.
考核后绩效
,
(
int
)
ManagementDept
.
TitleManage
.
调节系数
,
(
int
)
ManagementDept
.
TitleManage
.
调节后其他绩效
,
(
int
)
ManagementDept
.
TitleManage
.
绩效合计
};
isShowManage
=
1
;
}
else
{
array
=
new
List
<
int
>()
{
(
int
)
ManagementDept
.
TitleManage
.
考核前绩效
,
(
int
)
ManagementDept
.
TitleManage
.
核算人数
,
(
int
)
ManagementDept
.
TitleManage
.
人均绩效
,
(
int
)
ManagementDept
.
TitleManage
.
基础绩效系数
,
(
int
)
ManagementDept
.
TitleManage
.
出勤率
,
(
int
)
ManagementDept
.
TitleManage
.
实际人均
,
(
int
)
ManagementDept
.
TitleManage
.
效率绩效人数
,
(
int
)
ManagementDept
.
TitleManage
.
效率系数
,
(
int
)
ManagementDept
.
TitleManage
.
效率绩效小计
,
(
int
)
ManagementDept
.
TitleManage
.
规模绩效系数
,
(
int
)
ManagementDept
.
TitleManage
.
规模绩效小计
,
(
int
)
ManagementDept
.
TitleManage
.
管理绩效发放系数
,
(
int
)
ManagementDept
.
TitleManage
.
考核前管理绩效
,
(
int
)
ManagementDept
.
TitleManage
.
考核得分率
,
(
int
)
ManagementDept
.
TitleManage
.
考核后管理绩效
,
(
int
)
ManagementDept
.
TitleManage
.
医院奖罚
,
(
int
)
ManagementDept
.
TitleManage
.
其他管理绩效
,
(
int
)
ManagementDept
.
TitleManage
.
调节系数
,
(
int
)
ManagementDept
.
TitleManage
.
调节后其他绩效
,
(
int
)
ManagementDept
.
TitleManage
.
绩效合计
};
}
// 开启 显示管理绩效
if
(
isShowManage
!=
1
)
{
response
.
DetailItems
.
Add
(
new
DeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
绩效合计
.
ToString
(),
Total
=
GetDecimal
(
resCompute
.
ShouldGiveFee
*
resCompute
.
ScoreAverageRate
*
resCompute
.
Attendance
+
resCompute
.
Punishment
??
0
)
*
(
resCompute
.
Adjust
??
1
)
+
(
resCompute
.
AdjustLaterOtherFee
??
0
)
});
}
else
{
response
.
DetailItems
.
Add
(
new
DeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
绩效合计
.
ToString
(),
Total
=
resCompute
.
RealGiveFee
??
0
});
}
var
settings
=
GetEmpDetailSetting
(
resCompute
.
AllotID
??
0
);
// 显示详情
#
region
补全公共附属表明细
{
var
rightSheetTypeMaps
=
new
DeptDetailItem
[]
{
new
DeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
基础绩效系数
.
ToString
(),
SheetType
=
SheetType
.
PersonPostCoefficient
,
Total
=
employee
?.
Basics
??
0
},
new
DeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
医院奖罚
.
ToString
(),
SheetType
=
SheetType
.
PersonExtra
,
Total
=
resCompute
.
Punishment
??
0
},
new
DeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
其他管理绩效
.
ToString
(),
SheetType
=
SheetType
.
PersonOtherManagePerforFee
,
Total
=
resCompute
.
OtherManagePerfor
??
0
},
new
DeptDetailItem
{
Title
=
ManagementDept
.
TitleManage
.
调节后其他绩效
.
ToString
(),
SheetType
=
SheetType
.
AccountAdjustLaterOtherFee
,
Total
=
employee
?.
AdjustLaterOtherFee
??
0
,
},
};
foreach
(
var
detail
in
rightSheetTypeMaps
)
{
response
.
DetailItems
.
Add
(
detail
);
foreach
(
var
sheet
in
persheet
.
Where
(
t
=>
t
.
SheetType
==
(
int
)
detail
.
SheetType
))
{
var
type
=
TypeConversion
((
int
)
unitType
);
var
sheetName
=
BeautifulName
(
sheet
.
SheetName
);
var
items
=
new
List
<
Dictionary
<
string
,
object
>>();
var
postDatas
=
basicData
.
Where
(
t
=>
t
.
SheetID
==
sheet
.
ID
&&
t
.
IsTotal
!=
1
&&
t
.
UnitType
==
(
int
)
type
);
var
headersDatas
=
headers
.
Where
(
t
=>
t
.
SheetID
==
sheet
.
ID
&&
t
.
IsTotal
!=
1
).
ToList
();
postDatas
=
from
temp1
in
postDatas
join
temp2
in
headersDatas
on
temp1
.
TypeName
equals
temp2
.
CellValue
orderby
temp2
.
PointCell
ascending
select
temp1
;
foreach
(
var
post
in
postDatas
.
GroupBy
(
t
=>
new
{
t
.
TypeName
}))
{
if
(
ignore
.
Contains
(
post
.
Key
.
TypeName
))
continue
;
var
settingItem
=
settings
.
FirstOrDefault
(
w
=>
w
.
Title
==
detail
.
Title
)
??
new
UniteDeptDetailItem
()
{
Children
=
new
List
<
UniteDeptDetailItem
>()
};
var
gs
=
settingItem
.
Children
.
FirstOrDefault
(
w
=>
w
.
Title
==
post
.
Key
.
TypeName
)
??
new
UniteDeptDetailItem
{
Format
=
""
};
if
(
string
.
IsNullOrEmpty
(
gs
.
Display
))
gs
.
Display
=
UniteDept
.
DisplayRule
.
始终显示
.
ToString
();
if
(
gs
.
Display
==
UniteDept
.
DisplayRule
.
始终隐藏
.
ToString
())
continue
;
var
states
=
new
int
[]
{
(
int
)
AllotStates
.
绩效下发
,
(
int
)
AllotStates
.
归档
};
if
(
gs
.
Display
==
UniteDept
.
DisplayRule
.
下发显示
.
ToString
()
&&
userInfo
.
IsSecondAdmin
&&
!
states
.
Contains
(
allot
.
States
))
continue
;
var
fz
=
post
.
Sum
(
group
=>
group
.
IsFactor
==
1
?
(
group
.
CellValue
*
(
group
.
FactorValue
??
0
))
:
group
.
CellValue
);
var
row
=
new
Dictionary
<
string
,
object
>
{
{
"指标"
,
post
.
Key
.
TypeName
},
{
"分值"
,
ValueFormating
(
fz
,
gs
.
Format
)
},
{
"说明"
,
gs
.
Remark
},
};
items
.
Add
(
row
);
}
DeleteBlankColumn
(
items
);
var
amount
=
basicData
?.
Where
(
t
=>
t
.
SheetID
==
sheet
.
ID
&&
t
.
UnitType
==
(
int
)
type
&&
t
.
IsTotal
==
1
)?.
FirstOrDefault
()?.
CellValue
??
0
;
detail
.
Total
=
amount
;
detail
.
Items
=
items
;
}
}
}
#
endregion
RecursionUseSettings
(
response
.
DetailItems
,
settings
,
userInfo
.
IsSecondAdmin
,
allot
);
response
.
DetailItems
=
response
.
DetailItems
.
Where
(
w
=>
array
.
Contains
(
w
.
Sort
)).
ToList
();
response
.
DetailItems
=
response
.
DetailItems
.
OrderBy
(
w
=>
w
.
Sort
).
ToList
();
responses
.
Add
(
response
);
}
return
responses
;
}
public
string
ExcelDownload
(
List
<
UniteDeptDetailResponse
>
uniteDeptDetails
,
string
name
,
int
allotId
)
{
var
dpath
=
Path
.
Combine
(
AppDomain
.
CurrentDomain
.
BaseDirectory
,
"Files"
);
if
(!
Directory
.
Exists
(
dpath
))
Directory
.
CreateDirectory
(
dpath
);
string
filepath
=
Path
.
Combine
(
dpath
,
$"
{
name
}{
DateTime
.
Now
:
yyyy
年
MM
月
dd
日
}
"
);
if
(
File
.
Exists
(
filepath
))
File
.
Delete
(
filepath
);
using
(
FileStream
fs
=
new
FileStream
(
filepath
,
FileMode
.
OpenOrCreate
))
using
(
ExcelPackage
package
=
new
ExcelPackage
(
fs
))
{
foreach
(
var
uniteDeptDetail
in
uniteDeptDetails
)
{
var
worksheet
=
package
.
Workbook
.
Worksheets
.
Add
(
uniteDeptDetail
.
Title
);
worksheet
.
View
.
ShowGridLines
=
false
;
var
maxColIndex
=
GetMaxColumnIndex
(
0
,
uniteDeptDetail
.
DetailItems
);
maxColIndex
=
maxColIndex
==
0
?
1
:
maxColIndex
;
worksheet
.
SetValue
(
1
,
1
,
uniteDeptDetail
.
Title
);
worksheet
.
Cells
[
1
,
1
,
1
,
maxColIndex
].
Merge
=
true
;
worksheet
.
Cells
[
1
,
1
,
1
,
maxColIndex
].
Style
.
Font
.
Bold
=
true
;
worksheet
.
Cells
[
1
,
1
,
1
,
maxColIndex
].
Style
.
Font
.
Size
=
18
;
worksheet
.
Cells
[
1
,
1
,
1
,
maxColIndex
].
Style
.
Border
.
BorderAround
(
ExcelBorderStyle
.
Thin
);
worksheet
.
Cells
[
1
,
1
,
1
,
maxColIndex
].
Style
.
VerticalAlignment
=
ExcelVerticalAlignment
.
Center
;
worksheet
.
Cells
[
1
,
1
,
1
,
maxColIndex
].
Style
.
HorizontalAlignment
=
ExcelHorizontalAlignment
.
Center
;
worksheet
.
Cells
[
1
,
1
].
Style
.
Fill
.
PatternType
=
ExcelFillStyle
.
Solid
;
worksheet
.
Cells
[
1
,
1
].
Style
.
Fill
.
BackgroundColor
.
SetColor
(
Color
.
GhostWhite
);
var
rowIndex
=
1
;
WriteSheetCells
(
worksheet
,
maxColIndex
,
rowIndex
,
uniteDeptDetail
.
DetailItems
);
worksheet
.
Cells
.
AutoFitColumns
();
int
lastColumnIndex
=
worksheet
.
Dimension
.
End
.
Column
;
worksheet
.
Column
(
lastColumnIndex
).
Width
=
88
;
for
(
int
row
=
1
;
row
<=
worksheet
.
Dimension
.
End
.
Row
;
row
++)
{
worksheet
.
Row
(
row
).
Height
=
38
;
}
}
package
.
Save
();
}
return
filepath
;
}
#
endregion
}
}
performance/Performance.Services/ComputeService.cs
View file @
5295ed43
...
...
@@ -41,6 +41,9 @@ public partial class ComputeService : IAutoInjection
private
readonly
PerforCofaliasRepository
cofaliasRepository
;
private
readonly
PerforReportRepository
reportRepository
;
private
readonly
PerforCofDeptDetailRepository
_perforCofDeptDetailRepository
;
private
readonly
PerforCofEmpDetailRepository
_perforCofEmpDetailRepository
;
private
readonly
PerforAgsecondallotRepository
_agsecondallotRepository
;
private
readonly
PerforRescomputeRepository
_rescomputeRepository
;
public
ComputeService
(
IMapper
mapper
,
...
...
@@ -67,7 +70,11 @@ public partial class ComputeService : IAutoInjection
PerforCofaccountingRepository
cofaccountingRepository
,
PerforCofaliasRepository
cofaliasRepository
,
PerforReportRepository
reportRepository
,
PerforCofDeptDetailRepository
perforCofDeptDetailRepository
)
PerforCofDeptDetailRepository
perforCofDeptDetailRepository
,
PerforCofEmpDetailRepository
perforCofEmpDetailRepository
,
PerforAgsecondallotRepository
agsecondallotRepository
,
PerforRescomputeRepository
rescomputeRepository
)
{
_mapper
=
mapper
;
_configuration
=
configuration
;
...
...
@@ -94,6 +101,9 @@ public partial class ComputeService : IAutoInjection
this
.
cofaliasRepository
=
cofaliasRepository
;
this
.
reportRepository
=
reportRepository
;
_perforCofDeptDetailRepository
=
perforCofDeptDetailRepository
;
_perforCofEmpDetailRepository
=
perforCofEmpDetailRepository
;
_agsecondallotRepository
=
agsecondallotRepository
;
_rescomputeRepository
=
rescomputeRepository
;
}
public
int
IsShowManage
(
int
allotId
)
...
...
@@ -1706,7 +1716,6 @@ public DeptDataDetails GetDoctorDetail(int computeId)
Management
=
employee
?.
Management
??
0
,
//管理绩效发放系数
AdjustFactor
=
employee
?.
Adjust
??
1
,
//调节系数
AdjustLaterOtherFee
=
employee
?.
AdjustLaterOtherFee
??
0
,
//调节后其他绩效
AccountingUnit
=
resCompute
.
AccountingUnit
,
EmployeeName
=
resCompute
.
EmployeeName
,
PerforTotal
=
resCompute
.
PerforTotal
,
//科室考核前绩效
...
...
@@ -1781,9 +1790,9 @@ public DeptDataDetails GetAdministration(int computeId)
Pandect
=
new
PerDataAccountBaisc
{
EmployeeName
=
resCompute
.
EmployeeName
,
//医生姓名
AccountType
=
resCompute
.
AccountType
,
//核算单元类型
JobNumber
=
resCompute
.
JobNumber
,
//工号
AccountingUnit
=
resCompute
.
AccountingUnit
,
//核算单元
AccountType
=
resCompute
.
AccountType
,
//核算单元类型
JobTitle
=
resCompute
.
JobTitle
,
//职称
FitPeople
=
resCompute
.
FitPeople
,
//绩效基数核算参考对象
FitPeopleValue
=
resCompute
.
FitPeopleValue
??
0
,
//绩效基础核算参考值
...
...
performance/Performance.Services/MenuService.cs
View file @
5295ed43
using
AutoMapper
;
using
Performance.DtoModels
;
using
Performance.DtoModels.Request
;
using
Performance.EntityModels
;
using
Performance.Repository
;
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
using
System.Transactions
;
namespace
Performance.Services
{
...
...
@@ -13,12 +15,17 @@ public class MenuService : IAutoInjection
{
private
readonly
IMapper
_mapper
;
private
PerforMenuRepository
_menuRepository
;
private
PerforRolemenuRepository
_rolemenuRepository
;
public
MenuService
(
IMapper
mapper
,
PerforMenuRepository
menuRepository
)
PerforMenuRepository
menuRepository
,
PerforRolemenuRepository
perforRolemenuRepository
)
{
_mapper
=
mapper
;
_menuRepository
=
menuRepository
;
_rolemenuRepository
=
perforRolemenuRepository
;
}
public
List
<
MenuResponse
>
GetMenuList
(
int
userid
)
...
...
@@ -43,5 +50,139 @@ private List<MenuResponse> RecursionFill(List<sys_menu> menuList, int parentId)
}
return
null
;
}
public
List
<
MenuResponse
>
GetSystemMenu
()
{
var
sysMenus
=
_menuRepository
.
GetEntities
();
return
RecursionFill
(
sysMenus
,
0
);
}
public
ApiResponse
AddSystemMenu
(
MenuRequest
menuRequest
)
{
try
{
if
(
menuRequest
==
null
)
throw
new
PerformanceException
(
"请填写数据"
);
var
data
=
_mapper
.
Map
<
sys_menu
>(
menuRequest
);
_menuRepository
.
Add
(
data
);
return
new
ApiResponse
(
ResponseType
.
OK
);
}
catch
(
Exception
ex
)
{
return
new
ApiResponse
(
ResponseType
.
Fail
,
"添加失败"
);
}
}
public
ApiResponse
UpdateSystemMenu
(
MenuRequest
menuRequest
)
{
try
{
var
data
=
_menuRepository
.
GetEntity
(
w
=>
w
.
ID
==
menuRequest
.
ID
);
if
(
data
==
null
)
throw
new
PerformanceException
(
"未找到需要修改的数据"
);
data
.
ParentID
=
menuRequest
.
ParentID
;
data
.
MenuName
=
menuRequest
.
MenuName
;
data
.
MenuUrl
=
menuRequest
.
MenuUrl
;
data
.
States
=
menuRequest
.
States
;
data
.
Sort
=
menuRequest
.
Sort
;
_menuRepository
.
Update
(
data
);
return
new
ApiResponse
(
ResponseType
.
OK
);
}
catch
(
Exception
ex
)
{
return
new
ApiResponse
(
ResponseType
.
Fail
,
"修改失败"
);
}
}
public
ApiResponse
DeleteSystemMenu
(
int
menuID
)
{
try
{
var
allMenus
=
_menuRepository
.
GetEntities
();
var
currMenu
=
allMenus
.
FirstOrDefault
(
w
=>
w
.
ID
==
menuID
);
if
(
currMenu
==
null
)
return
new
ApiResponse
(
ResponseType
.
NotFound
,
"未找到相关信息,请刷新后重试"
);
var
sysMenuIds
=
GetRelevanceMenuId
(
currMenu
,
allMenus
,
orientation
:
false
);
sysMenuIds
.
Add
(
menuID
);
var
sysRoleMenus
=
_rolemenuRepository
.
GetEntities
(
w
=>
sysMenuIds
.
Contains
(
w
.
MenuID
));
if
(
sysRoleMenus
!=
null
&&
sysRoleMenus
.
Any
())
_rolemenuRepository
.
RemoveRange
(
sysRoleMenus
.
ToArray
());
var
sysMenus
=
_menuRepository
.
GetEntities
(
w
=>
sysMenuIds
.
Contains
(
w
.
ID
));
if
(
sysMenus
!=
null
&&
sysMenus
.
Any
())
_menuRepository
.
RemoveRange
(
sysMenus
.
ToArray
());
return
new
ApiResponse
(
ResponseType
.
OK
);
}
catch
(
Exception
ex
)
{
return
new
ApiResponse
(
ResponseType
.
Fail
,
"删除失败"
);
}
}
public
ApiResponse
<
List
<
sys_role_menu
>>
GetRoleSystemMenu
(
int
menuID
)
{
var
roles
=
_rolemenuRepository
.
GetEntities
(
t
=>
t
.
MenuID
==
menuID
);
return
new
ApiResponse
<
List
<
sys_role_menu
>>(
ResponseType
.
OK
,
roles
);
}
public
ApiResponse
SetRoleSystemMenu
(
RoleRequest
roleRequest
)
{
try
{
var
allMenus
=
_menuRepository
.
GetEntities
();
var
currMenu
=
allMenus
.
FirstOrDefault
(
w
=>
w
.
ID
==
roleRequest
.
MenuID
);
if
(
currMenu
==
null
)
return
new
ApiResponse
(
ResponseType
.
NotFound
,
"未找到相关信息,请刷新后重试"
);
var
menuIds
=
GetRelevanceMenuId
(
currMenu
,
allMenus
,
orientation
:
true
);
menuIds
.
Add
(
roleRequest
.
MenuID
);
var
sysRoleMenus
=
_rolemenuRepository
.
GetEntities
(
w
=>
w
.
MenuID
==
roleRequest
.
MenuID
);
if
(
sysRoleMenus
!=
null
&&
sysRoleMenus
.
Any
())
_rolemenuRepository
.
RemoveRange
(
sysRoleMenus
.
ToArray
());
var
temps
=
new
List
<
sys_role_menu
>();
foreach
(
var
menuId
in
menuIds
)
{
foreach
(
var
roleID
in
roleRequest
.
RoleID
)
{
if
(
_rolemenuRepository
.
GetEntity
(
w
=>
w
.
MenuID
==
menuId
&&
w
.
RoleID
==
roleID
)
==
null
)
temps
.
Add
(
new
sys_role_menu
{
MenuID
=
menuId
,
RoleID
=
roleID
});
}
}
_rolemenuRepository
.
AddRange
(
temps
.
ToArray
());
return
new
ApiResponse
(
ResponseType
.
OK
);
}
catch
(
Exception
ex
)
{
return
new
ApiResponse
(
ResponseType
.
Fail
,
"添加失败"
);
}
}
/// <summary>
/// 递归查找指定菜单的所有上层菜单或下层菜单
/// </summary>
/// <param name="menuIds"></param>
/// <param name="currMenu"></param>
/// <param name="allMenus"></param>
/// <param name="orientation"></param>
private
List
<
int
>
GetRelevanceMenuId
(
sys_menu
currMenu
,
List
<
sys_menu
>
allMenus
,
bool
orientation
)
{
// orientation = true 向上找 false 乡下找
Func
<
int
,
sys_menu
>
getRelevanceMenu
=
orientation
?
(
menuIdOrParentId
)
=>
allMenus
.
FirstOrDefault
(
w
=>
w
.
ID
==
menuIdOrParentId
)
:
(
menuIdOrParentId
)
=>
allMenus
.
FirstOrDefault
(
w
=>
w
.
ParentID
==
menuIdOrParentId
);
if
(
currMenu
.
ParentID
<=
0
)
return
new
List
<
int
>();
var
menuIdOrParentId
=
orientation
?
currMenu
.
ParentID
:
currMenu
.
ID
;
var
tempSysMenu
=
getRelevanceMenu
(
menuIdOrParentId
);
if
(
tempSysMenu
==
null
)
return
new
List
<
int
>();
List
<
int
>
menuIds
=
new
List
<
int
>()
{
tempSysMenu
.
ID
};
var
relevanceMenuIds
=
GetRelevanceMenuId
(
tempSysMenu
,
allMenus
,
orientation
);
if
(
relevanceMenuIds
?.
Any
()
==
true
)
{
menuIds
.
AddRange
(
relevanceMenuIds
);
}
return
menuIds
;
}
}
}
performance/Performance.Services/RedistributionService.cs
View file @
5295ed43
...
...
@@ -208,7 +208,7 @@ public List<SecondColumnDictionary> GetTableHeaderDictionary(ComputeMode compute
// 顶部
new
SecondColumnDictionary
(
getAlias
(
nameof
(
ag_headsource
.
TotalPerformance
),
"可分配绩效"
),
nameof
(
ag_headsource
.
TotalPerformance
),
true
,
10
,
"Top"
,
isNumber
:
true
),
new
SecondColumnDictionary
(
getAlias
(
nameof
(
ag_headsource
.
HosOtherPerformance
),
"医院其他绩效"
),
nameof
(
ag_headsource
.
HosOtherPerformance
),
true
,
20
,
"Top"
,
isNumber
:
true
),
new
SecondColumnDictionary
(
getAlias
(
nameof
(
ag_headsource
.
NightShiftWorkPerforTotal
),
"夜班绩效
综合
"
),
nameof
(
ag_headsource
.
NightShiftWorkPerforTotal
),
true
,
30
,
"Top"
,
isNumber
:
true
),
new
SecondColumnDictionary
(
getAlias
(
nameof
(
ag_headsource
.
NightShiftWorkPerforTotal
),
"夜班绩效
绩效
"
),
nameof
(
ag_headsource
.
NightShiftWorkPerforTotal
),
true
,
30
,
"Top"
,
isNumber
:
true
),
new
SecondColumnDictionary
(
getAlias
(
nameof
(
ag_headsource
.
TotalPreAccountingReward
),
"核算平均前单项"
),
nameof
(
ag_headsource
.
TotalPreAccountingReward
),
true
,
40
,
"Top"
,
isNumber
:
true
),
new
SecondColumnDictionary
(
getAlias
(
nameof
(
ag_headsource
.
TotalDistPerformance
),
"科室总绩效"
),
nameof
(
ag_headsource
.
TotalDistPerformance
),
true
,
50
,
"Top"
,
isNumber
:
true
),
new
SecondColumnDictionary
(
getAlias
(
nameof
(
ag_headsource
.
DirectorBasisPerformance
),
"主任基础绩效"
),
nameof
(
ag_headsource
.
DirectorBasisPerformance
),
true
,
60
,
"Top"
,
isNumber
:
true
),
...
...
performance/Performance.Services/UserService.cs
View file @
5295ed43
...
...
@@ -601,29 +601,54 @@ public UserResponse UpdateUser(UserRequest request, int userId)
return
_mapper
.
Map
<
UserResponse
>(
user
);
}
public
ApiResponse
DeleteUser
(
int
iD
)
{
var
user
=
_userRepository
.
GetEntity
(
t
=>
t
.
ID
==
iD
&&
t
.
IsDelete
==
1
);
if
(
null
==
user
)
throw
new
PerformanceException
(
$"用户不存在 UserId:
{
iD
}
"
);
user
.
IsDelete
=
2
;
var
result
=
_userRepository
.
Remove
(
user
);
var
users
=
_userRepository
.
GetEntities
(
t
=>
t
.
ParentID
==
user
.
ID
&&
t
.
IsDelete
==
1
)?.
ToArray
();
if
(
users
!=
null
)
public
ApiResponse
DeleteUser
(
int
userId
)
{
try
{
_userRepository
.
RemoveRange
(
users
);
foreach
(
var
item
in
users
)
{
var
userRole
=
_userroleRepository
.
GetEntity
(
t
=>
t
.
UserID
==
item
.
ID
);
if
(
null
!=
userRole
)
_userroleRepository
.
Remove
(
userRole
);
}
var
sysUsers
=
_userRepository
.
GetEntities
(
t
=>
t
.
ID
==
userId
||
t
.
ParentID
==
userId
);
if
(
sysUsers
==
null
)
return
new
ApiResponse
(
ResponseType
.
NotFound
,
"未查到用户"
);
var
sysUsersId
=
sysUsers
.
Select
(
w
=>
w
.
ID
).
ToList
();
var
sysUesrRoles
=
_userroleRepository
.
GetEntities
(
t
=>
sysUsersId
.
Contains
(
t
.
UserID
));
_userRepository
.
RemoveRange
(
sysUsers
.
ToArray
());
if
(
sysUesrRoles
.
Any
())
_userroleRepository
.
RemoveRange
(
sysUesrRoles
.
ToArray
());
return
new
ApiResponse
(
ResponseType
.
OK
);
}
catch
(
Exception
ex
)
{
return
new
ApiResponse
(
ResponseType
.
Fail
,
"删除失败"
);
}
return
result
?
new
ApiResponse
(
ResponseType
.
OK
)
:
new
ApiResponse
(
ResponseType
.
Fail
);
}
#
region
老删除
//public ApiResponse DeleteUser(int iD)
//{
// var user = _userRepository.GetEntity(t => t.ID == iD && t.IsDelete == 1);
// if (null == user)
// throw new PerformanceException($"用户不存在 UserId:{iD}");
// user.IsDelete = 2;
// var result = _userRepository.Remove(user);
// var users = _userRepository.GetEntities(t => t.ParentID == user.ID && t.IsDelete == 1)?.ToArray();
// if (users != null)
// {
// _userRepository.RemoveRange(users);
// foreach (var item in users)
// {
// var userRole = _userroleRepository.GetEntity(t => t.UserID == item.ID);
// if (null != userRole)
// _userroleRepository.Remove(userRole);
// }
// }
// return result ? new ApiResponse(ResponseType.OK) : new ApiResponse(ResponseType.Fail);
//}
#
endregion
#
endregion
public
HandsonTableBase
GetUserHandsFlat
()
...
...
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