Commit 86af1c0c by lcx

保存接口调整、保证提交审核后数据和提交时数据一致,对workloadtype、workload进行统一修改(添加worktype时补充非提交二次的worktyp…

保存接口调整、保证提交审核后数据和提交时数据一致,对workloadtype、workload进行统一修改(添加worktype时补充非提交二次的worktypesource,删除时删除非提交二次的worktypesource,加载详情时对该次二次绩效的worktypesource进行补充),worktype、workload字典接口修改
parent 24774025
...@@ -87,7 +87,7 @@ public enum AgWorkloadType ...@@ -87,7 +87,7 @@ public enum AgWorkloadType
/// <summary> /// <summary>
/// 单项奖励 /// 单项奖励
/// </summary> /// </summary>
SingleAwards = 1, SingleAwards = -1,
/// <summary> /// <summary>
/// 工作量 /// 工作量
/// </summary> /// </summary>
......
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
// <copyright file=" ag_workload_source.cs"> // <copyright file=" ag_workload_source.cs">
// * FileName: .cs // * FileName: .cs
// </copyright> // </copyright>
...@@ -34,6 +34,31 @@ public class ag_workload_source ...@@ -34,6 +34,31 @@ public class ag_workload_source
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public string UnitType { get; set; }
/// <summary>
/// 工作量考核项ID
/// </summary>
public string ItemId { get; set; }
/// <summary>
/// 工作量名称
/// </summary>
public string ItemName { get; set; }
/// <summary>
/// 工作量系数
/// </summary>
public Nullable<decimal> FactorValue { get; set; }
/// <summary>
///
/// </summary>
public Nullable<decimal> Sort { get; set; }
/// <summary>
///
/// </summary>
public Nullable<decimal> Value { get; set; } public Nullable<decimal> Value { get; set; }
} }
} }
...@@ -15,6 +15,11 @@ public partial class SecondAllotService : IAutoInjection ...@@ -15,6 +15,11 @@ public partial class SecondAllotService : IAutoInjection
{ {
#region 二次绩效详情 #region 二次绩效详情
private bool IsAudit(int? secondStatus)
{
return new int[] { 2, 3 }.Contains(secondStatus ?? 1);
}
public SecondAllotResponse GetSecondSavedData(int userId, int secondId, int employeeSource) public SecondAllotResponse GetSecondSavedData(int userId, int secondId, int employeeSource)
{ {
var second = agsecondallotRepository.GetEntity(t => t.Id == secondId); var second = agsecondallotRepository.GetEntity(t => t.Id == secondId);
...@@ -23,6 +28,9 @@ public SecondAllotResponse GetSecondSavedData(int userId, int secondId, int empl ...@@ -23,6 +28,9 @@ public SecondAllotResponse GetSecondSavedData(int userId, int secondId, int empl
var allot = perallotRepository.GetEntity(t => t.ID == second.AllotId); var allot = perallotRepository.GetEntity(t => t.ID == second.AllotId);
if (allot == null) throw new PerformanceException("绩效记录不存在!"); if (allot == null) throw new PerformanceException("绩效记录不存在!");
if (!IsAudit(second.Status))
AddWorkTypeDefaultHeadValue(allot.HospitalId, second);
var detail = new Detail() var detail = new Detail()
{ {
TempId = GetUsingTempId(allot.HospitalId, second), TempId = GetUsingTempId(allot.HospitalId, second),
...@@ -99,7 +107,7 @@ private JArray GetBodyItemsByEmployeeSource(int userId, int employeeSource, ag_s ...@@ -99,7 +107,7 @@ private JArray GetBodyItemsByEmployeeSource(int userId, int employeeSource, ag_s
} }
SupplementOtherPerfor(second, bodysources, employeeList); SupplementOtherPerfor(second, bodysources, employeeList);
return GetBodyResult(allot.HospitalId, second, bodysources); return IsAudit(second.Status) ? GetBodyResultAfterAudit(allot.HospitalId, second, bodysources) : GetBodyResult(allot.HospitalId, second, bodysources);
} }
/// <summary> /// <summary>
...@@ -249,7 +257,7 @@ private JArray GetBodyResult(int hospitalId, ag_secondallot second, List<ag_body ...@@ -249,7 +257,7 @@ private JArray GetBodyResult(int hospitalId, ag_secondallot second, List<ag_body
?.OrderBy(t => t.WorkTypeId).ThenBy(t => t.Sort).ToList(); ?.OrderBy(t => t.WorkTypeId).ThenBy(t => t.Sort).ToList();
if (workloads != null && workloads.Any()) if (workloads != null && workloads.Any())
{ {
foreach (var item in bodysources.OrderBy(t => t.RowNumber).ThenBy(t => t.Id)) foreach (var item in bodysources.OrderBy(t => t.Id))
{ {
JObject jObj = JObject.Parse(JsonConvert.SerializeObject(item)); //使用jsonHelper会自动隐藏空值的项 JObject jObj = JObject.Parse(JsonConvert.SerializeObject(item)); //使用jsonHelper会自动隐藏空值的项
foreach (var workitem in workloads) foreach (var workitem in workloads)
...@@ -263,6 +271,39 @@ private JArray GetBodyResult(int hospitalId, ag_secondallot second, List<ag_body ...@@ -263,6 +271,39 @@ private JArray GetBodyResult(int hospitalId, ag_secondallot second, List<ag_body
return jArray; return jArray;
} }
/// <summary>
/// 获取审核通过后body的结果集
/// </summary>
/// <param name="hospitalId"></param>
/// <param name="second"></param>
/// <param name="bodysources"></param>
/// <returns></returns>
private JArray GetBodyResultAfterAudit(int hospitalId, ag_secondallot second, List<ag_bodysource> bodysources)
{
JArray jArray = new JArray();
if (bodysources == null || !bodysources.Any())
return jArray;
var bodyDynamic = agworkloadsourceRepository.GetEntities(t => bodysources.Select(w => w.Id).Contains(t.BodyId));
foreach (var item in bodysources.OrderBy(t => t.Id))
{
JObject jObj = JObject.Parse(JsonConvert.SerializeObject(item)); //使用jsonHelper会自动隐藏空值的项
if (bodyDynamic != null && bodyDynamic.Any(t => t.BodyId == item.Id))
{
foreach (var col in bodyDynamic.Where(t => t.BodyId == item.Id))
{
jObj.Add(new JProperty(col.ItemId, col.Value));
}
}
jArray.Add(jObj);
}
return jArray;
}
/// <summary> /// <summary>
/// 获取当前使用的模板 /// 获取当前使用的模板
/// </summary> /// </summary>
...@@ -275,7 +316,7 @@ private int GetUsingTempId(int hospitalId, ag_secondallot second) ...@@ -275,7 +316,7 @@ private int GetUsingTempId(int hospitalId, ag_secondallot second)
var usedTemp = agusetempRepository.GetEntity(t => t.HospitalId == hospitalId && t.Department == second.Department && t.UnitType == second.UnitType); var usedTemp = agusetempRepository.GetEntity(t => t.HospitalId == hospitalId && t.Department == second.Department && t.UnitType == second.UnitType);
if (usedTemp == null) return usingTempId; if (usedTemp == null) return usingTempId;
if (new int[] { 2, 3 }.Contains(second.Status ?? 1)) if (IsAudit(second.Status))
usingTempId = (second.UseTempId ?? 0) == 0 ? (int)Temp.other : second.UseTempId.Value; usingTempId = (second.UseTempId ?? 0) == 0 ? (int)Temp.other : second.UseTempId.Value;
return usingTempId; return usingTempId;
} }
...@@ -363,10 +404,13 @@ public dynamic GetWorkloadDict(int secondId) ...@@ -363,10 +404,13 @@ public dynamic GetWorkloadDict(int secondId)
var second = agsecondallotRepository.GetEntity(t => t.Id == secondId); var second = agsecondallotRepository.GetEntity(t => t.Id == secondId);
if (second == null) throw new PerformanceException("参数SecondId无效!"); if (second == null) throw new PerformanceException("参数SecondId无效!");
if (IsAudit(second.Status)) return GetWorkloadDictAfterAudit(secondId);
var allot = perallotRepository.GetEntity(t => t.ID == second.AllotId); var allot = perallotRepository.GetEntity(t => t.ID == second.AllotId);
if (allot == null) throw new PerformanceException("绩效记录不存在!"); if (allot == null) throw new PerformanceException("绩效记录不存在!");
var workloads = agworkloadRepository.GetEntities(t => t.HospitalId == allot.HospitalId && t.Department == second.Department && t.UnitType == second.UnitType) ?? new List<ag_workload>(); var workloads = agworkloadRepository.GetEntities(t => t.HospitalId == allot.HospitalId && t.Department == second.Department && t.UnitType == second.UnitType)
?? new List<ag_workload>();
return workloads.OrderBy(t => t.WorkTypeId).ThenBy(t => t.Sort).Select(t => new return workloads.OrderBy(t => t.WorkTypeId).ThenBy(t => t.Sort).Select(t => new
{ {
Title = t.ItemId, Title = t.ItemId,
...@@ -375,6 +419,22 @@ public dynamic GetWorkloadDict(int secondId) ...@@ -375,6 +419,22 @@ public dynamic GetWorkloadDict(int secondId)
}); });
} }
private dynamic GetWorkloadDictAfterAudit(int secondId)
{
var bodysources = agbodysourceRepository.GetEntities(t => t.SecondId == secondId);
var workloadsources = agworkloadsourceRepository.GetEntities(t => bodysources.Select(w => w.Id).Contains(t.BodyId));
var dict = workloadsources.GroupBy(t => new { t.ItemId, t.ItemName, t.FactorValue }).Select(t => new
{
Title = t.Key.ItemId,
Value = t.Key.ItemName,
Factor = t.Key.FactorValue
});
return dict;
}
#endregion #endregion
#region 保存数据 #region 保存数据
...@@ -382,11 +442,17 @@ public void SaveSecondAllotData(int secondId, dynamic saveData) ...@@ -382,11 +442,17 @@ public void SaveSecondAllotData(int secondId, dynamic saveData)
{ {
try try
{ {
var second = agsecondallotRepository.GetEntity(t => t.Id == secondId);
if (second == null) throw new PerformanceException("参数SecondId无效!");
var allot = perallotRepository.GetEntity(t => t.ID == second.AllotId);
if (allot == null) throw new PerformanceException("绩效记录不存在!");
var head = saveData["head"]; var head = saveData["head"];
SaveSecondAllotHeadData(secondId, JsonHelper.Serialize(head)); SaveSecondAllotHeadData(secondId, JsonHelper.Serialize(head));
var body = saveData["body"]; var body = saveData["body"];
SaveSecondAllotBodyData(secondId, body); SaveSecondAllotBodyData(allot.HospitalId, second, body);
} }
catch (Exception ex) catch (Exception ex)
{ {
...@@ -406,9 +472,9 @@ private void SaveSecondAllotHeadData(int secondId, string json) ...@@ -406,9 +472,9 @@ private void SaveSecondAllotHeadData(int secondId, string json)
ag_headsource headsource = JsonHelper.Deserialize<ag_headsource>(json); ag_headsource headsource = JsonHelper.Deserialize<ag_headsource>(json);
if (headsource == null) return; if (headsource == null) return;
headsource.SecondId = secondId;
if (headsource.Id == 0) if (headsource.Id == 0)
{ {
headsource.SecondId = secondId;
agheadsourceRepository.Add(headsource); agheadsourceRepository.Add(headsource);
} }
else else
...@@ -441,12 +507,13 @@ private void SaveSecondAllotHeadData(int secondId, string json) ...@@ -441,12 +507,13 @@ private void SaveSecondAllotHeadData(int secondId, string json)
/// <summary> /// <summary>
/// 保存Body相关数据 /// 保存Body相关数据
/// </summary> /// </summary>
/// <param name="secondId"></param> /// <param name="hospitalId"></param>
/// <param name="second"></param>
/// <param name="body"></param> /// <param name="body"></param>
private void SaveSecondAllotBodyData(int secondId, dynamic body) private void SaveSecondAllotBodyData(int hospitalId, ag_secondallot second, dynamic body)
{ {
// 允许空行数据提交,删除数据库存数数据 // 允许空行数据提交,删除数据库存数数据
var bodyEntities = agbodysourceRepository.GetEntities(t => t.SecondId == secondId); var bodyEntities = agbodysourceRepository.GetEntities(t => t.SecondId == second.Id);
if (bodyEntities != null && bodyEntities.Any()) if (bodyEntities != null && bodyEntities.Any())
{ {
var workloadEntities = agworkloadsourceRepository.GetEntities(t => bodyEntities.Select(w => w.Id).Contains(t.BodyId)); var workloadEntities = agworkloadsourceRepository.GetEntities(t => bodyEntities.Select(w => w.Id).Contains(t.BodyId));
...@@ -456,33 +523,40 @@ private void SaveSecondAllotBodyData(int secondId, dynamic body) ...@@ -456,33 +523,40 @@ private void SaveSecondAllotBodyData(int secondId, dynamic body)
agbodysourceRepository.RemoveRange(bodyEntities.ToArray()); agbodysourceRepository.RemoveRange(bodyEntities.ToArray());
} }
if (body == null || !body.Any()) return; if (body == null || !((IEnumerable<dynamic>)body).Any()) return;
var workloads = agworkloadRepository.GetEntities(t => t.HospitalId == hospitalId && t.Department == second.Department && t.UnitType == second.UnitType)?.ToList();
if (workloads == null || !workloads.Any()) return;
string[] prefix = new string[] { "WorkloadScore_", "AssessmentScore_", "WorkPerformance_", $"{AgWorkloadType.SingleAwards}_", $"{AgWorkloadType.Workload}_" }; string[] prefix = new string[] { "WorkloadScore_", "AssessmentScore_", "WorkPerformance_", $"{AgWorkloadType.SingleAwards}_", $"{AgWorkloadType.Workload}_" };
List<ag_workload_source> workloadSources = new List<ag_workload_source>(); List<ag_workload_source> workloadSources = new List<ag_workload_source>();
foreach (var rowitem in body) foreach (var rowitem in body)
{ {
ag_bodysource bodySource = JsonHelper.Deserialize<ag_bodysource>(JsonHelper.Serialize(rowitem)); ag_bodysource bodySource = JsonHelper.Deserialize<ag_bodysource>(JsonHelper.Serialize(rowitem));
bodySource.SecondId = second.Id;
var result = agbodysourceRepository.Add(bodySource); var result = agbodysourceRepository.Add(bodySource);
if (!result) continue; if (!result) continue;
Dictionary<string, object> dict = JsonHelper.Deserialize<Dictionary<string, object>>(rowitem); Dictionary<string, object> dict = JsonHelper.Deserialize<Dictionary<string, object>>(JsonHelper.Serialize(rowitem));
var keys = dict.Keys.Where(t => t.StartsWith(prefix[0]) || t.StartsWith(prefix[1]) || t.StartsWith(prefix[2]) || t.StartsWith(prefix[3]) || t.StartsWith(prefix[4])); var keys = dict.Keys.Where(t => t.StartsWith(prefix[0]) || t.StartsWith(prefix[1]) || t.StartsWith(prefix[2]) || t.StartsWith(prefix[3]) || t.StartsWith(prefix[4]));
if (keys == null || !keys.Any()) continue; if (keys == null || !keys.Any()) continue;
foreach (var key in keys) foreach (var key in keys)
{ {
string[] fields = key.Split('_'); var workload = workloads.FirstOrDefault(t => t.ItemId == key);
if (fields.Length != 3) continue; if (workload == null) continue;
var workloadId = ConvertHelper.To<int>(fields[3]);
workloadSources.Add(new ag_workload_source workloadSources.Add(new ag_workload_source
{ {
WorkloadId = workloadId, WorkloadId = workload.Id,
BodyId = bodySource.Id, BodyId = bodySource.Id,
ItemId = workload.ItemId,
ItemName = workload.ItemName,
FactorValue = workload.FactorValue,
Sort = workload.Sort,
Value = ConvertHelper.To<decimal>(dict[key]) Value = ConvertHelper.To<decimal>(dict[key])
}); ; });
} }
} }
if (workloadSources != null && workloadSources.Any()) if (workloadSources != null && workloadSources.Any())
......
...@@ -1105,10 +1105,12 @@ private void AddWorkTypeDefaultValues(ag_workload_type type) ...@@ -1105,10 +1105,12 @@ private void AddWorkTypeDefaultValues(ag_workload_type type)
{ {
foreach (var item in defaultValues) foreach (var item in defaultValues)
{ {
if (!workItems.Any(t => t.ItemId.StartsWith(item.Item2))) if (!workItems.Any(t => t.ItemId == $"{item.Item2}_{type.Id}"))
addItems.Add(item); addItems.Add(item);
} }
} }
else
addItems = defaultValues;
if (addItems == null || !addItems.Any()) return; if (addItems == null || !addItems.Any()) return;
...@@ -1120,7 +1122,8 @@ private void AddWorkTypeDefaultValues(ag_workload_type type) ...@@ -1120,7 +1122,8 @@ private void AddWorkTypeDefaultValues(ag_workload_type type)
ItemId = $"{t.Item2}_{type.Id}", ItemId = $"{t.Item2}_{type.Id}",
ItemName = t.Item1, ItemName = t.Item1,
FactorValue = null, FactorValue = null,
Sort = 100 + t.Item3 Sort = 100 + t.Item3,
WorkTypeId = type.Id
}); });
agworkloadRepository.AddRange(insertData.ToArray()); agworkloadRepository.AddRange(insertData.ToArray());
} }
...@@ -1133,10 +1136,7 @@ private void AddWorkTypeDefaultValues(ag_workload_type type) ...@@ -1133,10 +1136,7 @@ private void AddWorkTypeDefaultValues(ag_workload_type type)
private void AddWorkTypeDefaultHeadValue(int hospitalId, ag_workload_type type) private void AddWorkTypeDefaultHeadValue(int hospitalId, ag_workload_type type)
{ {
List<ag_worktype_source> insertData = new List<ag_worktype_source>(); List<ag_worktype_source> insertData = new List<ag_worktype_source>();
var allots = perallotRepository.GetEntities(t => t.HospitalId == hospitalId); var seconds = GetNotAuditSeconds(hospitalId, type);
if (allots == null || !allots.Any()) return;
var seconds = agsecondallotRepository.GetEntities(t => allots.Select(w => w.ID).Contains(t.AllotId.Value) && t.Department == type.Department && t.UnitType == type.UnitType);
if (seconds == null || !seconds.Any()) if (seconds == null || !seconds.Any())
return; return;
...@@ -1183,6 +1183,70 @@ private void AddWorkTypeDefaultHeadValue(int hospitalId, ag_workload_type type) ...@@ -1183,6 +1183,70 @@ private void AddWorkTypeDefaultHeadValue(int hospitalId, ag_workload_type type)
} }
/// <summary> /// <summary>
/// 添加工作量类型默认配置 - 顶部数据中的占比、金额
/// </summary>
/// <param name="hospitalId"></param>
/// <param name="second"></param>
private void AddWorkTypeDefaultHeadValue(int hospitalId, ag_secondallot second)
{
/**
*
* 二次绩效提交时,跳过该绩效新增工作量类型
* 防止在二次绩效审核期间新增工作量类型,进行数据补充
*
*/
if (second == null || IsAudit(second.Status)) return;
var worktypeSources = agworktypesourceRepository.GetEntities(t => t.SecondId == second.Id);
var worktypes = agworkloadtypeRepository.GetEntities(t => t.HospitalId == hospitalId && t.Department == second.Department && t.UnitType == second.UnitType);
if (worktypes == null || !worktypes.Any())
{
if (worktypeSources != null && worktypeSources.Any())
agworktypesourceRepository.RemoveRange(worktypeSources.ToArray());
return;
}
List<ag_worktype_source> insertData = new List<ag_worktype_source>(), updateData = new List<ag_worktype_source>();
foreach (var type in worktypes)
{
var sources = worktypeSources.Where(t => t.WorkTypeId == type.Id)?.ToList();
if (sources != null && sources.Any())
{
sources.ForEach(t => t.FieldName = type.TypeName + t.FieldName.Substring(t.FieldName.Length - 2));
updateData.AddRange(sources);
}
else
{
insertData.Add(new ag_worktype_source
{
WorkTypeId = type.Id,
SecondId = second.Id,
FieldId = $"{AgWorkloadType.Workload}_Ratio_{type.Id}",
FieldName = type.TypeName.EndsWith("占比") ? type.TypeName : type.TypeName + "占比"
});
}
}
if (insertData != null && insertData.Any())
{
var amounts = insertData.Select(t => new ag_worktype_source
{
WorkTypeId = t.Id,
SecondId = second.Id,
FieldId = $"{AgWorkloadType.Workload}_Amount_{t.Id}",
FieldName = t.FieldName.Substring(0, t.FieldName.Length - 2) + "金额"
}).ToList();
insertData.AddRange(amounts);
agworktypesourceRepository.AddRange(insertData.OrderBy(t => t.WorkTypeId).ThenBy(t => t.FieldName).ToArray());
}
if (updateData != null && updateData.Any())
{
agworktypesourceRepository.UpdateRange(updateData.ToArray());
}
}
/// <summary>
/// 检查默认工作量项是否已添加,添加默认的工作量得分、考核得分、工作量绩效工资 /// 检查默认工作量项是否已添加,添加默认的工作量得分、考核得分、工作量绩效工资
/// </summary> /// </summary>
/// <param name="hospitalId"></param> /// <param name="hospitalId"></param>
...@@ -1201,6 +1265,8 @@ private void CheckDefaultWorkload(int hospitalId, string department, string unit ...@@ -1201,6 +1265,8 @@ private void CheckDefaultWorkload(int hospitalId, string department, string unit
addItems.Add(item); addItems.Add(item);
} }
} }
else
addItems = defaultValues;
if (addItems == null || !addItems.Any()) return; if (addItems == null || !addItems.Any()) return;
...@@ -1212,7 +1278,8 @@ private void CheckDefaultWorkload(int hospitalId, string department, string unit ...@@ -1212,7 +1278,8 @@ private void CheckDefaultWorkload(int hospitalId, string department, string unit
ItemId = t.Item2 + "_Default", ItemId = t.Item2 + "_Default",
ItemName = t.Item1, ItemName = t.Item1,
FactorValue = null, FactorValue = null,
Sort = 100 + t.Item3 Sort = 100 + t.Item3,
WorkTypeId = (int)AgWorkloadType.Workload
}); });
agworkloadRepository.AddRange(insertData.ToArray()); agworkloadRepository.AddRange(insertData.ToArray());
} }
...@@ -1237,9 +1304,15 @@ public bool DeleteWorkType(WorkloadRequest request) ...@@ -1237,9 +1304,15 @@ public bool DeleteWorkType(WorkloadRequest request)
var items = agworkloadRepository.GetEntities(t => t.WorkTypeId == request.Id); var items = agworkloadRepository.GetEntities(t => t.WorkTypeId == request.Id);
if (items != null && items.Any()) if (items != null && items.Any())
agworkloadRepository.RemoveRange(items.ToArray()); agworkloadRepository.RemoveRange(items.ToArray());
var sources = agworktypesourceRepository.GetEntities(t => t.WorkTypeId == request.Id);
var seconds = GetNotAuditSeconds(entity.HospitalId, entity);
if (seconds != null && seconds.Any())
{
// 删除未提交驳回的二次绩效的数据
var sources = agworktypesourceRepository.GetEntities(t => t.WorkTypeId == request.Id && seconds.Select(w => w.Id).Contains(t.SecondId));
if (sources != null && sources.Any()) if (sources != null && sources.Any())
agworktypesourceRepository.RemoveRange(sources.ToArray()); agworktypesourceRepository.RemoveRange(sources.ToArray());
}
return agworkloadtypeRepository.Remove(entity); return agworkloadtypeRepository.Remove(entity);
} }
...@@ -1276,7 +1349,7 @@ public bool WorkloadAdd(WorkloadRequest request) ...@@ -1276,7 +1349,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.WorkTypeId, WorkTypeId = request.IsSingleAwards ? (int)AgWorkloadType.SingleAwards : request.WorkTypeId
}; };
var result = agworkloadRepository.Add(workload); var result = agworkloadRepository.Add(workload);
if (result) if (result)
...@@ -1307,7 +1380,7 @@ public bool WorkloadUpdate(WorkloadRequest request) ...@@ -1307,7 +1380,7 @@ public bool WorkloadUpdate(WorkloadRequest request)
workload.ItemName = request.ItemName; workload.ItemName = request.ItemName;
workload.Sort = request.Sort; workload.Sort = request.Sort;
workload.ItemId = getWorkloadItemId.Invoke(request.IsSingleAwards, request.WorkTypeId, workload.Id); ; workload.ItemId = getWorkloadItemId.Invoke(request.IsSingleAwards, request.WorkTypeId, workload.Id); ;
workload.WorkTypeId = request.WorkTypeId; workload.WorkTypeId = request.IsSingleAwards ? (int)AgWorkloadType.SingleAwards : request.WorkTypeId;
return agworkloadRepository.Update(workload); return agworkloadRepository.Update(workload);
} }
...@@ -1332,6 +1405,21 @@ public bool WorkloadUpdate(WorkloadRequest request) ...@@ -1332,6 +1405,21 @@ public bool WorkloadUpdate(WorkloadRequest request)
}; };
/// <summary> /// <summary>
/// 获取等待提交或驳回的二次绩效(同一医院同一科室)
/// </summary>
private List<ag_secondallot> GetNotAuditSeconds(int hospitalId, ag_workload_type type)
{
List<ag_secondallot> seconds = new List<ag_secondallot>();
var allots = perallotRepository.GetEntities(t => t.HospitalId == hospitalId);
if (allots == null || !allots.Any()) return seconds;
/**
* 添加数据时注意避免给已经提交过的数据添加,否则会造成提交时的数据和显示数据不一致
*/
return agsecondallotRepository.GetEntities(t => allots.Select(w => w.ID).Contains(t.AllotId.Value) && t.Department == type.Department && t.UnitType == type.UnitType && IsAudit(t.Status)) ?? seconds;
}
/// <summary>
/// 删除工作量绩效配置 /// 删除工作量绩效配置
/// </summary> /// </summary>
/// <param name="id"></param> /// <param name="id"></param>
......
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