protected void cmdLotSave_ServerClick(object sender, EventArgs e)
        {
            try
            {
                _WarehouseFacade = new BenQGuru.eMES.Material.WarehouseFacade(this.DataProvider);
                BenQGuru.eMES.Domain.Warehouse.Pick p = (BenQGuru.eMES.Domain.Warehouse.Pick)_WarehouseFacade.GetPick(txtPickNoQuery.Text);
                if (p.Status != Pick_STATUS.Status_Release)
                {
                    WebInfoPublish.Publish(this, p.PickNo + "拣货任务令的状态必须是初始化才能修改!", this.languageComponent1);
                    return;
                }
                StringBuilder sb = new StringBuilder(300);
                this.DataProvider.BeginTransaction();
                List <string> pickLineGtQty = new List <string>();
                for (int i = 0; i < this.gridWebGrid.Rows.Count; i++)
                {
                    string pickLine = this.gridWebGrid.Rows[i].Items.FindItemByKey("PICKLINE").Value.ToString();
                    BenQGuru.eMES.Domain.Warehouse.PickDetail d = (BenQGuru.eMES.Domain.Warehouse.PickDetail)_WarehouseFacade.GetPickdetail(txtPickNoQuery.Text, pickLine);
                    decimal qty = d.QTY;
                    BenQGuru.eMES.Domain.MOModel.Material m = (BenQGuru.eMES.Domain.MOModel.Material)_WarehouseFacade.GetMaterialFromDQMCode(d.DQMCode);

                    if (m == null)
                    {
                        WebInfoPublish.Publish(this, d.DQMCode + "物料号不存在!", this.languageComponent1);
                        this.DataProvider.RollbackTransaction();
                        return;
                    }



                    string qtyStr = this.gridWebGrid.Rows[i].Items.FindItemByKey("QTY").Value.ToString();

                    decimal decqty = 0;
                    if (!decimal.TryParse(qtyStr, out decqty))
                    {
                        WebInfoPublish.Publish(this, txtPickNoQuery.Text + ":" + pickLine + "数量必须是数字!", this.languageComponent1);
                        this.DataProvider.RollbackTransaction();
                        return;
                    }

                    string  invno   = FormatHelper.CleanString(txtInvNoEidt.Text);
                    decimal pickqty = _WarehouseFacade.GetPickDetailQty(invno, d.InvLine, m.MCode);
                    decimal wwpoqty = _WarehouseFacade.GetWWPOQty(invno, d.InvLine, m.MCode);

                    bool isFalse = (decqty + pickqty - qty > wwpoqty);
                    d.QTY = decqty;
                    if (isFalse)
                    {
                        sb.Append(string.Format(@"拣货任务令号:{0},SAP单据号:{1},状态:{2},下发人:{3},鼎桥物料编码:{4},描述:{5},领取数量:{6},超领数量:{7} \r\n",
                                                p.PickNo,
                                                txtInvNoEidt.Text,
                                                p.Status,
                                                GetUserCode(),
                                                m.DqmCode,
                                                m.MenshortDesc,
                                                decqty, decqty + pickqty - qty - wwpoqty));
                        pickLineGtQty.Add(pickLine);
                    }
                    _WarehouseFacade.UpdatePickdetail(d);
                }

                this.DataProvider.CommitTransaction();

                if (pickLineGtQty.Count == 0)
                {
                    WebInfoPublish.Publish(this, "保存成功", this.languageComponent1);
                }
                else
                {
                    GenWWPOMail(sb.ToString(), GetUserCode());
                    WebInfoPublish.Publish(this, "保存成功 - " + txtPickNoQuery.Text + "行项目" + string.Join(",", pickLineGtQty.ToArray()) + " 的领料数大于SAP物料数量", this.languageComponent1);
                }
            }
            catch (Exception ex)
            {
                this.DataProvider.RollbackTransaction();
                throw ex;
            }
            this.gridHelper.RequestData();
            this.buttonHelper.PageActionStatusHandle(PageActionType.Save);
        }
        protected override DataRow GetGridRow(object obj)
        {
            BenQGuru.eMES.Domain.Warehouse.PickDetail pick = (BenQGuru.eMES.Domain.Warehouse.PickDetail)obj;
            BenQGuru.eMES.Domain.Warehouse.Pick       s    = (BenQGuru.eMES.Domain.Warehouse.Pick)_WarehouseFacade.GetPick(pick.PickNo);

            DataRow row = this.DtSource.NewRow();

            row["PICKLINE"]        = pick.PickLine;
            row["STATUS"]          = languageComponent1.GetString(pick.Status);//dicStu.ContainsKey(pick.Status) ? dicStu[pick.Status] : string.Empty;
            row["MCODE"]           = pick.MCode;
            row["DQMCODE"]         = pick.DQMCode;
            row["MDESC"]           = pick.MDesc;
            row["CustMCode"]       = pick.VEnderItemCode;
            row["QTY"]             = pick.QTY;
            row["UNIT"]            = pick.Unit;
            row["OutCStorageCode"] = s.StorageCode;// dicStu.ContainsKey(s.StorageCode) ? dicStu[s.StorageCode] : string.Empty;
            row["SQTY"]            = pick.SQTY;
            row["OUTQTY"]          = pick.OutQTY;
            //row["Down_Time"] = FormatHelper.ToTimeString(pick.DownTime);
            row["CDATE"] = FormatHelper.ToDateString(pick.CDate);
            //row["REMARK1"] = pick.Remark1;
            row["CTIME"] = FormatHelper.ToTimeString(pick.CTime);
            row["CUSER"] = pick.CUser;
            row["MDATE"] = FormatHelper.ToDateString(pick.MaintainDate);
            row["MTIME"] = FormatHelper.ToTimeString(pick.MaintainTime);
            row["MUSER"] = pick.MaintainUser;

            //row["MUSER"] = pick.MaintainUser;
            return(row);
        }