Ejemplo n.º 1
0
 public void SaveOrder2Cabinet(Sender sender, SaveOrder2CabinetArgs args)
 {
     try
     {
         using (ObjectProxy op = new ObjectProxy(true))
         {
             Order2Cabinet obj = new Order2Cabinet();
             obj.CabinetID = args.Order2Cabinet.CabinetID;
             if (op.LoadOrder2CabinetByCabinetID(obj) == 0)
             {
                 args.Order2Cabinet.Created    = DateTime.Now;
                 args.Order2Cabinet.CreatedBy  = sender.UserCode + "." + sender.UserName;
                 args.Order2Cabinet.Modified   = DateTime.Now;
                 args.Order2Cabinet.ModifiedBy = sender.UserCode + "." + sender.UserName;
                 op.InsertOrder2Cabinet(args.Order2Cabinet);
             }
             else
             {
                 op.UpdateOrder2CabinetByCabinetID(args.Order2Cabinet);
             }
             op.CommitTransaction();
         }
     }
     catch (Exception ex)
     {
         PLogger.LogError(ex);
         throw ex;
     }
 }
Ejemplo n.º 2
0
        private void ScanBarcode()
        {
            if (this.InvokeRequired)
            {
                this.Invoke(new dreadbarcode(ScanBarcode), null);
            }
            else
            {
                if (WorkFlowID == Guid.Empty)
                {
                    throw new Exception("请在参数设置中设置班次和分拣对应的工序名称。");
                }
                if (WorkShiftID == Guid.Empty)
                {
                    throw new Exception("请在参数设置中设置班次和分拣对应的工序名称。");
                }
                string ItemBarcode = this.txtBarcode.Text.Trim();
                if (string.IsNullOrEmpty(ItemBarcode))
                {
                    this.txtBarcode.Clear();
                    this.txtBarcode.Focus();
                    lblMsg.Text = "【提示】请扫描板件条码";
                    PlayVoice("请扫描板件条码");
                    return;
                }
                #region 完成当前分包操作
                if (ItemBarcode.IndexOf(FinishedBarcode) >= 0 && !string.IsNullOrEmpty(FinishedBarcode))
                {
                    try
                    {
                        //打印分包标签
                        PlayVoice("打印标签");
                        //PrintDocument();
                        StartPrint(this.CurrentPackage.PackageID);
                        this.txtBarcode.Text = "";
                        this.txtBarcode.Focus();
                        this.CurrentPackage = null;
                    }
                    catch (Exception ex)
                    {
                        this.CurrentPackage = null;
                        throw ex;
                    }
                    return;
                }
                #endregion

                using (ProxyBE p = new ProxyBE())
                {
                    OrderDetail subOrder = p.Client.GetOrderDetailByBarcode(CGlobal.SenderUser, ItemBarcode);
                    if (subOrder == null)
                    {
                        this.txtBarcode.Clear();
                        this.txtBarcode.Focus();
                        lblMsg.Text = string.Format("提示:【{0}】条码无效", ItemBarcode);
                        PlayVoice("条码错误");
                        return;
                    }

                    Order order = p.Client.GetOrder(CGlobal.SenderUser, subOrder.OrderID);
                    //初始化订单数据:如果当前订单ID与条码的订单ID不一至时则重置订单信息
                    if (CurrentOrder == null)
                    {
                        this.CurrentOrder    = order;
                        this.txtOrderNo.Text = this.CurrentOrder.OrderNo;
                    }
                    //判断当前的板件是否为同一订单板件
                    else if (subOrder.OrderID != this.CurrentOrder.OrderID)
                    {
                        this.txtBarcode.Clear();
                        this.txtBarcode.Focus();
                        lblMsg.Text = "【错误】板件订单号不一致";
                        PlayVoice("订单不一致");
                        MessageBox.Show("板件订单号不一致");
                        return;
                    }

                    List <PackageDetail> pdsubOrder = p.Client.GetPackageDetailsByItemID(CGlobal.SenderUser, subOrder.ItemID);
                    pdsubOrder = pdsubOrder.FindAll(li => li.IsPakaged == false);
                    if (pdsubOrder.Count == 0)
                    {
                        this.txtBarcode.Clear();
                        this.txtBarcode.Focus();
                        lblMsg.Text = string.Format("提示:【{0}】条码重复扫描", ItemBarcode);
                        PlayVoice("重复扫描");
                        return;
                    }


                    decimal weight = subOrder.MadeHeight * subOrder.MadeLength * subOrder.MadeWidth * 0.000001M * Density;
                    if (this.CurrentPackage != null)
                    {
                        if (this.CurrentPackage.Weight + weight >= MaxWeight)
                        {
                            //打印分包标签
                            PlayVoice("打印标签");
                            StartPrint(this.CurrentPackage.PackageID);
                            this.txtBarcode.Text = "";
                            this.txtBarcode.Focus();
                            this.CurrentPackage = null;
                        }
                    }

                    Order2Cabinet cabinet = p.Client.GetOrder2Cabinet(CGlobal.SenderUser, subOrder.CabinetID);
                    if (cabinet != null)
                    {
                        //初始化包数据
                        if (this.CurrentPackage == null)
                        {
                            Mes.Client.Service.BE.Package pack = new Mes.Client.Service.BE.Package();
                            pack.OrderID = this.CurrentOrder.OrderID;
                            int pageNum = 0;
                            pageNum                  = p.Client.GetMaxPackageNum(CGlobal.SenderUser, pack.OrderID, subOrder.CabinetID);
                            pack.CabinetID           = subOrder.CabinetID;
                            pack.PackageNum          = pageNum;
                            pack.PackageID           = Guid.NewGuid();
                            pack.PackageBarcode      = string.Format("0{0}{1}", CurrentOrder.Created.ToString("yyMMddHHmmss"), pageNum.ToString("00"));
                            pack.PackageLength       = 0;
                            pack.PackageHeight       = 0;
                            pack.PackageWidth        = 0;
                            pack.ItemsQty            = 0;
                            this.CurrentPackage      = pack;
                            this.txtCabinetName.Text = cabinet.CabinetName;
                        }
                        else if (CurrentPackage.CabinetID != cabinet.CabinetID)
                        {
                            this.txtBarcode.Clear();
                            this.txtBarcode.Focus();
                            lblMsg.Text = "【错误】柜体不一致!";
                            PlayVoice("柜体不一致");
                            return;
                        }
                    }
                    else
                    {
                        lblMsg.Text = string.Format("提示:【{0}】条码所属柜体数据丢失,请查看订单是否有误!", ItemBarcode);
                        PlayVoice("订单错误");
                        return;
                    }


                    try
                    {
                        p.Client.ScanBarcode(CGlobal.SenderUser, ItemBarcode, WorkShiftID, WorkFlowID);
                    }
                    catch (Exception ex)
                    {
                        PLogger.LogError(ex);
                        this.txtBarcode.Clear();
                        this.txtBarcode.Focus();
                        lblMsg.Text = ex.Message;
                        PlayVoice("扫描失败");
                        return;
                    }

                    this.CurrentPackage.Weight   += weight;
                    this.CurrentPackage.ItemsQty += 1;

                    SavePackageArgs saveArgs = new SavePackageArgs();
                    saveArgs.Package = this.CurrentPackage;
                    PackageDetail packageDetail = pdsubOrder[0];
                    packageDetail.IsPakaged = true;
                    packageDetail.PakageID  = this.CurrentPackage.PackageID;
                    saveArgs.PackageDetail  = packageDetail;
                    p.Client.SavePackage(CGlobal.SenderUser, saveArgs);

                    this.CurrentPackage = p.Client.GetPackage(CGlobal.SenderUser, this.CurrentPackage.PackageID);
                    this.gbPackage.Text = string.Format("当前:第{0}包", this.CurrentPackage.PackageNum);

                    //刷新列表
                    biForm();
                    this.txtBarcode.Clear();
                    this.txtBarcode.Focus();
                    lblMsg.Text = "扫描完成";
                    PlayVoice("OK");

                    //检查是否已经全部扫描完成
                    if (this.listBarcodes.Items.Count == 0)
                    {
                        //打印分包标签
                        PlayVoice("打印标签");
                        //PrintDocument();
                        StartPrint(this.CurrentPackage.PackageID);
                        this.txtBarcode.Text = "";
                        this.txtBarcode.Focus();
                        this.CurrentPackage = null;

                        cabinet.CabinetStatus = "F";
                        SaveOrder2CabinetArgs cabinetArgs = new SaveOrder2CabinetArgs();
                        cabinetArgs.Order2Cabinet = cabinet;
                        p.Client.SaveOrder2Cabinet(CGlobal.SenderUser, cabinetArgs);

                        SearchPackageDetailArgs p_args = new SearchPackageDetailArgs();
                        p_args.IsDisabled = false;
                        p_args.OrderID    = CurrentOrder.OrderID;
                        p_args.IsPakaged  = false;

                        SearchResult p_sr = p.Client.SearchPackageDetail(CGlobal.SenderUser, p_args);
                        if (p_sr.Total == 0)
                        {
                            //Order order = p.Client.GetOrder(CGlobal.SenderUser, CurrentOrder.OrderID);
                            order.Status = "I"; //全部打包完成后,订单状态变成待入库
                            SaveOrderArgs saveOrderArgs = new SaveOrderArgs();
                            saveOrderArgs.Order = order;
                            p.Client.SaveOrder(CGlobal.SenderUser, saveOrderArgs);
                        }
                    }
                    //加载树
                    initTree();
                }
            }
        }