//添加自定义扣分规则 public void BreakRule(string examItemCode, string examItemName, string ruleCode, string subRuleCode = null, string message = null, int DeductedScores = 0, string DeductedVoiceFile = "") { var deductionRule = DataService.GetDeductionRule(ruleCode, subRuleCode); if (deductionRule == null) { Logger.WarnFormat("扣分规则:{0}-{1} 在数据库中不存在", ruleCode, subRuleCode); return; } deductionRule.DeductedScores = DeductedScores == 0 ? deductionRule.DeductedScores : DeductedScores; deductionRule.VoiceFile = DeductedVoiceFile == string.Empty ? deductionRule.VoiceFile : DeductedVoiceFile; deductionRule.ExamItemName = deductionRule.VoiceFile; var brokenRuleInfo = new BrokenRuleInfo(deductionRule) { ExamItemCode = examItemCode, ExamItemName = examItemName, Message = message, }; //自定义扣分规则 _breakRules.Add(brokenRuleInfo); Score -= brokenRuleInfo.DeductedScores; Logger.DebugFormat("项目:{0},扣分代码:{1},扣分:{2},{3}", examItemName, brokenRuleInfo.RuleCode, brokenRuleInfo.DeductedScores, brokenRuleInfo.RuleDescription); var brokenRulemessage = new BrokenRuleMessage(brokenRuleInfo); Messenger.Send(brokenRulemessage); if (VoiceBrokenRule) { SpeakBrokenRule(brokenRuleInfo); } }
private void SpeakBrokenRule(BrokenRuleInfo ruleInfo) { if (!string.IsNullOrEmpty(ruleInfo.DeductionRule.VoiceFile)) { //Todo:lz if (Settings.PlayFail && ruleInfo.DeductionRule.DeductedScores == 100) { Speaker.PlayAudioAsync(string.Format("{0},不合格", ruleInfo.DeductionRule.VoiceFile, ruleInfo.DeductionRule.DeductedScores)); } else { Speaker.PlayAudioAsync(string.Format("{0},扣{1}分", ruleInfo.DeductionRule.VoiceFile, ruleInfo.DeductionRule.DeductedScores)); } } }