using Competition.Common.Util; using CompetitionAPI.api.unity; using CompetitionAPI.Util; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace CompetitionAPI.Controllers.unity { [Route("unity/[controller]")] [ApiController] public class EndExamController : Controller { Competition.Mysql.BLL.pow_user_exam user_exam_bll = new Competition.Mysql.BLL.pow_user_exam(); Competition.Mysql.BLL.pow_exam exam_bll = new Competition.Mysql.BLL.pow_exam(); Competition.Mysql.BLL.pow_achievement achievement_bll = new Competition.Mysql.BLL.pow_achievement(); Competition.Mysql.BLL.pow_achievement_details achievement_details_bll = new Competition.Mysql.BLL.pow_achievement_details(); Competition.Mysql.BLL.pow_config config_bll = new Competition.Mysql.BLL.pow_config(); Competition.Mysql.BLL.pow_train_record record_bll = new Competition.Mysql.BLL.pow_train_record(); Competition.Mysql.BLL.admin_user user_bll = new Competition.Mysql.BLL.admin_user(); public EndExamController() { } /// /// 结束考试接口 /// /// /// [Authorize] [HttpPost] [APIFilter] public JsonResult Index([FromForm] EndExamRequest req) { try { var config_model = config_bll.GetModelList("").FirstOrDefault(); if (config_model == null) { return Json(Tool.GetJsonWithCode(APICode.Fail, "配置信息不存在")); } var achievement_model = achievement_bll.GetModelList(" ExamId='" + req.ExamId + "' and UserId='" + req.UserId + "' ").FirstOrDefault(); if (achievement_model == null) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考生成绩信息不存在")); } var user_exam_model = user_exam_bll.GetModelList(" ExamId='" + req.ExamId + "' and UserId='" + req.UserId + "' ").FirstOrDefault(); var add_achievement_details_list = new List(); if (user_exam_model != null) { user_exam_model.EndExamTime = DateTime.Now; user_exam_model.Status = "已结束"; if (user_exam_model.EnclosureIsScore != "2") { var item_name = "不放置围栏分值"; var achievement_details_model = achievement_details_bll.GetModelList(" AchievementId='" + achievement_model.AchievementId + "' and ItemName='" + item_name + "' ").FirstOrDefault(); if (achievement_details_model == null) { var enclosure_is_score = decimal.Parse(user_exam_model.EnclosureIsScore); var points_score = 2 - enclosure_is_score; achievement_model.TotalScore = achievement_model.TotalScore + enclosure_is_score; if (achievement_model.TotalScore < 0) { achievement_model.TotalScore = 0; } var details_model = new Competition.Mysql.Model.pow_achievement_details(); details_model.DetailsId = Guid.NewGuid().ToString("N"); details_model.AchievementId = achievement_model.AchievementId; details_model.ItemName = "不放置围栏分值"; details_model.ItemizedScore = -points_score; details_model.Type = "围栏"; details_model.CreateTime = DateTime.Now; details_model.TotalScore = 2; add_achievement_details_list.Add(details_model); } } else { var item_name = "不放置围栏分值"; var achievement_details_model = achievement_details_bll.GetModelList(" AchievementId='" + achievement_model.AchievementId + "' and ItemName='" + item_name + "' ").FirstOrDefault(); if (achievement_details_model == null) { var enclosure_is_score = decimal.Parse(user_exam_model.EnclosureIsScore); achievement_model.TotalScore = achievement_model.TotalScore + enclosure_is_score; if (achievement_model.TotalScore < 0) { achievement_model.TotalScore = 0; } var details_model = new Competition.Mysql.Model.pow_achievement_details(); details_model.DetailsId = Guid.NewGuid().ToString("N"); details_model.AchievementId = achievement_model.AchievementId; details_model.ItemName = "不放置围栏分值"; details_model.ItemizedScore = 2; details_model.Type = "围栏"; details_model.CreateTime = DateTime.Now; details_model.TotalScore = 2; add_achievement_details_list.Add(details_model); } } if (user_exam_model.LineIsScore == "1" || user_exam_model.FaultIsScore == "1") { var item_name = "箱门或插座未验电或验电顺序错误"; var achievement_details_model = achievement_details_bll.GetModelList(" AchievementId='" + achievement_model.AchievementId + "' and ItemName='" + item_name + "' ").FirstOrDefault(); if (achievement_details_model == null) { var electricity_score = decimal.Parse(config_model.ElectricityScore); achievement_model.TotalScore = achievement_model.TotalScore - electricity_score; if (achievement_model.TotalScore < 0) { achievement_model.TotalScore = 0; } var details_model = new Competition.Mysql.Model.pow_achievement_details(); details_model.DetailsId = Guid.NewGuid().ToString("N"); details_model.AchievementId = achievement_model.AchievementId; details_model.ItemName = "箱门或插座未验电或验电顺序错误"; details_model.ItemizedScore = -30; details_model.Type = "验电"; details_model.CreateTime = DateTime.Now; details_model.TotalScore = 2; add_achievement_details_list.Add(details_model); } } else { var item_name = "箱门或插座未验电或验电顺序错误"; var achievement_details_model = achievement_details_bll.GetModelList(" AchievementId='" + achievement_model.AchievementId + "' and ItemName='" + item_name + "' ").FirstOrDefault(); if (achievement_details_model == null) { achievement_model.TotalScore = achievement_model.TotalScore + 2; var details_model = new Competition.Mysql.Model.pow_achievement_details(); details_model.DetailsId = Guid.NewGuid().ToString("N"); details_model.AchievementId = achievement_model.AchievementId; details_model.ItemName = "箱门或插座未验电或验电顺序错误"; details_model.ItemizedScore = 2; details_model.Type = "验电"; details_model.CreateTime = DateTime.Now; details_model.TotalScore = 2; add_achievement_details_list.Add(details_model); } } #region 巡检爬杆 if (user_exam_model.ClimbrodIsScore == "1") { var item_name = "巡检爬杆"; var achievement_details_model = achievement_details_bll.GetModelList(" AchievementId='" + achievement_model.AchievementId + "' and ItemName='" + item_name + "' ").FirstOrDefault(); if (achievement_details_model == null) { var electricity_score = decimal.Parse(config_model.ClimbrodScore); achievement_model.TotalScore = achievement_model.TotalScore - electricity_score; if (achievement_model.TotalScore < 0) { achievement_model.TotalScore = 0; } var details_model = new Competition.Mysql.Model.pow_achievement_details(); details_model.DetailsId = Guid.NewGuid().ToString("N"); details_model.AchievementId = achievement_model.AchievementId; details_model.ItemName = "巡检爬杆"; details_model.ItemizedScore = -30; details_model.Type = "巡检爬杆"; details_model.CreateTime = DateTime.Now; details_model.TotalScore = 0; add_achievement_details_list.Add(details_model); } } #endregion if (user_exam_model.IsScore == "1") { var item_name = "台区选择错误分值"; var achievement_details_model = achievement_details_bll.GetModelList(" AchievementId='" + achievement_model.AchievementId + "' and ItemName='" + item_name + "' ").FirstOrDefault(); if (achievement_details_model == null) { var select_area_score = decimal.Parse(config_model.SelectAreaScore); achievement_model.TotalScore = achievement_model.TotalScore - select_area_score; if (achievement_model.TotalScore < 0) { achievement_model.TotalScore = 0; } var details_model = new Competition.Mysql.Model.pow_achievement_details(); details_model.DetailsId = Guid.NewGuid().ToString("N"); details_model.AchievementId = achievement_model.AchievementId; details_model.ItemName = "台区选择错误分值"; details_model.ItemizedScore = -30; details_model.Type = "台区选择"; details_model.CreateTime = DateTime.Now; details_model.TotalScore = 0; add_achievement_details_list.Add(details_model); } } if (user_exam_model.FusibleCoreIsScore == "1") { var item_name = "未分闸状态拉合熔芯扣分分值"; var achievement_details_model = achievement_details_bll.GetModelList(" AchievementId='" + achievement_model.AchievementId + "' and ItemName='" + item_name + "' ").FirstOrDefault(); if (achievement_details_model == null) { achievement_model.TotalScore = achievement_model.TotalScore - 30; if (achievement_model.TotalScore < 0) { achievement_model.TotalScore = 0; } var details_model = new Competition.Mysql.Model.pow_achievement_details(); details_model.DetailsId = Guid.NewGuid().ToString("N"); details_model.AchievementId = achievement_model.AchievementId; details_model.ItemName = "未分闸状态拉合熔芯扣分分值"; details_model.ItemizedScore = -30; details_model.Type = "未分闸状态拉合熔芯"; details_model.CreateTime = DateTime.Now; details_model.TotalScore = 0; add_achievement_details_list.Add(details_model); } } //故障算分bug临时处理 if (achievement_model.TotalScore > 95) { achievement_model.TotalScore = 95; } var record_model = new Competition.Mysql.Model.pow_train_record(); var exam_model = exam_bll.GetModel(req.ExamId); if (exam_model != null) { if (exam_model.Type == "实训") { var user_model = user_bll.GetModel(req.UserId); record_model = record_bll.GetModelList(string.Format(" ExamId='{0}' and UserId='{1}' ", req.ExamId, req.UserId)).FirstOrDefault(); if (record_model == null) { record_model = new Competition.Mysql.Model.pow_train_record(); record_model.RecordId = Guid.NewGuid().ToString("N"); record_model.ExamId = req.ExamId; record_model.UserId = req.UserId; record_model.RealName = user_model != null ? user_model.real_name : ""; record_model.Schedule = "100"; record_model.TrainNumber = 1; record_model.StudyTime = DateTime.Now; record_model.CreateTime = DateTime.Now; } else { record_model.TrainNumber = record_model.TrainNumber.Value + 1; record_model.StudyTime = DateTime.Now; } } else { record_model = null; } } else { record_model = null; } if (user_exam_bll.OperationUpdateAllData(DateTime.Now, "已结束", user_exam_model.UserExamId, achievement_model.AchievementId, achievement_model.TotalScore, add_achievement_details_list, record_model) > 0) { return Json(Tool.GetJsonWithCode(APICode.Success, "结束考试成功")); } else { return Json(Tool.GetJsonWithCode(APICode.Fail, "结束考试失败")); } } else { return Json(Tool.GetJsonWithCode(APICode.Fail, "考生考试信息不存在")); } } catch (Exception ex) { LogHelper.WriteLog(ex.Message + ",行号:" + ex.StackTrace); return Json(Tool.GetJsonWithCode(APICode.Fail, "发生错误,请联系管理员。")); } } } }