222 lines
12 KiB
C#
222 lines
12 KiB
C#
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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 开始考试接口
|
|
/// </summary>
|
|
/// <param name="req"></param>
|
|
/// <returns></returns>
|
|
[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<string>();
|
|
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, "发生错误,请联系管理员。"));
|
|
}
|
|
}
|
|
}
|
|
}
|