Commit e4dba427 by wyc

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

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