Commit d7a54454 by ruyun.zhang

Merge branch 'featrue/考勤下发' into develop

parents 801e9e54 ea5e4a7a
......@@ -49,7 +49,7 @@ public class AccountController : Controller
/// {
/// "logintype": 2,
/// "account": "admin",
/// "password": "e10adc3949ba59abbe56e057f20f883e",
/// "password": "b59c67bf196a4758191e42f76670ceba",
/// "appname": "string",
/// "device": "web"
/// }
......
......@@ -9,6 +9,8 @@
using System;
using System.IO;
using Newtonsoft.Json;
using System.Threading.Tasks;
using Performance.DtoModels.Response;
namespace Performance.Api.Controllers
{
......@@ -17,11 +19,13 @@ namespace Performance.Api.Controllers
public class AttendanceController : ControllerBase
{
private readonly AttendanceService _attendanceService;
private ClaimService claim;
public AttendanceController(
AttendanceService attendanceService
AttendanceService attendanceService, ClaimService claim
)
{
_attendanceService = attendanceService;
this.claim = claim;
}
/*
......@@ -32,19 +36,21 @@ AttendanceService attendanceService
view_attendance 考勤视图
*/
/// <summary>
/// 查询绩效考勤记录
/// </summary>
/// <param name="allotId"></param>
/// <returns></returns>
[HttpGet("GetAttendance/{allotId}")]
public ApiResponse<List<AttendanceStatistics>> GetAttendance(int allotId)
{
// 查询考勤视图,并按照设计图做格式转换 仅查询开始结束
var result = _attendanceService.GetAttendance(allotId);
return result;
}
///// <summary>
///// 查询绩效考勤记录
///// </summary>
///// <param name="allotId"></param>
///// <returns></returns>
//[HttpGet("GetAttendance/{allotId}")]
//public ApiResponse<List<AttendanceStatistics>> GetAttendance(int allotId)
//{
// // 查询考勤视图,并按照设计图做格式转换 仅查询开始结束
// var userid = claim.GetUserId();
// var result = _attendanceService.GetAttendance(allotId, userid);
// return result;
//}
#region 调动记录
......@@ -185,49 +191,53 @@ public ApiResponse AttendanceBatch(int allotId, int hospitalId, SaveCollectData
public ApiResponse<List<AttendanceStatistics>> GetAttendanceStatistics(int allotId)
{
// 返回结果参考接口 employee/apr/getdeptdetail
return _attendanceService.GetAttendanceStatistics(allotId);
var userid = claim.GetUserId();
return _attendanceService.GetAttendanceStatistics(allotId, userid);
}
#region 下载
/// <summary>
/// 初始考勤记录下载
/// </summary>
/// <param name="allotId"></param>
/// <returns></returns>
[HttpPost]
[Route("download/attendance/{allotId}")]
public IActionResult DownloadAttendance(int allotId)
{
List<ExcelDownloadHeads> excelDownloadHeads = new List<ExcelDownloadHeads>()
{
new ExcelDownloadHeads { Alias = "核算单元名称", Name = nameof(AttendanceStatistics.AccountingUnit) },
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.BeginDate) },
new ExcelDownloadHeads { Alias = "在科结束时间", Name = nameof(AttendanceStatistics.EndDate) },
};
var result = _attendanceService.GetAttendance(allotId).Data;
var ser = JsonConvert.SerializeObject(result);
var rows = JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(ser);
var filepath = _attendanceService.ExcelDownload(rows, "初始考勤记录", allotId, excelDownloadHeads);
var memoryStream = new MemoryStream();
using (var stream = new FileStream(filepath, FileMode.Open))
{
stream.CopyToAsync(memoryStream).Wait();
}
memoryStream.Seek(0, SeekOrigin.Begin);
var provider = new FileExtensionContentTypeProvider();
FileInfo fileInfo = new FileInfo(filepath);
var memi = provider.Mappings[".xlsx"];
return File(memoryStream, memi, Path.GetFileName(fileInfo.Name));
}
#region 初始考勤记录下载
///// <summary>
///// 初始考勤记录下载
///// </summary>
///// <param name="allotId"></param>
///// <returns></returns>
//[HttpPost]
//[Route("download/attendance/{allotId}")]
//public IActionResult DownloadAttendance(int allotId)
//{
// List<ExcelDownloadHeads> excelDownloadHeads = new List<ExcelDownloadHeads>()
// {
// new ExcelDownloadHeads { Alias = "核算单元名称", Name = nameof(AttendanceStatistics.AccountingUnit) },
// 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.BeginDate) },
// new ExcelDownloadHeads { Alias = "在科结束时间", Name = nameof(AttendanceStatistics.EndDate) },
// };
// var userid = claim.GetUserId();
// var result = _attendanceService.GetAttendance(allotId, userid).Data;
// var ser = JsonConvert.SerializeObject(result);
// var rows = JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(ser);
// var filepath = _attendanceService.ExcelDownload(rows, "初始考勤记录", allotId, excelDownloadHeads);
// var memoryStream = new MemoryStream();
// using (var stream = new FileStream(filepath, FileMode.Open))
// {
// stream.CopyToAsync(memoryStream).Wait();
// }
// memoryStream.Seek(0, SeekOrigin.Begin);
// var provider = new FileExtensionContentTypeProvider();
// FileInfo fileInfo = new FileInfo(filepath);
// var memi = provider.Mappings[".xlsx"];
// return File(memoryStream, memi, Path.GetFileName(fileInfo.Name));
//}
#endregion
#region 下载
/// <summary>
/// 考勤记录下载
/// </summary>
......@@ -313,22 +323,21 @@ public IActionResult DownloadStatistics(int allotId)
{
List<ExcelDownloadHeads> excelDownloadHeads = new List<ExcelDownloadHeads>()
{
new ExcelDownloadHeads { Alias = "核算单元", Name = nameof(AttendanceStatistics.AccountingUnit) },
new ExcelDownloadHeads { Alias = "科室名称", Name = nameof(AttendanceStatistics.Department) },
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.UnitType) },
new ExcelDownloadHeads { Alias = "开始时问", Name = nameof(AttendanceStatistics.BeginDate) },
new ExcelDownloadHeads { Alias = "结束时间", Name = nameof(AttendanceStatistics.EndDate) },
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" });
var result = _attendanceService.GetAttendanceStatistics(allotId).Data;
excelDownloadHeads.Add(new ExcelDownloadHeads() { Alias = "勤天数", Name = "AttendanceDays" });
var userid = claim.GetUserId();
var result = _attendanceService.GetAttendanceStatistics(allotId, userid).Data;
var ser = JsonConvert.SerializeObject(result);
var rows = JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(ser);
......@@ -357,7 +366,149 @@ public IActionResult DownloadStatistics(int allotId)
return File(memoryStream, memi, Path.GetFileName(path));*/
}
/// <summary>
/// 科室确认详情(已下发结果展示列表)下载
/// </summary>
/// <param name="allotId"></param>
/// <param name="unitType">人员类别</param>
/// <param name="accountingUnit">核算单元</param>
/// <returns></returns>
[HttpPost]
[Route("download/auditDetail")]
public IActionResult DownloadAuditDetail(int allotId, string unitType, string accountingUnit, string searchTxet)
{
List<ExcelDownloadHeads> excelDownloadHeads = new List<ExcelDownloadHeads>()
{
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" });
var userid = claim.GetUserId();
var result = _attendanceService.AuditDetail(allotId, unitType, accountingUnit, searchTxet, userid).Data;
var ser = JsonConvert.SerializeObject(result);
var rows = JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(ser);
var filepath = _attendanceService.ExcelDownload(rows, "最终考勤结果", allotId, excelDownloadHeads);
var memoryStream = new MemoryStream();
using (var stream = new FileStream(filepath, FileMode.Open))
{
stream.CopyToAsync(memoryStream).Wait();
}
memoryStream.Seek(0, SeekOrigin.Begin);
var provider = new FileExtensionContentTypeProvider();
FileInfo fileInfo = new FileInfo(filepath);
var memi = provider.Mappings[".xlsx"];
return File(memoryStream, memi, Path.GetFileName(fileInfo.Name));
}
#endregion
#region 最终考勤结果
/// <summary>
/// 科室确认列表
/// </summary>
/// <param name="allotId">绩效Id</param>
/// <param name="unitType">人员类别</param>
/// <param name="accountingUnit">核算单元</param>
/// <param name="state"> 操作类型 全部=0,未确认 = 1,确认 = 2,驳回 = 3,</param>
/// <returns></returns>
[HttpPost]
[Route("issue/audit/list")]
public ApiResponse<List<AttendanceAuditList>> AuditList(int allotId, string unitType, string accountingUnit, Attendance.State state)
{
return _attendanceService.AuditList(allotId, unitType, accountingUnit, state);
}
/// <summary>
/// 科室确认详情(已下发结果展示列表)
/// </summary>
/// <param name="allotId">绩效Id</param>
/// <param name="unitType"> 人员类别</param>
/// <param name="accountingUnit">核算单元</param>
/// <returns></returns>
[HttpPost]
[Route("issue/audit/detail")]
public ApiResponse<List<AttendanceAuditDetail>> AuditDetail(int allotId, string unitType, string accountingUnit, string searchTxet)
{
var userid = claim.GetUserId();
return _attendanceService.AuditDetail(allotId, unitType, accountingUnit, searchTxet, userid);
}
/// <summary>
/// 最终考勤结果下发(预确认显示)
/// </summary>
/// <param name="allotId">绩效Id</param>
/// <param name="unitType">人员类别</param>
/// <param name="accountingUnit">核算单元</param>
/// <param name="state"> 操作类型 新增 = 1, 修改 = 2, 删除 = 3,</param>
/// <returns></returns>
[HttpPost]
[Route("issue/check")]
public ApiResponse<List<PerAttendanceIssueDto>> PreConfirmationDisplay(int allotId, string unitType, string accountingUnit, Attendance.OperationType state)
{
var userid = claim.GetUserId();
return _attendanceService.PreConfirmationDisplay(allotId, userid, unitType, accountingUnit, state);
}
/// <summary>
/// 最终考勤结果下发
/// </summary>
/// <param name="allotId"></param>
/// <returns></returns>
[HttpPost]
[Route("issue/confirm")]
public ApiResponse IssueStatistics(int allotId)
{
var userid = claim.GetUserId();
var realName = claim.GetUserClaim(JwtClaimTypes.RealName);
return _attendanceService.IssueStatistics(allotId, userid, realName);
}
/// <summary>
/// 最终考勤结果驳回或确认无误((批量操作)
/// </summary>
/// <param name="attendanceIssueChoose"></param>
/// <returns></returns>
[HttpPost]
[Route("issue/choose")]
public ApiResponse ChooseStatistics(AttendanceIssueChoose attendanceIssueChoose)
{
var realName = claim.GetUserClaim(JwtClaimTypes.RealName);
return _attendanceService.ChooseStatistics(attendanceIssueChoose, realName);
}
///// <summary>
///// 最终考勤结果驳回或确认无误((批量操作)
///// </summary>
///// <param name="allotId"></param>
///// <param name="issueid">选择id</param>
///// <param name="state">操作类型 确认 = 2,驳回 = 3,</param>
///// <returns></returns>
//[HttpPost]
//[Route("issue/choose")]
//public ApiResponse ChooseStatistics(int allotId, int[] issueid, Attendance.State state, string remarks)
//{
// var realName = claim.GetUserClaim(JwtClaimTypes.RealName);
// return _attendanceService.ChooseStatistics(allotId, issueid, state, realName, remarks);
//}
#endregion
}
}
\ No newline at end of file
......@@ -368,13 +368,10 @@ public IActionResult WholeHospitalGrantSummaryDownload([FromBody] HospitalGrantS
string.IsNullOrEmpty(request.EndTime) || !DateTime.TryParse(request.EndTime, out edate))
throw new PerformanceException("请输入正确的时间");
var resetGroupBy = request.GroupBy.Copy();
var list = _computeService.GetAllComputeViewByDateAndTotal("view_allot_sign_emp", request);
if (null == list)
throw new PerformanceException("当前绩效记录不存在");
request.GroupBy = resetGroupBy;
List<string> headlist = new List<string>();
foreach (var item in request.GroupBy.Union(request.SumBy).ToList())
......@@ -496,12 +493,11 @@ public IActionResult WholeHospitalAccountingGrantSummaryDownload([FromBody] Hosp
string.IsNullOrEmpty(request.EndTime) || !DateTime.TryParse(request.EndTime, out edate))
throw new PerformanceException("请输入正确的时间");
var list = _computeService.GetAllComputeViewByDateAndTotal("view_allot_sign_dept", request);
if (null == list)
throw new PerformanceException("当前绩效记录不存在");
List<string> headlist = new List<string>();
List<string> headlist = new List<string>() { };
foreach (var item in request.GroupBy.Union(request.SumBy).ToList())
{
......@@ -619,7 +615,6 @@ public IActionResult WholeHospitalFinanceGrantSummaryDownload([FromBody] Hospita
string.IsNullOrEmpty(request.EndTime) || !DateTime.TryParse(request.EndTime, out edate))
throw new PerformanceException("请输入正确的时间");
var list = _computeService.GetAllComputeViewByDateAndTotal("view_allot_sign_emp_finance", request);
if (null == list)
throw new PerformanceException("当前绩效记录不存在");
......
......@@ -199,7 +199,7 @@ public ApiResponse OtherAutoComplete([FromBody] SecondEmpRequest request)
public ApiResponse<List<SecondTempResponse>> Temp([FromBody] AllotDeptRequest request)
{
var userId = claimService.GetUserId();
var result = secondAllotService.GetTemp(request.HospitalId, request.Department, userId);
var result = secondAllotService.GetTemp(request.HospitalId, request.UnitType, request.Department, userId);
return new ApiResponse<List<SecondTempResponse>>(ResponseType.OK, result);
}
......
......@@ -15,7 +15,7 @@
{
"logintype": 2,
"account": "admin",
"password": "e10adc3949ba59abbe56e057f20f883e",
"password": "b59c67bf196a4758191e42f76670ceba",
"appname": "string",
"device": "web"
}
......@@ -302,13 +302,6 @@
记录创建、下发、归档、上传绩效
</summary>
</member>
<member name="M:Performance.Api.Controllers.AttendanceController.GetAttendance(System.Int32)">
<summary>
查询绩效考勤记录
</summary>
<param name="allotId"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AttendanceController.GetCallIn(System.Int32)">
<summary>
查询绩效调动记录
......@@ -385,13 +378,6 @@
<param name="allotId"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AttendanceController.DownloadAttendance(System.Int32)">
<summary>
初始考勤记录下载
</summary>
<param name="allotId"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AttendanceController.DownloadVacation(System.Int32)">
<summary>
考勤记录下载
......@@ -413,6 +399,58 @@
<param name="allotId"></param>
<returns></returns>
</member>
<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>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AttendanceController.AuditList(System.Int32,System.String,System.String,Performance.DtoModels.Attendance.State)">
<summary>
科室确认列表
</summary>
<param name="allotId">绩效Id</param>
<param name="unitType">人员类别</param>
<param name="accountingUnit">核算单元</param>
<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,System.String)">
<summary>
科室确认详情(已下发结果展示列表)
</summary>
<param name="allotId">绩效Id</param>
<param name="unitType"> 人员类别</param>
<param name="accountingUnit">核算单元</param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AttendanceController.PreConfirmationDisplay(System.Int32,System.String,System.String,Performance.DtoModels.Attendance.OperationType)">
<summary>
最终考勤结果下发(预确认显示)
</summary>
<param name="allotId">绩效Id</param>
<param name="unitType">人员类别</param>
<param name="accountingUnit">核算单元</param>
<param name="state"> 操作类型 新增 = 1, 修改 = 2, 删除 = 3,</param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AttendanceController.IssueStatistics(System.Int32)">
<summary>
最终考勤结果下发
</summary>
<param name="allotId"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AttendanceController.ChooseStatistics(Performance.DtoModels.Response.AttendanceIssueChoose)">
<summary>
最终考勤结果驳回或确认无误((批量操作)
</summary>
<param name="attendanceIssueChoose"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.BudgetController.Query(Performance.DtoModels.Request.BudgetRequest)">
<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>
操作类型 新增 = 1, 修改 = 2, 删除 = 3,
</summary>
</member>
<member name="P:Performance.DtoModels.PerAttendanceIssueDto.Remarks">
<summary>
备注
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainData.RowNumber">
<summary>
行号
......@@ -2838,6 +2898,216 @@
科室
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditDetail.AttendanceIsueId">
<summary>
考勤结果id(确认or驳回调用)
</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>
状态 未确认 = 1,确认 = 2,驳回 = 3
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditDetail.ConfirmUser">
<summary>
确定用户
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditDetail.ConfirmTime">
<summary>
确定时间
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditDetail.Remarks">
<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.AttendanceIsueId">
<summary>
考勤结果id
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditList.Code">
<summary>
编码
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditList.UnitType">
<summary>
核算组别
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditList.AccountingUnit">
<summary>
核算单元
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditList.Count">
<summary>
总下发数
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditList.ConfirmCount">
<summary>
确认数
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditList.RejectCount">
<summary>
驳回数
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditList.OperationTime">
<summary>
操作时间
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditList.OperationUser">
<summary>
操作人
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditList.State">
<summary>
状态 未确认 = 1,确认 = 2,驳回 = 3
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceAuditList.Remarks">
<summary>
状态描述
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceIssueChoose.AllotId">
<summary>
绩效Id
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceIssueChoose.Issueid">
<summary>
删除id
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceIssueChoose.state">
<summary>
操作类型
</summary>
</member>
<member name="P:Performance.DtoModels.Response.AttendanceIssueChoose.Remarks">
<summary>
备注
</summary>
</member>
<member name="P:Performance.DtoModels.Response.CollectPermission.HeadName">
<summary>
列头名称
</summary>
</member>
<member name="P:Performance.DtoModels.Response.CollectPermission.BanChange">
<summary>
禁止修改
</summary>
</member>
<member name="P:Performance.DtoModels.Response.CollectPermission.Readnoly">
<summary>
0 可读可写 1 只读
</summary>
</member>
<member name="P:Performance.DtoModels.Response.CollectPermission.Visible">
<summary>
是否可见 0 不可见 1 可见
</summary>
</member>
<member name="P:Performance.DtoModels.Response.CollectPermission.AttachLast">
<summary>
是否附带上次绩效 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>
核算组别
......@@ -2873,6 +3143,11 @@
在科结束时间
</summary>
</member>
<member name="P:Performance.DtoModels.AttendanceStatistics.AttendanceDays">
<summary>
出勤天数
</summary>
</member>
<member name="P:Performance.DtoModels.AttendanceStatisticsDetial.Value">
<summary>
请假天数
......@@ -3068,31 +3343,6 @@
医院总收支结余
</summary>
</member>
<member name="P:Performance.DtoModels.Response.CollectPermission.HeadName">
<summary>
列头名称
</summary>
</member>
<member name="P:Performance.DtoModels.Response.CollectPermission.BanChange">
<summary>
禁止修改
</summary>
</member>
<member name="P:Performance.DtoModels.Response.CollectPermission.Readnoly">
<summary>
0 可读可写 1 只读
</summary>
</member>
<member name="P:Performance.DtoModels.Response.CollectPermission.Visible">
<summary>
是否可见 0 不可见 1 可见
</summary>
</member>
<member name="P:Performance.DtoModels.Response.CollectPermission.AttachLast">
<summary>
是否附带上次绩效 0 不附带 1 附带
</summary>
</member>
<member name="P:Performance.DtoModels.ComputeResponse.Source">
<summary>
来源
......@@ -4308,6 +4558,11 @@
用户科室
</summary>
</member>
<member name="P:Performance.DtoModels.UserIdentity.UnitType">
<summary>
核算组别
</summary>
</member>
<member name="P:Performance.DtoModels.UserIdentity.IsInitialPassword">
<summary>
初始密码 1 初始 2 改过
......
......@@ -6118,6 +6118,101 @@
修改时间
</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>
状态 未确认 = 1,确认 = 2,驳回 = 3
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_issue.CreateUser">
<summary>
创建用户
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_issue.CreateTime">
<summary>
创建时间
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_issue.ConfirmUser">
<summary>
确定用户
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_issue.ConfirmTime">
<summary>
确定时间
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_issue.Remarks">
<summary>
备注
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_type.IsDeduction">
<summary>
是否核减出勤 1 核减 2 不核减
......
using AutoMapper;
using Performance.DtoModels.Request;
using Performance.EntityModels;
using Performance.EntityModels.Entity;
using Performance.Infrastructure;
using System.Linq;
......@@ -275,7 +276,7 @@ public AutoMapperConfigs()
CreateMap<cof_workitem, WorkItemRequest>()
.ReverseMap();
CreateMap<cof_again,CofAgainRequest>().ReverseMap();
CreateMap<cof_again, CofAgainRequest>().ReverseMap();
}
}
}
......@@ -117,6 +117,20 @@ public enum Deduction
核减 = 1,
不核减 = 2,
}
public enum State
{
全部 = 0,
未确认 = 1,
确认 = 2,
驳回 = 3,
}
public enum OperationType
{
全部 = 0,
新增 = 1,
修改 = 2,
删除 = 3,
}
}
public class SecondAllot
......
using Performance.EntityModels.Entity;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Performance.DtoModels
{
public class PerAttendanceIssueDto
{
public PerAttendanceIssueDto()
{ }
public PerAttendanceIssueDto(AttendanceStatistics item)
{
Code = item.Code;
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)
{
Code = item.Code;
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.WorkFullDays;
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>
/// 操作类型 新增 = 1, 修改 = 2, 删除 = 3,
/// </summary>
public int OperationType { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remarks { get; set; }
}
}
......@@ -10,6 +10,8 @@ public class AllotDeptRequest
public int HospitalId { get; set; }
public string? UnitType { get; set; }
public string Department { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Performance.DtoModels.Response
{
public class AttendanceAuditDetail
{
/// <summary>
/// 考勤结果id(确认or驳回调用)
/// </summary>
public int AttendanceIsueId { 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>
/// 状态 未确认 = 1,确认 = 2,驳回 = 3
/// </summary>
public int State { get; set; }
/// <summary>
/// 确定用户
/// </summary>
public string ConfirmUser { get; set; }
/// <summary>
/// 确定时间
/// </summary>
public DateTime? ConfirmTime { get; set; }
public List<AttendanceAuditDetails> Detial { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remarks { get; set; }
}
public class AttendanceAuditDetails
{
/// <summary>
/// 请假天数
/// </summary>
public int Value { get; set; }
/// <summary>
/// 考勤类型
/// </summary>
public string Title { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remark { get; set; }
}
}
using System;
namespace Performance.DtoModels.Response
{
public class AttendanceAuditList
{
/// <summary>
/// 考勤结果id
/// </summary>
public int AttendanceIsueId { 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 int Count { get; set; }
/// <summary>
/// 确认数
/// </summary>
public int ConfirmCount { get; set; }
/// <summary>
/// 驳回数
/// </summary>
public int RejectCount { get; set; }
/// <summary>
/// 操作时间
/// </summary>
public DateTime? OperationTime { get; set; }
/// <summary>
/// 操作人
/// </summary>
public string OperationUser { get; set; }
/// <summary>
/// 状态 未确认 = 1,确认 = 2,驳回 = 3
/// </summary>
public int State { get; set; }
/// <summary>
/// 状态描述
/// </summary>
public string Remarks { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Performance.DtoModels.Response
{
public class AttendanceIssueChoose
{
/// <summary>
/// 绩效Id
/// </summary>
public int AllotId { get; set; }
/// <summary>
/// 删除id
/// </summary>
public int[] Issueid { get; set; }
/// <summary>
/// 操作类型
/// </summary>
public Attendance.State state { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remarks { 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>
/// 核算组别
......@@ -36,6 +43,9 @@ public class AttendanceStatistics
public DateTime EndDate { get; set; }
public List<AttendanceStatisticsDetial> Detial { get; set; }
/// <summary>
/// 出勤天数
/// </summary>
public int AttendanceDays { get; set; }
}
......
......@@ -23,6 +23,10 @@ public class UserIdentity
/// 用户科室
/// </summary>
public string Department { get; set; }
/// <summary>
/// 核算组别
/// </summary>
public string UnitType { get; set; }
public List<HospitalResponse> Hospital { get; set; }
public List<RoleResponse> Role { get; set; }
/// <summary>
......
......@@ -254,6 +254,7 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options)
public virtual DbSet<sys_user_role> sys_user_role { get; set; }
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_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; }
......
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
{
[Table("per_attendance_issue")]
public class per_attendance_issue
{
[Key]
public int Id { 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 Department { 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>
/// 状态 未确认 = 1,确认 = 2,驳回 = 3
/// </summary>
public int State { get; set; }
/// <summary>
/// 创建用户
/// </summary>
public string CreateUser { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime? CreateTime { get; set; }
/// <summary>
/// 确定用户
/// </summary>
public string ConfirmUser { get; set; }
/// <summary>
/// 确定时间
/// </summary>
public DateTime? ConfirmTime { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remarks { get; set; }
}
}
......@@ -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
......@@ -435,18 +435,18 @@ public List<dynamic> QueryComputeByDateAndTotal(string viewName, HospitalGrantSu
Dictionary<string, List<string>> dict = new Dictionary<string, List<string>>
{
{ "view_allot_sign_emp_group", new List<string>{ "hospitalid", "code", "unittype", "accountingunit", "source", "jobnumber", "employeename", "jobtitle", "bankcard", "batch", "jobcategory", "duty", "titleposition" } },
{ "view_allot_sign_emp_group", new List<string>{ "code", "hospitalid", "unittype", "accountingunit", "source", "jobnumber", "employeename", "jobtitle", "bankcard", "batch", "jobcategory", "duty", "titleposition" } },
{ "view_allot_sign_emp_sum", new List<string>{ "perforsumfee", "performanagementfee", "nightworkperfor", "adjustlaterotherfee", "otherperfor", "hideotherperfor", "shouldgivefee", "reservedratiofee", "realgivefee" } },
{ "view_allot_sign_dept_group", new List<string>{ "hospitalid", "code", "unittype", "accountingunit" } },
{ "view_allot_sign_dept_group", new List<string>{ "code", "hospitalid","unittype", "accountingunit" } },
{ "view_allot_sign_dept_sum", new List<string>{ "perforfee", "workloadfee", "assessbeforeotherfee", "perfortotal", "scoringaverage", "extra", "medicineextra", "materialsextra", "assesslaterotherfee", "assesslaterperfortotal", "adjustfactor", "adjustlaterotherfee", "aprperforamount", "hideaprotherperforamount", "assesslatermanagementfee", "realgivefee" } },
{ "view_allot_sign_emp_finance_group", new List<string>{ "hospitalid", "code", "unittype", "accountingunit","jobnumber", "employeename", } },
{ "view_allot_sign_emp_finance_group", new List<string>{ "code", "hospitalid", "unittype", "accountingunit","jobnumber", "employeename", } },
{ "view_allot_sign_emp_finance_sum", new List<string>{ "perforsumfee", "performanagementfee", "nightworkperfor", "adjustlaterotherfee", "otherperfor", "hideotherperfor", "shouldgivefee", "reservedratiofee", "realgivefee" } },
};
request.GroupBy.Remove("");
if (request.SumBy == null || !request.SumBy.Any(t => !string.IsNullOrEmpty(t))) request.SumBy = dict[viewName + "_sum"];
if (request.GroupBy == null || !request.GroupBy.Any(t => !string.IsNullOrEmpty(t))) request.GroupBy = dict[viewName + "_group"];
if (request.Search != null && request.Search.Any(w => !string.IsNullOrEmpty(w.Title) && !string.IsNullOrEmpty(w.Value)))
{
......
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 PerforPerAttendanceIssueRepository : PerforRepository<per_attendance_issue>
{
/// <summary>
/// per_attendance_issue Repository
/// </summary>
public PerforPerAttendanceIssueRepository(PerformanceDbContext context) : base(context)
{
}
}
}
......@@ -2,10 +2,9 @@
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using OfficeOpenXml;
using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
using OfficeOpenXml.Style;
using Performance.DtoModels;
using Performance.EntityModels;
using Performance.DtoModels.Response;
using Performance.EntityModels.Entity;
using Performance.EntityModels.Other;
using Performance.Infrastructure;
......@@ -15,8 +14,6 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Performance.Services
{
......@@ -24,82 +21,100 @@ public class AttendanceService : IAutoInjection
{
private readonly IMapper mapper;
private readonly ILogger<AttendanceService> logger;
private readonly PerforUserRepository _userRepository;
private readonly PerforPerallotRepository perforPerallotRepository;
private readonly PerforPerAttendanceRepository perforPerAttendanceRepository;
private readonly PerforPerAttendanceIssueRepository perforPerAttendanceIssueRepository;
private readonly PerfoPperAttendanceTypeRepository perfoPperAttendanceTypeRepository;
private readonly PerfoPperAttendanceVacationeRepository perfoPperAttendanceVacationeRepository;
private readonly PerforPerdeptdicRepository perdeptdicRepository;
private readonly PerforPeremployeeRepository perforPeremployeeRepository;
private readonly PerforCofaccountingRepository cofaccountingRepository;
private readonly RoleService roleService;
private readonly UserService userService;
public AttendanceService(
IMapper mapper,
ILogger<AttendanceService> logger,
PerforUserRepository userRepository,
PerforPerallotRepository perforPerallotRepository,
PerforPerAttendanceRepository perforPerAttendanceRepository,
PerforPerAttendanceIssueRepository perforPerAttendanceIssueRepository,
PerfoPperAttendanceTypeRepository perfoPperAttendanceTypeRepository,
PerfoPperAttendanceVacationeRepository perfoPperAttendanceVacationeRepository,
PerforPerdeptdicRepository perdeptdicRepository,
PerforPeremployeeRepository perforPeremployeeRepository,
PerforCofaccountingRepository cofaccountingRepository)
PerforCofaccountingRepository cofaccountingRepository,
RoleService roleService,
UserService userService
)
{
this.mapper = mapper;
this.logger = logger;
_userRepository = userRepository;
this.perforPerallotRepository = perforPerallotRepository;
this.perforPerAttendanceRepository = perforPerAttendanceRepository;
this.perforPerAttendanceIssueRepository = perforPerAttendanceIssueRepository;
this.perfoPperAttendanceTypeRepository = perfoPperAttendanceTypeRepository;
this.perfoPperAttendanceVacationeRepository = perfoPperAttendanceVacationeRepository;
this.perdeptdicRepository = perdeptdicRepository;
this.perforPeremployeeRepository = perforPeremployeeRepository;
this.cofaccountingRepository = cofaccountingRepository;
this.roleService = roleService;
this.userService = userService;
}
#region 初始考勤页面
public ApiResponse<List<AttendanceStatistics>> GetAttendance(int allotId)
{
var allot = perforPerallotRepository.GetEntity(w => w.ID == allotId);
if (allot == null)
throw new PerformanceException("当前绩效记录不存在");
//public ApiResponse<List<AttendanceStatistics>> GetAttendance(int allotId, int userid)
//{
// var allot = perforPerallotRepository.GetEntity(w => w.ID == allotId);
// if (allot == null)
// throw new PerformanceException("当前绩效记录不存在");
var attendanceData = perforPerallotRepository.GetAttendance(allotId);
// var attendanceData = perforPerallotRepository.GetAttendance(allotId);
// var roleType = new[] { (int)Role.护士长, (int)Role.科主任, (int)Role.特殊科室, (int)Role.行政科室, };
// var user = userService.GetUser(userid);
// var role = roleService.GetUserRole(user.UserID);
// if (role.Any(t => roleType.Contains(t.Type.Value)))
// attendanceData = attendanceData.Where(w => w.AccountingUnit == user.Department && w.UnitType == user.UnitType).ToList();
List<AttendanceStatistics> statistics = new List<AttendanceStatistics>();
// 交叉补全科室结束时间
foreach (var personnelNumber in attendanceData.Select(w => w.PersonnelNumber).Distinct())
{
var attendances = attendanceData.Where(w => w.PersonnelNumber == personnelNumber).OrderBy(w => w.AttendanceDate);
for (int i = 0; i < attendances.Count() - 1; i++)
{
var begDate = attendances.ElementAt(i).AttendanceDate.Date;
var endDate = attendances.ElementAt(i + 1).AttendanceDate.Date;
// 调入科室需要额外减去1天作为上一个科室结束时间
var days = attendances.ElementAt(i + 1).Source == Attendance.Type.调入.ToString() ? -1 : 0;
if (endDate > begDate)
{
var stat = new AttendanceStatistics
{
AllotID = attendances.ElementAt(i).ALLOTID,
UnitType = attendances.ElementAt(i).UnitType,
AccountingUnit = attendances.ElementAt(i).AccountingUnit,
Department = attendances.ElementAt(i).Department,
PersonnelNumber = attendances.ElementAt(i).PersonnelNumber,
PersonnelName = attendances.ElementAt(i).PersonnelName,
BeginDate = begDate,
EndDate = endDate.AddDays(days),
Detial = new List<AttendanceStatisticsDetial>()
};
statistics.Add(stat);
}
}
}
if (statistics != null)
return new ApiResponse<List<AttendanceStatistics>>(ResponseType.OK, statistics);
else
{
return new ApiResponse<List<AttendanceStatistics>>(ResponseType.Fail);
}
}
// List<AttendanceStatistics> statistics = new List<AttendanceStatistics>();
// // 交叉补全科室结束时间
// foreach (var personnelNumber in attendanceData.Select(w => w.PersonnelNumber).Distinct())
// {
// var attendances = attendanceData.Where(w => w.PersonnelNumber == personnelNumber).OrderBy(w => w.AttendanceDate);
// for (int i = 0; i < attendances.Count() - 1; i++)
// {
// var begDate = attendances.ElementAt(i).AttendanceDate.Date;
// var endDate = attendances.ElementAt(i + 1).AttendanceDate.Date;
// // 调入科室需要额外减去1天作为上一个科室结束时间
// var days = attendances.ElementAt(i + 1).Source == Attendance.Type.调入.ToString() ? -1 : 0;
// if (endDate > begDate)
// {
// var stat = new AttendanceStatistics
// {
// AllotID = attendances.ElementAt(i).ALLOTID,
// UnitType = attendances.ElementAt(i).UnitType,
// AccountingUnit = attendances.ElementAt(i).AccountingUnit,
// Department = attendances.ElementAt(i).Department,
// PersonnelNumber = attendances.ElementAt(i).PersonnelNumber,
// PersonnelName = attendances.ElementAt(i).PersonnelName,
// BeginDate = begDate,
// EndDate = endDate.AddDays(days),
// //Detial = new List<AttendanceStatisticsDetial>()
// };
// statistics.Add(stat);
// }
// }
// }
// if (statistics != null)
// return new ApiResponse<List<AttendanceStatistics>>(ResponseType.OK, statistics);
// else
// {
// return new ApiResponse<List<AttendanceStatistics>>(ResponseType.Fail);
// }
//}
#endregion
......@@ -322,6 +337,7 @@ public ApiResponse BatchCallIn(int allotId, int hospitalId, SaveCollectData requ
}
#endregion
#region 考勤类型
......@@ -652,7 +668,7 @@ public ApiResponse AttendanceBatch(int allotId, int hospitalId, SaveCollectData
}
#endregion
public ApiResponse<List<AttendanceStatistics>> GetAttendanceStatistics(int allotId)
public ApiResponse<List<AttendanceStatistics>> GetAttendanceStatistics(int allotId, int userid)
{
var allot = perforPerallotRepository.GetEntity(w => w.ID == allotId);
if (allot == null)
......@@ -665,7 +681,16 @@ public ApiResponse<List<AttendanceStatistics>> GetAttendanceStatistics(int allot
//var attendanceData = perforPerallotRepository.GetAttendance(allotId)
// .Where(w => numbers.Contains(w.PersonnelNumber))
// .ToList();
//查询全部数据
var attendanceData = perforPerallotRepository.GetAttendance(allotId);
//当角色对应时过滤
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)
attendanceData = attendanceData.Where(w => w.AccountingUnit == userInfo.User.Department && UnitTypeUtil.Is(w.UnitType, unitTypes)).ToList();
List<AttendanceStatistics> statistics = new List<AttendanceStatistics>();
// 交叉补全科室结束时间
......@@ -690,7 +715,8 @@ 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>()
Code = "",
};
statistics.Add(stat);
}
......@@ -735,8 +761,284 @@ 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 考勤下发
// 科室确认列表
public ApiResponse<List<AttendanceAuditList>> AuditList(int allotId, string unitType, string accountingUnit, Attendance.State state)
{
var issues = perforPerAttendanceIssueRepository.GetEntities(w => w.AllotId == allotId);
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();
var stateOrders = new int[] { (int)Attendance.State.未确认, (int)Attendance.State.驳回, (int)Attendance.State.确认 };
var items = issues.GroupBy(w => new { w.Code, w.UnitType, w.AccountingUnit })
.Select(w => new AttendanceAuditList
{
Code = w.Key.Code,
UnitType = w.Key.UnitType,
AccountingUnit = w.Key.AccountingUnit,
Count = w.Count(),
ConfirmCount = w.Count(p => p.State == (int)Attendance.State.确认),
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).Where(s => !string.IsNullOrEmpty(s)).Distinct()),
}).ToList();
foreach (var item in items)
{
item.State = (int)Attendance.State.未确认;
if (item.RejectCount > 0)
item.State = (int)Attendance.State.驳回;
else if (item.ConfirmCount == item.Count)
item.State = (int)Attendance.State.确认;
}
items = items.OrderBy(w => Array.IndexOf(stateOrders, w.State)).ToList();
if ((int)state == (int)Attendance.State.确认 || (int)state == (int)Attendance.State.未确认 || (int)state == (int)Attendance.State.驳回)
items = items.Where(w => w.State == (int)state).ToList();
return new ApiResponse<List<AttendanceAuditList>>(ResponseType.OK, items);
}
// 科室确认详情(已下发结果展示列表)
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).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,
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,
ConfirmUser = w.ConfirmUser,
ConfirmTime = w.ConfirmTime,
Remarks = w.Remarks,
}).OrderBy(w => Array.IndexOf(stateOrders, w.State)).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();
foreach (var item in types)
{
if (!stat.Detial.Any(w => w.Title == item.AttendanceName))
{
stat.Detial.Add(new AttendanceAuditDetails
{
Title = item.AttendanceName,
Value = 0,
Remark = item.IsDeduction == (int)Attendance.Deduction.核减 ? "核减" : "不核减",
});
}
}
}
return new ApiResponse<List<AttendanceAuditDetail>>(ResponseType.OK, items);
}
// 最终考勤结果下发(预确认显示)
public ApiResponse<List<PerAttendanceIssueDto>> PreConfirmationDisplay(int allotId, int userid, string unitType, string accountingUnit, Attendance.OperationType state)
{
var statistics = GetAttendanceStatistics(allotId, userid).Data;
var issues = perforPerAttendanceIssueRepository.GetEntities(w => w.AllotId == allotId);
//删除(删除页面没有的数据)
var statisticPersonnelNumber = statistics.Select(s => s.PersonnelNumber);
var scStatistics = issues.Where(w => !statisticPersonnelNumber.Contains(w.PersonnelNumber)).ToList();
var issuedates = new List<PerAttendanceIssueDto>();
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 item in statistics.Select(w => new { PersonnelNumber = w.PersonnelNumber, Code = w.Code }))
{
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)
{
issuedates.Add(new PerAttendanceIssueDto(staticPersonnel));
}
else if (staticPersonnel != null && issuePersonnel != null)
{
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));
}
if (!string.IsNullOrEmpty(unitType))
issuedates = issuedates.Where(w => w.UnitType.Contains(unitType)).ToList();
if (!string.IsNullOrEmpty(accountingUnit))
issuedates = issuedates.Where(w => w.AccountingUnit.Contains(accountingUnit)).ToList();
if ((int)state == (int)Attendance.OperationType.新增 || (int)state == (int)Attendance.OperationType.修改 || (int)state == (int)Attendance.OperationType.删除)
issuedates = issuedates.Where(w => w.OperationType == (int)state).ToList();
return new ApiResponse<List<PerAttendanceIssueDto>>(ResponseType.OK, issuedates);
}
// 最终考勤结果下发
public ApiResponse IssueStatistics(int allotId, int userid, string realName, string unitType = "", string accountingUnit = "", Attendance.OperationType state = 0)
{
var allot = perforPerallotRepository.GetEntity(w => w.ID == allotId);
if (allot == null)
throw new PerformanceException("当前绩效记录不存在");
var preConfirmationDisplay = PreConfirmationDisplay(allotId, userid, unitType, accountingUnit, state).Data;
if (preConfirmationDisplay == null)
return new ApiResponse(ResponseType.NotFound, "暂无下发数据");
var issues = perforPerAttendanceIssueRepository.GetEntities(w => w.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 inserts = insertIssues.Select(item =>
{
return new per_attendance_issue()
{
AllotId = allotId,
HospitalId = allot.HospitalId,
Code = item.Code,
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,
CreateUser = realName,
CreateTime = DateTime.Now,
State = (int)Attendance.State.未确认,
};
});
perforPerAttendanceIssueRepository.AddRange(inserts.ToArray());
}
if (updateIssues.Any())
{
List<per_attendance_issue> updateIssuedates = new List<per_attendance_issue>();
foreach (var item in updateIssues)
{
var issuePersonnel = issues.FirstOrDefault(w => w.PersonnelNumber == item.PersonnelNumber && w.Code == item.Code);
issuePersonnel.UnitType = item.UnitType;
issuePersonnel.AccountingUnit = item.AccountingUnit;
issuePersonnel.Code = item.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.CreateUser = realName;
issuePersonnel.CreateTime = DateTime.Now;
issuePersonnel.ConfirmUser = "";
issuePersonnel.ConfirmTime = null;
issuePersonnel.Remarks = "";
updateIssuedates.Add(issuePersonnel);
}
perforPerAttendanceIssueRepository.UpdateRange(updateIssuedates.ToArray());
}
if (deleteIssues.Any())
{
var deletePersonnel = issues.Where(w => deleteIssues.Contains(w.PersonnelNumber)).ToList();
perforPerAttendanceIssueRepository.RemoveRange(deletePersonnel.ToArray());
}
perforPerallotRepository.PerAttendanceIssueBackup(allotId);
return new ApiResponse(ResponseType.OK, "下发成功");
}
// 最终考勤结果驳回或确认无误((批量操作)
public ApiResponse ChooseStatistics(AttendanceIssueChoose attendanceIssueChoose, string realName)
{
var issuedates = perforPerAttendanceIssueRepository.GetEntities(w => w.AllotId == attendanceIssueChoose.AllotId && attendanceIssueChoose.Issueid.Contains(w.Id)).ToList();
foreach (var item in issuedates)
{
item.State = (int)attendanceIssueChoose.state;
item.ConfirmUser = realName;
item.ConfirmTime = DateTime.Now;
item.Remarks = attendanceIssueChoose.Remarks;
}
perforPerAttendanceIssueRepository.UpdateRange(issuedates.ToArray());
return new ApiResponse(ResponseType.OK);
}
#endregion
// 拆分请假时间段为每个日期
private List<DateTime> SplitEveryDay(DateTime begin, DateTime end)
......@@ -903,5 +1205,7 @@ public string ExcelDownload(List<Dictionary<string, object>> rows, string name,
(nameof(RecordAttendcance.BegDate), "开始时间", t => t.BegDate),
(nameof(RecordAttendcance.EndDate), "结束时间", t => t.EndDate),
};
}
}
......@@ -31,8 +31,8 @@ public static List<cof_alias> PerformanceTotal(string route, string[] heads)
public static List<cof_alias> AllComputeView { get; } = new List<cof_alias>
{
new cof_alias{ Alias = "来源", Name = nameof(view_allot_sign_emp.Source), States = 1, SumStatus = 0, Sort = 1 },
new cof_alias{ Alias = "核算单元编码", Name = nameof(view_allot_sign_emp.Code), States = 1, SumStatus = 0, Sort = 1 },
new cof_alias{ Alias = "核算组别", Name = nameof(view_allot_sign_emp.UnitType), States = 1, SumStatus = 0, Sort = 2 },
new cof_alias{ Alias = "核算单元编码", Name = nameof(view_allot_sign_emp.Code), States = 1, SumStatus = 0, Sort = 2 },
new cof_alias{ Alias = "核算单元", Name = nameof(view_allot_sign_emp.AccountingUnit), States = 1, SumStatus = 0, Sort = 3 },
new cof_alias{ Alias = "员工号", Name = nameof(view_allot_sign_emp.JobNumber), States = 1, SumStatus = 0, Sort = 4 },
......@@ -75,8 +75,8 @@ public static List<cof_alias> AllComputeViewByDate
public static List<cof_alias> AllComputePersonView { get; } = new List<cof_alias>
{
new cof_alias{ Alias = "核算单元编码", Name = nameof(view_allot_sign_emp.Code), States = 1, SumStatus = 0, Sort = 0 },
new cof_alias{ Alias = "核算组别", Name = nameof(view_allot_sign_emp.UnitType), States = 1, SumStatus = 0, Sort = 1 },
new cof_alias{ Alias = "核算单元编码", Name = nameof(view_allot_sign_emp.Code), States = 1, SumStatus = 0, Sort = 2 },
new cof_alias{ Alias = "核算单元", Name = nameof(view_allot_sign_emp.AccountingUnit), States = 1, SumStatus = 0, Sort = 2 },
new cof_alias{ Alias = "员工号", Name = nameof(view_allot_sign_emp.JobNumber), States = 1, SumStatus = 0, Sort = 3 },
new cof_alias{ Alias = "人员姓名", Name = nameof(view_allot_sign_emp.EmployeeName), States = 1, SumStatus = 0, Sort = 4 },
......@@ -128,8 +128,8 @@ public static List<cof_alias> AllComputePersonViewByDate
public static List<cof_alias> AllComputeDepartmentView { get; } = new List<cof_alias>
{
new cof_alias{ Alias = "核算单元编码", Name = nameof(view_allot_sign_emp.Code), States = 1, SumStatus = 0, Sort = 0 },
new cof_alias{ Alias = "核算组别", Name = nameof(view_allot_sign_dept.UnitType), States = 1, SumStatus = 0, Sort = 1 },
new cof_alias{ Alias = "核算单元编码", Name = nameof(view_allot_sign_emp.Code), States = 1, SumStatus = 0, Sort = 2 },
new cof_alias{ Alias = "核算单元", Name = nameof(view_allot_sign_dept.AccountingUnit), States = 1, SumStatus = 0, Sort = 2 },
new cof_alias{ Alias = "业绩绩效", Name = nameof(view_allot_sign_dept.PerforFee), States = 1, SumStatus = 1, Sort = 3 },
new cof_alias{ Alias = "工作量绩效", Name = nameof(view_allot_sign_dept.WorkloadFee), States = 1, SumStatus = 1, Sort = 4 },
......
......@@ -892,19 +892,28 @@ public bool DelValue(int secondId, List<ag_fixatitem> oldFixatItems, List<ag_fix
/// </summary>
/// <param name="userId"></param>
/// <returns></returns>
public List<SecondTempResponse> GetTemp(int hospitalid, string department, int userId)
public List<SecondTempResponse> GetTemp(int hospitalid, string unitType, string department, int userId)
{
var temps = agtempRepository.GetEntities(t => t.IsEnable == 1);
if (temps != null && temps.Any())
{
ag_usetemp useTemp = null;
if (string.IsNullOrEmpty(unitType))
{
var userCenter = userRepository.GetUser(userId);
var unitType = UnitTypeUtil.GetMaps(userCenter?.URole.Type ?? 0);
var unitTypes = UnitTypeUtil.GetMaps(userCenter?.URole.Type ?? 0);
Expression<Func<ag_usetemp, bool>> exp = t => t.HospitalId == hospitalid && t.Department == department;
if (userCenter?.URole != null && userCenter.URole.Type.HasValue)
exp = exp.And(t => unitType.Contains(t.UnitType));
exp = exp.And(t => unitTypes.Contains(t.UnitType));
useTemp = agusetempRepository.GetEntity(exp);
}
else
{
useTemp = agusetempRepository.GetEntity(t => t.HospitalId == hospitalid && t.UnitType == unitType && t.Department == department);
}
var useTemp = agusetempRepository.GetEntity(exp);
var secondTemps = _mapper.Map<List<SecondTempResponse>>(temps);
if (useTemp != null)
secondTemps.ForEach(t => t.IsSelected = t.Id == useTemp.UseTempId);
......
......@@ -69,7 +69,7 @@ public UserIdentity Login(LoginRequest request)
{
var user = _userRepository.GetEntity(t => t.Login == request.Account && t.IsDelete == 1);
if (user == null)
throw new PerformanceException($"用户不存在 UserId:{request.Account}");
throw new PerformanceException($"{request.Account}”用户不存在");
//MD5小写加密
request.Password = PwdHelper.MD5AndSalt(request.Password);
......
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