Commit 40b261fb by lcx

工作量类型 补充

parent a3fb8981
...@@ -217,18 +217,58 @@ public ApiResponse WorkloadDelete([CustomizeValidator(RuleSet = "Delete"), FromB ...@@ -217,18 +217,58 @@ public ApiResponse WorkloadDelete([CustomizeValidator(RuleSet = "Delete"), FromB
return new ApiResponse(result ? ResponseType.OK : ResponseType.Fail); return new ApiResponse(result ? ResponseType.OK : ResponseType.Fail);
} }
/// <summary> /// <summary>
/// 二次绩效工作量列表 /// 二次绩效单例奖励列表
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[Route("api/second/single/list")] [Route("api/second/single/list")]
[HttpPost] [HttpPost]
public ApiResponse SingleAwards([CustomizeValidator(RuleSet = "Query"), FromBody]WorkloadRequest request) public ApiResponse SingleAwards([FromBody]WorkloadRequest request)
{ {
var result = secondAllotService.GetSingleList(request); var result = secondAllotService.GetSingleList(request);
return new ApiResponse(ResponseType.OK, result); return new ApiResponse(ResponseType.OK, result);
} }
/// <summary>
/// 二次绩效工作量类型列表
/// </summary>
/// <returns></returns>
[Route("api/second/single/list")]
[HttpPost]
public ApiResponse WorkTypeList([FromBody]WorkloadRequest request)
{
var result = secondAllotService.WorkTypeList(request);
return new ApiResponse(ResponseType.OK, result);
}
/// <summary>
/// 保存二次绩效工作量类型
/// </summary>
/// <returns></returns>
[Route("api/second/worktype/save")]
[HttpPost]
public ApiResponse SingleSave([FromBody]ag_workload_type request)
{
if (request.HospitalId == 0)
return new ApiResponse(ResponseType.ParameterError, "医院信息无效");
if (string.IsNullOrEmpty(request.TypeName))
return new ApiResponse(ResponseType.ParameterError, "填写参数无效");
var result = secondAllotService.SaveWorkType(request);
return new ApiResponse(ResponseType.OK, result);
}
/// <summary>
/// 删除二次绩效工作量类型
/// </summary>
/// <returns></returns>
[Route("api/second/single/delete")]
[HttpPost]
public ApiResponse SingleDelete([CustomizeValidator(RuleSet = "Delete"), FromBody]WorkloadRequest request)
{
var result = secondAllotService.DeleteWorkType(request);
return result ? new ApiResponse(ResponseType.OK, "删除成功") : new ApiResponse(ResponseType.Fail, "删除失败");
}
#endregion #endregion
#region 二次绩效审核 #region 二次绩效审核
......
...@@ -828,7 +828,25 @@ ...@@ -828,7 +828,25 @@
</member> </member>
<member name="M:Performance.Api.Controllers.SecondAllotController.SingleAwards(Performance.DtoModels.WorkloadRequest)"> <member name="M:Performance.Api.Controllers.SecondAllotController.SingleAwards(Performance.DtoModels.WorkloadRequest)">
<summary> <summary>
二次绩效工作量列表 二次绩效单例奖励列表
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.SecondAllotController.WorkTypeList(Performance.DtoModels.WorkloadRequest)">
<summary>
二次绩效工作量类型列表
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.SecondAllotController.SingleSave(Performance.EntityModels.ag_workload_type)">
<summary>
保存二次绩效工作量类型
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.SecondAllotController.SingleDelete(Performance.DtoModels.WorkloadRequest)">
<summary>
删除二次绩效工作量类型
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
......
...@@ -1965,7 +1965,7 @@ ...@@ -1965,7 +1965,7 @@
</summary> </summary>
</member> </member>
<member name="P:Performance.DtoModels.WorkloadRequest.Type"> <member name="P:Performance.DtoModels.WorkloadRequest.WorkTypeId">
<summary> <summary>
1、工作量 2、其他 1、工作量 2、其他
</summary> </summary>
......
...@@ -45,7 +45,7 @@ public class WorkloadRequest ...@@ -45,7 +45,7 @@ public class WorkloadRequest
/// <summary> /// <summary>
/// 1、工作量 2、其他 /// 1、工作量 2、其他
/// </summary> /// </summary>
public int Type { get; set; } public int WorkTypeId { get; set; }
} }
public class WorkloadRequestValidator : AbstractValidator<WorkloadRequest> public class WorkloadRequestValidator : AbstractValidator<WorkloadRequest>
{ {
...@@ -57,7 +57,7 @@ public WorkloadRequestValidator() ...@@ -57,7 +57,7 @@ public WorkloadRequestValidator()
RuleFor(x => x.Department).NotNull().NotEmpty(); RuleFor(x => x.Department).NotNull().NotEmpty();
RuleFor(x => x.UnitType).NotNull().NotEmpty(); RuleFor(x => x.UnitType).NotNull().NotEmpty();
RuleFor(x => x.ItemName).NotNull().NotEmpty(); RuleFor(x => x.ItemName).NotNull().NotEmpty();
RuleFor(x => x.Type).NotNull().GreaterThan(0); RuleFor(x => x.WorkTypeId).NotNull().GreaterThan(0);
}); });
RuleSet("Update", () => RuleSet("Update", () =>
...@@ -65,7 +65,7 @@ public WorkloadRequestValidator() ...@@ -65,7 +65,7 @@ public WorkloadRequestValidator()
RuleFor(x => x.Id).NotNull().GreaterThan(0); RuleFor(x => x.Id).NotNull().GreaterThan(0);
RuleFor(x => x.HospitalId).NotNull().GreaterThan(0); RuleFor(x => x.HospitalId).NotNull().GreaterThan(0);
RuleFor(x => x.ItemName).NotNull().NotEmpty(); RuleFor(x => x.ItemName).NotNull().NotEmpty();
RuleFor(x => x.Type).NotNull().GreaterThan(0); RuleFor(x => x.WorkTypeId).NotNull().GreaterThan(0);
}); });
RuleSet("Delete", () => RuleSet("Delete", () =>
......
...@@ -22,6 +22,7 @@ public class HeadItem ...@@ -22,6 +22,7 @@ public class HeadItem
public Nullable<int> IsBring { get; set; } public Nullable<int> IsBring { get; set; }
/// <summary> 1 value相加值为1 </summary> /// <summary> 1 value相加值为1 </summary>
public Nullable<int> SpecialAttr { get; set; } public Nullable<int> SpecialAttr { get; set; }
public Nullable<int> WorkType { get; set; }
} }
public class BodyItem : HeadItem public class BodyItem : HeadItem
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
using Performance.Repository; using Performance.Repository;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq; using System.Linq;
using System.Linq.Expressions; using System.Linq.Expressions;
using System.Text; using System.Text;
...@@ -30,6 +31,7 @@ public class SecondAllotService : IAutoInjection ...@@ -30,6 +31,7 @@ public class SecondAllotService : IAutoInjection
private readonly PerforAgcomputeRepository perforAgcomputeRepository; private readonly PerforAgcomputeRepository perforAgcomputeRepository;
private readonly PerforCofagainRepository perforCofagainRepository; private readonly PerforCofagainRepository perforCofagainRepository;
private readonly PerforAgothersourceRepository perforAgothersourceRepository; private readonly PerforAgothersourceRepository perforAgothersourceRepository;
private readonly PerforAgworkloadtypeRepository perforAgworkloadtypeRepository;
private readonly PerforRoleRepository roleRepository; private readonly PerforRoleRepository roleRepository;
private readonly List<ag_tempitem> tempitems = new List<ag_tempitem>(); private readonly List<ag_tempitem> tempitems = new List<ag_tempitem>();
...@@ -48,6 +50,7 @@ public class SecondAllotService : IAutoInjection ...@@ -48,6 +50,7 @@ public class SecondAllotService : IAutoInjection
PerforAgcomputeRepository perforAgcomputeRepository, PerforAgcomputeRepository perforAgcomputeRepository,
PerforCofagainRepository perforCofagainRepository, PerforCofagainRepository perforCofagainRepository,
PerforAgothersourceRepository perforAgothersourceRepository, PerforAgothersourceRepository perforAgothersourceRepository,
PerforAgworkloadtypeRepository perforAgworkloadtypeRepository,
PerforRoleRepository roleRepository) PerforRoleRepository roleRepository)
{ {
this.application = application.Value; this.application = application.Value;
...@@ -65,6 +68,7 @@ public class SecondAllotService : IAutoInjection ...@@ -65,6 +68,7 @@ public class SecondAllotService : IAutoInjection
this.perforAgcomputeRepository = perforAgcomputeRepository; this.perforAgcomputeRepository = perforAgcomputeRepository;
this.perforCofagainRepository = perforCofagainRepository; this.perforCofagainRepository = perforCofagainRepository;
this.perforAgothersourceRepository = perforAgothersourceRepository; this.perforAgothersourceRepository = perforAgothersourceRepository;
this.perforAgworkloadtypeRepository = perforAgworkloadtypeRepository;
this.roleRepository = roleRepository; this.roleRepository = roleRepository;
this.tempitems = perforAgtempitemRepository.GetEntities(); this.tempitems = perforAgtempitemRepository.GetEntities();
} }
...@@ -434,17 +438,20 @@ private void SupplyHeaderByWorkItem(UseTempRequest request, SecondResponse resul ...@@ -434,17 +438,20 @@ private void SupplyHeaderByWorkItem(UseTempRequest request, SecondResponse resul
if (workitem == null || !workitem.Any(t => t.Id > 0)) if (workitem == null || !workitem.Any(t => t.Id > 0))
return; return;
var deptHeader = perforAgworkloadtypeRepository.GetEntities(t => new List<int> { request.HospitalId, 0 }.Contains(t.HospitalId));
if (deptHeader == null || !deptHeader.Any())
return;
//不包含工作量绩效 //不包含工作量绩效
if (!result.HeadItems.Select(t => t.FiledId).Contains("PerformanceShareTheWorkload")) if (!result.HeadItems.Select(t => t.FiledId).Contains("PerformanceShareTheWorkload"))
return; return;
var maxSortValue = result.HeadItems.Where(t => t.Type == 1).Max(t => t.Sort); var maxSortValue = result.HeadItems.Where(t => t.Type == 1).Max(t => t.Sort);
var headers = new HeadItem[] { var headers = new HeadItem[] {
new HeadItem new HeadItem
{ {
FiledId = "PerformanceShareTheDepartment", FiledId = "ThePerformanceOf",
FiledName = "门诊绩效占比",
Sort = maxSortValue + 1,
Type = 1, Type = 1,
SourceType = 1, SourceType = 1,
IsBring = 2, IsBring = 2,
...@@ -452,16 +459,40 @@ private void SupplyHeaderByWorkItem(UseTempRequest request, SecondResponse resul ...@@ -452,16 +459,40 @@ private void SupplyHeaderByWorkItem(UseTempRequest request, SecondResponse resul
}, },
new HeadItem new HeadItem
{ {
FiledId = "PerformanceDepartmentDistributionAmount", FiledId = "ThePerformanceAmountOf",
FiledName = "门诊绩效金额",
Sort = maxSortValue + 2,
Type = 1, Type = 1,
SourceType = 1, SourceType = 1,
IsBring = 2 IsBring = 2
} }
}; };
var headerItems = new List<HeadItem>();
int sortindex = 1;
foreach (var item in deptHeader)
{
if (item.HospitalId == 0) continue;
for (int i = 0; i < headers.Length; i++)
{
var headItem = headers[i];
headItem.FiledName = (i % 2 == 0) ? item.TypeName : item.TypeName.Replace("占比", "金额");
headItem.FiledId += item.Id;
headItem.Sort = maxSortValue + sortindex;
headItem.WorkType = item.Id;
headerItems.Add(headItem);
sortindex++;
}
}
foreach (var item in deptHeader.Where(t => t.HospitalId == 0))
{
result.HeadItems.Where(t => t.FiledName == item.TypeName).ToList()?.ForEach(t => t.WorkType = item.Id);
result.BodyItems.Where(t => t.FiledName == item.TypeName).ToList()?.ForEach(t => t.WorkType = item.Id);
}
var rownumber = result.BodyItems.Any(t => t.RowNumber == -1) ? -1 : 0; var rownumber = result.BodyItems.Any(t => t.RowNumber == -1) ? -1 : 0;
foreach (var item in headers) foreach (var item in headerItems)
{ {
if (!result.HeadItems.Select(t => t.FiledId).Contains(item.FiledId)) if (!result.HeadItems.Select(t => t.FiledId).Contains(item.FiledId))
{ {
...@@ -746,7 +777,7 @@ public void RefreshTemp(UseTempRequest request) ...@@ -746,7 +777,7 @@ public void RefreshTemp(UseTempRequest request)
public List<ag_workload> GetWorkloadList(WorkloadRequest request) public List<ag_workload> GetWorkloadList(WorkloadRequest request)
{ {
return perforAgworkloadRepository.GetEntities(t => t.HospitalId == request.HospitalId && t.Department == request.Department return perforAgworkloadRepository.GetEntities(t => t.HospitalId == request.HospitalId && t.Department == request.Department
&& t.UnitType == request.UnitType && t.WorkTypeId == (int)AgWorkloadType.SingleAwards); && t.UnitType == request.UnitType && t.WorkTypeId != (int)AgWorkloadType.SingleAwards);
} }
/// <summary> /// <summary>
...@@ -767,7 +798,7 @@ public bool WorkloadAdd(WorkloadRequest request) ...@@ -767,7 +798,7 @@ public bool WorkloadAdd(WorkloadRequest request)
FactorValue = request.FactorValue ?? 1, FactorValue = request.FactorValue ?? 1,
ItemName = request.ItemName, ItemName = request.ItemName,
Sort = request.Sort ?? 1, Sort = request.Sort ?? 1,
WorkTypeId = request.Type, WorkTypeId = request.WorkTypeId,
}; };
var result = perforAgworkloadRepository.Add(workload); var result = perforAgworkloadRepository.Add(workload);
if (result) if (result)
...@@ -798,7 +829,7 @@ public bool WorkloadUpdate(WorkloadRequest request) ...@@ -798,7 +829,7 @@ public bool WorkloadUpdate(WorkloadRequest request)
workload.ItemName = request.ItemName; workload.ItemName = request.ItemName;
workload.Sort = request.Sort; workload.Sort = request.Sort;
workload.ItemId = $"Feild{workload.Id}"; workload.ItemId = $"Feild{workload.Id}";
workload.WorkTypeId = request.Type; workload.WorkTypeId = request.WorkTypeId;
return perforAgworkloadRepository.Update(workload); return perforAgworkloadRepository.Update(workload);
} }
...@@ -815,7 +846,7 @@ public bool WorkloadDelete(int id) ...@@ -815,7 +846,7 @@ public bool WorkloadDelete(int id)
} }
/// <summary> /// <summary>
/// 获取工作量列表 /// 获取单行奖励列表
/// </summary> /// </summary>
/// <param name="secondId"></param> /// <param name="secondId"></param>
/// <returns></returns> /// <returns></returns>
...@@ -824,6 +855,76 @@ public List<ag_workload> GetSingleList(WorkloadRequest request) ...@@ -824,6 +855,76 @@ public List<ag_workload> GetSingleList(WorkloadRequest request)
return perforAgworkloadRepository.GetEntities(t => t.HospitalId == request.HospitalId && t.Department == request.Department return perforAgworkloadRepository.GetEntities(t => t.HospitalId == request.HospitalId && t.Department == request.Department
&& t.UnitType == request.UnitType && t.WorkTypeId == (int)AgWorkloadType.SingleAwards); && t.UnitType == request.UnitType && t.WorkTypeId == (int)AgWorkloadType.SingleAwards);
} }
/// <summary>
/// 获取工作量类型列表
/// </summary>
/// <param name="secondId"></param>
/// <returns></returns>
public List<TitleValue<int>> WorkTypeList(WorkloadRequest request)
{
var worktypes = perforAgworkloadtypeRepository.GetEntities(t => new List<int> { 0, request.HospitalId.Value }.Contains(t.HospitalId));
if (worktypes != null && worktypes.Any())
{
return worktypes.Select(t => new TitleValue<int>
{
Title = t.TypeName,
Value = t.Id
}).ToList();
}
return null;
}
/// <summary>
/// 保存工作量类型
/// </summary>
/// <param name="secondId"></param>
/// <returns></returns>
public ag_workload_type SaveWorkType(ag_workload_type request)
{
var entity = perforAgworkloadtypeRepository.GetEntity(t => new List<int> { 0, request.HospitalId }.Contains(t.HospitalId) && t.TypeName == request.TypeName);
if (entity == null)
{
if (request.Id > 0)
{
entity = perforAgworkloadtypeRepository.GetEntity(t => t.Id == request.Id);
entity.HospitalId = request.HospitalId;
entity.TypeName = request.TypeName;
perforAgworkloadtypeRepository.Update(entity);
}
else
{
entity = new ag_workload_type
{
HospitalId = request.HospitalId,
TypeName = request.TypeName,
};
perforAgworkloadtypeRepository.Add(entity);
}
return entity;
}
else if (request.Id != entity.Id)
throw new PerformanceException("类型已存在");
else
return request;
}
/// <summary>
/// 获取工作量类型列表
/// </summary>
/// <param name="secondId"></param>
/// <returns></returns>
public bool DeleteWorkType(WorkloadRequest request)
{
var entity = perforAgworkloadtypeRepository.GetEntity(t => t.Id == request.Id);
if (entity != null)
{
return perforAgworkloadtypeRepository.Remove(entity);
}
else
return false;
}
#endregion #endregion
#region 二次绩效考核 #region 二次绩效考核
......
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