using Competition.Common.Util; using CompetitionAPI.api.back; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; using Newtonsoft.Json; using Org.BouncyCastle.Ocsp; using CompetitionAPI.Util; using Microsoft.AspNetCore.Authorization; namespace CompetitionAPI.Controllers.back { [Route("api/[controller]")] [ApiController] public class ImportExamController : Controller { private readonly IWebHostEnvironment _webHostEnvironment; Competition.Mysql.BLL.pow_exam bll = new Competition.Mysql.BLL.pow_exam(); Competition.Mysql.BLL.pow_tool tool_bll = new Competition.Mysql.BLL.pow_tool(); Competition.Mysql.BLL.pow_fault fault_bll = new Competition.Mysql.BLL.pow_fault(); Competition.Mysql.BLL.pow_operation_ticket operation_ticket_bll = new Competition.Mysql.BLL.pow_operation_ticket(); Competition.Mysql.BLL.pow_platform_area area_bll = new Competition.Mysql.BLL.pow_platform_area(); Competition.Mysql.BLL.pow_line line_bll = new Competition.Mysql.BLL.pow_line(); private static Object Lockobj = new object(); public ImportExamController(IWebHostEnvironment webHostEnvironment) { _webHostEnvironment = webHostEnvironment; } /// /// 导入考试接口 /// /// [Authorize] [HttpPost] [APIFilter] public JsonResult Index([FromForm] IFormFile Files) { try { lock (Lockobj) { if (Files.Length <= 0) { return Json(Tool.GetJsonWithCode(APICode.Fail, "文件不能为空")); } //组织树 var tree_list = ReadTree(); var root_device_id_list = new List(); var device_id_list = new List(); var init_fault_list = fault_bll.GetModelList(""); var init_tool_list = tool_bll.GetModelList(""); var init_ticket_list = operation_ticket_bll.GetModelList(""); var exam_model = new Competition.Mysql.Model.pow_exam(); #region 考试试卷 var platform_area_id = ""; var line_id = ""; var leakage_protection = ""; var overload_protection = ""; var short_circuit_delay_protection = ""; var short_circuit_protection = ""; var undervoltage_protection = ""; var overvoltage_protection = ""; var phase_loss_protection = ""; var fusible_core_current = ""; var fileExtension = Path.GetExtension(Files.FileName); var exam_table = Tool.ExcelToDataTable(Files.OpenReadStream(), fileExtension, "考试试卷", 0, true, false); if (null != exam_table && exam_table.Rows.Count == 1) { #region ===检查上传的字段==== var row = exam_table.Rows[0]; #region 考试名称 var exam_name = row["考试名称"].ToString(); if (string.IsNullOrWhiteSpace(exam_name)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "存在考试名称为空的记录,请检查上传文件")); } if (bll.GetRecordCount(string.Format(" ExamName = '{0}' ", exam_name)) > 0) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试名称已存在,请更换考试名称再试")); } #endregion #region 考试时长 var exam_duration = row["考试时长"].ToString(); if (string.IsNullOrWhiteSpace(exam_duration)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "存在考试时长为空的记录,请检查上传文件")); } int duration; if (!int.TryParse(exam_duration, out duration)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试时长数据格式不对,必须是数字")); } #endregion #region 开票日期 //var billing_date = row["开票日期"].ToString(); //if (string.IsNullOrWhiteSpace(billing_date)) //{ // msg = "存在开票日期为空的记录,请检查上传文件"; // return false; //} #endregion #region 村组 //var village_group = row["村组"].ToString(); //if (string.IsNullOrWhiteSpace(village_group)) //{ // msg = "存在村组为空的记录,请检查上传文件"; // return false; //} #endregion #region 台区 var platform_area = row["台区"].ToString(); if (string.IsNullOrWhiteSpace(platform_area)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "存在台区为空的记录,请检查上传文件")); } var area_model = area_bll.GetModelList(" PlatformAreaName='" + platform_area + "' ").FirstOrDefault(); if (area_model == null) { return Json(Tool.GetJsonWithCode(APICode.Fail, "台区内容不对,必须是台区一、台区二、台区三、台区四、台区五之中")); } else { platform_area_id = area_model.PlatformAreaId; } #endregion #region 线路 var line = row["线路"].ToString(); if (string.IsNullOrWhiteSpace(line)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "存在线路为空的记录,请检查上传文件")); } var line_model = line_bll.GetModelList(" LineName='" + line + "' ").FirstOrDefault(); if (line_model == null) { return Json(Tool.GetJsonWithCode(APICode.Fail, "线路内容不对,必须是0.4kV台区1#配变411东线格式")); } else { line_id = line_model.LineId; } #endregion #region 工单内容 var work_order_content = row["工单内容"].ToString(); if (string.IsNullOrWhiteSpace(work_order_content)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "存在工单内容为空的记录,请检查上传文件")); } #endregion #region 背景资料 var background_information = row["背景资料"].ToString(); if (string.IsNullOrWhiteSpace(background_information)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "存在背景资料为空的记录,请检查上传文件")); } #endregion #region 进线电缆型号及长度 var incoming_line_model_length = row["进线电缆型号及长度"].ToString(); if (string.IsNullOrWhiteSpace(incoming_line_model_length)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "存在进线电缆型号及长度为空的记录,请检查上传文件")); } #endregion #region 出线电缆型号及长度 var outgoing_line_model_length = row["出线电缆型号及长度"].ToString(); if (string.IsNullOrWhiteSpace(outgoing_line_model_length)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "存在出线电缆型号及长度为空的记录,请检查上传文件")); } #endregion var protection_list = new List(); protection_list.Add("411开关(保护器)额定剩余电流保护:"); protection_list.Add("411开关(保护器)过载保护:"); protection_list.Add("411开关(保护器)短路延时保护:"); protection_list.Add("411开关(保护器)短路瞬时保护:"); protection_list.Add("411开关(保护器)欠压保护:"); protection_list.Add("411开关(保护器)过压保护:"); protection_list.Add("411开关(保护器)缺相保护:"); protection_list.Add("411熔芯熔断电流:"); foreach (var item in protection_list) { if (!background_information.Trim().Contains(item)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "背景资料格式不正确,未包含" + item)); } var content_list = background_information.Trim().Split(new char[2] { '\r', '\n' }).ToList(); var leakage_protection_value = content_list.Where(a => a.Contains(item)).FirstOrDefault(); if (!string.IsNullOrEmpty(leakage_protection_value)) { var value = leakage_protection_value.Split(':'); if (value.Length != 2) { return Json(Tool.GetJsonWithCode(APICode.Fail, "背景资料的" + item + "格式不正确")); } else { if (item != "411开关(保护器)缺相保护:" && item != "411熔芯熔断电流:") { if (!value[1].Contains("(") || !value[1].Contains(")")) { return Json(Tool.GetJsonWithCode(APICode.Fail, "背景资料的" + item + "格式不正确,值未包含()格式")); } var value_list = new List(); var pro = value[1].Split('('); if (item == "411开关(保护器)额定剩余电流保护:") { if (pro[0] == "50mA" || pro[0] == "100mA" || pro[0] == "200mA" || pro[0] == "300mA" || pro[0] == "400mA" || pro[0] == "500mA" || pro[0] == "600mA" || pro[0] == "800mA") { if (pro[0] == "50mA") { value_list.Add("050mA"); } else { value_list.Add(pro[0]); } } else { return Json(Tool.GetJsonWithCode(APICode.Fail, "背景资料的" + item + "格式不正确,档位值不在指定范围内(50mA、100mA、200mA、300mA、400mA、500mA、600mA、800mA)")); } } if (item == "411开关(保护器)过载保护:") { if (pro[0] == "160A" || pro[0] == "200A" || pro[0] == "240A" || pro[0] == "280A" || pro[0] == "320A" || pro[0] == "360A" || pro[0] == "400A") { if (pro[0] == "160A") { value_list.Add("0.4ln"); } else if (pro[0] == "200A") { value_list.Add("0.5ln"); } else if (pro[0] == "240A") { value_list.Add("0.6ln"); } else if (pro[0] == "280A") { value_list.Add("0.7ln"); } else if (pro[0] == "320A") { value_list.Add("0.8ln"); } else if (pro[0] == "360A") { value_list.Add("0.9ln"); } else if (pro[0] == "400A") { value_list.Add("1.0ln"); } else { value_list.Add(pro[0]); } } else { return Json(Tool.GetJsonWithCode(APICode.Fail, "背景资料的" + item + "格式不正确,档位值不在指定范围内(160A、200A、240A、280A、320A、360A、400A)")); } } if (item == "411开关(保护器)短路延时保护:") { Dictionary delay_protection = new Dictionary(); delay_protection.Add("800A", "2ln"); delay_protection.Add("1000A", "2.5ln"); delay_protection.Add("1200A", "3ln"); delay_protection.Add("1600A", "4ln"); delay_protection.Add("2000A", "5ln"); delay_protection.Add("2400A", "6ln"); delay_protection.Add("2800A", "7ln"); delay_protection.Add("3400A", "8ln"); delay_protection.Add("4000A", "10ln"); if (delay_protection.ContainsKey(pro[0])) { value_list.Add(delay_protection[pro[0]]); } else { return Json(Tool.GetJsonWithCode(APICode.Fail, "背景资料的" + item + "格式不正确,档位值不在指定范围内(" + string.Join("、", delay_protection.Keys.ToArray()) + ")")); } } if (item == "411开关(保护器)短路瞬时保护:") { Dictionary delay_protection = new Dictionary(); delay_protection.Add("2400A", "6ln"); delay_protection.Add("2800A", "7ln"); delay_protection.Add("3200A", "8ln"); delay_protection.Add("4000A", "10ln"); delay_protection.Add("4400A", "11ln"); delay_protection.Add("4800A", "12ln"); delay_protection.Add("5200A", "13ln"); delay_protection.Add("5600A", "14ln"); if (delay_protection.ContainsKey(pro[0])) { value_list.Add(delay_protection[pro[0]]); } else { return Json(Tool.GetJsonWithCode(APICode.Fail, "背景资料的" + item + "格式不正确,档位值不在指定范围内(" + string.Join("、", delay_protection.Keys.ToArray()) + ")")); } } if (item == "411开关(保护器)欠压保护:") { Dictionary delay_protection = new Dictionary(); delay_protection.Add("170V", "170"); delay_protection.Add("175V", "175"); delay_protection.Add("180V", "180"); delay_protection.Add("185V", "185"); delay_protection.Add("190V", "190"); delay_protection.Add("195V", "195"); delay_protection.Add("200V", "200"); if (delay_protection.ContainsKey(pro[0])) { value_list.Add(delay_protection[pro[0]]); } else { return Json(Tool.GetJsonWithCode(APICode.Fail, "背景资料的" + item + "格式不正确,档位值不在指定范围内(" + string.Join("、", delay_protection.Keys.ToArray()) + ")")); } } if (item == "411开关(保护器)过压保护:") { Dictionary delay_protection = new Dictionary(); delay_protection.Add("255V", "255"); delay_protection.Add("260V", "260"); delay_protection.Add("265V", "265"); delay_protection.Add("270V", "270"); delay_protection.Add("275V", "275"); delay_protection.Add("280V", "280"); delay_protection.Add("285V", "285"); delay_protection.Add("290V", "290"); if (delay_protection.ContainsKey(pro[0])) { value_list.Add(delay_protection[pro[0]]); } else { return Json(Tool.GetJsonWithCode(APICode.Fail, "背景资料的" + item + "格式不正确,档位值不在指定范围内(" + string.Join("、", delay_protection.Keys.ToArray()) + ")")); } } pro[1] = pro[1].Replace(")", ""); if (pro[1] == "开" || pro[1] == "关") { value_list.Add(pro[1]); } else { return Json(Tool.GetJsonWithCode(APICode.Fail, "背景资料的" + item + "格式不正确,()里的值不是开或者关")); } if (item == "411开关(保护器)额定剩余电流保护:") { leakage_protection = string.Join("|", value_list.ToArray()); } if (item == "411开关(保护器)过载保护:") { overload_protection = string.Join("|", value_list.ToArray()); } if (item == "411开关(保护器)短路延时保护:") { short_circuit_delay_protection = string.Join("|", value_list.ToArray()); } if (item == "411开关(保护器)短路瞬时保护:") { short_circuit_protection = string.Join("|", value_list.ToArray()); } if (item == "411开关(保护器)欠压保护:") { undervoltage_protection = string.Join("|", value_list.ToArray()); } if (item == "411开关(保护器)过压保护:") { overvoltage_protection = string.Join("|", value_list.ToArray()); } } else { if (item == "411开关(保护器)缺相保护:") { if (value[1] == "开" || value[1] == "关") { phase_loss_protection = value[1]; } else { return Json(Tool.GetJsonWithCode(APICode.Fail, "背景资料的" + item + "格式不正确,开关值不是开或者关")); } } else { var pro = value[1]; if (value[1] == "100A" || value[1] == "200A" || value[1] == "400A" || value[1] == "800A") { fusible_core_current = value[1]; } else { return Json(Tool.GetJsonWithCode(APICode.Fail, "背景资料的" + item + "格式不正确,电流值不在指定范围内:100A、200A、400A、800A")); } } } } } } } else { return Json(Tool.GetJsonWithCode(APICode.Fail, "上传失败:考试试卷表格内容为空")); } #endregion if (bll.GetRecordCount(" ExamName='" + exam_table.Rows[0]["考试名称"].ToString() + "' ") > 0) { return Json(Tool.GetJsonWithCode(APICode.Fail, "该考试名称已存在,请重新修改后再导入")); } var now = DateTime.Now; exam_model.ExamId = Guid.NewGuid().ToString("N"); exam_model.ExamName = exam_table.Rows[0]["考试名称"].ToString(); exam_model.ExaminationDuration = exam_table.Rows[0]["考试时长"].ToString(); exam_model.SceneId = "eab5920509b011ed844e7cd30a92bb1c"; exam_model.PlatformAreaId = platform_area_id; exam_model.LineId = line_id; exam_model.WorkOrderContent = exam_table.Rows[0]["工单内容"].ToString(); exam_model.BackgroundInformation = exam_table.Rows[0]["背景资料"].ToString(); exam_model.IncomingLineModelLength = exam_table.Rows[0]["进线电缆型号及长度"].ToString(); exam_model.OutgoingLineModelLength = exam_table.Rows[0]["出线电缆型号及长度"].ToString(); exam_model.Status = "未发布"; exam_model.CreateTime = now; exam_model.LeakageProtection = leakage_protection; exam_model.OverloadProtection = overload_protection; exam_model.ShortCircuitDelayProtection = short_circuit_delay_protection; exam_model.ShortCircuitProtection = short_circuit_protection; exam_model.UndervoltageProtection = undervoltage_protection; exam_model.OvervoltageProtection = overvoltage_protection; exam_model.PhaseLossProtection = phase_loss_protection; exam_model.FusibleCoreCurrent = fusible_core_current; exam_model.LinePatrolDate = now; exam_model.HandleDate = now; #endregion var tool_list = new List(); #region 巡线考试工具 var line_tool_table = Tool.ExcelToDataTable(Files.OpenReadStream(), fileExtension, "巡线考试工具", 0, true, false); if (null != line_tool_table && line_tool_table.Rows.Count > 0) { for (int i = 0; i < line_tool_table.Rows.Count; i++) { #region ===检查上传的字段==== var row = line_tool_table.Rows[i]; #region 工具名称 var tool_name = row["工具名称"].ToString(); if (string.IsNullOrWhiteSpace(tool_name)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "巡线考试工具第" + (i + 2) + "行存在工具名称为空的记录,请检查上传文件")); } #endregion #region 类型(工具、材料、着装) var tool_type = row["类型(工具、材料、着装)"].ToString(); if (string.IsNullOrWhiteSpace(tool_type)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "巡线考试工具第" + (i + 2) + "行存在类型(工具、材料、着装)为空的记录,请检查上传文件")); } #endregion } } else { return Json(Tool.GetJsonWithCode(APICode.Fail, "上传失败:考试工具表格内容为空")); } #endregion for (int i = 0; i < line_tool_table.Rows.Count; i++) { var row = line_tool_table.Rows[i]; var tool_init_model = init_tool_list.Where(a => a.ToolName == row["工具名称"].ToString() && a.Purpose == "巡线").FirstOrDefault(); if (tool_init_model != null) { var tool_model = new Competition.Mysql.Model.pow_exam_tool(); tool_model.ExamId = exam_model.ExamId; tool_model.ExamToolId = Guid.NewGuid().ToString("N"); tool_model.ToolId = tool_init_model.ToolId; tool_model.ToolName = row["工具名称"].ToString(); tool_model.ToolType = row["类型(工具、材料、着装)"].ToString(); tool_model.Purpose = "巡线"; tool_model.ThreeToolId = tool_init_model.ThreeToolId; tool_list.Add(tool_model); } } #endregion #region 排故考试工具 var fault_tool_table = Tool.ExcelToDataTable(Files.OpenReadStream(), fileExtension, "排故考试工具", 0, true, false); if (null != fault_tool_table && fault_tool_table.Rows.Count > 0) { for (int i = 0; i < fault_tool_table.Rows.Count; i++) { #region ===检查上传的字段==== var row = fault_tool_table.Rows[i]; #region 工具名称 var tool_name = row["工具名称"].ToString(); if (string.IsNullOrWhiteSpace(tool_name)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "排故考试工具第" + (i + 2) + "行存在工具名称为空的记录,请检查上传文件")); } #endregion #region 类型(工具、材料、着装) var tool_type = row["类型(工具、材料、着装)"].ToString(); if (string.IsNullOrWhiteSpace(tool_type)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "排故考试工具第" + (i + 2) + "行存在类型(工具、材料、着装)为空的记录,请检查上传文件")); } #endregion } } else { return Json(Tool.GetJsonWithCode(APICode.Fail, "上传失败:考试工具表格内容为空")); } #endregion for (int i = 0; i < fault_tool_table.Rows.Count; i++) { var row = fault_tool_table.Rows[i]; var tool_init_model = init_tool_list.Where(a => a.ToolName == row["工具名称"].ToString() && a.Purpose == "排故").FirstOrDefault(); if (tool_init_model != null) { var tool_model = new Competition.Mysql.Model.pow_exam_tool(); tool_model.ExamId = exam_model.ExamId; tool_model.ExamToolId = Guid.NewGuid().ToString("N"); tool_model.ToolId = tool_init_model.ToolId; tool_model.ToolName = row["工具名称"].ToString(); tool_model.ToolType = row["类型(工具、材料、着装)"].ToString(); tool_model.Purpose = "排故"; tool_model.ThreeToolId = tool_init_model.ThreeToolId; tool_list.Add(tool_model); } } #endregion foreach (var item in tool_list) { if (tool_list.Where(a => a.ToolName == item.ToolName && a.Purpose == item.Purpose).Count() > 1) { return Json(Tool.GetJsonWithCode(APICode.Fail, item.Purpose + "里有重复的工具名称:" + item.ToolName)); } } var fault_list = new List(); #region 考试故障 var fault_table = Tool.ExcelToDataTable(Files.OpenReadStream(), fileExtension, "考试故障", 0, true, false); if (null != fault_table && fault_table.Rows.Count > 0) { for (int i = 0; i < fault_table.Rows.Count; i++) { var root_device_id = ""; var device_id = ""; #region ===检查上传的字段==== var row = fault_table.Rows[i]; #region 一级设备 var level_equipment = row["一级设备"].ToString(); if (string.IsNullOrWhiteSpace(level_equipment)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在一级设备为空的记录,请检查上传文件")); } var first_model = tree_list.Where(a => a.Tower == level_equipment).FirstOrDefault(); if (first_model == null) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行一级设备内容不对,必须是" + string.Join("、", tree_list.Select(a => a.Tower).ToArray()) + "之中")); } #endregion #region 二级设备 var secondary_equipment = row["二级设备"].ToString(); if (!string.IsNullOrWhiteSpace(secondary_equipment)) { if (first_model.Data != null) { var second_model = first_model.Data.Where(a => a.PowerDistributionBox == secondary_equipment).FirstOrDefault(); if (second_model == null) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行二级设备内容不对,必须是" + string.Join("、", first_model.Data.Select(a => a.PowerDistributionBox).ToArray()) + "之中")); } else { root_device_id = first_model.TowerId; device_id = second_model.PowerDistributionBoxId; } } } #endregion #region 三级设备 var three_equipment = row["三级设备"].ToString(); if (!string.IsNullOrWhiteSpace(three_equipment)) { if (first_model.Data.Where(a => a.PowerDistributionBox == secondary_equipment).FirstOrDefault().Data != null) { var three_model = first_model.Data.Where(a => a.PowerDistributionBox == secondary_equipment).FirstOrDefault().Data.Where(a => a.Line == three_equipment).FirstOrDefault(); if (three_model == null) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行三级设备内容不对,必须是" + string.Join("、", first_model.Data.Where(a => a.PowerDistributionBox == secondary_equipment).FirstOrDefault().Data.Select(a => a.Line).ToArray()) + "之中")); } else { root_device_id = first_model.TowerId; device_id = three_model.LineId; } } } #endregion if (!string.IsNullOrEmpty(level_equipment) && string.IsNullOrEmpty(secondary_equipment) && string.IsNullOrEmpty(three_equipment)) { root_device_id = first_model.TowerId; device_id = first_model.TowerId; } root_device_id_list.Add(root_device_id); device_id_list.Add(device_id); #region 故障现象 var fault_desc = row["故障现象"].ToString(); if (string.IsNullOrWhiteSpace(fault_desc)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在故障现象为空的记录,请检查上传文件")); } var fault_model = init_fault_list.Where(a => a.FaultDesc == fault_desc).FirstOrDefault(); if (fault_model == null) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障现象的内容不对")); } #endregion #region 故障等级 var defect_level = row["故障等级"].ToString(); if (string.IsNullOrWhiteSpace(defect_level)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在故障等级为空的记录,请检查上传文件")); } if (defect_level != "一般" && defect_level != "紧急" && defect_level != "重大") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障等级内容不正确,必须是一般、紧急、重大之中")); } #endregion #region 是否具体模拟 var specific_simulation = row["是否具体模拟"].ToString(); if (string.IsNullOrWhiteSpace(specific_simulation)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在是否具体模拟为空的记录,请检查上传文件")); } if (specific_simulation != "现场处理" && specific_simulation != "选择题") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障等级内容不正确,必须是现场处理、选择题之中")); } #endregion #region 查找缺陷分值 var select_socre_value = row["查找缺陷分值"].ToString(); if (string.IsNullOrWhiteSpace(select_socre_value)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在查找缺陷分值为空的记录,请检查上传文件")); } decimal select_socre; if (!decimal.TryParse(select_socre_value, out select_socre)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行查找缺陷分值数据格式不对,必须是数字")); } #endregion #region 故障缺陷分值 var fault_score_value = row["故障缺陷分值"].ToString(); if (string.IsNullOrWhiteSpace(fault_score_value)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在故障缺陷分值为空的记录,请检查上传文件")); } decimal fault_score; if (!decimal.TryParse(fault_score_value, out fault_score)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障缺陷分值数据格式不对,必须是数字")); } #endregion #region 处理缺陷分值 var handler_score_value = row["处理缺陷分值"].ToString(); if (string.IsNullOrWhiteSpace(handler_score_value)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在处理缺陷分值为空的记录,请检查上传文件")); } decimal handler_score; if (!decimal.TryParse(handler_score_value, out handler_score)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行处理缺陷分值数据格式不对,必须是数字")); } #endregion #region 故障状态 var choice_question = row["故障状态"].ToString(); if (string.IsNullOrWhiteSpace(choice_question)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在故障状态为空的记录,请检查上传文件")); } if (choice_question != "正常" && choice_question != "单个故障" && choice_question != "多个故障") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障状态内容不对,必须是正常、单个故障、多个故障之中")); } #endregion if (specific_simulation == "选择题" && choice_question != "正常") { #region 题干 var topic = row["题干"].ToString(); if (string.IsNullOrWhiteSpace(topic)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在题干为空的记录,请检查上传文件")); } #endregion #region 选项A var optionA = row["选项A"].ToString(); if (string.IsNullOrWhiteSpace(optionA)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在选项A为空的记录,请检查上传文件")); } #endregion #region 选项B var optionB = row["选项B"].ToString(); if (string.IsNullOrWhiteSpace(optionB)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在选项B为空的记录,请检查上传文件")); } #endregion #region 选项C var optionC = row["选项C"].ToString(); if (string.IsNullOrWhiteSpace(optionC)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在选项C为空的记录,请检查上传文件")); } #endregion #region 正确答案 var right_key = row["正确答案,多个以|分隔"].ToString(); if (string.IsNullOrWhiteSpace(right_key)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在正确答案为空的记录,请检查上传文件")); } if (right_key.Contains("|")) { var right_key_list = right_key.Split('|'); foreach (var item in right_key_list) { if (item != "A" && item != "B" && item != "C" && item != "D" && item != "E") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行正确答案内容不对,多个答案选项,每个|分隔的值应该为:A、B、C、D、E之中")); } } } else { if (right_key != "A" && right_key != "B" && right_key != "C" && right_key != "D" && right_key != "E") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行正确答案内容不对,单个答案选项,值应该为:A、B、C、D、E之中")); } } #endregion } if (fault_desc == "出线电缆编号牌型号编写错误") { #region 电缆名称 var cable_name = row["电缆名称"].ToString(); if (string.IsNullOrWhiteSpace(cable_name)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在电缆名称为空的记录,请检查上传文件")); } #endregion #region 电缆起点 var cable_start = row["电缆起点"].ToString(); if (string.IsNullOrWhiteSpace(cable_start)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在电缆起点为空的记录,请检查上传文件")); } #endregion #region 电缆终点 var cable_end = row["电缆终点"].ToString(); if (string.IsNullOrWhiteSpace(cable_end)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在电缆终点为空的记录,请检查上传文件")); } #endregion #region 型号长度 var model_length = row["型号长度"].ToString(); if (string.IsNullOrWhiteSpace(model_length)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在型号长度为空的记录,请检查上传文件")); } #endregion } if (fault_desc == "配电箱箱门未加锁") { if (choice_question == "单个故障") { choice_question = "多个故障"; } if (choice_question != "正常" && choice_question != "多个故障") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障状态内容不对,必须是正常、多个故障之中")); } if (choice_question != "正常") { var multiple_question = row["位置 左、中、右"].ToString(); if (string.IsNullOrEmpty(multiple_question)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行设置为故障时,必须设置一个故障值")); } var multiple_question_list = multiple_question.Split('|'); for (int j = 0; j < multiple_question_list.Length; j++) { if (multiple_question_list[j] != "左" && multiple_question_list[j] != "右") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行" + fault_desc + "的第" + (j + 1) + "个值必须是左、右之中")); } } } } else if (fault_desc == "柜门与箱体没有链接线") { if (choice_question == "单个故障") { choice_question = "多个故障"; } if (choice_question != "正常" && choice_question != "多个故障") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障状态内容不对,必须是正常、多个故障之中")); } if (choice_question != "正常") { var multiple_question = row["位置 左、中、右"].ToString(); if (string.IsNullOrEmpty(multiple_question)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行设置为故障时,必须设置一个故障值")); } var multiple_question_list = multiple_question.Split('|'); for (int j = 0; j < multiple_question_list.Length; j++) { if (multiple_question_list[j] != "左" && multiple_question_list[j] != "右") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行" + fault_desc + "的第" + (j + 1) + "个值必须是左、右之中")); } } } } else if (fault_desc == "配电箱孔洞未封堵") { if (choice_question != "正常" && choice_question != "多个故障") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障状态内容不对,必须是正常、多个故障之中")); } if (choice_question != "正常") { var multiple_question = row["具体故障,多个故障以|分隔"].ToString(); if (string.IsNullOrEmpty(multiple_question)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行设置为故障时,必须设置一个故障值")); } var multiple_question_list = multiple_question.Split('|'); for (int j = 0; j < multiple_question_list.Length; j++) { if (multiple_question_list[j] != "411电缆出线孔" && multiple_question_list[j] != "412电缆出线孔" && multiple_question_list[j] != "备用电缆出线孔") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行" + fault_desc + "的第" + (j + 1) + "个值必须是411电缆出线孔、412电缆出线孔、备用电缆出线孔之中")); } } } } else if (fault_desc == "熔断器下桩头发热") { if (choice_question != "正常" && choice_question != "多个故障") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障状态内容不对,必须是正常、多个故障之中")); } if (choice_question != "正常") { var multiple_question = row["具体故障,多个故障以|分隔"].ToString(); if (string.IsNullOrEmpty(multiple_question)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行设置为故障时,必须设置一个故障值")); } var multiple_question_list = multiple_question.Split('|'); for (int j = 0; j < multiple_question_list.Length; j++) { if (multiple_question_list[j] != "A相" && multiple_question_list[j] != "B相" && multiple_question_list[j] != "C相") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行" + fault_desc + "的第" + (j + 1) + "个值必须是A相、B相、C相之中")); } } } } else if (fault_desc == "熔芯不匹配") { if (choice_question != "正常" && choice_question != "多个故障") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障状态内容不对,必须是正常、多个故障之中")); } if (choice_question != "正常") { var multiple_question = row["具体故障,多个故障以|分隔"].ToString(); if (string.IsNullOrEmpty(multiple_question)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行设置为故障时,必须设置一个故障值")); } var multiple_question_list = multiple_question.Split('|'); for (int j = 0; j < multiple_question_list.Length; j++) { if (multiple_question_list[j] != "A相熔芯" && multiple_question_list[j] != "B相熔芯" && multiple_question_list[j] != "C相熔芯") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行" + fault_desc + "的第" + (j + 1) + "个值必须是A相熔芯、B相熔芯、C相熔芯之中")); } } } var fusible_core_normal = row["熔芯正常值"].ToString(); if (fusible_core_normal != "100A" && fusible_core_normal != "200A" && fusible_core_normal != "400A" && fusible_core_normal != "800A") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行熔芯正常值内容不对,必须是100A、200A、400A、800A之中")); } var fusible_core_fault = row["熔芯故障值"].ToString(); if (fusible_core_fault != "100A" && fusible_core_fault != "200A" && fusible_core_fault != "400A" && fusible_core_fault != "800A") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行熔芯故障值内容不对,需要有个默认值,必须是100A、200A、400A、800A之中")); } if (fusible_core_normal == fusible_core_fault) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行熔芯正常值与熔芯故障值不能一样")); } } else if (fault_desc == "熔芯损坏") { if (choice_question != "正常" && choice_question != "多个故障") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障状态内容不对,必须是正常、多个故障之中")); } if (choice_question != "正常") { var multiple_question = row["具体故障,多个故障以|分隔"].ToString(); if (string.IsNullOrEmpty(multiple_question)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行设置为故障时,必须设置一个故障值")); } var multiple_question_list = multiple_question.Split('|'); for (int j = 0; j < multiple_question_list.Length; j++) { if (multiple_question_list[j] != "A相熔芯" && multiple_question_list[j] != "B相熔芯" && multiple_question_list[j] != "C相熔芯") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行" + fault_desc + "的第" + (j + 1) + "个值必须是A相熔芯、B相熔芯、C相熔芯之中")); } } } } else if (fault_desc == "电缆头套管相色缺失") { if (choice_question != "正常" && choice_question != "多个故障") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障状态内容不对,必须是正常、多个故障之中")); } if (choice_question != "正常") { var multiple_question = row["具体故障,多个故障以|分隔"].ToString(); if (string.IsNullOrEmpty(multiple_question)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行设置为故障时,必须设置一个故障值")); } var multiple_question_list = multiple_question.Split('|'); for (int j = 0; j < multiple_question_list.Length; j++) { if (multiple_question_list[j] != "A相" && multiple_question_list[j] != "B相" && multiple_question_list[j] != "C相" && multiple_question_list[j] != "N相") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行" + fault_desc + "的第" + (j + 1) + "个值必须是A相、B相、C相、N相之中")); } } } } else if (fault_desc == "电缆接头发热") { if (choice_question != "正常" && choice_question != "多个故障") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障状态内容不对,必须是正常、多个故障之中")); } if (choice_question != "正常") { var multiple_question = row["具体故障,多个故障以|分隔"].ToString(); if (string.IsNullOrEmpty(multiple_question)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行设置为故障时,必须设置一个故障值")); } var multiple_question_list = multiple_question.Split('|'); for (int j = 0; j < multiple_question_list.Length; j++) { if (multiple_question_list[j] != "A相发热" && multiple_question_list[j] != "B相发热" && multiple_question_list[j] != "C相发热") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行" + fault_desc + "的第" + (j + 1) + "个值必须是A相发热、B相发热、C相发热之中")); } } } } else if (fault_desc == "电缆绝缘层老化开裂") { if (choice_question != "正常" && choice_question != "多个故障") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障状态内容不对,必须是正常、多个故障之中")); } if (choice_question != "正常") { var multiple_question = row["具体故障,多个故障以|分隔"].ToString(); if (string.IsNullOrEmpty(multiple_question)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行设置为故障时,必须设置一个故障值")); } var multiple_question_list = multiple_question.Split('|'); for (int j = 0; j < multiple_question_list.Length; j++) { if (multiple_question_list[j] != "A相绝缘层老化开裂" && multiple_question_list[j] != "B相绝缘层老化开裂" && multiple_question_list[j] != "C相绝缘层老化开裂" && multiple_question_list[j] != "N相绝缘层老化开裂") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行" + fault_desc + "的第" + (j + 1) + "个值必须是A相绝缘层老化开裂、B相绝缘层老化开裂、C相绝缘层老化开裂、N相绝缘层老化开裂之中")); } } } } else if (fault_desc == "通道有异物") { if (choice_question == "多个故障") { choice_question = "单个故障"; } if (choice_question != "正常" && choice_question != "单个故障") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障状态内容不对,必须是正常、单个故障之中")); } if (choice_question != "正常") { var multiple_question = row["具体故障,多个故障以|分隔"].ToString(); if (multiple_question != "大藤蔓" && multiple_question != "小藤蔓" && multiple_question != "异物") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行" + fault_desc + "的,具体故障必须是大藤蔓、小藤蔓、异物之中")); } } } else if (fault_desc == "拉线无警示套管") { if (choice_question != "正常" && choice_question != "多个故障") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障状态内容不对,必须是正常、多个故障之中")); } if (choice_question != "正常") { var multiple_question = row["具体故障,多个故障以|分隔"].ToString(); if (string.IsNullOrEmpty(multiple_question)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行设置为故障时,必须设置一个故障值")); } var multiple_question_list = multiple_question.Split('|'); for (int j = 0; j < multiple_question_list.Length; j++) { if (multiple_question_list[j] != "北侧拉线" && multiple_question_list[j] != "西侧拉线" && multiple_question_list[j] != "东侧拉线") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行" + fault_desc + "的第" + (j + 1) + "个值必须是北侧拉线、西侧拉线、东侧拉线之中")); } } } } else if (fault_desc == "拉线松动") { if (choice_question != "正常" && choice_question != "多个故障") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障状态内容不对,必须是正常、多个故障之中")); } if (choice_question != "正常") { var multiple_question = row["具体故障,多个故障以|分隔"].ToString(); if (string.IsNullOrEmpty(multiple_question)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行设置为故障时,必须设置一个故障值")); } var multiple_question_list = multiple_question.Split('|'); for (int j = 0; j < multiple_question_list.Length; j++) { if (multiple_question_list[j] != "北侧拉线" && multiple_question_list[j] != "西侧拉线" && multiple_question_list[j] != "东侧拉线") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行" + fault_desc + "的第" + (j + 1) + "个值必须是北侧拉线、西侧拉线、东侧拉线之中")); } } } } else if (fault_desc == "拉线断股锈蚀") { if (choice_question != "正常" && choice_question != "多个故障") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障状态内容不对,必须是正常、多个故障之中")); } if (choice_question != "正常") { var multiple_question = row["具体故障,多个故障以|分隔"].ToString(); if (string.IsNullOrEmpty(multiple_question)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行设置为故障时,必须设置一个故障值")); } var multiple_question_list = multiple_question.Split('|'); for (int j = 0; j < multiple_question_list.Length; j++) { if (multiple_question_list[j] != "北侧拉线" && multiple_question_list[j] != "西侧拉线" && multiple_question_list[j] != "东侧拉线") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行" + fault_desc + "的第" + (j + 1) + "个值必须是北侧拉线、西侧拉线、东侧拉线之中")); } } } var position = row["故障点位置 高,中,低"].ToString(); if (position != "高" && position != "中" && position != "低") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障点位置内容不对,需要有个默认值,必须是高、中、低之中")); } var difficulty_level = row["难度等级 高、中、低"].ToString(); if (difficulty_level != "高" && difficulty_level != "中" && difficulty_level != "低") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行难度等级内容不对,需要有个默认值,必须是高、中、低之中")); } } else if (fault_desc == "拉线UT线夹螺帽不齐全") { if (choice_question != "正常" && choice_question != "多个故障") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障状态内容不对,必须是正常、多个故障之中")); } if (choice_question != "正常") { var multiple_question = row["具体故障,多个故障以|分隔"].ToString(); if (string.IsNullOrEmpty(multiple_question)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行设置为故障时,必须设置一个故障值")); } var multiple_question_list = multiple_question.Split('|'); for (int j = 0; j < multiple_question_list.Length; j++) { if (multiple_question_list[j] != "北侧拉线" && multiple_question_list[j] != "西侧拉线" && multiple_question_list[j] != "东侧拉线") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行" + fault_desc + "的第" + (j + 1) + "个值必须是北侧拉线、西侧拉线、东侧拉线之中")); } } } var position = row["位置 左、中、右"].ToString(); if (position != "左" && position != "右") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行位置 左、中、右内容不对,需要有个默认值,必须是左、右之中")); } } else if (fault_desc == "接头发热") { if (choice_question != "正常" && choice_question != "多个故障") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障状态内容不对,必须是正常、多个故障之中")); } if (choice_question != "正常") { var multiple_question = row["具体故障,多个故障以|分隔"].ToString(); if (string.IsNullOrEmpty(multiple_question)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行设置为故障时,必须设置一个故障值")); } var multiple_question_list = multiple_question.Split('|'); for (int j = 0; j < multiple_question_list.Length; j++) { if (multiple_question_list[j] != "N相" && multiple_question_list[j] != "非N相") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行" + fault_desc + "的第" + (j + 1) + "个值必须是N相、非N相之中")); } } } } else if (fault_desc == "电杆杆身露筋、有裂纹") { if (choice_question == "多个故障") { choice_question = "单个故障"; } if (choice_question != "正常" && choice_question != "单个故障") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障状态内容不对,必须是正常、单个故障之中")); } if (choice_question != "正常") { var multiple_question = row["具体故障,多个故障以|分隔"].ToString(); if (multiple_question != "露筋" && multiple_question != "大裂纹" && multiple_question != "小裂纹") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行" + fault_desc + "的,具体故障必须是露筋、大裂纹、小裂纹之中")); } } var position = row["故障点位置 高,中,低"].ToString(); if (position != "高" && position != "中" && position != "低") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障点位置内容不对,需要有个默认值,必须是高、中、低之中")); } var difficulty_level = row["难度等级 高、中、低"].ToString(); if (difficulty_level != "高" && difficulty_level != "中" && difficulty_level != "低") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行难度等级内容不对,需要有个默认值,必须是高、中、低之中")); } var direction = row["方向 东、西、南、北"].ToString(); if (direction != "东" && direction != "西" && direction != "南" && direction != "北") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行方向内容不对,需要有个默认值,必须是东、西、南、北之中")); } } else if (fault_desc == "鸟巢") { if (choice_question == "多个故障") { choice_question = "单个故障"; } if (choice_question != "正常" && choice_question != "单个故障") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障状态内容不对,必须是正常、单个故障之中")); } if (choice_question != "正常") { var multiple_question = row["具体故障,多个故障以|分隔"].ToString(); if (multiple_question != "A相与B相之间" && multiple_question != "B相与N相之间" && multiple_question != "N相与C相之间") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行" + fault_desc + "的,具体故障必须是A相与B相之间、B相与N相之间、N相与C相之间之中")); } } } else if (fault_desc == "电杆倾斜") { if (choice_question == "多个故障") { choice_question = "单个故障"; } if (choice_question != "正常" && choice_question != "单个故障") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障状态内容不对,必须是正常、单个故障之中")); } if (choice_question != "正常") { var multiple_question = row["方向 东、西、南、北"].ToString(); if (multiple_question != "东" && multiple_question != "南" && multiple_question != "西" && multiple_question != "北") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行" + fault_desc + "的,具体故障必须是东、南、西、北之中")); } var degrees_value = row["故障点位置角度度数"].ToString(); if (string.IsNullOrEmpty(degrees_value)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在故障点位置角度度数为空的记录,请检查上传文件")); } int number; if (!int.TryParse(degrees_value, out number)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障点位置角度度数数据格式不对,必须是数字")); } if (number < -10 && number > 10) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障点位置角度度数范围必须在-10~10")); } } } else if (fault_desc == "瓷瓶损坏")//单个故障 { if (choice_question != "正常" && choice_question != "单个故障") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障状态内容不对,必须是正常、单个故障之中")); } if (choice_question != "正常") { var fusible_core_normal = row["缺陷详细信息"].ToString(); if (fusible_core_normal != "大缺口" && fusible_core_normal != "上缺口" && fusible_core_normal != "下缺口" && fusible_core_normal != "瓷瓶裂纹") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行缺陷详细信息内容不对,必须是大缺口、上缺口、下缺口、瓷瓶裂纹之中")); } } } else if (fault_desc == "线路杂物") { if (choice_question != "正常" && choice_question != "多个故障") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障状态内容不对,必须是正常、多个故障之中")); } if (choice_question != "正常") { var multiple_question = row["具体故障,多个故障以|分隔"].ToString(); if (string.IsNullOrEmpty(multiple_question)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行设置为故障时,必须设置一个故障值")); } var multiple_question_list = multiple_question.Split('|'); for (int j = 0; j < multiple_question_list.Length; j++) { if (multiple_question_list[j] != "A相" && multiple_question_list[j] != "B相" && multiple_question_list[j] != "C相" && multiple_question_list[j] != "N相") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行" + fault_desc + "的第" + (j + 1) + "个值必须是A相、B相、C相、N相之中")); } } } } else if (fault_desc == "线路弧垂不一致") { if (choice_question != "正常" && choice_question != "多个故障") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障状态内容不对,必须是正常、多个故障之中")); } if (choice_question != "正常") { var multiple_question = row["具体故障,多个故障以|分隔"].ToString(); if (string.IsNullOrEmpty(multiple_question)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行设置为故障时,必须设置一个故障值")); } var multiple_question_list = multiple_question.Split('|'); for (int j = 0; j < multiple_question_list.Length; j++) { if (multiple_question_list[j] != "A相" && multiple_question_list[j] != "B相" && multiple_question_list[j] != "C相" && multiple_question_list[j] != "N相") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行" + fault_desc + "的第" + (j + 1) + "个值必须是A相、B相、C相、N相之中")); } } } } else if (fault_desc == "相色标识错误") { if (choice_question != "正常" && choice_question != "多个故障") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障状态内容不对,必须是正常、多个故障之中")); } var values = row["具体故障,多个故障以|分隔"].ToString(); if (string.IsNullOrWhiteSpace(values)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在具体故障为空的记录,请检查上传文件")); } if (!values.Contains("|")) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行具体故障必须为四个,并以|分隔")); } var values_list = values.Split('|'); if (values_list.Length != 4) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行具体故障必须为两个,并以|分隔")); } } else { if (choice_question != "正常" && choice_question != "单个故障") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行故障状态内容不对,必须是正常、单个故障之中")); } } if (fault_desc == "漏电保护设置不合理") { #region 断路器设置名称 var settings = row["断路器设置名称"].ToString(); if (string.IsNullOrWhiteSpace(settings)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在断路器设置名称为空的记录,请检查上传文件")); } if (settings != "漏电保护设置") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器设置名称内容不对,必须是漏电保护设置")); } #endregion #region 断路器参数名 var names = row["断路器参数名"].ToString(); if (string.IsNullOrWhiteSpace(names)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在断路器参数名为空的记录,请检查上传文件")); } if (names != "档位|开关") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行漏电保护设置不合理的断路器参数名必须是:档位|开关")); } #endregion #region 断路器参数值 var values = row["断路器参数值"].ToString(); if (string.IsNullOrWhiteSpace(values)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在断路器参数值为空的记录,请检查上传文件")); } if (!values.Contains("|")) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器参数值必须为两个,并以|分隔")); } var values_list = values.Split('|'); if (values_list.Length != 2) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器参数值必须为两个,并以|分隔")); } if (values_list[0] == "50mA") { values_list[0] = "050mA"; } if (values_list[0] != "50mA" && values_list[0] != "050mA" && values_list[0] != "100mA" && values_list[0] != "200mA" && values_list[0] != "300mA" && values_list[0] != "400mA" && values_list[0] != "500mA" && values_list[0] != "600mA" && values_list[0] != "800mA") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器参数值第一个值必须是50mA、100mA、200mA、300mA、400mA、500mA、600mA、800mA")); } if (values_list[1] != "开" && values_list[1] != "关") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器参数值第二个值必须是开或者关")); } #endregion } else if (fault_desc == "过载保护设置错误") { #region 断路器设置名称 var settings = row["断路器设置名称"].ToString(); if (string.IsNullOrWhiteSpace(settings)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在断路器设置名称为空的记录,请检查上传文件")); } if (settings != "过载保护设置") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器设置名称内容不对,必须是:过载保护设置")); } #endregion #region 断路器参数名 var names = row["断路器参数名"].ToString(); if (string.IsNullOrWhiteSpace(names)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在断路器参数名为空的记录,请检查上传文件")); } if (names != "ln1|保护|t1") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行过载保护设置错误的断路器参数名必须是:ln1|保护|t1")); } #endregion #region 断路器参数值 var values = row["断路器参数值"].ToString(); if (string.IsNullOrWhiteSpace(values)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在断路器参数值为空的记录,请检查上传文件")); } if (!values.Contains("|")) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器参数值必须为三个,并以|分隔")); } var values_list = values.Split('|'); if (values_list.Length != 3) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器参数值必须为三个,并以|分隔")); } if (values_list[0] != "0.4ln" && values_list[0] != "0.5ln" && values_list[0] != "0.6ln" && values_list[0] != "0.7ln" && values_list[0] != "0.8ln" && values_list[0] != "0.9ln" && values_list[0] != "1.0ln") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器参数值第一个值必须是0.4ln、0.5ln、0.6ln、0.7ln、0.8ln、0.9ln、1.0ln")); } if (values_list[1] != "开" && values_list[1] != "关") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器参数值第二个值必须是开或者关")); } if (values_list[2] != "3S" && values_list[2] != "4S" && values_list[2] != "5S") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器参数值第三个值必须是3S、4S、5S")); } #endregion } else if (fault_desc == "短路延时保护设置错误") { #region 断路器设置名称 var settings = row["断路器设置名称"].ToString(); if (string.IsNullOrWhiteSpace(settings)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在断路器设置名称为空的记录,请检查上传文件")); } if (settings != "短路延时设置") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器设置名称内容不对,必须是:短路延时设置")); } #endregion #region 断路器参数名 var names = row["断路器参数名"].ToString(); if (string.IsNullOrWhiteSpace(names)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在断路器参数名为空的记录,请检查上传文件")); } if (names != "ln2|保护|t2|时限") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行短路延时保护设置错误的断路器参数名必须是:ln2|保护|t2|时限")); } #endregion #region 断路器参数值 var values = row["断路器参数值"].ToString(); if (string.IsNullOrWhiteSpace(values)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在断路器参数值为空的记录,请检查上传文件")); } if (!values.Contains("|")) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器参数值必须为四个,并以|分隔")); } var values_list = values.Split('|'); if (values_list.Length != 4) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器参数值必须为四个,并以|分隔")); } if (values_list[0] != "2ln" && values_list[0] != "2.5ln" && values_list[0] != "3ln" && values_list[0] != "4ln" && values_list[0] != "5ln" && values_list[0] != "6ln" && values_list[0] != "7ln" && values_list[0] != "8ln" && values_list[0] != "10ln") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器参数值第一个值必须是2ln、2.5ln、3ln、4ln、5ln、6ln、7ln、8ln、10ln")); } if (values_list[1] != "开" && values_list[1] != "关") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器参数值第二个值必须是开或者关")); } if (values_list[2] != "0.05S" && values_list[2] != "0.1S" && values_list[2] != "0.2S" && values_list[2] != "0.3S" && values_list[2] != "0.4S" && values_list[2] != "0.6S" && values_list[2] != "0.8S" && values_list[2] != "1S") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器参数值第三个值必须是0.05S、0.1S、0.2S、0.3S、0.4S、0.6S、0.8S、1S")); } if (values_list[3] != "定" && values_list[3] != "反") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器参数值第四个值必须是定或者反")); } #endregion } else if (fault_desc == "短路瞬时保护设置错误") { #region 断路器设置名称 var settings = row["断路器设置名称"].ToString(); if (string.IsNullOrWhiteSpace(settings)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在断路器设置名称为空的记录,请检查上传文件")); } if (settings != "短路瞬时设置") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器设置名称内容不对,必须是短路瞬时设置")); } #endregion #region 断路器参数名 var names = row["断路器参数名"].ToString(); if (string.IsNullOrWhiteSpace(names)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在断路器参数名为空的记录,请检查上传文件")); } if (names != "ln2|保护") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行短路瞬时保护设置错误的断路器参数名必须是:ln2|保护")); } #endregion #region 断路器参数值 var values = row["断路器参数值"].ToString(); if (string.IsNullOrWhiteSpace(values)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在断路器参数值为空的记录,请检查上传文件")); } if (!values.Contains("|")) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器参数值必须为两个,并以|分隔")); } var values_list = values.Split('|'); if (values_list.Length != 2) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器参数值必须为两个,并以|分隔")); } if (values_list[0] != "6ln" && values_list[0] != "7ln" && values_list[0] != "8ln" && values_list[0] != "10ln" && values_list[0] != "11ln" && values_list[0] != "12ln" && values_list[0] != "13ln" && values_list[0] != "14ln") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器参数值第一个值必须是6ln、7ln、8ln、10ln、11ln、12ln、13ln、14ln")); } if (values_list[1] != "开" && values_list[1] != "关") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器参数值第二个值必须是开或者关")); } #endregion } else if (fault_desc == "欠压保护设置错误") { #region 断路器设置名称 var settings = row["断路器设置名称"].ToString(); if (string.IsNullOrWhiteSpace(settings)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在断路器设置名称为空的记录,请检查上传文件")); } if (settings != "欠压保护设置") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器设置名称内容不对,必须是:欠压保护设置")); } #endregion #region 断路器参数名 var names = row["断路器参数名"].ToString(); if (string.IsNullOrWhiteSpace(names)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在断路器参数名为空的记录,请检查上传文件")); } if (names != "档位|开关") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行欠压保护设置错误的断路器参数名必须是:档位|开关")); } #endregion #region 断路器参数值 var values = row["断路器参数值"].ToString(); if (string.IsNullOrWhiteSpace(values)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在断路器参数值为空的记录,请检查上传文件")); } if (!values.Contains("|")) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器参数值必须为两个,并以|分隔")); } var values_list = values.Split('|'); if (values_list.Length != 2) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器参数值必须为两个,并以|分隔")); } if (values_list[0] != "170" && values_list[0] != "175" && values_list[0] != "180" && values_list[0] != "185" && values_list[0] != "190" && values_list[0] != "195" && values_list[0] != "200") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器参数值第一个值必须是170、175、180、185、190、195、200")); } if (values_list[1] != "开" && values_list[1] != "关") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器参数值第二个值必须是开或者关")); } #endregion } else if (fault_desc == "过压保护设置错误") { #region 断路器设置名称 var settings = row["断路器设置名称"].ToString(); if (string.IsNullOrWhiteSpace(settings)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在断路器设置名称为空的记录,请检查上传文件")); } if (settings != "过压保护设置") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器设置名称内容不对,必须是:过压保护设")); } #endregion #region 断路器参数名 var names = row["断路器参数名"].ToString(); if (string.IsNullOrWhiteSpace(names)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在断路器参数名为空的记录,请检查上传文件")); } if (names != "档位|开关") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行过压保护设置错误的断路器参数名必须是:档位|开关")); } #endregion #region 断路器参数值 var values = row["断路器参数值"].ToString(); if (string.IsNullOrWhiteSpace(values)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在断路器参数值为空的记录,请检查上传文件")); } if (!values.Contains("|")) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器参数值必须为两个,并以|分隔")); } var values_list = values.Split('|'); if (values_list.Length != 2) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器参数值必须为两个,并以|分隔")); } if (values_list[0] != "255" && values_list[0] != "260" && values_list[0] != "265" && values_list[0] != "270" && values_list[0] != "275" && values_list[0] != "280" && values_list[0] != "285" && values_list[0] != "290") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器参数值第一个值必须是255、260、265、270、275、280、285、290")); } if (values_list[1] != "开" && values_list[1] != "关") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器参数值第二个值必须是开或者关")); } #endregion } else if (fault_desc == "缺相保护设置错误") { #region 断路器设置名称 var settings = row["断路器设置名称"].ToString(); if (string.IsNullOrWhiteSpace(settings)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在断路器设置名称为空的记录,请检查上传文件")); } if (settings != "缺相保护设置") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器设置名称内容不对,必须是缺相保护设置")); } #endregion #region 断路器参数名 var names = row["断路器参数名"].ToString(); if (string.IsNullOrWhiteSpace(names)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在断路器参数名为空的记录,请检查上传文件")); } if (names != "开关") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行缺相保护设置错误的断路器参数名必须是:开关")); } #endregion #region 断路器参数值 var values = row["断路器参数值"].ToString(); if (string.IsNullOrWhiteSpace(values)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在断路器参数值为空的记录,请检查上传文件")); } var values_list = values.Split('|'); if (values_list.Length != 1) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器参数值必须为一个,并以|分隔")); } if (values_list[0] != "开" && values_list[0] != "关") { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行断路器参数值第一个值必须是开或者关")); } #endregion } } } else { return Json(Tool.GetJsonWithCode(APICode.Fail, "上传失败:考试故障表格内容为空")); } #endregion #endregion for (int i = 0; i < fault_table.Rows.Count; i++) { var row = fault_table.Rows[i]; var fault_model = new Competition.Mysql.Model.pow_exam_fault(); fault_model.ExamFaultId = Guid.NewGuid().ToString("N"); fault_model.ExamId = exam_model.ExamId; var select_fault_model = init_fault_list.Where(a => a.FaultDesc == row["故障现象"].ToString() && a.RootDeviceId == root_device_id_list[i] && a.DeviceId == device_id_list[i]).FirstOrDefault(); fault_model.FaultId = select_fault_model.FaultId; fault_model.ThreeFaultId = select_fault_model.ThreeFaultId; fault_model.ThreeDeviceId = select_fault_model.ThreeDeviceId; fault_model.RootDeviceId = root_device_id_list[i]; fault_model.DeviceId = device_id_list[i]; fault_model.Type = select_fault_model.Type; fault_model.FaultType = select_fault_model.FaultType; fault_model.FaultDesc = row["故障现象"].ToString(); fault_model.DefectLevel = row["故障等级"].ToString(); fault_model.SpecificSimulation = row["是否具体模拟"].ToString(); fault_model.FaultPosition = row["故障具体位置"].ToString(); fault_model.SelectSocre = row["查找缺陷分值"].ToString(); fault_model.FaultScore = row["故障缺陷分值"].ToString(); fault_model.HandlerScore = row["处理缺陷分值"].ToString(); if (row["缺陷详细信息"].ToString() == "大缺口") { fault_model.DegreesSerialNumber = "1"; } else if (row["缺陷详细信息"].ToString() == "上缺口") { fault_model.DegreesSerialNumber = "2"; } else if (row["缺陷详细信息"].ToString() == "下缺口") { fault_model.DegreesSerialNumber = "3"; } else if (row["缺陷详细信息"].ToString() == "瓷瓶裂纹") { fault_model.DegreesSerialNumber = "4"; } if (row["故障现象"].ToString() == "瓷瓶损坏") { if (string.IsNullOrEmpty(row["缺陷详细信息"].ToString())) { fault_model.DegreesSerialNumber = "0"; } } fault_model.DegreesValue = row["故障点位置角度度数"].ToString(); if (row["故障状态"].ToString() == "正常") { fault_model.ChoiceQuestion = "0"; } else if (row["故障状态"].ToString() == "单个故障") { fault_model.ChoiceQuestion = "1"; } else if (row["故障状态"].ToString() == "多个故障") { fault_model.ChoiceQuestion = "2"; } if (row["故障状态"].ToString() != "正常") { if (row["故障现象"].ToString() == "通道有异物" || row["故障现象"].ToString() == "鸟巢" || row["故障现象"].ToString() == "电杆杆身露筋、有裂纹" || row["故障现象"].ToString() == "电杆倾斜") { fault_model.ChoiceQuestion = "2"; } if (row["故障现象"].ToString() == "配电箱箱门未加锁" || row["故障现象"].ToString() == "柜门与箱体没有链接线") { fault_model.ChoiceQuestion = "1"; } } fault_model.MultipleQuestion = row["具体故障,多个故障以|分隔"].ToString(); fault_model.DifficultyLevel = row["难度等级 高、中、低"].ToString(); fault_model.PositionValue = row["故障点位置 高,中,低"].ToString(); fault_model.Position = row["位置 左、中、右"].ToString(); fault_model.FusibleCoreNormal = row["熔芯正常值"].ToString(); fault_model.FusibleCoreFault = row["熔芯故障值"].ToString(); fault_model.PorcelainBottleType = row["瓷瓶子类型(裙边1、裙边2、裙边3、裙边4)"].ToString(); fault_model.Direction = row["方向 东、西、南、北"].ToString(); fault_model.Topic = row["题干"].ToString(); fault_model.OptionA = row["选项A"].ToString(); fault_model.OptionB = row["选项B"].ToString(); fault_model.OptionC = row["选项C"].ToString(); fault_model.OptionD = row["选项D"].ToString(); fault_model.OptionE = row["选项E"].ToString(); fault_model.RightKey = row["正确答案,多个以|分隔"].ToString(); fault_model.Settings = row["断路器设置名称"].ToString(); fault_model.Name = row["断路器参数名"].ToString(); fault_model.Value = row["断路器参数值"].ToString(); fault_model.CableName = row["电缆名称"].ToString(); fault_model.CableStart = row["电缆起点"].ToString(); fault_model.CableEnd = row["电缆终点"].ToString(); fault_model.ModelLength = row["型号长度"].ToString(); fault_model.RequiredTool = select_fault_model.RequiredTool; fault_model.CreateTime = select_fault_model.CreateTime; fault_list.Add(fault_model); } 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_table.Rows[0]["台区"].ToString() + name1; item.CableStart = exam_table.Rows[0]["台区"].ToString() + start1; item.CableEnd = exam_table.Rows[0]["台区"].ToString() + end1; item.ModelLength = exam_table.Rows[0]["进线电缆型号及长度"].ToString(); } //412 if (item.DeviceId == "a238da230c0f11ed844e7cd30a92bb1c") { item.CableName = exam_table.Rows[0]["台区"].ToString() + name2; item.CableStart = exam_table.Rows[0]["台区"].ToString() + start2; item.CableEnd = exam_table.Rows[0]["台区"].ToString() + end2; item.ModelLength = exam_table.Rows[0]["进线电缆型号及长度"].ToString(); } 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), exam_table.Rows[0]["进线电缆型号及长度"].ToString(), 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), exam_table.Rows[0]["进线电缆型号及长度"].ToString(), 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), exam_table.Rows[0]["进线电缆型号及长度"].ToString(), 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), exam_table.Rows[0]["进线电缆型号及长度"].ToString(), 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), exam_table.Rows[0]["进线电缆型号及长度"].ToString(), 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 power_transmission_ticket_list = new List(); #region 考试停电操作票选项 var power_failure_ticket_table = Tool.ExcelToDataTable(Files.OpenReadStream(), fileExtension, "考试停电操作票选项", 0, true, false); if (null != power_failure_ticket_table && power_failure_ticket_table.Rows.Count > 0) { for (int i = 0; i < power_failure_ticket_table.Rows.Count; i++) { #region ===检查上传的字段==== var row = power_failure_ticket_table.Rows[i]; #region 类型(送电、停电) //var type = row["类型(送电、停电)"].ToString(); //if (string.IsNullOrWhiteSpace(type)) //{ // msg = "存在类型(送电、停电)为空的记录,请检查上传文件"; // return false; //} #endregion #region 序号 var serial_number = row["序号"].ToString(); if (string.IsNullOrWhiteSpace(serial_number)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在序号为空的记录,请检查上传文件")); } int number; if (!int.TryParse(serial_number, out number)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行序号数据格式不对,必须是数字")); } #endregion #region 内容 //var content = row["内容"].ToString(); //if (string.IsNullOrWhiteSpace(content)) //{ // msg = "存在内容为空的记录,请检查上传文件"; // return false; //} #endregion #endregion } } else { return Json(Tool.GetJsonWithCode(APICode.Fail, "上传失败:考试停电操作票选项表格内容为空")); } for (int i = 0; i < power_failure_ticket_table.Rows.Count; i++) { var row = power_failure_ticket_table.Rows[i]; if (!string.IsNullOrEmpty(row["内容"].ToString())) { var operation_ticket_model = new Competition.Mysql.Model.pow_exam_operation_ticket(); var content = row["内容"].ToString().Replace("台区一", "xxxxx").Replace("台区二", "xxxxx").Replace("台区三", "xxxxx").Replace("台区四", "xxxxx").Replace("台区五", "xxxxx"); var ticket_init_model = init_ticket_list.Where(a => a.Content == content && a.Type == "停电").FirstOrDefault(); if (ticket_init_model != null) { operation_ticket_model.ExamOperationTicketId = Guid.NewGuid().ToString("N"); operation_ticket_model.OperationTicketId = ticket_init_model.OperationTicketId; operation_ticket_model.ExamId = exam_model.ExamId; operation_ticket_model.Type = "停电"; operation_ticket_model.SerialNumber = int.Parse(row["序号"].ToString()); operation_ticket_model.Content = row["内容"].ToString(); power_transmission_ticket_list.Add(operation_ticket_model); } } } #endregion #region 考试送电操作票选项 var power_transmission_ticket_table = Tool.ExcelToDataTable(Files.OpenReadStream(), fileExtension, "考试送电操作票选项", 0, true, false); if (null != power_transmission_ticket_table && power_transmission_ticket_table.Rows.Count > 0) { for (int i = 0; i < power_transmission_ticket_table.Rows.Count; i++) { #region ===检查上传的字段==== var row = power_transmission_ticket_table.Rows[i]; #region 类型(送电、停电) //var type = row["类型(送电、停电)"].ToString(); //if (string.IsNullOrWhiteSpace(type)) //{ // msg = "存在类型(送电、停电)为空的记录,请检查上传文件"; // return false; //} #endregion #region 序号 var serial_number = row["序号"].ToString(); if (string.IsNullOrWhiteSpace(serial_number)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行存在序号为空的记录,请检查上传文件")); } int number; if (!int.TryParse(serial_number, out number)) { return Json(Tool.GetJsonWithCode(APICode.Fail, "考试故障第" + (i + 2) + "行序号数据格式不对,必须是数字")); } #endregion #region 内容 //var content = row["内容"].ToString(); //if (string.IsNullOrWhiteSpace(content)) //{ // msg = "存在内容为空的记录,请检查上传文件"; // return false; //} #endregion #endregion } } else { return Json(Tool.GetJsonWithCode(APICode.Fail, "上传失败:考试送电操作票选项表格内容为空")); } for (int i = 0; i < power_transmission_ticket_table.Rows.Count; i++) { var row = power_transmission_ticket_table.Rows[i]; if (!string.IsNullOrEmpty(row["内容"].ToString())) { var operation_ticket_model = new Competition.Mysql.Model.pow_exam_operation_ticket(); var content = row["内容"].ToString().Replace("台区一", "xxxxx").Replace("台区二", "xxxxx").Replace("台区三", "xxxxx").Replace("台区四", "xxxxx").Replace("台区五", "xxxxx"); var ticket_init_model = init_ticket_list.Where(a => a.Content == content && a.Type == "送电").FirstOrDefault(); if (ticket_init_model != null) { operation_ticket_model.ExamOperationTicketId = Guid.NewGuid().ToString("N"); operation_ticket_model.OperationTicketId = ticket_init_model.OperationTicketId; operation_ticket_model.ExamId = exam_model.ExamId; operation_ticket_model.Type = "送电"; operation_ticket_model.SerialNumber = int.Parse(row["序号"].ToString()); operation_ticket_model.Content = row["内容"].ToString(); power_transmission_ticket_list.Add(operation_ticket_model); } } } #endregion foreach (var item in power_transmission_ticket_list) { if (power_transmission_ticket_list.Where(a => a.Type == item.Type && a.Content == item.Content).Count() > 1) { return Json(Tool.GetJsonWithCode(APICode.Fail, item.Type + "操作票里有相同的内容:" + item.Content)); } } if (bll.OperationData(exam_model, tool_list, fault_list, power_transmission_ticket_list) > 0) { return Json(Tool.GetJsonWithCode(APICode.Success, "上传导入成功")); } else { return Json(Tool.GetJsonWithCode(APICode.Fail, "上传导入失败")); } } } catch (Exception ex) { LogHelper.WriteLog(ex.Message + ",行号:" + ex.StackTrace); return Json(Tool.GetJsonWithCode(APICode.Fail, "发生错误,请联系管理员。")); } } /// /// 获取树结构json /// /// private List ReadTree() { var tree_list = new List(); string fault_tree_file = _webHostEnvironment.WebRootPath + "/Json/FaultTree.json"; //读取json文件 using (StreamReader file = System.IO.File.OpenText(fault_tree_file)) { using (JsonTextReader reader = new JsonTextReader(file)) { tree_list = JsonConvert.DeserializeObject>(JToken.ReadFrom(reader).ToString()); } } return tree_list; } } }