示例#1
0
        private void Button111_Click(object sender, RoutedEventArgs e)
        {
            string resultStr =
                @"{""tokenId"":""5ad459bb05479116ac000007"",""refText"":""Hi everyone. Welcome to the island and nice to meet you here! My name is Ted. I will be your guide for the next seven days. Now, let me introduce our traveling plan. In May, the weather in the north is cool and wet, but in the south it's hot and wet. So please keep an umbrella or a raincoat with you. This island has beautiful views everywhere, so don't forget to take your camera. While we are visiting places of interest, please stay with the group. If you get lost, don't worry. Just call me! Then stay where you are and I will find you. My phone number is 258-5465."",""audioUrl"":""records.17kouyu.com\/5ad45997319bbae7f400134f"",""dtLastResponse"":""2018-04-16 16:07:07:738"",""result"":{""fluency"":73,""duration"":""85.000"",""kernel_version"":""2.7.3"",""warning"":[{""code"":1004,""message"":""Audio noisy!""}],""integrity"":74,""rhythm"":59,""resource_version"":""1.4.8"",""overall"":47,""pronunciation"":47,""sentences"":[{""overall"":42,""sentence"":""Hi everyone."",""details"":[{""prominence"":0,""overall"":21,""word"":""Hi""},{""prominence"":0,""overall"":62,""word"":""everyone.""}]},{""overall"":46,""sentence"":""Welcome to the island and nice to meet you here!"",""details"":[{""prominence"":0,""overall"":38,""word"":""Welcome""},{""prominence"":0,""overall"":99,""word"":""to""},{""prominence"":0,""overall"":22,""word"":""the""},{""prominence"":0,""overall"":44,""word"":""island""},{""prominence"":0,""overall"":63,""word"":""and""},{""prominence"":0,""overall"":41,""word"":""nice""},{""prominence"":0,""overall"":61,""word"":""to""},{""prominence"":1,""overall"":15,""word"":""meet""},{""prominence"":0,""overall"":1,""word"":""you""},{""prominence"":0,""overall"":73,""word"":""here!""}]},{""overall"":75,""sentence"":""My name is Ted."",""details"":[{""prominence"":0,""overall"":77,""word"":""My""},{""prominence"":0,""overall"":66,""word"":""name""},{""prominence"":0,""overall"":67,""word"":""is""},{""prominence"":0,""overall"":88,""word"":""Ted.""}]},{""overall"":40,""sentence"":""I will be your guide for the next seven days."",""details"":[{""prominence"":0,""overall"":16,""word"":""I""},{""prominence"":0,""overall"":2,""word"":""will""},{""prominence"":0,""overall"":77,""word"":""be""},{""prominence"":0,""overall"":72,""word"":""your""},{""prominence"":0,""overall"":48,""word"":""guide""},{""prominence"":0,""overall"":64,""word"":""for""},{""prominence"":0,""overall"":5,""word"":""the""},{""prominence"":0,""overall"":27,""word"":""next""},{""prominence"":0,""overall"":15,""word"":""seven""},{""prominence"":0,""overall"":75,""word"":""days.""}]},{""overall"":67,""sentence"":""Now,"",""details"":[{""prominence"":0,""overall"":67,""word"":""Now,""}]},{""overall"":43,""sentence"":""let me introduce our traveling plan."",""details"":[{""prominence"":0,""overall"":72,""word"":""let""},{""prominence"":0,""overall"":67,""word"":""me""},{""prominence"":0,""overall"":9,""word"":""introduce""},{""prominence"":0,""overall"":22,""word"":""our""},{""prominence"":0,""overall"":76,""word"":""traveling""},{""prominence"":0,""overall"":14,""word"":""plan.""}]},{""overall"":39,""sentence"":""In May,"",""details"":[{""prominence"":0,""overall"":75,""word"":""In""},{""prominence"":0,""overall"":3,""word"":""May,""}]},{""overall"":43,""sentence"":""the weather in the north is cool and wet,"",""details"":[{""prominence"":0,""overall"":33,""word"":""the""},{""prominence"":0,""overall"":63,""word"":""weather""},{""prominence"":0,""overall"":68,""word"":""in""},{""prominence"":0,""overall"":5,""word"":""the""},{""prominence"":0,""overall"":42,""word"":""north""},{""prominence"":0,""overall"":70,""word"":""is""},{""prominence"":0,""overall"":7,""word"":""cool""},{""prominence"":0,""overall"":63,""word"":""and""},{""prominence"":0,""overall"":35,""word"":""wet,""}]},{""overall"":60,""sentence"":""but in the south it's hot and wet."",""details"":[{""prominence"":0,""overall"":100,""word"":""but""},{""prominence"":0,""overall"":93,""word"":""in""},{""prominence"":0,""overall"":9,""word"":""the""},{""prominence"":0,""overall"":44,""word"":""south""},{""prominence"":0,""overall"":78,""word"":""it's""},{""prominence"":0,""overall"":33,""word"":""hot""},{""prominence"":0,""overall"":78,""word"":""and""},{""prominence"":0,""overall"":47,""word"":""wet.""}]},{""overall"":59,""sentence"":""So please keep an umbrella or a raincoat with you."",""details"":[{""prominence"":0,""overall"":18,""word"":""So""},{""prominence"":0,""overall"":95,""word"":""please""},{""prominence"":0,""overall"":97,""word"":""keep""},{""prominence"":0,""overall"":71,""word"":""an""},{""prominence"":0,""overall"":65,""word"":""umbrella""},{""prominence"":0,""overall"":71,""word"":""or""},{""prominence"":0,""overall"":36,""word"":""a""},{""prominence"":0,""overall"":39,""word"":""raincoat""},{""prominence"":0,""overall"":60,""word"":""with""},{""prominence"":0,""overall"":33,""word"":""you.""}]},{""overall"":38,""sentence"":""This island has beautiful views everywhere,"",""details"":[{""prominence"":0,""overall"":61,""word"":""This""},{""prominence"":0,""overall"":22,""word"":""island""},{""prominence"":0,""overall"":62,""word"":""has""},{""prominence"":0,""overall"":66,""word"":""beautiful""},{""prominence"":0,""overall"":1,""word"":""views""},{""prominence"":0,""overall"":18,""word"":""everywhere,""}]},{""overall"":75,""sentence"":""so don't forget to take your camera."",""details"":[{""prominence"":0,""overall"":89,""word"":""so""},{""prominence"":0,""overall"":64,""word"":""don't""},{""prominence"":0,""overall"":64,""word"":""forget""},{""prominence"":0,""overall"":94,""word"":""to""},{""prominence"":0,""overall"":75,""word"":""take""},{""prominence"":0,""overall"":72,""word"":""your""},{""prominence"":0,""overall"":68,""word"":""camera.""}]},{""overall"":23,""sentence"":""While we are visiting places of interest,"",""details"":[{""prominence"":0,""overall"":6,""word"":""While""},{""prominence"":0,""overall"":6,""word"":""we""},{""prominence"":0,""overall"":1,""word"":""are""},{""prominence"":0,""overall"":1,""word"":""visiting""},{""prominence"":0,""overall"":66,""word"":""places""},{""prominence"":0,""overall"":69,""word"":""of""},{""prominence"":0,""overall"":13,""word"":""interest,""}]},{""overall"":43,""sentence"":""please stay with the group."",""details"":[{""prominence"":0,""overall"":21,""word"":""please""},{""prominence"":0,""overall"":78,""word"":""stay""},{""prominence"":0,""overall"":61,""word"":""with""},{""prominence"":0,""overall"":26,""word"":""the""},{""prominence"":0,""overall"":29,""word"":""group.""}]},{""overall"":55,""sentence"":""If you get lost,"",""details"":[{""prominence"":0,""overall"":93,""word"":""If""},{""prominence"":0,""overall"":58,""word"":""you""},{""prominence"":0,""overall"":4,""word"":""get""},{""prominence"":0,""overall"":63,""word"":""lost,""}]},{""overall"":54,""sentence"":""don't worry."",""details"":[{""prominence"":0,""overall"":69,""word"":""don't""},{""prominence"":0,""overall"":38,""word"":""worry.""}]},{""overall"":62,""sentence"":""Just call me!"",""details"":[{""prominence"":0,""overall"":62,""word"":""Just""},{""prominence"":0,""overall"":99,""word"":""call""},{""prominence"":0,""overall"":24,""word"":""me!""}]},{""overall"":46,""sentence"":""Then stay where you are and I will find you."",""details"":[{""prominence"":0,""overall"":61,""word"":""Then""},{""prominence"":0,""overall"":90,""word"":""stay""},{""prominence"":0,""overall"":68,""word"":""where""},{""prominence"":0,""overall"":21,""word"":""you""},{""prominence"":0,""overall"":67,""word"":""are""},{""prominence"":0,""overall"":61,""word"":""and""},{""prominence"":0,""overall"":7,""word"":""I""},{""prominence"":0,""overall"":10,""word"":""will""},{""prominence"":0,""overall"":37,""word"":""find""},{""prominence"":0,""overall"":37,""word"":""you.""}]},{""overall"":31,""sentence"":""My phone number is 258-5465."",""details"":[{""prominence"":0,""overall"":24,""word"":""My""},{""prominence"":1,""overall"":26,""word"":""phone""},{""prominence"":0,""overall"":73,""word"":""number""},{""prominence"":0,""overall"":33,""word"":""is""},{""prominence"":1,""overall"":1,""word"":""258-5465.""}]}]},""eof"":1,""applicationId"":""151012757600003e"",""recordId"":""5ad45997319bbae7f400134f""}";


            ScoreRoot score = JsonHelper.FromJson <ScoreRoot>(resultStr.Replace("\"params\"", "\"param\""));
        }
