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
748e0d7a
Commit
748e0d7a
authored
Apr 02, 2022
by
纪旭 韦
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
考勤代码调整,考勤记录增加考勤时间冲突判断,考勤统计增加出勤天数
parent
6193a529
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
235 additions
and
216 deletions
+235
-216
performance/Performance.Api/Configurations/SwaggerConfig.cs
+12
-12
performance/Performance.Api/Controllers/AttendanceController.cs
+2
-1
performance/Performance.Api/Performance.Api.csproj
+7
-0
performance/Performance.Api/wwwroot/Performance.Api.xml
+1
-2
performance/Performance.Api/wwwroot/Performance.DtoModels.xml
+50
-0
performance/Performance.Api/wwwroot/Performance.EntityModels.xml
+0
-50
performance/Performance.DtoModels/Response/AttendanceStatistics.cs
+58
-0
performance/Performance.DtoModels/Response/ComputeResponse.cs
+0
-1
performance/Performance.EntityModels/Other/view_attendance.cs
+0
-78
performance/Performance.Services/AttendanceService.cs
+105
-72
No files found.
performance/Performance.Api/Configurations/SwaggerConfig.cs
View file @
748e0d7a
...
@@ -19,20 +19,20 @@ public static void AddSwaggerConfiguration(this IServiceCollection services)
...
@@ -19,20 +19,20 @@ public static void AddSwaggerConfiguration(this IServiceCollection services)
{
{
c
.
SwaggerDoc
(
"v1"
,
new
OpenApiInfo
{
Version
=
"v1.0"
,
Title
=
"绩效API接口"
});
c
.
SwaggerDoc
(
"v1"
,
new
OpenApiInfo
{
Version
=
"v1.0"
,
Title
=
"绩效API接口"
});
//
var xmlPath = new string[]
var
xmlPath
=
new
string
[]
//
{
{
//
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wwwroot", "Performance.Api.xml"),
Path
.
Combine
(
AppDomain
.
CurrentDomain
.
BaseDirectory
,
"wwwroot"
,
"Performance.Api.xml"
),
//
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wwwroot", "Performance.DtoModels.xml"),
Path
.
Combine
(
AppDomain
.
CurrentDomain
.
BaseDirectory
,
"wwwroot"
,
"Performance.DtoModels.xml"
),
//
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wwwroot", "Performance.EntityModels.xml"),
Path
.
Combine
(
AppDomain
.
CurrentDomain
.
BaseDirectory
,
"wwwroot"
,
"Performance.EntityModels.xml"
),
//
};
};
//
foreach (var item in xmlPath)
foreach
(
var
item
in
xmlPath
)
//
{
{
//
c.IncludeXmlComments(item, true);
c
.
IncludeXmlComments
(
item
,
true
);
//
}
}
var
xmlPathsss
=
Path
.
Combine
(
AppDomain
.
CurrentDomain
.
BaseDirectory
,
"wwwroot"
,
"Performance.Api.xml"
);
//
var xmlPathsss = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wwwroot", "Performance.Api.xml");
c
.
IncludeXmlComments
(
xmlPathsss
,
true
);
//
c.IncludeXmlComments(xmlPathsss, true);
// Token绑定到ConfigureServices
// Token绑定到ConfigureServices
var
security
=
new
OpenApiSecurityRequirement
var
security
=
new
OpenApiSecurityRequirement
...
...
performance/Performance.Api/Controllers/AttendanceController.cs
View file @
748e0d7a
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
using
Performance.DtoModels
;
using
Performance.DtoModels
;
using
Performance.EntityModels.Other
;
using
Performance.EntityModels.Other
;
using
Performance.Services
;
using
Performance.Services
;
using
System.Collections.Generic
;
namespace
Performance.Api.Controllers
namespace
Performance.Api.Controllers
{
{
...
@@ -181,7 +182,7 @@ public ApiResponse AttendanceBatch(int allotId, int hospitalId, SaveCollectData
...
@@ -181,7 +182,7 @@ public ApiResponse AttendanceBatch(int allotId, int hospitalId, SaveCollectData
/// <param name="allotId"></param>
/// <param name="allotId"></param>
/// <returns></returns>
/// <returns></returns>
[
HttpGet
(
"statistics/{allotId}"
)]
[
HttpGet
(
"statistics/{allotId}"
)]
public
ApiResponse
GetAttendanceStatistics
(
int
allotId
)
public
ApiResponse
<
List
<
AttendanceStatistics
>>
GetAttendanceStatistics
(
int
allotId
)
{
{
// 返回结果参考接口 employee/apr/getdeptdetail
// 返回结果参考接口 employee/apr/getdeptdetail
return
_attendanceService
.
GetAttendanceStatistics
(
allotId
);
return
_attendanceService
.
GetAttendanceStatistics
(
allotId
);
...
...
performance/Performance.Api/Performance.Api.csproj
View file @
748e0d7a
...
@@ -48,6 +48,9 @@
...
@@ -48,6 +48,9 @@
<Content Update="wwwroot\Performance.Api.xml">
<Content Update="wwwroot\Performance.Api.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</Content>
<Content Update="wwwroot\Performance.DtoModels.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\Performance.EntityModels.xml">
<Content Update="wwwroot\Performance.EntityModels.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</Content>
...
@@ -86,6 +89,10 @@
...
@@ -86,6 +89,10 @@
</None>
</None>
</ItemGroup>
</ItemGroup>
<ItemGroup>
<Folder Include="wwwroot\" />
</ItemGroup>
<ProjectExtensions>
<ProjectExtensions>
<VisualStudio>
<VisualStudio>
<UserProperties appsettings_1json__JSONSchema="" />
<UserProperties appsettings_1json__JSONSchema="" />
...
...
performance/Performance.Api/wwwroot/Performance.Api.xml
View file @
748e0d7a
...
@@ -388,12 +388,11 @@
...
@@ -388,12 +388,11 @@
<param
name=
"request"
></param>
<param
name=
"request"
></param>
<returns></returns>
<returns></returns>
</member>
</member>
<member
name=
"M:Performance.Api.Controllers.AttendanceController.GetAttendanceStatistics(System.Int32
,System.Int32
)"
>
<member
name=
"M:Performance.Api.Controllers.AttendanceController.GetAttendanceStatistics(System.Int32)"
>
<summary>
<summary>
考勤结果统计
考勤结果统计
</summary>
</summary>
<param
name=
"allotId"
></param>
<param
name=
"allotId"
></param>
<param
name=
"hospitalId"
></param>
<returns></returns>
<returns></returns>
</member>
</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)"
>
...
...
performance/Performance.Api/wwwroot/Performance.DtoModels.xml
View file @
748e0d7a
...
@@ -2703,6 +2703,56 @@
...
@@ -2703,6 +2703,56 @@
科室
科室
</summary>
</summary>
</member>
</member>
<member
name=
"P:Performance.DtoModels.AttendanceStatistics.UnitType"
>
<summary>
核算组别
</summary>
</member>
<member
name=
"P:Performance.DtoModels.AttendanceStatistics.AccountingUnit"
>
<summary>
核算单元
</summary>
</member>
<member
name=
"P:Performance.DtoModels.AttendanceStatistics.Department"
>
<summary>
科室名称
</summary>
</member>
<member
name=
"P:Performance.DtoModels.AttendanceStatistics.PersonnelNumber"
>
<summary>
工号
</summary>
</member>
<member
name=
"P:Performance.DtoModels.AttendanceStatistics.PersonnelName"
>
<summary>
姓名
</summary>
</member>
<member
name=
"P:Performance.DtoModels.AttendanceStatistics.BeginDate"
>
<summary>
在科开始时间
</summary>
</member>
<member
name=
"P:Performance.DtoModels.AttendanceStatistics.EndDate"
>
<summary>
在科结束时间
</summary>
</member>
<member
name=
"P:Performance.DtoModels.AttendanceStatisticsDetial.Value"
>
<summary>
请假天数
</summary>
</member>
<member
name=
"P:Performance.DtoModels.AttendanceStatisticsDetial.Title"
>
<summary>
考勤类型
</summary>
</member>
<member
name=
"P:Performance.DtoModels.AttendanceStatisticsDetial.Remark"
>
<summary>
备注
</summary>
</member>
<member
name=
"P:Performance.DtoModels.BudgetRatioResponse.HospitalId"
>
<member
name=
"P:Performance.DtoModels.BudgetRatioResponse.HospitalId"
>
<summary>
<summary>
医院Id
医院Id
...
...
performance/Performance.Api/wwwroot/Performance.EntityModels.xml
View file @
748e0d7a
...
@@ -8850,56 +8850,6 @@
...
@@ -8850,56 +8850,6 @@
</summary>
</summary>
</member>
</member>
<member
name=
"P:Performance.EntityModels.Other.AttendanceStatistics.UnitType"
>
<summary>
核算组别
</summary>
</member>
<member
name=
"P:Performance.EntityModels.Other.AttendanceStatistics.AccountingUnit"
>
<summary>
核算单元
</summary>
</member>
<member
name=
"P:Performance.EntityModels.Other.AttendanceStatistics.Department"
>
<summary>
科室名称
</summary>
</member>
<member
name=
"P:Performance.EntityModels.Other.AttendanceStatistics.PersonnelNumber"
>
<summary>
工号
</summary>
</member>
<member
name=
"P:Performance.EntityModels.Other.AttendanceStatistics.PersonnelName"
>
<summary>
姓名
</summary>
</member>
<member
name=
"P:Performance.EntityModels.Other.AttendanceStatistics.BeginDate"
>
<summary>
在科开始时间
</summary>
</member>
<member
name=
"P:Performance.EntityModels.Other.AttendanceStatistics.EndDate"
>
<summary>
在科结束时间
</summary>
</member>
<member
name=
"P:Performance.EntityModels.Other.AttendanceStatisticsDetial.Value"
>
<summary>
请假天数
</summary>
</member>
<member
name=
"P:Performance.EntityModels.Other.AttendanceStatisticsDetial.Title"
>
<summary>
考勤类型
</summary>
</member>
<member
name=
"P:Performance.EntityModels.Other.AttendanceStatisticsDetial.Remark"
>
<summary>
备注
</summary>
</member>
<member
name=
"P:Performance.EntityModels.HisData.HisDepartment"
>
<member
name=
"P:Performance.EntityModels.HisData.HisDepartment"
>
<summary>
<summary>
His科室
His科室
...
...
performance/Performance.DtoModels/Response/AttendanceStatistics.cs
0 → 100644
View file @
748e0d7a
using
System
;
using
System.Collections.Generic
;
namespace
Performance.DtoModels
{
public
class
AttendanceStatistics
{
public
int
AllotID
{
get
;
set
;
}
/// <summary>
/// 核算组别
/// </summary>
public
string
UnitType
{
get
;
set
;
}
/// <summary>
/// 核算单元
/// </summary>
public
string
AccountingUnit
{
get
;
set
;
}
/// <summary>
/// 科室名称
/// </summary>
public
string
Department
{
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
;
}
public
List
<
AttendanceStatisticsDetial
>
Detial
{
get
;
set
;
}
public
int
AttendanceDays
{
get
;
set
;
}
}
public
class
AttendanceStatisticsDetial
{
/// <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/ComputeResponse.cs
View file @
748e0d7a
using
System
;
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
using
System.Text
;
namespace
Performance.DtoModels
namespace
Performance.DtoModels
...
...
performance/Performance.EntityModels/Other/view_attendance.cs
View file @
748e0d7a
...
@@ -60,84 +60,6 @@ public class AttendanceType
...
@@ -60,84 +60,6 @@ public class AttendanceType
}
}
public
class
AttendanceResponse
<
T
>
{
public
List
<
AttendaceHeads
>
Heads
{
get
;
set
;
}
public
T
Datas
{
get
;
set
;
}
}
public
class
AttendancesJoinVacatione
{
public
string
AccountingUnit
{
get
;
set
;
}
public
string
Department
{
get
;
set
;
}
public
string
PersonnelName
{
get
;
set
;
}
public
string
PersonnelNumber
{
get
;
set
;
}
public
string
UnitType
{
get
;
set
;
}
public
DateTime
?
StartDate
{
get
;
set
;
}
public
DateTime
?
EndDate
{
get
;
set
;
}
public
List
<
Detail
>
Detail
{
get
;
set
;
}
public
int
AttendanceDays
{
get
;
set
;
}
}
public
class
Detail
{
public
string
Title
{
get
;
set
;
}
public
DateTime
?
BegDate
{
get
;
set
;
}
public
DateTime
EndDate
{
get
;
set
;
}
public
int
IsDeduction
{
get
;
set
;
}
public
int
VacationDays
{
get
;
set
;
}
}
public
class
AttendanceStatistics
{
public
int
AllotID
{
get
;
set
;
}
/// <summary>
/// 核算组别
/// </summary>
public
string
UnitType
{
get
;
set
;
}
/// <summary>
/// 核算单元
/// </summary>
public
string
AccountingUnit
{
get
;
set
;
}
/// <summary>
/// 科室名称
/// </summary>
public
string
Department
{
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
;
}
public
List
<
AttendanceStatisticsDetial
>
Detial
{
get
;
set
;
}
}
public
class
AttendanceStatisticsDetial
{
/// <summary>
/// 请假天数
/// </summary>
public
int
Value
{
get
;
set
;
}
/// <summary>
/// 考勤类型
/// </summary>
public
string
Title
{
get
;
set
;
}
/// <summary>
/// 备注
/// </summary>
public
string
Remark
{
get
;
set
;
}
}
}
}
performance/Performance.Services/AttendanceService.cs
View file @
748e0d7a
...
@@ -47,73 +47,58 @@ public class AttendanceService : IAutoInjection
...
@@ -47,73 +47,58 @@ public class AttendanceService : IAutoInjection
}
}
#
region
初始考勤页面
#
region
初始考勤页面
public
A
ttendanceResponse
<
List
<
InitialAttendance
>>
GetAttendance
(
int
allotId
)
public
A
piResponse
<
List
<
AttendanceStatistics
>>
GetAttendance
(
int
allotId
)
{
{
var
allot
=
perforPerallotRepository
.
GetEntity
(
w
=>
w
.
ID
==
allotId
);
if
(
allot
==
null
)
throw
new
PerformanceException
(
"当前绩效记录不存在"
);
var
attendanceData
=
perforPerallotRepository
.
GetAttendance
(
allotId
);
var
attendanceData
=
perforPerallotRepository
.
GetAttendance
(
allotId
);
if
(
attendanceData
==
null
||
!
attendanceData
.
Any
())
return
new
AttendanceResponse
<
List
<
InitialAttendance
>>();
var
attendances
=
new
List
<
InitialAttendance
>();
foreach
(
var
item
in
attendanceData
)
List
<
AttendanceStatistics
>
statistics
=
new
List
<
AttendanceStatistics
>();
{
// 交叉补全科室结束时间
if
(!
item
.
Source
.
Contains
(
"结束"
))
foreach
(
var
personnelNumber
in
attendanceData
.
Select
(
w
=>
w
.
PersonnelNumber
).
Distinct
())
{
var
temp
=
new
InitialAttendance
{
{
AccountingUnit
=
item
.
AccountingUnit
,
var
attendances
=
attendanceData
.
Where
(
w
=>
w
.
PersonnelNumber
==
personnelNumber
).
OrderBy
(
w
=>
w
.
AttendanceDate
);
Department
=
item
.
Department
,
for
(
int
i
=
0
;
i
<
attendances
.
Count
()
-
1
;
i
++)
PersonnelName
=
item
.
PersonnelName
,
PersonnelNumber
=
item
.
PersonnelNumber
,
UnitType
=
item
.
UnitType
,
};
var
select
=
attendanceData
.
Where
(
t
=>
t
.
PersonnelNumber
==
item
.
PersonnelNumber
&&
t
.
AccountingUnit
==
item
.
AccountingUnit
);
if
(
item
.
Source
.
Contains
(
"开始"
)
&&
!
select
.
Any
(
t
=>
t
.
Source
.
Contains
(
"结束"
)))
{
{
var
callInDate
=
attendanceData
.
FirstOrDefault
(
t
=>
t
.
PersonnelNumber
==
item
.
PersonnelNumber
&&
t
.
AttendanceDate
>=
item
.
AttendanceDate
&&
t
.
Source
.
Contains
(
"调入"
)).
Attendance
Date
;
var
begDate
=
attendances
.
ElementAt
(
i
).
AttendanceDate
.
Value
.
Date
;
temp
.
StartDate
=
item
.
Attendance
Date
;
var
endDate
=
attendances
.
ElementAt
(
i
+
1
).
AttendanceDate
.
Value
.
Date
;
temp
.
EndDate
=
callInDate
;
// 调入科室需要额外减去1天作为上一个科室结束时间
}
var
days
=
attendances
.
ElementAt
(
i
+
1
).
Source
==
Attendance
.
Type
.
调入
.
ToString
()
?
-
1
:
0
;
else
if
(
item
.
Source
.
Contains
(
"调入"
)
&&
!
select
.
Any
(
t
=>
t
.
Source
.
Contains
(
"开始"
))
)
if
(
endDate
>
begDate
)
{
{
var
endDate
=
attendanceData
.
FirstOrDefault
(
t
=>
t
.
PersonnelNumber
==
item
.
PersonnelNumber
&&
t
.
AttendanceDate
>=
item
.
AttendanceDate
&&
t
.
Source
.
Contains
(
"结束"
));
var
stat
=
new
AttendanceStatistics
temp
.
StartDate
=
item
.
AttendanceDate
;
temp
.
EndDate
=
endDate
.
AttendanceDate
;
temp
.
Department
=
endDate
.
Department
;
}
else
{
{
temp
.
StartDate
=
select
.
FirstOrDefault
(
data
=>
data
.
Source
.
Contains
(
"开始"
)).
AttendanceDate
;
AllotID
=
attendances
.
ElementAt
(
i
).
ALLOTID
,
temp
.
EndDate
=
select
.
FirstOrDefault
(
data
=>
data
.
Source
.
Contains
(
"结束"
)).
AttendanceDate
;
UnitType
=
attendances
.
ElementAt
(
i
).
UnitType
,
AccountingUnit
=
attendances
.
ElementAt
(
i
).
AccountingUnit
,
Department
=
attendances
.
ElementAt
(
i
).
Department
,
PersonnelNumber
=
attendances
.
ElementAt
(
i
).
PersonnelNumber
,
PersonnelName
=
attendances
.
ElementAt
(
i
).
PersonnelName
,
BeginDate
=
begDate
,
EndDate
=
endDate
.
AddDays
(
days
),
Detial
=
new
List
<
AttendanceStatisticsDetial
>()
};
statistics
.
Add
(
stat
);
}
}
attendances
.
Add
(
temp
);
}
}
}
}
AttendanceResponse
<
List
<
InitialAttendance
>>
attendanceResponse
=
new
AttendanceResponse
<
List
<
InitialAttendance
>>()
return
new
ApiResponse
<
List
<
AttendanceStatistics
>>(
ResponseType
.
OK
,
""
,
statistics
);
{
Heads
=
AttendanceConfig
.
AttendcanceHeads
,
Datas
=
attendances
};
return
attendanceResponse
;
}
}
#
endregion
#
endregion
#
region
调入记录
#
region
调入记录
public
A
ttendance
Response
<
List
<
view_attendance
>>
GetCallIn
(
int
allotId
)
public
A
pi
Response
<
List
<
view_attendance
>>
GetCallIn
(
int
allotId
)
{
{
var
view_attendance
=
perforPerallotRepository
.
GetAttendance
(
allotId
).
Where
(
t
=>
t
.
Source
.
Contains
(
"调入"
)).
ToList
();
var
view_attendance
=
perforPerallotRepository
.
GetAttendance
(
allotId
).
Where
(
t
=>
t
.
Source
.
Contains
(
"调入"
)).
ToList
();
AttendanceResponse
<
List
<
view_attendance
>>
attendanceResponse
=
new
AttendanceResponse
<
List
<
view_attendance
>>()
return
new
ApiResponse
<
List
<
view_attendance
>>(
ResponseType
.
OK
,
""
,
view_attendance
);
{
Heads
=
AttendanceConfig
.
CallinlAttendcanceHeads
,
Datas
=
view_attendance
};
return
attendanceResponse
;
}
}
public
HandsonTable
GetBatchCallInHandsonTable
()
public
HandsonTable
GetBatchCallInHandsonTable
()
{
{
...
@@ -199,7 +184,7 @@ public ApiResponse BatchCallIn(int allotId, int hospitalId, SaveCollectData requ
...
@@ -199,7 +184,7 @@ public ApiResponse BatchCallIn(int allotId, int hospitalId, SaveCollectData requ
{
"调入组别"
,
newAttendanceVacatione
[
i
].
CallInUnitType
??
""
},
{
"调入组别"
,
newAttendanceVacatione
[
i
].
CallInUnitType
??
""
},
{
"调入时间"
,
newAttendanceVacatione
[
i
].
CallInDate
.
ToString
()??
""
},
{
"调入时间"
,
newAttendanceVacatione
[
i
].
CallInDate
.
ToString
()??
""
},
{
"来源"
,
"粘贴数据"
},
{
"来源"
,
"粘贴数据"
},
{
"错误原因"
,
"调入时间不在
本月
范围内"
},
{
"错误原因"
,
"调入时间不在
当前绩效月份
范围内"
},
});
});
}
}
...
@@ -386,9 +371,11 @@ public ApiResponse AttendanceBatch(int allotId, int hospitalId, SaveCollectData
...
@@ -386,9 +371,11 @@ public ApiResponse AttendanceBatch(int allotId, int hospitalId, SaveCollectData
var
newAttendanceVacatione
=
JsonHelper
.
Deserialize
<
List
<
RecordAttendcance
>>(
jsons
);
var
newAttendanceVacatione
=
JsonHelper
.
Deserialize
<
List
<
RecordAttendcance
>>(
jsons
);
var
oldAttendanceVacatione
=
perfoPperAttendanceVacationeRepository
.
GetEntities
(
t
=>
t
.
AllotId
==
allotId
&&
t
.
HospitalId
==
hospitalId
);
var
oldAttendanceVacatione
=
perfoPperAttendanceVacationeRepository
.
GetEntities
(
t
=>
t
.
AllotId
==
allotId
&&
t
.
HospitalId
==
hospitalId
);
var
attendanceType
=
perfoPperAttendanceTypeRepository
.
GetEntities
();
var
per_employee
=
perforPeremployeeRepository
.
GetEntities
(
t
=>
t
.
AllotId
==
allotId
&&
t
.
HospitalId
==
hospitalId
);
var
per_employee
=
perforPeremployeeRepository
.
GetEntities
(
t
=>
t
.
AllotId
==
allotId
&&
t
.
HospitalId
==
hospitalId
);
List
<
Dictionary
<
string
,
string
>>
error
=
new
List
<
Dictionary
<
string
,
string
>>();
List
<
Dictionary
<
string
,
string
>>
error
=
new
List
<
Dictionary
<
string
,
string
>>();
var
per_allot
=
perforPerallotRepository
.
GetEntities
(
t
=>
t
.
ID
==
allotId
&&
t
.
HospitalId
==
hospitalId
).
FirstOrDefault
();
for
(
int
i
=
0
;
i
<
newAttendanceVacatione
.
Count
;
i
++)
for
(
int
i
=
0
;
i
<
newAttendanceVacatione
.
Count
;
i
++)
{
{
...
@@ -412,6 +399,21 @@ public ApiResponse AttendanceBatch(int allotId, int hospitalId, SaveCollectData
...
@@ -412,6 +399,21 @@ public ApiResponse AttendanceBatch(int allotId, int hospitalId, SaveCollectData
});
});
}
}
var
typeAny
=
attendanceType
.
Where
(
t
=>
t
.
AttendanceName
.
Contains
(
newAttendanceVacatione
[
i
].
AttendanceName
));
if
(
typeAny
==
null
||
!
typeAny
.
Any
())
{
error
.
Add
(
new
Dictionary
<
string
,
string
>
{
{
"行号"
,
$"第
{
i
+
1
}
行"
},
{
"人员工号"
,
newAttendanceVacatione
[
i
].
PersonnelNumber
??
""
},
{
"人员姓名"
,
newAttendanceVacatione
[
i
].
PersonnelName
??
""
},
{
"考勤类型"
,
newAttendanceVacatione
[
i
].
AttendanceName
??
""
},
{
"开始日期"
,
newAttendanceVacatione
[
i
].
BegDate
.
ToString
()??
""
},
{
"结束日期"
,
newAttendanceVacatione
[
i
].
EndDate
.
ToString
()??
""
},
{
"来源"
,
"粘贴数据"
},
{
"错误原因"
,
"没有该考勤类型"
},
});
}
if
(
newAttendanceVacatione
[
i
].
PersonnelName
!=
per_employee
.
FirstOrDefault
(
t
=>
t
.
PersonnelNumber
==
newAttendanceVacatione
[
i
].
PersonnelNumber
&&
t
.
AllotId
==
allotId
&&
t
.
HospitalId
==
hospitalId
)?.
DoctorName
)
if
(
newAttendanceVacatione
[
i
].
PersonnelName
!=
per_employee
.
FirstOrDefault
(
t
=>
t
.
PersonnelNumber
==
newAttendanceVacatione
[
i
].
PersonnelNumber
&&
t
.
AllotId
==
allotId
&&
t
.
HospitalId
==
hospitalId
)?.
DoctorName
)
{
{
error
.
Add
(
new
Dictionary
<
string
,
string
>
error
.
Add
(
new
Dictionary
<
string
,
string
>
...
@@ -440,6 +442,51 @@ public ApiResponse AttendanceBatch(int allotId, int hospitalId, SaveCollectData
...
@@ -440,6 +442,51 @@ public ApiResponse AttendanceBatch(int allotId, int hospitalId, SaveCollectData
{
"来源"
,
"“粘贴数据”与“历史数据”比对"
},
{
"来源"
,
"“粘贴数据”与“历史数据”比对"
},
{
"错误原因"
,
$"原名“
{
oldEmp
.
PersonnelName
}
”,工号相同但姓名不同,请删除“历史数据”中该员工"
},
{
"错误原因"
,
$"原名“
{
oldEmp
.
PersonnelName
}
”,工号相同但姓名不同,请删除“历史数据”中该员工"
},
});
});
}
DateTime
dt
=
new
DateTime
(
per_allot
.
Year
,
per_allot
.
Month
,
1
);
if
(
newAttendanceVacatione
[
i
].
BegDate
>=
dt
&&
newAttendanceVacatione
[
i
].
EndDate
>
dt
.
AddMonths
(
1
))
{
error
.
Add
(
new
Dictionary
<
string
,
string
>
{
{
"行号"
,
$"第
{
i
+
1
}
行"
},
{
"人员工号"
,
newAttendanceVacatione
[
i
].
PersonnelNumber
??
""
},
{
"人员姓名"
,
newAttendanceVacatione
[
i
].
PersonnelName
??
""
},
{
"考勤类型"
,
newAttendanceVacatione
[
i
].
AttendanceName
??
""
},
{
"开始日期"
,
newAttendanceVacatione
[
i
].
BegDate
.
ToString
()??
""
},
{
"结束日期"
,
newAttendanceVacatione
[
i
].
EndDate
.
ToString
()??
""
},
{
"来源"
,
"粘贴数据"
},
{
"错误原因"
,
"考勤时间不在该绩效月份内"
},
});
}
var
newDate
=
SplitEveryDay
(
Convert
.
ToDateTime
(
newAttendanceVacatione
[
i
].
BegDate
),
Convert
.
ToDateTime
(
newAttendanceVacatione
[
i
].
EndDate
));
foreach
(
var
item
in
oldAttendanceVacatione
.
Where
(
w
=>
w
.
PersonnelNumber
==
newAttendanceVacatione
[
i
].
PersonnelNumber
))
{
var
oldDate
=
SplitEveryDay
(
Convert
.
ToDateTime
(
item
.
BegDate
),
Convert
.
ToDateTime
(
item
.
EndDate
));
bool
any
=
false
;
foreach
(
var
old
in
oldDate
)
{
if
(
newDate
.
Contains
(
old
))
any
=
true
;
}
if
(
any
)
error
.
Add
(
new
Dictionary
<
string
,
string
>
{
{
"行号"
,
$"第
{
i
+
1
}
行"
},
{
"人员工号"
,
newAttendanceVacatione
[
i
].
PersonnelNumber
??
""
},
{
"人员姓名"
,
newAttendanceVacatione
[
i
].
PersonnelName
??
""
},
{
"考勤类型"
,
newAttendanceVacatione
[
i
].
AttendanceName
??
""
},
{
"开始日期"
,
newAttendanceVacatione
[
i
].
BegDate
.
ToString
()??
""
},
{
"结束日期"
,
newAttendanceVacatione
[
i
].
EndDate
.
ToString
()??
""
},
{
"来源"
,
"粘贴数据"
},
{
"错误原因"
,
"该考勤时间范围与历史考勤时间冲突"
},
});
}
}
}
}
if
(
error
.
Count
>
0
)
if
(
error
.
Count
>
0
)
...
@@ -469,7 +516,7 @@ public ApiResponse AttendanceBatch(int allotId, int hospitalId, SaveCollectData
...
@@ -469,7 +516,7 @@ public ApiResponse AttendanceBatch(int allotId, int hospitalId, SaveCollectData
}
}
#
endregion
#
endregion
public
ApiResponse
GetAttendanceStatistics
(
int
allotId
)
public
ApiResponse
<
List
<
AttendanceStatistics
>>
GetAttendanceStatistics
(
int
allotId
)
{
{
var
allot
=
perforPerallotRepository
.
GetEntity
(
w
=>
w
.
ID
==
allotId
);
var
allot
=
perforPerallotRepository
.
GetEntity
(
w
=>
w
.
ID
==
allotId
);
if
(
allot
==
null
)
if
(
allot
==
null
)
...
@@ -482,7 +529,7 @@ public ApiResponse GetAttendanceStatistics(int allotId)
...
@@ -482,7 +529,7 @@ public ApiResponse GetAttendanceStatistics(int allotId)
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);
List
<
AttendanceStatistics
>
statistics
=
new
List
<
AttendanceStatistics
>();
List
<
AttendanceStatistics
>
statistics
=
new
List
<
AttendanceStatistics
>();
// 交叉补全科室结束时间
// 交叉补全科室结束时间
...
@@ -536,8 +583,16 @@ public ApiResponse GetAttendanceStatistics(int allotId)
...
@@ -536,8 +583,16 @@ public ApiResponse GetAttendanceStatistics(int allotId)
Remark
=
w
.
Remark
,
Remark
=
w
.
Remark
,
})
})
.
ToList
();
.
ToList
();
int
vacationesDays
=
0
;
foreach
(
var
item
in
stat
.
Detial
)
{
if
(!
item
.
Remark
.
Contains
(
"不核减"
))
vacationesDays
+=
item
.
Value
;
}
stat
.
AttendanceDays
=
SplitEveryDay
(
stat
.
BeginDate
,
stat
.
EndDate
).
Where
(
date
=>
date
>=
stat
.
BeginDate
&&
date
<=
stat
.
EndDate
).
Count
()
-
vacationesDays
;
}
}
return
new
ApiResponse
(
ResponseType
.
OK
,
""
,
statistics
);
return
new
ApiResponse
<
List
<
AttendanceStatistics
>>
(
ResponseType
.
OK
,
""
,
statistics
);
}
}
// 拆分请假时间段为每个日期
// 拆分请假时间段为每个日期
...
@@ -602,27 +657,5 @@ private List<DateTime> SplitEveryDay(DateTime begin, DateTime end)
...
@@ -602,27 +657,5 @@ private List<DateTime> SplitEveryDay(DateTime begin, DateTime end)
(
nameof
(
RecordAttendcance
.
BegDate
),
"开始时间"
,
t
=>
t
.
BegDate
),
(
nameof
(
RecordAttendcance
.
BegDate
),
"开始时间"
,
t
=>
t
.
BegDate
),
(
nameof
(
RecordAttendcance
.
EndDate
),
"结束时间"
,
t
=>
t
.
EndDate
),
(
nameof
(
RecordAttendcance
.
EndDate
),
"结束时间"
,
t
=>
t
.
EndDate
),
};
};
public
class
AttendanceConfig
{
public
static
List
<
AttendaceHeads
>
AttendcanceHeads
{
get
;
}
=
new
List
<
AttendaceHeads
>
{
new
AttendaceHeads
{
Column
=
"核算单元名称"
,
Name
=
nameof
(
InitialAttendance
.
AccountingUnit
)},
new
AttendaceHeads
{
Column
=
"科室名称"
,
Name
=
nameof
(
InitialAttendance
.
Department
)},
new
AttendaceHeads
{
Column
=
"姓名"
,
Name
=
nameof
(
InitialAttendance
.
PersonnelName
)},
new
AttendaceHeads
{
Column
=
"员工工号"
,
Name
=
nameof
(
InitialAttendance
.
PersonnelNumber
)},
new
AttendaceHeads
{
Column
=
"人员组别"
,
Name
=
nameof
(
InitialAttendance
.
UnitType
)},
new
AttendaceHeads
{
Column
=
"在科开始日期"
,
Name
=
nameof
(
InitialAttendance
.
StartDate
)},
new
AttendaceHeads
{
Column
=
"在科结束日期"
,
Name
=
nameof
(
InitialAttendance
.
EndDate
)},
};
public
static
List
<
AttendaceHeads
>
CallinlAttendcanceHeads
{
get
;
}
=
new
List
<
AttendaceHeads
>
{
new
AttendaceHeads
{
Column
=
"人员姓名"
,
Name
=
nameof
(
per_attendance
.
PersonnelName
)},
new
AttendaceHeads
{
Column
=
"员工工号"
,
Name
=
nameof
(
per_attendance
.
PersonnelNumber
)},
new
AttendaceHeads
{
Column
=
"调入核算单元"
,
Name
=
nameof
(
per_attendance
.
CallInAccountingUnit
)},
new
AttendaceHeads
{
Column
=
"调入组别"
,
Name
=
nameof
(
per_attendance
.
CallInUnitType
)},
new
AttendaceHeads
{
Column
=
"调入时间"
,
Name
=
nameof
(
per_attendance
.
CallInDate
)},
};
}
}
}
}
}
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