diff --git a/Tiobon.Core.Services/Ghre/Ghre_ExamRecordServices.cs b/Tiobon.Core.Services/Ghre/Ghre_ExamRecordServices.cs index 0b685a18..2abb71cb 100644 --- a/Tiobon.Core.Services/Ghre/Ghre_ExamRecordServices.cs +++ b/Tiobon.Core.Services/Ghre/Ghre_ExamRecordServices.cs @@ -170,12 +170,29 @@ public class Ghre_ExamRecordServices : BaseServices paper.TotalScore) return ServiceResult.OprateFailed($"调整后得分为【{score1}】,不可大于卷面总分【{Regex.Replace(paper.TotalScore.ToString(), @"\.(0+)$", "") + "/" + Regex.Replace(paper.TotalScore.ToString(), @"\.(0+)$", "")}】!"); + #region 处理最终得分 + var exam = await Db.Queryable().Where(x => x.Id == entity.ExamId).FirstAsync(); + if (exam != null) + { + if (exam.OnlineScorePercentage != null && exam.OfflineScorePercentage != null) + if (exam.OnlineScorePercentage > 0 && exam.OfflineScorePercentage > 0) + { + decimal OnlineScorePercentage = exam.OnlineScorePercentage.Value / 100; + decimal OfflineScorePercentage = exam.OfflineScorePercentage.Value / 100; + entity.FinallyScore = (entity.Score + (entity.AdjustScore ?? 0)) * OnlineScorePercentage; + if (entity.ActualScore != null && entity.ActualScore > 0) + entity.FinallyScore += entity.ActualScore * OfflineScorePercentage; + } + } + #endregion + + var paperId = entity.ExamPaperId; var examPaper = await Db.Queryable().Where(x => x.Id == paperId).FirstAsync(); if (examPaper != null) entity.IsPass = examPaper.PassScore > (entity.Score + entity.AdjustScore) ? false : true; - await Update(entity, ["IsPass", "AdjustScore", "UpdateTime", "UpdateBy"]); + await Update(entity, ["IsPass", "AdjustScore", "FinallyScore", "UpdateTime", "UpdateBy"]); return ServiceResult.OprateSuccess("修改成功!"); @@ -195,8 +212,23 @@ public class Ghre_ExamRecordServices : BaseServices().Where(x => x.Id == entity.ExamId).FirstAsync(); + if (exam != null) + { + if (exam.OnlineScorePercentage != null && exam.OfflineScorePercentage != null) + if (exam.OnlineScorePercentage > 0 && exam.OfflineScorePercentage > 0) + { + decimal OnlineScorePercentage = exam.OnlineScorePercentage.Value / 100; + decimal OfflineScorePercentage = exam.OfflineScorePercentage.Value / 100; + entity.FinallyScore = (entity.Score + (entity.AdjustScore ?? 0)) * OnlineScorePercentage; + if (entity.ActualScore != null && entity.ActualScore > 0) + entity.FinallyScore += entity.ActualScore * OfflineScorePercentage; + } + } + #endregion - await Update(entity, ["ActualScore", "UpdateTime", "UpdateBy"]); + await Update(entity, ["ActualScore", "FinallyScore", "UpdateTime", "UpdateBy"]); return ServiceResult.OprateSuccess("修改成功!"); } @@ -1142,14 +1174,18 @@ public class Ghre_ExamRecordServices : BaseServices 0 && exam.OfflineScorePercentage > 0) { - //exam.scor + decimal OnlineScorePercentage = exam.OnlineScorePercentage.Value / 100; + decimal OfflineScorePercentage = exam.OfflineScorePercentage.Value / 100; + record.FinallyScore = (record.Score + (record.AdjustScore ?? 0)) * OnlineScorePercentage; + if (record.ActualScore != null && record.ActualScore > 0) + record.FinallyScore += record.ActualScore * OfflineScorePercentage; } #endregion } #endregion record.UpdateTime = DateTime.Now; - await Update(record, new List { "Status", "Score", "AdjustScore", "ActualEndTime", "ScoreStatus", "UpdateTime", "ExamDate", "AnswerCount" }, null, $"Id='{record.Id}'"); + await Update(record, new List { "Status", "Score", "FinallyScore", "AdjustScore", "ActualEndTime", "ScoreStatus", "UpdateTime", "ExamDate", "AnswerCount" }, null, $"Id='{record.Id}'"); if (exampaper.ScoreMethod == DIC_EXAM_PAPER_SCORE_METHOD.SYSTEM) await Task.Factory.StartNew(async () => await DealPass(Db, studyRecordId));