예제 #1
0
 /// <summary>
 /// [考核提交] 考核管理
 /// </summary>
 /// <param name="dto"></param>
 /// <returns></returns>
 public Result EditManage([FromForm] KpiEvaluationManageSubmitDto dto)
 {
     return(_wrappers.EditManage(dto));
 }
예제 #2
0
        /// <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);
            }
        }