Commit c25e07b1 by wyc

‘考勤下发’ 添加已下发结果展示列表,补充科室确认

parent 8d148275
......@@ -377,6 +377,7 @@ public IActionResult DownloadStatistics(int allotId)
[Route("issue/audit/list")]
public ApiResponse<List<AttendanceAuditList>> AuditList(int allotId)
{
return _attendanceService.AuditList(allotId);
}
......@@ -389,7 +390,7 @@ public ApiResponse<List<AttendanceAuditList>> AuditList(int allotId)
/// <returns></returns>
[HttpPost]
[Route("issue/audit/detail")]
public ApiResponse<List<per_attendance_issue>> AuditDetail(int allotId, string unitType, string accountingUnit)
public ApiResponse<List<AttendanceAuditDetail>> AuditDetail(int allotId, string unitType, string accountingUnit)
{
return _attendanceService.AuditDetail(allotId, unitType, accountingUnit);
}
......@@ -400,9 +401,10 @@ public ApiResponse<List<per_attendance_issue>> AuditDetail(int allotId, string u
/// <param name="allotId"></param>
/// <returns></returns>
[HttpGet("issue/result/list")]
public ApiResponse<List<AttendanceStatistics>> IssAttendanceResult(int allotId)
public ApiResponse<List<AttendanceAuditDetail>> IssAttendanceResult(int allotId)
{
throw new NotImplementedException();
var userid = claim.GetUserId();
return _attendanceService.IssAttendanceResult(allotId, userid);
}
/// <summary>
......@@ -428,7 +430,8 @@ public ApiResponse<List<PerAttendanceIssueDto>> PreConfirmationDisplay(int allot
public ApiResponse IssueStatistics(int allotId)
{
var userid = claim.GetUserId();
return _attendanceService.IssueStatistics(allotId, userid);
var realName = claim.GetUserClaim(JwtClaimTypes.RealName);
return _attendanceService.IssueStatistics(allotId, userid, realName);
}
/// <summary>
......@@ -442,11 +445,9 @@ public ApiResponse IssueStatistics(int allotId)
[Route("issue/choose")]
public ApiResponse ChooseStatistics(int allotId, int[] issueid, Attendance.State state)
{
var userid = claim.GetUserId();
return _attendanceService.ChooseStatistics(allotId, userid, issueid, state);
var realName = claim.GetUserClaim(JwtClaimTypes.RealName);
return _attendanceService.ChooseStatistics(allotId, issueid, state, realName);
}
#endregion
......
......@@ -425,6 +425,15 @@
科室确认详情
</summary>
<param name="allotId"></param>
<param name="unitType"></param>
<param name="accountingUnit"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AttendanceController.IssAttendanceResult(System.Int32)">
<summary>
已下发结果展示列表
</summary>
<param name="allotId"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AttendanceController.PreConfirmationDisplay(System.Int32)">
......
......@@ -2898,6 +2898,96 @@
科室
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditDetail.AllotId">
<summary>
绩效Id
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditDetail.Code">
<summary>
核算单元编码
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditDetail.UnitType">
<summary>
人员类别
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditDetail.AccountingUnit">
<summary>
核算单元
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditDetail.PersonnelNumber">
<summary>
工号
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditDetail.PersonnelName">
<summary>
姓名
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditDetail.BeginDate">
<summary>
在科开始时间
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditDetail.EndDate">
<summary>
在科结束时间
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditDetail.WorkFullDays">
<summary>
全勤天数
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditDetail.AttendanceDays">
<summary>
出勤天数
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditDetail.DeductionDays">
<summary>
核减天数
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditDetail.NoDeductionDays">
<summary>
不核减天数
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditDetail.State">
<summary>
状态
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditDetail.UpdateUser">
<summary>
更新人
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditDetail.UpdateTime">
<summary>
更新时间
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditDetails.Value">
<summary>
请假天数
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditDetails.Title">
<summary>
考勤类型
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditDetails.Remark">
<summary>
备注
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditList.Code">
<summary>
编码
......@@ -3003,6 +3093,11 @@
在科结束时间
</summary>
</member>
<member name="P:Performance.DtoModels.AttendanceStatistics.AttendanceDays">
<summary>
出勤天数
</summary>
</member>
<member name="P:Performance.DtoModels.AttendanceStatisticsDetial.Value">
<summary>
请假天数
......
......@@ -6188,99 +6188,24 @@
状态
</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">
<member name="P:Performance.EntityModels.Entity.per_attendance_issue.CreateUser">
<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">
<member name="P:Performance.EntityModels.Entity.per_attendance_issue.CreateTime">
<summary>
操作类型
创建时间
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_issue_record.CreateUser">
<member name="P:Performance.EntityModels.Entity.per_attendance_issue.UpdateUser">
<summary>
操作
更新
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_issue_record.CreationTime">
<member name="P:Performance.EntityModels.Entity.per_attendance_issue.UpdateTime">
<summary>
操作时间
更新时间
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_type.IsDeduction">
......
......@@ -276,10 +276,7 @@ public AutoMapperConfigs()
CreateMap<cof_workitem, WorkItemRequest>()
.ReverseMap();
CreateMap<cof_again,CofAgainRequest>().ReverseMap();
CreateMap<per_attendance_issue_record, per_attendance_issue>().ReverseMap();
CreateMap<PerAttendanceIssueDto, per_attendance_issue>().ReverseMap();
CreateMap<PerAttendanceIssueDto, AttendanceStatistics>().ReverseMap();
CreateMap<cof_again, CofAgainRequest>().ReverseMap();
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Performance.EntityModels.Entity
namespace Performance.DtoModels.Response
{
[Table("per_attendance_issue_record")]
public class per_attendance_issue_record
public class AttendanceAuditDetail
{
[Key]
public int Id { get; set; }
/// <summary>
/// 医院Id
/// </summary>
public int HospitalId { get; set; }
/// <summary>
/// 绩效Id
/// </summary>
......@@ -71,18 +61,29 @@ public class per_attendance_issue_record
/// </summary>
public int State { get; set; }
/// <summary>
/// 操作类型
/// 更新人
/// </summary>
public string UpdateUser { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime? UpdateTime { get; set; }
public List<AttendanceAuditDetails> Detial { get; set; }
}
public class AttendanceAuditDetails
{
/// <summary>
/// 请假天数
/// </summary>
public string OperationType { get; set; }
public int Value { get; set; }
/// <summary>
/// 操作人
/// 考勤类型
/// </summary>
public int CreateUser { get; set; }
public string Title { get; set; }
/// <summary>
/// 操作时间
/// 备注
/// </summary>
public DateTime? CreationTime { get; set; }
public string Remark { get; set; }
}
}
......@@ -31,7 +31,7 @@ public class AttendanceAuditList
/// <summary>
/// 操作时间
/// </summary>
public DateTime OperationTime { get; set; }
public DateTime? OperationTime { get; set; }
/// <summary>
/// 操作人
/// </summary>
......
......@@ -36,6 +36,9 @@ public class AttendanceStatistics
public DateTime EndDate { get; set; }
public List<AttendanceStatisticsDetial> Detial { get; set; }
/// <summary>
/// 出勤天数
/// </summary>
public int AttendanceDays { get; set; }
}
......
......@@ -255,7 +255,6 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options)
public virtual DbSet<sys_version> sys_version { get; set; }
public virtual DbSet<per_attendance> per_attendance { get; set; }
public virtual DbSet<per_attendance_issue> per_attendance_issue { get; set; }
public virtual DbSet<per_attendance_issue_record> per_attendance_issue_record { get; set; }
public virtual DbSet<per_attendance_type> per_attendance_type { get; set; }
public virtual DbSet<per_attendance_vacation> per_attendance_vacation { get; set; }
public virtual DbSet<per_allot_action> per_allot_action { get; set; }
......
......@@ -70,9 +70,17 @@ public class per_attendance_issue
/// </summary>
public int State { get; set; }
/// <summary>
/// 创建人
/// </summary>
public string CreateUser { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime? CreateTime { get; set; }
/// <summary>
/// 更新人
/// </summary>
public int UpdateUser { get; set; }
public string UpdateUser { get; set; }
/// <summary>
/// 更新时间
/// </summary>
......
......@@ -406,5 +406,27 @@ public void Batch(int[] ids, string batch, string batchDate, string bankName)
throw;
}
}
/// <summary>
/// 考勤-考勤结果备份
/// </summary>
/// <param name="allot"></param>
public void PerAttendanceIssueBackup(int allotId)
{
using (var connection = context.Database.GetDbConnection())
{
if (connection.State != ConnectionState.Open) connection.Open();
try
{
connection.Execute("call proc_attendance_backup(@allotId);", new { allotId }, commandTimeout: 60 * 60);
}
catch (Exception)
{
throw;
}
}
}
}
}
\ No newline at end of file
using Performance.EntityModels;
using Performance.EntityModels.Entity;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Performance.Repository.Repository
{
public partial class PerforPerAttendanceIssueRecordRepository : PerforRepository<per_attendance_issue_record>
{
/// <summary>
/// per_attendance_issue_record Repository
/// </summary>
public PerforPerAttendanceIssueRecordRepository(PerformanceDbContext context) : base(context)
{
}
}
}
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using AutoMapper;
using AutoMapper;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using OfficeOpenXml;
......@@ -14,6 +10,10 @@
using Performance.Infrastructure;
using Performance.Repository;
using Performance.Repository.Repository;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace Performance.Services
{
......@@ -32,7 +32,6 @@ public class AttendanceService : IAutoInjection
private readonly PerforCofaccountingRepository cofaccountingRepository;
private readonly RoleService roleService;
private readonly UserService userService;
private readonly PerforPerAttendanceIssueRecordRepository perforPerAttendanceIssueRecordRepository;
public AttendanceService(
IMapper mapper,
ILogger<AttendanceService> logger,
......@@ -46,8 +45,7 @@ public class AttendanceService : IAutoInjection
PerforPeremployeeRepository perforPeremployeeRepository,
PerforCofaccountingRepository cofaccountingRepository,
RoleService roleService,
UserService userService,
PerforPerAttendanceIssueRecordRepository perforPerAttendanceIssueRecordRepository
UserService userService
)
{
this.mapper = mapper;
......@@ -63,7 +61,6 @@ PerforPerAttendanceIssueRecordRepository perforPerAttendanceIssueRecordRepositor
this.cofaccountingRepository = cofaccountingRepository;
this.roleService = roleService;
this.userService = userService;
this.perforPerAttendanceIssueRecordRepository = perforPerAttendanceIssueRecordRepository;
}
#region 初始考勤页面
......@@ -105,7 +102,7 @@ public ApiResponse<List<AttendanceStatistics>> GetAttendance(int allotId, int us
PersonnelName = attendances.ElementAt(i).PersonnelName,
BeginDate = begDate,
EndDate = endDate.AddDays(days),
Detial = new List<AttendanceStatisticsDetial>()
//Detial = new List<AttendanceStatisticsDetial>()
};
statistics.Add(stat);
}
......@@ -718,7 +715,7 @@ public ApiResponse<List<AttendanceStatistics>> GetAttendanceStatistics(int allot
PersonnelName = attendances.ElementAt(i).PersonnelName,
BeginDate = begDate,
EndDate = endDate.AddDays(days),
Detial = new List<AttendanceStatisticsDetial>()
//Detial = new List<AttendanceStatisticsDetial>()
};
statistics.Add(stat);
}
......@@ -784,6 +781,8 @@ public ApiResponse<List<AttendanceAuditList>> AuditList(int allotId)
foreach (var item in items)
{
item.OperationUser = issues.OrderByDescending(o => o.UpdateTime).Select(s => s.UpdateUser).FirstOrDefault();
item.OperationTime = issues.OrderByDescending(o => o.UpdateTime).Select(s => s.UpdateTime).FirstOrDefault();
item.StateRemark = "未全部确认";
if (item.RejectCount > 0)
item.StateRemark = "驳回";
......@@ -794,12 +793,108 @@ public ApiResponse<List<AttendanceAuditList>> AuditList(int allotId)
return new ApiResponse<List<AttendanceAuditList>>(ResponseType.OK, items);
}
public ApiResponse<List<per_attendance_issue>> AuditDetail(int allotId, string unitType, string accountingUnit)
public ApiResponse<List<AttendanceAuditDetail>> AuditDetail(int allotId, string unitType, string accountingUnit)
{
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 && w.UnitType == unitType);
issues = issues.Where(w => w.AccountingUnit == accountingUnit).ToList();
var items = issues.Select(w => new AttendanceAuditDetail
{
UnitType = w.UnitType,
AccountingUnit = w.AccountingUnit,
PersonnelName = w.PersonnelName,
PersonnelNumber = w.PersonnelNumber,
BeginDate = w.BeginDate,
EndDate = w.EndDate,
WorkFullDays = w.WorkFullDays,
AttendanceDays = w.AttendanceDays,
DeductionDays = w.DeductionDays,
NoDeductionDays = w.NoDeductionDays,
State = w.State,
UpdateUser = w.UpdateUser,
UpdateTime = w.UpdateTime,
}).ToList();
var vacationes = vacationeData
.Where(w => w.BegDate > DateTime.MinValue && w.EndDate > DateTime.MinValue)
.Select(w => new
{
w.PersonnelNumber,
Type = types.FirstOrDefault(p => p.Id == w.TypeId)?.AttendanceName ?? "考勤类型缺失",
Dates = SplitEveryDay(w.BegDate.Value.Date, w.EndDate.Value.Date),
Remark = types.FirstOrDefault(p => p.Id == w.TypeId)?.IsDeduction == (int)Attendance.Deduction.核减 ? "核减" : "不核减",
});
foreach (var stat in items)
{
stat.Detial = vacationes
.Where(w => w.PersonnelNumber == stat.PersonnelNumber)
.Select(w => new AttendanceAuditDetails
{
Title = w.Type,
Value = w.Dates.Where(date => date >= stat.BeginDate && date <= stat.EndDate).Count(),
Remark = w.Remark,
})
.ToList();
}
return new ApiResponse<List<AttendanceAuditDetail>>(ResponseType.OK, items);
}
public ApiResponse<List<AttendanceAuditDetail>> IssAttendanceResult(int allotId, 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 items = issues.Select(w => new AttendanceAuditDetail
{
AllotId = w.AllotId,
Code = w.Code,
UnitType = w.UnitType,
AccountingUnit = w.AccountingUnit,
PersonnelName = w.PersonnelName,
PersonnelNumber = w.PersonnelNumber,
BeginDate = w.BeginDate,
EndDate = w.EndDate,
WorkFullDays = w.WorkFullDays,
AttendanceDays = w.AttendanceDays,
DeductionDays = w.DeductionDays,
NoDeductionDays = w.NoDeductionDays,
State = w.State,
UpdateUser = w.UpdateUser,
UpdateTime = w.UpdateTime,
}).ToList();
//当角色对应时过滤
var userInfo = _userRepository.GetUser(userid);
if (userInfo?.User == null) throw new NotImplementedException("当前用户不存在");
if (userInfo?.URole == null) throw new NotImplementedException("当前用户暂未分配角色");
var unitTypes = UnitTypeUtil.GetMaps(userInfo?.URole.Type ?? 0);
if (unitTypes?.Any() == true)
items = items.Where(w => w.AccountingUnit == userInfo.User.Department && UnitTypeUtil.Is(w.UnitType, unitTypes)).ToList();
var vacationes = vacationeData
.Where(w => w.BegDate > DateTime.MinValue && w.EndDate > DateTime.MinValue)
.Select(w => new
{
w.PersonnelNumber,
Type = types.FirstOrDefault(p => p.Id == w.TypeId)?.AttendanceName ?? "考勤类型缺失",
Dates = SplitEveryDay(w.BegDate.Value.Date, w.EndDate.Value.Date),
Remark = types.FirstOrDefault(p => p.Id == w.TypeId)?.IsDeduction == (int)Attendance.Deduction.核减 ? "核减" : "不核减",
});
foreach (var stat in items)
{
stat.Detial = vacationes
.Where(w => w.PersonnelNumber == stat.PersonnelNumber)
.Select(w => new AttendanceAuditDetails
{
Title = w.Type,
Value = w.Dates.Where(date => date >= stat.BeginDate && date <= stat.EndDate).Count(),
Remark = w.Remark,
})
.ToList();
}
return new ApiResponse<List<per_attendance_issue>>(ResponseType.OK, issues);
return new ApiResponse<List<AttendanceAuditDetail>>(ResponseType.OK, items);
}
public ApiResponse<List<PerAttendanceIssueDto>> PreConfirmationDisplay(int allotId, int userid)
......@@ -862,7 +957,7 @@ public ApiResponse<List<PerAttendanceIssueDto>> PreConfirmationDisplay(int allot
//下发
public ApiResponse IssueStatistics(int allotId, int userid)
public ApiResponse IssueStatistics(int allotId, int userid, string realName)
{
var allot = perforPerallotRepository.GetEntity(w => w.ID == allotId);
if (allot == null)
......@@ -894,22 +989,14 @@ public ApiResponse IssueStatistics(int allotId, int userid)
NoDeductionDays = item.NoDeductionDays,
AttendanceDays = item.AttendanceDays,
WorkFullDays = item.AttendanceDays + item.DeductionDays,
UpdateUser = userid,
CreateUser = realName,
CreateTime = DateTime.Now,
UpdateUser = realName,
UpdateTime = DateTime.Now,
State = (int)Attendance.State.已下发未确认,
};
});
perforPerAttendanceIssueRepository.AddRange(inserts.ToArray());
//记录新增
var insert = mapper.Map<IEnumerable<per_attendance_issue_record>>(inserts);
foreach (var record in insert)
{
record.OperationType = "新增";
record.CreateUser = userid;
record.CreationTime = DateTime.Now;
}
perforPerAttendanceIssueRecordRepository.AddRange(insert.ToArray());
}
if (updateIssues.Any())
{
......@@ -928,51 +1015,29 @@ public ApiResponse IssueStatistics(int allotId, int userid)
issuePersonnel.AttendanceDays = item.AttendanceDays;
issuePersonnel.WorkFullDays = item.AttendanceDays + item.DeductionDays;
issuePersonnel.State = (int)Attendance.State.已下发未确认;
issuePersonnel.UpdateUser = userid;
issuePersonnel.UpdateUser = realName;
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(insert.ToArray());
}
if (deleteIssues.Any())
{
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;
}
perforPerAttendanceIssueRecordRepository.AddRange(scInsert.ToArray());
}
perforPerallotRepository.PerAttendanceIssueBackup(allotId);
return new ApiResponse(ResponseType.OK, "下发成功");
}
public ApiResponse ChooseStatistics(int allotId, int userid, int[] issueid, Attendance.State state)
public ApiResponse ChooseStatistics(int allotId, int[] issueid, Attendance.State state, string realName)
{
var issuedates = perforPerAttendanceIssueRepository.GetEntities(w => w.AllotId == allotId && issueid.Contains(w.Id)).ToList();
foreach (var item in issuedates)
{
item.State = (int)state;
item.UpdateUser = userid;
item.UpdateUser = realName;
item.UpdateTime = DateTime.Now;
}
perforPerAttendanceIssueRepository.UpdateRange(issuedates.ToArray());
......
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