示例#2
0
        public override void ShowPlayingResult(string result)
        {
            //BindUserAnswerContent(result);

            ScoreRoot score = JsonHelper.FromJson <ScoreRoot>(result.Replace("\"params\"", "\"param\""));

            //BindUserAnswerContent(score.result.words.ToString());


            BindFiveStarUc(score);
            BindUserScore(Convert.ToInt32(score.result.overall));
            BindUserAnswerContent(score.result.words.ToString());
        }
示例#3
0
        /// <summary>
        /// 绑定 评测评价
        /// </summary>
        /// <param name="msg"></param>
        private void BindFiveStarUc(ScoreRoot msg)
        {
            try
            {
                PredView.FiveStarBoxBorder.Visibility = Visibility.Hidden;
                SyncQsYsContent = "";
                SyncQsYsContent = $"语速:{msg.result.speed}词/分钟";

                // 流畅度  准确度 完整度
                var view10      = new EvaluationScoreItemView();
                var viewModel10 =
                    new EvaluationScoreItemViewModel("流利度", Convert.ToSingle(msg.result.fluency));
                view10.DataContext = viewModel10;
                view10.SetValue(Grid.ColumnProperty, 0); //设置按钮所在Grid控件的列
                view10.SetValue(Grid.RowProperty, 0);
                PredView.FiveStarBox.Children.Add(view10);
                var view11      = new EvaluationScoreItemView();
                var viewModel11 = new EvaluationScoreItemViewModel("准确度",
                                                                   Convert.ToSingle(msg.result.pronunciation));
                view11.DataContext = viewModel11;
                view11.SetValue(Grid.ColumnProperty, 1); //设置按钮所在Grid控件的列
                view11.SetValue(Grid.RowProperty, 0);
                PredView.FiveStarBox.Children.Add(view11);
                var view12      = new EvaluationScoreItemView();
                var viewModel12 = new EvaluationScoreItemViewModel("完整度",
                                                                   Convert.ToSingle(msg.result.integrity));
                view12.DataContext = viewModel12;
                view12.SetValue(Grid.ColumnProperty, 2); //设置按钮所在Grid控件的列
                view12.SetValue(Grid.RowProperty, 0);
                PredView.FiveStarBox.Children.Add(view12);
                PredView.FiveStarBox.Visibility       = Visibility.Visible;
                PredView.FiveStarBoxBorder.Visibility = Visibility.Visible;
            }
            catch (Exception ex)
            {
                Log4NetHelper.Error("绑定评分评价异常 Pred", ex);
            }
        }
示例#4
0
        public HistoryScoreItemViewModel(QsBaseViewModel parentView, string titleName, ScoreRoot userScore) : this()
        {
            ParentView = parentView;

            TitleName  = titleName;
            ScoreValue = $"{Convert.ToInt32(userScore.result.overall)} 分";
            AudioUrl   = userScore.audioUrl;
            Result     = JsonHelper.ToJson(userScore);

            BindQsSubItemInfo();
        }
示例#5
0
        private void BindUserScoreBox(SyncScoreCallbckMessage msg = null)
        {
            try
            {
                if (HistoryItem != null)
                {
                    if (HistoryItem.best != null || HistoryItem.last != null)
                    {
                        HistoryScoreItemView view0 = null;
                        if (WordView.ScoreBoxView.Children.Count == 2)
                        {
                            view0 = WordView.ScoreBoxView.Children[1] as HistoryScoreItemView;
                        }
                        if (WordView.ScoreBoxView.Children.Count == 3)
                        {
                            view0 = WordView.ScoreBoxView.Children[2] as HistoryScoreItemView;
                        }

                        WordView.ScoreBoxView.Children.Clear();
                        ScoreRoot score = JsonHelper.FromJson <ScoreRoot>(HistoryItem.best.score_result.Replace("\"params\"", "\"param\""));

                        var view = new HistoryScoreItemView();
                        //var viewModel = new HistoryScoreItemViewModel(this, "历史最高:",
                        //    $"{Convert.ToInt32(HistoryItem.best.exam_score)} 分", HistoryItem.best.user_answer, HistoryItem.best.score_result);
                        var viewModel = new HistoryScoreItemViewModel(this, "历史最高:", HistoryItem.best);
                        view.DataContext = viewModel;
                        view.SetValue(Grid.ColumnProperty, 0); //设置按钮所在Grid控件的列
                        view.SetValue(Grid.RowProperty, 0);
                        //grid.Children.Add(view);
                        WordView.ScoreBoxView.Children.Add(view);

                        if (view0 != null)
                        {
                            view0.TxtTitleName.Text = "上次得分";
                            view0.SetValue(Grid.ColumnProperty, 1); //设置按钮所在Grid控件的列
                            view0.SetValue(Grid.RowProperty, 0);
                            view0.Margin = new Thickness(0);
                            WordView.ScoreBoxView.Children.Add(view0);
                            WordView.ScoreBoxView.Visibility = Visibility.Visible;
                        }
                        else
                        {
                            score = JsonHelper.FromJson <ScoreRoot>(HistoryItem.last.score_result.Replace("\"params\"", "\"param\""));
                            var view1 = new HistoryScoreItemView();
                            //var viewModel1 = new HistoryScoreItemViewModel(this, "上次得分:",
                            //    $"{Convert.ToInt32(HistoryItem.last.exam_score)} 分", HistoryItem.last.user_answer, HistoryItem.last.score_result);
                            var viewModel1 = new HistoryScoreItemViewModel(this, "上次得分:", HistoryItem.last);
                            view1.DataContext = viewModel1;
                            view1.SetValue(Grid.ColumnProperty, 1); //设置按钮所在Grid控件的列
                            view1.SetValue(Grid.RowProperty, 0);
                            view1.Margin = new Thickness(0);
                            //grid.Children.Add(view1);
                            WordView.ScoreBoxView.Children.Add(view1);
                            WordView.ScoreBoxView.Visibility = Visibility.Visible;
                        }
                    }
                }

                //本次答题记录
                if (msg != null)
                {
                    if (msg.ModelTarget != tagUrl)
                    {
                        return;
                    }

                    if (msg.EType != EngineType.WORD)
                    {
                        return;
                    }

                    if (msg.ScoreResult?.result == null)
                    {
                        return;
                    }

                    var view2 = new HistoryScoreItemView();
                    //var viewModel2 = new HistoryScoreItemViewModel(this, "本次得分:",
                    //    $"{Convert.ToInt32(msg.ScoreResult.result.overall)} 分", msg.ScoreResult.audioUrl, msg.ScoreResult.result.words.ToString());
                    var viewModel2 = new HistoryScoreItemViewModel(this, "本次得分:", msg.ScoreResult);
                    view2.DataContext = viewModel2;
                    view2.SetValue(Grid.ColumnProperty, 2); //设置按钮所在Grid控件的列
                    view2.SetValue(Grid.RowProperty, 0);
                    view2.Margin = new Thickness(20, 0, 10, 0);
                    //grid.Children.Add(view1);
                    WordView.ScoreBoxView.Children.Add(view2);

                    BindUserScore(Convert.ToInt32(msg.ScoreResult.result.overall));

                    if (_IsSpell)
                    {
                        BindUserAnswerContent(msg.ScoreResult.result.words.ToString());
                    }
                }
            }
            catch (Exception ex)
            {
                Log4NetHelper.Error("Word 绑定历史记录失败", ex);
            }
        }
示例#6
0
        private void UpdateAnswer(string scoreJson)
        {
            Application.Current.Dispatcher.Invoke(new Action(() =>
            {
                string errStr     = "";
                ErrMsgLog msgInfo = new ErrMsgLog();
                msgInfo.user      = GlobalUser.USER.Mobile;

                if (GlobalUser.ErrScoreInfo == null)
                {
                    GlobalUser.ErrScoreInfo = new Dictionary <string, ExamScoreNavigateMessage>();
                }

                try
                {
                    if (!GlobalUser.DoAnswer)
                    {
                        //errStr = $"评分失败 -- result: 当前不是做题过程!";
                        msgInfo.msginfo      = "评分失败";
                        msgInfo.error        = "当前不是做题过程";
                        msgInfo.isErr        = true;
                        GlobalUser.DoneScore = ScoreType.NoScore;
                        Log4NetHelper.Error(msgInfo.ToJson());
                        return;
                    }

                    ScoreRoot score = JsonHelper.FromJson <ScoreRoot>(scoreJson.Replace("\"params\"", "\"param\""));

                    if (!string.IsNullOrEmpty(score.errId))
                    {
                        //20009   网络无效
                        //20013   评分超时
                        //20010   调用顺序出错
                        //42003   请求顺序出错
                        //可以重评
                        if (_errIds.Contains(score.errId))
                        {
                            ExamScore.SubmitNum++;
                        }
                        else
                        {
                            ExamScore.SubmitNum = 999;
                        }

                        if (!GlobalUser.ErrScoreInfo.ContainsKey(ExamScore.WaveFileName))
                        {
                            GlobalUser.ErrScoreInfo.Add(ExamScore.WaveFileName, ExamScore);
                        }
                        throw new Exception($"评分失败 errID:{score.errId}");
                    }

                    string scoreStr = "0";

                    if (ExamScore.EType == EngineType.CHOICE)
                    {
                        var answer =
                            ExamScore.AnswerModel.item_answer.Split(new string[] { "|" }, StringSplitOptions.None);

                        ExamScore.AnswerModel.item_answer = answer[answer.Length - 1];

                        if (score.result.confidence >= (ExamScore.AnswerModel.item_score * 0.45) &&
                            ExamScore.AnswerModel.item_answer.ToLower().Trim()
                            .Equals(score.result.recognition.ToLower().Trim()))
                        {
                            scoreStr = ExamScore.AnswerModel.item_score.ToString("f2");
                        }
                    }
                    else
                    {
                        scoreStr = score.result.overall
                                   .ToString(); //((score.result.overall / 100) * ExamScore.AnswerModel.item_score).ToString("f2");
                    }

                    ExamScore.AnswerModel.user_answer = scoreJson.TrimEnd('\0');

                    ExamScore.AnswerModel.exam_score = Convert.ToSingle(scoreStr); //Convert.ToSingle(scoreStr);

                    if (ExamScore.AnswerModel.item_score < 0)
                    {
                        ExamScore.AnswerModel.exam_score = Math.Abs(ExamScore.AnswerModel.item_score);
                    }

                    var result = WebApiProxy.GetHtmlRespInfo(ExamScore.AnswerModel, ApiType.SubmitRecord,
                                                             GlobalUser.USER.Token);

                    Log4NetHelper.Info($"完成评分 -- result:{result.retCode == 1} {result.retCode} {result.retMsg}");

                    //Log4NetHelper.Info($"完成评分 -- 音频文件: {ExamScore.WaveFileName}");

                    GlobalUser.DoneItemExam = true;
                    GlobalUser.DoneScore    = ScoreType.ScoreSuccess; //评分
                    if (result?.retCode != 0)
                    {
                        //errStr = $"errmsg:上传评分失败,result:{result.retCode} {result.retCode} {result.retMsg}";
                        msgInfo.msginfo = "上传评分失败";
                        msgInfo.error   = $"{result.retCode} {result.retCode} {result.retMsg}";
                        msgInfo.isErr   = true;

                        GlobalUser.DoneScore = ScoreType.ScoreFailure;
                        Log4NetHelper.Error(msgInfo.ToJson());

                        if (result.retCode == 4001 && result.retMsg.Contains("密码"))
                        {
                            //回到登录
                            GlobalUser.CleanUp();
                            Messenger.Default.Send(new ExamScoreNavigateMessage(), "LoginFailure");
                            //errStr += ",LoginFailure:已在其他设备登录!";
                            msgInfo.error += ",已在其他设备登录";
                            msgInfo.isErr  = true;
                        }
                    }
                    else
                    {
                        msgInfo.isErr = false;
                        if (GlobalUser.ErrScoreInfo != null && GlobalUser.ErrScoreInfo.Count > 0)
                        {
                            //移除异常记录
                            if (GlobalUser.ErrScoreInfo.ContainsKey(ExamScore.WaveFileName))
                            {
                                GlobalUser.ErrScoreInfo.Remove(ExamScore.WaveFileName);
                            }
                            else
                            {
                                foreach (var key in GlobalUser.ErrScoreInfo.Keys)
                                {
                                    if (GlobalUser.ErrScoreInfo.Values.ToList().Where(w =>
                                                                                      w.AnswerModel.exam_attend_id == GlobalUser.AttendPaperItemId &&
                                                                                      w.AnswerModel.item_id == ExamScore.AnswerModel.item_id).Any())
                                    {
                                        GlobalUser.ErrScoreInfo.Remove(key);
                                        break;
                                    }
                                }
                            }

                            GlobalUser.UpdateErrScore(GlobalUser.USER.Mobile,
                                                      GlobalUser.SelectPaperNumber,
                                                      GlobalUser.AttendPaperItemId);
                        }

                        if (File.Exists(Path.Combine(ExamScore.WaveFileName)))
                        {
                            File.Delete(ExamScore.WaveFileName);
                        }

                        if (GlobalUser.MenuType == MenuType.Sync)
                        {
                            //更新 当前 同步 评分
                            Messenger.Default.Send(
                                new SyncScoreCallbckMessage(ExamScore.ModelTarget, score, ExamScore.EType),
                                ExamScore.ModelTarget);
                            //更新 左侧列表 得分
                            Messenger.Default.Send(
                                new SyncUploadScoreCallbckMessage(ExamScore.ModelTarget, Convert.ToInt32(score.result.overall), ExamScore.AnswerModel.item_id),
                                "SyncUploadScoreNavi");
                        }
                    }
                }
                catch (Exception ex)
                {
                    //errStr = $"[user:{GlobalUser.USER?.Mobile},error:{ex},scoreJson: {scoreJson}]";
                    msgInfo.msginfo   = "上传评分失败";
                    msgInfo.error     = ex;
                    msgInfo.scoreJson = scoreJson;
                    msgInfo.isErr     = true;

                    Log4NetHelper.Error(msgInfo.ToJson());
                    //Log4NetHelper.Error($"scoreJson: {scoreJson}");
                    Log4NetHelper.Error($"record url: {ExamScore.WaveFileName}");
                }
                finally
                {
                    if (msgInfo.isErr)
                    {
                        GlobalUser.DoneScore = ScoreType.ScoreFailure;

                        if (!GlobalUser.ErrScoreInfo.ContainsKey(ExamScore.WaveFileName))
                        {
                            ExamScore.SubmitNum++;
                            GlobalUser.ErrScoreInfo.Add(ExamScore.WaveFileName, ExamScore);
                        }

                        GlobalUser.UpdateErrScore(GlobalUser.USER.Mobile,
                                                  GlobalUser.SelectPaperNumber,
                                                  GlobalUser.AttendPaperItemId);

                        Log_Data log   = new Log_Data();
                        log.log_desc   = Log_Type.PC_Score.ToString();
                        log.log_text   = msgInfo.ToJson();
                        log.log_device = JsonHelper.ToJson(GlobalUser.MACHINEINFO.GetDevice());
                        WebApiProxy.GetHtmlRespInfo(log, ApiType.SysLog, null, "Post");
                    }
                }
            }));
        }
