示例#1
0
        private int GeTrSnCnt(string locid)
        {
            try
            {
                List <string> listTrSn = DBFunc.SearchTrSnFromRInventoryDetailByLocId(locid);

                return(listTrSn.Count);
            }
            catch (Exception ex)
            {
                Log.Error(ex.Message);
                Trace.WriteLine("Debug: " + ex.Message);
                return(-1);
            }
        }
示例#2
0
        private void ExecuteInput(string str)
        {
            try
            {
                int           splitnum     = 0; //分盘数量
                int           result       = 0;
                bool          saveTrSnFlag = false;
                List <string> listTrSn     = new List <string>();

                //本地检查并保存五合一条码
                if (str.Contains("&"))
                {
                    if (!CheckMaterialTrSn(str))
                    {
                        ShowHint("当前输入的五合一条码不满足规则:" + str, Color.Red);
                        return;
                    }
                    listTrSn.Add(str.Split('&')[0]);
                }
                else
                {
                    listTrSn.Add(str);
                }

                //远程检查条码类型
                if (!CheckBarcode(listTrSn[0].ToUpper(), ref result))
                {
                    return;
                }

                if (result == 1) //储位
                {
                    if (!str.Equals(MyData._lastArrive.locid))
                    {
                        _allOutCnt = 0;
                        ShowHint("储位号错误,请扫描正确的储位号!", Color.Red);
                        return;
                    }

                    UpdateCnt(MyData.GetStockNo(), MyData._lastArrive.locid);  //扫完储位后刷新数量

                    _lastScanLocId = str;
                    if (MyData._lastArrive.allout.Equals("1"))
                    {
                        if (_allOutCnt == 0)
                        {
                            _allOutCnt++;
                            ShowMessage("再扫一次储位号全盘出料");
                            ShowQty();  //扫过一次储位后跳到数量
                        }
                        else
                        {
                            _allOutCnt = 0;

                            try
                            {
                                //保存所有的trSn
                                listTrSn = DBFunc.SearchTrSnFromRInventoryDetailByLocId(_lastScanLocId);
                                if (listTrSn == null || listTrSn.Count == 0)
                                {
                                    ShowHint("整盘出库失败,找不到该储位对应的TrSn", Color.Red);
                                    return;
                                }
                            }
                            catch (Exception ex)
                            {
                                ShowHint("SearchTrSnFromRInventoryDetailByLocId exception:" + ex.Message, Color.Red);
                                return;
                            }

                            //全盘出料
                            if (!PartialPickMaterialAllOut(_lastScanLocId, ref result))
                            {
                                return;
                            }

                            saveTrSnFlag = true;
                        }
                    }
                    else
                    {
                        //高亮数量
                        ShowQty();  //不是全盘出料时, 扫描储位后转为闪烁数量
                        ShowMessage("请扫描物料条码");
                    }
                }
                else if (result == 3) //物料编号
                {
                    _allOutCnt = 0;
                    if (!_lastScanLocId.Equals(MyData._lastArrive.locid))
                    {
                        ShowHint("请先扫描储位号!", Color.Red);
                        return;
                    }

                    _allOutCnt = 0;

                    //一盘一盘扫
                    if (!PartialPickMaterial(_lastScanLocId, listTrSn[0].ToUpper(), ref splitnum, ref result))
                    {
                        return;
                    }

                    saveTrSnFlag = true;
                }
                else
                {
                    _allOutCnt = 0;
                }

                //取料成功
                if (saveTrSnFlag)
                {
                    //如果要分盘
                    if (result == 3 && listTrSn.Count == 1)
                    {
                        if (splitnum > 0)
                        {
                            string newTrSn = refWebtR_Tr_Sn.Instance.Get_tr_sn_current(1); //获取一个新的trSn

                            if (!CompleteReelSplit(listTrSn[0].ToUpper(), newTrSn, splitnum, ref result))
                            {
                                return;
                            }

                            SplitTrSn(listTrSn[0].ToUpper(), newTrSn, splitnum);

                            //要推送的trSn是新生成的trSn
                            listTrSn.Clear();
                            listTrSn.Add(newTrSn);
                        }
                    }

                    //更新货架信息
                    StartFindShelf();

                    //保存TrSn
                    SaveTrSn(listTrSn, MyData.GetStockNo(), MyData.GetStockNoType());

                    UpdateCnt(MyData.GetStockNo(), _lastScanLocId);

                    //全部出库完毕,则过账
                    if (result == 1)     /*料出库成功,且所有站点物料全部出库,自动过账*/
                    {
                        findFlag = true; //不再刷新

                        PushTrSnByStockNo(MyData.GetStockNo(), MyData.GetStockNoType());

                        //SapPick(MyData.GetStockNo(), MyData.GetStockNoType();
                        ShowHint("出库过账功能暂时关闭!", Color.Lime);
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Error("ExecuteInput:" + ex.Message);

                UpdateCnt(MyData.GetStockNo(), _lastScanLocId);

                //更新货架信息
                StartFindShelf();
            }
        }