Ejemplo n.º 1
0
        public static AssemblyLightOrder ConvertRequest(string xml)
        {
            XDocument xDocument         = XDocument.Parse(xml);
            XElement  serviceElement    = xDocument.Descendants("Service").First();
            XElement  dataElement       = serviceElement.Descendants("Data").First();
            XElement  requestElement    = dataElement.Descendants("Request").First();
            XElement  indicationElement = requestElement.Descendants("ASSEMBLE").First();

            AssemblyLightOrder model = new AssemblyLightOrder();

            model.MaterialId = indicationElement.Element("PRDSEQ").Value;
            return(model);
        }
Ejemplo n.º 2
0
        private void DoStatus(object obj)
        {
            Thread.Sleep(2000);//这里休眠5秒是为了让程序先执行一次Dowork方法
            string areaId = obj.ToString();

            while (true)
            {
                GeelyPtlEntities context = new GeelyPtlEntities();
                var dbContextTransaction = context.Database.BeginTransaction();
                var model = context.Assemblings.Where(x => x.Status == 1 && x.AreaId == areaId).FirstOrDefault();
                if (model == null)
                {
                    //获取所有该区域所有装配指令,有匹配的物料则亮灯,亮灯后删除指令,没有则不亮灯
                    AssemblyLightOrder order = new AssemblyLightOrder();

                    try
                    {
                        //context.Session.BeginTransaction();
                        order = context.AssemblyLightOrders.OrderBy(p => p.Id).FirstOrDefault();

                        var item = context.Assemblings.Where(x => x.MaterialId == order.MaterialId).FirstOrDefault();
                        if (item != null)
                        {
                            item.Status = 1;//亮灯

                            //删除已使用指令
                            context.AssemblyLightOrders.Remove(order);
                        }
                        context.SaveChanges();

                        dbContextTransaction.Commit();
                    }
                    catch (Exception ex)
                    {
                        //if (context.Session.IsInTransaction)
                        //{
                        //    context.Session.RollbackTransaction();
                        //}
                        dbContextTransaction.Rollback();
                    }
                    finally
                    {
                        context.Dispose();
                    }
                    Thread.Sleep(1000);
                }
            }
        }
Ejemplo n.º 3
0
        public string AssemblingPTL(string xml)
        {
            try { XDocument.Parse(xml); }
            catch (Exception ex) { return("ERROR:" + ex.Message); }

            string message = string.Empty;
            bool   result  = false;

            try
            {
                AssemblyLightOrder model = AssemblingPTLConverter.ConvertRequest(xml);
                if (model != null)
                {
                    if (!string.IsNullOrEmpty(model.MaterialId))
                    {
                        try
                        {
                            using (GeelyPtlEntities dbContext = new GeelyPtlEntities())
                            {
                                dbContext.AssemblyLightOrders.Add(model);

                                dbContext.SaveChanges();

                                result  = true;
                                message = string.Empty;
                            }
                        }
                        catch (Exception)
                        {
                            message = "数据发送失败!";
                        }
                    }
                    else
                    {
                        message = "样车码为空!";
                    }
                }
            }
            catch (Exception ex)
            {
                message = ex.Message;
            }
            return(AssemblingPTLConverter.ConvertResponse(xml, result, message));
        }