Beispiel #1
0
        private void LoadTraysAll()
        {
            if (SelectedRack == null)
            {
                return;
            }
            // 测量过程中无法不能调整料库
            if (SelectedRack.Status == RackStatus.RS_Busy)
            {
                return;
            }
            TraysOfRackViewModel trvm = new TraysOfRackViewModel();

            trvm.Rack = SelectedRack;
            trvm.Trays.Clear();
            //var trays = Trays.Where(t => t.Status == TrayStatus.TS_Idle).ToList();
            var trays = Trays.Where(t => !t.Placed && t.PartCount != 0).ToList();

            foreach (var item in trays)
            {
                trvm.Trays.Add(item);
            }
            TraysOfRackWindow trWindow = new TraysOfRackWindow();

            trWindow.DataContext = trvm;
            trWindow.ShowDialog();
        }
        private void LoadTrayToRack()
        {
            if (SelectedTray == null)
            {
                return;
            }
            // 测量过程中无法不能调整料库
            if (Rack.Status == RackStatus.RS_Busy)
            {
                return;
            }
            LoadTraysViewModel ltvm = new LoadTraysViewModel();

            ltvm.SelectedTrayInRack = SelectedTray;
            ltvm.Rack = Rack;
            ltvm.Trays.Clear();
            //var trays = Trays.Where(t => t.Status == TrayStatus.TS_Idle).ToList();
            var trays = Trays.Where(t => !t.Placed && t.PartCount != 0).ToList();

            foreach (var item in trays)
            {
                ltvm.Trays.Add(item);
            }
            LoadTrayToRackWindow ltWnd = new LoadTrayToRackWindow();

            ltWnd.DataContext = ltvm;
            ltWnd.ShowDialog();
        }
Beispiel #3
0
 private void DeleteTray()
 {
     if (SelectedTray == null)
     {
         return;
     }
     //if (SelectedTray.Status != TrayStatus.TS_Idle)
     //{
     //    // 警告:料盘装载中,无法删除
     //    return;
     //}
     if (SelectedTray.Placed)
     {
         // 警告:料盘装载中,无法删除
         return;
     }
     foreach (var item in SelectedTray.Parts)
     {
         item.Placed = false;
         item.SlotNb = -1;
         item.TrayNb = -1;
     }
     Trays.Remove(SelectedTray);
     TraysRepository.UpdateTrays(Trays);
 }
        private void Add_Click(object sender, RoutedEventArgs e)
        {
            if (Trays.Where(t => t.Category == TrayViewModel.Category && t.TrayNb == TrayViewModel.TrayNb).Count() != 0)
            {
                return;
            }
            Tray tray = new Tray()
            {
                Id = Trays.Count + 1,
                // 表示未放置到料架上
                Status           = TrayStatus.TS_Idle,
                UseCmmNo         = -1,
                Category         = TrayViewModel.Category,
                TrayNb           = TrayViewModel.TrayNb,
                CmmNo            = TrayViewModel.CmmNo,
                SlotNb           = -1,
                ColumnCount      = TrayViewModel.ColumnCount,
                RowCount         = TrayViewModel.RowCount,
                ColumnOffset     = TrayViewModel.ColumnOffset,
                RowOffset        = TrayViewModel.RowOffset,
                BaseColumnOffset = TrayViewModel.BaseColumnOffset,
                BaseRowOffset    = TrayViewModel.BaseRowOffset,
                Placed           = false,
                Parts            = new ObservableCollection <Part>()
            };

            for (int i = 0; i < tray.ColumnCount * tray.RowCount; i++)
            {
                tray.Parts.Add(new Part()
                {
                    Id = i, SlotNb = i + 1, Status = PartStatus.PS_Empty
                });
            }
            Trays.Add(tray);
        }
Beispiel #5
0
    static public void serve()
    {
        while (!Trays.isEmpty())
        {
            if (Trays.borekInPlate <= 1 && Trays.totalBorek != 0 && !(Trays.borekInPlate == Trays.totalBorek))
            {
                Console.WriteLine("The waiter came, filling the borek tray...");

                if (Trays.totalBorek > 4)
                {
                    Trays.borekInPlate = 5;
                }
                else
                {
                    Trays.borekInPlate = Trays.totalBorek;
                }
                Console.WriteLine("The waiter is return..\n");
            }
            else if (Trays.drinkInPlate <= 1 && Trays.totalDrink != 0 && !(Trays.drinkInPlate == Trays.totalDrink))
            {
                Console.WriteLine("The waiter came, filling the drink tray...");

                if (Trays.totalDrink > 4)
                {
                    Trays.drinkInPlate = 5;
                }
                else
                {
                    Trays.drinkInPlate = Trays.totalDrink;
                }
                Console.WriteLine("The waiter is return..\n");
            }
            else if (Trays.cakeInPlate <= 1 && Trays.totalCake != 0 && !(Trays.cakeInPlate == Trays.totalCake))
            {
                Console.WriteLine("The waiter came, filling the cake tray...");

                if (Trays.totalCake > 4)
                {
                    Trays.cakeInPlate = 5;
                }
                else
                {
                    Trays.cakeInPlate = Trays.totalCake;
                }
                Console.WriteLine("The waiter is return..\n");
            }
            Thread.Sleep(2000);
        }
        Console.ResetColor();
        foreach (var guest in Guests.getGuests())
        {
            Console.WriteLine(guest.name + "\nBorek: {0} Drink: {1} Cake: {2}", guest.takenBorek, guest.takenDrink, guest.takenCake);
            Console.WriteLine("*****************************");
        }
    }
