using Competition.Common.Util; using CompetitionAPI.Util; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Hosting.Server; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Org.BouncyCastle.Ocsp; namespace CompetitionAPI.Controllers.back { [Route("api/[controller]")] [ApiController] public class InitFaultController : 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 InitFaultController(IWebHostEnvironment webHostEnvironment) { _webHostEnvironment = webHostEnvironment; } /// /// 初始化所有故障接口 /// /// 考试id /// [Authorize] [HttpGet] [APIFilter] public JsonResult Index(string ExamId) { try { if (string.IsNullOrEmpty(ExamId)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试id不能为空")); } var fault_list = fault_bll.GetModelList(""); var exam_model = exam_bll.GetAreaList(" ExamId='" + ExamId + "' ").FirstOrDefault(); if (exam_model != null) { var new_fault_list = fault_list.Where(a => a.Type == "断路器" || a.FaultDesc == "熔芯不匹配").ToList(); foreach (var item in new_fault_list) { if (item.FaultDesc == "漏电保护设置不合理") { item.Value = exam_model.LeakageProtection; } else if (item.FaultDesc == "过载保护设置错误") { var old_value = item.Value.Split('|'); var new_value = exam_model.OverloadProtection.Split('|'); old_value[0] = new_value[0]; old_value[1] = new_value[1]; item.Value = String.Join("|", old_value); } else if (item.FaultDesc == "短路延时保护设置错误") { var old_value = item.Value.Split('|'); var new_value = exam_model.ShortCircuitDelayProtection.Split('|'); old_value[0] = new_value[0]; old_value[1] = new_value[1]; item.Value = String.Join("|", old_value); } else if (item.FaultDesc == "短路瞬时保护设置错误") { item.Value = exam_model.ShortCircuitProtection; } else if (item.FaultDesc == "欠压保护设置错误") { item.Value = exam_model.UndervoltageProtection; } else if (item.FaultDesc == "过压保护设置错误") { item.Value = exam_model.OvervoltageProtection; } else if (item.FaultDesc == "缺相保护设置错误") { item.Value = exam_model.PhaseLossProtection; } else if (item.FaultDesc == "熔芯不匹配") { if (exam_model.FusibleCoreCurrent == item.FusibleCoreFault) { if (exam_model.FusibleCoreCurrent == "800A") { item.FusibleCoreFault = "100A"; } if (exam_model.FusibleCoreCurrent == "100A") { item.FusibleCoreFault = "200A"; } if (exam_model.FusibleCoreCurrent == "200A") { item.FusibleCoreFault = "400A"; } if (exam_model.FusibleCoreCurrent == "400A") { item.FusibleCoreFault = "800A"; } } item.FusibleCoreNormal = exam_model.FusibleCoreCurrent; } } var cable_fault_list = fault_list.Where(a => a.FaultDesc == "出线电缆编号牌型号编写错误").ToList(); if (cable_fault_list.Count > 0) { foreach (var item in cable_fault_list) { var name1 = "1#配变0.4kV411东线出线电缆"; var start1 = "1#配变低压综合配电箱411熔断器"; var end1 = "1#配变0.4kV411东线001#杆"; var name2 = "1#配变0.4kV412南线出线电缆"; var start2 = "1#配变低压综合配电箱412熔断器"; var end2 = "1#配变0.4kV412南线001#杆"; //411 if (item.DeviceId == "9d8da9360c0f11ed844e7cd30a92bb1c") { item.CableName = exam_model.PlatformAreaName + name1; item.CableStart = exam_model.PlatformAreaName + start1; item.CableEnd = exam_model.PlatformAreaName + end1; item.ModelLength = exam_model.IncomingLineModelLength; } //412 if (item.DeviceId == "a238da230c0f11ed844e7cd30a92bb1c") { item.CableName = exam_model.PlatformAreaName + name2; item.CableStart = exam_model.PlatformAreaName + start2; item.CableEnd = exam_model.PlatformAreaName + end2; item.ModelLength = exam_model.OutgoingLineModelLength; } 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("台区一" + (item.DeviceId == "9d8da9360c0f11ed844e7cd30a92bb1c" ? name1 : name2), "台区一" + (item.DeviceId == "9d8da9360c0f11ed844e7cd30a92bb1c" ? start1 : start2), "台区一" + (item.DeviceId == "9d8da9360c0f11ed844e7cd30a92bb1c" ? end1 : end2), (item.DeviceId == "9d8da9360c0f11ed844e7cd30a92bb1c" ? exam_model.IncomingLineModelLength : exam_model.OutgoingLineModelLength), path1, _webHostEnvironment.WebRootPath); if (result1) { item.SensitiveKnowledge = path1; success.Add(path1); } var path2 = dic_name + Guid.NewGuid().ToString("N") + ".jpg"; var result2 = Tool.GeneratePictures("台区二" + (item.DeviceId == "9d8da9360c0f11ed844e7cd30a92bb1c" ? name1 : name2), "台区二" + (item.DeviceId == "9d8da9360c0f11ed844e7cd30a92bb1c" ? start1 : start2), "台区二" + (item.DeviceId == "9d8da9360c0f11ed844e7cd30a92bb1c" ? end1 : end2), (item.DeviceId == "9d8da9360c0f11ed844e7cd30a92bb1c" ? exam_model.IncomingLineModelLength : exam_model.OutgoingLineModelLength), path2, _webHostEnvironment.WebRootPath); if (result2) { item.Minhui = path2; success.Add(path2); } var path3 = dic_name + Guid.NewGuid().ToString("N") + ".jpg"; var result3 = Tool.GeneratePictures("台区三" + (item.DeviceId == "9d8da9360c0f11ed844e7cd30a92bb1c" ? name1 : name2), "台区三" + (item.DeviceId == "9d8da9360c0f11ed844e7cd30a92bb1c" ? start1 : start2), "台区三" + (item.DeviceId == "9d8da9360c0f11ed844e7cd30a92bb1c" ? end1 : end2), (item.DeviceId == "9d8da9360c0f11ed844e7cd30a92bb1c" ? exam_model.IncomingLineModelLength : exam_model.OutgoingLineModelLength), path3, _webHostEnvironment.WebRootPath); if (result3) { item.SensitiveLine = path3; success.Add(path3); } var path4 = dic_name + Guid.NewGuid().ToString("N") + ".jpg"; var result4 = Tool.GeneratePictures("台区四" + (item.DeviceId == "9d8da9360c0f11ed844e7cd30a92bb1c" ? name1 : name2), "台区四" + (item.DeviceId == "9d8da9360c0f11ed844e7cd30a92bb1c" ? start1 : start2), "台区四" + (item.DeviceId == "9d8da9360c0f11ed844e7cd30a92bb1c" ? end1 : end2), (item.DeviceId == "9d8da9360c0f11ed844e7cd30a92bb1c" ? exam_model.IncomingLineModelLength : exam_model.OutgoingLineModelLength), path4, _webHostEnvironment.WebRootPath); if (result4) { item.Allergy = path4; success.Add(path4); } var path5 = dic_name + Guid.NewGuid().ToString("N") + ".jpg"; var result5 = Tool.GeneratePictures("台区五" + (item.DeviceId == "9d8da9360c0f11ed844e7cd30a92bb1c" ? name1 : name2), "台区五" + (item.DeviceId == "9d8da9360c0f11ed844e7cd30a92bb1c" ? start1 : start2), "台区五" + (item.DeviceId == "9d8da9360c0f11ed844e7cd30a92bb1c" ? end1 : end2), (item.DeviceId == "9d8da9360c0f11ed844e7cd30a92bb1c" ? exam_model.IncomingLineModelLength : exam_model.OutgoingLineModelLength), path5, _webHostEnvironment.WebRootPath); if (result5) { item.GracefulGraceful = path5; 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, "初始化失败")); } } } var exam_fault_list = exam_fault_bll.GetModelList(" ExamId='" + ExamId + "' and FaultDesc='出线电缆编号牌型号编写错误' "); if (exam_bll.OperationAddDelData(ExamId, fault_list) > 0) { foreach (var item in exam_fault_list) { string delete_path1 = _webHostEnvironment.WebRootPath + item.SensitiveKnowledge; if (System.IO.File.Exists(delete_path1)) { System.IO.File.Delete(delete_path1); } string delete_path2 = _webHostEnvironment.WebRootPath + item.Minhui; if (System.IO.File.Exists(delete_path2)) { System.IO.File.Delete(delete_path2); } string delete_path3 = _webHostEnvironment.WebRootPath + item.SensitiveLine; if (System.IO.File.Exists(delete_path3)) { System.IO.File.Delete(delete_path3); } string delete_path4 = _webHostEnvironment.WebRootPath + item.Allergy; if (System.IO.File.Exists(delete_path4)) { System.IO.File.Delete(delete_path4); } string delete_path5 = _webHostEnvironment.WebRootPath + item.GracefulGraceful; if (System.IO.File.Exists(delete_path5)) { System.IO.File.Delete(delete_path5); } } var exam_fault_list2 = exam_fault_bll.GetModelList(" ExamId = '" + ExamId + "'"); 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) { var tool_content = string.Join("','", required_tool_list); var tool_list = tool_bll.GetModelList(" Purpose='排故' and ToolName in ('" + tool_content + "') "); var 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 model = new Competition.Mysql.Model.pow_exam_tool(); model.ExamToolId = Guid.NewGuid().ToString("N"); model.ExamId = ExamId; model.ToolId = tool_model.ToolId; model.Purpose = tool_model.Purpose; model.ToolName = tool_model.ToolName; model.ToolType = tool_model.ToolType; model.ThreeToolId = tool_model.ThreeToolId; list.Add(model); } } if (exam_tool_bll.OperationData(list, ExamId, "排故") <= 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, "发生错误,请联系管理员。")); } } } }