Commit a10c4efd by ruyun.zhang@suvalue.com

v22.4.18

parents ee75cac4 7ca51ded
...@@ -556,5 +556,27 @@ public ApiResponse GetOwnerPerformance() ...@@ -556,5 +556,27 @@ public ApiResponse GetOwnerPerformance()
var res = _allotService.GetOwnerPerformance(userid); var res = _allotService.GetOwnerPerformance(userid);
return new ApiResponse(ResponseType.OK, res); return new ApiResponse(ResponseType.OK, res);
} }
/// <summary>
/// H5查询个人绩效
/// </summary>
/// <param name="begin">开始月份:2021-03</param>
/// <param name="end">结束月份:2021-04</param>
/// <returns></returns>
[Route("owner/query/mobile")]
[HttpGet]
public ApiResponse<List<OwnerMobilePerformanceDto>> GetOwnerMobilePerformance(string begin = "", string end = "")
{
var userid = _claim.GetUserId();
var beginDate = begin.ToTryDateTime();
var endDate = end.ToTryDateTime();
if (beginDate == DateTime.MinValue || endDate == DateTime.MinValue)
throw new PerformanceException("您选择的时间范围无效");
endDate = endDate.AddMonths(1);
var dtos = _allotService.GetOwnerMobilePerformance(userid, beginDate, endDate);
return new ApiResponse<List<OwnerMobilePerformanceDto>>(ResponseType.OK, dtos);
}
} }
} }
...@@ -435,8 +435,19 @@ public ApiResponse CustomColumnHeaders([FromBody] ComputerAliasRequest request) ...@@ -435,8 +435,19 @@ public ApiResponse CustomColumnHeaders([FromBody] ComputerAliasRequest request)
[HttpPost] [HttpPost]
public ApiResponse Batch([FromBody] BatchRequest request) public ApiResponse Batch([FromBody] BatchRequest request)
{ {
var result = _computeService.Batch(request); return _computeService.Batch(request);
return result ? new ApiResponse(ResponseType.OK, "操作成功") : new ApiResponse(ResponseType.Fail, "操作失败"); }
/// <summary>
/// 取消全院绩效进行批次标记
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[Route("allcompute/batch/cancel")]
[HttpPost]
public ApiResponse BatchCancel([FromBody] BatchCancelRequest request)
{
return _computeService.BatchCancel(request);
} }
#region 发放表下载 #region 发放表下载
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Performance.DtoModels; using Performance.DtoModels;
using Performance.DtoModels.Request; using Performance.DtoModels.Request;
using Performance.DtoModels.Response;
using Performance.EntityModels; using Performance.EntityModels;
using Performance.Infrastructure; using Performance.Infrastructure;
using Performance.Services; using Performance.Services;
...@@ -294,11 +295,13 @@ public ApiResponse GetAprGroupList([FromBody] AllotIdRequest request) ...@@ -294,11 +295,13 @@ public ApiResponse GetAprGroupList([FromBody] AllotIdRequest request)
return new ApiResponse(ResponseType.OK, "ok", employee); return new ApiResponse(ResponseType.OK, "ok", employee);
var result = employee.GroupBy(t => new { TypeInDepartment = t.TypeInDepartment ?? "" }) var result = employee.GroupBy(t => new { TypeInDepartment = t.TypeInDepartment ?? "" })
.Select(t => new per_apr_amount .Select(t => new OhterAmountAuditResponse
{ {
TypeInDepartment = t.Key.TypeInDepartment, TypeInDepartment = t.Key.TypeInDepartment,
Amount = t.Sum(s => s.Amount ?? 0), Amount = t.Sum(s => s.Amount ?? 0),
Status = t.Any(s => s.Status == 2) ? 2 : t.Any(s => s.Status == 4) ? 4 : t.FirstOrDefault().Status, Status = t.Any(s => s.Status == 2) ? 2 : t.Any(s => s.Status == 4) ? 4 : t.FirstOrDefault().Status,
AuditTime = t.Any(s => s.Status == 2) ? "" : t.Max(w => w.AuditTime)?.ToString("yyyy-MM-dd HH:mm:ss"),
Remark = t.Any(s => !s.MarkStatus.HasValue) ? "" : $"已审计{t.Max(w => w.MarkTime)?.ToString("(yyyy-MM-dd HH:mm:ss)")}"
}); });
return new ApiResponse(ResponseType.OK, "ok", result); return new ApiResponse(ResponseType.OK, "ok", result);
} }
...@@ -401,6 +404,18 @@ public ApiResponse AuditResult([FromBody] AprAmountAuditRequest request) ...@@ -401,6 +404,18 @@ public ApiResponse AuditResult([FromBody] AprAmountAuditRequest request)
} }
/// <summary> /// <summary>
/// 医院其他绩效审计
/// </summary>
/// <returns></returns>
[HttpPost]
[Route("apr/mark")]
public ApiResponse AprMark([FromBody] AprAmountMarkRequest request)
{
var userid = claim.GetUserId();
return employeeService.AprMark(userid, request);
}
/// <summary>
/// 上传医院其他绩效文件 /// 上传医院其他绩效文件
/// </summary> /// </summary>
/// <param name="form"></param> /// <param name="form"></param>
...@@ -582,11 +597,13 @@ public ApiResponse GetAprHideGroupList([FromBody] AllotIdRequest request) ...@@ -582,11 +597,13 @@ public ApiResponse GetAprHideGroupList([FromBody] AllotIdRequest request)
return new ApiResponse(ResponseType.OK, "ok", employee); return new ApiResponse(ResponseType.OK, "ok", employee);
var result = employee.GroupBy(t => new { TypeInDepartment = t.TypeInDepartment ?? "" }) var result = employee.GroupBy(t => new { TypeInDepartment = t.TypeInDepartment ?? "" })
.Select(t => new per_apr_amount .Select(t => new OhterAmountAuditResponse
{ {
TypeInDepartment = t.Key.TypeInDepartment, TypeInDepartment = t.Key.TypeInDepartment,
Amount = t.Sum(s => s.Amount ?? 0), Amount = t.Sum(s => s.Amount ?? 0),
Status = t.Any(s => s.Status == 2) ? 2 : t.Any(s => s.Status == 4) ? 4 : t.FirstOrDefault().Status, Status = t.Any(s => s.Status == 2) ? 2 : t.Any(s => s.Status == 4) ? 4 : t.FirstOrDefault().Status,
AuditTime = t.Any(s => s.Status == 2) ? "" : t.Max(w => w.AuditTime)?.ToString("yyyy-MM-dd HH:mm:ss"),
Remark = t.Any(s => !s.MarkStatus.HasValue) ? "" : $"已审计{t.Max(w => w.MarkTime)?.ToString("(yyyy-MM-dd HH:mm:ss)")}"
}); });
return new ApiResponse(ResponseType.OK, "ok", result); return new ApiResponse(ResponseType.OK, "ok", result);
} }
...@@ -688,6 +705,18 @@ public ApiResponse AuditResultHide([FromBody] AprAmountAuditRequest request) ...@@ -688,6 +705,18 @@ public ApiResponse AuditResultHide([FromBody] AprAmountAuditRequest request)
} }
/// <summary> /// <summary>
/// 不公示其他绩效审计
/// </summary>
/// <returns></returns>
[HttpPost]
[Route("apr/hide/mark")]
public ApiResponse AprMarkHide([FromBody] AprAmountMarkRequest request)
{
var userid = claim.GetUserId();
return employeeService.AprMarkHide(userid, request);
}
/// <summary>
/// 上传不公示其他绩效 /// 上传不公示其他绩效
/// </summary> /// </summary>
/// <param name="form"></param> /// <param name="form"></param>
......
...@@ -371,6 +371,11 @@ public ApiResponse SubmitAudit(SubmitAuditRequest request) ...@@ -371,6 +371,11 @@ public ApiResponse SubmitAudit(SubmitAuditRequest request)
public ApiResponse<List<ag_secondallot>> AuditList([FromBody] AllotDeptRequest request) public ApiResponse<List<ag_secondallot>> AuditList([FromBody] AllotDeptRequest request)
{ {
var list = secondAllotService.AuditList(request.AllotId); var list = secondAllotService.AuditList(request.AllotId);
foreach (var item in list)
{
item.Remark += item.MarkStatus.HasValue && item.MarkStatus == 1 ? $" 已审计{item.MarkTime?.ToString("(yyyy-MM-dd HH:mm:ss)")}" : "";
}
return new ApiResponse<List<ag_secondallot>>(ResponseType.OK, "审核列表", list); return new ApiResponse<List<ag_secondallot>>(ResponseType.OK, "审核列表", list);
} }
...@@ -392,6 +397,22 @@ public ApiResponse AuditResult([FromBody] SecondAuditRequest request) ...@@ -392,6 +397,22 @@ public ApiResponse AuditResult([FromBody] SecondAuditRequest request)
} }
/// <summary> /// <summary>
/// 二次绩效审计
/// </summary>
/// <returns></returns>
[HttpPost]
[Route("/api/second/mark")]
public ApiResponse SecondMark([FromBody] SecondMarkRequest request)
{
if (request?.SecondIds == null || !request.SecondIds.Any())
return new ApiResponse(ResponseType.ParameterError, "参数SecondIds无效!");
var userid = claimService.GetUserId();
var result = secondAllotService.SecondMark(userid, request.SecondIds);
return result ? new ApiResponse(ResponseType.OK, "操作成功") : new ApiResponse(ResponseType.Fail, "操作失败");
}
/// <summary>
/// 护理部二次绩效审核列表 /// 护理部二次绩效审核列表
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
...@@ -719,6 +740,7 @@ public ApiResponse RedistributionCompute([FromBody] SecondComputeDto request) ...@@ -719,6 +740,7 @@ public ApiResponse RedistributionCompute([FromBody] SecondComputeDto request)
_redistributionService.ClearInvalidValue(cleanDatas); _redistributionService.ClearInvalidValue(cleanDatas);
var dic = _redistributionService.GetTableHeaderDictionary((ComputeMode)request.ComputeMode, allot, second, loads, workloadGroups); var dic = _redistributionService.GetTableHeaderDictionary((ComputeMode)request.ComputeMode, allot, second, loads, workloadGroups);
_redistributionService.RowsExpand(allot, dic, cleanDatas);
return new ApiResponse(ResponseType.OK, new { Head = request.Head, Body = cleanDatas, Dic = dic }); return new ApiResponse(ResponseType.OK, new { Head = request.Head, Body = cleanDatas, Dic = dic });
} }
catch (PerformanceException ex) catch (PerformanceException ex)
...@@ -918,8 +940,10 @@ public ApiResponse RedistributionDetail([FromBody] SecondBaseDto request) ...@@ -918,8 +940,10 @@ public ApiResponse RedistributionDetail([FromBody] SecondBaseDto request)
// 返回信息 // 返回信息
var (head, rows) = _redistributionService.RedistributionDetail((ComputeMode)request.ComputeMode, allot, second, workloadGroups); var (head, rows) = _redistributionService.RedistributionDetail((ComputeMode)request.ComputeMode, allot, second, workloadGroups);
var dic = _redistributionService.GetTableHeaderDictionary((ComputeMode)request.ComputeMode, allot, second, loads, workloadGroups); var dic = _redistributionService.GetTableHeaderDictionary((ComputeMode)request.ComputeMode, allot, second, loads, workloadGroups);
_redistributionService.RowsExpand(allot, dic, rows);
return new ApiResponse(ResponseType.OK, new { Head = head, Body = rows, Dic = dic }); return new ApiResponse(ResponseType.OK, new { Head = head, Body = rows, Dic = dic });
} }
#endregion #endregion
......
...@@ -46,13 +46,16 @@ ...@@ -46,13 +46,16 @@
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content> </Content>
<Content Update="wwwroot\Performance.Api.xml"> <Content Update="wwwroot\Performance.Api.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\Performance.DtoModels.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content> </Content>
<Content Update="wwwroot\Performance.DtoModels.xml"> <Content Update="wwwroot\Performance.DtoModels.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content> </Content>
<Content Update="wwwroot\Performance.EntityModels.xml"> <Content Update="wwwroot\Performance.EntityModels.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content> </Content>
</ItemGroup> </ItemGroup>
...@@ -66,6 +69,9 @@ ...@@ -66,6 +69,9 @@
<None Update="Template\医院人员绩效模板.xls"> <None Update="Template\医院人员绩效模板.xls">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None> </None>
<None Update="Template\医院人员绩效模板.xlsx">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Template\医院绩效模板%28无执行科室%29.xlsx"> <None Update="Template\医院绩效模板%28无执行科室%29.xlsx">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None> </None>
...@@ -87,6 +93,13 @@ ...@@ -87,6 +93,13 @@
<None Update="Template\导入数据模板.xlsx"> <None Update="Template\导入数据模板.xlsx">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None> </None>
<None Update="Template\工作量数据导入模板.xlsx">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<Folder Include="wwwroot\" />
</ItemGroup> </ItemGroup>
<ProjectExtensions> <ProjectExtensions>
......
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<DeleteExistingFiles>True</DeleteExistingFiles>
<ExcludeApp_Data>False</ExcludeApp_Data>
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<PublishProvider>FileSystem</PublishProvider>
<PublishUrl>bin\Release\net5.0\publish\</PublishUrl>
<WebPublishMethod>FileSystem</WebPublishMethod>
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
<DebugType>embedded</DebugType>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<PublishSingleFile>True</PublishSingleFile>
<EnableCompressionInSingleFile>true</EnableCompressionInSingleFile>
<SelfContained>true</SelfContained>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<PublishReadyToRun>True</PublishReadyToRun>
<SiteUrlToLaunchAfterPublish />
<PublishTrimmed>True</PublishTrimmed>
<ProjectGuid>3ae00ff5-f0ba-4d72-a23b-770186309327</ProjectGuid>
</PropertyGroup>
</Project>
\ No newline at end of file
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Connections;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Authorization; using Microsoft.AspNetCore.Mvc.Authorization;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
...@@ -15,6 +16,7 @@ ...@@ -15,6 +16,7 @@
using Performance.DtoModels; using Performance.DtoModels;
using Performance.Infrastructure; using Performance.Infrastructure;
using Performance.Services; using Performance.Services;
using System;
using System.Globalization; using System.Globalization;
using System.Reflection; using System.Reflection;
using System.Text; using System.Text;
...@@ -87,7 +89,11 @@ public void ConfigureServices(IServiceCollection services) ...@@ -87,7 +89,11 @@ public void ConfigureServices(IServiceCollection services)
services.AddDependencyInjectionConfiguration(); services.AddDependencyInjectionConfiguration();
// signalr // signalr
services.AddSignalR(); services.AddSignalR(hubOptions =>
{
hubOptions.EnableDetailedErrors = true;
hubOptions.KeepAliveInterval = TimeSpan.FromMinutes(1);
});
// cors // cors
services.AddCors(options => services.AddCors(options =>
...@@ -132,7 +138,11 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env) ...@@ -132,7 +138,11 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
app.UseEndpoints(endpoints => app.UseEndpoints(endpoints =>
{ {
endpoints.MapHub<AllotLogHub>("/performance/allotLogHub"); endpoints.MapHub<AllotLogHub>("/performance/allotLogHub", options =>
{
options.Transports = HttpTransportType.WebSockets | HttpTransportType.LongPolling;
options.WebSockets.CloseTimeout = TimeSpan.FromMinutes(1);
});
endpoints.MapControllers(); endpoints.MapControllers();
}); });
......
...@@ -287,6 +287,125 @@ ...@@ -287,6 +287,125 @@
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.AllotController.GetOwnerMobilePerformance(System.String,System.String)">
<summary>
H5查询个人绩效
</summary>
<param name="begin">开始月份:2021-03</param>
<param name="end">结束月份:2021-04</param>
<returns></returns>
</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>
查询绩效调动记录
</summary>
<param name="allotId"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AttendanceController.GetBatchCallInHandsonTable(System.Int32)">
<summary>
返回HandsonTable格式调动记录
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AttendanceController.BatchCallIn(System.Int32,System.Int32,Performance.DtoModels.SaveCollectData)">
<summary>
批量插入调动记录
</summary>
<param name="allotId"></param>
<param name="hospitalId"></param>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AttendanceController.GetAttendanceType(System.Int32,System.Int32)">
<summary>
查询绩效考勤类型
</summary>
<param name="allotId"></param>
<param name="hospitalId"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AttendanceController.InsertAttendanceType(System.Int32,System.Int32,Performance.EntityModels.Other.AttendanceType)">
<summary>
新增或修改考勤类型
</summary>
<param name="allotId"></param>
<param name="hospitalId"></param>
<param name="attendanceType"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AttendanceController.DeleteAttendanceType(System.Int32)">
<summary>
删除考勤类型
</summary>
<param name="id"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AttendanceController.GetAttendanceVacationHandsonTable(System.Int32)">
<summary>
返回HandsonTable格式考勤记录
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AttendanceController.GetAttendanceVacation(System.Int32)">
<summary>
查询考勤记录
</summary>
<param name="allotId"></param>
<param name="hospitalId"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AttendanceController.AttendanceBatch(System.Int32,System.Int32,Performance.DtoModels.SaveCollectData)">
<summary>
批量插入考勤记录,插入前需要删除所有后重新插入
</summary>
<param name="allotId"></param>
<param name="hospitalId"></param>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AttendanceController.GetAttendanceStatistics(System.Int32)">
<summary>
考勤结果统计
</summary>
<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>
考勤记录下载
</summary>
<param name="allotId"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AttendanceController.DownloadCallIn(System.Int32)">
<summary>
调动记录下载
</summary>
<param name="allotId"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AttendanceController.DownloadStatistics(System.Int32)">
<summary>
生成最终考勤结果下载
</summary>
<param name="allotId"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.BudgetController.Query(Performance.DtoModels.Request.BudgetRequest)"> <member name="M:Performance.Api.Controllers.BudgetController.Query(Performance.DtoModels.Request.BudgetRequest)">
<summary> <summary>
预算管理查询(包含金额、占比) 预算管理查询(包含金额、占比)
...@@ -541,6 +660,13 @@ ...@@ -541,6 +660,13 @@
<param name="request"></param> <param name="request"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.ComputeController.BatchCancel(Performance.DtoModels.Request.BatchCancelRequest)">
<summary>
取消全院绩效进行批次标记
</summary>
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.ComputeController.GetAdminPerDownload(System.Int32)"> <member name="M:Performance.Api.Controllers.ComputeController.GetAdminPerDownload(System.Int32)">
<summary> <summary>
下载院领导、中层、工勤组绩效 下载院领导、中层、工勤组绩效
...@@ -1066,6 +1192,12 @@ ...@@ -1066,6 +1192,12 @@
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.EmployeeController.AprMark(Performance.DtoModels.AprAmountMarkRequest)">
<summary>
医院其他绩效审计
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.EmployeeController.Import(Microsoft.AspNetCore.Http.IFormCollection)"> <member name="M:Performance.Api.Controllers.EmployeeController.Import(Microsoft.AspNetCore.Http.IFormCollection)">
<summary> <summary>
上传医院其他绩效文件 上传医院其他绩效文件
...@@ -1158,6 +1290,12 @@ ...@@ -1158,6 +1290,12 @@
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.EmployeeController.AprMarkHide(Performance.DtoModels.AprAmountMarkRequest)">
<summary>
不公示其他绩效审计
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.EmployeeController.ImportAprHide(Microsoft.AspNetCore.Http.IFormCollection)"> <member name="M:Performance.Api.Controllers.EmployeeController.ImportAprHide(Microsoft.AspNetCore.Http.IFormCollection)">
<summary> <summary>
上传不公示其他绩效 上传不公示其他绩效
...@@ -2031,6 +2169,12 @@ ...@@ -2031,6 +2169,12 @@
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.SecondAllotController.SecondMark(Performance.DtoModels.SecondMarkRequest)">
<summary>
二次绩效审计
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.SecondAllotController.NursingDeptlist(Performance.DtoModels.AllotDeptRequest)"> <member name="M:Performance.Api.Controllers.SecondAllotController.NursingDeptlist(Performance.DtoModels.AllotDeptRequest)">
<summary> <summary>
护理部二次绩效审核列表 护理部二次绩效审核列表
......
...@@ -202,16 +202,9 @@ ...@@ -202,16 +202,9 @@
<member name="F:Performance.DtoModels.DataFormat.分数"> <member name="F:Performance.DtoModels.DataFormat.分数">
<summary> 分数 </summary> <summary> 分数 </summary>
</member> </member>
<member name="F:Performance.DtoModels.DataFormat.日期"> <member name="F:Performance.DtoModels.DataFormat.日期YYYYMMDD">
<summary> 日期 </summary> <summary> 日期 </summary>
</member> </member>
<member name="M:Performance.DtoModels.HandsonTable.SetRowData(System.Collections.Generic.IEnumerable{Performance.DtoModels.HandsonRowData},System.Boolean)">
<summary>
</summary>
<param name="datas"></param>
<param name="isTypein">是否是用户录入的 是:true 不是:false</param>
</member>
<member name="P:Performance.DtoModels.HistoryData.Year"> <member name="P:Performance.DtoModels.HistoryData.Year">
<summary> <summary>
...@@ -1918,6 +1911,27 @@ ...@@ -1918,6 +1911,27 @@
<member name="P:Performance.DtoModels.AprAmountAuditRequest.Remark"> <member name="P:Performance.DtoModels.AprAmountAuditRequest.Remark">
<summary> 备注 </summary> <summary> 备注 </summary>
</member> </member>
<member name="P:Performance.DtoModels.AprAmountMarkRequest.AllotId">
<summary> 绩效ID </summary>
</member>
<member name="P:Performance.DtoModels.AprAmountMarkRequest.TypeInDepartments">
<summary> 需要审计的科室,支持多个科室一起审计 </summary>
</member>
<member name="P:Performance.DtoModels.Request.BatchRequest.Batch">
<summary>
批次号
</summary>
</member>
<member name="P:Performance.DtoModels.Request.BatchRequest.BatchDate">
<summary>
发放时间
</summary>
</member>
<member name="P:Performance.DtoModels.Request.BatchRequest.BankName">
<summary>
发放银行
</summary>
</member>
<member name="P:Performance.DtoModels.Request.BatchDetail.UnitType"> <member name="P:Performance.DtoModels.Request.BatchDetail.UnitType">
<summary> <summary>
核算单元分类 核算单元分类
...@@ -1938,11 +1952,6 @@ ...@@ -1938,11 +1952,6 @@
工号 工号
</summary> </summary>
</member> </member>
<member name="P:Performance.DtoModels.Request.BatchDetail.Batch">
<summary>
批次
</summary>
</member>
<member name="P:Performance.DtoModels.Request.ComputerAvgRequest.PositionName"> <member name="P:Performance.DtoModels.Request.ComputerAvgRequest.PositionName">
<summary> <summary>
绩效核算人群 绩效核算人群
...@@ -2436,6 +2445,9 @@ ...@@ -2436,6 +2445,9 @@
<member name="P:Performance.DtoModels.SecondAuditRequest.Remark"> <member name="P:Performance.DtoModels.SecondAuditRequest.Remark">
<summary> 备注 </summary> <summary> 备注 </summary>
</member> </member>
<member name="P:Performance.DtoModels.SecondMarkRequest.SecondIds">
<summary> 二次绩效Id </summary>
</member>
<member name="T:Performance.DtoModels.SetDepartmentRequest"> <member name="T:Performance.DtoModels.SetDepartmentRequest">
<summary> <summary>
登录请求 登录请求
...@@ -2703,6 +2715,56 @@ ...@@ -2703,6 +2715,56 @@
科室 科室
</summary> </summary>
</member> </member>
<member name="P:Performance.DtoModels.AttendanceStatistics.UnitType">
<summary>
核算组别
</summary>
</member>
<member name="P:Performance.DtoModels.AttendanceStatistics.AccountingUnit">
<summary>
核算单元
</summary>
</member>
<member name="P:Performance.DtoModels.AttendanceStatistics.Department">
<summary>
科室名称
</summary>
</member>
<member name="P:Performance.DtoModels.AttendanceStatistics.PersonnelNumber">
<summary>
工号
</summary>
</member>
<member name="P:Performance.DtoModels.AttendanceStatistics.PersonnelName">
<summary>
姓名
</summary>
</member>
<member name="P:Performance.DtoModels.AttendanceStatistics.BeginDate">
<summary>
在科开始时间
</summary>
</member>
<member name="P:Performance.DtoModels.AttendanceStatistics.EndDate">
<summary>
在科结束时间
</summary>
</member>
<member name="P:Performance.DtoModels.AttendanceStatisticsDetial.Value">
<summary>
请假天数
</summary>
</member>
<member name="P:Performance.DtoModels.AttendanceStatisticsDetial.Title">
<summary>
考勤类型
</summary>
</member>
<member name="P:Performance.DtoModels.AttendanceStatisticsDetial.Remark">
<summary>
备注
</summary>
</member>
<member name="P:Performance.DtoModels.BudgetRatioResponse.HospitalId"> <member name="P:Performance.DtoModels.BudgetRatioResponse.HospitalId">
<summary> <summary>
医院Id 医院Id
...@@ -3532,6 +3594,51 @@ ...@@ -3532,6 +3594,51 @@
实发绩效 实发绩效
</summary> </summary>
</member> </member>
<member name="P:Performance.DtoModels.OwnerPerformanceDto.IssueDate">
<summary>
发放时间
</summary>
</member>
<member name="P:Performance.DtoModels.OwnerMobilePerformanceDto.Total">
<summary>
绩效发放总额
</summary>
</member>
<member name="P:Performance.DtoModels.OwnerMobilePerformanceDto.Items">
<summary>
绩效明细
</summary>
</member>
<member name="P:Performance.DtoModels.OwnerMobileItemDto.Title">
<summary>
类型名称
</summary>
</member>
<member name="P:Performance.DtoModels.OwnerMobileItemDto.Amount">
<summary>
金额
</summary>
</member>
<member name="P:Performance.DtoModels.OwnerMobileItemDto.Details">
<summary>
明细项
</summary>
</member>
<member name="P:Performance.DtoModels.OwnerMobileItemDetailDto.Title">
<summary>
类型名称
</summary>
</member>
<member name="P:Performance.DtoModels.OwnerMobileItemDetailDto.Amount">
<summary>
金额
</summary>
</member>
<member name="P:Performance.DtoModels.OwnerMobileItemDetailDto.Date">
<summary>
发放时间,空则不显示
</summary>
</member>
<member name="P:Performance.DtoModels.PerEmployeeResponse.WorkTime"> <member name="P:Performance.DtoModels.PerEmployeeResponse.WorkTime">
<summary> <summary>
参加工作时间 参加工作时间
...@@ -4103,6 +4210,11 @@ ...@@ -4103,6 +4210,11 @@
格式 格式
</summary> </summary>
</member> </member>
<member name="P:Performance.DtoModels.SecondColumnDictionary.Expand">
<summary>
true 扩展字段,通过配置额外展示
</summary>
</member>
<member name="P:Performance.DtoModels.SecondEmployeeDto.ComputeMode"> <member name="P:Performance.DtoModels.SecondEmployeeDto.ComputeMode">
<summary> <summary>
计算方式:11 不计算 12 横向计算 13 纵向计算 计算方式:11 不计算 12 横向计算 13 纵向计算
......
...@@ -1070,11 +1070,6 @@ ...@@ -1070,11 +1070,6 @@
二次绩效列表 二次绩效列表
</summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.ag_secondallot.Id">
<summary>
</summary>
</member>
<member name="P:Performance.EntityModels.ag_secondallot.AllotId"> <member name="P:Performance.EntityModels.ag_secondallot.AllotId">
<summary> <summary>
绩效ID 绩效ID
...@@ -1115,26 +1110,6 @@ ...@@ -1115,26 +1110,6 @@
预发金额 预发金额
</summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.ag_secondallot.Efficiency">
<summary>
效率绩效
</summary>
</member>
<member name="P:Performance.EntityModels.ag_secondallot.Scale">
<summary>
规模绩效
</summary>
</member>
<member name="P:Performance.EntityModels.ag_secondallot.Grant">
<summary>
发放系数
</summary>
</member>
<member name="P:Performance.EntityModels.ag_secondallot.ShouldGiveFee">
<summary>
应发管理绩效
</summary>
</member>
<member name="P:Performance.EntityModels.ag_secondallot.Status"> <member name="P:Performance.EntityModels.ag_secondallot.Status">
<summary> <summary>
状态 1 未提交 2 等待审核 3 审核通过 4 驳回 状态 1 未提交 2 等待审核 3 审核通过 4 驳回
...@@ -1190,6 +1165,11 @@ ...@@ -1190,6 +1165,11 @@
夜班绩效 夜班绩效
</summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.ag_secondallot.MarkStatus">
<summary>
审计状态 1 已审计
</summary>
</member>
<member name="T:Performance.EntityModels.ag_temp"> <member name="T:Performance.EntityModels.ag_temp">
<summary> <summary>
二次绩效模板 二次绩效模板
...@@ -5960,6 +5940,11 @@ ...@@ -5960,6 +5940,11 @@
是否修改过配置 1修改过 0未修改 是否修改过配置 1修改过 0未修改
</summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.per_allot.PigeonholeDate">
<summary>
归档日期
</summary>
</member>
<member name="T:Performance.EntityModels.per_apr_amount"> <member name="T:Performance.EntityModels.per_apr_amount">
<summary> <summary>
...@@ -6040,6 +6025,11 @@ ...@@ -6040,6 +6025,11 @@
验证失败描述 验证失败描述
</summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.per_apr_amount.MarkStatus">
<summary>
审计状态 1 已审计
</summary>
</member>
<member name="T:Performance.EntityModels.per_apr_amount_hide"> <member name="T:Performance.EntityModels.per_apr_amount_hide">
<summary> <summary>
医院其他绩效 医院其他绩效
...@@ -6120,6 +6110,16 @@ ...@@ -6120,6 +6110,16 @@
验证失败描述 验证失败描述
</summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.per_apr_amount_hide.MarkStatus">
<summary>
审计状态 1 已审计
</summary>
</member>
<member name="P:Performance.EntityModels.Entity.per_attendance_type.IsDeduction">
<summary>
是否核减出勤 1 核减 2 不核减
</summary>
</member>
<member name="T:Performance.EntityModels.per_batch"> <member name="T:Performance.EntityModels.per_batch">
<summary> <summary>
分批发放记录 分批发放记录
...@@ -8845,6 +8845,56 @@ ...@@ -8845,6 +8845,56 @@
</summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.Other.view_attendance.UnitType">
<summary>
人员类别
</summary>
</member>
<member name="P:Performance.EntityModels.Other.view_attendance.AccountingUnit">
<summary>
核算单元
</summary>
</member>
<member name="P:Performance.EntityModels.Other.view_attendance.PersonnelNumber">
<summary>
工号
</summary>
</member>
<member name="P:Performance.EntityModels.Other.view_attendance.PersonnelName">
<summary>
姓名
</summary>
</member>
<member name="P:Performance.EntityModels.Other.view_attendance.AttendanceDate">
<summary>
考勤时间
</summary>
</member>
<member name="P:Performance.EntityModels.Other.view_attendance.Source">
<summary>
来源
</summary>
</member>
<member name="P:Performance.EntityModels.Other.view_attendance.Department">
<summary>
科室名称
</summary>
</member>
<member name="P:Performance.EntityModels.Other.AttendanceType.Id">
<summary>
Id
</summary>
</member>
<member name="P:Performance.EntityModels.Other.AttendanceType.AttendanceName">
<summary>
考勤类型名称
</summary>
</member>
<member name="P:Performance.EntityModels.Other.AttendanceType.IsDeduction">
<summary>
是否核减出勤 1 核减 2 不核减
</summary>
</member>
<member name="P:Performance.EntityModels.HisData.HisDepartment"> <member name="P:Performance.EntityModels.HisData.HisDepartment">
<summary> <summary>
His科室 His科室
......
...@@ -116,7 +116,7 @@ public enum DataFormat ...@@ -116,7 +116,7 @@ public enum DataFormat
/// <summary> 分数 </summary> /// <summary> 分数 </summary>
分数, 分数,
/// <summary> 日期 </summary> /// <summary> 日期 </summary>
日期 日期YYYYMMDD
} }
public enum Role public enum Role
...@@ -134,6 +134,7 @@ public enum Role ...@@ -134,6 +134,7 @@ public enum Role
数据收集 = 11, 数据收集 = 11,
护理部审核 = 12, 护理部审核 = 12,
绩效查询 = 13, 绩效查询 = 13,
审计 = 14,
} }
public class Background public class Background
...@@ -165,4 +166,18 @@ public enum Status ...@@ -165,4 +166,18 @@ public enum Status
驳回 = 4, 驳回 = 4,
} }
} }
public class Attendance
{
public enum Type
{
开始,
调入,
结束,
}
public enum Deduction
{
核减 = 1,
不核减 = 2,
}
}
} }
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Performance.DtoModels
{
public class ExcelDownloadHeads
{
public string Alias { get; set; }
public string Name { get; set; }
}
}
...@@ -37,12 +37,6 @@ public HandsonTable(int sheetType, string[] cols, List<collect_permission> permi ...@@ -37,12 +37,6 @@ public HandsonTable(int sheetType, string[] cols, List<collect_permission> permi
InitColumns(permissions); InitColumns(permissions);
} }
/// <summary>
///
/// </summary>
/// <param name="datas"></param>
/// <param name="isTypein">是否是用户录入的 是:true 不是:false</param>
public void SetRowData(IEnumerable<HandsonRowData> datas, bool isTypein) public void SetRowData(IEnumerable<HandsonRowData> datas, bool isTypein)
{ {
foreach (var dt in datas) foreach (var dt in datas)
...@@ -127,6 +121,11 @@ public HandsonColumn(string data, bool readOnly = false, DataFormat format = Dat ...@@ -127,6 +121,11 @@ public HandsonColumn(string data, bool readOnly = false, DataFormat format = Dat
Type = "text"; Type = "text";
break; break;
case DataFormat.日期YYYYMMDD:
Type = "DateFormat";
DateFormat = "YYYY/MM/DD";
break;
case DataFormat.小数: case DataFormat.小数:
Type = "numeric"; Type = "numeric";
NumericFormat = new NumericFormat { Pattern = "0,00.00" }; NumericFormat = new NumericFormat { Pattern = "0,00.00" };
...@@ -152,6 +151,7 @@ public HandsonColumn(string data, bool readOnly = false, DataFormat format = Dat ...@@ -152,6 +151,7 @@ public HandsonColumn(string data, bool readOnly = false, DataFormat format = Dat
public string Data { get; set; } public string Data { get; set; }
public bool ReadOnly { get; set; } public bool ReadOnly { get; set; }
public string Type { get; set; } public string Type { get; set; }
public string DateFormat { get; set; }
public string[] Source { get; set; } public string[] Source { get; set; }
public bool Strict { get; set; } = false; public bool Strict { get; set; } = false;
......
using FluentValidation;
using System;
using System.Collections.Generic;
using System.Text;
namespace Performance.DtoModels
{
public class AprAmountMarkRequest
{
/// <summary> 绩效ID </summary>
public int AllotId { get; set; }
/// <summary> 需要审计的科室,支持多个科室一起审计 </summary>
public string[] TypeInDepartments { get; set; }
}
}
using System.Collections.Generic; using System;
using System.Collections.Generic;
namespace Performance.DtoModels.Request namespace Performance.DtoModels.Request
{ {
public class BatchCancelRequest
{
public int HospitalId { get; set; }
public int AllotId { get; set; }
public List<BatchDetail> Details { get; set; }
}
public class BatchRequest public class BatchRequest
{ {
public int HospitalId { get; set; } public int HospitalId { get; set; }
public int AllotId { get; set; } public int AllotId { get; set; }
/// <summary>
/// 批次号
/// </summary>
public string Batch { get; set; }
/// <summary>
/// 发放时间
/// </summary>
public DateTime? BatchDate { get; set; }
/// <summary>
/// 发放银行
/// </summary>
public string BankName { get; set; }
public List<BatchDetail> Details { get; set; } public List<BatchDetail> Details { get; set; }
} }
...@@ -32,10 +53,5 @@ public class BatchDetail ...@@ -32,10 +53,5 @@ public class BatchDetail
/// 工号 /// 工号
/// </summary> /// </summary>
public string JobNumber { get; set; } public string JobNumber { get; set; }
/// <summary>
/// 批次
/// </summary>
public string Batch { get; set; }
} }
} }
...@@ -62,6 +62,7 @@ public class ComputerAliasUpdate ...@@ -62,6 +62,7 @@ public class ComputerAliasUpdate
} }
public class ComputerAliasHead public class ComputerAliasHead
{ {
public string Name { get; set; }
public string Head { get; set; } public string Head { get; set; }
public int HeadId { get; set; } public int HeadId { get; set; }
public int Sort { get; set; } public int Sort { get; set; }
......
...@@ -22,7 +22,6 @@ public SecondAuditRequestValidator() ...@@ -22,7 +22,6 @@ public SecondAuditRequestValidator()
{ {
RuleFor(x => x.SecondId).NotNull().NotEmpty().GreaterThan(0); RuleFor(x => x.SecondId).NotNull().NotEmpty().GreaterThan(0);
RuleFor(x => x.IsPass).NotNull().NotEmpty().InclusiveBetween(1, 2); RuleFor(x => x.IsPass).NotNull().NotEmpty().InclusiveBetween(1, 2);
RuleFor(x => x.Remark).NotNull().NotEmpty();
} }
} }
} }
namespace Performance.DtoModels
{
public class SecondMarkRequest
{
/// <summary> 二次绩效Id </summary>
public int[] SecondIds { get; set; }
}
}
using System;
using System.Collections.Generic;
namespace Performance.DtoModels
{
public class AttendanceStatistics
{
public int AllotID { get; set; }
/// <summary>
/// 核算组别
/// </summary>
public string UnitType { get; set; }
/// <summary>
/// 核算单元
/// </summary>
public string AccountingUnit { get; set; }
/// <summary>
/// 科室名称
/// </summary>
public string Department { 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; }
public List<AttendanceStatisticsDetial> Detial { get; set; }
public int AttendanceDays { get; set; }
}
public class AttendanceStatisticsDetial
{
/// <summary>
/// 请假天数
/// </summary>
public int Value { get; set; }
/// <summary>
/// 考勤类型
/// </summary>
public string Title { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remark { get; set; }
}
}
using System; using System;
using System.Collections.Generic;
using System.Text; using System.Text;
namespace Performance.DtoModels namespace Performance.DtoModels
......
...@@ -9,14 +9,14 @@ public class DeptdicResponse ...@@ -9,14 +9,14 @@ public class DeptdicResponse
public int HospitalId { get; set; } public int HospitalId { get; set; }
public string HISDeptName { get; set; } public string HISDeptName { get; set; }
public string Department { get; set; } public string Department { get; set; }
public Deptdic OutDoctorAccounting { get; set; } public string OutDoctorAccounting { get; set; }
public Deptdic OutNurseAccounting { get; set; } public string OutNurseAccounting { get; set; }
public Deptdic OutTechnicAccounting { get; set; } public string OutTechnicAccounting { get; set; }
public Deptdic InpatDoctorAccounting { get; set; } public string InpatDoctorAccounting { get; set; }
public Deptdic InpatNurseAccounting { get; set; } public string InpatNurseAccounting { get; set; }
public Deptdic InpatTechnicAccounting { get; set; } public string InpatTechnicAccounting { get; set; }
public Deptdic LogisticsAccounting { get; set; } public string LogisticsAccounting { get; set; }
public Deptdic SpecialAccounting { get; set; } public string SpecialAccounting { get; set; }
public DateTime? CreateTime { get; set; } public DateTime? CreateTime { get; set; }
public int IsVerify { get; set; } public int IsVerify { get; set; }
} }
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Performance.DtoModels.Response
{
public class OhterAmountAuditResponse
{
public string TypeInDepartment { get; set; }
public decimal Amount { get; set; }
public int? Status { get; set; }
public string AuditTime { get; set; }
public string Remark { get; set; }
}
}
...@@ -15,5 +15,52 @@ public class OwnerPerformanceDto : view_allot_result ...@@ -15,5 +15,52 @@ public class OwnerPerformanceDto : view_allot_result
/// 实发绩效 /// 实发绩效
/// </summary> /// </summary>
public decimal RealGiveFee { get; set; } public decimal RealGiveFee { get; set; }
/// <summary>
/// 发放时间
/// </summary>
public string IssueDate { get; set; }
}
public class OwnerMobilePerformanceDto
{
/// <summary>
/// 绩效发放总额
/// </summary>
public decimal Total { get; set; }
/// <summary>
/// 绩效明细
/// </summary>
public List<OwnerMobileItemDto> Items { get; set; }
}
public class OwnerMobileItemDto
{
/// <summary>
/// 类型名称
/// </summary>
public string Title { get; set; }
/// <summary>
/// 金额
/// </summary>
public decimal Amount { get; set; }
/// <summary>
/// 明细项
/// </summary>
public List<OwnerMobileItemDetailDto> Details { get; set; }
}
public class OwnerMobileItemDetailDto
{
/// <summary>
/// 类型名称
/// </summary>
public string Title { get; set; }
/// <summary>
/// 金额
/// </summary>
public decimal Amount { get; set; }
/// <summary>
/// 发放时间,空则不显示
/// </summary>
public string Date { get; set; }
} }
} }
...@@ -18,9 +18,4 @@ public class PerEmployeeResponse : per_employee ...@@ -18,9 +18,4 @@ public class PerEmployeeResponse : per_employee
/// </summary> /// </summary>
public new string BirthDate { get; set; } public new string BirthDate { get; set; }
} }
public class PersonePassword : per_employee
{
public string Password { get; set; }
}
} }
...@@ -38,12 +38,16 @@ public class SecondColumnDictionary ...@@ -38,12 +38,16 @@ public class SecondColumnDictionary
/// 格式 /// 格式
/// </summary> /// </summary>
public bool IsNumber { get; set; } public bool IsNumber { get; set; }
/// <summary>
/// true 扩展字段,通过配置额外展示
/// </summary>
public bool Expand { get; set; }
public SecondColumnDictionary() public SecondColumnDictionary()
{ {
} }
public SecondColumnDictionary(string label, string key, bool isTrue, int sort, string site = "Table", string type = "", string color = "", int? width = null, bool isNumber = true) public SecondColumnDictionary(string label, string key, bool isTrue, int sort, string site = "Table", string type = "", string color = "", int? width = null, bool isNumber = true, bool expand = false)
{ {
Label = label; Label = label;
Key = key; Key = key;
...@@ -54,6 +58,7 @@ public SecondColumnDictionary(string label, string key, bool isTrue, int sort, s ...@@ -54,6 +58,7 @@ public SecondColumnDictionary(string label, string key, bool isTrue, int sort, s
Color = color; Color = color;
Width = width.HasValue ? width.ToString() : ((label ?? "").Length * 20 + 10).ToString(); Width = width.HasValue ? width.ToString() : ((label ?? "").Length * 20 + 10).ToString();
IsNumber = isNumber; IsNumber = isNumber;
Expand = expand;
} }
} }
} }
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Metadata;
using Performance.EntityModels.Entity;
using System; using System;
namespace Performance.EntityModels namespace Performance.EntityModels
...@@ -245,5 +246,8 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options) ...@@ -245,5 +246,8 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options)
/// <summary> 用户角色关联表 </summary> /// <summary> 用户角色关联表 </summary>
public virtual DbSet<sys_user_role> sys_user_role { get; set; } public virtual DbSet<sys_user_role> sys_user_role { get; set; }
public virtual DbSet<sys_version> sys_version { 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_type> per_attendance_type { get; set; }
public virtual DbSet<per_attendance_vacation> per_attendance_vacation { get; set; }
} }
} }
...@@ -15,9 +15,6 @@ namespace Performance.EntityModels ...@@ -15,9 +15,6 @@ namespace Performance.EntityModels
[Table("ag_secondallot")] [Table("ag_secondallot")]
public class ag_secondallot public class ag_secondallot
{ {
/// <summary>
///
/// </summary>
[Key] [Key]
public int Id { get; set; } public int Id { get; set; }
...@@ -60,25 +57,25 @@ public class ag_secondallot ...@@ -60,25 +57,25 @@ public class ag_secondallot
/// 预发金额 /// 预发金额
/// </summary> /// </summary>
public Nullable<decimal> PreRealGiveFee { get; set; } public Nullable<decimal> PreRealGiveFee { get; set; }
/// <summary> ///// <summary>
/// 效率绩效 ///// 效率绩效
/// </summary> ///// </summary>
public Nullable<decimal> Efficiency { get; set; } //public Nullable<decimal> Efficiency { get; set; }
/// <summary> ///// <summary>
/// 规模绩效 ///// 规模绩效
/// </summary> ///// </summary>
public Nullable<decimal> Scale { get; set; } //public Nullable<decimal> Scale { get; set; }
/// <summary> ///// <summary>
/// 发放系数 ///// 发放系数
/// </summary> ///// </summary>
public Nullable<decimal> Grant { get; set; } //public Nullable<decimal> Grant { get; set; }
/// <summary> ///// <summary>
/// 应发管理绩效 ///// 应发管理绩效
/// </summary> ///// </summary>
public Nullable<decimal> ShouldGiveFee { get; set; } //public Nullable<decimal> ShouldGiveFee { get; set; }
/// <summary> /// <summary>
/// 状态 1 未提交 2 等待审核 3 审核通过 4 驳回 /// 状态 1 未提交 2 等待审核 3 审核通过 4 驳回
...@@ -134,5 +131,12 @@ public class ag_secondallot ...@@ -134,5 +131,12 @@ public class ag_secondallot
/// 夜班绩效 /// 夜班绩效
/// </summary> /// </summary>
public Nullable<decimal> NightShiftWorkPerforFee { get; set; } public Nullable<decimal> NightShiftWorkPerforFee { get; set; }
/// <summary>
/// 审计状态 1 已审计
/// </summary>
public Nullable<int> MarkStatus { get; set; }
public Nullable<int> MarkUser { get; set; }
public Nullable<DateTime> MarkTime { get; set; }
} }
} }
...@@ -105,5 +105,9 @@ public class per_allot ...@@ -105,5 +105,9 @@ public class per_allot
/// 是否修改过配置 1修改过 0未修改 /// 是否修改过配置 1修改过 0未修改
/// </summary> /// </summary>
public int IsModifyConfig { get; set; } public int IsModifyConfig { get; set; }
/// <summary>
/// 归档日期
/// </summary>
public Nullable<DateTime> PigeonholeDate { get; set; }
} }
} }
...@@ -95,5 +95,11 @@ public class per_apr_amount ...@@ -95,5 +95,11 @@ public class per_apr_amount
/// 验证失败描述 /// 验证失败描述
/// </summary> /// </summary>
public string VerifyMessage { get; set; } public string VerifyMessage { get; set; }
/// <summary>
/// 审计状态 1 已审计
/// </summary>
public Nullable<int> MarkStatus { get; set; }
public Nullable<int> MarkUser { get; set; }
public Nullable<DateTime> MarkTime { get; set; }
} }
} }
...@@ -90,5 +90,11 @@ public class per_apr_amount_hide ...@@ -90,5 +90,11 @@ public class per_apr_amount_hide
/// 验证失败描述 /// 验证失败描述
/// </summary> /// </summary>
public string VerifyMessage { get; set; } public string VerifyMessage { get; set; }
/// <summary>
/// 审计状态 1 已审计
/// </summary>
public Nullable<int> MarkStatus { get; set; }
public Nullable<int> MarkUser { get; set; }
public Nullable<DateTime> MarkTime { 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")]
public class per_attendance
{
[Key]
public int Id { get; set; }
public int HospitalId { get; set; } //医院Id
public int AllotId { get; set; } //绩效Id
public string PersonnelNumber { get; set; } //工号
public string PersonnelName { get; set; } //姓名
public string CallInUnitType { get; set; } //人员类别
public string CallInAccountingUnit { get; set; } //核算单元
public DateTime? CallInDate { 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_type")]
public class per_attendance_type
{
[Key]
public int Id { get; set; }
public int HospitalId { get; set; } //医院Id
public int AllotId { get; set; } //绩效Id
public string AttendanceName { get; set; } //考勤类型名称
/// <summary>
/// 是否核减出勤 1 核减 2 不核减
/// </summary>
public int IsDeduction { 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_vacation")]
public class per_attendance_vacation
{
[Key]
public int Id { get; set; }
public int HospitalId { get; set; } //医院Id
public int AllotId { get; set; } //绩效Id
public string PersonnelNumber { get; set; } //工号
public string PersonnelName { get; set; } //姓名
public int TypeId { get; set; } //per_attendance_type表中ID
public DateTime? BegDate { get; set; } //开始时间
public DateTime? EndDate { get; set; } //结束时间
}
}
...@@ -39,7 +39,8 @@ public class per_batch ...@@ -39,7 +39,8 @@ public class per_batch
/// <summary> /// <summary>
/// 批次日期 /// 批次日期
/// </summary> /// </summary>
public DateTime BatchDate { get; set; } public Nullable<DateTime> BatchDate { get; set; }
public string BankName { get; set; }
/// <summary> /// <summary>
/// 核算单元分类 /// 核算单元分类
......
...@@ -150,5 +150,15 @@ public class per_employee ...@@ -150,5 +150,15 @@ public class per_employee
/// ///
/// </summary> /// </summary>
public Nullable<int> CreateUser { get; set; } public Nullable<int> CreateUser { get; set; }
public string Reserve01 { get; set; }
public string Reserve02 { get; set; }
public string Reserve03 { get; set; }
public string Reserve04 { get; set; }
public string Reserve05 { get; set; }
public string Reserve06 { get; set; }
public string Reserve07 { get; set; }
public string Reserve08 { get; set; }
public string Reserve09 { get; set; }
public string Reserve10 { get; set; }
} }
} }
using Performance.EntityModels.Entity;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Performance.EntityModels.Other
{
public class view_attendance
{
public int ALLOTID { get; set; }
public int YEAR { get; set; }
public int MONTH { 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 AttendanceDate { get; set; }
/// <summary>
/// 来源
/// </summary>
public string Source { get; set; }
/// <summary>
/// 科室名称
/// </summary>
public string Department { get; set; }
}
public class InitialAttendance
{
public string UnitType { get; set; } //人员类别
public string AccountingUnit { get; set; } //核算单元
public string PersonnelNumber { get; set; } //工号
public string PersonnelName { get; set; } //姓名
public Nullable<DateTime> StartDate { get; set; } //入科开始时间
public Nullable<DateTime> EndDate { get; set; } //入科结束时间
public string Department { get; set; } //科室名称
}
public class RecordAttendcance : per_attendance_vacation
{
public int Days { get; set; }
public string AttendanceName { get; set; }
}
public class AttendaceHeads
{
public string Column { get; set; }
public string Name { get; set; }
}
public class AttendanceType
{
/// <summary>
/// Id
/// </summary>
public int Id { get; set; } //考勤类型名称
/// <summary>
/// 考勤类型名称
/// </summary>
public string AttendanceName { get; set; }
/// <summary>
/// 是否核减出勤 1 核减 2 不核减
/// </summary>
public string IsDeduction { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Globalization;
using System.Text;
namespace Performance.Infrastructure
{
public static partial class UtilExtensions
{
public static DateTime ToTryDateTime(this string value, params string[] formats)
{
return string.IsNullOrEmpty(value) ? DateTime.MinValue : ToDateTime(value, formats);
}
public static DateTime ToDateTime(this string value, params string[] formats)
{
if (formats.Length == 0)
{
formats = new string[]
{
"yyyyMMddHHmmss",
"yyyyMMddHHmmss",
"yyyy-MM-dd HH:mm:ss",
"yyyy年MM月dd日 HH时mm分ss秒" ,
"yyyyMdHHmmss",
"yyyy年M月d日 H时mm分ss秒",
"yyyy.M.d H:mm:ss",
"yyyy.MM.dd HH:mm:ss",
"yyyy-MM-dd",
"yyyyMMdd",
"yyyy/MM/dd",
"yyyy/M/d",
"yyyy-MM",
"yyyy/MM",
"yyyy/M",
};
}
if (DateTime.TryParseExact(value, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime now))
return now;
return DateTime.MinValue;
}
}
}
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
using Dapper; using Dapper;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Performance.EntityModels; using Performance.EntityModels;
using Performance.EntityModels.Other;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data; using System.Data;
...@@ -253,9 +254,7 @@ public IEnumerable<view_second_workload_result> GetSecondWorkload(int allotid, s ...@@ -253,9 +254,7 @@ public IEnumerable<view_second_workload_result> GetSecondWorkload(int allotid, s
/// <summary> /// <summary>
/// 查询HIS提取数据,工作量字典 /// 查询HIS提取数据,工作量字典
/// </summary> /// </summary>
/// <param name="allotid"></param> /// <param name="hospitalId"></param>
/// <param name="unittype"></param>
/// <param name="accountingunit"></param>
/// <returns></returns> /// <returns></returns>
public IEnumerable<string> GetSecondWorkloadMaps(int hospitalId) public IEnumerable<string> GetSecondWorkloadMaps(int hospitalId)
{ {
...@@ -278,5 +277,46 @@ public IEnumerable<string> GetSecondWorkloadMaps(int hospitalId) ...@@ -278,5 +277,46 @@ public IEnumerable<string> GetSecondWorkloadMaps(int hospitalId)
} }
} }
} }
public IEnumerable<view_attendance> GetAttendance(int allotId)
{
var connection = context.Database.GetDbConnection();
if (connection.State != ConnectionState.Open) connection.Open();
try
{
string query = $@"SELECT * FROM view_attendance where allotId = @allotId";
return connection.Query<view_attendance>(query, new { allotId }, commandTimeout: 60 * 60);
}
catch (Exception)
{
throw;
}
}
/// <summary>
/// 查询人员字典
/// </summary>
/// <param name="allotId"></param>
/// <returns></returns>
public IEnumerable<dynamic> QueryEmployee(int allotId)
{
using (var connection = context.Database.GetDbConnection())
{
if (connection.State != ConnectionState.Open) connection.Open();
try
{
string query = $@"SELECT * FROM view_employee WHERE AllotID = @allotId";
return connection.Query(query, new { allotId }, commandTimeout: 60 * 60);
}
catch (Exception)
{
throw;
}
}
}
} }
} }
\ No newline at end of file
...@@ -393,7 +393,7 @@ public List<EmployeeReservedDto> GetEmployeeReserved(int hospitalId, int year) ...@@ -393,7 +393,7 @@ public List<EmployeeReservedDto> GetEmployeeReserved(int hospitalId, int year)
public List<view_allot_result> GetOwnerPerformance(List<int> hospitalId, string jobNumber) public List<view_allot_result> GetOwnerPerformance(List<int> hospitalId, string jobNumber)
{ {
string sql = "SELECT * FROM view_allot_result WHERE States = 8 AND HospitalID IN @HospitalID AND JobNumber=@JobNumber"; string sql = "SELECT * FROM view_allot_result WHERE States IN (6,8) AND HospitalID IN @HospitalID AND JobNumber=@JobNumber";
return DapperQuery<view_allot_result>(sql, new { HospitalID = hospitalId, JobNumber = jobNumber })?.ToList(); return DapperQuery<view_allot_result>(sql, new { HospitalID = hospitalId, JobNumber = jobNumber })?.ToList();
} }
......
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 PerfoPperAttendanceTypeRepository : PerforRepository<per_attendance_type>
{
/// <summary>
/// per_attendance_type Repository
/// </summary>
public PerfoPperAttendanceTypeRepository(PerformanceDbContext context) : base(context)
{
}
}
}
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 PerfoPperAttendanceVacationeRepository : PerforRepository<per_attendance_vacation>
{
/// <summary>
/// per_attendance_vacation Repository
/// </summary>
public PerfoPperAttendanceVacationeRepository(PerformanceDbContext context) : base(context)
{
}
}
}
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 PerforPerAttendanceRepository : PerforRepository<per_attendance>
{
/// <summary>
/// per_attendance Repository
/// </summary>
public PerforPerAttendanceRepository(PerformanceDbContext context) : base(context)
{
}
}
}
...@@ -434,7 +434,8 @@ public List<per_apr_amount> GetAprList(int allotId, int userId) ...@@ -434,7 +434,8 @@ public List<per_apr_amount> GetAprList(int allotId, int userId)
if (userrole == null) throw new PerformanceException("用户未绑定角色"); if (userrole == null) throw new PerformanceException("用户未绑定角色");
var list = new List<per_apr_amount>(); var list = new List<per_apr_amount>();
if (new int[] { 1, 2, 5, 6 }.Contains(userrole.RoleID)) // 绩效管理员、医院管理员、绩效核算办、院领导查看所有科室的数据 var roles = new int[] { (int)Role.绩效管理员, (int)Role.医院管理员, (int)Role.绩效核算办, (int)Role.院领导, (int)Role.审计 };
if (roles.Contains(userrole.RoleID)) // 绩效管理员、医院管理员、绩效核算办、院领导查看所有科室的数据
list = perapramountRepository.GetEntities(t => t.AllotId == allotId && (t.Amount ?? 0) != 0); list = perapramountRepository.GetEntities(t => t.AllotId == allotId && (t.Amount ?? 0) != 0);
else else
list = perapramountRepository.GetEntities(t => t.AllotId == allotId && (t.Amount ?? 0) != 0 && t.CreateUser == userId); list = perapramountRepository.GetEntities(t => t.AllotId == allotId && (t.Amount ?? 0) != 0 && t.CreateUser == userId);
...@@ -582,6 +583,28 @@ public ApiResponse ConfirmAudit(int userid, AprAmountAuditRequest request) ...@@ -582,6 +583,28 @@ public ApiResponse ConfirmAudit(int userid, AprAmountAuditRequest request)
} }
return new ApiResponse(ResponseType.OK, ""); return new ApiResponse(ResponseType.OK, "");
} }
/// <summary>
/// 医院其他绩效审计
/// </summary>
/// <param name="userid"></param>
/// <param name="request"></param>
/// <returns></returns>
public ApiResponse AprMark(int userid, AprAmountMarkRequest request)
{
List<Dictionary<string, string>> error = new List<Dictionary<string, string>>();
if (request?.TypeInDepartments == null || !request.TypeInDepartments.Any())
throw new PerformanceException("审计信息无效,请确认");
var allApramounts = perapramountRepository.GetEntities(t => t.AllotId == request.AllotId);
foreach (var department in request.TypeInDepartments)
{
string update = "update per_apr_amount set MarkStatus=@MarkStatus,MarkUser=@MarkUser,MarkTime=@MarkTime where TypeInDepartment=@TypeInDepartment and AllotId=@AllotId; ";
perapramountRepository.Execute(update, new { MarkStatus = 1, MarkUser = userid, MarkTime = DateTime.Now, TypeInDepartment = department, request.AllotId });
}
return new ApiResponse(ResponseType.OK, "");
}
/// <summary> /// <summary>
/// 上传导入医院其他绩效 /// 上传导入医院其他绩效
/// </summary> /// </summary>
...@@ -594,7 +617,8 @@ public string ImpoerAprEmployees(int allotid, string path, int userid) ...@@ -594,7 +617,8 @@ public string ImpoerAprEmployees(int allotid, string path, int userid)
if (userrole == null) throw new PerformanceException("用户未绑定角色"); if (userrole == null) throw new PerformanceException("用户未绑定角色");
var data = new List<per_apr_amount>(); var data = new List<per_apr_amount>();
if (new int[] { 1, 2, 5 }.Contains(userrole.RoleID)) // 绩效管理员、医院管理员、绩效核算办查看所有科室的数据 var roles = new int[] { (int)Role.绩效管理员, (int)Role.医院管理员, (int)Role.绩效核算办, (int)Role.院领导, (int)Role.审计 };
if (roles.Contains(userrole.RoleID)) // 绩效管理员、医院管理员、绩效核算办查看所有科室的数据
data = perapramountRepository.GetEntities(t => t.AllotId == allotid && (t.Amount ?? 0) != 0); data = perapramountRepository.GetEntities(t => t.AllotId == allotid && (t.Amount ?? 0) != 0);
else else
data = perapramountRepository.GetEntities(t => t.AllotId == allotid && (t.Amount ?? 0) != 0 && t.CreateUser == userid); data = perapramountRepository.GetEntities(t => t.AllotId == allotid && (t.Amount ?? 0) != 0 && t.CreateUser == userid);
...@@ -862,7 +886,9 @@ public List<per_apr_amount_hide> GetAprHideList(int allotId, int userId) ...@@ -862,7 +886,9 @@ public List<per_apr_amount_hide> GetAprHideList(int allotId, int userId)
if (userrole == null) throw new PerformanceException("用户未绑定角色"); if (userrole == null) throw new PerformanceException("用户未绑定角色");
var list = new List<per_apr_amount_hide>(); var list = new List<per_apr_amount_hide>();
if (new int[] { 1, 2, 5, 6 }.Contains(userrole.RoleID)) // 绩效管理员、医院管理员、绩效核算办、院领导查看所有科室的数据
var roles = new int[] { (int)Role.绩效管理员, (int)Role.医院管理员, (int)Role.绩效核算办, (int)Role.院领导, (int)Role.审计 };
if (roles.Contains(userrole.RoleID)) // 绩效管理员、医院管理员、绩效核算办查看所有科室的数据
list = _hideRepository.GetEntities(t => t.AllotId == allotId && (t.Amount ?? 0) != 0); list = _hideRepository.GetEntities(t => t.AllotId == allotId && (t.Amount ?? 0) != 0);
else else
list = _hideRepository.GetEntities(t => t.AllotId == allotId && (t.Amount ?? 0) != 0 && t.CreateUser == userId); list = _hideRepository.GetEntities(t => t.AllotId == allotId && (t.Amount ?? 0) != 0 && t.CreateUser == userId);
...@@ -1007,6 +1033,26 @@ public ApiResponse ConfirmAuditHide(int userid, AprAmountAuditRequest request) ...@@ -1007,6 +1033,26 @@ public ApiResponse ConfirmAuditHide(int userid, AprAmountAuditRequest request)
} }
return new ApiResponse(ResponseType.OK, ""); return new ApiResponse(ResponseType.OK, "");
} }
/// <summary>
/// 不公示其他绩效审计
/// </summary>
/// <param name="userid"></param>
/// <param name="request"></param>
/// <returns></returns>
public ApiResponse AprMarkHide(int userid, AprAmountMarkRequest request)
{
List<Dictionary<string, string>> error = new List<Dictionary<string, string>>();
if (request?.TypeInDepartments == null || !request.TypeInDepartments.Any())
throw new PerformanceException("审计信息无效,请确认");
foreach (var department in request.TypeInDepartments)
{
string update = "update per_apr_amount_hide set MarkStatus=@MarkStatus,MarkUser=@MarkUser,MarkTime=@MarkTime where TypeInDepartment=@TypeInDepartment and AllotId=@AllotId; ";
_hideRepository.Execute(update, new { MarkStatus = 1, MarkUser = userid, MarkTime = DateTime.Now, TypeInDepartment = department, request.AllotId });
}
return new ApiResponse(ResponseType.OK, "");
}
/// <summary> /// <summary>
/// 上传导入医院其他绩效 /// 上传导入医院其他绩效
...@@ -1020,7 +1066,8 @@ public void ImpoerAprHideEmployees(int allotid, string path, int userid) ...@@ -1020,7 +1066,8 @@ public void ImpoerAprHideEmployees(int allotid, string path, int userid)
if (userrole == null) throw new PerformanceException("用户未绑定角色"); if (userrole == null) throw new PerformanceException("用户未绑定角色");
var data = new List<per_apr_amount_hide>(); var data = new List<per_apr_amount_hide>();
if (new int[] { 1, 2, 5 }.Contains(userrole.RoleID)) // 绩效管理员、医院管理员、绩效核算办查看所有科室的数据 var roles = new int[] { (int)Role.绩效管理员, (int)Role.医院管理员, (int)Role.绩效核算办, (int)Role.院领导, (int)Role.审计 };
if (roles.Contains(userrole.RoleID)) // 绩效管理员、医院管理员、绩效核算办查看所有科室的数据
data = _hideRepository.GetEntities(t => t.AllotId == allotid && (t.Amount ?? 0) != 0); data = _hideRepository.GetEntities(t => t.AllotId == allotid && (t.Amount ?? 0) != 0);
else else
data = _hideRepository.GetEntities(t => t.AllotId == allotid && (t.Amount ?? 0) != 0 && t.CreateUser == userid); data = _hideRepository.GetEntities(t => t.AllotId == allotid && (t.Amount ?? 0) != 0 && t.CreateUser == userid);
......
...@@ -322,13 +322,13 @@ private List<ExtractTransDto> StandDataFormat(int hospitalId, int allotId, List< ...@@ -322,13 +322,13 @@ private List<ExtractTransDto> StandDataFormat(int hospitalId, int allotId, List<
DoctorName = item.DoctorName, DoctorName = item.DoctorName,
PersonnelNumber = item.PersonnelNumber, PersonnelNumber = item.PersonnelNumber,
Value = item.Fee ?? 0, Value = item.Fee ?? 0,
OutDoctorAccounting = firstDic?.OutDoctorAccounting?.AccountingUnit, OutDoctorAccounting = firstDic?.OutDoctorAccounting,
OutNurseAccounting = firstDic?.OutNurseAccounting?.AccountingUnit, OutNurseAccounting = firstDic?.OutNurseAccounting,
OutTechnicAccounting = firstDic?.OutTechnicAccounting?.AccountingUnit, OutTechnicAccounting = firstDic?.OutTechnicAccounting,
InpatDoctorAccounting = firstDic?.InpatDoctorAccounting?.AccountingUnit, InpatDoctorAccounting = firstDic?.InpatDoctorAccounting,
InpatNurseAccounting = firstDic?.InpatNurseAccounting?.AccountingUnit, InpatNurseAccounting = firstDic?.InpatNurseAccounting,
InpatTechnicAccounting = firstDic?.InpatTechnicAccounting?.AccountingUnit, InpatTechnicAccounting = firstDic?.InpatTechnicAccounting,
SpecialAccounting = firstDic?.SpecialAccounting?.AccountingUnit ?? dept, SpecialAccounting = firstDic?.SpecialAccounting ?? dept,
EName = types.FirstOrDefault(w => w.Id == item.TypeId)?.EName, EName = types.FirstOrDefault(w => w.Id == item.TypeId)?.EName,
}; };
data.Add(d); data.Add(d);
......
...@@ -37,7 +37,7 @@ public class RecognitionDataFormat ...@@ -37,7 +37,7 @@ public class RecognitionDataFormat
{ DataFormat.百分比, new[] { 9,10 } }, { DataFormat.百分比, new[] { 9,10 } },
{ DataFormat.科学计数, new[] { 11 } }, { DataFormat.科学计数, new[] { 11 } },
{ DataFormat.分数, new[] { 12,13 } }, { DataFormat.分数, new[] { 12,13 } },
{ DataFormat.日期, new[] { 14,15,16,17 } }, { DataFormat.日期YYYYMMDD, new[] { 14,15,16,17 } },
}; };
public static DataFormat GetDataFormat(short type) public static DataFormat GetDataFormat(short type)
......
...@@ -322,7 +322,7 @@ public ApiResponse UpdatePerson(PerEmployeeResponse request) ...@@ -322,7 +322,7 @@ public ApiResponse UpdatePerson(PerEmployeeResponse request)
throw new PerformanceException($"“关键信息缺失”请补全!"); throw new PerformanceException($"“关键信息缺失”请补全!");
} }
var employees = peremployeeRepository.GetEntities(t => t.AllotId == request.AllotId && t.PersonnelNumber == request.PersonnelNumber); var employees = peremployeeRepository.GetEntities(t => t.AllotId == request.AllotId && t.Id == request.Id);
if (employees == null) if (employees == null)
throw new PerformanceException($"员工工号为“{request.PersonnelNumber}”不存在,请重新添加!"); throw new PerformanceException($"员工工号为“{request.PersonnelNumber}”不存在,请重新添加!");
...@@ -426,22 +426,38 @@ public IEnumerable<DeptdicResponse> GetDepartments(int hospitalId) ...@@ -426,22 +426,38 @@ public IEnumerable<DeptdicResponse> GetDepartments(int hospitalId)
var depts = perdeptdicRepository.GetEntities(t => t.HospitalId == hospitalId); var depts = perdeptdicRepository.GetEntities(t => t.HospitalId == hospitalId);
if (depts == null || !depts.Any()) return null; if (depts == null || !depts.Any()) return null;
var result = depts.GroupBy(t => new { t.HISDeptName, t.Department }).Select(t => new DeptdicResponse string GetDeptdic(List<per_dept_dic> dics, string department, string hISDeptName, UnitType unitType, string source = "")
{ {
HospitalId = hospitalId, if (hISDeptName == "介入室")
HISDeptName = t.Key.HISDeptName, {
Department = t.Key.Department,
OutDoctorAccounting = GetDeptdic(t.FirstOrDefault(group => group.Department == t.Key.Department && group.HISDeptName == t.Key.HISDeptName && group.UnitType == UnitType.医生组.ToString() && group.Source == "门诊")), }
OutNurseAccounting = GetDeptdic(t.FirstOrDefault(group => group.Department == t.Key.Department && group.HISDeptName == t.Key.HISDeptName && group.UnitType == UnitType.护理组.ToString() && group.Source == "门诊")), var dic = dics.FirstOrDefault(group => group.Department == department && group.HISDeptName == hISDeptName && group.UnitType == unitType.ToString() && group.Source == source);
OutTechnicAccounting = GetDeptdic(t.FirstOrDefault(group => group.Department == t.Key.Department && group.HISDeptName == t.Key.HISDeptName && group.UnitType == UnitType.医技组.ToString() && group.Source == "门诊")),
InpatDoctorAccounting = GetDeptdic(t.FirstOrDefault(group => group.Department == t.Key.Department && group.HISDeptName == t.Key.HISDeptName && group.UnitType == UnitType.医生组.ToString() && group.Source == "住院")), if (dic == null)
InpatNurseAccounting = GetDeptdic(t.FirstOrDefault(group => group.Department == t.Key.Department && group.HISDeptName == t.Key.HISDeptName && group.UnitType == UnitType.护理组.ToString() && group.Source == "住院")), dic = dics.FirstOrDefault(group => group.Department == department && group.HISDeptName == hISDeptName && group.UnitType == unitType.ToString());
InpatTechnicAccounting = GetDeptdic(t.FirstOrDefault(group => group.Department == t.Key.Department && group.HISDeptName == t.Key.HISDeptName && group.UnitType == UnitType.医技组.ToString() && group.Source == "住院")),
LogisticsAccounting = GetDeptdic(t.FirstOrDefault(group => group.Department == t.Key.Department && group.HISDeptName == t.Key.HISDeptName && group.UnitType == UnitType.行政后勤.ToString())), return dic?.AccountingUnit;
SpecialAccounting = GetDeptdic(t.FirstOrDefault(group => group.Department == t.Key.Department && group.HISDeptName == t.Key.HISDeptName && group.UnitType == UnitType.特殊核算组.ToString())), }
CreateTime = t.Max(group => group.CreateTime),
IsVerify = t.Min(w => w.IsVerify) ?? 1, var result = depts
}); .GroupBy(t => new { t.HISDeptName, t.Department })
.Select(t => new DeptdicResponse
{
HospitalId = hospitalId,
HISDeptName = t.Key.HISDeptName,
Department = t.Key.Department,
OutDoctorAccounting = GetDeptdic(t.ToList(), t.Key.Department, t.Key.HISDeptName, UnitType.医生组, "门诊"),
OutNurseAccounting = GetDeptdic(t.ToList(), t.Key.Department, t.Key.HISDeptName, UnitType.护理组, "门诊"),
OutTechnicAccounting = GetDeptdic(t.ToList(), t.Key.Department, t.Key.HISDeptName, UnitType.医技组, "门诊"),
InpatDoctorAccounting = GetDeptdic(t.ToList(), t.Key.Department, t.Key.HISDeptName, UnitType.医生组, "住院"),
InpatNurseAccounting = GetDeptdic(t.ToList(), t.Key.Department, t.Key.HISDeptName, UnitType.护理组, "住院"),
InpatTechnicAccounting = GetDeptdic(t.ToList(), t.Key.Department, t.Key.HISDeptName, UnitType.医技组, "住院"),
LogisticsAccounting = GetDeptdic(t.ToList(), t.Key.Department, t.Key.HISDeptName, UnitType.行政后勤),
SpecialAccounting = GetDeptdic(t.ToList(), t.Key.Department, t.Key.HISDeptName, UnitType.特殊核算组),
CreateTime = t.Max(group => group.CreateTime),
IsVerify = t.Min(w => w.IsVerify) ?? 1,
});
return result.OrderBy(w => w.IsVerify).ThenByDescending(t => t.CreateTime).ThenBy(t => t.Department); return result.OrderBy(w => w.IsVerify).ThenByDescending(t => t.CreateTime).ThenBy(t => t.Department);
} }
...@@ -472,19 +488,6 @@ public IEnumerable<DeptdicResponse> GetDepartments(int hospitalId) ...@@ -472,19 +488,6 @@ public IEnumerable<DeptdicResponse> GetDepartments(int hospitalId)
return ("", new string[] { }); return ("", new string[] { });
} }
private Deptdic GetDeptdic(per_dept_dic dic)
{
if (dic == null) return new Deptdic() { IsVerify = 1 };
return new Deptdic
{
Id = dic.Id,
AccountingUnit = dic.AccountingUnit,
IsVerify = dic.IsVerify ?? 1,
VerifyMessage = dic.VerifyMessage,
};
}
/// <summary> /// <summary>
/// 创建科室核算信息 /// 创建科室核算信息
/// </summary> /// </summary>
...@@ -718,17 +721,8 @@ private string[] GetUnitType(int userId) ...@@ -718,17 +721,8 @@ private string[] GetUnitType(int userId)
public HandsonTable GetBatchPersonStructrue(int hospitalId) public HandsonTable GetBatchPersonStructrue(int hospitalId)
{ {
var hos = perforHospitalRepository.GetEntity(t => t.ID == hospitalId); var cols = Person.Select(t => t.Item2).ToArray();
var cols = hos.IsOwnerQuery == 1 ? PersonPassword.Select(t => t.Item2).ToArray() : Person.Select(t => t.Item2).ToArray(); var permissions = Person.Select(t => new collect_permission { HeadName = t.Item2, Visible = 1 }).ToList();
var permissions = hos.IsOwnerQuery == 1 ? PersonPassword.Select(t => new collect_permission
{
HeadName = t.Item2,
Visible = 1
}).ToList() : Person.Select(t => new collect_permission
{
HeadName = t.Item2,
Visible = 1
}).ToList();
var result = new HandsonTable((int)SheetType.Unidentifiable, cols, permissions); var result = new HandsonTable((int)SheetType.Unidentifiable, cols, permissions);
var deptdics = perdeptdicRepository.GetEntities(t => t.HospitalId == hospitalId); var deptdics = perdeptdicRepository.GetEntities(t => t.HospitalId == hospitalId);
...@@ -1073,23 +1067,6 @@ private void DeptDicList(int HospitalId, List<per_dept_dic> deptDics, DeptdicHan ...@@ -1073,23 +1067,6 @@ private void DeptDicList(int HospitalId, List<per_dept_dic> deptDics, DeptdicHan
return result; return result;
} }
public static List<(string, string, Func<PersonePassword, object>)> PersonPassword { get; } = new List<(string, string, Func<PersonePassword, object>)>
{
(nameof(PersonePassword.UnitType), "核算组别", t => t.UnitType),
(nameof(PersonePassword.AccountingUnit), "核算单元", t => t.AccountingUnit),
(nameof(PersonePassword.Department), "科室名称", t => t.Department),
(nameof(PersonePassword.DoctorName), "姓名" ,t => t.DoctorName),
(nameof(PersonePassword.PersonnelNumber), "员工工号", t => t.PersonnelNumber),
//(nameof(PersonePassword.JobCategory), "正式/临聘", t => t.JobCategory),
//(nameof(PersonePassword.Duty), "职务", t => t.Duty),
//(nameof(PersonePassword.JobTitle), "职称", t => t.JobTitle),
//(nameof(PersonePassword.AttendanceDay), "出勤天数", t => t.AttendanceDay),
//(nameof(PersonePassword.ReservedRatio), "预留比例", t => t.ReservedRatio),
//(nameof(PersonePassword.BankCard), "银行卡号", t => t.BankCard),
//(nameof(PersonePassword.Password), "密码", t => t.Password),
//(nameof(PersonePassword.Remark), "备注", t => t.Remark),
};
public static List<(string, string, Func<per_employee, object>)> Person { get; } = new List<(string, string, Func<per_employee, object>)> public static List<(string, string, Func<per_employee, object>)> Person { get; } = new List<(string, string, Func<per_employee, object>)>
{ {
(nameof(per_employee.UnitType), "核算组别", t => t.UnitType), (nameof(per_employee.UnitType), "核算组别", t => t.UnitType),
......
...@@ -181,7 +181,7 @@ public List<SecondColumnDictionary> GetTableHeaderDictionary(ComputeMode compute ...@@ -181,7 +181,7 @@ public List<SecondColumnDictionary> GetTableHeaderDictionary(ComputeMode compute
/* /*
此处数据需要额外注意,前端显示规则:通过isTrue=true显示,显示名称为label 此处数据需要额外注意,前端显示规则:通过isTrue=true显示,显示名称为label
*/ */
var alias = _cofaliasRepository.GetEntities(t => t.HospitalId == allot.HospitalId && t.Route == "/second_entering") ?? new List<cof_alias>(); var alias = _cofaliasRepository.GetEntities(t => t.HospitalId == allot.HospitalId && t.Route == "/second_entering" && t.States == 1) ?? new List<cof_alias>();
Func<string, string, string> getAlias = (name, def) => Func<string, string, string> getAlias = (name, def) =>
{ {
try try
...@@ -229,6 +229,27 @@ public List<SecondColumnDictionary> GetTableHeaderDictionary(ComputeMode compute ...@@ -229,6 +229,27 @@ public List<SecondColumnDictionary> GetTableHeaderDictionary(ComputeMode compute
maps.Add(new SecondColumnDictionary(getAlias(nameof(ag_bodysource.TitleCoefficient), "职称系数"), nameof(ag_bodysource.TitleCoefficient), false, 203, color: "title_color", isNumber: true)); maps.Add(new SecondColumnDictionary(getAlias(nameof(ag_bodysource.TitleCoefficient), "职称系数"), nameof(ag_bodysource.TitleCoefficient), false, 203, color: "title_color", isNumber: true));
maps.Add(new SecondColumnDictionary(getAlias(nameof(ag_bodysource.TitlePerformanceScore), "职称绩效得分"), nameof(ag_bodysource.TitlePerformanceScore), false, 204, color: "title_color", isNumber: true)); maps.Add(new SecondColumnDictionary(getAlias(nameof(ag_bodysource.TitlePerformanceScore), "职称绩效得分"), nameof(ag_bodysource.TitlePerformanceScore), false, 204, color: "title_color", isNumber: true));
} }
// 扩展字典
if (alias != null && alias.Any())
{
List<string> notCalculate = new List<string>
{
nameof(ag_bodysource.Post),
nameof(ag_bodysource.StaffCoefficient),
nameof(ag_bodysource.ActualAttendance),
nameof(ag_bodysource.JobTitle),
nameof(ag_bodysource.TitleCoefficient),
nameof(ag_bodysource.TitlePerformanceScore),
};
foreach (var item in alias)
{
if (!maps.Any(w => w.Key.Equals(item.Name, StringComparison.OrdinalIgnoreCase))
&& !notCalculate.Contains(item.Name))
{
maps.Add(new SecondColumnDictionary(item.Alias, item.Name, false, item.Sort, color: "title_color", isNumber: false, expand: true));
}
}
}
// 工作量 // 工作量
if (computeMode != ComputeMode.NotCalculate) if (computeMode != ComputeMode.NotCalculate)
...@@ -260,8 +281,8 @@ public List<SecondColumnDictionary> GetTableHeaderDictionary(ComputeMode compute ...@@ -260,8 +281,8 @@ public List<SecondColumnDictionary> GetTableHeaderDictionary(ComputeMode compute
{ {
var headDynamic = _agworktypesourceRepository.GetEntities(t => t.SecondId == second.Id) ?? new List<ag_worktype_source>(); var headDynamic = _agworktypesourceRepository.GetEntities(t => t.SecondId == second.Id) ?? new List<ag_worktype_source>();
var groupDatas = headDynamic var groupDatas = headDynamic
.GroupBy(w => new { w.WorkTypeId, w.SecondId, w.FieldId, w.FieldName }) .GroupBy(w => new { w.WorkTypeId, w.SecondId, w.FieldId, w.FieldName })
.Select(w => w.OrderByDescending(w => w.Id).FirstOrDefault()); .Select(w => w.OrderByDescending(w => w.Id).FirstOrDefault());
foreach (var item in groupDatas.OrderBy(t => t.Id)) foreach (var item in groupDatas.OrderBy(t => t.Id))
{ {
maps.Add(new SecondColumnDictionary(item.FieldName, item.FieldId, true, 1, "Top", isNumber: true)); maps.Add(new SecondColumnDictionary(item.FieldName, item.FieldId, true, 1, "Top", isNumber: true));
...@@ -294,6 +315,35 @@ public List<SecondColumnDictionary> GetTableHeaderDictionary(ComputeMode compute ...@@ -294,6 +315,35 @@ public List<SecondColumnDictionary> GetTableHeaderDictionary(ComputeMode compute
} }
/// <summary> /// <summary>
/// 补充内容 扩展字段,通过配置额外展示
/// </summary>
/// <param name="allot"></param>
/// <param name="dic"></param>
/// <param name="rows"></param>
public void RowsExpand(per_allot allot, List<SecondColumnDictionary> dic, List<Dictionary<string, object>> rows)
{
if (dic != null && dic.Any(w => w.Expand))
{
var employees = _perallotRepository.QueryEmployee(allot.ID);
foreach (var row in rows)
{
var number = row.GetString(nameof(ag_bodysource.WorkNumber));
Dictionary<string, object> pairs = new Dictionary<string, object>();
var emp = employees.FirstOrDefault(w => w.PersonnelNumber == number);
if (emp != null)
pairs = JsonHelper.Deserialize<Dictionary<string, object>>(JsonHelper.Serialize(emp));
foreach (var item in dic.Where(w => w.Expand))
{
var value = pairs.GetString(item.Key);
row.AddOrUpdate(item.Key, value);
}
}
}
}
/// <summary>
/// 加载已保存工作量数据,加载时区分:已提交和未提交 /// 加载已保存工作量数据,加载时区分:已提交和未提交
/// </summary> /// </summary>
/// <param name="allot"></param> /// <param name="allot"></param>
...@@ -423,9 +473,14 @@ public List<SecondColumnDictionary> GetTableHeaderDictionary(ComputeMode compute ...@@ -423,9 +473,14 @@ public List<SecondColumnDictionary> GetTableHeaderDictionary(ComputeMode compute
// 已提交 // 已提交
if (second.Status.HasValue && status.Contains(second.Status.Value)) if (second.Status.HasValue && status.Contains(second.Status.Value))
{ {
foreach (var item in headDynamic.Where(w => w.FieldId.StartsWithIgnoreCase("Workload_Ratio_")).OrderBy(t => t.Id)) var groupDatas = headDynamic
.Where(w => w.FieldId.StartsWithIgnoreCase("Workload_Ratio_"))
.GroupBy(w => new { w.WorkTypeId, w.SecondId, w.FieldId, w.FieldName })
.Select(w => new { w.Key.FieldId, Value = w.OrderByDescending(w => w.Id).FirstOrDefault()?.Value ?? 0 });
foreach (var item in groupDatas)
{ {
head.AddOrUpdate(item.FieldId, item.Value ?? 0); head.AddOrUpdate(item.FieldId, item.Value);
} }
} }
// 未提交 // 未提交
......
...@@ -525,7 +525,7 @@ public void SaveSecondAllotHeadData(int secondId, string json) ...@@ -525,7 +525,7 @@ public void SaveSecondAllotHeadData(int secondId, string json)
if (workValue == null || !workValue.Any()) if (workValue == null || !workValue.Any())
return; return;
foreach (var value in workValue) foreach (var value in workValue.Distinct())
{ {
for (int i = 0; i < prefix.Length; i++) for (int i = 0; i < prefix.Length; i++)
{ {
......
...@@ -1741,6 +1741,26 @@ public bool ConfirmAudit(int userId, SecondAuditRequest request) ...@@ -1741,6 +1741,26 @@ public bool ConfirmAudit(int userId, SecondAuditRequest request)
return result; return result;
} }
/// <summary>
/// 审计
/// </summary>
/// <param name="userId"></param>
/// <param name="secondIds"></param>
/// <returns></returns>
public bool SecondMark(int userId, int[] secondIds)
{
var seconds = agsecondallotRepository.GetEntities(t => secondIds.Contains(t.Id));
if (seconds == null || !seconds.Any())
throw new PerformanceException("未能找到二次分配核算记录!");
foreach (var item in seconds)
{
item.MarkStatus = 1;
item.MarkUser = userId;
item.MarkTime = DateTime.Now;
}
return agsecondallotRepository.UpdateRange(seconds.ToArray());
}
///// <summary> ///// <summary>
///// 审核结束 添加至二次绩效汇总 ///// 审核结束 添加至二次绩效汇总
///// </summary> ///// </summary>
......
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