public ActionResult CheckWcappFile(HttpPostedFileBase file) { if (!WcappFile.IsFileCorrect(file.InputStream)) { return(Json(new { succeed = false, correct = false }, "text/html")); } return(Json(new { succeed = true, correct = true }, "text/html")); }
public ActionResult ImportWcapp(HttpPostedFileBase file) { try { var processes = new WcappFile(file.InputStream).ToProcesses(); var db = new Context(); List <string> existProcesses = new List <string>(); // TODO 将processes更新到数据库 //IsDeviceNet为true设备网 if (GlobalData.IsDeviceNet) { foreach (var proce in processes) { var process = db.Processes.SingleOrDefault(x => x.No == proce.No && x.Version == proce.Version); if (process != null) { //相同编号工艺规程编号的同一版本不能重复导入 existProcesses.Add($"{process.No}({process.VersionString})"); continue; } if (proce.Author == null) { return(Json(new { succeed = false, error = "请指定导入的Wcapp文件编制者" }, "text/html")); } var author = db.Users.Find(proce.Author.Id); process = new Process { PdmId = proce.No, No = proce.No, PartNo = proce.PartNo, PartName = proce.PartName, Author = author, ApprovalState = proce.ApprovalState, TestState = proce.TestState, Version = proce.Version, Procedures = new List <Procedure>() }; foreach (var procedure in proce.Procedures) { var proc = new Procedure { PdmId = procedure.No, No = procedure.No, Name = procedure.Name, WeldMethod = procedure.WeldMethod, WeldType = procedure.WeldType, ResistType = procedure.ResistType, AutoLevel = procedure.AutoLevel, TestState = procedure.TestState, Seams = new List <Seam>() }; foreach (var seam in procedure.Seams) { var ns = new Seam { No = seam.No, TestState = seam.TestState, JointForm = seam.JointForm, SeamLevel = seam.SeamLevel, CheckStandard = seam.CheckStandard, Material1 = seam.Material1, Material2 = seam.Material2, Material3 = seam.Material3, Thick1 = seam.Thick1, Thick2 = seam.Thick2, Thick3 = seam.Thick3, Gap = seam.Gap, InitialParams = new List <SeamParam1>(), RevisedParams = new List <SeamParam2>() }; foreach (var param in seam.InitialParams) { var npm = new SeamParam1 { Enum = param.Enum, Value = param.Value }; ns.InitialParams.Add(npm); } foreach (var param in seam.RevisedParams) { var npm = new SeamParam2 { Enum = param.Enum, Value = param.Value }; ns.RevisedParams.Add(npm); } proc.Seams.Add(ns); } process.Procedures.Add(proc); } db.Processes.Add(process); db.SaveChanges(); } } else // 导入到内网 { foreach (var proce in processes) { var processDb = db.Processes.Include("Procedures.Seams.RevisedParams").SingleOrDefault(x => x.No == proce.No && x.Version == proce.Version); //var processDbs = db.Processes.SingleOrDefault(x => x.No == proce.No && x.Version == proce.Version); if (processDb == null) { return(Json(new { succeed = false, error = "零件编号的工艺规程不存在" }, "text/html")); } if (!proce.Published) { return(Json(new { succeed = false, error = "状态未发布" }, "text/html")); } processDb.Published = proce.Published; if (proce.TestState != ProgramTestState.已完成) { return(Json(new { succeed = false, error = "试焊状态未完成" }, "text/html")); } processDb.TestState = proce.TestState; foreach (var procedure in proce.Procedures) { var prodedureDb = processDb.Procedures.SingleOrDefault(x => x.No == procedure.No); if (prodedureDb.TestState != ProgramTestState.已完成) { return(Json(new { succeed = false, error = "试焊状态未完成" }, "text/html")); } prodedureDb.TestState = procedure.TestState; foreach (var seam in procedure.Seams) { var seamDb = prodedureDb.Seams.SingleOrDefault(x => x.No == procedure.No); if (seamDb.TestState != TestState.已完成) { return(Json(new { succeed = false, error = "试焊状态未完成" }, "text/html")); } seamDb.TestState = seam.TestState; if (seamDb.RevisedParams.Any()) { return(Json(new { succeed = false, error = "试焊状态未完成" }, "text/html")); } foreach (var param in seam.RevisedParams) { seamDb.RevisedParams.Add(new Models.Database.SeamParam2 { Enum = param.Enum, Value = param.Value }); } } } db.SaveChanges(); } } if (existProcesses.Any()) { return(Json(new { succeed = true, existProcesses }, "text/html")); } else { return(Json(new { succeed = true }, "text/html")); } } catch (Exception e) { Log.Error(e.StackTrace); return(Json(new { succeed = false, error = e.Message }, "text/html")); } }