Commit e4dba427 by wyc

‘考勤下发’下发数据(增删改查)\预下发显示

parent 81c9ddee
...@@ -366,29 +366,19 @@ public IActionResult DownloadStatistics(int allotId) ...@@ -366,29 +366,19 @@ public IActionResult DownloadStatistics(int allotId)
#endregion #endregion
#region 最终考勤结果 #region 最终考勤结果
//// 最终考勤结果下发 /// <summary>
/// 最终考勤结果下发(预确认显示)
//// 判断一下,是否是首次下发 /// </summary>
//// 如果首次下发 /// <param name="allotId"></param>
//// 存储到表中per_attendance_issue /// <param name="hospitalId"></param>
/// <returns></returns>
//// 不是首次下发 [HttpPost]
//// 自动驳回检查(涉及哪些人哪些科) [Route("issue/statistics/PreConfirmationDisplay")]
public ApiResponse<List<PerAttendanceIssueDto>> PreConfirmationDisplay(int allotId, int hospitalId)
///// <summary> {
///// 最终考勤结果下发(预确认显示) var userid = claim.GetUserId();
///// </summary> return _attendanceService.PreConfirmationDisplay(allotId, userid, hospitalId);
///// <param name="allotId"></param> }
///// <param name="userid"></param>
///// <returns></returns>
//[HttpPost]
//[Route("issue/statistics/PreConfirmationDisplay")]
//public ApiResponse<List<PerAttendanceIssueDto>> PreConfirmationDisplay(int allotId)
//{
// var userid = claim.GetUserId();
// return _attendanceService.PreConfirmationDisplay(allotId,userid);
//}
/// <summary> /// <summary>
/// 最终考勤结果下发 /// 最终考勤结果下发
......
...@@ -413,7 +413,7 @@ ...@@ -413,7 +413,7 @@
<param name="allotId"></param> <param name="allotId"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.AttendanceController.PreConfirmationDisplay(System.Int32)"> <member name="M:Performance.Api.Controllers.AttendanceController.PreConfirmationDisplay(System.Int32,System.Int32)">
<summary> <summary>
最终考勤结果下发(预确认显示) 最终考勤结果下发(预确认显示)
</summary> </summary>
......
...@@ -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>
操作类型
</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>
行号 行号
......
...@@ -6118,6 +6118,171 @@ ...@@ -6118,6 +6118,171 @@
修改时间 修改时间
</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>
状态
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_issue.UpdateUser">
<summary>
更新人
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_issue.UpdateTime">
<summary>
更新时间
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_issue_record.HospitalId">
<summary>
医院Id
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_issue_record.AllotId">
<summary>
绩效Id
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_issue_record.Code">
<summary>
核算单元编码
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_issue_record.UnitType">
<summary>
人员类别
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_issue_record.AccountingUnit">
<summary>
核算单元
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_issue_record.PersonnelNumber">
<summary>
工号
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_issue_record.PersonnelName">
<summary>
姓名
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_issue_record.BeginDate">
<summary>
在科开始时间
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_issue_record.EndDate">
<summary>
在科结束时间
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_issue_record.WorkFullDays">
<summary>
全勤天数
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_issue_record.AttendanceDays">
<summary>
出勤天数
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_issue_record.DeductionDays">
<summary>
核减天数
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_issue_record.NoDeductionDays">
<summary>
不核减天数
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_issue_record.State">
<summary>
状态
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_issue_record.OperationType">
<summary>
操作类型
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_issue_record.CreateUser">
<summary>
操作人
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_issue_record.CreationTime">
<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 不核减
......
...@@ -119,13 +119,15 @@ public enum Deduction ...@@ -119,13 +119,15 @@ public enum Deduction
} }
public enum State public enum State
{ {
首次下发=1, 已下发未确认 = 1,
确认=2, 确认 = 2,
确认未修改=3, 质疑 = 3,
确认已修改=4, }
质疑=5, public enum OperationType
质疑未修改=6, {
质疑已修改=7, 新增 = 1,
修改 = 2,
删除 = 3,
} }
} }
......
using System; using Performance.EntityModels.Entity;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Linq; using System.Linq;
...@@ -9,18 +10,90 @@ namespace Performance.DtoModels ...@@ -9,18 +10,90 @@ namespace Performance.DtoModels
{ {
public class PerAttendanceIssueDto public class PerAttendanceIssueDto
{ {
public int AllotId { get; set; } //绩效Id public PerAttendanceIssueDto()
public string Code { get; set; } //核算单元编码 { }
public string UnitType { get; set; } //人员类别 public PerAttendanceIssueDto(AttendanceStatistics item)
public string AccountingUnit { get; set; } //核算单元 {
public string PersonnelNumber { get; set; } //工号 UnitType = item.UnitType;
public string PersonnelName { get; set; } //姓名 AccountingUnit = item.AccountingUnit;
public DateTime? BeginDate { get; set; } //在科开始时间 PersonnelNumber = item.PersonnelNumber;
public DateTime? EndDate { get; set; } //在科结束时间 PersonnelName = item.PersonnelName;
public int WorkFullDays { get; set; } //全勤天数 BeginDate = item.BeginDate;
public int AttendanceDays { get; set; } //出勤天数 EndDate = item.EndDate;
public int DeductionDays { get; set; } //核减天数 DeductionDays = item.Detial.Where(w => !w.Remark.Contains("不核减")).Sum(w => w.Value);
public int NoDeductionDays { get; set; } //不核减天数 NoDeductionDays = item.Detial.Sum(w => w.Value) - item.Detial.Where(w => !w.Remark.Contains("不核减")).Sum(w => w.Value);
public int OperationType { get; set; } //操作类型 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)
{
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;
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>
/// 操作类型
/// </summary>
public int OperationType { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remarks { get; set; }
} }
} }
...@@ -13,23 +13,69 @@ public class per_attendance_issue ...@@ -13,23 +13,69 @@ public class per_attendance_issue
{ {
[Key] [Key]
public int Id { get; set; } public int Id { get; set; }
public int HospitalId { get; set; } //医院Id /// <summary>
public int AllotId { get; set; } //绩效Id /// 医院Id
public string Code { get; set; } //核算单元编码 /// </summary>
public string UnitType { get; set; } //人员类别 public int HospitalId { get; set; }
public string AccountingUnit { get; set; } //核算单元 /// <summary>
public string PersonnelNumber { get; set; } //工号 /// 绩效Id
public string PersonnelName { get; set; } //姓名 /// </summary>
public DateTime? BeginDate { get; set; } //在科开始时间 public int AllotId { get; set; }
public DateTime? EndDate { get; set; } //在科结束时间 /// <summary>
public int WorkFullDays { get; set; } //全勤天数 /// 核算单元编码
public int AttendanceDays { get; set; } //出勤天数 /// </summary>
public int DeductionDays { get; set; } //核减天数 public string Code { get; set; }
public int NoDeductionDays { get; set; } //不核减天数 /// <summary>
public int State { get; set; } //状态 /// 人员类别
public int CreateUser { get; set; } //首次下发人 /// </summary>
public int UpdateUser { get; set; } //更新人 public string UnitType { get; set; }
public DateTime? CreationTime { get; set; } //首次下发时间 /// <summary>
public DateTime? UpdateTime { get; set; } //更新时间 /// 核算单元
/// </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>
/// 状态
/// </summary>
public int State { get; set; }
/// <summary>
/// 更新人
/// </summary>
public int UpdateUser { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime? UpdateTime { get; set; }
} }
} }
...@@ -14,23 +14,74 @@ public class per_attendance_issue_record ...@@ -14,23 +14,74 @@ public class per_attendance_issue_record
[Key] [Key]
public int Id { get; set; } public int Id { get; set; }
public int HospitalId { get; set; } //医院Id /// <summary>
public int AllotId { get; set; } //绩效Id /// 医院Id
public string Code { get; set; } //核算单元编码 /// </summary>
public string UnitType { get; set; } //人员类别 public int HospitalId { get; set; }
public string AccountingUnit { get; set; } //核算单元 /// <summary>
public string PersonnelNumber { get; set; } //工号 /// 绩效Id
public string PersonnelName { get; set; } //姓名 /// </summary>
public DateTime? BeginDate { get; set; } //在科开始时间 public int AllotId { get; set; }
public DateTime? EndDate { get; set; } //在科结束时间 /// <summary>
public int WorkFullDays { get; set; } //全勤天数 /// 核算单元编码
public int AttendanceDays { get; set; } //出勤天数 /// </summary>
public int DeductionDays { get; set; } //核减天数 public string Code { get; set; }
public int NoDeductionDays { get; set; } //不核减天数 /// <summary>
public int State { get; set; } //状态 /// 人员类别
public string OperationType { get; set; } //操作类型 /// </summary>
public int CreateUser { get; set; } //操作人 public string UnitType { get; set; }
public DateTime? CreationTime { 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>
/// 状态
/// </summary>
public int State { get; set; }
/// <summary>
/// 操作类型
/// </summary>
public string OperationType { get; set; }
/// <summary>
/// 操作人
/// </summary>
public int CreateUser { get; set; }
/// <summary>
/// 操作时间
/// </summary>
public DateTime? CreationTime { get; set; }
} }
......
...@@ -763,55 +763,103 @@ public ApiResponse<List<AttendanceStatistics>> GetAttendanceStatistics(int allot ...@@ -763,55 +763,103 @@ public ApiResponse<List<AttendanceStatistics>> GetAttendanceStatistics(int allot
} }
return new ApiResponse<List<AttendanceStatistics>>(ResponseType.OK, "", statistics); return new ApiResponse<List<AttendanceStatistics>>(ResponseType.OK, "", statistics);
} }
#region 考勤下发
//public ApiResponse<List<PerAttendanceIssueDto>> PreConfirmationDisplay(int allotId, int userid) public ApiResponse<List<PerAttendanceIssueDto>> PreConfirmationDisplay(int allotId, int userid, int hospitalId)
//{ {
var statistics = GetAttendanceStatistics(allotId, userid).Data;
// return null; var issues = perforPerAttendanceIssueRepository.GetEntities(w => w.AllotId == allotId && w.HospitalId == hospitalId);
//} var issuePersonnelNumber = issues.Select(s => s.PersonnelNumber);
var statisticPersonnelNumber = statistics.Select(s => s.PersonnelNumber);
//新增(查询页面有实表没有的数据)
var xzStatistics = statistics.Where(w => !issuePersonnelNumber.Contains(w.PersonnelNumber));
//修改(查询数据)
var xgStatistics = statistics.Where(w => issuePersonnelNumber.Contains(w.PersonnelNumber));
//删除(删除页面没有的数据)
var scStatistics = issues.Where(w => !statisticPersonnelNumber.Contains(w.PersonnelNumber)).ToList();
var issuedates = new List<PerAttendanceIssueDto>();
if (xzStatistics.Any())
{
var issuedate = xzStatistics.Select(item =>
{
return new PerAttendanceIssueDto(item);
});
issuedates.AddRange(issuedate.ToArray());
}
if (xgStatistics.Any())
{
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 personnelNumber in xgStatistics.Select(w => w.PersonnelNumber))
{
var staticPersonnel = statistics.FirstOrDefault(w => w.PersonnelNumber == personnelNumber);
var issuePersonnel = issues.FirstOrDefault(w => w.PersonnelNumber == personnelNumber);
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));
}
return new ApiResponse<List<PerAttendanceIssueDto>>(ResponseType.OK, issuedates);
}
//下发 //下发
public ApiResponse IssueStatistics(int allotId, int userid, int hospitalId) public ApiResponse IssueStatistics(int allotId, int userid, int hospitalId)
{ {
//首次下发 var preConfirmationDisplay = PreConfirmationDisplay(allotId, userid, hospitalId).Data;
var statistics = GetAttendanceStatistics(allotId, userid).Data; var issues = perforPerAttendanceIssueRepository.GetEntities(w => w.AllotId == allotId && w.HospitalId == hospitalId);
var issues = perforPerAttendanceIssueRepository.GetEntities(w => w.AllotId == allotId); var cofaccounting = cofaccountingRepository.GetEntities(g => g.AllotId == allotId);
var issuePersonnelNumber = issues.Select(s => s.PersonnelNumber); var insertIssues = preConfirmationDisplay.Where(w => w.OperationType == (int)Attendance.OperationType.新增).ToList();
var scStatistics = statistics.Where(w => !issuePersonnelNumber.Contains(w.PersonnelNumber)).ToList(); var updateIssues = preConfirmationDisplay.Where(w => w.OperationType == (int)Attendance.OperationType.修改).ToList();
if (scStatistics.Any()) var deleteIssues = preConfirmationDisplay.Where(w => w.OperationType == (int)Attendance.OperationType.删除).Select(s => s.PersonnelNumber).ToList();
if (insertIssues.Any())
{ {
var issuedates = scStatistics.Select(item => var inserts = insertIssues.Select(item =>
{ {
int deductionDays = item.Detial.Where(w => !w.Remark.Contains("不核减")).Sum(w => w.Value); var code = cofaccounting.FirstOrDefault(w => w.UnitType == item.UnitType && w.AccountingUnit == item.AccountingUnit);
int noDeductionDays = item.Detial.Sum(w => w.Value) - deductionDays;
var cofaccounting = cofaccountingRepository.GetEntity(w => w.UnitType == item.UnitType && w.AccountingUnit == item.AccountingUnit);
var code = cofaccounting?.Code;
return new per_attendance_issue() return new per_attendance_issue()
{ {
AllotId = item.AllotID, AllotId = allotId,
HospitalId = hospitalId, HospitalId = hospitalId,
Code = code, Code = code.Code,
UnitType = item.UnitType, UnitType = item.UnitType,
AccountingUnit = item.AccountingUnit, AccountingUnit = item.AccountingUnit,
PersonnelNumber = item.PersonnelNumber, PersonnelNumber = item.PersonnelNumber,
PersonnelName = item.PersonnelName, PersonnelName = item.PersonnelName,
BeginDate = item.BeginDate, BeginDate = item.BeginDate,
EndDate = item.EndDate, EndDate = item.EndDate,
DeductionDays = deductionDays, DeductionDays = item.DeductionDays,
NoDeductionDays = noDeductionDays, NoDeductionDays = item.NoDeductionDays,
AttendanceDays = item.AttendanceDays, AttendanceDays = item.AttendanceDays,
WorkFullDays = item.AttendanceDays + deductionDays, WorkFullDays = item.AttendanceDays + item.DeductionDays,
CreateUser = userid,
CreationTime = DateTime.Now,
UpdateUser = userid, UpdateUser = userid,
UpdateTime = DateTime.Now, UpdateTime = DateTime.Now,
State = (int)Attendance.State.首次下发, State = (int)Attendance.State.已下发未确认,
}; };
}); });
perforPerAttendanceIssueRepository.AddRange(issuedates.ToArray()); perforPerAttendanceIssueRepository.AddRange(inserts.ToArray());
//记录新增 //记录新增
var insert = mapper.Map<IEnumerable<per_attendance_issue_record>>(issuedates); var insert = mapper.Map<IEnumerable<per_attendance_issue_record>>(inserts);
foreach (var record in insert) foreach (var record in insert)
{ {
record.OperationType = "新增"; record.OperationType = "新增";
...@@ -821,129 +869,50 @@ public ApiResponse IssueStatistics(int allotId, int userid, int hospitalId) ...@@ -821,129 +869,50 @@ public ApiResponse IssueStatistics(int allotId, int userid, int hospitalId)
perforPerAttendanceIssueRecordRepository.AddRange(insert.ToArray()); perforPerAttendanceIssueRecordRepository.AddRange(insert.ToArray());
} }
if (updateIssues.Any())
Func<per_attendance_issue, AttendanceStatistics, bool> func = (issue, statistic) =>
{
var result = true;
result = 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;
};
#region 确认后的下发
var issueConfirm = issues.Where(w => w.State == (int)Attendance.State.确认 || w.State == (int)Attendance.State.确认已修改 || w.State == (int)Attendance.State.确认未修改).ToList();
var issueConfirmPersonnelNumber = issueConfirm.Select(s => s.PersonnelNumber);
var qrStatistics = statistics.Where(w => issueConfirmPersonnelNumber.Contains(w.PersonnelNumber)).ToList();
if (qrStatistics.Any())
{ {
List<per_attendance_issue> updateIssuedates = new List<per_attendance_issue>();
List<per_attendance_issue> qsIssuedates = new List<per_attendance_issue>(); foreach (var item in updateIssues)
foreach (var personnelNumber in issueConfirmPersonnelNumber)
{
var staticPersonnel = qrStatistics.FirstOrDefault(w => w.PersonnelNumber == personnelNumber);
var issuePersonnel = issueConfirm.FirstOrDefault(w => w.PersonnelNumber == personnelNumber);
if (!func(issuePersonnel, staticPersonnel))
{
issuePersonnel.BeginDate = staticPersonnel.BeginDate;
issuePersonnel.EndDate = staticPersonnel.EndDate;
issuePersonnel.AttendanceDays = staticPersonnel.AttendanceDays;
issuePersonnel.WorkFullDays = staticPersonnel.AttendanceDays + staticPersonnel.Detial.Where(w => !w.Remark.Contains("不核减")).Sum(w => w.Value);
issuePersonnel.DeductionDays = staticPersonnel.Detial.Where(w => !w.Remark.Contains("不核减")).Sum(w => w.Value);
issuePersonnel.NoDeductionDays = staticPersonnel.Detial.Where(w => !w.Remark.Equals("核减")).Sum(w => w.Value);
issuePersonnel.State = (int)Attendance.State.确认已修改;
}
else
{
issuePersonnel.State = (int)Attendance.State.确认未修改;
}
qsIssuedates.Add(issuePersonnel);
}
perforPerAttendanceIssueRepository.UpdateRange(qsIssuedates.ToArray());
//记录修改
var Issuedates = qsIssuedates.ToList();
foreach (var item in qsIssuedates)
{ {
if (item.State == (int)Attendance.State.确认已修改 || item.State == (int)Attendance.State.质疑已修改) continue; var code = cofaccounting.FirstOrDefault(w => w.UnitType == item.UnitType && w.AccountingUnit == item.AccountingUnit);
Issuedates.Remove(item); var issuePersonnel = issues.FirstOrDefault(w => w.PersonnelNumber == item.PersonnelNumber);
issuePersonnel.UnitType = item.UnitType;
issuePersonnel.AccountingUnit = item.AccountingUnit;
issuePersonnel.Code = code.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.UpdateUser = userid;
issuePersonnel.UpdateTime = DateTime.Now;
updateIssuedates.Add(issuePersonnel);
} }
var qsInsert = mapper.Map<List<per_attendance_issue_record>>(Issuedates); perforPerAttendanceIssueRepository.UpdateRange(updateIssuedates.ToArray());
if (qsInsert.Any()) //记录新增
foreach (var record in qsInsert) var insert = mapper.Map<IEnumerable<per_attendance_issue_record>>(updateIssuedates);
{ foreach (var record in insert)
record.Id = 0;
record.OperationType = "修改";
record.CreateUser = userid;
record.CreationTime = DateTime.Now;
}
perforPerAttendanceIssueRecordRepository.AddRange(qsInsert.ToArray());
}
#endregion
#region 质疑后的下发
var issueQuestion = issues.Where(w => w.State == (int)Attendance.State.质疑 || w.State == (int)Attendance.State.质疑已修改 || w.State == (int)Attendance.State.质疑未修改).ToList();
var issueQuestionPersonnelNumber = issueQuestion.Select(s => s.PersonnelNumber).ToList();
var zyStatistics = statistics.Where(w => issueQuestionPersonnelNumber.Contains(w.PersonnelNumber)).ToList();
if (zyStatistics.Any())
{
List<per_attendance_issue> zyIssuedates = new List<per_attendance_issue>();
foreach (var personnelNumber in issueQuestionPersonnelNumber)
{
var staticPersonnel = zyStatistics.FirstOrDefault(w => w.PersonnelNumber == personnelNumber);
var issuePersonnel = issueQuestion.FirstOrDefault(w => w.PersonnelNumber == personnelNumber);
if (!func(issuePersonnel, staticPersonnel))
{
issuePersonnel.BeginDate = staticPersonnel.BeginDate;
issuePersonnel.EndDate = staticPersonnel.EndDate;
issuePersonnel.AttendanceDays = staticPersonnel.AttendanceDays;
issuePersonnel.WorkFullDays = staticPersonnel.AttendanceDays + staticPersonnel.Detial.Where(w => !w.Remark.Contains("不核减")).Sum(w => w.Value);
issuePersonnel.DeductionDays = staticPersonnel.Detial.Where(w => !w.Remark.Contains("不核减")).Sum(w => w.Value);
issuePersonnel.NoDeductionDays = staticPersonnel.Detial.Where(w => !w.Remark.Equals("核减")).Sum(w => w.Value);
issuePersonnel.State = (int)Attendance.State.质疑已修改;
}
else
{
issuePersonnel.State = (int)Attendance.State.质疑未修改;
}
zyIssuedates.Add(issuePersonnel);
}
perforPerAttendanceIssueRepository.UpdateRange(zyIssuedates.ToArray());
//记录修改
var Issuedates = zyIssuedates.ToList();
foreach (var item in zyIssuedates)
{ {
if (item.State == (int)Attendance.State.确认已修改 || item.State == (int)Attendance.State.质疑已修改) continue; record.Id = 0;
Issuedates.Remove(item); record.OperationType = "修改";
record.CreateUser = userid;
record.CreationTime = DateTime.Now;
} }
var zyInsert = mapper.Map<List<per_attendance_issue_record>>(Issuedates); perforPerAttendanceIssueRecordRepository.AddRange(insert.ToArray());
if (zyInsert.Any())
foreach (var record in zyInsert)
{
record.Id = 0;
record.OperationType = "修改";
record.CreateUser = userid;
record.CreationTime = DateTime.Now;
}
perforPerAttendanceIssueRecordRepository.AddRange(zyInsert.ToArray());
} }
#endregion if (deleteIssues.Any())
#region 删除多余的
var statisticsPersonnelNumber = statistics.Select(s => s.PersonnelNumber).ToList();
var shanchuStatistics = issues.Where(w => !statisticsPersonnelNumber.Contains(w.PersonnelNumber)).ToList();
if (shanchuStatistics.Any())
{ {
perforPerAttendanceIssueRepository.RemoveRange(shanchuStatistics.ToArray()); var deletePersonnel = issues.Where(w => deleteIssues.Contains(w.PersonnelNumber)).ToList();
////记录质疑修改 perforPerAttendanceIssueRepository.RemoveRange(deletePersonnel.ToArray());
var scInsert = mapper.Map<List<per_attendance_issue_record>>(shanchuStatistics.ToList()); ////记录删除
var scInsert = mapper.Map<List<per_attendance_issue_record>>(deletePersonnel.ToList());
foreach (var record in scInsert) foreach (var record in scInsert)
{ {
record.Id = 0;
record.OperationType = "删除"; record.OperationType = "删除";
record.CreateUser = userid; record.CreateUser = userid;
record.CreationTime = DateTime.Now; record.CreationTime = DateTime.Now;
...@@ -951,13 +920,10 @@ public ApiResponse IssueStatistics(int allotId, int userid, int hospitalId) ...@@ -951,13 +920,10 @@ public ApiResponse IssueStatistics(int allotId, int userid, int hospitalId)
perforPerAttendanceIssueRecordRepository.AddRange(scInsert.ToArray()); perforPerAttendanceIssueRecordRepository.AddRange(scInsert.ToArray());
} }
#endregion
return new ApiResponse(ResponseType.OK, "下发成功"); return new ApiResponse(ResponseType.OK, "下发成功");
} }
//最终考勤结果质疑或确认无误((批量操作)
public ApiResponse ChooseStatistics(int allotId, int userid, int[] issueid, bool choose) public ApiResponse ChooseStatistics(int allotId, int userid, int[] issueid, bool choose)
{ {
var issuedates = perforPerAttendanceIssueRepository.GetEntities(w => w.AllotId == allotId && issueid.Contains(w.Id)).ToList(); var issuedates = perforPerAttendanceIssueRepository.GetEntities(w => w.AllotId == allotId && issueid.Contains(w.Id)).ToList();
...@@ -970,6 +936,8 @@ public ApiResponse ChooseStatistics(int allotId, int userid, int[] issueid, bool ...@@ -970,6 +936,8 @@ public ApiResponse ChooseStatistics(int allotId, int userid, int[] issueid, bool
perforPerAttendanceIssueRepository.UpdateRange(issuedates.ToArray()); perforPerAttendanceIssueRepository.UpdateRange(issuedates.ToArray());
return new ApiResponse(ResponseType.OK); return new ApiResponse(ResponseType.OK);
} }
#endregion
// 拆分请假时间段为每个日期 // 拆分请假时间段为每个日期
private List<DateTime> SplitEveryDay(DateTime begin, DateTime end) private List<DateTime> SplitEveryDay(DateTime begin, DateTime end)
......
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