Commit c0dd265b by wyc

考核管理 继承上月,字段修改

parent 3e1e16a1
......@@ -902,6 +902,7 @@ public ApiResponse CopyDropDown()
new CopyDrop{Label="支出费用类别",Value="drugTypeDisburses"},
new CopyDrop{Label="费用类别系数",Value="drugTypeFactors"},
new CopyDrop{Label="考勤类型",Value="attendanceType"},
new CopyDrop{Label="绩效考核",Value="assessType"},
//new CopyDrop{Label="科室类型",Value="deptTypes"},
new CopyDrop{Label="二次绩效配置",Value="agains"},
};
......
......@@ -10241,9 +10241,14 @@
状态
</summary>
</member>
<member name="P:Performance.EntityModels.Other.view_assess_result.AssessScore">
<summary>
分值标准
</summary>
</member>
<member name="P:Performance.EntityModels.Other.view_assess_result.Score">
<summary>
分值
分值
</summary>
</member>
<member name="P:Performance.EntityModels.Other.view_assess_result.UnitCode">
......
......@@ -119,7 +119,7 @@ public class AssessSchemeResultListResponse
/// <summary>
/// 合计
/// </summary>
public int? TotalAssessScore { get; set; }
public decimal? TotalAssessScore { get; set; }
}
public class AssessSchemeDictionaryResults
{
......@@ -236,7 +236,7 @@ public class AssessSchemeEnterDetaiListResponse
/// <summary>
/// 考核分值
/// </summary>
public int? AssessScore { get; set; }
public decimal AssessScore { get; set; }
/// <summary>
/// 考核扣分
/// </summary>
......
......@@ -30,7 +30,11 @@ public class view_assess_result
/// </summary>
public int State { get; set; }
/// <summary>
/// 分值
/// 分值标准
/// </summary>
public decimal? AssessScore { get; set; }
/// <summary>
/// 扣分值
/// </summary>
public decimal? Score { get; set; }
/// <summary>
......
......@@ -28,12 +28,12 @@ public class AssessNewService : IAutoInjection
private readonly ILogger<AssessNewService> logger;
private readonly IWebHostEnvironment evn;
private readonly PerforUserRepository _userRepository;
private readonly PerforPerAssessCategoryRepository perforPerAssessCategoryRepository;
private readonly PerforCofaccountingRepository cofaccountingRepository;
private readonly PerforPerallotRepository perforPerallotRepository;
private readonly PerforPerAssessCategoryRepository perforPerAssessCategoryRepository;
private readonly PerforPerAssessSchemeRepository perforPerAssessSchemeRepository;
private readonly PerforPerAssessSchemeItemsRepository perforPerAssessSchemeItemsRepository;
private readonly PerforPerAssessSchemeTargetRepository perforPerAssessSchemeTargetRepository;
private readonly PerforCofaccountingRepository cofaccountingRepository;
private readonly PerforPerAssessIssueSchemeRepository perforPerAssessIssueSchemeRepository;
public AssessNewService(
......@@ -697,7 +697,7 @@ public ApiResponse SchemeItemsUpload(int schemeId, int allotId, IFormCollection
eAssessScore = String.IsNullOrEmpty(eAssessScore) ? "0" : eAssessScore;
error.AddIf(string.IsNullOrEmpty(eItemName1), item.index, "", eItemName1, eItemName2, eAssessScore, eAssessNorm, eAccountingUnit, "一级指标名称空值无效,请检查后重试!");
error.AddIf(string.IsNullOrEmpty(eItemName2), item.index, "", eItemName1, eItemName2, eAssessScore, eAssessNorm, eAccountingUnit, "二级指标名称空值无效,请检查后重试!");
error.AddIf(!int.TryParse(eAssessScore, out int eAScore), item.index, "", eItemName1, eItemName2, eAssessScore, eAssessNorm, eAccountingUnit, "考核分值填写无效,请检查后重试!");
error.AddIf(!decimal.TryParse(eAssessScore, out decimal eAScore), item.index, "", eItemName1, eItemName2, eAssessScore, eAssessNorm, eAccountingUnit, "考核分值填写无效,请检查后重试!");
error.AddIf(eAScore == 0, item.index, "", eItemName1, eItemName2, eAssessScore, eAssessNorm, eAccountingUnit, "考核分值不能为0,请检查后重试!");
error.AddIf(string.IsNullOrEmpty(eAssessNorm), item.index, "", eItemName1, eItemName2, eAssessScore, eAssessNorm, eAccountingUnit, "考核标准空值无效,请检查后重试!");
error.AddIf(string.IsNullOrEmpty(eUnitType), item.index, "", eItemName1, eItemName2, eAssessScore, eAssessNorm, eAccountingUnit, "考核单元组别空值无效,请检查后重试!");
......@@ -894,9 +894,11 @@ public PagedList<AssessSchemeResultListResponse> SchemeResultList(QuerySchemeRes
TargetUnitType = item.TargetUnitType,
TargetAccountingUnit = item.TargetAccountingUnit,
ItemName2 = item.ItemName2,
Score = item.Score,
Score = (item.Score==null?0: item.Score) + item.AssessScore,
};
}).ToList();
var columns = data.Select(item => item.ItemName2).Distinct().ToList();
var results = data.GroupBy(item => new { item.TargetUnitType, item.TargetAccountingUnit })
.Select(t =>
......@@ -906,25 +908,25 @@ public PagedList<AssessSchemeResultListResponse> SchemeResultList(QuerySchemeRes
{ "TargetUnitType" , t.Key.TargetUnitType },
{ "TargetAccountingUnit" , t.Key.TargetAccountingUnit },
};
var asb = new List<AssessSchemeDictionaryResults>();
var newResultss = new List<AssessSchemeDictionaryResults>();
foreach (var column in columns)
{
var score = t.Where(w => w.ItemName2 == column).Sum(w => w.Score);
var score = t.FirstOrDefault(w => w.ItemName2 == column).Score;
dict.Add(column, score);
var a = new AssessSchemeDictionaryResults()
var newResults = new AssessSchemeDictionaryResults()
{
Title = column,
Value = score
};
asb.Add(a);
newResultss.Add(newResults);
}
var totalAssessScore = dict.Where(w => columns.Contains(w.Key)).Sum(w => (int)w.Value);
var totalAssessScore = dict.Where(w => columns.Contains(w.Key)).Sum(w => (decimal?)w.Value);
dict.AddOrUpdate("TotalAssessScore", totalAssessScore);
return new AssessSchemeResultListResponse()
{
TargetUnitType = t.Key.TargetUnitType,
TargetAccountingUnit = t.Key.TargetAccountingUnit,
DictionaryResults = asb,
DictionaryResults = newResultss,
TotalAssessScore = totalAssessScore
};
}).ToList();
......@@ -948,7 +950,7 @@ public PagedList<AssessSchemeEnterDetaiListResponse> SchemeEnterDetailList(Query
if (!string.IsNullOrEmpty(query.ItemName2))
issueSchemesQuery = issueSchemesQuery.Where(w => w.ItemName2 == query.ItemName2);
if ((int)query.State == (int)Assess.AssessState.审核通过)
issueSchemesQuery = issueSchemesQuery.Where(w => w.State == (int)query.State);
issueSchemesQuery = issueSchemesQuery.Where(w => w.State == (int)query.State);
var result = issueSchemesQuery.ToList();
var stateOrders = new int[] { (int)Assess.AssessState.待审核, (int)Assess.AssessState.驳回, (int)Assess.AssessState.审核通过, (int)Assess.AssessState.未提交 };
......@@ -1058,10 +1060,10 @@ public ApiResponse SchemeEnterUpload(int itemId, IFormCollection form, int useri
var eScoreRemark = item.value.GetOrAdd("扣分原因", "")?.ToString() ?? "";
eScore = String.IsNullOrEmpty(eScore) ? "0" : eScore;
eAssessScore = String.IsNullOrEmpty(eAssessScore) ? "0" : eAssessScore;
int.TryParse(eAssessScore, out int eAScore);
decimal.TryParse(eAssessScore, out decimal eAScore);
error.AddIf(string.IsNullOrEmpty(eTargetAccountingUnit), item.index, eTargetAccountingUnit, eTargetUnitType, eItemName1, eItemName2, eAssessScore, eScore, eScoreRemark, "核算单元空值无效,请检查后重试!");
error.AddIf(string.IsNullOrEmpty(eTargetUnitType), item.index, eTargetAccountingUnit, eTargetUnitType, eItemName1, eItemName2, eAssessScore, eScore, eScoreRemark, "核算单元空值无效,请检查后重试!");
error.AddIf(!int.TryParse(eScore, out int escore), item.index, eTargetAccountingUnit, eTargetUnitType, eItemName1, eItemName2, eAssessScore, eScore, eScoreRemark, "考核扣分值无效,请检查后重试!");
error.AddIf(!decimal.TryParse(eScore, out decimal escore), item.index, eTargetAccountingUnit, eTargetUnitType, eItemName1, eItemName2, eAssessScore, eScore, eScoreRemark, "考核扣分值无效,请检查后重试!");
error.AddIf(escore > eAScore, item.index, eTargetAccountingUnit, eTargetUnitType, eItemName1, eItemName2, eAssessScore, eScore, eScoreRemark, "考核扣分大于考核分值,请检查后重试!");
var issueData = issueDatas.FirstOrDefault(w => w.ItemId == itemId && w.TargetAccountingUnit == eTargetAccountingUnit && w.TargetUnitType == eTargetUnitType);
......
......@@ -741,7 +741,7 @@ public void Copy(per_allot allot)
NewCopy(new CopyRequest()
{
AllotId = allot.ID,
Type = new[] { "personnels", "workItems", "drugTypeDisburses", "drugTypeFactors", "deptTypes", "agains", "accountings", "department", "attendanceType" }
Type = new[] { "personnels", "workItems", "drugTypeDisburses", "drugTypeFactors", "deptTypes", "agains", "accountings", "department", "attendanceType", "assessType" }
});
}
......@@ -769,6 +769,7 @@ public void NewCopy(CopyRequest request)
{ "agains", (allot, prevAllotId) =>_copyService.Copy_Agains(allot, prevAllotId, delHistotyData:true) },
{ "accountings", (allot, prevAllotId) =>_copyService.Copy_Accountings(allot, prevAllotId, delHistotyData:true) },
{ "attendanceType", (allot, prevAllotId) =>_copyService.Copy_AttendanceType(allot, prevAllotId, delHistotyData:true) },
{ "assessType", (allot, prevAllotId) =>_copyService.Copy_AssessType(allot, prevAllotId, delHistotyData:true) },
{ "department", (allot, prevAllotId) =>_copyService.Copy_DeptDic(allot, prevAllotId, delHistotyData:true) },
};
......
using Microsoft.Extensions.Logging;
using Performance.DtoModels;
using Performance.EntityModels;
using Performance.EntityModels.Entity;
using Performance.Repository;
......@@ -21,6 +22,11 @@ public class CopyService : IAutoInjection
private readonly PerforCofdrugtypeDisburseRepository _drugtypeDisburseRepository;
private readonly PerforCofdrugtypefactorRepository _cofdrugtypefactorRepository;
private readonly PerfoPperAttendanceTypeRepository _pperAttendanceTypeRepository;
private readonly PerforPerAssessCategoryRepository _perforPerAssessCategoryRepository;
private readonly PerforPerAssessSchemeRepository _perforPerAssessSchemeRepository;
private readonly PerforPerAssessSchemeItemsRepository _perforPerAssessSchemeItemsRepository;
private readonly PerforPerAssessSchemeTargetRepository _perforPerAssessSchemeTargetRepository;
private readonly PerforPerAssessIssueSchemeRepository _perforPerAssessIssueSchemeRepository;
public CopyService(
ILogger<ConfigService> logger,
......@@ -32,7 +38,13 @@ public class CopyService : IAutoInjection
PerforCofaccountingRepository cofaccountingRepository,
PerforCofdrugtypeDisburseRepository drugtypeDisburseRepository,
PerforCofdrugtypefactorRepository cofdrugtypefactorRepository,
PerfoPperAttendanceTypeRepository pperAttendanceTypeRepository)
PerfoPperAttendanceTypeRepository pperAttendanceTypeRepository,
PerforPerAssessCategoryRepository perforPerAssessCategoryRepository,
PerforPerAssessSchemeRepository perforPerAssessSchemeRepository,
PerforPerAssessSchemeItemsRepository perforPerAssessSchemeItemsRepository,
PerforPerAssessSchemeTargetRepository perforPerAssessSchemeTargetRepository,
PerforPerAssessIssueSchemeRepository perforPerAssessIssueSchemeRepository
)
{
_logger = logger;
_perdeptdicRepository = perdeptdicRepository;
......@@ -44,6 +56,11 @@ public class CopyService : IAutoInjection
_drugtypeDisburseRepository = drugtypeDisburseRepository;
_cofdrugtypefactorRepository = cofdrugtypefactorRepository;
_pperAttendanceTypeRepository = pperAttendanceTypeRepository;
_perforPerAssessCategoryRepository = perforPerAssessCategoryRepository;
_perforPerAssessSchemeRepository = perforPerAssessSchemeRepository;
_perforPerAssessSchemeItemsRepository = perforPerAssessSchemeItemsRepository;
_perforPerAssessSchemeTargetRepository = perforPerAssessSchemeTargetRepository;
_perforPerAssessIssueSchemeRepository = perforPerAssessIssueSchemeRepository;
}
......@@ -265,5 +282,172 @@ public void Copy_AttendanceType(per_allot allot, int prevAllotId, bool delHistot
}
}
public void Copy_AssessType(per_allot allot, int prevAllotId, bool delHistotyData = false)
{
var flag = delHistotyData;
_logger.LogInformation($"copy assessType");
var aCategory = _perforPerAssessCategoryRepository.GetEntities(t => t.AllotId == allot.ID);
if (delHistotyData && aCategory != null && aCategory.Any())
flag = _perforPerAssessCategoryRepository.RemoveRange(aCategory.ToArray());
var aScheme = _perforPerAssessSchemeRepository.GetEntities(t => t.AllotId == allot.ID);
if (delHistotyData && aScheme != null && aScheme.Any())
flag = _perforPerAssessSchemeRepository.RemoveRange(aScheme.ToArray());
var aSchemeItems = _perforPerAssessSchemeItemsRepository.GetEntities(t => t.AllotId == allot.ID);
if (delHistotyData && aSchemeItems != null && aSchemeItems.Any())
flag = _perforPerAssessSchemeItemsRepository.RemoveRange(aSchemeItems.ToArray());
var aSchemeTarget = _perforPerAssessSchemeTargetRepository.GetEntities(t => t.AllotId == allot.ID);
if (delHistotyData && aSchemeTarget != null && aSchemeTarget.Any())
flag = _perforPerAssessSchemeTargetRepository.RemoveRange(aSchemeTarget.ToArray());
var aIssueScheme = _perforPerAssessIssueSchemeRepository.GetEntities(t => t.AllotId == allot.ID);
if (delHistotyData && aIssueScheme != null && aIssueScheme.Any())
flag = _perforPerAssessIssueSchemeRepository.RemoveRange(aIssueScheme.ToArray());
var dateTimeNow = DateTime.Now;
if (flag || aCategory == null || !aCategory.Any())
{
aCategory = _perforPerAssessCategoryRepository.GetEntities(t => t.AllotId == prevAllotId) ?? _perforPerAssessCategoryRepository.GetEntities(t => t.AllotId == -1);
if (aCategory != null && aCategory.Any())
{
var newaCategorys = aCategory.Select(t => new per_assess_category
{
Id = 0,
AllotId = allot.ID,
AssessCode = t.AssessCode,
AssessName = t.AssessName,
CreateBy = t.CreateBy,
CreateTime = dateTimeNow,
UpdateBy = t.UpdateBy,
UpdateTime = dateTimeNow,
});
var aCategoryTemp = _perforPerAssessCategoryRepository.AddRange(newaCategorys.ToArray());
//if (!aCategoryTemp) throw new PerformanceException("考核分类未继承成功,请检查后在尝试!");
}
}
var aCategoryss = _perforPerAssessCategoryRepository.GetEntities(t => t.AllotId == allot.ID);
if (flag || aScheme == null || !aScheme.Any())
{
aScheme = _perforPerAssessSchemeRepository.GetEntities(t => t.AllotId == prevAllotId) ?? _perforPerAssessSchemeRepository.GetEntities(t => t.AllotId == -1);
if (aScheme != null && aScheme.Any())
{
var newaSchemes = aScheme.Select(t => new per_assess_scheme
{
Id = 0,
AllotId = allot.ID,
AssessId = aCategoryss.FirstOrDefault(w => w.AssessCode == aCategory.FirstOrDefault(s => s.Id == t.AssessId).AssessCode && w.AllotId == allot.ID).Id,
SchemeCode = t.SchemeCode,
SchemeName = t.SchemeName,
SchemeRemarks = t.SchemeRemarks,
CreateBy = t.CreateBy,
CreateTime = dateTimeNow,
UpdateBy = t.UpdateBy,
UpdateTime = dateTimeNow,
});
var aSchemeTemp = _perforPerAssessSchemeRepository.AddRange(newaSchemes.ToArray());
// if (!aSchemeTemp) throw new PerformanceException("考核方案未继承成功,请检查后在尝试!");
}
}
var aSchemes = _perforPerAssessSchemeRepository.GetEntities(t => t.AllotId == allot.ID);
if (flag || aSchemeItems == null || !aSchemeItems.Any())
{
aSchemeItems = _perforPerAssessSchemeItemsRepository.GetEntities(t => t.AllotId == prevAllotId) ?? _perforPerAssessSchemeItemsRepository.GetEntities(t => t.AllotId == -1);
if (aSchemeItems != null && aSchemeItems.Any())
{
var newaSchemeItems = aSchemeItems.Select(t => new per_assess_scheme_items
{
Id = 0,
AllotId = allot.ID,
AssessId = aCategoryss.FirstOrDefault(w => w.AssessCode == aCategory.FirstOrDefault(s => s.Id == t.AssessId).AssessCode && w.AllotId == allot.ID).Id,
SchemeId = aSchemes.FirstOrDefault(w => w.SchemeCode == aScheme.FirstOrDefault(s => s.Id == t.SchemeId).SchemeCode && w.AllotId == allot.ID).Id,
ItemCode = t.ItemCode,
ItemName1 = t.ItemName1,
ItemName2 = t.ItemName2,
UnitCode = t.UnitCode,
UnitType = t.UnitType,
AccountingUnit = t.AccountingUnit,
AssessNorm = t.AssessNorm,
AssessScore = t.AssessScore,
CreateBy = t.CreateBy,
CreateTime = dateTimeNow,
UpdateBy = t.UpdateBy,
UpdateTime = dateTimeNow,
});
var aSchemeItemsTemp = _perforPerAssessSchemeItemsRepository.AddRange(newaSchemeItems.ToArray());
// if (!aSchemeItemsTemp) throw new PerformanceException("考核方案指标未继承成功,请检查后在尝试!");
}
}
var aSchemeItemss = _perforPerAssessSchemeItemsRepository.GetEntities(t => t.AllotId == allot.ID);
if (flag || aSchemeTarget == null || !aSchemeTarget.Any())
{
aSchemeTarget = _perforPerAssessSchemeTargetRepository.GetEntities(t => t.AllotId == prevAllotId) ?? _perforPerAssessSchemeTargetRepository.GetEntities(t => t.AllotId == -1);
if (aSchemeTarget != null && aSchemeTarget.Any())
{
var newaSchemeTarget = aSchemeTarget.Select(t => new per_assess_scheme_target
{
Id = 0,
AllotId = allot.ID,
AssessId = aCategoryss.FirstOrDefault(w => w.AssessCode == aCategory.FirstOrDefault(s => s.Id == t.AssessId).AssessCode && w.AllotId == allot.ID).Id,
SchemeId = aSchemes.FirstOrDefault(w => w.SchemeCode == aScheme.FirstOrDefault(s => s.Id == t.SchemeId).SchemeCode && w.AllotId == allot.ID).Id,
UnitCode = t.UnitCode,
UnitType = t.UnitType,
AccountingUnit = t.AccountingUnit,
CreateBy = t.CreateBy,
CreateTime = dateTimeNow,
UpdateBy = t.UpdateBy,
UpdateTime = dateTimeNow,
});
var aSchemeTargetTemp = _perforPerAssessSchemeTargetRepository.AddRange(newaSchemeTarget.ToArray());
// if (!aSchemeTargetTemp) throw new PerformanceException("考核对象未继承成功,请检查后在尝试!");
}
}
if (flag || aIssueScheme == null || !aIssueScheme.Any())
{
aIssueScheme = _perforPerAssessIssueSchemeRepository.GetEntities(t => t.AllotId == prevAllotId) ?? _perforPerAssessIssueSchemeRepository.GetEntities(t => t.AllotId == -1);
if (aIssueScheme != null && aIssueScheme.Any())
{
var newaIssueSchemess = aIssueScheme.Select(t => new per_assess_issue_scheme
{
Id = 0,
AllotId = allot.ID,
AssessId = aCategoryss.FirstOrDefault(w => w.AssessCode == aCategory.FirstOrDefault(s => s.Id == t.AssessId).AssessCode && w.AllotId == allot.ID).Id,
AssessCode = t.AssessCode,
AssessName = t.AssessName,
SchemeId = aSchemes.FirstOrDefault(w => w.SchemeCode == aScheme.FirstOrDefault(s => s.Id == t.SchemeId).SchemeCode && w.AllotId == allot.ID).Id,
SchemeCode = t.SchemeCode,
SchemeName = t.SchemeName,
ItemId = aSchemeItemss.FirstOrDefault(w => w.ItemCode == aSchemeItems.FirstOrDefault(s => s.Id == t.ItemId).ItemCode && w.AllotId == allot.ID).Id,
ItemCode = t.ItemCode,
ItemName1 = t.ItemName1,
ItemName2 = t.ItemName2,
AssessNorm = t.AssessNorm,
AssessScore = t.AssessScore,
UnitCode = t.UnitCode,
UnitType = t.UnitType,
AccountingUnit = t.AccountingUnit,
State = (int)Assess.AssessState.未提交,
CreateBy = t.CreateBy,
CreateTime = dateTimeNow,
UpdateBy = t.UpdateBy,
UpdateTime = dateTimeNow,
Score = null,
ScoreRemark = null,
TargetUnitCode = t.TargetUnitCode,
TargetUnitType = t.TargetUnitType,
TargetAccountingUnit = t.TargetAccountingUnit,
SubmitBy = null,
SubmitTime = null,
AuditBy = null,
AuditTime = null,
AuditRemark = null,
});
var aIssueSchemeTemp = _perforPerAssessIssueSchemeRepository.AddRange(newaIssueSchemess.ToArray());
// if (!aSchemeItemsTemp) throw new PerformanceException("考核下发未继承成功,请检查后在尝试!");
}
}
}
}
}
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