using Competition.Common.Util; using CompetitionAPI.api.unity; using CompetitionAPI.Util; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting.Server; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace CompetitionAPI.Controllers.unity { [Route("unity/[controller]")] [ApiController] public class StartExamController : Controller { private readonly IWebHostEnvironment _webHostEnvironment; Competition.Mysql.BLL.pow_user_exam user_exam_bll = new Competition.Mysql.BLL.pow_user_exam(); Competition.Mysql.BLL.pow_exam_tool exam_tool_bll = new Competition.Mysql.BLL.pow_exam_tool(); Competition.Mysql.BLL.pow_exam exam_bll = new Competition.Mysql.BLL.pow_exam(); Competition.Mysql.BLL.admin_user user_bll = new Competition.Mysql.BLL.admin_user(); Competition.Mysql.BLL.pow_exam_fault exam_fault_bll = new Competition.Mysql.BLL.pow_exam_fault(); Competition.Mysql.BLL.pow_exam_operation_ticket pow_exam_operation_ticket_bll = new Competition.Mysql.BLL.pow_exam_operation_ticket(); Competition.Mysql.BLL.pow_config config_bll = new Competition.Mysql.BLL.pow_config(); public StartExamController(IWebHostEnvironment webHostEnvironment) { _webHostEnvironment = webHostEnvironment; } /// /// 开始考试接口 /// /// /// [Authorize] [HttpPost] [APIFilter] public JsonResult Index([FromForm] StartExamRequest req) { try { var user_model = user_bll.GetModel(req.UserId); if (user_model == null) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考生信息不存在")); } var count = user_exam_bll.GetRecordCount(" ExamId='" + req.ExamId + "' and UserId='" + req.UserId + "' "); if (count > 0) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试考试信息已存在")); } var exam_model = exam_bll.GetAllList(" ExamId='" + req.ExamId + "' ").FirstOrDefault(); if (exam_model != null) { var user_exam_model = new Competition.Mysql.Model.pow_user_exam(); user_exam_model.UserExamId = Guid.NewGuid().ToString("N"); user_exam_model.UserId = req.UserId; user_exam_model.ExamId = req.ExamId; user_exam_model.ExamName = exam_model.ExamName; user_exam_model.StartExamTime = exam_model.StartExamTime; user_exam_model.EndExamTime = exam_model.EndExamTime; user_exam_model.ExaminationDuration = exam_model.ExaminationDuration + ":00"; user_exam_model.SceneId = exam_model.SceneId; user_exam_model.SceneName = exam_model.SceneName; user_exam_model.PlatformAreaId = exam_model.PlatformAreaId; user_exam_model.PlatformAreaName = exam_model.PlatformAreaName; user_exam_model.LineId = exam_model.LineId; user_exam_model.LineName = exam_model.LineName; user_exam_model.LinePatrolDate = exam_model.LinePatrolDate; user_exam_model.HandleDate = exam_model.HandleDate; user_exam_model.WorkOrderContent = exam_model.WorkOrderContent; user_exam_model.BackgroundInformation = exam_model.BackgroundInformation; user_exam_model.IncomingLineModelLength = exam_model.IncomingLineModelLength; user_exam_model.OutgoingLineModelLength = exam_model.OutgoingLineModelLength; user_exam_model.StartExamTime = DateTime.Now; user_exam_model.Status = "考试中"; user_exam_model.ExaminationLink = "初始化"; user_exam_model.CreateTime = DateTime.Now; user_exam_model.LeakageProtection = exam_model.LeakageProtection; user_exam_model.OverloadProtection = exam_model.OverloadProtection; user_exam_model.ShortCircuitDelayProtection = exam_model.ShortCircuitDelayProtection; user_exam_model.ShortCircuitProtection = exam_model.ShortCircuitProtection; user_exam_model.UndervoltageProtection = exam_model.UndervoltageProtection; user_exam_model.OvervoltageProtection = exam_model.OvervoltageProtection; user_exam_model.PhaseLossProtection = exam_model.PhaseLossProtection; user_exam_model.FusibleCoreCurrent = exam_model.FusibleCoreCurrent; user_exam_model.LineIsScore = "0"; user_exam_model.FaultIsScore = "0"; user_exam_model.ClimbrodIsScore = "0"; user_exam_model.IsScore = "0"; user_exam_model.FusibleCoreIsScore = "0"; var config = config_bll.GetModelList("").FirstOrDefault(); if (config != null) { if (!string.IsNullOrEmpty(config.EnclosureScore)) { user_exam_model.EnclosureIsScore = config.EnclosureScore; } } var tool_list = exam_tool_bll.GetModelList(" ExamId='" + exam_model.ExamId + "' "); var achievement_model = new Competition.Mysql.Model.pow_achievement(); achievement_model.AchievementId = Guid.NewGuid().ToString("N"); achievement_model.ExamId = exam_model.ExamId; achievement_model.ExamName = exam_model.ExamName; achievement_model.UserId = user_model.user_id; achievement_model.LoginName = user_model.login_name; achievement_model.RealName = user_model.real_name; achievement_model.ProvinceId = user_model.province_id; achievement_model.ProvinceName = user_model.province; achievement_model.CityId = user_model.city_id; achievement_model.CityName = user_model.city; achievement_model.TotalScore = 0; achievement_model.ExamStartTime = DateTime.Now; var exam_fault_list = exam_fault_bll.GetModelList(" ExamId='" + exam_model.ExamId + "' "); var fault_list = exam_fault_list.Where(a => a.FaultDesc == "出线电缆编号牌型号编写错误").ToList(); if (fault_list.Count > 0) { foreach (var item in fault_list) { var name = item.CableName.Replace("台区一", "").Replace("台区二", "").Replace("台区三", "").Replace("台区四", "").Replace("台区五", ""); var start = item.CableStart.Replace("台区一", "").Replace("台区二", "").Replace("台区三", "").Replace("台区四", "").Replace("台区五", ""); var end = item.CableEnd.Replace("台区一", "").Replace("台区二", "").Replace("台区三", "").Replace("台区四", "").Replace("台区五", ""); var success = new List(); var dic_name = "/Upload/Cable/" + DateTime.Now.ToString("yyyy-MM-dd") + "/"; var dir_path = _webHostEnvironment.WebRootPath + dic_name; if (!Directory.Exists(dir_path)) Directory.CreateDirectory(dir_path); var path1 = dic_name + Guid.NewGuid().ToString("N") + ".jpg"; var result1 = Tool.GeneratePictures("台区一" + name, "台区一" + start, "台区一" + end, item.ModelLength, path1, _webHostEnvironment.WebRootPath); if (result1) { success.Add(path1); } var path2 = dic_name + Guid.NewGuid().ToString("N") + ".jpg"; var result2 = Tool.GeneratePictures("台区二" + name, "台区二" + start, "台区二" + end, item.ModelLength, path2, _webHostEnvironment.WebRootPath); if (result2) { success.Add(path2); } var path3 = dic_name + Guid.NewGuid().ToString("N") + ".jpg"; var result3 = Tool.GeneratePictures("台区三" + name, "台区三" + start, "台区三" + end, item.ModelLength, path3, _webHostEnvironment.WebRootPath); if (result3) { success.Add(path3); } var path4 = dic_name + Guid.NewGuid().ToString("N") + ".jpg"; var result4 = Tool.GeneratePictures("台区四" + name, "台区四" + start, "台区四" + end, item.ModelLength, path4, _webHostEnvironment.WebRootPath); if (result4) { success.Add(path4); } var path5 = dic_name + Guid.NewGuid().ToString("N") + ".jpg"; var result5 = Tool.GeneratePictures("台区五" + name, "台区五" + start, "台区五" + end, item.ModelLength, path5, _webHostEnvironment.WebRootPath); if (result5) { success.Add(path5); } if (success.Count != 5) { foreach (var pic in success) { string path = _webHostEnvironment.WebRootPath + pic; if (System.IO.File.Exists(path)) { System.IO.File.Delete(path); } } return Json(Tool.GetJsonWithCode(APICode.Fail, "创建考试失败")); } else { item.SensitiveKnowledge = path1; item.Minhui = path2; item.SensitiveLine = path3; item.Allergy = path4; item.GracefulGraceful = path5; } } } var exam_operation_ticket_list = pow_exam_operation_ticket_bll.GetModelList(" ExamId='" + exam_model.ExamId + "' ").OrderBy(s => s.Type).ThenBy(s => s.SerialNumber).ToList(); if (user_exam_bll.OperationAddAllData(user_exam_model, tool_list, achievement_model, exam_fault_list, exam_operation_ticket_list) > 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, "发生错误,请联系管理员。")); } } } }