Commit 748e0d7a by 纪旭 韦

考勤代码调整,考勤记录增加考勤时间冲突判断,考勤统计增加出勤天数

parent 6193a529
...@@ -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
......
...@@ -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);
......
...@@ -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="" />
......
...@@ -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)">
......
...@@ -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
......
...@@ -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科室
......
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; }
}
}
using System; using System;
using System.Collections.Generic;
using System.Text; using System.Text;
namespace Performance.DtoModels namespace Performance.DtoModels
......
...@@ -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; }
}
} }
...@@ -47,73 +47,58 @@ public class AttendanceService : IAutoInjection ...@@ -47,73 +47,58 @@ public class AttendanceService : IAutoInjection
} }
#region 初始考勤页面 #region 初始考勤页面
public AttendanceResponse<List<InitialAttendance>> GetAttendance(int allotId) public ApiResponse<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("调入")).AttendanceDate; var begDate = attendances.ElementAt(i).AttendanceDate.Value.Date;
temp.StartDate = item.AttendanceDate; 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 AttendanceResponse<List<view_attendance>> GetCallIn(int allotId) public ApiResponse<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)},
};
}
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment