public ActionResult submitTest() { try { #region 验证参数 string templateName = Request.Form["templateName"]; if (string.IsNullOrEmpty(templateName)) { return(Json(new { Status = -9, Data = string.Empty, Msg = "参数不正确" })); } #endregion #region 生成订单 DateTime dtNow = DateTime.Now; string testNo = dtNow.Year.ToString().PadLeft(4, '0') + dtNow.Month.ToString().PadLeft(2, '0') + dtNow.Day.ToString().PadLeft(2, '0') + dtNow.Hour.ToString().PadLeft(2, '0') + dtNow.Minute.ToString().PadLeft(2, '0') + dtNow.Second.ToString().PadLeft(2, '0'); HPN_TESTRESULT test = new HPN_TESTRESULT(); test.INPUTTIME = dtNow; test.TESTNO = testNo; test.OTHERTESTNO = string.Empty; UserInfo user = _user.GetCurrentUser(); test.USERID = user == null ? "0" : user.UserId; test.TEMPLATENAME = templateName; test.STATUS = 1; test.IP = StringExtension.getIPAddress(); test.RESULT = string.Empty; test.RESULT = string.Empty; test.RESULTDETAIL = string.Empty; test.ID = Guid.NewGuid().ToString(); #endregion #region 保存明细 List <HPN_TEMPLATEITEM> questions = templateService.getTemplateItemList(templateName).ToList(); if (questions.Count <= 0) { return(Json(new { Status = -8, Data = string.Empty, Msg = "模版关键字不正确" })); } List <HPN_TEMPLATEITEMOPTIONS> options = templateService.getTemplateItemOptionsListByTemplateName(templateName); HPN_TESTRESULTDETAILS detail = new HPN_TESTRESULTDETAILS(); List <HPN_TESTRESULTDETAILS> testDetails = new List <HPN_TESTRESULTDETAILS>(); foreach (HPN_TEMPLATEITEM item in questions) { if (item.TAGTYPE == 4) { detail = new HPN_TESTRESULTDETAILS(); detail.INPUTTIME = dtNow; detail.TESTNO = testNo; detail.TEMPLATEITEMNAME = item.KWD; HPN_TEMPLATEITEMOPTIONS option = options.Find(p => p.TEMPLATEITEMNAME == item.KWD && p.VALUE.Trim() == Request.Form[item.KWD].Trim()); detail.ITEMRESULTID = option.IDATTR; detail.ITEMRESULT = Request.Form[item.KWD]; } else { //直接写 detail = new HPN_TESTRESULTDETAILS(); detail.INPUTTIME = dtNow; detail.TESTNO = testNo; detail.TEMPLATEITEMNAME = item.KWD; detail.ITEMRESULTID = item.KWD; if ((templateName == "Psqi" && item.KWD == "psqi_1") || (templateName == "Psqi" && item.KWD == "psqi_3")) { string val = Request.Form[item.KWD]; string[] arr = val.Split(':'); if (arr.Length == 2) { val = (arr[0].ToDouble(0) + arr[1].ToDouble(0) / 60).ToString(); } detail.ITEMRESULT = val; } else { detail.ITEMRESULT = Request.Form[item.KWD]; } } detail.ID = Guid.NewGuid().ToString(); testDetails.Add(detail); } #endregion #region 计算分数 TemplateService _tservice = new TemplateService(_db); test = _tservice.handleResult(test, testDetails); #endregion #region 保存结果 _db.Set <HPN_TESTRESULT>().Add(test); _db.Set <HPN_TESTRESULTDETAILS>().AddRange(testDetails); _db.SaveChanges(); #endregion return(Json(new { Status = 1, Data = string.Empty, Msg = "操作成功", Url = "/result/" + testNo })); } catch (Exception ex) { LogService.WriteErrorLog("HPNController[Post]", ex.ToString()); return(Json(new { Status = -99, Data = string.Empty, Msg = ex.Message })); } }
public override double calculateResult(HPN_TESTRESULT testResult, List <HPN_TESTRESULTDETAILS> testDetails) { //计算分数,并且把结果保存到HPN_TestResult的Remark字段,本函数返回分数 double score = 0, subscore = 0; Dictionary <string, string> dic = new Dictionary <string, string>(); string testNo = testDetails.First().TESTNO; StringBuilder sb = new StringBuilder("<div class='panel-group' id='Scl' style='margin-bottom:2rem;'>"); #region A睡眠质量 HPN_TESTRESULTDETAILS testResultDetail = testDetails.Find(p => p.TEMPLATEITEMNAME == "psqi_6"); subscore = testResultDetail.ITEMRESULT.ToDouble(0); score += subscore; sb.Append("<div class='panel panel-default'>"); sb.Append("<div class='panel-heading'>"); sb.Append("<h4 class='panel-title'>"); sb.Append("<a data-toggle='collapse' style='text-decoration:none; width: 100 %; display: block; '>"); sb.AppendFormat("{0}<span class='pull-right'>{1}</span>", "睡眠质量", subscore + "分"); sb.Append("</a>"); sb.Append("</h4>"); sb.Append("</div>"); sb.Append("</div>"); subscore = 0; #endregion #region B入睡时间 testResultDetail = testDetails.Find(p => p.TEMPLATEITEMNAME == "psqi_2"); double d = testResultDetail.ITEMRESULT.ToDouble(0); if (d >= 16 && d <= 30) { subscore += 1; } else if (d >= 31 && d < 60) { subscore += 2; } else if (d >= 60) { subscore += 3; } testResultDetail = testDetails.Find(p => p.TEMPLATEITEMNAME == "psqi_5_a"); subscore += testResultDetail.ITEMRESULT.ToDouble(0); if (subscore >= 1 && subscore <= 2) { subscore = 1; } else if (subscore >= 3 && subscore <= 4) { subscore = 2; } else if (subscore >= 5) { subscore = 3; } score += subscore; sb.Append("<div class='panel panel-default'>"); sb.Append("<div class='panel-heading'>"); sb.Append("<h4 class='panel-title'>"); sb.Append("<a data-toggle='collapse' style='text-decoration:none; width: 100 %; display: block; '>"); sb.AppendFormat("{0}<span class='pull-right'>{1}</span>", "入睡时间", subscore + "分"); sb.Append("</a>"); sb.Append("</h4>"); sb.Append("</div>"); sb.Append("</div>"); subscore = 0; #endregion #region C睡眠时间 testResultDetail = testDetails.Find(p => p.TEMPLATEITEMNAME == "psqi_4"); d = testResultDetail.ITEMRESULT.ToDouble(0); if (d < 5) { subscore = 3; } else if (d >= 5 && d < 6) { subscore = 2; } else if (d >= 6 && d < 7) { subscore = 1; } score += subscore; sb.Append("<div class='panel panel-default'>"); sb.Append("<div class='panel-heading'>"); sb.Append("<h4 class='panel-title'>"); sb.Append("<a data-toggle='collapse' style='text-decoration:none; width: 100 %; display: block; '>"); sb.AppendFormat("{0}<span class='pull-right'>{1}</span>", "睡眠时间", subscore + "分"); sb.Append("</a>"); sb.Append("</h4>"); sb.Append("</div>"); sb.Append("</div>"); subscore = 0; #endregion #region D睡眠效率 testResultDetail = testDetails.Find(p => p.TEMPLATEITEMNAME == "psqi_3"); HPN_TESTRESULTDETAILS tempResultDetail = testDetails.Find(p => p.TEMPLATEITEMNAME == "psqi_1"); double time1 = testResultDetail.ITEMRESULT.ToDouble(0) + 24 - tempResultDetail.ITEMRESULT.ToDouble(0); testResultDetail = testDetails.Find(p => p.TEMPLATEITEMNAME == "psqi_4"); double persent = testResultDetail.ITEMRESULT.ToDouble(0) / time1 * 100; if (persent < 65) { subscore = 3; } else if (persent >= 65 && persent < 75) { subscore = 2; } else if (persent >= 75 && persent < 85) { subscore = 1; } score += subscore; sb.Append("<div class='panel panel-default'>"); sb.Append("<div class='panel-heading'>"); sb.Append("<h4 class='panel-title'>"); sb.Append("<a data-toggle='collapse' style='text-decoration:none; width: 100 %; display: block; '>"); sb.AppendFormat("{0}<span class='pull-right'>{1}</span>", "睡眠效率", subscore + "分"); sb.Append("</a>"); sb.Append("</h4>"); sb.Append("</div>"); sb.Append("</div>"); subscore = 0; #endregion #region E睡眠障碍 testResultDetail = testDetails.Find(p => p.TEMPLATEITEMNAME == "psqi_5_b"); subscore += testResultDetail.ITEMRESULT.ToDouble(0); testResultDetail = testDetails.Find(p => p.TEMPLATEITEMNAME == "psqi_5_c"); subscore += testResultDetail.ITEMRESULT.ToDouble(0); testResultDetail = testDetails.Find(p => p.TEMPLATEITEMNAME == "psqi_5_d"); subscore += testResultDetail.ITEMRESULT.ToDouble(0); testResultDetail = testDetails.Find(p => p.TEMPLATEITEMNAME == "psqi_5_e"); subscore += testResultDetail.ITEMRESULT.ToDouble(0); testResultDetail = testDetails.Find(p => p.TEMPLATEITEMNAME == "psqi_5_f"); subscore += testResultDetail.ITEMRESULT.ToDouble(0); testResultDetail = testDetails.Find(p => p.TEMPLATEITEMNAME == "psqi_5_g"); subscore += testResultDetail.ITEMRESULT.ToDouble(0); testResultDetail = testDetails.Find(p => p.TEMPLATEITEMNAME == "psqi_5_h"); subscore += testResultDetail.ITEMRESULT.ToDouble(0); testResultDetail = testDetails.Find(p => p.TEMPLATEITEMNAME == "psqi_5_i"); subscore += testResultDetail.ITEMRESULT.ToDouble(0); testResultDetail = testDetails.Find(p => p.TEMPLATEITEMNAME == "psqi_5_j"); subscore += testResultDetail.ITEMRESULT.ToDouble(0); if (subscore >= 19) { subscore = 3; } else if (subscore >= 10 && subscore < 19) { subscore = 2; } else if (subscore >= 1 && subscore < 10) { subscore = 1; } score += subscore; sb.Append("<div class='panel panel-default'>"); sb.Append("<div class='panel-heading'>"); sb.Append("<h4 class='panel-title'>"); sb.Append("<a data-toggle='collapse' style='text-decoration:none; width: 100 %; display: block; '>"); sb.AppendFormat("{0}<span class='pull-right'>{1}</span>", "睡眠障碍", subscore + "分"); sb.Append("</a>"); sb.Append("</h4>"); sb.Append("</div>"); sb.Append("</div>"); subscore = 0; #endregion #region F催眠药物 testResultDetail = testDetails.Find(p => p.TEMPLATEITEMNAME == "psqi_7"); subscore = testResultDetail.ITEMRESULT.ToDouble(0); score += subscore; sb.Append("<div class='panel panel-default'>"); sb.Append("<div class='panel-heading'>"); sb.Append("<h4 class='panel-title'>"); sb.Append("<a data-toggle='collapse' style='text-decoration:none; width: 100 %; display: block; '>"); sb.AppendFormat("{0}<span class='pull-right'>{1}</span>", "催眠药物", subscore + "分"); sb.Append("</a>"); sb.Append("</h4>"); sb.Append("</div>"); sb.Append("</div>"); subscore = 0; #endregion #region G日间功能障碍 testResultDetail = testDetails.Find(p => p.TEMPLATEITEMNAME == "psqi_8"); subscore = testResultDetail.ITEMRESULT.ToDouble(0); testResultDetail = testDetails.Find(p => p.TEMPLATEITEMNAME == "psqi_9"); subscore = testResultDetail.ITEMRESULT.ToDouble(0); if (subscore >= 5) { subscore = 3; } else if (subscore >= 3 && subscore <= 4) { subscore = 2; } else if (subscore >= 1 && subscore <= 2) { subscore = 1; } score += subscore; sb.Append("<div class='panel panel-default'>"); sb.Append("<div class='panel-heading'>"); sb.Append("<h4 class='panel-title'>"); sb.Append("<a data-toggle='collapse' style='text-decoration:none; width: 100 %; display: block; '>"); sb.AppendFormat("{0}<span class='pull-right'>{1}</span>", "日间功能障碍", subscore + "分"); sb.Append("</a>"); sb.Append("</h4>"); sb.Append("</div>"); sb.Append("</div>"); subscore = 0; #endregion sb.Append("</div>"); testResult.RESULTDETAIL = string.Format("测试结果为:{0}分", score); testResult.TESTRESULT = sb.ToString(); return(score); }