CompetitionAPI_dotnet/CompetitionAPI/Controllers/back/SaveFaultController.cs

249 lines
14 KiB
C#

using Competition.Common.Util;
using CompetitionAPI.api.back;
using CompetitionAPI.Util;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Hosting.Server;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
namespace CompetitionAPI.Controllers.back
{
[Route("api/[controller]")]
[ApiController]
public class SaveFaultController : Controller
{
private readonly IWebHostEnvironment _webHostEnvironment;
Competition.Mysql.BLL.pow_exam_fault exam_fault_bll = new Competition.Mysql.BLL.pow_exam_fault();
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.pow_fault fault_bll = new Competition.Mysql.BLL.pow_fault();
Competition.Mysql.BLL.pow_tool tool_bll = new Competition.Mysql.BLL.pow_tool();
public SaveFaultController(IWebHostEnvironment webHostEnvironment)
{
_webHostEnvironment = webHostEnvironment;
}
/// <summary>
/// 保存所有故障接口
/// </summary>
/// <returns></returns>
[Authorize]
[HttpPost]
[APIFilter]
public JsonResult Index([FromBody] SaveFaultRequest req)
{
try
{
if (req != null)
{
if (string.IsNullOrEmpty(req.ExamId))
{
return Json(Tool.GetJsonWithCode(APICode.Fail, "考试id不能为空"));
}
string Id = req.ExamId;
var list = req.Data;
var model = list.Where(a => a.FaultDesc == "熔芯不匹配").FirstOrDefault();
var img_url_list = new List<string>();
var fault_list = list.Where(a => a.FaultDesc == "出线电缆编号牌型号编写错误").ToList();
var old_fault_list = new List<Competition.Mysql.Model.pow_exam_fault>();
foreach (var fault_model in fault_list)
{
var success = new List<string>();
if (fault_model != null)
{
var old_fault_model = exam_fault_bll.GetModelList(" ExamFaultId='" + fault_model.ExamFaultId + "' ").FirstOrDefault();
if (old_fault_model != null)
{
old_fault_list.Add(old_fault_model);
}
var now = DateTime.Now;
var dic_name = "/Upload/Cable/" + 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 name = fault_model.CableName.Replace("台区一", "").Replace("台区二", "").Replace("台区三", "").Replace("台区四", "").Replace("台区五", "");
var start = fault_model.CableStart.Replace("台区一", "").Replace("台区二", "").Replace("台区三", "").Replace("台区四", "").Replace("台区五", "");
var end = fault_model.CableEnd.Replace("台区一", "").Replace("台区二", "").Replace("台区三", "").Replace("台区四", "").Replace("台区五", "");
var result1 = Tool.GeneratePictures("台区一" + name, "台区一" + start, "台区一" + end, fault_model.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, fault_model.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, fault_model.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, fault_model.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, fault_model.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
{
fault_model.SensitiveKnowledge = path1;
fault_model.Minhui = path2;
fault_model.SensitiveLine = path3;
fault_model.Allergy = path4;
fault_model.GracefulGraceful = path5;
}
}
}
if (exam_fault_bll.OperationAddData(list, model, req.ExamId) > 0)
{
foreach (var old_fault_model in old_fault_list)
{
if (!string.IsNullOrEmpty(old_fault_model.ExamFaultId))
{
string delete_path1 = _webHostEnvironment.WebRootPath + old_fault_model.SensitiveKnowledge;
if (System.IO.File.Exists(delete_path1))
{
System.IO.File.Delete(delete_path1);
}
string delete_path2 = _webHostEnvironment.WebRootPath + old_fault_model.Minhui;
if (System.IO.File.Exists(delete_path2))
{
System.IO.File.Delete(delete_path2);
}
string delete_path3 = _webHostEnvironment.WebRootPath + old_fault_model.SensitiveLine;
if (System.IO.File.Exists(delete_path3))
{
System.IO.File.Delete(delete_path3);
}
string delete_path4 = _webHostEnvironment.WebRootPath + old_fault_model.Allergy;
if (System.IO.File.Exists(delete_path4))
{
System.IO.File.Delete(delete_path4);
}
string delete_path5 = _webHostEnvironment.WebRootPath + old_fault_model.GracefulGraceful;
if (System.IO.File.Exists(delete_path5))
{
System.IO.File.Delete(delete_path5);
}
foreach (var fault_model in fault_list)
{
var img_url = "";
if (fault_model.CableName.Contains("台区一"))
img_url = fault_model.SensitiveKnowledge;
else if (fault_model.CableName.Contains("台区二"))
img_url = fault_model.Minhui;
else if (fault_model.CableName.Contains("台区三"))
img_url = fault_model.SensitiveLine;
else if (fault_model.CableName.Contains("台区四"))
img_url = fault_model.Allergy;
else if (fault_model.CableName.Contains("台区五"))
img_url = fault_model.GracefulGraceful;
var cable_model = list.Where(a => a.ExamFaultId == fault_model.ExamFaultId).FirstOrDefault();
cable_model.SensitiveKnowledge = fault_model.SensitiveKnowledge;
cable_model.Minhui = fault_model.Minhui;
cable_model.SensitiveLine = fault_model.SensitiveLine;
cable_model.Allergy = fault_model.Allergy;
cable_model.GracefulGraceful = fault_model.GracefulGraceful;
}
}
}
var exam_fault_list2 = exam_fault_bll.GetModelList(" ExamId = '" + Id + "' ");
var required_tool_content = string.Join("|", exam_fault_list2.Where(a => a.RequiredTool != "" && a.ChoiceQuestion != "0").Select(a => a.RequiredTool).ToArray());
if (!string.IsNullOrEmpty(required_tool_content))
{
var required_tool_list = required_tool_content.Split('|').Distinct().ToList();
if (required_tool_list.Count > 0)
{
if (!required_tool_list.Contains("绝缘手套"))
{
required_tool_list.Add("绝缘手套");
}
if (!required_tool_list.Contains("熔断器操作手柄"))
{
required_tool_list.Add("熔断器操作手柄");
}
var tool_content = string.Join("','", required_tool_list);
var tool_list = tool_bll.GetModelList(" Purpose='排故' and ToolName in ('" + tool_content + "') ");
var add_tool_list = new List<Competition.Mysql.Model.pow_exam_tool>();
foreach (var item in required_tool_list)
{
var tool_model = tool_list.Where(a => a.ToolName == item).FirstOrDefault();
if (tool_model != null)
{
var add_tool_model = new Competition.Mysql.Model.pow_exam_tool();
add_tool_model.ExamToolId = Guid.NewGuid().ToString("N");
add_tool_model.ExamId = Id;
add_tool_model.ToolId = tool_model.ToolId;
add_tool_model.Purpose = tool_model.Purpose;
add_tool_model.ToolName = tool_model.ToolName;
add_tool_model.ToolType = tool_model.ToolType;
add_tool_model.ThreeToolId = tool_model.ThreeToolId;
add_tool_list.Add(add_tool_model);
}
}
if (exam_tool_bll.OperationData(add_tool_list, Id, "排故") <= 0)
{
return Json(Tool.GetJsonWithCode(APICode.Success, "保存故障数据成功,默认选中排故工器具失败,请重试或手动选中排故工器具保存"));
}
}
}
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, "发生错误,请联系管理员。"));
}
}
}
}