Ejemplo n.º 1
0
        public string FeedZonePTL(string xml)
        {
            try { XDocument.Parse(xml); }
            catch (Exception ex) { return("ERROR:" + ex.Message); }
            string message = string.Empty;
            bool   result  = false;

            try
            {
                FeedRecord model = FeedZonePTLConverter.ConvertRequest(xml);
                if (model != null)
                {
                    if ((!string.IsNullOrEmpty(model.PACKLINE)) && (!string.IsNullOrEmpty(model.PRDSEQ)))
                    {
                        //保存记录
                        try
                        {
                            using (GeelyPtlEntities dbContext = new GeelyPtlEntities())
                            {
                                var regionAreaId = dbContext.CacheRegions.Select(x => x.AreaId).Distinct();
                                if (regionAreaId.Contains(model.PACKLINE))
                                {
                                    CacheRegionLightOrder cacheRegionOrder = new CacheRegionLightOrder()
                                    {
                                        AreaId     = model.PACKLINE,
                                        MaterialId = model.PRDSEQ
                                    };
                                    dbContext.CacheRegionLightOrders.Add(cacheRegionOrder);
                                    dbContext.SaveChanges();
                                    result  = true;
                                    message = "数据保存成功!";
                                }
                                else
                                {
                                    dbContext.FeedRecords.Add(model);
                                    dbContext.SaveChanges();
                                    result  = true;
                                    message = "数据保存成功!";
                                }
                            }
                        }
                        catch
                        {
                            message = "数据保存失败!";
                        }
                    }
                    else
                    {
                        message = "分装线码或样车码为空!";
                    }
                }
            }
            catch (Exception ex)
            {
                message = ex.Message;
            }

            return(FeedZonePTLConverter.ConvertResponse(xml, result, message));
        }
Ejemplo n.º 2
0
        public static FeedRecord 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();

            FeedRecord model = new FeedRecord();

            model.FCCODE   = indicationElement.Element("FCCODE").Value;
            model.GZZLIST  = indicationElement.Element("GZZLIST").Value;
            model.MONUM    = indicationElement.Element("MONUM").Value;
            model.PACKLINE = indicationElement.Element("PACKLINE").Value;
            model.PLCODE   = indicationElement.Element("PLCODE").Value;
            model.PRDSEQ   = indicationElement.Element("PRDSEQ").Value;
            model.PRJCFG   = indicationElement.Element("PRJCFG").Value;
            model.PRJCODE  = indicationElement.Element("PRJCODE").Value;
            model.PRJSTEP  = indicationElement.Element("PRJSTEP").Value;
            model.STCODE   = indicationElement.Element("STCODE").Value;

            return(model);
        }
Ejemplo n.º 3
0
        private void DoStatus(object obj)
        {
            string areaId = (string)obj;

            while (true)
            {
                if (dictBool[areaId] == false)
                {
                    //查找该区域下是否有亮灯,有则不执行,表示有任务
                    var count = devices.Where(x => x.AreaId == areaId && x.Status == 1).Count();
                    if (count > 0)
                    {
                        Thread.Sleep(1000);
                        continue;
                    }

                    FeedRecord model = null;
                    try
                    {
                        using (GeelyPtlEntities dbContext = new GeelyPtlEntities())
                        {
                            model = dbContext.FeedRecords.Where(x => x.PACKLINE == areaId).OrderBy(x => x.Id).FirstOrDefault();
                        }
                    }
                    catch
                    {
                    }
                    if (model != null)
                    {
                        //根据分装线代码找到指定的灯
                        using (GeelyPtlEntities dbContext = new GeelyPtlEntities())
                        {
                            using (var dbContextTransaction = dbContext.Database.BeginTransaction())
                            {
                                try
                                {
                                    //先找到需要亮的灯
                                    var target = dbContext.FeedZones.Where(x => x.AreaId == model.PACKLINE && x.MaterialId == model.PRDSEQ).OrderBy(x => x.Id).FirstOrDefault();
                                    if (target != null)
                                    {
                                        target.Status = 1;//点灯
                                        //找到柱灯
                                        var m3 = dbContext.FeedZones.FirstOrDefault(x => x.AreaId == model.PACKLINE && x.IsM3 == true);
                                        if (m3 != null)
                                        {
                                            m3.Status = 1;
                                        }
                                        //找到交互灯,可能有多个,都点亮
                                        var items = dbContext.FeedZones.Where(x => x.AreaId == model.PACKLINE && x.IsInteractive == true).ToList();
                                        foreach (var item in items)
                                        {
                                            item.Status = 1;
                                        }
                                        dbContext.SaveChanges();
                                        dbContextTransaction.Commit();
                                    }
                                    else
                                    {
                                    }
                                }
                                catch (Exception ex)
                                {
                                    dbContextTransaction.Rollback();
                                }
                            }
                        }
                    }
                }

                Thread.Sleep(1000);
            }
        }