CompetitionAPI_dotnet/CompetitionAPI/Controllers/back/CopyExamController.cs

194 lines
9.8 KiB
C#

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;
}
/// <summary>
/// 复制考试接口
/// </summary>
/// <param name="ExamId">考试id</param>
/// <returns></returns>
[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<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;
}
}
}
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;
}
}
}