/// <summary> /// [考核提交] 考核管理 /// </summary> /// <param name="dto"></param> /// <returns></returns> public Result EditManage([FromForm] KpiEvaluationManageSubmitDto dto) { return(_wrappers.EditManage(dto)); }
/// <summary> /// [考核提交] 考核管理 /// </summary> /// <param name="modelDto"></param> /// <returns></returns> public Result EditManage(KpiEvaluationManageSubmitDto modelDto) { try { using (TransactionScope ts = new TransactionScope()) { var dtNow = DateTime.Now; if (modelDto.ManageRecord == null || modelDto.ManageDetails.Count <= 0) { return Result.Fail("传入参数错误"); } var fromMagRecord = modelDto.ManageRecord; //考核管理记录 var modelMagRecord = _magRecordBusiness.GetSingle(p => p.Id == fromMagRecord.Id); if (modelMagRecord == null) { return Result.Fail("未查询到相关记录"); } if (modelMagRecord.Status == KpiStatus.Complete || modelMagRecord.Status == KpiStatus.Invalid) { return Result.Fail("该记录已被处理,请勿重复操作"); } //当前处理人 var employee = modelDto.Employee; //下一步处理人 var nextEmployee = modelDto.NextEmployee; if ((modelMagRecord.Steps == KpiSteps.Zero || modelMagRecord.Steps == KpiSteps.One) && nextEmployee == null) { return Result.Fail("下一步处理人信息错误,请检查"); } if (modelMagRecord.StepsCompanyId != employee.CompanyId || modelMagRecord.StepsDptId != employee.DptId || modelMagRecord.StepsEmployeeId != employee.Id) { return Result.Fail("请勿处理非本人处理的数据"); } //考核管理统计 var modelMagTotal = _magTotalBusiness.GetSingle(p => p.KpiType == modelMagRecord.KpiType && p.KpiId == modelMagRecord.KpiId && p.CompanyId == modelMagRecord.CompanyId && p.DptId == modelMagRecord.DptId && p.EmployeeId == modelMagRecord.EmployeeId); if (modelMagTotal == null) { return Result.Fail("未查询到相关记录:total"); } //考核管理明细 var lsMagDetail = new List<KpiManageDetail>(); decimal selfScore = 0, oneScore = 0, twoScore = 0; foreach (var item in modelDto.ManageDetails) { item.KpiManageRecordId = modelMagRecord.Id; if (modelMagRecord.Steps == KpiSteps.Zero && item.SelfScore > item.Weight) { return Result.Fail($"[{item.EvaluationName}]项的自评分不能大于权重(分值)"); } if (modelMagRecord.Steps == KpiSteps.One && item.OneScore > item.Weight) { return Result.Fail($"[{item.EvaluationName}]项的初审分不能大于权重(分值)"); } if (modelMagRecord.Steps == KpiSteps.Two && item.TwoScore > item.Weight) { return Result.Fail($"[{item.EvaluationName}]项的终审分不能大于权重(分值)"); } selfScore += item.SelfScore.Value; oneScore += item.OneScore.Value; twoScore += item.TwoScore.Value; } if (nextEmployee != null) { modelMagRecord.StepsCompanyId = nextEmployee.CompanyId; modelMagRecord.StepsCompanyName = nextEmployee.CompanyName; modelMagRecord.StepsDptId = nextEmployee.DptId; modelMagRecord.StepsDptName = nextEmployee.DptName; modelMagRecord.StepsEmployeeId = nextEmployee.Id; modelMagRecord.StepsUserName = nextEmployee.EmployeeName; } var kpiTime = int.Parse(modelMagRecord.KpiDate); //自评 if (modelMagRecord.Steps == KpiSteps.Zero) { modelMagRecord.Steps = KpiSteps.One; modelMagRecord.Status = KpiStatus.Audit; modelMagRecord.Score = selfScore; for (int i = 0; i < 12; i++) { if ((i + 1) == kpiTime) { DynaimcHelper.DynamicFileds[i].Score.SetValue(modelMagTotal, selfScore); DynaimcHelper.DynamicFileds[i].Status.SetValue(modelMagTotal, KpiStatus.Audit); } } } //初审 else if (modelMagRecord.Steps == KpiSteps.One) { modelMagRecord.Steps = KpiSteps.Two; modelMagRecord.Status = KpiStatus.Audit; modelMagRecord.Score = selfScore + oneScore; for (int i = 0; i < 12; i++) { if ((i + 1) == kpiTime) { DynaimcHelper.DynamicFileds[i].Score.SetValue(modelMagTotal, selfScore + oneScore); DynaimcHelper.DynamicFileds[i].Status.SetValue(modelMagTotal, KpiStatus.Audit); } } } //终审 else if (modelMagRecord.Steps == KpiSteps.Two) { modelMagRecord.Steps = KpiSteps.Complete; modelMagRecord.Status = KpiStatus.Complete; modelMagRecord.CompleteDate = dtNow; modelMagRecord.Score = selfScore + oneScore + twoScore; modelMagRecord.StepsCompanyId = null; modelMagRecord.StepsCompanyName = null; modelMagRecord.StepsDptId = null; modelMagRecord.StepsDptName = null; modelMagRecord.StepsEmployeeId = null; modelMagRecord.StepsUserName = null; for (int i = 0; i < 12; i++) { if ((i + 1) == kpiTime) { DynaimcHelper.DynamicFileds[i].Score.SetValue(modelMagTotal, selfScore + oneScore + twoScore); DynaimcHelper.DynamicFileds[i].Status.SetValue(modelMagTotal, KpiStatus.Complete); } } } //考核管理审核记录 var modelMageAuditRecord = new KpiManageAuditRecord() { Id = 0, KpiManageRecordId = modelMagRecord.Id, Steps = fromMagRecord.Steps, Evaluation = modelDto.Evaluation, CompanyId = fromMagRecord.StepsCompanyId.Value, CompanyName = fromMagRecord.StepsCompanyName, DptId = fromMagRecord.StepsDptId.Value, DptName = fromMagRecord.StepsDptName, EmployeeId = fromMagRecord.StepsEmployeeId.Value, UserName = fromMagRecord.StepsUserName, AddDate = dtNow }; _magTotalBusiness.Update(modelMagTotal); _magRecordBusiness.Update(modelMagRecord); _magDetailBusiness.UpdateRange(modelDto.ManageDetails); _magAuditRecordBusiness.Add(modelMageAuditRecord); ts.Complete(); return Result.Success(); } } catch (Exception ex) { return Result.Fail("操作失败:" + ex.Message); } }