Ejemplo n.º 1
0
 public ValidateMsg <SinglePackage> SingleCheckStore(string packageId)
 {
     using (IUnitOfWork unit = MSSqlHelper.DataContext())
     {
         ValidateMsg <SinglePackage> msg = new ValidateMsg <SinglePackage>()
         {
             Valid = true
         };
         try
         {
             ISinglePackageRep spr = new SinglePackageRep(unit);
             SinglePackage     sp  = spr.GetSingleById(packageId);
             msg.Target = sp;
             if (sp == null)
             {
                 msg.Valid = false;
                 msg.Message.Add("包装箱:" + packageId + " 不存在");
             }
             else
             if (!PackageStatusHelper.CanStoredStatus(sp.status))
             {
                 msg.Valid = false;
                 msg.Message.Add("包装箱:" + packageId + " 还未结束包装或标签为开箱标签!");
             }
             else
             if (!spr.Valid(sp.packageID))
             {
                 msg.Valid = false;
                 msg.Message.Add("包装箱:" + packageId + " 已经入库!");
             }
         }
         catch (Exception e)
         {
             msg.Valid = false;
             msg.Message.Add("错误:" + e.Message);
         }
         return(msg);
     }
 }
Ejemplo n.º 2
0
        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);
                }
            }
        }