public ProcessMsg SyncStore()
        {
            using (TransactionScope trans = new TransactionScope())
            {
                using (IUnitOfWork unit = MSSqlHelper.DataContext())
                {
                    ProcessMsg msg = new ProcessMsg() { result = true };
                    try
                    {
                        ITraysRep tr = new TraysRep(unit);
                        List<Trays> tis = tr.GetUnsync();
                        ITrayItemRep tir = new TrayItemRep(unit);
                        bool all_synced = true;
                        bool error_loged = false;

                        string error_log = DateTime.Now.ToString("yyyyMMddHHmmsss") + ".txt";
                        string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ErrorLog", error_log);
                        using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite))
                        {
                            using (StreamWriter sw = new StreamWriter(fs))
                            {
                                foreach (Trays ts in tis)
                                {
                                    bool synced = false;
                                    try
                                    {
                                        if (ts.status == (int)TrayStatus.Cancled)
                                        {
                                            synced = new ApiService().SyncUnStoreContainer(ts.trayId, GetWhouse());
                                        }
                                        else
                                        {
                                            List<SinglePackage> singlePackages = tir.GetSPByTrayId(ts.trayId);
                                            synced = new ApiService().SyncStoreContainer(GenContainers(ts, singlePackages, GetWhouse()));
                                        }
                                    }
                                    catch (ApiException ae)
                                    {
                                        sw.WriteLine(ae.Message);
                                        error_loged = true;
                                        synced = false;
                                    }
                                    catch
                                    {
                                        synced = false;
                                    }
                                    ts.sync = synced;
                                    if (synced == false) { all_synced = false; }
                                }
                            }
                        }
                        unit.Submit();
                        trans.Complete();
                        msg.result = all_synced;
                        if (all_synced)
                        {
                            msg.AddMessage(ReturnCode.OK, "WMS同步成功!");
                        }
                        else
                        {
                            if (error_loged)
                            {
                                msg.AddMessage(ReturnCode.Warning, "WMS同步失败,查看错误日志:" + error_log + "请稍候重新同步!\n或联系程序管理员!");
                            }
                            else
                            {
                                msg.AddMessage(ReturnCode.Warning, "WMS同步失败,请检查网络,稍候重新同步!\n或联系程序管理员!");
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        msg.result = false;
                        msg.AddMessage(ReturnCode.Error, "错误:" + e.Message + "\n请联系程序管理员!");
                    }
                    finally
                    {
                        trans.Dispose();
                    }
                    return msg;
                }
            }
        }