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; } /// /// 保存所有故障接口 /// /// [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(); var fault_list = list.Where(a => a.FaultDesc == "出线电缆编号牌型号编写错误").ToList(); var old_fault_list = new List(); foreach (var fault_model in fault_list) { var success = new List(); 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(); 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, "发生错误,请联系管理员。")); } } } }