Commit 0e4d060b by wyc

考核管理条件调整

parent ba828a21
......@@ -93,7 +93,7 @@ public ApiResponse<List<PerAssessmentStatisticsResponse>> CategoryIssueCheck([Fr
return _service.CategoryIssueCheck(request);
}
/// <summary>
/// 考核下发(把当前考核类别下所有方案下发)
/// 考核下发
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
......
......@@ -344,7 +344,7 @@
</member>
<member name="M:Performance.Api.Controllers.AssessNewController.CategoryIssueConfirm(Performance.DtoModels.Request.UpdateAssessCategoryRequest)">
<summary>
考核下发(把当前考核类别下所有方案下发)
考核下发
</summary>
<param name="request"></param>
<returns></returns>
......
......@@ -3089,6 +3089,11 @@
考核类型ID
</summary>
</member>
<member name="P:Performance.DtoModels.AssessSchemeDataResponse.AssessCode">
<summary>
考核类型编码
</summary>
</member>
<member name="P:Performance.DtoModels.AssessSchemeDataResponse.AssessName">
<summary>
考核类别名称
......@@ -3189,6 +3194,11 @@
考核类型ID
</summary>
</member>
<member name="P:Performance.DtoModels.AssessSchemeEnterListResponse.AssessCode">
<summary>
考核类型编码
</summary>
</member>
<member name="P:Performance.DtoModels.AssessSchemeEnterListResponse.AssessName">
<summary>
考核类型
......@@ -3199,6 +3209,11 @@
考核指标Id
</summary>
</member>
<member name="P:Performance.DtoModels.AssessSchemeEnterListResponse.ItemCode">
<summary>
考核指标编码
</summary>
</member>
<member name="P:Performance.DtoModels.AssessSchemeEnterListResponse.ItemName2">
<summary>
二级指标名称
......@@ -3244,6 +3259,11 @@
待审核数
</summary>
</member>
<member name="P:Performance.DtoModels.AssessSchemeEnterListResponse.AuditRemark">
<summary>
审核或驳回原因
</summary>
</member>
<member name="P:Performance.DtoModels.AssessSchemeEnterDetaiListResponse.TargetUnitType">
<summary>
考核目标核算组别
......
......@@ -23,7 +23,8 @@ public class QuerySchemeEnterDetailList
public class EditSchemeEnterAudit
{
public int AllotId { get; set; }
public int[] IssueId { get; set; }
public int IssueId { get; set; }
public int ItemId { get; set; }
/// <summary>
/// 操作类型 未提交 = 1,待审核 = 2,审核通过 = 3,驳回 = 4,
......
......@@ -17,6 +17,10 @@ public class AssessSchemeDataResponse
/// </summary>
public int AssessId { get; set; }
/// <summary>
/// 考核类型编码
/// </summary>
public string AssessCode { get; set; }
/// <summary>
/// 考核类别名称
/// </summary>
public string AssessName { get; set; }
......@@ -106,6 +110,10 @@ public class AssessSchemeEnterListResponse
/// </summary>
public int AssessId { get; set; }
/// <summary>
/// 考核类型编码
/// </summary>
public string AssessCode { get; set; }
/// <summary>
/// 考核类型
/// </summary>
public string AssessName { get; set; }
......@@ -114,6 +122,10 @@ public class AssessSchemeEnterListResponse
/// </summary>
public int? ItemId { get; set; }
/// <summary>
/// 考核指标编码
/// </summary>
public string ItemCode { get; set; }
/// <summary>
/// 二级指标名称
/// </summary>
public string ItemName2 { get; set; }
......@@ -150,6 +162,10 @@ public class AssessSchemeEnterListResponse
/// 待审核数
/// </summary>
public int AwaitCount { get; set; }
/// <summary>
/// 审核或驳回原因
/// </summary>
public string? AuditRemark { get; set; }
}
public class AssessSchemeEnterDetaiListResponse
{
......
......@@ -81,7 +81,7 @@ public ApiResponse CategoryAdd(AddAssessCategoryRequest request, int userid)
int codeMax = 0;
if (categoryData.Any())
int.TryParse(categoryData.Max(w => w.AssessCode.Substring(1)), out codeMax);
string assessCode = codeMax <= 999 ? $"A{(codeMax + 1):D3}" : $"A{codeMax + 1}";
string assessCode = codeMax <= 99 ? $"A{(codeMax + 1):D3}" : $"A{codeMax + 1}";
var dateTime = DateTime.Now;
var per_assess_category = new per_assess_category()
{
......@@ -143,6 +143,8 @@ public ApiResponse<List<PerAssessmentStatisticsResponse>> CategoryIssueCheck(Upd
issueDatas = issueDatas.Where(w => w.SchemeId == request.SchemeId).ToList();
issueSchemeDatas = issueSchemeDatas.Where(w => w.SchemeId == request.SchemeId).ToList();
}
if (issueDatas.Count() <= 0 || !issueDatas.Any())
throw new PerformanceException("未设置考核内容或未设置考核单元!");
var statisticdates = new List<PerAssessmentStatisticsResponse>();
Func<per_assess_issue_scheme, view_assess_issue, bool> func = (schemes, issues) =>
{
......@@ -235,7 +237,7 @@ public ApiResponse CategoryIssueConfirm(UpdateAssessCategoryRequest request, int
AssessNorm = item.AssessNorm,
UnitCode = item.UnitCode,
UnitType = item.UnitType,
Score = 0,
Score = null,
ScoreRemark = "",
AccountingUnit = item.AccountingUnit,
TargetUnitCode = item.TargetUnitCode,
......@@ -273,7 +275,7 @@ public ApiResponse CategoryIssueConfirm(UpdateAssessCategoryRequest request, int
data.AssessNorm = item.AssessNorm;
data.UnitCode = item.UnitCode;
data.UnitType = item.UnitType;
data.Score = 0;
data.Score = null;
data.ScoreRemark = "";
data.AccountingUnit = item.AccountingUnit;
data.TargetUnitCode = item.TargetUnitCode;
......@@ -313,6 +315,7 @@ public PagedList<AssessSchemeDataResponse> SchemeList(QuerySchemeList query)
var result = mapper.Map<List<AssessSchemeDataResponse>>(scheme);
foreach (var item in result)
{
item.AssessCode = category.FirstOrDefault(w => w.Id == item.AssessId).AssessCode;
item.AssessName = category.FirstOrDefault(w => w.Id == item.AssessId).AssessName;
}
result = result.OrderByDescending(w => w.UpdateTime).ToList();
......@@ -335,7 +338,7 @@ public ApiResponse SchemeAdd(AddAssessSchemeRequest request, int userid)
int codeMax = 0;
if (schemeData.Any())
int.TryParse(schemeData.Max(w => w.SchemeCode.Substring(1)), out codeMax);
string schemeCode = codeMax <= 999 ? $"A{(codeMax + 1):D3}" : $"A{codeMax + 1}";
string schemeCode = codeMax <= 101009 ? $"B{101010}" : $"B{codeMax + 1}";
var dateTime = DateTime.Now;
var per_assess_scheme = new per_assess_scheme()
{
......@@ -468,7 +471,7 @@ public ApiResponse<AddAssessSchemeItemsRequest> SchemeItemsAdd(AddAssessSchemeIt
int codeMax = 0;
if (categoryData.Any())
int.TryParse(categoryData.Max(w => w.ItemCode.Substring(1)), out codeMax);
string code = codeMax <= 999 ? $"A{(codeMax + 1):D3}" : $"A{codeMax + 1}";
string code = codeMax <= 1009 ? $"C{1010}" : $"C{codeMax + 1}";
var dateTime = DateTime.Now;
var data = mapper.Map<per_assess_scheme_items>(request);
data.AllotId = request.AllotId;
......@@ -651,6 +654,8 @@ public ApiResponse SchemeItemsUpload(int schemeId, int allotId, IFormCollection
}
var dt = Read(path);
var datas = ToListDictionary(dt);
if (datas.Count == 0 || !datas.Any())
throw new PerformanceException("未在文件中找到数据");
Tables error = new Tables("行", "指标编码", "一级指标名称", "二级指标名称", "考核分值", "考核标准", "核算组别", "考核负责部门", "原因");
var upload = new List<AssessSchemeItemsUploadResponse>();
foreach (var item in datas.Select((value, i) => new { value, index = $"第{i + 1}行" }))
......@@ -673,7 +678,7 @@ public ApiResponse SchemeItemsUpload(int schemeId, int allotId, IFormCollection
error.AddIf(eAScore == 0, item.index, eItemName1, eItemName2, eAssessScore, eAssessNorm, eAccountingUnit, "考核分值不能为0,请检查后重试!");
var cofaccountingdata = cofaccountingdatas.FirstOrDefault(w => w.AccountingUnit == eAccountingUnit && w.UnitType == eUnitType);
error.AddIf(cofaccountingdata == null, item.index, eItemName1, eItemName2, eAssessScore, eAssessNorm, eAccountingUnit, "未找到考核负责部门,请检查后重试!");
if (cofaccountingdata == null) continue;
var itemsData = itemsDatas.FirstOrDefault(w => w.ItemCode == eItemCode);
var data = new AssessSchemeItemsUploadResponse();
if (itemsData == null || itemsData?.Id < 0)
......@@ -708,7 +713,7 @@ public ApiResponse SchemeItemsUpload(int schemeId, int allotId, IFormCollection
upload.Add(data);
}
if (error.Any())
return new ApiResponse(ResponseType.Error, "操作被拒绝,详细请看更多信息", error);
return new ApiResponse(ResponseType.WarningTable, "操作被拒绝,详细请看更多信息", error);
saveUploadResult(upload, schemeId, allotId, userid);
return new ApiResponse(ResponseType.OK);
}
......@@ -716,9 +721,10 @@ public ApiResponse SchemeItemsUpload(int schemeId, int allotId, IFormCollection
public ApiResponse saveUploadResult(List<AssessSchemeItemsUploadResponse> upload, int schemeId, int allotId, int userid)
{
var categoryData = perforPerAssessSchemeRepository.GetEntity(t => t.Id == schemeId);
if (categoryData == null)
if (categoryData == null || categoryData.Id < 0)
throw new PerformanceException("方案有误,请刷新重试!");
var itemsDatas = perforPerAssessSchemeItemsRepository.GetEntities(w => w.AllotId == allotId);
var dataDelete = itemsDatas.Where(t => t.SchemeId == schemeId);
var dataAdds = upload.Where(w => w.OperationType == (int)Attendance.OperationType.新增).ToList();
int sort = 0;
dataAdds.ForEach(t =>
......@@ -727,12 +733,12 @@ public ApiResponse saveUploadResult(List<AssessSchemeItemsUploadResponse> upload
int codeMax = 0;
if (itemsDatas.Any())
int.TryParse(itemsDatas.Max(w => w.ItemCode.Substring(1)), out codeMax);
string code = codeMax <= 999 ? $"A{(codeMax + 1):D3}" : $"A{codeMax + 1}";
string code = codeMax <= 1009 ? $"C{1010 + sort}" : $"C{codeMax + sort}";
t.ItemCode = code;
});
var dataUpdates = upload.Where(w => w.OperationType == (int)Attendance.OperationType.修改).ToList();
//删除
var dataDeletes = from temp1 in itemsDatas
var dataDeletes = from temp1 in dataDelete
join temp2 in dataUpdates
on temp1.ItemCode equals temp2.ItemCode into tempJoin
from temp2 in tempJoin.DefaultIfEmpty()
......@@ -803,14 +809,17 @@ public ApiResponse<List<AssessSchemeEnterListResponse>> SchemeEnterList(int allo
var unitTypes = UnitTypeUtil.GetMaps(userInfo?.URole.Type ?? 0);
if (unitTypes?.Any() == true)
issueSchemes = issueSchemes.Where(w => w.AccountingUnit == userInfo.User.Department && UnitTypeUtil.Is(w.UnitType, unitTypes)).ToList();
var items = issueSchemes.GroupBy(w => new { w.AssessId, w.AssessName, w.ItemId, w.ItemName2, w.UnitType, w.AccountingUnit })
var stateOrders = new int[] { (int)Assess.AssessState.待审核, (int)Assess.AssessState.驳回, (int)Assess.AssessState.审核通过, (int)Assess.AssessState.未提交 };
var items = issueSchemes.GroupBy(w => new { w.AssessId, w.AssessCode, w.AssessName, w.ItemId, w.ItemCode, w.ItemName2, w.UnitType, w.AccountingUnit })
.Select(w => new AssessSchemeEnterListResponse
{
AssessId = w.Key.AssessId,
AssessCode = w.Key.AssessCode,
AssessName = w.Key.AssessName,
UnitType = w.Key.UnitType,
AccountingUnit = w.Key.AccountingUnit,
ItemId = w.Key.ItemId,
ItemCode = w.Key.ItemCode,
ItemName2 = w.Key.ItemName2,
Count = w.Count(),
SubmitTime = w.OrderByDescending(o => o.SubmitTime).Select(s => s.SubmitTime).FirstOrDefault(),
......@@ -818,7 +827,8 @@ public ApiResponse<List<AssessSchemeEnterListResponse>> SchemeEnterList(int allo
AuditTime = w.OrderByDescending(o => o.AuditTime).Select(s => s.AuditTime).FirstOrDefault(),
ConfirmCount = w.Count(p => p.State == (int)Assess.AssessState.审核通过),
RejectCount = w.Count(p => p.State == (int)Assess.AssessState.驳回),
AwaitCount = w.Count(p => p.State == (int)Assess.AssessState.待审核)
AwaitCount = w.Count(p => p.State == (int)Assess.AssessState.待审核),
AuditRemark = string.Join(";", w.Select(p => p.AuditRemark).Where(s => !string.IsNullOrEmpty(s)).Distinct()),
}).ToList();
foreach (var item in items)
......@@ -826,11 +836,12 @@ public ApiResponse<List<AssessSchemeEnterListResponse>> SchemeEnterList(int allo
item.State = (int)Assess.AssessState.未提交;
if (item.AwaitCount > 0)
item.State = (int)Assess.AssessState.待审核;
else if (item.RejectCount > 0)
if (item.RejectCount > 0)
item.State = (int)Assess.AssessState.驳回;
else if (item.ConfirmCount == item.Count)
item.State = (int)Assess.AssessState.审核通过;
}
items = items.OrderBy(w => stateOrders.Contains(w.State) ? Array.IndexOf(stateOrders, w.State) : int.MaxValue).ToList();
return new ApiResponse<List<AssessSchemeEnterListResponse>>(ResponseType.OK, items);
}
public PagedList<AssessSchemeEnterDetaiListResponse> SchemeEnterDetailList(QuerySchemeEnterDetailList query)
......@@ -851,7 +862,9 @@ public PagedList<AssessSchemeEnterDetaiListResponse> SchemeEnterDetailList(Query
}
public ApiResponse SchemeEnterAudit(EditSchemeEnterAudit audit, string realName)
{
var issueSchemes = perforPerAssessIssueSchemeRepository.GetEntities(w => w.AllotId == audit.AllotId && audit.IssueId.Contains(w.Id));
var issueSchemes = perforPerAssessIssueSchemeRepository.GetEntities(w => w.AllotId == audit.AllotId && w.ItemId == audit.ItemId);
if (audit.IssueId > 0)
issueSchemes = issueSchemes.Where(w => w.Id == audit.IssueId).ToList();
var temp = issueSchemes.FirstOrDefault(w => w.State == (int)Assess.AssessState.未提交);
if (temp != null || temp?.Id > 0)
throw new PerformanceException("未提交的数据无法审核");
......@@ -859,6 +872,7 @@ public ApiResponse SchemeEnterAudit(EditSchemeEnterAudit audit, string realName)
foreach (var issueScheme in issueSchemes)
{
issueScheme.State = (int)audit.State;
issueScheme.AuditRemark = audit.AuditRemark;
issueScheme.AuditBy = realName;
issueScheme.AuditTime = dateTime;
}
......@@ -873,6 +887,7 @@ public ApiResponse SchemeEnterEdit(EditAssessSchemeEnterRequest request, int use
issueSchemes.Score = request.Score;
issueSchemes.ScoreRemark = request.ScoreRemark;
issueSchemes.UpdateBy = userid;
issueSchemes.State = (int)Assess.AssessState.未提交;
issueSchemes.UpdateTime = DateTime.Now;
if (perforPerAssessIssueSchemeRepository.Update(issueSchemes)) return new ApiResponse(ResponseType.OK, "修改成功");
......@@ -880,15 +895,20 @@ public ApiResponse SchemeEnterEdit(EditAssessSchemeEnterRequest request, int use
}
public ApiResponse SchemeEnterSubmit(int allotId, int itemId, int userid)
{
var issueSchemes = perforPerAssessIssueSchemeRepository.GetEntities(w => w.AllotId == allotId && w.ItemId == itemId);
var issueSchemes = perforPerAssessIssueSchemeRepository.GetEntities(w => w.AllotId == allotId && w.ItemId == itemId && w.State != (int)Assess.AssessState.审核通过);
if (!issueSchemes.Any())
throw new PerformanceException("未找到需要提交的数据,请稍后在试");
var dateTime = DateTime.Now;
foreach (var item in issueSchemes)
{
item.AuditBy = null;
item.AuditTime = null;
item.AuditRemark = null;
item.State = (int)Assess.AssessState.待审核;
item.SubmitBy = userid;
item.SubmitTime = dateTime;
item.UpdateBy = userid;
item.UpdateTime = dateTime;
}
if (perforPerAssessIssueSchemeRepository.UpdateRange(issueSchemes.ToArray())) return new ApiResponse(ResponseType.OK, "修改成功");
else return new ApiResponse(ResponseType.Fail, "修改失败");
......@@ -902,6 +922,8 @@ public ApiResponse SchemeEnterUpload(int itemId, IFormCollection form, int useri
//查询指标
var itemsDatas = perforPerAssessSchemeItemsRepository.GetEntity(t => t.Id == itemId);
if (itemsDatas == null || itemsDatas.Id < 0)
throw new PerformanceException("上传失败,请刷新后重新上传!");
//查询下发结果
var issueDatas = perforPerAssessIssueSchemeRepository.GetEntities(w => w.ItemId == itemId);
var allot = perforPerallotRepository.GetEntity(w => w.ID == itemsDatas.AllotId);
......@@ -922,6 +944,8 @@ public ApiResponse SchemeEnterUpload(int itemId, IFormCollection form, int useri
}
var dt = Read(path);
var datas = ToListDictionary(dt);
if (datas.Count == 0 || !datas.Any())
throw new PerformanceException("未在文件中找到数据");
Tables error = new Tables("行", "核算单元", "核算组别", "一级指标名称", "考核项目", "考核分值", "考核扣分", "扣分原因", "原因");
var issues = new List<per_assess_issue_scheme>();
foreach (var item in datas.Select((value, i) => new { value, index = $"第{i + 1}行" }))
......@@ -945,15 +969,14 @@ public ApiResponse SchemeEnterUpload(int itemId, IFormCollection form, int useri
var issueData = issueDatas.FirstOrDefault(w => w.ItemId == itemId && w.TargetAccountingUnit == eTargetAccountingUnit && w.TargetUnitType == eTargetUnitType);
error.AddIf(issueData == null, item.index, eTargetAccountingUnit, eTargetUnitType, eItemName1, eItemName2, eAssessScore, eScore, eScoreRemark, "未找到部门,请检查后重试!");
if (issueData == null) continue;
issueData.Score = escore;
issueData.Score = escore == 0 ? null : escore;
issueData.ScoreRemark = eScoreRemark;
issueData.UpdateBy = userid;
issueData.UpdateTime = DateTime.Now;
issues.Add(issueData);
}
if (error.Any())
return new ApiResponse(ResponseType.Error, "操作被拒绝,详细请看更多信息", error);
return new ApiResponse(ResponseType.WarningTable, "操作被拒绝,详细请看更多信息", error);
if (issues.Any())
perforPerAssessIssueSchemeRepository.UpdateRange(issues.ToArray());
return new ApiResponse(ResponseType.OK);
......
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