Commit 48e666f9 by wyc

‘考勤下发’ 下载调整,下发添加搜索框,确认详情添加排序,预下发接口调整

parent ce05cc2f
......@@ -323,20 +323,19 @@ public IActionResult DownloadStatistics(int allotId)
{
List<ExcelDownloadHeads> excelDownloadHeads = new List<ExcelDownloadHeads>()
{
new ExcelDownloadHeads { Alias = "科室名称", Name = nameof(AttendanceStatistics.Department) },
new ExcelDownloadHeads { Alias = "姓名", Name = nameof(AttendanceStatistics.PersonnelName) },
new ExcelDownloadHeads { Alias = "员工号", Name = nameof(AttendanceStatistics.PersonnelNumber) },
new ExcelDownloadHeads { Alias = "人员类别", Name = nameof(AttendanceStatistics.UnitType) },
new ExcelDownloadHeads { Alias = "核算单元", Name = nameof(AttendanceStatistics.AccountingUnit) },
new ExcelDownloadHeads { Alias = "开始时问", Name = nameof(AttendanceStatistics.BeginDate) },
new ExcelDownloadHeads { Alias = "结束时间", Name = nameof(AttendanceStatistics.EndDate) },
new ExcelDownloadHeads { Alias = "核算组别", Name = nameof(AttendanceStatistics.UnitType) },
new ExcelDownloadHeads { Alias = "核算单元名称", Name = nameof(AttendanceStatistics.AccountingUnit) },
new ExcelDownloadHeads { Alias = "姓名", Name = nameof(AttendanceStatistics.PersonnelName) },
new ExcelDownloadHeads { Alias = "员工号", Name = nameof(AttendanceStatistics.PersonnelNumber) },
new ExcelDownloadHeads { Alias = "在科开始时问", Name = nameof(AttendanceStatistics.BeginDate) },
new ExcelDownloadHeads { Alias = "在科结束时间", Name = nameof(AttendanceStatistics.EndDate) },
};
var type = _attendanceService.GetAttendanceType(allotId);
foreach (var item in type.Data)
{
excelDownloadHeads.Add(new ExcelDownloadHeads() { Alias = item.AttendanceName, Name = item.AttendanceName });
}
excelDownloadHeads.Add(new ExcelDownloadHeads() { Alias = "勤天数", Name = "AttendanceDays" });
excelDownloadHeads.Add(new ExcelDownloadHeads() { Alias = "勤天数", Name = "AttendanceDays" });
var userid = claim.GetUserId();
var result = _attendanceService.GetAttendanceStatistics(allotId, userid).Data;
......@@ -377,26 +376,25 @@ public IActionResult DownloadStatistics(int allotId)
/// <returns></returns>
[HttpPost]
[Route("download/auditDetail")]
public IActionResult DownloadAuditDetail(int allotId,string unitType,string accountingUnit)
public IActionResult DownloadAuditDetail(int allotId, string unitType, string accountingUnit, string searchTxet)
{
List<ExcelDownloadHeads> excelDownloadHeads = new List<ExcelDownloadHeads>()
{
new ExcelDownloadHeads { Alias = "科室名称", Name = nameof(AttendanceStatistics.Department) },
new ExcelDownloadHeads { Alias = "姓名", Name = nameof(AttendanceStatistics.PersonnelName) },
new ExcelDownloadHeads { Alias = "员工号", Name = nameof(AttendanceStatistics.PersonnelNumber) },
new ExcelDownloadHeads { Alias = "人员类别", Name = nameof(AttendanceStatistics.UnitType) },
new ExcelDownloadHeads { Alias = "核算单元", Name = nameof(AttendanceStatistics.AccountingUnit) },
new ExcelDownloadHeads { Alias = "开始时问", Name = nameof(AttendanceStatistics.BeginDate) },
new ExcelDownloadHeads { Alias = "结束时间", Name = nameof(AttendanceStatistics.EndDate) },
new ExcelDownloadHeads { Alias = "核算组别", Name = nameof(AttendanceStatistics.UnitType) },
new ExcelDownloadHeads { Alias = "核算单元名称", Name = nameof(AttendanceStatistics.AccountingUnit) },
new ExcelDownloadHeads { Alias = "姓名", Name = nameof(AttendanceStatistics.PersonnelName) },
new ExcelDownloadHeads { Alias = "员工号", Name = nameof(AttendanceStatistics.PersonnelNumber) },
new ExcelDownloadHeads { Alias = "在科开始时问", Name = nameof(AttendanceStatistics.BeginDate) },
new ExcelDownloadHeads { Alias = "在科结束时间", Name = nameof(AttendanceStatistics.EndDate) },
};
var type = _attendanceService.GetAttendanceType(allotId);
foreach (var item in type.Data)
{
excelDownloadHeads.Add(new ExcelDownloadHeads() { Alias = item.AttendanceName, Name = item.AttendanceName });
}
excelDownloadHeads.Add(new ExcelDownloadHeads() { Alias = "勤天数", Name = "AttendanceDays" });
excelDownloadHeads.Add(new ExcelDownloadHeads() { Alias = "勤天数", Name = "AttendanceDays" });
var userid = claim.GetUserId();
var result = _attendanceService.AuditDetail(allotId, unitType, accountingUnit, userid).Data;
var result = _attendanceService.AuditDetail(allotId, unitType, accountingUnit, searchTxet, userid).Data;
var ser = JsonConvert.SerializeObject(result);
var rows = JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(ser);
......@@ -445,10 +443,10 @@ public ApiResponse<List<AttendanceAuditList>> AuditList(int allotId, string unit
/// <returns></returns>
[HttpPost]
[Route("issue/audit/detail")]
public ApiResponse<List<AttendanceAuditDetail>> AuditDetail(int allotId, string unitType, string accountingUnit)
public ApiResponse<List<AttendanceAuditDetail>> AuditDetail(int allotId, string unitType, string accountingUnit, string searchTxet)
{
var userid = claim.GetUserId();
return _attendanceService.AuditDetail(allotId, unitType, accountingUnit, userid);
return _attendanceService.AuditDetail(allotId, unitType, accountingUnit, searchTxet, userid);
}
/// <summary>
......
......@@ -399,13 +399,13 @@
<param name="allotId"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AttendanceController.DownloadAuditDetail(System.Int32,System.String,System.String)">
<member name="M:Performance.Api.Controllers.AttendanceController.DownloadAuditDetail(System.Int32,System.String,System.String,System.String)">
<summary>
科室确认详情(已下发结果展示列表)下载
</summary>
<param name="allotId"></param>
<param name="unitType"></param>
<param name="accountingUnit"></param>
<param name="unitType">人员类别</param>
<param name="accountingUnit">核算单元</param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AttendanceController.AuditList(System.Int32,System.String,System.String,Performance.DtoModels.Attendance.State)">
......@@ -418,7 +418,7 @@
<param name="state"> 操作类型 全部=0,未确认 = 1,确认 = 2,驳回 = 3,</param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AttendanceController.AuditDetail(System.Int32,System.String,System.String)">
<member name="M:Performance.Api.Controllers.AttendanceController.AuditDetail(System.Int32,System.String,System.String,System.String)">
<summary>
科室确认详情(已下发结果展示列表)
</summary>
......
......@@ -262,11 +262,6 @@
核算单元
</summary>
</member>
<member name="P:Performance.DtoModels.PerAttendanceIssueDto.Department">
<summary>
科室名称
</summary>
</member>
<member name="P:Performance.DtoModels.PerAttendanceIssueDto.PersonnelNumber">
<summary>
工号
......@@ -2928,11 +2923,6 @@
核算单元
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditDetail.Department">
<summary>
科室名称
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditDetail.PersonnelNumber">
<summary>
工号
......@@ -3108,6 +3098,16 @@
是否附带上次绩效 0 不附带 1 附带
</summary>
</member>
<member name="P:Performance.DtoModels.AttendanceStatistics.Code">
<summary>
核算单元编码
</summary>
</member>
<member name="P:Performance.DtoModels.AttendanceStatistics.AllotID">
<summary>
</summary>
</member>
<member name="P:Performance.DtoModels.AttendanceStatistics.UnitType">
<summary>
核算组别
......
......@@ -6138,11 +6138,6 @@
人员类别
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_issue.Department">
<summary>
科室名称
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_issue.AccountingUnit">
<summary>
核算单元
......
......@@ -14,9 +14,9 @@ public PerAttendanceIssueDto()
{ }
public PerAttendanceIssueDto(AttendanceStatistics item)
{
Code = item.Code;
UnitType = item.UnitType;
AccountingUnit = item.AccountingUnit;
Department = item.Department;
PersonnelNumber = item.PersonnelNumber;
PersonnelName = item.PersonnelName;
BeginDate = item.BeginDate;
......@@ -31,9 +31,9 @@ public PerAttendanceIssueDto(AttendanceStatistics item)
public PerAttendanceIssueDto(per_attendance_issue item)
{
Code = item.Code;
UnitType = item.UnitType;
AccountingUnit = item.AccountingUnit;
Department = item.Department;
PersonnelNumber = item.PersonnelNumber;
PersonnelName = item.PersonnelName;
BeginDate = item.BeginDate;
......@@ -48,7 +48,7 @@ public PerAttendanceIssueDto(per_attendance_issue item)
//public int HospitalId { get; set; } //医院Id
//public int AllotId { get; set; } //绩效Id
//public string Code { get; set; } //核算单元编码
public string Code { get; set; } //核算单元编码
/// <summary>
/// 人员类别
/// </summary>
......@@ -58,10 +58,6 @@ public PerAttendanceIssueDto(per_attendance_issue item)
/// </summary>
public string AccountingUnit { get; set; }
/// <summary>
/// 科室名称
/// </summary>
public string Department { get; set; }
/// <summary>
/// 工号
/// </summary>
public string PersonnelNumber { get; set; }
......
......@@ -30,10 +30,6 @@ public class AttendanceAuditDetail
/// </summary>
public string AccountingUnit { get; set; }
/// <summary>
/// 科室名称
/// </summary>
public string Department { get; set; }
/// <summary>
/// 工号
/// </summary>
public string PersonnelNumber { get; set; }
......
......@@ -5,6 +5,13 @@ namespace Performance.DtoModels
{
public class AttendanceStatistics
{
/// <summary>
/// 核算单元编码
/// </summary>
public string Code { get; set; }
/// <summary>
///
/// </summary>
public int AllotID { get; set; }
/// <summary>
/// 核算组别
......
......@@ -29,10 +29,10 @@ public class per_attendance_issue
/// 人员类别
/// </summary>
public string UnitType { get; set; }
/// <summary>
/// 科室名称
/// </summary>
public string Department { get; set; }
///// <summary>
///// 科室名称
///// </summary>
//public string Department { get; set; }
/// <summary>
/// 核算单元
/// </summary>
......
......@@ -716,6 +716,7 @@ public ApiResponse<List<AttendanceStatistics>> GetAttendanceStatistics(int allot
BeginDate = begDate,
EndDate = endDate.AddDays(days),
//Detial = new List<AttendanceStatisticsDetial>()
Code = "",
};
statistics.Add(stat);
}
......@@ -760,6 +761,14 @@ public ApiResponse<List<AttendanceStatistics>> GetAttendanceStatistics(int allot
int vacationesDays = stat.Detial.Where(w => !w.Remark.Contains("不核减")).Sum(w => w.Value);
stat.AttendanceDays = SplitEveryDay(stat.BeginDate, stat.EndDate).Where(date => date >= stat.BeginDate && date <= stat.EndDate).Count() - vacationesDays;
}
var cofaccounting = cofaccountingRepository.GetEntities(g => g.AllotId == allotId);
foreach (var item in statistics)
{
var code = cofaccounting.FirstOrDefault(w => w.UnitType == item.UnitType && w.AccountingUnit == item.AccountingUnit);
item.Code = code == null ? "" : code.Code;
}
return new ApiResponse<List<AttendanceStatistics>>(ResponseType.OK, "", statistics);
}
#region 考勤下发
......@@ -784,7 +793,7 @@ public ApiResponse<List<AttendanceAuditList>> AuditList(int allotId, string unit
RejectCount = w.Count(p => p.State == (int)Attendance.State.驳回),
OperationUser = w.OrderByDescending(o => o.ConfirmTime).Select(s => s.ConfirmUser).FirstOrDefault(),
OperationTime = w.OrderByDescending(o => o.ConfirmTime).Select(s => s.ConfirmTime).FirstOrDefault(),
Remarks = string.Join('', w.Select(p => p.Remarks).Distinct()),
Remarks = string.Join('', w.Select(p => p.Remarks).Distinct()),
}).ToList();
......@@ -800,15 +809,19 @@ public ApiResponse<List<AttendanceAuditList>> AuditList(int allotId, string unit
return new ApiResponse<List<AttendanceAuditList>>(ResponseType.OK, items);
}
// 科室确认详情(已下发结果展示列表)
public ApiResponse<List<AttendanceAuditDetail>> AuditDetail(int allotId, string unitType, string accountingUnit, int userid)
public ApiResponse<List<AttendanceAuditDetail>> AuditDetail(int allotId, string unitType, string accountingUnit, string searchTxet, int userid)
{
var types = perfoPperAttendanceTypeRepository.GetEntities(t => t.AllotId == allotId) ?? new List<per_attendance_type>();
var vacationeData = perfoPperAttendanceVacationeRepository.GetEntities(t => t.AllotId == allotId) ?? new List<per_attendance_vacation>();
var issues = perforPerAttendanceIssueRepository.GetEntities(w => w.AllotId == allotId).ToList();
var issues = perforPerAttendanceIssueRepository.GetEntities(w => w.AllotId == allotId).OrderBy(w=>w.PersonnelNumber).ToList();
if (!string.IsNullOrEmpty(unitType))
issues = issues.Where(w => w.UnitType.Contains(unitType)).ToList();
if (!string.IsNullOrEmpty(accountingUnit))
issues = issues.Where(w => w.AccountingUnit.Contains(accountingUnit)).ToList();
if (!string.IsNullOrEmpty(searchTxet))
issues = issues.Where(w => w.PersonnelName.Contains(searchTxet) || w.PersonnelNumber.Contains(searchTxet)).ToList();
var stateOrders = new int[] { (int)Attendance.State.未确认, (int)Attendance.State.驳回, (int)Attendance.State.确认 };
var items = issues.Select(w => new AttendanceAuditDetail
{
AttendanceIsueId = w.Id,
......@@ -816,7 +829,6 @@ public ApiResponse<List<AttendanceAuditDetail>> AuditDetail(int allotId, string
Code = w.Code,
UnitType = w.UnitType,
AccountingUnit = w.AccountingUnit,
Department = w.Department,
PersonnelName = w.PersonnelName,
PersonnelNumber = w.PersonnelNumber,
BeginDate = w.BeginDate,
......@@ -829,7 +841,8 @@ public ApiResponse<List<AttendanceAuditDetail>> AuditDetail(int allotId, string
ConfirmUser = w.ConfirmUser,
ConfirmTime = w.ConfirmTime,
Remarks = w.Remarks,
}).OrderBy(w => w.PersonnelNumber).ToList();
}).OrderBy(w => Array.IndexOf(stateOrders, w.State)).ToList();
//当角色对应时过滤
var userInfo = _userRepository.GetUser(userid);
if (userInfo?.User == null) throw new NotImplementedException("当前用户不存在");
......@@ -880,43 +893,35 @@ public ApiResponse<List<PerAttendanceIssueDto>> PreConfirmationDisplay(int allot
{
var statistics = GetAttendanceStatistics(allotId, userid).Data;
var issues = perforPerAttendanceIssueRepository.GetEntities(w => w.AllotId == allotId);
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 statisticPersonnelNumber = statistics.Select(s => s.PersonnelNumber);
var scStatistics = issues.Where(w => !statisticPersonnelNumber.Contains(w.PersonnelNumber)).ToList();
var issuedates = new List<PerAttendanceIssueDto>();
if (xzStatistics.Any())
Func<per_attendance_issue, AttendanceStatistics, bool> func = (issue, statistic) =>
{
var issuedate = xzStatistics.Select(item =>
{
return new PerAttendanceIssueDto(item);
});
issuedates.AddRange(issuedate.ToArray());
}
if (xgStatistics.Any())
var result = true;
result =
issue.UnitType == statistic.UnitType &&
issue.AccountingUnit == statistic.AccountingUnit &&
issue.BeginDate == statistic.BeginDate &&
issue.EndDate == statistic.EndDate &&
issue.AttendanceDays == statistic.AttendanceDays &&
issue.DeductionDays == statistic.Detial.Where(w => !w.Remark.Contains("不核减")).Sum(w => w.Value) &&
issue.NoDeductionDays == statistic.Detial.Where(w => !w.Remark.Equals("核减")).Sum(w => w.Value);
return result;
};
foreach (var item in statistics.Select(w => new { PersonnelNumber = w.PersonnelNumber, Code = w.Code }))
{
Func<per_attendance_issue, AttendanceStatistics, bool> func = (issue, statistic) =>
var staticPersonnel = statistics.FirstOrDefault(w => w.PersonnelNumber == item.PersonnelNumber && w.Code == item.Code);
var issuePersonnel = issues.FirstOrDefault(w => w.PersonnelNumber == item.PersonnelNumber && w.Code == item.Code);
if (issuePersonnel == null)
{
var result = true;
result =
issue.UnitType == statistic.UnitType &&
issue.AccountingUnit == statistic.AccountingUnit &&
issue.Department == statistic.Department &&
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))
issuedates.Add(new PerAttendanceIssueDto(staticPersonnel));
}
else if (staticPersonnel != null && issuePersonnel != null)
{
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)
{
......@@ -932,7 +937,6 @@ public ApiResponse<List<PerAttendanceIssueDto>> PreConfirmationDisplay(int allot
foreach (var report in scStatistics)
issuedates.Add(new PerAttendanceIssueDto(report));
}
if (!string.IsNullOrEmpty(unitType))
issuedates = issuedates.Where(w => w.UnitType.Contains(unitType)).ToList();
if (!string.IsNullOrEmpty(accountingUnit))
......@@ -953,7 +957,7 @@ public ApiResponse IssueStatistics(int allotId, int userid, string realName, str
if (preConfirmationDisplay == null)
return new ApiResponse(ResponseType.NotFound, "暂无下发数据");
var issues = perforPerAttendanceIssueRepository.GetEntities(w => w.AllotId == allotId);
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();
......@@ -961,15 +965,14 @@ public ApiResponse IssueStatistics(int allotId, int userid, string realName, str
{
var inserts = insertIssues.Select(item =>
{
var code = cofaccounting.FirstOrDefault(w => w.UnitType == item.UnitType && w.AccountingUnit == item.AccountingUnit);
return new per_attendance_issue()
{
AllotId = allotId,
HospitalId = allot.HospitalId,
Code = code == null ? "" : code.Code,
Code = item.Code,
UnitType = item.UnitType,
AccountingUnit = item.AccountingUnit,
Department = item.Department,
PersonnelNumber = item.PersonnelNumber,
PersonnelName = item.PersonnelName,
BeginDate = item.BeginDate,
......@@ -990,12 +993,10 @@ public ApiResponse IssueStatistics(int allotId, int userid, string realName, str
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);
var issuePersonnel = issues.FirstOrDefault(w => w.PersonnelNumber == item.PersonnelNumber&&w.Code==item.Code);
issuePersonnel.UnitType = item.UnitType;
issuePersonnel.AccountingUnit = item.AccountingUnit;
issuePersonnel.Department = item.Department;
issuePersonnel.Code = code == null ? "" : code.Code;
issuePersonnel.Code = item.Code;
issuePersonnel.BeginDate = item.BeginDate;
issuePersonnel.EndDate = item.EndDate;
issuePersonnel.DeductionDays = item.DeductionDays;
......
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