Beispiel #1
0
        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"));
        }
Beispiel #2
0
        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"));
            }
        }