using Competition.Common.Util; using CompetitionAPI.Util; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Org.BouncyCastle.Ocsp; using static NPOI.HSSF.Util.HSSFColor; namespace CompetitionAPI.Controllers.back { [Route("api/[controller]")] [ApiController] public class CopyExamController : Controller { private readonly IWebHostEnvironment _webHostEnvironment; Competition.Mysql.BLL.pow_exam exam_bll = new Competition.Mysql.BLL.pow_exam(); Competition.Mysql.BLL.pow_exam_fault exam_fault_bll = new Competition.Mysql.BLL.pow_exam_fault(); Competition.Mysql.BLL.pow_exam_operation_ticket exam_ticket_bll = new Competition.Mysql.BLL.pow_exam_operation_ticket(); Competition.Mysql.BLL.pow_exam_tool exam_tool_bll = new Competition.Mysql.BLL.pow_exam_tool(); private static Object Lockobj = new object(); public CopyExamController(IWebHostEnvironment webHostEnvironment) { _webHostEnvironment = webHostEnvironment; } /// /// 复制考试接口 /// /// 考试id /// [Authorize] [HttpGet] [APIFilter] public JsonResult Index(string ExamId, string ExamName) { try { lock (Lockobj) { if (string.IsNullOrWhiteSpace(ExamName)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试名称不能为空")); } if (ExamName.Length > 20) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试名称长度不能超过20个字符")); } var exam_model = exam_bll.GetModel(ExamId); if (exam_model != null) { if (exam_bll.GetRecordCount(string.Format(" ExamName = '{0}' and Type='{1}' ", ExamName, exam_model.Type)) > 0) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试名称禁止重复")); } var fault_list = exam_fault_bll.GetModelList(" ExamId='" + exam_model.ExamId + "' "); var ticket_list = exam_ticket_bll.GetModelList(" ExamId='" + exam_model.ExamId + "' "); var tool_list = exam_tool_bll.GetModelList(" ExamId='" + exam_model.ExamId + "' "); exam_model.ExamName = ExamName; //exam_model.ExamName = CreateExamName(exam_model.ExamName + "-副本", exam_model.Type); exam_model.Status = "未发布"; exam_model.ReleaseTime = null; exam_model.CreateTime = DateTime.Now; exam_model.ExamId = Guid.NewGuid().ToString("N"); if (exam_model.Type == "实训") { var dic_name = "/Upload/Cover/" + exam_model.CoverName + "~" + Guid.NewGuid().ToString("N") + "/"; var dir_path = _webHostEnvironment.WebRootPath + dic_name; if (!Directory.Exists(dir_path)) Directory.CreateDirectory(dir_path); var path1 = exam_model.CoverName; try { System.IO.File.Copy(_webHostEnvironment.WebRootPath + exam_model.CoverPath, dir_path + path1, true); } catch (Exception) { return Json(Tool.GetJsonWithCode(APICode.Fail, "复制封面图片失败")); } exam_model.CoverPath = dic_name + path1; } var exam_fault_list = fault_list.Where(a => a.FaultDesc == "出线电缆编号牌型号编写错误").ToList(); if (exam_fault_list.Count > 0) { foreach (var item in exam_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; } } } if (exam_bll.OperationAddAllData(exam_model, tool_list, fault_list, 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, "发生错误,请联系管理员。")); } } private string CreateExamName(string exam_name, string type) { var exam_count = exam_bll.GetRecordCount(string.Format(" ExamName='{0}' and Type='{1}' ", exam_name, type)); if (exam_count > 0) { exam_name = CreateExamName(exam_name + "-副本", type); } return exam_name; } } }