public ProcessMsg CompleteStore(List<string> packageIds, string whouse, string posi) { using (TransactionScope trans = new TransactionScope()) { using (IUnitOfWork unit = MSSqlHelper.DataContext()) { ProcessMsg msg = new ProcessMsg(); try { string trayId = "T" + DateTime.Now.ToString("yyyyMMddHHmmssfff"); ITraysRep tr = new TraysRep(unit); ITrayItemRep tir = new TrayItemRep(unit); ISinglePackageRep spr = new SinglePackageRep(unit); Trays ts = new Trays() { trayId = trayId, createTime = DateTime.Now, warehouse = whouse, position = posi, status = (int)TrayStatus.Stored, rowguid = Guid.NewGuid() }; List<TrayItem> tis = new List<TrayItem>(); foreach (string pid in packageIds) { tis.Add(new TrayItem() { itemId = Guid.NewGuid(), trayId = ts.trayId, packageId = pid, rowguid = Guid.NewGuid() }); } bool synced = false; // sync container data try { List<SinglePackage> singlePackages = spr.GetListByIds(packageIds); synced = new ApiService().SyncStoreContainer(GenContainers(ts, singlePackages, GetWhouse())); } catch (ApiException ae) { msg.AddMessage(ReturnCode.Warning, ae.Message); synced = false; } catch { synced = false; } ts.sync = synced; tr.AddSingle(ts); tir.AddMuti(tis); unit.Submit(); trans.Complete(); msg.result = true; if (synced) { msg.AddMessage(ReturnCode.OK, ts.trayId); } else { msg.AddMessage(ReturnCode.OK, ts.trayId); msg.AddMessage(ReturnCode.Warning, "托盘生成成功,但WMS同步失败,请检查网络,稍候重新同步!"); } } catch (Exception e) { msg.result = false; msg.AddMessage(ReturnCode.Error, "错误:" + e.Message + "\n请联系程序管理员!"); } finally { trans.Dispose(); } return msg; } } }
private Hashtable GenContainers(Trays tray, List<SinglePackage> singlePackages,string whouse) { Hashtable containers = new Hashtable(); containers.Add("id", tray.trayId); containers.Add("whouse", whouse); List<Dictionary<string, string>> packages = new List<Dictionary<string, string>>(); foreach (var package in singlePackages) { Dictionary<string, string> p = new Dictionary<string, string>(); p.Add("id", package.packageID); p.Add("part_id", package.partNr); p.Add("quantity", package.capa.ToString()); p.Add("fifo_time", tray.createTime.ToString()); p.Add("project", package.WorkStation.ProdLine.projectID); packages.Add(p); } containers.Add("packages", packages); return containers; }
partial void DeleteTrays(Trays instance);
partial void UpdateTrays(Trays instance);
partial void InsertTrays(Trays instance);
public void AddSingle(Trays tray) { context.Trays.InsertOnSubmit(tray); }