Commit 40b261fb by lcx

工作量类型 补充

parent a3fb8981
......@@ -217,18 +217,58 @@ public ApiResponse WorkloadDelete([CustomizeValidator(RuleSet = "Delete"), FromB
return new ApiResponse(result ? ResponseType.OK : ResponseType.Fail);
}
/// <summary>
/// 二次绩效工作量列表
/// 二次绩效单例奖励列表
/// </summary>
/// <returns></returns>
[Route("api/second/single/list")]
[HttpPost]
public ApiResponse SingleAwards([CustomizeValidator(RuleSet = "Query"), FromBody]WorkloadRequest request)
public ApiResponse SingleAwards([FromBody]WorkloadRequest request)
{
var result = secondAllotService.GetSingleList(request);
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
#region 二次绩效审核
......
......@@ -828,7 +828,25 @@
</member>
<member name="M:Performance.Api.Controllers.SecondAllotController.SingleAwards(Performance.DtoModels.WorkloadRequest)">
<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>
<returns></returns>
</member>
......
......@@ -1965,7 +1965,7 @@
</summary>
</member>
<member name="P:Performance.DtoModels.WorkloadRequest.Type">
<member name="P:Performance.DtoModels.WorkloadRequest.WorkTypeId">
<summary>
1、工作量 2、其他
</summary>
......
......@@ -45,7 +45,7 @@ public class WorkloadRequest
/// <summary>
/// 1、工作量 2、其他
/// </summary>
public int Type { get; set; }
public int WorkTypeId { get; set; }
}
public class WorkloadRequestValidator : AbstractValidator<WorkloadRequest>
{
......@@ -57,7 +57,7 @@ public WorkloadRequestValidator()
RuleFor(x => x.Department).NotNull().NotEmpty();
RuleFor(x => x.UnitType).NotNull().NotEmpty();
RuleFor(x => x.ItemName).NotNull().NotEmpty();
RuleFor(x => x.Type).NotNull().GreaterThan(0);
RuleFor(x => x.WorkTypeId).NotNull().GreaterThan(0);
});
RuleSet("Update", () =>
......@@ -65,7 +65,7 @@ public WorkloadRequestValidator()
RuleFor(x => x.Id).NotNull().GreaterThan(0);
RuleFor(x => x.HospitalId).NotNull().GreaterThan(0);
RuleFor(x => x.ItemName).NotNull().NotEmpty();
RuleFor(x => x.Type).NotNull().GreaterThan(0);
RuleFor(x => x.WorkTypeId).NotNull().GreaterThan(0);
});
RuleSet("Delete", () =>
......
......@@ -22,6 +22,7 @@ public class HeadItem
public Nullable<int> IsBring { get; set; }
/// <summary> 1 value相加值为1 </summary>
public Nullable<int> SpecialAttr { get; set; }
public Nullable<int> WorkType { get; set; }
}
public class BodyItem : HeadItem
......
......@@ -7,6 +7,7 @@
using Performance.Repository;
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
......@@ -30,6 +31,7 @@ public class SecondAllotService : IAutoInjection
private readonly PerforAgcomputeRepository perforAgcomputeRepository;
private readonly PerforCofagainRepository perforCofagainRepository;
private readonly PerforAgothersourceRepository perforAgothersourceRepository;
private readonly PerforAgworkloadtypeRepository perforAgworkloadtypeRepository;
private readonly PerforRoleRepository roleRepository;
private readonly List<ag_tempitem> tempitems = new List<ag_tempitem>();
......@@ -48,6 +50,7 @@ public class SecondAllotService : IAutoInjection
PerforAgcomputeRepository perforAgcomputeRepository,
PerforCofagainRepository perforCofagainRepository,
PerforAgothersourceRepository perforAgothersourceRepository,
PerforAgworkloadtypeRepository perforAgworkloadtypeRepository,
PerforRoleRepository roleRepository)
{
this.application = application.Value;
......@@ -65,6 +68,7 @@ public class SecondAllotService : IAutoInjection
this.perforAgcomputeRepository = perforAgcomputeRepository;
this.perforCofagainRepository = perforCofagainRepository;
this.perforAgothersourceRepository = perforAgothersourceRepository;
this.perforAgworkloadtypeRepository = perforAgworkloadtypeRepository;
this.roleRepository = roleRepository;
this.tempitems = perforAgtempitemRepository.GetEntities();
}
......@@ -434,17 +438,20 @@ private void SupplyHeaderByWorkItem(UseTempRequest request, SecondResponse resul
if (workitem == null || !workitem.Any(t => t.Id > 0))
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"))
return;
var maxSortValue = result.HeadItems.Where(t => t.Type == 1).Max(t => t.Sort);
var headers = new HeadItem[] {
new HeadItem
{
FiledId = "PerformanceShareTheDepartment",
FiledName = "门诊绩效占比",
Sort = maxSortValue + 1,
FiledId = "ThePerformanceOf",
Type = 1,
SourceType = 1,
IsBring = 2,
......@@ -452,16 +459,40 @@ private void SupplyHeaderByWorkItem(UseTempRequest request, SecondResponse resul
},
new HeadItem
{
FiledId = "PerformanceDepartmentDistributionAmount",
FiledName = "门诊绩效金额",
Sort = maxSortValue + 2,
FiledId = "ThePerformanceAmountOf",
Type = 1,
SourceType = 1,
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;
foreach (var item in headers)
foreach (var item in headerItems)
{
if (!result.HeadItems.Select(t => t.FiledId).Contains(item.FiledId))
{
......@@ -746,7 +777,7 @@ public void RefreshTemp(UseTempRequest request)
public List<ag_workload> GetWorkloadList(WorkloadRequest request)
{
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>
......@@ -767,7 +798,7 @@ public bool WorkloadAdd(WorkloadRequest request)
FactorValue = request.FactorValue ?? 1,
ItemName = request.ItemName,
Sort = request.Sort ?? 1,
WorkTypeId = request.Type,
WorkTypeId = request.WorkTypeId,
};
var result = perforAgworkloadRepository.Add(workload);
if (result)
......@@ -798,7 +829,7 @@ public bool WorkloadUpdate(WorkloadRequest request)
workload.ItemName = request.ItemName;
workload.Sort = request.Sort;
workload.ItemId = $"Feild{workload.Id}";
workload.WorkTypeId = request.Type;
workload.WorkTypeId = request.WorkTypeId;
return perforAgworkloadRepository.Update(workload);
}
......@@ -815,7 +846,7 @@ public bool WorkloadDelete(int id)
}
/// <summary>
/// 获取工作量列表
/// 获取单行奖励列表
/// </summary>
/// <param name="secondId"></param>
/// <returns></returns>
......@@ -824,6 +855,76 @@ public List<ag_workload> GetSingleList(WorkloadRequest request)
return perforAgworkloadRepository.GetEntities(t => t.HospitalId == request.HospitalId && t.Department == request.Department
&& 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
#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