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
d7a54454
Commit
d7a54454
authored
Apr 07, 2023
by
ruyun.zhang
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'featrue/考勤下发' into develop
parents
801e9e54
ea5e4a7a
Show whitespace changes
Inline
Side-by-side
Showing
26 changed files
with
1471 additions
and
169 deletions
+1471
-169
performance/Performance.Api/Controllers/AccountController.cs
+1
-1
performance/Performance.Api/Controllers/AttendanceController.cs
+211
-59
performance/Performance.Api/Controllers/ReportController.cs
+1
-6
performance/Performance.Api/Controllers/SecondAllotController.cs
+1
-1
performance/Performance.Api/wwwroot/Performance.Api.xml
+53
-15
performance/Performance.Api/wwwroot/Performance.DtoModels.xml
+280
-25
performance/Performance.Api/wwwroot/Performance.EntityModels.xml
+95
-0
performance/Performance.DtoModels/AutoMapper/AutoMapperConfigs.cs
+2
-1
performance/Performance.DtoModels/Enum.cs
+14
-0
performance/Performance.DtoModels/PerAttendanceIssueDto.cs
+101
-0
performance/Performance.DtoModels/Request/AllotDeptRequest.cs
+2
-0
performance/Performance.DtoModels/Response/AttendanceAuditDetail.cs
+98
-0
performance/Performance.DtoModels/Response/AttendanceAuditList.cs
+52
-0
performance/Performance.DtoModels/Response/AttendanceIssueChoose.cs
+31
-0
performance/Performance.DtoModels/Response/AttendanceStatistics.cs
+10
-0
performance/Performance.DtoModels/Response/UserIdentity.cs
+4
-0
performance/Performance.EntityModels/Context/PerformanceDbContext.cs
+1
-0
performance/Performance.EntityModels/Entity/per_attendance_issue.cs
+97
-0
performance/Performance.Repository/BaseRepository.cs
+0
-0
performance/Performance.Repository/PerforPerAllotRepository.cs
+23
-0
performance/Performance.Repository/PerforReportRepository .cs
+4
-4
performance/Performance.Repository/Repository/PerforPerAttendanceIssueRepository.cs
+20
-0
performance/Performance.Services/AttendanceService.cs
+353
-49
performance/Performance.Services/ComputeConfig.cs
+3
-3
performance/Performance.Services/SecondAllotService.cs
+13
-4
performance/Performance.Services/UserService.cs
+1
-1
No files found.
performance/Performance.Api/Controllers/AccountController.cs
View file @
d7a54454
...
@@ -49,7 +49,7 @@ public class AccountController : Controller
...
@@ -49,7 +49,7 @@ public class AccountController : Controller
/// {
/// {
/// "logintype": 2,
/// "logintype": 2,
/// "account": "admin",
/// "account": "admin",
/// "password": "
e10adc3949ba59abbe56e057f20f883e
",
/// "password": "
b59c67bf196a4758191e42f76670ceba
",
/// "appname": "string",
/// "appname": "string",
/// "device": "web"
/// "device": "web"
/// }
/// }
...
...
performance/Performance.Api/Controllers/AttendanceController.cs
View file @
d7a54454
...
@@ -9,6 +9,8 @@
...
@@ -9,6 +9,8 @@
using
System
;
using
System
;
using
System.IO
;
using
System.IO
;
using
Newtonsoft.Json
;
using
Newtonsoft.Json
;
using
System.Threading.Tasks
;
using
Performance.DtoModels.Response
;
namespace
Performance.Api.Controllers
namespace
Performance.Api.Controllers
{
{
...
@@ -17,11 +19,13 @@ namespace Performance.Api.Controllers
...
@@ -17,11 +19,13 @@ namespace Performance.Api.Controllers
public
class
AttendanceController
:
ControllerBase
public
class
AttendanceController
:
ControllerBase
{
{
private
readonly
AttendanceService
_attendanceService
;
private
readonly
AttendanceService
_attendanceService
;
private
ClaimService
claim
;
public
AttendanceController
(
public
AttendanceController
(
AttendanceService
attendanceService
AttendanceService
attendanceService
,
ClaimService
claim
)
)
{
{
_attendanceService
=
attendanceService
;
_attendanceService
=
attendanceService
;
this
.
claim
=
claim
;
}
}
/*
/*
...
@@ -32,19 +36,21 @@ AttendanceService attendanceService
...
@@ -32,19 +36,21 @@ AttendanceService attendanceService
view_attendance 考勤视图
view_attendance 考勤视图
*/
*/
/// <summary>
/// 查询绩效考勤记录
/// </summary>
/// <param name="allotId"></param>
/// <returns></returns>
[
HttpGet
(
"GetAttendance/{allotId}"
)]
public
ApiResponse
<
List
<
AttendanceStatistics
>>
GetAttendance
(
int
allotId
)
{
// 查询考勤视图,并按照设计图做格式转换 仅查询开始结束
var
result
=
_attendanceService
.
GetAttendance
(
allotId
);
return
result
;
///// <summary>
}
///// 查询绩效考勤记录
///// </summary>
///// <param name="allotId"></param>
///// <returns></returns>
//[HttpGet("GetAttendance/{allotId}")]
//public ApiResponse<List<AttendanceStatistics>> GetAttendance(int allotId)
//{
// // 查询考勤视图,并按照设计图做格式转换 仅查询开始结束
// var userid = claim.GetUserId();
// var result = _attendanceService.GetAttendance(allotId, userid);
// return result;
//}
#
region
调动记录
#
region
调动记录
...
@@ -185,49 +191,53 @@ public ApiResponse AttendanceBatch(int allotId, int hospitalId, SaveCollectData
...
@@ -185,49 +191,53 @@ public ApiResponse AttendanceBatch(int allotId, int hospitalId, SaveCollectData
public
ApiResponse
<
List
<
AttendanceStatistics
>>
GetAttendanceStatistics
(
int
allotId
)
public
ApiResponse
<
List
<
AttendanceStatistics
>>
GetAttendanceStatistics
(
int
allotId
)
{
{
// 返回结果参考接口 employee/apr/getdeptdetail
// 返回结果参考接口 employee/apr/getdeptdetail
return
_attendanceService
.
GetAttendanceStatistics
(
allotId
);
var
userid
=
claim
.
GetUserId
();
return
_attendanceService
.
GetAttendanceStatistics
(
allotId
,
userid
);
}
}
#
region
下载
/// <summary>
#
region
初始考勤记录下载
/// 初始考勤记录下载
///// <summary>
/// </summary>
///// 初始考勤记录下载
/// <param name="allotId"></param>
///// </summary>
/// <returns></returns>
///// <param name="allotId"></param>
[
HttpPost
]
///// <returns></returns>
[
Route
(
"download/attendance/{allotId}"
)]
//[HttpPost]
public
IActionResult
DownloadAttendance
(
int
allotId
)
//[Route("download/attendance/{allotId}")]
{
//public IActionResult DownloadAttendance(int allotId)
List
<
ExcelDownloadHeads
>
excelDownloadHeads
=
new
List
<
ExcelDownloadHeads
>()
//{
{
// List<ExcelDownloadHeads> excelDownloadHeads = new List<ExcelDownloadHeads>()
new
ExcelDownloadHeads
{
Alias
=
"核算单元名称"
,
Name
=
nameof
(
AttendanceStatistics
.
AccountingUnit
)
},
// {
new
ExcelDownloadHeads
{
Alias
=
"科室名称"
,
Name
=
nameof
(
AttendanceStatistics
.
Department
)
},
// new ExcelDownloadHeads { Alias = "核算单元名称", Name = nameof(AttendanceStatistics.AccountingUnit) },
new
ExcelDownloadHeads
{
Alias
=
"姓名"
,
Name
=
nameof
(
AttendanceStatistics
.
PersonnelName
)
},
// new ExcelDownloadHeads { Alias = "科室名称", Name = nameof(AttendanceStatistics.Department) },
new
ExcelDownloadHeads
{
Alias
=
"员工号"
,
Name
=
nameof
(
AttendanceStatistics
.
PersonnelNumber
)
},
// new ExcelDownloadHeads { Alias = "姓名", Name = nameof(AttendanceStatistics.PersonnelName) },
new
ExcelDownloadHeads
{
Alias
=
"人员类别"
,
Name
=
nameof
(
AttendanceStatistics
.
UnitType
)
},
// new ExcelDownloadHeads { Alias = "员工号", Name = nameof(AttendanceStatistics.PersonnelNumber) },
new
ExcelDownloadHeads
{
Alias
=
"在科开始时问"
,
Name
=
nameof
(
AttendanceStatistics
.
BeginDate
)
},
// new ExcelDownloadHeads { Alias = "人员类别", Name = nameof(AttendanceStatistics.UnitType) },
new
ExcelDownloadHeads
{
Alias
=
"在科结束时间"
,
Name
=
nameof
(
AttendanceStatistics
.
EndDate
)
},
// new ExcelDownloadHeads { Alias = "在科开始时问", Name = nameof(AttendanceStatistics.BeginDate) },
};
// new ExcelDownloadHeads { Alias = "在科结束时间", Name = nameof(AttendanceStatistics.EndDate) },
var
result
=
_attendanceService
.
GetAttendance
(
allotId
).
Data
;
// };
var
ser
=
JsonConvert
.
SerializeObject
(
result
);
// var userid = claim.GetUserId();
var
rows
=
JsonConvert
.
DeserializeObject
<
List
<
Dictionary
<
string
,
object
>>>(
ser
);
// var result = _attendanceService.GetAttendance(allotId, userid).Data;
// var ser = JsonConvert.SerializeObject(result);
var
filepath
=
_attendanceService
.
ExcelDownload
(
rows
,
"初始考勤记录"
,
allotId
,
excelDownloadHeads
);
// var rows = JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(ser);
var
memoryStream
=
new
MemoryStream
();
// var filepath = _attendanceService.ExcelDownload(rows, "初始考勤记录", allotId, excelDownloadHeads);
using
(
var
stream
=
new
FileStream
(
filepath
,
FileMode
.
Open
))
{
// var memoryStream = new MemoryStream();
stream
.
CopyToAsync
(
memoryStream
).
Wait
();
// using (var stream = new FileStream(filepath, FileMode.Open))
}
// {
memoryStream
.
Seek
(
0
,
SeekOrigin
.
Begin
);
// stream.CopyToAsync(memoryStream).Wait();
var
provider
=
new
FileExtensionContentTypeProvider
();
// }
FileInfo
fileInfo
=
new
FileInfo
(
filepath
);
// memoryStream.Seek(0, SeekOrigin.Begin);
var
memi
=
provider
.
Mappings
[
".xlsx"
];
// var provider = new FileExtensionContentTypeProvider();
return
File
(
memoryStream
,
memi
,
Path
.
GetFileName
(
fileInfo
.
Name
));
// FileInfo fileInfo = new FileInfo(filepath);
}
// var memi = provider.Mappings[".xlsx"];
// return File(memoryStream, memi, Path.GetFileName(fileInfo.Name));
//}
#
endregion
#
region
下载
/// <summary>
/// <summary>
/// 考勤记录下载
/// 考勤记录下载
/// </summary>
/// </summary>
...
@@ -313,22 +323,21 @@ public IActionResult DownloadStatistics(int allotId)
...
@@ -313,22 +323,21 @@ public IActionResult DownloadStatistics(int allotId)
{
{
List
<
ExcelDownloadHeads
>
excelDownloadHeads
=
new
List
<
ExcelDownloadHeads
>()
List
<
ExcelDownloadHeads
>
excelDownloadHeads
=
new
List
<
ExcelDownloadHeads
>()
{
{
new
ExcelDownloadHeads
{
Alias
=
"核算单元"
,
Name
=
nameof
(
AttendanceStatistics
.
AccountingUnit
)
},
new
ExcelDownloadHeads
{
Alias
=
"核算组别"
,
Name
=
nameof
(
AttendanceStatistics
.
UnitType
)
},
new
ExcelDownloadHeads
{
Alias
=
"科室名称"
,
Name
=
nameof
(
AttendanceStatistics
.
Departmen
t
)
},
new
ExcelDownloadHeads
{
Alias
=
"核算单元名称"
,
Name
=
nameof
(
AttendanceStatistics
.
AccountingUni
t
)
},
new
ExcelDownloadHeads
{
Alias
=
"姓名"
,
Name
=
nameof
(
AttendanceStatistics
.
PersonnelName
)
},
new
ExcelDownloadHeads
{
Alias
=
"姓名"
,
Name
=
nameof
(
AttendanceStatistics
.
PersonnelName
)
},
new
ExcelDownloadHeads
{
Alias
=
"员工号"
,
Name
=
nameof
(
AttendanceStatistics
.
PersonnelNumber
)
},
new
ExcelDownloadHeads
{
Alias
=
"员工号"
,
Name
=
nameof
(
AttendanceStatistics
.
PersonnelNumber
)
},
new
ExcelDownloadHeads
{
Alias
=
"人员类别"
,
Name
=
nameof
(
AttendanceStatistics
.
UnitType
)
},
new
ExcelDownloadHeads
{
Alias
=
"在科开始时问"
,
Name
=
nameof
(
AttendanceStatistics
.
BeginDate
)
},
new
ExcelDownloadHeads
{
Alias
=
"开始时问"
,
Name
=
nameof
(
AttendanceStatistics
.
BeginDate
)
},
new
ExcelDownloadHeads
{
Alias
=
"在科结束时间"
,
Name
=
nameof
(
AttendanceStatistics
.
EndDate
)
},
new
ExcelDownloadHeads
{
Alias
=
"结束时间"
,
Name
=
nameof
(
AttendanceStatistics
.
EndDate
)
},
};
};
var
type
=
_attendanceService
.
GetAttendanceType
(
allotId
);
var
type
=
_attendanceService
.
GetAttendanceType
(
allotId
);
foreach
(
var
item
in
type
.
Data
)
foreach
(
var
item
in
type
.
Data
)
{
{
excelDownloadHeads
.
Add
(
new
ExcelDownloadHeads
()
{
Alias
=
item
.
AttendanceName
,
Name
=
item
.
AttendanceName
});
excelDownloadHeads
.
Add
(
new
ExcelDownloadHeads
()
{
Alias
=
item
.
AttendanceName
,
Name
=
item
.
AttendanceName
});
}
}
excelDownloadHeads
.
Add
(
new
ExcelDownloadHeads
()
{
Alias
=
"
考
勤天数"
,
Name
=
"AttendanceDays"
});
excelDownloadHeads
.
Add
(
new
ExcelDownloadHeads
()
{
Alias
=
"
出
勤天数"
,
Name
=
"AttendanceDays"
});
var
userid
=
claim
.
GetUserId
();
var
result
=
_attendanceService
.
GetAttendanceStatistics
(
allotId
).
Data
;
var
result
=
_attendanceService
.
GetAttendanceStatistics
(
allotId
,
userid
).
Data
;
var
ser
=
JsonConvert
.
SerializeObject
(
result
);
var
ser
=
JsonConvert
.
SerializeObject
(
result
);
var
rows
=
JsonConvert
.
DeserializeObject
<
List
<
Dictionary
<
string
,
object
>>>(
ser
);
var
rows
=
JsonConvert
.
DeserializeObject
<
List
<
Dictionary
<
string
,
object
>>>(
ser
);
...
@@ -357,7 +366,149 @@ public IActionResult DownloadStatistics(int allotId)
...
@@ -357,7 +366,149 @@ public IActionResult DownloadStatistics(int allotId)
return File(memoryStream, memi, Path.GetFileName(path));*/
return File(memoryStream, memi, Path.GetFileName(path));*/
}
}
/// <summary>
/// 科室确认详情(已下发结果展示列表)下载
/// </summary>
/// <param name="allotId"></param>
/// <param name="unitType">人员类别</param>
/// <param name="accountingUnit">核算单元</param>
/// <returns></returns>
[
HttpPost
]
[
Route
(
"download/auditDetail"
)]
public
IActionResult
DownloadAuditDetail
(
int
allotId
,
string
unitType
,
string
accountingUnit
,
string
searchTxet
)
{
List
<
ExcelDownloadHeads
>
excelDownloadHeads
=
new
List
<
ExcelDownloadHeads
>()
{
new
ExcelDownloadHeads
{
Alias
=
"核算组别"
,
Name
=
nameof
(
AttendanceStatistics
.
UnitType
)
},
new
ExcelDownloadHeads
{
Alias
=
"核算单元名称"
,
Name
=
nameof
(
AttendanceStatistics
.
AccountingUnit
)
},
new
ExcelDownloadHeads
{
Alias
=
"姓名"
,
Name
=
nameof
(
AttendanceStatistics
.
PersonnelName
)
},
new
ExcelDownloadHeads
{
Alias
=
"员工号"
,
Name
=
nameof
(
AttendanceStatistics
.
PersonnelNumber
)
},
new
ExcelDownloadHeads
{
Alias
=
"在科开始时问"
,
Name
=
nameof
(
AttendanceStatistics
.
BeginDate
)
},
new
ExcelDownloadHeads
{
Alias
=
"在科结束时间"
,
Name
=
nameof
(
AttendanceStatistics
.
EndDate
)
},
};
var
type
=
_attendanceService
.
GetAttendanceType
(
allotId
);
foreach
(
var
item
in
type
.
Data
)
{
excelDownloadHeads
.
Add
(
new
ExcelDownloadHeads
()
{
Alias
=
item
.
AttendanceName
,
Name
=
item
.
AttendanceName
});
}
excelDownloadHeads
.
Add
(
new
ExcelDownloadHeads
()
{
Alias
=
"出勤天数"
,
Name
=
"AttendanceDays"
});
var
userid
=
claim
.
GetUserId
();
var
result
=
_attendanceService
.
AuditDetail
(
allotId
,
unitType
,
accountingUnit
,
searchTxet
,
userid
).
Data
;
var
ser
=
JsonConvert
.
SerializeObject
(
result
);
var
rows
=
JsonConvert
.
DeserializeObject
<
List
<
Dictionary
<
string
,
object
>>>(
ser
);
var
filepath
=
_attendanceService
.
ExcelDownload
(
rows
,
"最终考勤结果"
,
allotId
,
excelDownloadHeads
);
var
memoryStream
=
new
MemoryStream
();
using
(
var
stream
=
new
FileStream
(
filepath
,
FileMode
.
Open
))
{
stream
.
CopyToAsync
(
memoryStream
).
Wait
();
}
memoryStream
.
Seek
(
0
,
SeekOrigin
.
Begin
);
var
provider
=
new
FileExtensionContentTypeProvider
();
FileInfo
fileInfo
=
new
FileInfo
(
filepath
);
var
memi
=
provider
.
Mappings
[
".xlsx"
];
return
File
(
memoryStream
,
memi
,
Path
.
GetFileName
(
fileInfo
.
Name
));
}
#
endregion
#
endregion
#
region
最终考勤结果
/// <summary>
/// 科室确认列表
/// </summary>
/// <param name="allotId">绩效Id</param>
/// <param name="unitType">人员类别</param>
/// <param name="accountingUnit">核算单元</param>
/// <param name="state"> 操作类型 全部=0,未确认 = 1,确认 = 2,驳回 = 3,</param>
/// <returns></returns>
[
HttpPost
]
[
Route
(
"issue/audit/list"
)]
public
ApiResponse
<
List
<
AttendanceAuditList
>>
AuditList
(
int
allotId
,
string
unitType
,
string
accountingUnit
,
Attendance
.
State
state
)
{
return
_attendanceService
.
AuditList
(
allotId
,
unitType
,
accountingUnit
,
state
);
}
/// <summary>
/// 科室确认详情(已下发结果展示列表)
/// </summary>
/// <param name="allotId">绩效Id</param>
/// <param name="unitType"> 人员类别</param>
/// <param name="accountingUnit">核算单元</param>
/// <returns></returns>
[
HttpPost
]
[
Route
(
"issue/audit/detail"
)]
public
ApiResponse
<
List
<
AttendanceAuditDetail
>>
AuditDetail
(
int
allotId
,
string
unitType
,
string
accountingUnit
,
string
searchTxet
)
{
var
userid
=
claim
.
GetUserId
();
return
_attendanceService
.
AuditDetail
(
allotId
,
unitType
,
accountingUnit
,
searchTxet
,
userid
);
}
/// <summary>
/// 最终考勤结果下发(预确认显示)
/// </summary>
/// <param name="allotId">绩效Id</param>
/// <param name="unitType">人员类别</param>
/// <param name="accountingUnit">核算单元</param>
/// <param name="state"> 操作类型 新增 = 1, 修改 = 2, 删除 = 3,</param>
/// <returns></returns>
[
HttpPost
]
[
Route
(
"issue/check"
)]
public
ApiResponse
<
List
<
PerAttendanceIssueDto
>>
PreConfirmationDisplay
(
int
allotId
,
string
unitType
,
string
accountingUnit
,
Attendance
.
OperationType
state
)
{
var
userid
=
claim
.
GetUserId
();
return
_attendanceService
.
PreConfirmationDisplay
(
allotId
,
userid
,
unitType
,
accountingUnit
,
state
);
}
/// <summary>
/// 最终考勤结果下发
/// </summary>
/// <param name="allotId"></param>
/// <returns></returns>
[
HttpPost
]
[
Route
(
"issue/confirm"
)]
public
ApiResponse
IssueStatistics
(
int
allotId
)
{
var
userid
=
claim
.
GetUserId
();
var
realName
=
claim
.
GetUserClaim
(
JwtClaimTypes
.
RealName
);
return
_attendanceService
.
IssueStatistics
(
allotId
,
userid
,
realName
);
}
/// <summary>
/// 最终考勤结果驳回或确认无误((批量操作)
/// </summary>
/// <param name="attendanceIssueChoose"></param>
/// <returns></returns>
[
HttpPost
]
[
Route
(
"issue/choose"
)]
public
ApiResponse
ChooseStatistics
(
AttendanceIssueChoose
attendanceIssueChoose
)
{
var
realName
=
claim
.
GetUserClaim
(
JwtClaimTypes
.
RealName
);
return
_attendanceService
.
ChooseStatistics
(
attendanceIssueChoose
,
realName
);
}
///// <summary>
///// 最终考勤结果驳回或确认无误((批量操作)
///// </summary>
///// <param name="allotId"></param>
///// <param name="issueid">选择id</param>
///// <param name="state">操作类型 确认 = 2,驳回 = 3,</param>
///// <returns></returns>
//[HttpPost]
//[Route("issue/choose")]
//public ApiResponse ChooseStatistics(int allotId, int[] issueid, Attendance.State state, string remarks)
//{
// var realName = claim.GetUserClaim(JwtClaimTypes.RealName);
// return _attendanceService.ChooseStatistics(allotId, issueid, state, realName, remarks);
//}
#
endregion
}
}
}
}
\ No newline at end of file
performance/Performance.Api/Controllers/ReportController.cs
View file @
d7a54454
...
@@ -368,13 +368,10 @@ public IActionResult WholeHospitalGrantSummaryDownload([FromBody] HospitalGrantS
...
@@ -368,13 +368,10 @@ public IActionResult WholeHospitalGrantSummaryDownload([FromBody] HospitalGrantS
string
.
IsNullOrEmpty
(
request
.
EndTime
)
||
!
DateTime
.
TryParse
(
request
.
EndTime
,
out
edate
))
string
.
IsNullOrEmpty
(
request
.
EndTime
)
||
!
DateTime
.
TryParse
(
request
.
EndTime
,
out
edate
))
throw
new
PerformanceException
(
"请输入正确的时间"
);
throw
new
PerformanceException
(
"请输入正确的时间"
);
var
resetGroupBy
=
request
.
GroupBy
.
Copy
();
var
list
=
_computeService
.
GetAllComputeViewByDateAndTotal
(
"view_allot_sign_emp"
,
request
);
var
list
=
_computeService
.
GetAllComputeViewByDateAndTotal
(
"view_allot_sign_emp"
,
request
);
if
(
null
==
list
)
if
(
null
==
list
)
throw
new
PerformanceException
(
"当前绩效记录不存在"
);
throw
new
PerformanceException
(
"当前绩效记录不存在"
);
request
.
GroupBy
=
resetGroupBy
;
List
<
string
>
headlist
=
new
List
<
string
>();
List
<
string
>
headlist
=
new
List
<
string
>();
foreach
(
var
item
in
request
.
GroupBy
.
Union
(
request
.
SumBy
).
ToList
())
foreach
(
var
item
in
request
.
GroupBy
.
Union
(
request
.
SumBy
).
ToList
())
...
@@ -496,12 +493,11 @@ public IActionResult WholeHospitalAccountingGrantSummaryDownload([FromBody] Hosp
...
@@ -496,12 +493,11 @@ public IActionResult WholeHospitalAccountingGrantSummaryDownload([FromBody] Hosp
string
.
IsNullOrEmpty
(
request
.
EndTime
)
||
!
DateTime
.
TryParse
(
request
.
EndTime
,
out
edate
))
string
.
IsNullOrEmpty
(
request
.
EndTime
)
||
!
DateTime
.
TryParse
(
request
.
EndTime
,
out
edate
))
throw
new
PerformanceException
(
"请输入正确的时间"
);
throw
new
PerformanceException
(
"请输入正确的时间"
);
var
list
=
_computeService
.
GetAllComputeViewByDateAndTotal
(
"view_allot_sign_dept"
,
request
);
var
list
=
_computeService
.
GetAllComputeViewByDateAndTotal
(
"view_allot_sign_dept"
,
request
);
if
(
null
==
list
)
if
(
null
==
list
)
throw
new
PerformanceException
(
"当前绩效记录不存在"
);
throw
new
PerformanceException
(
"当前绩效记录不存在"
);
List
<
string
>
headlist
=
new
List
<
string
>();
List
<
string
>
headlist
=
new
List
<
string
>()
{
}
;
foreach
(
var
item
in
request
.
GroupBy
.
Union
(
request
.
SumBy
).
ToList
())
foreach
(
var
item
in
request
.
GroupBy
.
Union
(
request
.
SumBy
).
ToList
())
{
{
...
@@ -619,7 +615,6 @@ public IActionResult WholeHospitalFinanceGrantSummaryDownload([FromBody] Hospita
...
@@ -619,7 +615,6 @@ public IActionResult WholeHospitalFinanceGrantSummaryDownload([FromBody] Hospita
string
.
IsNullOrEmpty
(
request
.
EndTime
)
||
!
DateTime
.
TryParse
(
request
.
EndTime
,
out
edate
))
string
.
IsNullOrEmpty
(
request
.
EndTime
)
||
!
DateTime
.
TryParse
(
request
.
EndTime
,
out
edate
))
throw
new
PerformanceException
(
"请输入正确的时间"
);
throw
new
PerformanceException
(
"请输入正确的时间"
);
var
list
=
_computeService
.
GetAllComputeViewByDateAndTotal
(
"view_allot_sign_emp_finance"
,
request
);
var
list
=
_computeService
.
GetAllComputeViewByDateAndTotal
(
"view_allot_sign_emp_finance"
,
request
);
if
(
null
==
list
)
if
(
null
==
list
)
throw
new
PerformanceException
(
"当前绩效记录不存在"
);
throw
new
PerformanceException
(
"当前绩效记录不存在"
);
...
...
performance/Performance.Api/Controllers/SecondAllotController.cs
View file @
d7a54454
...
@@ -199,7 +199,7 @@ public ApiResponse OtherAutoComplete([FromBody] SecondEmpRequest request)
...
@@ -199,7 +199,7 @@ public ApiResponse OtherAutoComplete([FromBody] SecondEmpRequest request)
public
ApiResponse
<
List
<
SecondTempResponse
>>
Temp
([
FromBody
]
AllotDeptRequest
request
)
public
ApiResponse
<
List
<
SecondTempResponse
>>
Temp
([
FromBody
]
AllotDeptRequest
request
)
{
{
var
userId
=
claimService
.
GetUserId
();
var
userId
=
claimService
.
GetUserId
();
var
result
=
secondAllotService
.
GetTemp
(
request
.
HospitalId
,
request
.
Department
,
userId
);
var
result
=
secondAllotService
.
GetTemp
(
request
.
HospitalId
,
request
.
UnitType
,
request
.
Department
,
userId
);
return
new
ApiResponse
<
List
<
SecondTempResponse
>>(
ResponseType
.
OK
,
result
);
return
new
ApiResponse
<
List
<
SecondTempResponse
>>(
ResponseType
.
OK
,
result
);
}
}
...
...
performance/Performance.Api/wwwroot/Performance.Api.xml
View file @
d7a54454
...
@@ -15,7 +15,7 @@
...
@@ -15,7 +15,7 @@
{
{
"logintype": 2,
"logintype": 2,
"account": "admin",
"account": "admin",
"password": "
e10adc3949ba59abbe56e057f20f883e
",
"password": "
b59c67bf196a4758191e42f76670ceba
",
"appname": "string",
"appname": "string",
"device": "web"
"device": "web"
}
}
...
@@ -302,13 +302,6 @@
...
@@ -302,13 +302,6 @@
记录创建、下发、归档、上传绩效
记录创建、下发、归档、上传绩效
</summary>
</summary>
</member>
</member>
<member
name=
"M:Performance.Api.Controllers.AttendanceController.GetAttendance(System.Int32)"
>
<summary>
查询绩效考勤记录
</summary>
<param
name=
"allotId"
></param>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.AttendanceController.GetCallIn(System.Int32)"
>
<member
name=
"M:Performance.Api.Controllers.AttendanceController.GetCallIn(System.Int32)"
>
<summary>
<summary>
查询绩效调动记录
查询绩效调动记录
...
@@ -385,13 +378,6 @@
...
@@ -385,13 +378,6 @@
<param
name=
"allotId"
></param>
<param
name=
"allotId"
></param>
<returns></returns>
<returns></returns>
</member>
</member>
<member
name=
"M:Performance.Api.Controllers.AttendanceController.DownloadAttendance(System.Int32)"
>
<summary>
初始考勤记录下载
</summary>
<param
name=
"allotId"
></param>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.AttendanceController.DownloadVacation(System.Int32)"
>
<member
name=
"M:Performance.Api.Controllers.AttendanceController.DownloadVacation(System.Int32)"
>
<summary>
<summary>
考勤记录下载
考勤记录下载
...
@@ -413,6 +399,58 @@
...
@@ -413,6 +399,58 @@
<param
name=
"allotId"
></param>
<param
name=
"allotId"
></param>
<returns></returns>
<returns></returns>
</member>
</member>
<member
name=
"M:Performance.Api.Controllers.AttendanceController.DownloadAuditDetail(System.Int32,System.String,System.String,System.String)"
>
<summary>
科室确认详情(已下发结果展示列表)下载
</summary>
<param
name=
"allotId"
></param>
<param
name=
"unitType"
>
人员类别
</param>
<param
name=
"accountingUnit"
>
核算单元
</param>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.AttendanceController.AuditList(System.Int32,System.String,System.String,Performance.DtoModels.Attendance.State)"
>
<summary>
科室确认列表
</summary>
<param
name=
"allotId"
>
绩效Id
</param>
<param
name=
"unitType"
>
人员类别
</param>
<param
name=
"accountingUnit"
>
核算单元
</param>
<param
name=
"state"
>
操作类型 全部=0,未确认 = 1,确认 = 2,驳回 = 3,
</param>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.AttendanceController.AuditDetail(System.Int32,System.String,System.String,System.String)"
>
<summary>
科室确认详情(已下发结果展示列表)
</summary>
<param
name=
"allotId"
>
绩效Id
</param>
<param
name=
"unitType"
>
人员类别
</param>
<param
name=
"accountingUnit"
>
核算单元
</param>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.AttendanceController.PreConfirmationDisplay(System.Int32,System.String,System.String,Performance.DtoModels.Attendance.OperationType)"
>
<summary>
最终考勤结果下发(预确认显示)
</summary>
<param
name=
"allotId"
>
绩效Id
</param>
<param
name=
"unitType"
>
人员类别
</param>
<param
name=
"accountingUnit"
>
核算单元
</param>
<param
name=
"state"
>
操作类型 新增 = 1, 修改 = 2, 删除 = 3,
</param>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.AttendanceController.IssueStatistics(System.Int32)"
>
<summary>
最终考勤结果下发
</summary>
<param
name=
"allotId"
></param>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.AttendanceController.ChooseStatistics(Performance.DtoModels.Response.AttendanceIssueChoose)"
>
<summary>
最终考勤结果驳回或确认无误((批量操作)
</summary>
<param
name=
"attendanceIssueChoose"
></param>
<returns></returns>
</member>
<member
name=
"M:Performance.Api.Controllers.BudgetController.Query(Performance.DtoModels.Request.BudgetRequest)"
>
<member
name=
"M:Performance.Api.Controllers.BudgetController.Query(Performance.DtoModels.Request.BudgetRequest)"
>
<summary>
<summary>
预算管理查询(包含金额、占比)
预算管理查询(包含金额、占比)
...
...
performance/Performance.Api/wwwroot/Performance.DtoModels.xml
View file @
d7a54454
...
@@ -252,6 +252,66 @@
...
@@ -252,6 +252,66 @@
表示权限范围,如果与客户端申请的范围一致。
表示权限范围,如果与客户端申请的范围一致。
</summary>
</summary>
</member>
</member>
<member
name=
"P:Performance.DtoModels.PerAttendanceIssueDto.UnitType"
>
<summary>
人员类别
</summary>
</member>
<member
name=
"P:Performance.DtoModels.PerAttendanceIssueDto.AccountingUnit"
>
<summary>
核算单元
</summary>
</member>
<member
name=
"P:Performance.DtoModels.PerAttendanceIssueDto.PersonnelNumber"
>
<summary>
工号
</summary>
</member>
<member
name=
"P:Performance.DtoModels.PerAttendanceIssueDto.PersonnelName"
>
<summary>
姓名
</summary>
</member>
<member
name=
"P:Performance.DtoModels.PerAttendanceIssueDto.BeginDate"
>
<summary>
在科开始时间
</summary>
</member>
<member
name=
"P:Performance.DtoModels.PerAttendanceIssueDto.EndDate"
>
<summary>
在科结束时间
</summary>
</member>
<member
name=
"P:Performance.DtoModels.PerAttendanceIssueDto.WorkFullDays"
>
<summary>
全勤天数
</summary>
</member>
<member
name=
"P:Performance.DtoModels.PerAttendanceIssueDto.AttendanceDays"
>
<summary>
出勤天数
</summary>
</member>
<member
name=
"P:Performance.DtoModels.PerAttendanceIssueDto.DeductionDays"
>
<summary>
核减天数
</summary>
</member>
<member
name=
"P:Performance.DtoModels.PerAttendanceIssueDto.NoDeductionDays"
>
<summary>
不核减天数
</summary>
</member>
<member
name=
"P:Performance.DtoModels.PerAttendanceIssueDto.OperationType"
>
<summary>
操作类型 新增 = 1, 修改 = 2, 删除 = 3,
</summary>
</member>
<member
name=
"P:Performance.DtoModels.PerAttendanceIssueDto.Remarks"
>
<summary>
备注
</summary>
</member>
<member
name=
"P:Performance.DtoModels.PerAgainData.RowNumber"
>
<member
name=
"P:Performance.DtoModels.PerAgainData.RowNumber"
>
<summary>
<summary>
行号
行号
...
@@ -2838,6 +2898,216 @@
...
@@ -2838,6 +2898,216 @@
科室
科室
</summary>
</summary>
</member>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditDetail.AttendanceIsueId"
>
<summary>
考勤结果id(确认or驳回调用)
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditDetail.AllotId"
>
<summary>
绩效Id
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditDetail.Code"
>
<summary>
核算单元编码
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditDetail.UnitType"
>
<summary>
人员类别
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditDetail.AccountingUnit"
>
<summary>
核算单元
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditDetail.PersonnelNumber"
>
<summary>
工号
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditDetail.PersonnelName"
>
<summary>
姓名
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditDetail.BeginDate"
>
<summary>
在科开始时间
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditDetail.EndDate"
>
<summary>
在科结束时间
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditDetail.WorkFullDays"
>
<summary>
全勤天数
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditDetail.AttendanceDays"
>
<summary>
出勤天数
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditDetail.DeductionDays"
>
<summary>
核减天数
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditDetail.NoDeductionDays"
>
<summary>
不核减天数
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditDetail.State"
>
<summary>
状态 未确认 = 1,确认 = 2,驳回 = 3
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditDetail.ConfirmUser"
>
<summary>
确定用户
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditDetail.ConfirmTime"
>
<summary>
确定时间
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditDetail.Remarks"
>
<summary>
备注
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditDetails.Value"
>
<summary>
请假天数
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditDetails.Title"
>
<summary>
考勤类型
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditDetails.Remark"
>
<summary>
备注
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditList.AttendanceIsueId"
>
<summary>
考勤结果id
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditList.Code"
>
<summary>
编码
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditList.UnitType"
>
<summary>
核算组别
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditList.AccountingUnit"
>
<summary>
核算单元
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditList.Count"
>
<summary>
总下发数
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditList.ConfirmCount"
>
<summary>
确认数
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditList.RejectCount"
>
<summary>
驳回数
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditList.OperationTime"
>
<summary>
操作时间
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditList.OperationUser"
>
<summary>
操作人
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditList.State"
>
<summary>
状态 未确认 = 1,确认 = 2,驳回 = 3
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceAuditList.Remarks"
>
<summary>
状态描述
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceIssueChoose.AllotId"
>
<summary>
绩效Id
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceIssueChoose.Issueid"
>
<summary>
删除id
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceIssueChoose.state"
>
<summary>
操作类型
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.AttendanceIssueChoose.Remarks"
>
<summary>
备注
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.CollectPermission.HeadName"
>
<summary>
列头名称
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.CollectPermission.BanChange"
>
<summary>
禁止修改
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.CollectPermission.Readnoly"
>
<summary>
0 可读可写 1 只读
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.CollectPermission.Visible"
>
<summary>
是否可见 0 不可见 1 可见
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.CollectPermission.AttachLast"
>
<summary>
是否附带上次绩效 0 不附带 1 附带
</summary>
</member>
<member
name=
"P:Performance.DtoModels.AttendanceStatistics.Code"
>
<summary>
核算单元编码
</summary>
</member>
<member
name=
"P:Performance.DtoModels.AttendanceStatistics.AllotID"
>
<summary>
</summary>
</member>
<member
name=
"P:Performance.DtoModels.AttendanceStatistics.UnitType"
>
<member
name=
"P:Performance.DtoModels.AttendanceStatistics.UnitType"
>
<summary>
<summary>
核算组别
核算组别
...
@@ -2873,6 +3143,11 @@
...
@@ -2873,6 +3143,11 @@
在科结束时间
在科结束时间
</summary>
</summary>
</member>
</member>
<member
name=
"P:Performance.DtoModels.AttendanceStatistics.AttendanceDays"
>
<summary>
出勤天数
</summary>
</member>
<member
name=
"P:Performance.DtoModels.AttendanceStatisticsDetial.Value"
>
<member
name=
"P:Performance.DtoModels.AttendanceStatisticsDetial.Value"
>
<summary>
<summary>
请假天数
请假天数
...
@@ -3068,31 +3343,6 @@
...
@@ -3068,31 +3343,6 @@
医院总收支结余
医院总收支结余
</summary>
</summary>
</member>
</member>
<member
name=
"P:Performance.DtoModels.Response.CollectPermission.HeadName"
>
<summary>
列头名称
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.CollectPermission.BanChange"
>
<summary>
禁止修改
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.CollectPermission.Readnoly"
>
<summary>
0 可读可写 1 只读
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.CollectPermission.Visible"
>
<summary>
是否可见 0 不可见 1 可见
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Response.CollectPermission.AttachLast"
>
<summary>
是否附带上次绩效 0 不附带 1 附带
</summary>
</member>
<member
name=
"P:Performance.DtoModels.ComputeResponse.Source"
>
<member
name=
"P:Performance.DtoModels.ComputeResponse.Source"
>
<summary>
<summary>
来源
来源
...
@@ -4308,6 +4558,11 @@
...
@@ -4308,6 +4558,11 @@
用户科室
用户科室
</summary>
</summary>
</member>
</member>
<member
name=
"P:Performance.DtoModels.UserIdentity.UnitType"
>
<summary>
核算组别
</summary>
</member>
<member
name=
"P:Performance.DtoModels.UserIdentity.IsInitialPassword"
>
<member
name=
"P:Performance.DtoModels.UserIdentity.IsInitialPassword"
>
<summary>
<summary>
初始密码 1 初始 2 改过
初始密码 1 初始 2 改过
...
...
performance/Performance.Api/wwwroot/Performance.EntityModels.xml
View file @
d7a54454
...
@@ -6118,6 +6118,101 @@
...
@@ -6118,6 +6118,101 @@
修改时间
修改时间
</summary>
</summary>
</member>
</member>
<member
name=
"P:Performance.EntityModels.Entity.per_attendance_issue.HospitalId"
>
<summary>
医院Id
</summary>
</member>
<member
name=
"P:Performance.EntityModels.Entity.per_attendance_issue.AllotId"
>
<summary>
绩效Id
</summary>
</member>
<member
name=
"P:Performance.EntityModels.Entity.per_attendance_issue.Code"
>
<summary>
核算单元编码
</summary>
</member>
<member
name=
"P:Performance.EntityModels.Entity.per_attendance_issue.UnitType"
>
<summary>
人员类别
</summary>
</member>
<member
name=
"P:Performance.EntityModels.Entity.per_attendance_issue.AccountingUnit"
>
<summary>
核算单元
</summary>
</member>
<member
name=
"P:Performance.EntityModels.Entity.per_attendance_issue.PersonnelNumber"
>
<summary>
工号
</summary>
</member>
<member
name=
"P:Performance.EntityModels.Entity.per_attendance_issue.PersonnelName"
>
<summary>
姓名
</summary>
</member>
<member
name=
"P:Performance.EntityModels.Entity.per_attendance_issue.BeginDate"
>
<summary>
在科开始时间
</summary>
</member>
<member
name=
"P:Performance.EntityModels.Entity.per_attendance_issue.EndDate"
>
<summary>
在科结束时间
</summary>
</member>
<member
name=
"P:Performance.EntityModels.Entity.per_attendance_issue.WorkFullDays"
>
<summary>
全勤天数
</summary>
</member>
<member
name=
"P:Performance.EntityModels.Entity.per_attendance_issue.AttendanceDays"
>
<summary>
出勤天数
</summary>
</member>
<member
name=
"P:Performance.EntityModels.Entity.per_attendance_issue.DeductionDays"
>
<summary>
核减天数
</summary>
</member>
<member
name=
"P:Performance.EntityModels.Entity.per_attendance_issue.NoDeductionDays"
>
<summary>
不核减天数
</summary>
</member>
<member
name=
"P:Performance.EntityModels.Entity.per_attendance_issue.State"
>
<summary>
状态 未确认 = 1,确认 = 2,驳回 = 3
</summary>
</member>
<member
name=
"P:Performance.EntityModels.Entity.per_attendance_issue.CreateUser"
>
<summary>
创建用户
</summary>
</member>
<member
name=
"P:Performance.EntityModels.Entity.per_attendance_issue.CreateTime"
>
<summary>
创建时间
</summary>
</member>
<member
name=
"P:Performance.EntityModels.Entity.per_attendance_issue.ConfirmUser"
>
<summary>
确定用户
</summary>
</member>
<member
name=
"P:Performance.EntityModels.Entity.per_attendance_issue.ConfirmTime"
>
<summary>
确定时间
</summary>
</member>
<member
name=
"P:Performance.EntityModels.Entity.per_attendance_issue.Remarks"
>
<summary>
备注
</summary>
</member>
<member
name=
"P:Performance.EntityModels.Entity.per_attendance_type.IsDeduction"
>
<member
name=
"P:Performance.EntityModels.Entity.per_attendance_type.IsDeduction"
>
<summary>
<summary>
是否核减出勤 1 核减 2 不核减
是否核减出勤 1 核减 2 不核减
...
...
performance/Performance.DtoModels/AutoMapper/AutoMapperConfigs.cs
View file @
d7a54454
using
AutoMapper
;
using
AutoMapper
;
using
Performance.DtoModels.Request
;
using
Performance.DtoModels.Request
;
using
Performance.EntityModels
;
using
Performance.EntityModels
;
using
Performance.EntityModels.Entity
;
using
Performance.Infrastructure
;
using
Performance.Infrastructure
;
using
System.Linq
;
using
System.Linq
;
...
@@ -275,7 +276,7 @@ public AutoMapperConfigs()
...
@@ -275,7 +276,7 @@ public AutoMapperConfigs()
CreateMap
<
cof_workitem
,
WorkItemRequest
>()
CreateMap
<
cof_workitem
,
WorkItemRequest
>()
.
ReverseMap
();
.
ReverseMap
();
CreateMap
<
cof_again
,
CofAgainRequest
>().
ReverseMap
();
CreateMap
<
cof_again
,
CofAgainRequest
>().
ReverseMap
();
}
}
}
}
}
}
performance/Performance.DtoModels/Enum.cs
View file @
d7a54454
...
@@ -117,6 +117,20 @@ public enum Deduction
...
@@ -117,6 +117,20 @@ public enum Deduction
核减
=
1
,
核减
=
1
,
不核减
=
2
,
不核减
=
2
,
}
}
public
enum
State
{
全部
=
0
,
未确认
=
1
,
确认
=
2
,
驳回
=
3
,
}
public
enum
OperationType
{
全部
=
0
,
新增
=
1
,
修改
=
2
,
删除
=
3
,
}
}
}
public
class
SecondAllot
public
class
SecondAllot
...
...
performance/Performance.DtoModels/PerAttendanceIssueDto.cs
0 → 100644
View file @
d7a54454
using
Performance.EntityModels.Entity
;
using
System
;
using
System.Collections.Generic
;
using
System.ComponentModel.DataAnnotations
;
using
System.Linq
;
using
System.Text
;
using
System.Threading.Tasks
;
namespace
Performance.DtoModels
{
public
class
PerAttendanceIssueDto
{
public
PerAttendanceIssueDto
()
{
}
public
PerAttendanceIssueDto
(
AttendanceStatistics
item
)
{
Code
=
item
.
Code
;
UnitType
=
item
.
UnitType
;
AccountingUnit
=
item
.
AccountingUnit
;
PersonnelNumber
=
item
.
PersonnelNumber
;
PersonnelName
=
item
.
PersonnelName
;
BeginDate
=
item
.
BeginDate
;
EndDate
=
item
.
EndDate
;
DeductionDays
=
item
.
Detial
.
Where
(
w
=>
!
w
.
Remark
.
Contains
(
"不核减"
)).
Sum
(
w
=>
w
.
Value
);
NoDeductionDays
=
item
.
Detial
.
Sum
(
w
=>
w
.
Value
)
-
item
.
Detial
.
Where
(
w
=>
!
w
.
Remark
.
Contains
(
"不核减"
)).
Sum
(
w
=>
w
.
Value
);
AttendanceDays
=
item
.
AttendanceDays
;
WorkFullDays
=
item
.
AttendanceDays
+
item
.
Detial
.
Where
(
w
=>
!
w
.
Remark
.
Contains
(
"不核减"
)).
Sum
(
w
=>
w
.
Value
);
OperationType
=
(
int
)
Attendance
.
OperationType
.
新增
;
Remarks
=
""
;
}
public
PerAttendanceIssueDto
(
per_attendance_issue
item
)
{
Code
=
item
.
Code
;
UnitType
=
item
.
UnitType
;
AccountingUnit
=
item
.
AccountingUnit
;
PersonnelNumber
=
item
.
PersonnelNumber
;
PersonnelName
=
item
.
PersonnelName
;
BeginDate
=
item
.
BeginDate
;
EndDate
=
item
.
EndDate
;
DeductionDays
=
item
.
DeductionDays
;
NoDeductionDays
=
item
.
NoDeductionDays
;
AttendanceDays
=
item
.
AttendanceDays
;
WorkFullDays
=
item
.
WorkFullDays
;
OperationType
=
(
int
)
Attendance
.
OperationType
.
删除
;
Remarks
=
"删除数据"
;
}
//public int HospitalId { get; set; } //医院Id
//public int AllotId { get; set; } //绩效Id
public
string
Code
{
get
;
set
;
}
//核算单元编码
/// <summary>
/// 人员类别
/// </summary>
public
string
UnitType
{
get
;
set
;
}
/// <summary>
/// 核算单元
/// </summary>
public
string
AccountingUnit
{
get
;
set
;
}
/// <summary>
/// 工号
/// </summary>
public
string
PersonnelNumber
{
get
;
set
;
}
/// <summary>
/// 姓名
/// </summary>
public
string
PersonnelName
{
get
;
set
;
}
/// <summary>
/// 在科开始时间
/// </summary>
public
DateTime
?
BeginDate
{
get
;
set
;
}
/// <summary>
/// 在科结束时间
/// </summary>
public
DateTime
?
EndDate
{
get
;
set
;
}
/// <summary>
/// 全勤天数
/// </summary>
public
int
WorkFullDays
{
get
;
set
;
}
/// <summary>
/// 出勤天数
/// </summary>
public
int
AttendanceDays
{
get
;
set
;
}
/// <summary>
/// 核减天数
/// </summary>
public
int
DeductionDays
{
get
;
set
;
}
/// <summary>
/// 不核减天数
/// </summary>
public
int
NoDeductionDays
{
get
;
set
;
}
/// <summary>
/// 操作类型 新增 = 1, 修改 = 2, 删除 = 3,
/// </summary>
public
int
OperationType
{
get
;
set
;
}
/// <summary>
/// 备注
/// </summary>
public
string
Remarks
{
get
;
set
;
}
}
}
performance/Performance.DtoModels/Request/AllotDeptRequest.cs
View file @
d7a54454
...
@@ -10,6 +10,8 @@ public class AllotDeptRequest
...
@@ -10,6 +10,8 @@ public class AllotDeptRequest
public
int
HospitalId
{
get
;
set
;
}
public
int
HospitalId
{
get
;
set
;
}
public
string
?
UnitType
{
get
;
set
;
}
public
string
Department
{
get
;
set
;
}
public
string
Department
{
get
;
set
;
}
}
}
}
}
performance/Performance.DtoModels/Response/AttendanceAuditDetail.cs
0 → 100644
View file @
d7a54454
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
using
System.Threading.Tasks
;
namespace
Performance.DtoModels.Response
{
public
class
AttendanceAuditDetail
{
/// <summary>
/// 考勤结果id(确认or驳回调用)
/// </summary>
public
int
AttendanceIsueId
{
get
;
set
;
}
/// <summary>
/// 绩效Id
/// </summary>
public
int
AllotId
{
get
;
set
;
}
/// <summary>
/// 核算单元编码
/// </summary>
public
string
Code
{
get
;
set
;
}
/// <summary>
/// 人员类别
/// </summary>
public
string
UnitType
{
get
;
set
;
}
/// <summary>
/// 核算单元
/// </summary>
public
string
AccountingUnit
{
get
;
set
;
}
/// <summary>
/// 工号
/// </summary>
public
string
PersonnelNumber
{
get
;
set
;
}
/// <summary>
/// 姓名
/// </summary>
public
string
PersonnelName
{
get
;
set
;
}
/// <summary>
/// 在科开始时间
/// </summary>
public
DateTime
?
BeginDate
{
get
;
set
;
}
/// <summary>
/// 在科结束时间
/// </summary>
public
DateTime
?
EndDate
{
get
;
set
;
}
/// <summary>
/// 全勤天数
/// </summary>
public
int
WorkFullDays
{
get
;
set
;
}
/// <summary>
/// 出勤天数
/// </summary>
public
int
AttendanceDays
{
get
;
set
;
}
/// <summary>
/// 核减天数
/// </summary>
public
int
DeductionDays
{
get
;
set
;
}
/// <summary>
/// 不核减天数
/// </summary>
public
int
NoDeductionDays
{
get
;
set
;
}
/// <summary>
/// 状态 未确认 = 1,确认 = 2,驳回 = 3
/// </summary>
public
int
State
{
get
;
set
;
}
/// <summary>
/// 确定用户
/// </summary>
public
string
ConfirmUser
{
get
;
set
;
}
/// <summary>
/// 确定时间
/// </summary>
public
DateTime
?
ConfirmTime
{
get
;
set
;
}
public
List
<
AttendanceAuditDetails
>
Detial
{
get
;
set
;
}
/// <summary>
/// 备注
/// </summary>
public
string
Remarks
{
get
;
set
;
}
}
public
class
AttendanceAuditDetails
{
/// <summary>
/// 请假天数
/// </summary>
public
int
Value
{
get
;
set
;
}
/// <summary>
/// 考勤类型
/// </summary>
public
string
Title
{
get
;
set
;
}
/// <summary>
/// 备注
/// </summary>
public
string
Remark
{
get
;
set
;
}
}
}
performance/Performance.DtoModels/Response/AttendanceAuditList.cs
0 → 100644
View file @
d7a54454
using
System
;
namespace
Performance.DtoModels.Response
{
public
class
AttendanceAuditList
{
/// <summary>
/// 考勤结果id
/// </summary>
public
int
AttendanceIsueId
{
get
;
set
;
}
/// <summary>
/// 编码
/// </summary>
public
string
Code
{
get
;
set
;
}
/// <summary>
/// 核算组别
/// </summary>
public
string
UnitType
{
get
;
set
;
}
/// <summary>
/// 核算单元
/// </summary>
public
string
AccountingUnit
{
get
;
set
;
}
/// <summary>
/// 总下发数
/// </summary>
public
int
Count
{
get
;
set
;
}
/// <summary>
/// 确认数
/// </summary>
public
int
ConfirmCount
{
get
;
set
;
}
/// <summary>
/// 驳回数
/// </summary>
public
int
RejectCount
{
get
;
set
;
}
/// <summary>
/// 操作时间
/// </summary>
public
DateTime
?
OperationTime
{
get
;
set
;
}
/// <summary>
/// 操作人
/// </summary>
public
string
OperationUser
{
get
;
set
;
}
/// <summary>
/// 状态 未确认 = 1,确认 = 2,驳回 = 3
/// </summary>
public
int
State
{
get
;
set
;
}
/// <summary>
/// 状态描述
/// </summary>
public
string
Remarks
{
get
;
set
;
}
}
}
performance/Performance.DtoModels/Response/AttendanceIssueChoose.cs
0 → 100644
View file @
d7a54454
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
using
System.Threading.Tasks
;
namespace
Performance.DtoModels.Response
{
public
class
AttendanceIssueChoose
{
/// <summary>
/// 绩效Id
/// </summary>
public
int
AllotId
{
get
;
set
;
}
/// <summary>
/// 删除id
/// </summary>
public
int
[]
Issueid
{
get
;
set
;
}
/// <summary>
/// 操作类型
/// </summary>
public
Attendance
.
State
state
{
get
;
set
;
}
/// <summary>
/// 备注
/// </summary>
public
string
Remarks
{
get
;
set
;
}
}
}
performance/Performance.DtoModels/Response/AttendanceStatistics.cs
View file @
d7a54454
...
@@ -5,6 +5,13 @@ namespace Performance.DtoModels
...
@@ -5,6 +5,13 @@ namespace Performance.DtoModels
{
{
public
class
AttendanceStatistics
public
class
AttendanceStatistics
{
{
/// <summary>
/// 核算单元编码
/// </summary>
public
string
Code
{
get
;
set
;
}
/// <summary>
///
/// </summary>
public
int
AllotID
{
get
;
set
;
}
public
int
AllotID
{
get
;
set
;
}
/// <summary>
/// <summary>
/// 核算组别
/// 核算组别
...
@@ -36,6 +43,9 @@ public class AttendanceStatistics
...
@@ -36,6 +43,9 @@ public class AttendanceStatistics
public
DateTime
EndDate
{
get
;
set
;
}
public
DateTime
EndDate
{
get
;
set
;
}
public
List
<
AttendanceStatisticsDetial
>
Detial
{
get
;
set
;
}
public
List
<
AttendanceStatisticsDetial
>
Detial
{
get
;
set
;
}
/// <summary>
/// 出勤天数
/// </summary>
public
int
AttendanceDays
{
get
;
set
;
}
public
int
AttendanceDays
{
get
;
set
;
}
}
}
...
...
performance/Performance.DtoModels/Response/UserIdentity.cs
View file @
d7a54454
...
@@ -23,6 +23,10 @@ public class UserIdentity
...
@@ -23,6 +23,10 @@ public class UserIdentity
/// 用户科室
/// 用户科室
/// </summary>
/// </summary>
public
string
Department
{
get
;
set
;
}
public
string
Department
{
get
;
set
;
}
/// <summary>
/// 核算组别
/// </summary>
public
string
UnitType
{
get
;
set
;
}
public
List
<
HospitalResponse
>
Hospital
{
get
;
set
;
}
public
List
<
HospitalResponse
>
Hospital
{
get
;
set
;
}
public
List
<
RoleResponse
>
Role
{
get
;
set
;
}
public
List
<
RoleResponse
>
Role
{
get
;
set
;
}
/// <summary>
/// <summary>
...
...
performance/Performance.EntityModels/Context/PerformanceDbContext.cs
View file @
d7a54454
...
@@ -254,6 +254,7 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options)
...
@@ -254,6 +254,7 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options)
public
virtual
DbSet
<
sys_user_role
>
sys_user_role
{
get
;
set
;
}
public
virtual
DbSet
<
sys_user_role
>
sys_user_role
{
get
;
set
;
}
public
virtual
DbSet
<
sys_version
>
sys_version
{
get
;
set
;
}
public
virtual
DbSet
<
sys_version
>
sys_version
{
get
;
set
;
}
public
virtual
DbSet
<
per_attendance
>
per_attendance
{
get
;
set
;
}
public
virtual
DbSet
<
per_attendance
>
per_attendance
{
get
;
set
;
}
public
virtual
DbSet
<
per_attendance_issue
>
per_attendance_issue
{
get
;
set
;
}
public
virtual
DbSet
<
per_attendance_type
>
per_attendance_type
{
get
;
set
;
}
public
virtual
DbSet
<
per_attendance_type
>
per_attendance_type
{
get
;
set
;
}
public
virtual
DbSet
<
per_attendance_vacation
>
per_attendance_vacation
{
get
;
set
;
}
public
virtual
DbSet
<
per_attendance_vacation
>
per_attendance_vacation
{
get
;
set
;
}
public
virtual
DbSet
<
per_allot_action
>
per_allot_action
{
get
;
set
;
}
public
virtual
DbSet
<
per_allot_action
>
per_allot_action
{
get
;
set
;
}
...
...
performance/Performance.EntityModels/Entity/per_attendance_issue.cs
0 → 100644
View file @
d7a54454
using
System
;
using
System.Collections.Generic
;
using
System.ComponentModel.DataAnnotations
;
using
System.ComponentModel.DataAnnotations.Schema
;
using
System.Linq
;
using
System.Text
;
using
System.Threading.Tasks
;
namespace
Performance.EntityModels.Entity
{
[
Table
(
"per_attendance_issue"
)]
public
class
per_attendance_issue
{
[
Key
]
public
int
Id
{
get
;
set
;
}
/// <summary>
/// 医院Id
/// </summary>
public
int
HospitalId
{
get
;
set
;
}
/// <summary>
/// 绩效Id
/// </summary>
public
int
AllotId
{
get
;
set
;
}
/// <summary>
/// 核算单元编码
/// </summary>
public
string
Code
{
get
;
set
;
}
/// <summary>
/// 人员类别
/// </summary>
public
string
UnitType
{
get
;
set
;
}
///// <summary>
///// 科室名称
///// </summary>
//public string Department { get; set; }
/// <summary>
/// 核算单元
/// </summary>
public
string
AccountingUnit
{
get
;
set
;
}
/// <summary>
/// 工号
/// </summary>
public
string
PersonnelNumber
{
get
;
set
;
}
/// <summary>
/// 姓名
/// </summary>
public
string
PersonnelName
{
get
;
set
;
}
/// <summary>
/// 在科开始时间
/// </summary>
public
DateTime
?
BeginDate
{
get
;
set
;
}
/// <summary>
/// 在科结束时间
/// </summary>
public
DateTime
?
EndDate
{
get
;
set
;
}
/// <summary>
/// 全勤天数
/// </summary>
public
int
WorkFullDays
{
get
;
set
;
}
/// <summary>
/// 出勤天数
/// </summary>
public
int
AttendanceDays
{
get
;
set
;
}
/// <summary>
/// 核减天数
/// </summary>
public
int
DeductionDays
{
get
;
set
;
}
/// <summary>
/// 不核减天数
/// </summary>
public
int
NoDeductionDays
{
get
;
set
;
}
/// <summary>
/// 状态 未确认 = 1,确认 = 2,驳回 = 3
/// </summary>
public
int
State
{
get
;
set
;
}
/// <summary>
/// 创建用户
/// </summary>
public
string
CreateUser
{
get
;
set
;
}
/// <summary>
/// 创建时间
/// </summary>
public
DateTime
?
CreateTime
{
get
;
set
;
}
/// <summary>
/// 确定用户
/// </summary>
public
string
ConfirmUser
{
get
;
set
;
}
/// <summary>
/// 确定时间
/// </summary>
public
DateTime
?
ConfirmTime
{
get
;
set
;
}
/// <summary>
/// 备注
/// </summary>
public
string
Remarks
{
get
;
set
;
}
}
}
performance/Performance.Repository/BaseRepository.cs
View file @
d7a54454
performance/Performance.Repository/PerforPerAllotRepository.cs
View file @
d7a54454
...
@@ -406,5 +406,27 @@ public void Batch(int[] ids, string batch, string batchDate, string bankName)
...
@@ -406,5 +406,27 @@ public void Batch(int[] ids, string batch, string batchDate, string bankName)
throw
;
throw
;
}
}
}
}
/// <summary>
/// 考勤-考勤结果备份
/// </summary>
/// <param name="allot"></param>
public
void
PerAttendanceIssueBackup
(
int
allotId
)
{
using
(
var
connection
=
context
.
Database
.
GetDbConnection
())
{
if
(
connection
.
State
!=
ConnectionState
.
Open
)
connection
.
Open
();
try
{
connection
.
Execute
(
"call proc_attendance_backup(@allotId);"
,
new
{
allotId
},
commandTimeout
:
60
*
60
);
}
catch
(
Exception
)
{
throw
;
}
}
}
}
}
}
}
\ No newline at end of file
performance/Performance.Repository/PerforReportRepository .cs
View file @
d7a54454
...
@@ -435,18 +435,18 @@ public List<dynamic> QueryComputeByDateAndTotal(string viewName, HospitalGrantSu
...
@@ -435,18 +435,18 @@ public List<dynamic> QueryComputeByDateAndTotal(string viewName, HospitalGrantSu
Dictionary
<
string
,
List
<
string
>>
dict
=
new
Dictionary
<
string
,
List
<
string
>>
Dictionary
<
string
,
List
<
string
>>
dict
=
new
Dictionary
<
string
,
List
<
string
>>
{
{
{
"view_allot_sign_emp_group"
,
new
List
<
string
>{
"
hospitalid"
,
"code"
,
"unittype"
,
"accountingunit"
,
"source"
,
"jobnumber"
,
"employeename"
,
"jobtitle"
,
"bankcard"
,
"batch"
,
"jobcategory"
,
"duty"
,
"titleposition"
}
},
{
"view_allot_sign_emp_group"
,
new
List
<
string
>{
"
code"
,
"hospitalid"
,
"unittype"
,
"accountingunit"
,
"source"
,
"jobnumber"
,
"employeename"
,
"jobtitle"
,
"bankcard"
,
"batch"
,
"jobcategory"
,
"duty"
,
"titleposition"
}
},
{
"view_allot_sign_emp_sum"
,
new
List
<
string
>{
"perforsumfee"
,
"performanagementfee"
,
"nightworkperfor"
,
"adjustlaterotherfee"
,
"otherperfor"
,
"hideotherperfor"
,
"shouldgivefee"
,
"reservedratiofee"
,
"realgivefee"
}
},
{
"view_allot_sign_emp_sum"
,
new
List
<
string
>{
"perforsumfee"
,
"performanagementfee"
,
"nightworkperfor"
,
"adjustlaterotherfee"
,
"otherperfor"
,
"hideotherperfor"
,
"shouldgivefee"
,
"reservedratiofee"
,
"realgivefee"
}
},
{
"view_allot_sign_dept_group"
,
new
List
<
string
>{
"
hospitalid"
,
"code"
,
"unittype"
,
"accountingunit"
}
},
{
"view_allot_sign_dept_group"
,
new
List
<
string
>{
"
code"
,
"hospitalid"
,
"unittype"
,
"accountingunit"
}
},
{
"view_allot_sign_dept_sum"
,
new
List
<
string
>{
"perforfee"
,
"workloadfee"
,
"assessbeforeotherfee"
,
"perfortotal"
,
"scoringaverage"
,
"extra"
,
"medicineextra"
,
"materialsextra"
,
"assesslaterotherfee"
,
"assesslaterperfortotal"
,
"adjustfactor"
,
"adjustlaterotherfee"
,
"aprperforamount"
,
"hideaprotherperforamount"
,
"assesslatermanagementfee"
,
"realgivefee"
}
},
{
"view_allot_sign_dept_sum"
,
new
List
<
string
>{
"perforfee"
,
"workloadfee"
,
"assessbeforeotherfee"
,
"perfortotal"
,
"scoringaverage"
,
"extra"
,
"medicineextra"
,
"materialsextra"
,
"assesslaterotherfee"
,
"assesslaterperfortotal"
,
"adjustfactor"
,
"adjustlaterotherfee"
,
"aprperforamount"
,
"hideaprotherperforamount"
,
"assesslatermanagementfee"
,
"realgivefee"
}
},
{
"view_allot_sign_emp_finance_group"
,
new
List
<
string
>{
"
hospitalid"
,
"code
"
,
"unittype"
,
"accountingunit"
,
"jobnumber"
,
"employeename"
,
}
},
{
"view_allot_sign_emp_finance_group"
,
new
List
<
string
>{
"
code"
,
"hospitalid
"
,
"unittype"
,
"accountingunit"
,
"jobnumber"
,
"employeename"
,
}
},
{
"view_allot_sign_emp_finance_sum"
,
new
List
<
string
>{
"perforsumfee"
,
"performanagementfee"
,
"nightworkperfor"
,
"adjustlaterotherfee"
,
"otherperfor"
,
"hideotherperfor"
,
"shouldgivefee"
,
"reservedratiofee"
,
"realgivefee"
}
},
{
"view_allot_sign_emp_finance_sum"
,
new
List
<
string
>{
"perforsumfee"
,
"performanagementfee"
,
"nightworkperfor"
,
"adjustlaterotherfee"
,
"otherperfor"
,
"hideotherperfor"
,
"shouldgivefee"
,
"reservedratiofee"
,
"realgivefee"
}
},
};
};
request
.
GroupBy
.
Remove
(
""
);
if
(
request
.
SumBy
==
null
||
!
request
.
SumBy
.
Any
(
t
=>
!
string
.
IsNullOrEmpty
(
t
)))
request
.
SumBy
=
dict
[
viewName
+
"_sum"
];
if
(
request
.
SumBy
==
null
||
!
request
.
SumBy
.
Any
(
t
=>
!
string
.
IsNullOrEmpty
(
t
)))
request
.
SumBy
=
dict
[
viewName
+
"_sum"
];
if
(
request
.
GroupBy
==
null
||
!
request
.
GroupBy
.
Any
(
t
=>
!
string
.
IsNullOrEmpty
(
t
)))
request
.
GroupBy
=
dict
[
viewName
+
"_group"
];
if
(
request
.
Search
!=
null
&&
request
.
Search
.
Any
(
w
=>
!
string
.
IsNullOrEmpty
(
w
.
Title
)
&&
!
string
.
IsNullOrEmpty
(
w
.
Value
)))
if
(
request
.
Search
!=
null
&&
request
.
Search
.
Any
(
w
=>
!
string
.
IsNullOrEmpty
(
w
.
Title
)
&&
!
string
.
IsNullOrEmpty
(
w
.
Value
)))
{
{
...
...
performance/Performance.Repository/Repository/PerforPerAttendanceIssueRepository.cs
0 → 100644
View file @
d7a54454
using
Performance.EntityModels
;
using
Performance.EntityModels.Entity
;
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
using
System.Threading.Tasks
;
namespace
Performance.Repository.Repository
{
public
partial
class
PerforPerAttendanceIssueRepository
:
PerforRepository
<
per_attendance_issue
>
{
/// <summary>
/// per_attendance_issue Repository
/// </summary>
public
PerforPerAttendanceIssueRepository
(
PerformanceDbContext
context
)
:
base
(
context
)
{
}
}
}
performance/Performance.Services/AttendanceService.cs
View file @
d7a54454
...
@@ -2,10 +2,9 @@
...
@@ -2,10 +2,9 @@
using
Microsoft.Extensions.Logging
;
using
Microsoft.Extensions.Logging
;
using
Newtonsoft.Json
;
using
Newtonsoft.Json
;
using
OfficeOpenXml
;
using
OfficeOpenXml
;
using
OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime
;
using
OfficeOpenXml.Style
;
using
OfficeOpenXml.Style
;
using
Performance.DtoModels
;
using
Performance.DtoModels
;
using
Performance.
EntityModels
;
using
Performance.
DtoModels.Response
;
using
Performance.EntityModels.Entity
;
using
Performance.EntityModels.Entity
;
using
Performance.EntityModels.Other
;
using
Performance.EntityModels.Other
;
using
Performance.Infrastructure
;
using
Performance.Infrastructure
;
...
@@ -15,8 +14,6 @@
...
@@ -15,8 +14,6 @@
using
System.Collections.Generic
;
using
System.Collections.Generic
;
using
System.IO
;
using
System.IO
;
using
System.Linq
;
using
System.Linq
;
using
System.Text
;
using
System.Threading.Tasks
;
namespace
Performance.Services
namespace
Performance.Services
{
{
...
@@ -24,82 +21,100 @@ public class AttendanceService : IAutoInjection
...
@@ -24,82 +21,100 @@ public class AttendanceService : IAutoInjection
{
{
private
readonly
IMapper
mapper
;
private
readonly
IMapper
mapper
;
private
readonly
ILogger
<
AttendanceService
>
logger
;
private
readonly
ILogger
<
AttendanceService
>
logger
;
private
readonly
PerforUserRepository
_userRepository
;
private
readonly
PerforPerallotRepository
perforPerallotRepository
;
private
readonly
PerforPerallotRepository
perforPerallotRepository
;
private
readonly
PerforPerAttendanceRepository
perforPerAttendanceRepository
;
private
readonly
PerforPerAttendanceRepository
perforPerAttendanceRepository
;
private
readonly
PerforPerAttendanceIssueRepository
perforPerAttendanceIssueRepository
;
private
readonly
PerfoPperAttendanceTypeRepository
perfoPperAttendanceTypeRepository
;
private
readonly
PerfoPperAttendanceTypeRepository
perfoPperAttendanceTypeRepository
;
private
readonly
PerfoPperAttendanceVacationeRepository
perfoPperAttendanceVacationeRepository
;
private
readonly
PerfoPperAttendanceVacationeRepository
perfoPperAttendanceVacationeRepository
;
private
readonly
PerforPerdeptdicRepository
perdeptdicRepository
;
private
readonly
PerforPerdeptdicRepository
perdeptdicRepository
;
private
readonly
PerforPeremployeeRepository
perforPeremployeeRepository
;
private
readonly
PerforPeremployeeRepository
perforPeremployeeRepository
;
private
readonly
PerforCofaccountingRepository
cofaccountingRepository
;
private
readonly
PerforCofaccountingRepository
cofaccountingRepository
;
private
readonly
RoleService
roleService
;
private
readonly
UserService
userService
;
public
AttendanceService
(
public
AttendanceService
(
IMapper
mapper
,
IMapper
mapper
,
ILogger
<
AttendanceService
>
logger
,
ILogger
<
AttendanceService
>
logger
,
PerforUserRepository
userRepository
,
PerforPerallotRepository
perforPerallotRepository
,
PerforPerallotRepository
perforPerallotRepository
,
PerforPerAttendanceRepository
perforPerAttendanceRepository
,
PerforPerAttendanceRepository
perforPerAttendanceRepository
,
PerforPerAttendanceIssueRepository
perforPerAttendanceIssueRepository
,
PerfoPperAttendanceTypeRepository
perfoPperAttendanceTypeRepository
,
PerfoPperAttendanceTypeRepository
perfoPperAttendanceTypeRepository
,
PerfoPperAttendanceVacationeRepository
perfoPperAttendanceVacationeRepository
,
PerfoPperAttendanceVacationeRepository
perfoPperAttendanceVacationeRepository
,
PerforPerdeptdicRepository
perdeptdicRepository
,
PerforPerdeptdicRepository
perdeptdicRepository
,
PerforPeremployeeRepository
perforPeremployeeRepository
,
PerforPeremployeeRepository
perforPeremployeeRepository
,
PerforCofaccountingRepository
cofaccountingRepository
)
PerforCofaccountingRepository
cofaccountingRepository
,
RoleService
roleService
,
UserService
userService
)
{
{
this
.
mapper
=
mapper
;
this
.
mapper
=
mapper
;
this
.
logger
=
logger
;
this
.
logger
=
logger
;
_userRepository
=
userRepository
;
this
.
perforPerallotRepository
=
perforPerallotRepository
;
this
.
perforPerallotRepository
=
perforPerallotRepository
;
this
.
perforPerAttendanceRepository
=
perforPerAttendanceRepository
;
this
.
perforPerAttendanceRepository
=
perforPerAttendanceRepository
;
this
.
perforPerAttendanceIssueRepository
=
perforPerAttendanceIssueRepository
;
this
.
perfoPperAttendanceTypeRepository
=
perfoPperAttendanceTypeRepository
;
this
.
perfoPperAttendanceTypeRepository
=
perfoPperAttendanceTypeRepository
;
this
.
perfoPperAttendanceVacationeRepository
=
perfoPperAttendanceVacationeRepository
;
this
.
perfoPperAttendanceVacationeRepository
=
perfoPperAttendanceVacationeRepository
;
this
.
perdeptdicRepository
=
perdeptdicRepository
;
this
.
perdeptdicRepository
=
perdeptdicRepository
;
this
.
perforPeremployeeRepository
=
perforPeremployeeRepository
;
this
.
perforPeremployeeRepository
=
perforPeremployeeRepository
;
this
.
cofaccountingRepository
=
cofaccountingRepository
;
this
.
cofaccountingRepository
=
cofaccountingRepository
;
this
.
roleService
=
roleService
;
this
.
userService
=
userService
;
}
}
#
region
初始考勤页面
#
region
初始考勤页面
public
ApiResponse
<
List
<
AttendanceStatistics
>>
GetAttendance
(
int
allotI
d
)
//public ApiResponse<List<AttendanceStatistics>> GetAttendance(int allotId, int useri
d)
{
//
{
var
allot
=
perforPerallotRepository
.
GetEntity
(
w
=>
w
.
ID
==
allotId
);
//
var allot = perforPerallotRepository.GetEntity(w => w.ID == allotId);
if
(
allot
==
null
)
//
if (allot == null)
throw
new
PerformanceException
(
"当前绩效记录不存在"
);
//
throw new PerformanceException("当前绩效记录不存在");
var
attendanceData
=
perforPerallotRepository
.
GetAttendance
(
allotId
);
// var attendanceData = perforPerallotRepository.GetAttendance(allotId);
// var roleType = new[] { (int)Role.护士长, (int)Role.科主任, (int)Role.特殊科室, (int)Role.行政科室, };
// var user = userService.GetUser(userid);
// var role = roleService.GetUserRole(user.UserID);
// if (role.Any(t => roleType.Contains(t.Type.Value)))
// attendanceData = attendanceData.Where(w => w.AccountingUnit == user.Department && w.UnitType == user.UnitType).ToList();
List
<
AttendanceStatistics
>
statistics
=
new
List
<
AttendanceStatistics
>();
//
List<AttendanceStatistics> statistics = new List<AttendanceStatistics>();
// 交叉补全科室结束时间
//
// 交叉补全科室结束时间
foreach
(
var
personnelNumber
in
attendanceData
.
Select
(
w
=>
w
.
PersonnelNumber
).
Distinct
())
//
foreach (var personnelNumber in attendanceData.Select(w => w.PersonnelNumber).Distinct())
{
//
{
var
attendances
=
attendanceData
.
Where
(
w
=>
w
.
PersonnelNumber
==
personnelNumber
).
OrderBy
(
w
=>
w
.
AttendanceDate
);
//
var attendances = attendanceData.Where(w => w.PersonnelNumber == personnelNumber).OrderBy(w => w.AttendanceDate);
for
(
int
i
=
0
;
i
<
attendances
.
Count
()
-
1
;
i
++)
//
for (int i = 0; i < attendances.Count() - 1; i++)
{
//
{
var
begDate
=
attendances
.
ElementAt
(
i
).
AttendanceDate
.
Date
;
//
var begDate = attendances.ElementAt(i).AttendanceDate.Date;
var
endDate
=
attendances
.
ElementAt
(
i
+
1
).
AttendanceDate
.
Date
;
//
var endDate = attendances.ElementAt(i + 1).AttendanceDate.Date;
// 调入科室需要额外减去1天作为上一个科室结束时间
//
// 调入科室需要额外减去1天作为上一个科室结束时间
var
days
=
attendances
.
ElementAt
(
i
+
1
).
Source
==
Attendance
.
Type
.
调入
.
ToString
()
?
-
1
:
0
;
//
var days = attendances.ElementAt(i + 1).Source == Attendance.Type.调入.ToString() ? -1 : 0;
if
(
endDate
>
begDate
)
//
if (endDate > begDate)
{
//
{
var
stat
=
new
AttendanceStatistics
//
var stat = new AttendanceStatistics
{
//
{
AllotID
=
attendances
.
ElementAt
(
i
).
ALLOTID
,
//
AllotID = attendances.ElementAt(i).ALLOTID,
UnitType
=
attendances
.
ElementAt
(
i
).
UnitType
,
//
UnitType = attendances.ElementAt(i).UnitType,
AccountingUnit
=
attendances
.
ElementAt
(
i
).
AccountingUnit
,
//
AccountingUnit = attendances.ElementAt(i).AccountingUnit,
Department
=
attendances
.
ElementAt
(
i
).
Department
,
//
Department = attendances.ElementAt(i).Department,
PersonnelNumber
=
attendances
.
ElementAt
(
i
).
PersonnelNumber
,
//
PersonnelNumber = attendances.ElementAt(i).PersonnelNumber,
PersonnelName
=
attendances
.
ElementAt
(
i
).
PersonnelName
,
//
PersonnelName = attendances.ElementAt(i).PersonnelName,
BeginDate
=
begDate
,
//
BeginDate = begDate,
EndDate
=
endDate
.
AddDays
(
days
),
//
EndDate = endDate.AddDays(days),
Detial
=
new
List
<
AttendanceStatisticsDetial
>()
// //
Detial = new List<AttendanceStatisticsDetial>()
};
//
};
statistics
.
Add
(
stat
);
//
statistics.Add(stat);
}
//
}
}
//
}
}
//
}
if
(
statistics
!=
null
)
//
if (statistics != null)
return
new
ApiResponse
<
List
<
AttendanceStatistics
>>(
ResponseType
.
OK
,
statistics
);
//
return new ApiResponse<List<AttendanceStatistics>>(ResponseType.OK, statistics);
else
//
else
{
//
{
return
new
ApiResponse
<
List
<
AttendanceStatistics
>>(
ResponseType
.
Fail
);
//
return new ApiResponse<List<AttendanceStatistics>>(ResponseType.Fail);
}
//
}
}
//
}
#
endregion
#
endregion
...
@@ -322,6 +337,7 @@ public ApiResponse BatchCallIn(int allotId, int hospitalId, SaveCollectData requ
...
@@ -322,6 +337,7 @@ public ApiResponse BatchCallIn(int allotId, int hospitalId, SaveCollectData requ
}
}
#
endregion
#
endregion
#
region
考勤类型
#
region
考勤类型
...
@@ -652,7 +668,7 @@ public ApiResponse AttendanceBatch(int allotId, int hospitalId, SaveCollectData
...
@@ -652,7 +668,7 @@ public ApiResponse AttendanceBatch(int allotId, int hospitalId, SaveCollectData
}
}
#
endregion
#
endregion
public
ApiResponse
<
List
<
AttendanceStatistics
>>
GetAttendanceStatistics
(
int
allotId
)
public
ApiResponse
<
List
<
AttendanceStatistics
>>
GetAttendanceStatistics
(
int
allotId
,
int
userid
)
{
{
var
allot
=
perforPerallotRepository
.
GetEntity
(
w
=>
w
.
ID
==
allotId
);
var
allot
=
perforPerallotRepository
.
GetEntity
(
w
=>
w
.
ID
==
allotId
);
if
(
allot
==
null
)
if
(
allot
==
null
)
...
@@ -665,7 +681,16 @@ public ApiResponse<List<AttendanceStatistics>> GetAttendanceStatistics(int allot
...
@@ -665,7 +681,16 @@ public ApiResponse<List<AttendanceStatistics>> GetAttendanceStatistics(int allot
//var attendanceData = perforPerallotRepository.GetAttendance(allotId)
//var attendanceData = perforPerallotRepository.GetAttendance(allotId)
// .Where(w => numbers.Contains(w.PersonnelNumber))
// .Where(w => numbers.Contains(w.PersonnelNumber))
// .ToList();
// .ToList();
//查询全部数据
var
attendanceData
=
perforPerallotRepository
.
GetAttendance
(
allotId
);
var
attendanceData
=
perforPerallotRepository
.
GetAttendance
(
allotId
);
//当角色对应时过滤
var
userInfo
=
_userRepository
.
GetUser
(
userid
);
if
(
userInfo
?.
User
==
null
)
throw
new
NotImplementedException
(
"当前用户不存在"
);
if
(
userInfo
?.
URole
==
null
)
throw
new
NotImplementedException
(
"当前用户暂未分配角色"
);
var
unitTypes
=
UnitTypeUtil
.
GetMaps
(
userInfo
?.
URole
.
Type
??
0
);
if
(
unitTypes
?.
Any
()
==
true
)
attendanceData
=
attendanceData
.
Where
(
w
=>
w
.
AccountingUnit
==
userInfo
.
User
.
Department
&&
UnitTypeUtil
.
Is
(
w
.
UnitType
,
unitTypes
)).
ToList
();
List
<
AttendanceStatistics
>
statistics
=
new
List
<
AttendanceStatistics
>();
List
<
AttendanceStatistics
>
statistics
=
new
List
<
AttendanceStatistics
>();
// 交叉补全科室结束时间
// 交叉补全科室结束时间
...
@@ -690,7 +715,8 @@ public ApiResponse<List<AttendanceStatistics>> GetAttendanceStatistics(int allot
...
@@ -690,7 +715,8 @@ public ApiResponse<List<AttendanceStatistics>> GetAttendanceStatistics(int allot
PersonnelName
=
attendances
.
ElementAt
(
i
).
PersonnelName
,
PersonnelName
=
attendances
.
ElementAt
(
i
).
PersonnelName
,
BeginDate
=
begDate
,
BeginDate
=
begDate
,
EndDate
=
endDate
.
AddDays
(
days
),
EndDate
=
endDate
.
AddDays
(
days
),
Detial
=
new
List
<
AttendanceStatisticsDetial
>()
//Detial = new List<AttendanceStatisticsDetial>()
Code
=
""
,
};
};
statistics
.
Add
(
stat
);
statistics
.
Add
(
stat
);
}
}
...
@@ -735,8 +761,284 @@ public ApiResponse<List<AttendanceStatistics>> GetAttendanceStatistics(int allot
...
@@ -735,8 +761,284 @@ public ApiResponse<List<AttendanceStatistics>> GetAttendanceStatistics(int allot
int
vacationesDays
=
stat
.
Detial
.
Where
(
w
=>
!
w
.
Remark
.
Contains
(
"不核减"
)).
Sum
(
w
=>
w
.
Value
);
int
vacationesDays
=
stat
.
Detial
.
Where
(
w
=>
!
w
.
Remark
.
Contains
(
"不核减"
)).
Sum
(
w
=>
w
.
Value
);
stat
.
AttendanceDays
=
SplitEveryDay
(
stat
.
BeginDate
,
stat
.
EndDate
).
Where
(
date
=>
date
>=
stat
.
BeginDate
&&
date
<=
stat
.
EndDate
).
Count
()
-
vacationesDays
;
stat
.
AttendanceDays
=
SplitEveryDay
(
stat
.
BeginDate
,
stat
.
EndDate
).
Where
(
date
=>
date
>=
stat
.
BeginDate
&&
date
<=
stat
.
EndDate
).
Count
()
-
vacationesDays
;
}
}
var
cofaccounting
=
cofaccountingRepository
.
GetEntities
(
g
=>
g
.
AllotId
==
allotId
);
foreach
(
var
item
in
statistics
)
{
var
code
=
cofaccounting
.
FirstOrDefault
(
w
=>
w
.
UnitType
==
item
.
UnitType
&&
w
.
AccountingUnit
==
item
.
AccountingUnit
);
item
.
Code
=
code
==
null
?
""
:
code
.
Code
;
}
return
new
ApiResponse
<
List
<
AttendanceStatistics
>>(
ResponseType
.
OK
,
""
,
statistics
);
return
new
ApiResponse
<
List
<
AttendanceStatistics
>>(
ResponseType
.
OK
,
""
,
statistics
);
}
}
#
region
考勤下发
// 科室确认列表
public
ApiResponse
<
List
<
AttendanceAuditList
>>
AuditList
(
int
allotId
,
string
unitType
,
string
accountingUnit
,
Attendance
.
State
state
)
{
var
issues
=
perforPerAttendanceIssueRepository
.
GetEntities
(
w
=>
w
.
AllotId
==
allotId
);
if
(!
string
.
IsNullOrEmpty
(
unitType
))
issues
=
issues
.
Where
(
w
=>
w
.
UnitType
.
Contains
(
unitType
)).
ToList
();
if
(!
string
.
IsNullOrEmpty
(
accountingUnit
))
issues
=
issues
.
Where
(
w
=>
w
.
AccountingUnit
.
Contains
(
accountingUnit
)).
ToList
();
var
stateOrders
=
new
int
[]
{
(
int
)
Attendance
.
State
.
未确认
,
(
int
)
Attendance
.
State
.
驳回
,
(
int
)
Attendance
.
State
.
确认
};
var
items
=
issues
.
GroupBy
(
w
=>
new
{
w
.
Code
,
w
.
UnitType
,
w
.
AccountingUnit
})
.
Select
(
w
=>
new
AttendanceAuditList
{
Code
=
w
.
Key
.
Code
,
UnitType
=
w
.
Key
.
UnitType
,
AccountingUnit
=
w
.
Key
.
AccountingUnit
,
Count
=
w
.
Count
(),
ConfirmCount
=
w
.
Count
(
p
=>
p
.
State
==
(
int
)
Attendance
.
State
.
确认
),
RejectCount
=
w
.
Count
(
p
=>
p
.
State
==
(
int
)
Attendance
.
State
.
驳回
),
OperationUser
=
w
.
OrderByDescending
(
o
=>
o
.
ConfirmTime
).
Select
(
s
=>
s
.
ConfirmUser
).
FirstOrDefault
(),
OperationTime
=
w
.
OrderByDescending
(
o
=>
o
.
ConfirmTime
).
Select
(
s
=>
s
.
ConfirmTime
).
FirstOrDefault
(),
Remarks
=
string
.
Join
(
";"
,
w
.
Select
(
p
=>
p
.
Remarks
).
Where
(
s
=>
!
string
.
IsNullOrEmpty
(
s
)).
Distinct
()),
}).
ToList
();
foreach
(
var
item
in
items
)
{
item
.
State
=
(
int
)
Attendance
.
State
.
未确认
;
if
(
item
.
RejectCount
>
0
)
item
.
State
=
(
int
)
Attendance
.
State
.
驳回
;
else
if
(
item
.
ConfirmCount
==
item
.
Count
)
item
.
State
=
(
int
)
Attendance
.
State
.
确认
;
}
items
=
items
.
OrderBy
(
w
=>
Array
.
IndexOf
(
stateOrders
,
w
.
State
)).
ToList
();
if
((
int
)
state
==
(
int
)
Attendance
.
State
.
确认
||
(
int
)
state
==
(
int
)
Attendance
.
State
.
未确认
||
(
int
)
state
==
(
int
)
Attendance
.
State
.
驳回
)
items
=
items
.
Where
(
w
=>
w
.
State
==
(
int
)
state
).
ToList
();
return
new
ApiResponse
<
List
<
AttendanceAuditList
>>(
ResponseType
.
OK
,
items
);
}
// 科室确认详情(已下发结果展示列表)
public
ApiResponse
<
List
<
AttendanceAuditDetail
>>
AuditDetail
(
int
allotId
,
string
unitType
,
string
accountingUnit
,
string
searchTxet
,
int
userid
)
{
var
types
=
perfoPperAttendanceTypeRepository
.
GetEntities
(
t
=>
t
.
AllotId
==
allotId
)
??
new
List
<
per_attendance_type
>();
var
vacationeData
=
perfoPperAttendanceVacationeRepository
.
GetEntities
(
t
=>
t
.
AllotId
==
allotId
)
??
new
List
<
per_attendance_vacation
>();
var
issues
=
perforPerAttendanceIssueRepository
.
GetEntities
(
w
=>
w
.
AllotId
==
allotId
).
OrderBy
(
w
=>
w
.
PersonnelNumber
).
ToList
();
if
(!
string
.
IsNullOrEmpty
(
unitType
))
issues
=
issues
.
Where
(
w
=>
w
.
UnitType
.
Contains
(
unitType
)).
ToList
();
if
(!
string
.
IsNullOrEmpty
(
accountingUnit
))
issues
=
issues
.
Where
(
w
=>
w
.
AccountingUnit
.
Contains
(
accountingUnit
)).
ToList
();
if
(!
string
.
IsNullOrEmpty
(
searchTxet
))
issues
=
issues
.
Where
(
w
=>
w
.
PersonnelName
.
Contains
(
searchTxet
)
||
w
.
PersonnelNumber
.
Contains
(
searchTxet
)).
ToList
();
var
stateOrders
=
new
int
[]
{
(
int
)
Attendance
.
State
.
未确认
,
(
int
)
Attendance
.
State
.
驳回
,
(
int
)
Attendance
.
State
.
确认
};
var
items
=
issues
.
Select
(
w
=>
new
AttendanceAuditDetail
{
AttendanceIsueId
=
w
.
Id
,
AllotId
=
w
.
AllotId
,
Code
=
w
.
Code
,
UnitType
=
w
.
UnitType
,
AccountingUnit
=
w
.
AccountingUnit
,
PersonnelName
=
w
.
PersonnelName
,
PersonnelNumber
=
w
.
PersonnelNumber
,
BeginDate
=
w
.
BeginDate
,
EndDate
=
w
.
EndDate
,
WorkFullDays
=
w
.
WorkFullDays
,
AttendanceDays
=
w
.
AttendanceDays
,
DeductionDays
=
w
.
DeductionDays
,
NoDeductionDays
=
w
.
NoDeductionDays
,
State
=
w
.
State
,
ConfirmUser
=
w
.
ConfirmUser
,
ConfirmTime
=
w
.
ConfirmTime
,
Remarks
=
w
.
Remarks
,
}).
OrderBy
(
w
=>
Array
.
IndexOf
(
stateOrders
,
w
.
State
)).
ToList
();
//当角色对应时过滤
var
userInfo
=
_userRepository
.
GetUser
(
userid
);
if
(
userInfo
?.
User
==
null
)
throw
new
NotImplementedException
(
"当前用户不存在"
);
if
(
userInfo
?.
URole
==
null
)
throw
new
NotImplementedException
(
"当前用户暂未分配角色"
);
var
unitTypes
=
UnitTypeUtil
.
GetMaps
(
userInfo
?.
URole
.
Type
??
0
);
if
(
unitTypes
?.
Any
()
==
true
)
items
=
items
.
Where
(
w
=>
w
.
AccountingUnit
==
userInfo
.
User
.
Department
&&
UnitTypeUtil
.
Is
(
w
.
UnitType
,
unitTypes
)).
ToList
();
var
vacationes
=
vacationeData
.
Where
(
w
=>
w
.
BegDate
>
DateTime
.
MinValue
&&
w
.
EndDate
>
DateTime
.
MinValue
)
.
Select
(
w
=>
new
{
w
.
PersonnelNumber
,
Type
=
types
.
FirstOrDefault
(
p
=>
p
.
Id
==
w
.
TypeId
)?.
AttendanceName
??
"考勤类型缺失"
,
Dates
=
SplitEveryDay
(
w
.
BegDate
.
Value
.
Date
,
w
.
EndDate
.
Value
.
Date
),
Remark
=
types
.
FirstOrDefault
(
p
=>
p
.
Id
==
w
.
TypeId
)?.
IsDeduction
==
(
int
)
Attendance
.
Deduction
.
核减
?
"核减"
:
"不核减"
,
});
foreach
(
var
stat
in
items
)
{
stat
.
Detial
=
vacationes
.
Where
(
w
=>
w
.
PersonnelNumber
==
stat
.
PersonnelNumber
)
.
Select
(
w
=>
new
AttendanceAuditDetails
{
Title
=
w
.
Type
,
Value
=
w
.
Dates
.
Where
(
date
=>
date
>=
stat
.
BeginDate
&&
date
<=
stat
.
EndDate
).
Count
(),
Remark
=
w
.
Remark
,
})
.
ToList
();
foreach
(
var
item
in
types
)
{
if
(!
stat
.
Detial
.
Any
(
w
=>
w
.
Title
==
item
.
AttendanceName
))
{
stat
.
Detial
.
Add
(
new
AttendanceAuditDetails
{
Title
=
item
.
AttendanceName
,
Value
=
0
,
Remark
=
item
.
IsDeduction
==
(
int
)
Attendance
.
Deduction
.
核减
?
"核减"
:
"不核减"
,
});
}
}
}
return
new
ApiResponse
<
List
<
AttendanceAuditDetail
>>(
ResponseType
.
OK
,
items
);
}
// 最终考勤结果下发(预确认显示)
public
ApiResponse
<
List
<
PerAttendanceIssueDto
>>
PreConfirmationDisplay
(
int
allotId
,
int
userid
,
string
unitType
,
string
accountingUnit
,
Attendance
.
OperationType
state
)
{
var
statistics
=
GetAttendanceStatistics
(
allotId
,
userid
).
Data
;
var
issues
=
perforPerAttendanceIssueRepository
.
GetEntities
(
w
=>
w
.
AllotId
==
allotId
);
//删除(删除页面没有的数据)
var
statisticPersonnelNumber
=
statistics
.
Select
(
s
=>
s
.
PersonnelNumber
);
var
scStatistics
=
issues
.
Where
(
w
=>
!
statisticPersonnelNumber
.
Contains
(
w
.
PersonnelNumber
)).
ToList
();
var
issuedates
=
new
List
<
PerAttendanceIssueDto
>();
Func
<
per_attendance_issue
,
AttendanceStatistics
,
bool
>
func
=
(
issue
,
statistic
)
=>
{
var
result
=
true
;
result
=
issue
.
UnitType
==
statistic
.
UnitType
&&
issue
.
AccountingUnit
==
statistic
.
AccountingUnit
&&
issue
.
BeginDate
==
statistic
.
BeginDate
&&
issue
.
EndDate
==
statistic
.
EndDate
&&
issue
.
AttendanceDays
==
statistic
.
AttendanceDays
&&
issue
.
DeductionDays
==
statistic
.
Detial
.
Where
(
w
=>
!
w
.
Remark
.
Contains
(
"不核减"
)).
Sum
(
w
=>
w
.
Value
)
&&
issue
.
NoDeductionDays
==
statistic
.
Detial
.
Where
(
w
=>
!
w
.
Remark
.
Equals
(
"核减"
)).
Sum
(
w
=>
w
.
Value
);
return
result
;
};
foreach
(
var
item
in
statistics
.
Select
(
w
=>
new
{
PersonnelNumber
=
w
.
PersonnelNumber
,
Code
=
w
.
Code
}))
{
var
staticPersonnel
=
statistics
.
FirstOrDefault
(
w
=>
w
.
PersonnelNumber
==
item
.
PersonnelNumber
&&
w
.
Code
==
item
.
Code
);
var
issuePersonnel
=
issues
.
FirstOrDefault
(
w
=>
w
.
PersonnelNumber
==
item
.
PersonnelNumber
&&
w
.
Code
==
item
.
Code
);
if
(
issuePersonnel
==
null
)
{
issuedates
.
Add
(
new
PerAttendanceIssueDto
(
staticPersonnel
));
}
else
if
(
staticPersonnel
!=
null
&&
issuePersonnel
!=
null
)
{
if
(
func
(
issuePersonnel
,
staticPersonnel
))
continue
;
issuedates
.
Add
(
new
PerAttendanceIssueDto
(
staticPersonnel
)
{
PersonnelName
=
issuePersonnel
.
PersonnelName
,
PersonnelNumber
=
issuePersonnel
.
PersonnelNumber
,
OperationType
=
(
int
)
Attendance
.
OperationType
.
修改
,
Remarks
=
"修改数据"
,
});
}
}
if
(
scStatistics
.
Any
())
{
foreach
(
var
report
in
scStatistics
)
issuedates
.
Add
(
new
PerAttendanceIssueDto
(
report
));
}
if
(!
string
.
IsNullOrEmpty
(
unitType
))
issuedates
=
issuedates
.
Where
(
w
=>
w
.
UnitType
.
Contains
(
unitType
)).
ToList
();
if
(!
string
.
IsNullOrEmpty
(
accountingUnit
))
issuedates
=
issuedates
.
Where
(
w
=>
w
.
AccountingUnit
.
Contains
(
accountingUnit
)).
ToList
();
if
((
int
)
state
==
(
int
)
Attendance
.
OperationType
.
新增
||
(
int
)
state
==
(
int
)
Attendance
.
OperationType
.
修改
||
(
int
)
state
==
(
int
)
Attendance
.
OperationType
.
删除
)
issuedates
=
issuedates
.
Where
(
w
=>
w
.
OperationType
==
(
int
)
state
).
ToList
();
return
new
ApiResponse
<
List
<
PerAttendanceIssueDto
>>(
ResponseType
.
OK
,
issuedates
);
}
// 最终考勤结果下发
public
ApiResponse
IssueStatistics
(
int
allotId
,
int
userid
,
string
realName
,
string
unitType
=
""
,
string
accountingUnit
=
""
,
Attendance
.
OperationType
state
=
0
)
{
var
allot
=
perforPerallotRepository
.
GetEntity
(
w
=>
w
.
ID
==
allotId
);
if
(
allot
==
null
)
throw
new
PerformanceException
(
"当前绩效记录不存在"
);
var
preConfirmationDisplay
=
PreConfirmationDisplay
(
allotId
,
userid
,
unitType
,
accountingUnit
,
state
).
Data
;
if
(
preConfirmationDisplay
==
null
)
return
new
ApiResponse
(
ResponseType
.
NotFound
,
"暂无下发数据"
);
var
issues
=
perforPerAttendanceIssueRepository
.
GetEntities
(
w
=>
w
.
AllotId
==
allotId
);
var
insertIssues
=
preConfirmationDisplay
.
Where
(
w
=>
w
.
OperationType
==
(
int
)
Attendance
.
OperationType
.
新增
).
ToList
();
var
updateIssues
=
preConfirmationDisplay
.
Where
(
w
=>
w
.
OperationType
==
(
int
)
Attendance
.
OperationType
.
修改
).
ToList
();
var
deleteIssues
=
preConfirmationDisplay
.
Where
(
w
=>
w
.
OperationType
==
(
int
)
Attendance
.
OperationType
.
删除
).
Select
(
s
=>
s
.
PersonnelNumber
).
ToList
();
if
(
insertIssues
.
Any
())
{
var
inserts
=
insertIssues
.
Select
(
item
=>
{
return
new
per_attendance_issue
()
{
AllotId
=
allotId
,
HospitalId
=
allot
.
HospitalId
,
Code
=
item
.
Code
,
UnitType
=
item
.
UnitType
,
AccountingUnit
=
item
.
AccountingUnit
,
PersonnelNumber
=
item
.
PersonnelNumber
,
PersonnelName
=
item
.
PersonnelName
,
BeginDate
=
item
.
BeginDate
,
EndDate
=
item
.
EndDate
,
DeductionDays
=
item
.
DeductionDays
,
NoDeductionDays
=
item
.
NoDeductionDays
,
AttendanceDays
=
item
.
AttendanceDays
,
WorkFullDays
=
item
.
AttendanceDays
+
item
.
DeductionDays
,
CreateUser
=
realName
,
CreateTime
=
DateTime
.
Now
,
State
=
(
int
)
Attendance
.
State
.
未确认
,
};
});
perforPerAttendanceIssueRepository
.
AddRange
(
inserts
.
ToArray
());
}
if
(
updateIssues
.
Any
())
{
List
<
per_attendance_issue
>
updateIssuedates
=
new
List
<
per_attendance_issue
>();
foreach
(
var
item
in
updateIssues
)
{
var
issuePersonnel
=
issues
.
FirstOrDefault
(
w
=>
w
.
PersonnelNumber
==
item
.
PersonnelNumber
&&
w
.
Code
==
item
.
Code
);
issuePersonnel
.
UnitType
=
item
.
UnitType
;
issuePersonnel
.
AccountingUnit
=
item
.
AccountingUnit
;
issuePersonnel
.
Code
=
item
.
Code
;
issuePersonnel
.
BeginDate
=
item
.
BeginDate
;
issuePersonnel
.
EndDate
=
item
.
EndDate
;
issuePersonnel
.
DeductionDays
=
item
.
DeductionDays
;
issuePersonnel
.
NoDeductionDays
=
item
.
NoDeductionDays
;
issuePersonnel
.
AttendanceDays
=
item
.
AttendanceDays
;
issuePersonnel
.
WorkFullDays
=
item
.
AttendanceDays
+
item
.
DeductionDays
;
issuePersonnel
.
State
=
(
int
)
Attendance
.
State
.
未确认
;
issuePersonnel
.
CreateUser
=
realName
;
issuePersonnel
.
CreateTime
=
DateTime
.
Now
;
issuePersonnel
.
ConfirmUser
=
""
;
issuePersonnel
.
ConfirmTime
=
null
;
issuePersonnel
.
Remarks
=
""
;
updateIssuedates
.
Add
(
issuePersonnel
);
}
perforPerAttendanceIssueRepository
.
UpdateRange
(
updateIssuedates
.
ToArray
());
}
if
(
deleteIssues
.
Any
())
{
var
deletePersonnel
=
issues
.
Where
(
w
=>
deleteIssues
.
Contains
(
w
.
PersonnelNumber
)).
ToList
();
perforPerAttendanceIssueRepository
.
RemoveRange
(
deletePersonnel
.
ToArray
());
}
perforPerallotRepository
.
PerAttendanceIssueBackup
(
allotId
);
return
new
ApiResponse
(
ResponseType
.
OK
,
"下发成功"
);
}
// 最终考勤结果驳回或确认无误((批量操作)
public
ApiResponse
ChooseStatistics
(
AttendanceIssueChoose
attendanceIssueChoose
,
string
realName
)
{
var
issuedates
=
perforPerAttendanceIssueRepository
.
GetEntities
(
w
=>
w
.
AllotId
==
attendanceIssueChoose
.
AllotId
&&
attendanceIssueChoose
.
Issueid
.
Contains
(
w
.
Id
)).
ToList
();
foreach
(
var
item
in
issuedates
)
{
item
.
State
=
(
int
)
attendanceIssueChoose
.
state
;
item
.
ConfirmUser
=
realName
;
item
.
ConfirmTime
=
DateTime
.
Now
;
item
.
Remarks
=
attendanceIssueChoose
.
Remarks
;
}
perforPerAttendanceIssueRepository
.
UpdateRange
(
issuedates
.
ToArray
());
return
new
ApiResponse
(
ResponseType
.
OK
);
}
#
endregion
// 拆分请假时间段为每个日期
// 拆分请假时间段为每个日期
private
List
<
DateTime
>
SplitEveryDay
(
DateTime
begin
,
DateTime
end
)
private
List
<
DateTime
>
SplitEveryDay
(
DateTime
begin
,
DateTime
end
)
...
@@ -903,5 +1205,7 @@ public string ExcelDownload(List<Dictionary<string, object>> rows, string name,
...
@@ -903,5 +1205,7 @@ public string ExcelDownload(List<Dictionary<string, object>> rows, string name,
(
nameof
(
RecordAttendcance
.
BegDate
),
"开始时间"
,
t
=>
t
.
BegDate
),
(
nameof
(
RecordAttendcance
.
BegDate
),
"开始时间"
,
t
=>
t
.
BegDate
),
(
nameof
(
RecordAttendcance
.
EndDate
),
"结束时间"
,
t
=>
t
.
EndDate
),
(
nameof
(
RecordAttendcance
.
EndDate
),
"结束时间"
,
t
=>
t
.
EndDate
),
};
};
}
}
}
}
performance/Performance.Services/ComputeConfig.cs
View file @
d7a54454
...
@@ -31,8 +31,8 @@ public static List<cof_alias> PerformanceTotal(string route, string[] heads)
...
@@ -31,8 +31,8 @@ public static List<cof_alias> PerformanceTotal(string route, string[] heads)
public
static
List
<
cof_alias
>
AllComputeView
{
get
;
}
=
new
List
<
cof_alias
>
public
static
List
<
cof_alias
>
AllComputeView
{
get
;
}
=
new
List
<
cof_alias
>
{
{
new
cof_alias
{
Alias
=
"来源"
,
Name
=
nameof
(
view_allot_sign_emp
.
Source
),
States
=
1
,
SumStatus
=
0
,
Sort
=
1
},
new
cof_alias
{
Alias
=
"来源"
,
Name
=
nameof
(
view_allot_sign_emp
.
Source
),
States
=
1
,
SumStatus
=
0
,
Sort
=
1
},
new
cof_alias
{
Alias
=
"核算单元编码"
,
Name
=
nameof
(
view_allot_sign_emp
.
Code
),
States
=
1
,
SumStatus
=
0
,
Sort
=
1
},
new
cof_alias
{
Alias
=
"核算组别"
,
Name
=
nameof
(
view_allot_sign_emp
.
UnitType
),
States
=
1
,
SumStatus
=
0
,
Sort
=
2
},
new
cof_alias
{
Alias
=
"核算组别"
,
Name
=
nameof
(
view_allot_sign_emp
.
UnitType
),
States
=
1
,
SumStatus
=
0
,
Sort
=
2
},
new
cof_alias
{
Alias
=
"核算单元编码"
,
Name
=
nameof
(
view_allot_sign_emp
.
Code
),
States
=
1
,
SumStatus
=
0
,
Sort
=
2
},
new
cof_alias
{
Alias
=
"核算单元"
,
Name
=
nameof
(
view_allot_sign_emp
.
AccountingUnit
),
States
=
1
,
SumStatus
=
0
,
Sort
=
3
},
new
cof_alias
{
Alias
=
"核算单元"
,
Name
=
nameof
(
view_allot_sign_emp
.
AccountingUnit
),
States
=
1
,
SumStatus
=
0
,
Sort
=
3
},
new
cof_alias
{
Alias
=
"员工号"
,
Name
=
nameof
(
view_allot_sign_emp
.
JobNumber
),
States
=
1
,
SumStatus
=
0
,
Sort
=
4
},
new
cof_alias
{
Alias
=
"员工号"
,
Name
=
nameof
(
view_allot_sign_emp
.
JobNumber
),
States
=
1
,
SumStatus
=
0
,
Sort
=
4
},
...
@@ -75,8 +75,8 @@ public static List<cof_alias> AllComputeViewByDate
...
@@ -75,8 +75,8 @@ public static List<cof_alias> AllComputeViewByDate
public
static
List
<
cof_alias
>
AllComputePersonView
{
get
;
}
=
new
List
<
cof_alias
>
public
static
List
<
cof_alias
>
AllComputePersonView
{
get
;
}
=
new
List
<
cof_alias
>
{
{
new
cof_alias
{
Alias
=
"核算单元编码"
,
Name
=
nameof
(
view_allot_sign_emp
.
Code
),
States
=
1
,
SumStatus
=
0
,
Sort
=
0
},
new
cof_alias
{
Alias
=
"核算组别"
,
Name
=
nameof
(
view_allot_sign_emp
.
UnitType
),
States
=
1
,
SumStatus
=
0
,
Sort
=
1
},
new
cof_alias
{
Alias
=
"核算组别"
,
Name
=
nameof
(
view_allot_sign_emp
.
UnitType
),
States
=
1
,
SumStatus
=
0
,
Sort
=
1
},
new
cof_alias
{
Alias
=
"核算单元编码"
,
Name
=
nameof
(
view_allot_sign_emp
.
Code
),
States
=
1
,
SumStatus
=
0
,
Sort
=
2
},
new
cof_alias
{
Alias
=
"核算单元"
,
Name
=
nameof
(
view_allot_sign_emp
.
AccountingUnit
),
States
=
1
,
SumStatus
=
0
,
Sort
=
2
},
new
cof_alias
{
Alias
=
"核算单元"
,
Name
=
nameof
(
view_allot_sign_emp
.
AccountingUnit
),
States
=
1
,
SumStatus
=
0
,
Sort
=
2
},
new
cof_alias
{
Alias
=
"员工号"
,
Name
=
nameof
(
view_allot_sign_emp
.
JobNumber
),
States
=
1
,
SumStatus
=
0
,
Sort
=
3
},
new
cof_alias
{
Alias
=
"员工号"
,
Name
=
nameof
(
view_allot_sign_emp
.
JobNumber
),
States
=
1
,
SumStatus
=
0
,
Sort
=
3
},
new
cof_alias
{
Alias
=
"人员姓名"
,
Name
=
nameof
(
view_allot_sign_emp
.
EmployeeName
),
States
=
1
,
SumStatus
=
0
,
Sort
=
4
},
new
cof_alias
{
Alias
=
"人员姓名"
,
Name
=
nameof
(
view_allot_sign_emp
.
EmployeeName
),
States
=
1
,
SumStatus
=
0
,
Sort
=
4
},
...
@@ -128,8 +128,8 @@ public static List<cof_alias> AllComputePersonViewByDate
...
@@ -128,8 +128,8 @@ public static List<cof_alias> AllComputePersonViewByDate
public
static
List
<
cof_alias
>
AllComputeDepartmentView
{
get
;
}
=
new
List
<
cof_alias
>
public
static
List
<
cof_alias
>
AllComputeDepartmentView
{
get
;
}
=
new
List
<
cof_alias
>
{
{
new
cof_alias
{
Alias
=
"核算单元编码"
,
Name
=
nameof
(
view_allot_sign_emp
.
Code
),
States
=
1
,
SumStatus
=
0
,
Sort
=
0
},
new
cof_alias
{
Alias
=
"核算组别"
,
Name
=
nameof
(
view_allot_sign_dept
.
UnitType
),
States
=
1
,
SumStatus
=
0
,
Sort
=
1
},
new
cof_alias
{
Alias
=
"核算组别"
,
Name
=
nameof
(
view_allot_sign_dept
.
UnitType
),
States
=
1
,
SumStatus
=
0
,
Sort
=
1
},
new
cof_alias
{
Alias
=
"核算单元编码"
,
Name
=
nameof
(
view_allot_sign_emp
.
Code
),
States
=
1
,
SumStatus
=
0
,
Sort
=
2
},
new
cof_alias
{
Alias
=
"核算单元"
,
Name
=
nameof
(
view_allot_sign_dept
.
AccountingUnit
),
States
=
1
,
SumStatus
=
0
,
Sort
=
2
},
new
cof_alias
{
Alias
=
"核算单元"
,
Name
=
nameof
(
view_allot_sign_dept
.
AccountingUnit
),
States
=
1
,
SumStatus
=
0
,
Sort
=
2
},
new
cof_alias
{
Alias
=
"业绩绩效"
,
Name
=
nameof
(
view_allot_sign_dept
.
PerforFee
),
States
=
1
,
SumStatus
=
1
,
Sort
=
3
},
new
cof_alias
{
Alias
=
"业绩绩效"
,
Name
=
nameof
(
view_allot_sign_dept
.
PerforFee
),
States
=
1
,
SumStatus
=
1
,
Sort
=
3
},
new
cof_alias
{
Alias
=
"工作量绩效"
,
Name
=
nameof
(
view_allot_sign_dept
.
WorkloadFee
),
States
=
1
,
SumStatus
=
1
,
Sort
=
4
},
new
cof_alias
{
Alias
=
"工作量绩效"
,
Name
=
nameof
(
view_allot_sign_dept
.
WorkloadFee
),
States
=
1
,
SumStatus
=
1
,
Sort
=
4
},
...
...
performance/Performance.Services/SecondAllotService.cs
View file @
d7a54454
...
@@ -892,19 +892,28 @@ public bool DelValue(int secondId, List<ag_fixatitem> oldFixatItems, List<ag_fix
...
@@ -892,19 +892,28 @@ public bool DelValue(int secondId, List<ag_fixatitem> oldFixatItems, List<ag_fix
/// </summary>
/// </summary>
/// <param name="userId"></param>
/// <param name="userId"></param>
/// <returns></returns>
/// <returns></returns>
public
List
<
SecondTempResponse
>
GetTemp
(
int
hospitalid
,
string
department
,
int
userId
)
public
List
<
SecondTempResponse
>
GetTemp
(
int
hospitalid
,
string
unitType
,
string
department
,
int
userId
)
{
{
var
temps
=
agtempRepository
.
GetEntities
(
t
=>
t
.
IsEnable
==
1
);
var
temps
=
agtempRepository
.
GetEntities
(
t
=>
t
.
IsEnable
==
1
);
if
(
temps
!=
null
&&
temps
.
Any
())
if
(
temps
!=
null
&&
temps
.
Any
())
{
{
ag_usetemp
useTemp
=
null
;
if
(
string
.
IsNullOrEmpty
(
unitType
))
{
var
userCenter
=
userRepository
.
GetUser
(
userId
);
var
userCenter
=
userRepository
.
GetUser
(
userId
);
var
unitType
=
UnitTypeUtil
.
GetMaps
(
userCenter
?.
URole
.
Type
??
0
);
var
unitTypes
=
UnitTypeUtil
.
GetMaps
(
userCenter
?.
URole
.
Type
??
0
);
Expression
<
Func
<
ag_usetemp
,
bool
>>
exp
=
t
=>
t
.
HospitalId
==
hospitalid
&&
t
.
Department
==
department
;
Expression
<
Func
<
ag_usetemp
,
bool
>>
exp
=
t
=>
t
.
HospitalId
==
hospitalid
&&
t
.
Department
==
department
;
if
(
userCenter
?.
URole
!=
null
&&
userCenter
.
URole
.
Type
.
HasValue
)
if
(
userCenter
?.
URole
!=
null
&&
userCenter
.
URole
.
Type
.
HasValue
)
exp
=
exp
.
And
(
t
=>
unitType
.
Contains
(
t
.
UnitType
));
exp
=
exp
.
And
(
t
=>
unitTypes
.
Contains
(
t
.
UnitType
));
useTemp
=
agusetempRepository
.
GetEntity
(
exp
);
}
else
{
useTemp
=
agusetempRepository
.
GetEntity
(
t
=>
t
.
HospitalId
==
hospitalid
&&
t
.
UnitType
==
unitType
&&
t
.
Department
==
department
);
}
var
useTemp
=
agusetempRepository
.
GetEntity
(
exp
);
var
secondTemps
=
_mapper
.
Map
<
List
<
SecondTempResponse
>>(
temps
);
var
secondTemps
=
_mapper
.
Map
<
List
<
SecondTempResponse
>>(
temps
);
if
(
useTemp
!=
null
)
if
(
useTemp
!=
null
)
secondTemps
.
ForEach
(
t
=>
t
.
IsSelected
=
t
.
Id
==
useTemp
.
UseTempId
);
secondTemps
.
ForEach
(
t
=>
t
.
IsSelected
=
t
.
Id
==
useTemp
.
UseTempId
);
...
...
performance/Performance.Services/UserService.cs
View file @
d7a54454
...
@@ -69,7 +69,7 @@ public UserIdentity Login(LoginRequest request)
...
@@ -69,7 +69,7 @@ public UserIdentity Login(LoginRequest request)
{
{
var
user
=
_userRepository
.
GetEntity
(
t
=>
t
.
Login
==
request
.
Account
&&
t
.
IsDelete
==
1
);
var
user
=
_userRepository
.
GetEntity
(
t
=>
t
.
Login
==
request
.
Account
&&
t
.
IsDelete
==
1
);
if
(
user
==
null
)
if
(
user
==
null
)
throw
new
PerformanceException
(
$"
用户不存在 UserId:
{
request
.
Account
}
"
);
throw
new
PerformanceException
(
$"
“
{
request
.
Account
}
”用户不存在
"
);
//MD5小写加密
//MD5小写加密
request
.
Password
=
PwdHelper
.
MD5AndSalt
(
request
.
Password
);
request
.
Password
=
PwdHelper
.
MD5AndSalt
(
request
.
Password
);
...
...
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