Commit 6ec380e1 by 李承祥

绩效考核 -- 模板列表及列头,科室

parent e36a4954
......@@ -61,14 +61,14 @@ public ApiResponse DelAssess([CustomizeValidator(RuleSet = "Del"), FromBody]Asse
return assessService.DelAssess(request.AssessID);
}
////获取所有科室列表
//[HttpPost]
//[Route("departmentlist")]
//public ApiResponse DepartmentList([FromBody]SetDepartmentRequest request)
//{
// var department = _userService.Department(request.HospitalID);
// return new ApiResponse<List<TitleValue>>(ResponseType.OK, "ok", department);
//}
//获取所有科室列表
[HttpPost]
[Route("departmentlist")]
public ApiResponse DepartmentList([CustomizeValidator(RuleSet = "List"), FromBody]AssessRequest request)
{
var department = assessService.Department(request.AllotID);
return new ApiResponse(ResponseType.OK, "ok", department);
}
//设置科室考核分类
[HttpPost]
......@@ -125,5 +125,29 @@ public ApiResponse EditAssessData([CustomizeValidator(RuleSet = "Edit"), FromBod
{
return assessService.EditAssessData(request.AssessRow);
}
//考核模版列表
[HttpPost]
[Route("tempassesslist")]
public ApiResponse TempAssessList([FromBody]ApiRequest request)
{
return assessService.TempAssessList();
}
//模板列头列表
[HttpPost]
[Route("tempcolumnlist")]
public ApiResponse TempColumnList([CustomizeValidator(RuleSet = "List"), FromBody]AssessColumnRequest request)
{
return assessService.TempColumnList(request.AssessID);
}
//使用考核模版
[HttpPost]
[Route("usetemplate")]
public ApiResponse UseTemplate([CustomizeValidator(RuleSet = "Use"), FromBody]AssessRequest request)
{
return assessService.UseTemplate(request.AllotID, request.AssessID);
}
}
}
......@@ -37,6 +37,12 @@ public AssessRequestValidator()
{
RuleFor(t => t.AllotID).NotNull().NotEmpty();
});
RuleSet("Use", () =>
{
RuleFor(t => t.AllotID).NotNull().NotEmpty();
RuleFor(t => t.AssessID).NotNull().NotEmpty();
});
}
}
}
......@@ -26,6 +26,10 @@ public PerformanceDbContext(DbContextOptions<PerformanceDbContext> options)
public virtual DbSet<as_columns> as_columns { get; set; }
/// <summary> 考核数据 <summary>
public virtual DbSet<as_data> as_data { get; set; }
/// <summary> 考核类别 <summary>
public virtual DbSet<as_tempassess> as_tempassess { get; set; }
/// <summary> 考核列头 <summary>
public virtual DbSet<as_tempcolumns> as_tempcolumns { get; set; }
/// <summary> <summary>
public virtual DbSet<cof_again> cof_again { get; set; }
/// <summary> 上传excel文件校验配置 <summary>
......
//-----------------------------------------------------------------------
// <copyright file=" as_tempassess.cs">
// * FileName: 考核类别.cs
// </copyright>
//-----------------------------------------------------------------------
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels
{
/// <summary>
/// 考核类别
/// </summary>
[Table("as_tempassess")]
public class as_tempassess
{
/// <summary>
///
/// </summary>
[Key]
public int ID { get; set; }
/// <summary>
/// 绩效ID
/// </summary>
public Nullable<int> AllotID { get; set; }
/// <summary>
/// 考核类别
/// </summary>
public string AssessName { get; set; }
}
}
//-----------------------------------------------------------------------
// <copyright file=" as_tempcolumns.cs">
// * FileName: 考核列头.cs
// </copyright>
//-----------------------------------------------------------------------
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Performance.EntityModels
{
/// <summary>
/// 考核列头
/// </summary>
[Table("as_tempcolumns")]
public class as_tempcolumns
{
/// <summary>
///
/// </summary>
[Key]
public int ID { get; set; }
/// <summary>
/// 考核类别
/// </summary>
public Nullable<int> AssessID { get; set; }
/// <summary>
/// 父级列头ID
/// </summary>
public Nullable<int> ParentID { get; set; }
/// <summary>
/// 列头名称
/// </summary>
public string ColumnName { get; set; }
/// <summary>
/// 排序
/// </summary>
public Nullable<int> Sort { get; set; }
}
}
//-----------------------------------------------------------------------
// <copyright file=" as_tempassess.cs">
// * FileName: as_tempassess.cs
// </copyright>
//-----------------------------------------------------------------------
using System;
using Performance.EntityModels;
namespace Performance.Repository
{
/// <summary>
/// as_tempassess Repository
/// </summary>
public partial class PerforAstempassessRepository : PerforRepository<as_tempassess>
{
public PerforAstempassessRepository(PerformanceDbContext context) : base(context)
{
}
}
}
//-----------------------------------------------------------------------
// <copyright file=" as_tempcolumns.cs">
// * FileName: as_tempcolumns.cs
// </copyright>
//-----------------------------------------------------------------------
using System;
using Performance.EntityModels;
namespace Performance.Repository
{
/// <summary>
/// as_tempcolumns Repository
/// </summary>
public partial class PerforAstempcolumnsRepository : PerforRepository<as_tempcolumns>
{
public PerforAstempcolumnsRepository(PerformanceDbContext context) : base(context)
{
}
}
}
......@@ -14,13 +14,25 @@ public class AssessService : IAutoInjection
private PerforAsassessRepository perforAsassessRepository;
private PerforAsdataRepository perforAsdataRepository;
private PerforAscolumnsRepository perforAscolumnsRepository;
private PerforAstempassessRepository perforAstempassessRepository;
private PerforAstempcolumnsRepository perforAstempcolumnsRepository;
private PerforPerallotRepository perforPerallotRepository;
private PerforImemployeeRepository perforImemployeeRepository;
public AssessService(PerforAsassessRepository perforAsassessRepository,
PerforAsdataRepository perforAsdataRepository,
PerforAscolumnsRepository perforAscolumnsRepository)
PerforAscolumnsRepository perforAscolumnsRepository,
PerforAstempassessRepository perforAstempassessRepository,
PerforAstempcolumnsRepository perforAstempcolumnsRepository,
PerforPerallotRepository perforPerallotRepository,
PerforImemployeeRepository perforImemployeeRepository)
{
this.perforAsassessRepository = perforAsassessRepository;
this.perforAsdataRepository = perforAsdataRepository;
this.perforAscolumnsRepository = perforAscolumnsRepository;
this.perforAstempassessRepository = perforAstempassessRepository;
this.perforAstempcolumnsRepository = perforAstempcolumnsRepository;
this.perforPerallotRepository = perforPerallotRepository;
this.perforImemployeeRepository = perforImemployeeRepository;
}
#region 考核类别
......@@ -80,6 +92,9 @@ public ApiResponse DelAssess(int assessID)
return new ApiResponse(ResponseType.Fail, "考核类别ID无效");
var result = perforAsassessRepository.Remove(entity);
var columns = perforAscolumnsRepository.GetEntities(t => t.AssessID == assessID);
if (result && columns != null && columns.Count > 0)
result = perforAscolumnsRepository.RemoveRange(columns.ToArray());
return result ? new ApiResponse(ResponseType.OK) : new ApiResponse(ResponseType.Fail);
}
......@@ -233,5 +248,90 @@ public ApiResponse EditAssessData(List<AssessRow> request)
return new ApiResponse(ResponseType.OK);
}
#endregion
#region 模版
/// <summary>
/// 考核模版列表
/// </summary>
/// <param name="allotID"></param>
/// <returns></returns>
public ApiResponse TempAssessList()
{
var list = perforAstempassessRepository.GetEntities();
return new ApiResponse(ResponseType.OK, list);
}
/// <summary>
/// 模版列头列表
/// </summary>
/// <param name="assessID"></param>
/// <returns></returns>
public ApiResponse TempColumnList(int assessID)
{
var list = perforAstempcolumnsRepository.GetEntities(t => t.AssessID == assessID)?.OrderBy(t => t.ParentID).ThenBy(t => t.Sort);
return new ApiResponse(ResponseType.OK, list);
}
/// <summary>
/// 使用模版
/// </summary>
/// <returns></returns>
public ApiResponse UseTemplate(int allotID, int assessID)
{
var allot = perforPerallotRepository.GetEntity(t => t.ID == allotID);
var temp = perforAstempassessRepository.GetEntity(t => t.ID == assessID);
if (temp != null && allot != null)
{
string assessName = $"{temp.AssessName}A{allotID}-{allot.Year}{allot.Month}月";
var assess = perforAsassessRepository.GetEntity(t => t.AssessName == assessName && t.AllotID == allotID);
if (assess != null)
return new ApiResponse(ResponseType.Fail, "该模版已经被使用");
assess = new as_assess
{
AllotID = allotID,
AssessName = assessName
};
//copy模版信息
var result = perforAsassessRepository.Add(assess);
var tempColumns = perforAstempcolumnsRepository.GetEntities(t => t.AssessID == assessID);
var columns = tempColumns?.Select(t => new as_columns
{
AssessID = assess.ID,
ParentID = t.ParentID,
ColumnName = t.ColumnName,
Sort = t.Sort
}).ToList();
//copy模版列头
if (result && columns != null && columns.Count > 0)
result = perforAscolumnsRepository.AddRange(columns.ToArray());
return result ? new ApiResponse(ResponseType.OK) : new ApiResponse(ResponseType.Fail);
}
return allot == null ? new ApiResponse(ResponseType.Fail, "绩效ID无效") : new ApiResponse(ResponseType.Fail, "模版信息不存在");
}
#endregion
/// <summary>
/// 科室列表
/// </summary>
/// <returns></returns>
public List<TitleValue> Department(int allotId)
{
var allot = perforPerallotRepository.GetEntity(t => t.ID == allotId);
if (allot != null)
{
var _checked = perforAsdataRepository.GetEntities(t => t.AllotID == allotId)?.Select(t => t.Department).Distinct();
var allotList = perforPerallotRepository.GetEntities(t => t.HospitalId == allot.HospitalId);
var idList = allotList.Select(s => s.ID).ToList();
var department = perforImemployeeRepository.GetEntities(t => t.Department != "" && idList.Contains(t.AllotID.Value));
if (department != null && department.Count > 0)
{
var departmentList = department.Select(t => t.Department).Distinct();
departmentList = departmentList.Except(_checked).ToList();
return departmentList.Select(t => new TitleValue { Title = t, Value = t }).OrderBy(t => t.Title).ToList();
}
}
return new List<TitleValue>();
}
}
}
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