Commit 7aee75fa by lcx

二次绩效单例奖励 列头增加

parent b76517c4
...@@ -216,6 +216,19 @@ public ApiResponse WorkloadDelete([CustomizeValidator(RuleSet = "Delete"), FromB ...@@ -216,6 +216,19 @@ public ApiResponse WorkloadDelete([CustomizeValidator(RuleSet = "Delete"), FromB
var result = secondAllotService.WorkloadDelete(request.Id); var result = secondAllotService.WorkloadDelete(request.Id);
return new ApiResponse(result ? ResponseType.OK : ResponseType.Fail); 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)
{
var result = secondAllotService.GetSingleList(request);
return new ApiResponse(ResponseType.OK, result);
}
#endregion #endregion
#region 二次绩效审核 #region 二次绩效审核
......
...@@ -826,6 +826,12 @@ ...@@ -826,6 +826,12 @@
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.SecondAllotController.SingleAwards(Performance.DtoModels.WorkloadRequest)">
<summary>
二次绩效工作量列表
</summary>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.SecondAllotController.SubmitAudit(Performance.DtoModels.SubmitAuditRequest)"> <member name="M:Performance.Api.Controllers.SecondAllotController.SubmitAudit(Performance.DtoModels.SubmitAuditRequest)">
<summary> <summary>
提交审核 提交审核
......
...@@ -143,6 +143,21 @@ ...@@ -143,6 +143,21 @@
<member name="F:Performance.DtoModels.AllotStates.GenerateAccomplish"> <member name="F:Performance.DtoModels.AllotStates.GenerateAccomplish">
<summary> 绩效结果解析成功 </summary> <summary> 绩效结果解析成功 </summary>
</member> </member>
<member name="F:Performance.DtoModels.AgWorkloadType.Workload">
<summary>
工作量
</summary>
</member>
<member name="F:Performance.DtoModels.AgWorkloadType.Other">
<summary>
其他
</summary>
</member>
<member name="F:Performance.DtoModels.AgWorkloadType.SingleAwards">
<summary>
单项奖励
</summary>
</member>
<member name="P:Performance.DtoModels.PerAgainData.RowNumber"> <member name="P:Performance.DtoModels.PerAgainData.RowNumber">
<summary> <summary>
行号 行号
...@@ -1955,6 +1970,11 @@ ...@@ -1955,6 +1970,11 @@
</summary> </summary>
</member> </member>
<member name="P:Performance.DtoModels.WorkloadRequest.Type">
<summary>
1、工作量 2、其他
</summary>
</member>
<member name="P:Performance.DtoModels.WorkyearRequest.MaxRange"> <member name="P:Performance.DtoModels.WorkyearRequest.MaxRange">
<summary> <summary>
最大工龄范围(小于) 最大工龄范围(小于)
...@@ -2727,6 +2747,9 @@ ...@@ -2727,6 +2747,9 @@
<member name="P:Performance.DtoModels.HeadItem.IsBring"> <member name="P:Performance.DtoModels.HeadItem.IsBring">
<summary> 1 带出历史数据 2不带出 </summary> <summary> 1 带出历史数据 2不带出 </summary>
</member> </member>
<member name="P:Performance.DtoModels.HeadItem.SpecialAttr">
<summary> 1 value相加值为1 </summary>
</member>
<member name="P:Performance.DtoModels.SecondTempResponse.TempName"> <member name="P:Performance.DtoModels.SecondTempResponse.TempName">
<summary> <summary>
模板名称 模板名称
......
...@@ -557,6 +557,11 @@ ...@@ -557,6 +557,11 @@
1 自动带出 2 计算得出 1 自动带出 2 计算得出
</summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.ag_fixatitem.SpecialAttr">
<summary>
1 value相加值为1
</summary>
</member>
<member name="T:Performance.EntityModels.ag_header"> <member name="T:Performance.EntityModels.ag_header">
<summary> <summary>
二次分配不固定列头数据 二次分配不固定列头数据
...@@ -832,6 +837,11 @@ ...@@ -832,6 +837,11 @@
1 带出历史数据 2不带出 1 带出历史数据 2不带出
</summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.ag_tempitem.SpecialAttr">
<summary>
1 value相加值为1
</summary>
</member>
<member name="T:Performance.EntityModels.ag_usetemp"> <member name="T:Performance.EntityModels.ag_usetemp">
<summary> <summary>
...@@ -907,6 +917,11 @@ ...@@ -907,6 +917,11 @@
</summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.ag_workload.Type">
<summary>
1、工作量 2、其他
</summary>
</member>
<member name="T:Performance.EntityModels.as_assess"> <member name="T:Performance.EntityModels.as_assess">
<summary> <summary>
考核类别 考核类别
......
...@@ -81,4 +81,20 @@ public enum AllotStates ...@@ -81,4 +81,20 @@ public enum AllotStates
[Description("数据验证通过")] [Description("数据验证通过")]
GenerateAccomplish = 10, GenerateAccomplish = 10,
} }
public enum AgWorkloadType
{
/// <summary>
/// 工作量
/// </summary>
Workload = 1,
/// <summary>
/// 其他
/// </summary>
Other = 2,
/// <summary>
/// 单项奖励
/// </summary>
SingleAwards = 3,
}
} }
...@@ -41,6 +41,11 @@ public class WorkloadRequest ...@@ -41,6 +41,11 @@ public class WorkloadRequest
/// ///
/// </summary> /// </summary>
public Nullable<decimal> Sort { get; set; } public Nullable<decimal> Sort { get; set; }
/// <summary>
/// 1、工作量 2、其他
/// </summary>
public int Type { get; set; }
} }
public class WorkloadRequestValidator : AbstractValidator<WorkloadRequest> public class WorkloadRequestValidator : AbstractValidator<WorkloadRequest>
{ {
...@@ -52,6 +57,7 @@ public WorkloadRequestValidator() ...@@ -52,6 +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);
}); });
RuleSet("Update", () => RuleSet("Update", () =>
...@@ -59,6 +65,7 @@ public WorkloadRequestValidator() ...@@ -59,6 +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);
}); });
RuleSet("Delete", () => RuleSet("Delete", () =>
......
...@@ -20,6 +20,8 @@ public class HeadItem ...@@ -20,6 +20,8 @@ public class HeadItem
public int SourceType { get; set; } public int SourceType { get; set; }
/// <summary> 1 带出历史数据 2不带出 </summary> /// <summary> 1 带出历史数据 2不带出 </summary>
public Nullable<int> IsBring { get; set; } public Nullable<int> IsBring { get; set; }
/// <summary> 1 value相加值为1 </summary>
public Nullable<int> SpecialAttr { get; set; }
} }
public class BodyItem : HeadItem public class BodyItem : HeadItem
......
...@@ -70,5 +70,10 @@ public class ag_fixatitem ...@@ -70,5 +70,10 @@ public class ag_fixatitem
/// 1 自动带出 2 计算得出 /// 1 自动带出 2 计算得出
/// </summary> /// </summary>
public Nullable<int> SourceType { get; set; } public Nullable<int> SourceType { get; set; }
/// <summary>
/// 1 value相加值为1
/// </summary>
public Nullable<int> SpecialAttr { get; set; }
} }
} }
...@@ -7,53 +7,58 @@ ...@@ -7,53 +7,58 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels namespace Performance.EntityModels
{ {
/// <summary> /// <summary>
/// 二次绩效模板项 /// 二次绩效模板项
/// </summary> /// </summary>
[Table("ag_tempitem")] [Table("ag_tempitem")]
public class ag_tempitem public class ag_tempitem
{ {
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
[Key] [Key]
public int Id { get; set; } public int Id { get; set; }
/// <summary> /// <summary>
/// 模板ID /// 模板ID
/// </summary> /// </summary>
public Nullable<int> TempId { get; set; } public Nullable<int> TempId { get; set; }
/// <summary> /// <summary>
/// 字段ID /// 字段ID
/// </summary> /// </summary>
public string FiledId { get; set; } public string FiledId { get; set; }
/// <summary> /// <summary>
/// 字段名称 /// 字段名称
/// </summary> /// </summary>
public string FiledName { get; set; } public string FiledName { get; set; }
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public Nullable<decimal> Sort { get; set; } public Nullable<decimal> Sort { get; set; }
/// <summary> /// <summary>
/// 字段类型 1 顶部概况 2 表格固定 /// 字段类型 1 顶部概况 2 表格固定
/// </summary> /// </summary>
public Nullable<int> Type { get; set; } public Nullable<int> Type { get; set; }
/// <summary> /// <summary>
/// 1 自动带出 2 计算得出 /// 1 自动带出 2 计算得出
/// </summary> /// </summary>
public Nullable<int> SourceType { get; set; } public Nullable<int> SourceType { get; set; }
/// <summary> /// <summary>
/// 1 带出历史数据 2不带出 /// 1 带出历史数据 2不带出
/// </summary> /// </summary>
public Nullable<int> IsBring { get; set; } public Nullable<int> IsBring { get; set; }
/// <summary>
/// 1 value相加值为1
/// </summary>
public Nullable<int> SpecialAttr { get; set; }
} }
} }
...@@ -55,5 +55,10 @@ public class ag_workload ...@@ -55,5 +55,10 @@ public class ag_workload
/// ///
/// </summary> /// </summary>
public Nullable<decimal> Sort { get; set; } public Nullable<decimal> Sort { get; set; }
/// <summary>
/// 1、工作量 2、其他
/// </summary>
public int Type { get; set; }
} }
} }
...@@ -300,6 +300,9 @@ public SecondResponse GetSecondDetail(UseTempRequest request) ...@@ -300,6 +300,9 @@ public SecondResponse GetSecondDetail(UseTempRequest request)
//检验 二次绩效配置 数据是否 有值,无则补充带出 //检验 二次绩效配置 数据是否 有值,无则补充带出
FillData(second, result.BodyItems); FillData(second, result.BodyItems);
SupplyHeaderByWorkItem(request, result);
return new SecondResponse return new SecondResponse
{ {
HeadItems = result.HeadItems.OrderBy(t => t.Type).ThenBy(t => t.Sort).ThenBy(t => t.FiledName).ToList(), HeadItems = result.HeadItems.OrderBy(t => t.Type).ThenBy(t => t.Sort).ThenBy(t => t.FiledName).ToList(),
...@@ -352,7 +355,8 @@ private List<BodyItem> GetBodyItems(List<ag_fixatitem> fixatitems, List<HeadItem ...@@ -352,7 +355,8 @@ private List<BodyItem> GetBodyItems(List<ag_fixatitem> fixatitems, List<HeadItem
SourceType = t.SourceType ?? 0, SourceType = t.SourceType ?? 0,
Type = t.Type ?? 0, Type = t.Type ?? 0,
Value = t.ItemValue, Value = t.ItemValue,
Sort = t.Sort ?? 0 Sort = t.Sort ?? 0,
SpecialAttr = t.SpecialAttr ?? headItems.FirstOrDefault(h => h.FiledName == t.ItemName && h.Type == t.Type)?.SpecialAttr,
}).ToList(); }).ToList();
} }
// 删除多余的headvalue // 删除多余的headvalue
...@@ -360,8 +364,6 @@ private List<BodyItem> GetBodyItems(List<ag_fixatitem> fixatitems, List<HeadItem ...@@ -360,8 +364,6 @@ private List<BodyItem> GetBodyItems(List<ag_fixatitem> fixatitems, List<HeadItem
return bodyItems; return bodyItems;
} }
/// <summary> /// <summary>
/// 补充须带出的历史数据,如姓名、职称等 /// 补充须带出的历史数据,如姓名、职称等
/// </summary> /// </summary>
...@@ -418,6 +420,58 @@ private void FillData(ag_secondallot second, List<BodyItem> bodyItems) ...@@ -418,6 +420,58 @@ private void FillData(ag_secondallot second, List<BodyItem> bodyItems)
bodyItems.FirstOrDefault(t => t.FiledName == item.Key).Value = item.Value; bodyItems.FirstOrDefault(t => t.FiledName == item.Key).Value = item.Value;
} }
} }
/// <summary>
/// 根绝添加工作量类型判断是否添加
/// </summary>
/// <param name="request"></param>
/// <param name="result"></param>
private void SupplyHeaderByWorkItem(UseTempRequest request, SecondResponse result)
{
var workitem = perforAgworkloadRepository.GetEntities(t => t.HospitalId == request.HospitalId && t.Department == request.Department
&& t.UnitType == request.UnitType && t.Type != 1);
if (workitem == null || !workitem.Any(t => t.Id > 0))
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,
Type = 1,
SourceType = 1,
IsBring = 2,
SpecialAttr = 1,
},
new HeadItem
{
FiledId = "PerformanceDepartmentDistributionAmount",
FiledName = "门诊绩效金额",
Sort = maxSortValue + 2,
Type = 1,
SourceType = 1,
IsBring = 2
}
};
var rownumber = result.BodyItems.Any(t => t.RowNumber == -1) ? -1 : 0;
foreach (var item in headers)
{
if (!result.HeadItems.Select(t => t.FiledId).Contains(item.FiledId))
{
result.HeadItems.Add(item);
var body = Mapper.Map<BodyItem>(item);
body.RowNumber = rownumber;
result.BodyItems.Add(body);
}
}
}
#endregion #endregion
/// <summary> /// <summary>
...@@ -442,6 +496,7 @@ public bool SaveValue(List<ag_fixatitem> request) ...@@ -442,6 +496,7 @@ public bool SaveValue(List<ag_fixatitem> request)
cellItem.SourceType = item.SourceType; cellItem.SourceType = item.SourceType;
cellItem.Type = item.Type; cellItem.Type = item.Type;
cellItem.UnitType = item.UnitType; cellItem.UnitType = item.UnitType;
cellItem.SpecialAttr = item.SpecialAttr;
perforAgfixatitemRepository.Update(cellItem); perforAgfixatitemRepository.Update(cellItem);
} }
else else
...@@ -690,7 +745,8 @@ public void RefreshTemp(UseTempRequest request) ...@@ -690,7 +745,8 @@ public void RefreshTemp(UseTempRequest request)
/// <returns></returns> /// <returns></returns>
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 && t.UnitType == request.UnitType); return perforAgworkloadRepository.GetEntities(t => t.HospitalId == request.HospitalId && t.Department == request.Department
&& t.UnitType == request.UnitType);
} }
/// <summary> /// <summary>
...@@ -711,6 +767,7 @@ public bool WorkloadAdd(WorkloadRequest request) ...@@ -711,6 +767,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,
Type = request.Type,
}; };
var result = perforAgworkloadRepository.Add(workload); var result = perforAgworkloadRepository.Add(workload);
if (result) if (result)
...@@ -741,6 +798,7 @@ public bool WorkloadUpdate(WorkloadRequest request) ...@@ -741,6 +798,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.Type = request.Type;
return perforAgworkloadRepository.Update(workload); return perforAgworkloadRepository.Update(workload);
} }
...@@ -756,6 +814,16 @@ public bool WorkloadDelete(int id) ...@@ -756,6 +814,16 @@ public bool WorkloadDelete(int id)
return perforAgworkloadRepository.Remove(workload); return perforAgworkloadRepository.Remove(workload);
} }
/// <summary>
/// 获取工作量列表
/// </summary>
/// <param name="secondId"></param>
/// <returns></returns>
public List<ag_workload> GetSingleList(WorkloadRequest request)
{
return perforAgworkloadRepository.GetEntities(t => t.HospitalId == request.HospitalId && t.Department == request.Department
&& t.UnitType == request.UnitType && t.Type == (int)AgWorkloadType.SingleAwards);
}
#endregion #endregion
#region 二次绩效考核 #region 二次绩效考核
...@@ -948,9 +1016,13 @@ public List<HeadItem> GetHeadItems(int tempId, int hospitalId, string department ...@@ -948,9 +1016,13 @@ public List<HeadItem> GetHeadItems(int tempId, int hospitalId, string department
var workItem = perforAgworkloadRepository.GetEntities(t => t.HospitalId == hospitalId && t.Department == department && t.UnitType == unitType); var workItem = perforAgworkloadRepository.GetEntities(t => t.HospitalId == hospitalId && t.Department == department && t.UnitType == unitType);
if (workItem != null && workItem.Count > 0) if (workItem != null && workItem.Count > 0)
{ {
var workDtos = Mapper.Map<List<HeadItem>>(workItem); var workDtos = Mapper.Map<List<HeadItem>>(workItem.Where(t => t.Type != (int)AgWorkloadType.SingleAwards));
workDtos.ForEach(t => { t.Type = 3; }); workDtos.ForEach(t => { t.Type = 3; });
headItems.AddRange(workDtos); headItems.AddRange(workDtos);
workDtos = Mapper.Map<List<HeadItem>>(workItem.Where(t => t.Type == (int)AgWorkloadType.SingleAwards));
workDtos.ForEach(t => { t.Type = 4; });
headItems.AddRange(workDtos);
} }
return headItems; return headItems;
} }
......
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