示例#7
0
        private void UpdateAnswer(string scoreJson)
        {
            Application.Current.Dispatcher.Invoke(new Action(() =>
            {
                try
                {
                    if (GlobalUser.DoAnswer)
                    {
                        ScoreRoot score = JsonHelper.FromJson <ScoreRoot>(scoreJson.Replace("\"params\"", "\"param\""));

                        string scoreStr = "0";

                        if (ExamScore.EType == EngineType.CHOICE)
                        {
                            var answer =
                                ExamScore.AnswerModel.item_answer.Split(new string[] { "|" }, StringSplitOptions.None);

                            ExamScore.AnswerModel.item_answer = answer[answer.Length - 1];

                            if (score.result.confidence >= 45 ||
                                ExamScore.AnswerModel.item_answer == score.result.recognition)
                            {
                                scoreStr = ExamScore.AnswerModel.item_score.ToString("000.00");
                            }
                        }
                        else
                        {
                            scoreStr =
                                ((score.result.overall / 100) * ExamScore.AnswerModel.item_score).ToString("000.00");
                        }

                        ExamScore.AnswerModel.user_answer = scoreJson.TrimEnd('\0');

                        ExamScore.AnswerModel.exam_score = score.result.overall; //Convert.ToSingle(scoreStr);

                        if (ExamScore.AnswerModel.item_score < 0)
                        {
                            ExamScore.AnswerModel.exam_score = Math.Abs(ExamScore.AnswerModel.item_score);
                        }


                        var result = WebApiProxy.GetHtmlRespInfo(ExamScore.AnswerModel, ApiType.SubmitRecord,
                                                                 GlobalUser.USER.Token);

                        Log4NetHelper.Info($"完成评分 -- result:{result.retCode == 1} {result.retCode} {result.retMsg}");

                        //Log4NetHelper.Info($"完成评分 -- 音频文件: {ExamScore.WaveFileName}");

                        GlobalUser.DoneItemExam = true;
                        GlobalUser.DoneScore    = ScoreType.ScoreSuccess; //评分
                        if (result?.retCode != 0)
                        {
                            GlobalUser.DoneScore = ScoreType.ScoreFailure;
                            Log4NetHelper.Error(
                                $"上传评分失败 -- result:{result.retCode == 1} {result.retCode} {result.retMsg}");
                        }
                    }
                    else
                    {
                        GlobalUser.DoneScore = ScoreType.NoScore;
                        Log4NetHelper.Error($"评分失败 -- result: 当前不是做题过程!");
                    }
                }
                catch (Exception ex)
                {
                    GlobalUser.DoneScore = ScoreType.NoScore;
                    Log4NetHelper.Error($"评分失败 -- result: 当前不是做题过程!", ex);
                    Log4NetHelper.Error($"scoreJson: {scoreJson}");
                    Log4NetHelper.Error($"record url: {ExamScore.WaveFileName}");
                }
            }));
        }
示例#8
0
 /// <summary>
 /// 返回 评分结果
 /// 刷新 评测页面信息
 /// </summary>
 /// <param name="modelTarget">对象 类型  ViewModel 名称</param>
 /// <param name="scoreResult">评分对象</param>
 /// <param name="eType">评测 题型 EngineType.WORD</param>
 public SyncScoreCallbckMessage(string modelTarget, ScoreRoot scoreResult, string eType)
 {
     this.ModelTarget = modelTarget;
     this.ScoreResult = scoreResult;
     this.EType       = eType;
 }