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