Beispiel #6
0
        public void TrayIn()
        {
            if (NowTrayId != null)
            {
                TrayOut();
            }
            NowTrayId = Guid.NewGuid().ToString();
            var tray = new Tray(NowTrayId);

            Trays.Add(tray);
        }
Beispiel #7
0
    public static void drinkLine()
    {
        List <Guest> inDrinkLine     = new List <Guest>(Guests.getGuests());
        List <Guest> neverTakesDrink = new List <Guest>(Guests.getGuests());
        bool         fromNeverTakes  = false;
        var          rand            = new Random();
        int          index;
        Guest        guest;

        while (!Trays.isEmpty())
        {
            if (neverTakesDrink.Count != 0)
            {
                index          = rand.Next(neverTakesDrink.Count);
                guest          = neverTakesDrink[index];
                fromNeverTakes = true;
            }
            else
            {
                index = rand.Next(inDrinkLine.Count);
                guest = inDrinkLine[index];
            }


            if (Trays.totalDrink != 0 && Trays.drinkInPlate > 0)
            {
                lock (guest)
                {
                    if (fromNeverTakes)
                    {
                        neverTakesDrink.RemoveAt(index);
                        fromNeverTakes = false;
                    }
                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.WriteLine(guest.name + " is going to take a Drink");
                    guest.takenDrink++;
                    Trays.totalDrink--;
                    Trays.drinkInPlate--;
                    Console.WriteLine(guest.name + " take a Drink");
                    Console.WriteLine(guest.name + " is return\n");
                }
            }
            if (guest.takenDrink == 5)
            {
                inDrinkLine.RemoveAt(index);
            }
            Thread.Sleep(rand.Next(1000, 4000));
        }
    }
Beispiel #8
0
        private void LoadTrays()
        {
            if (SelectedTray == null || SelectedTrayInRack == null)
            {
                return;
            }
            //SelectedTrayInRack = SelectedTray;
            int index = SelectedTrayInRack.SlotNb;

            Rack.Trays[index - 1]        = SelectedTray;
            Rack.Trays[index - 1].Status = TrayStatus.TS_Idle;
            Rack.Trays[index - 1].SlotNb = index;
            Rack.Trays[index - 1].Placed = true;
            Trays.Remove(SelectedTray);
        }
Beispiel #9
0
        public void TrayOut()
        {
            Task.Run(() => {
                //保存计数
                SaveCount();
                //统计数据
                LoadStatistical();
            });
            if (NowTrayId == null)
            {
                return;
            }
            var nowTray = NowTray;

            if (nowTray == null)
            {
                return;
            }
            if (!nowTray.IsComplate || (!nowTray.IsNg && !nowTray.IsPosting))
            {
                Remove();
                if (!nowTray.IsComplate)
                {
                    OnSignalError?.Invoke();
                }
            }
            else
            {
                Task.Run(() =>
                {
                    Tray NgTray = Trays.FirstOrDefault();
                    if (NgTray == null)
                    {
                        Remove(); return;
                    }
                    //计算停机延时
                    double speed = double.Parse(App.Settings.Speed);
                    double delay = App.Config.Tray.StopInterval / speed;
                    Task.Delay((int)delay).Wait();
                    if (nowTray.IsNg || nowTray.IsPosting)
                    {
                        OnNg?.Invoke(NgTray);
                    }
                    Remove();
                });
            }
            NowTrayId = null;
        }
Beispiel #10
0
 public static ValidateMsg <Trays> TrayCanPrint(string trayId)
 {
     using (IUnitOfWork unit = MSSqlHelper.DataContext())
     {
         ValidateMsg <Trays> msg = new ValidateMsg <Trays>()
         {
             Valid = false
         };
         ITraysRep tr = new TraysRep(unit);
         Trays     t  = tr.GetSingleById(trayId);
         if (t == null)
         {
             msg.Message.Add("托盘标签:" + trayId + " 错误!");
         }
         else
         {
             msg.Valid = true;
         }
         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);
        }
 public List <SinglePackage> TraySPDetail(string trayId)
 {
     using (IUnitOfWork unit = MSSqlHelper.DataContext())
     {
         try
         {
             ITraysRep tr = new TraysRep(unit);
             Trays     t  = tr.GetSingleById(trayId);
             if (t == null)
             {
                 return(null);
             }
             ITrayItemRep tir = new TrayItemRep(unit);
             return(tir.GetSPByTrayId(trayId));
         }
         catch
         {
             return(null);
         }
     }
 }
Beispiel #13
0
        private void UnloadTrays()
        {
            if (SelectedTrayInRack == null)
            {
                return;
            }
            if (SelectedTrayInRack.Status == TrayStatus.TS_Empty)
            {
                return;
            }
            int index = SelectedTrayInRack.SlotNb;

            SelectedTrayInRack.Status = TrayStatus.TS_Idle;
            SelectedTrayInRack.SlotNb = -1;
            SelectedTrayInRack.Placed = false;
            Trays.Add(SelectedTrayInRack);
            Rack.Trays[index - 1] = new Tray()
            {
                Status = TrayStatus.TS_Empty,
                SlotNb = index,
            };
        }
Beispiel #14
0
 public void AddSingle(Trays tray)
 {
     context.Trays.InsertOnSubmit(tray);
 }
        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);
                }
            }
        }
Beispiel #16
0
 public void Remove()
 {
     Trays.RemoveAt(0);
     OnComplate?.Invoke();
 }