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)); }
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); }
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); } }