Esempio n. 1
0
        private void BindData()
        {
            InStockQueryBLL bll       = null;
            DataPage        dp        = new DataPage();
            InStockBill     condition = new InStockBill();

            try
            {
                bll = BLLFactory.CreateBLL <InStockQueryBLL>();
                condition.StartDate = this.StartDate.Value;
                condition.EndDate   = this.EndDate.Value;
                condition.Warehouse = this.WarehouseID.Value;
                condition.MatID     = this.MatID.Value;
                PagerHelper.InitPageControl(this.AspNetPager1, dp, true);
                dp = bll.GetInMatDetails(condition, dp);

                List <InStockQueryResult> list = dp.Result as List <InStockQueryResult>;

                foreach (InStockQueryResult detail in list)
                {
                    detail.UnitName = string.IsNullOrEmpty(detail.UnitName) == false ? detail.UnitName : detail.MainUnitName;
                }

                this.GvList.DataSource = list;
                this.GvList.DataBind();

                PagerHelper.SetPageControl(AspNetPager1, dp, true);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Esempio n. 2
0
        protected void btSave_Click(object sender, EventArgs e)
        {
            InStockBill info = new InStockBill();
            InStockBLL  bll  = null;

            try
            {
                UIBindHelper.BindModelByControls(this.Page, info);
                info.InStockMode = this.InStockMode.SelectedValue;
                info.Warehouse   = this.Warehouse.SelectedValue;
                info.Details     = LAF.Common.Serialization.JsonConvertHelper.DeserializeObject <List <InStockDetail> >(this.hiMatList.Value);

                foreach (InStockDetail detail in info.Details)
                {
                    detail.SaveSite = this.SaveSite.SelectedValue;
                    if (detail.MatBarCode == null)
                    {
                        detail.MatBarCode = "";
                    }
                }
                bll = BLLFactory.CreateBLL <InStockBLL>();

                if (this.hiID.Value == "")
                {
                    bll.InMatStorage(info);
                }

                ClientScript.RegisterStartupScript(this.GetType(), "myjs", "MSA('提示', '入库完成', function () { window.location.href='InMatStorageMobile.aspx'; });", true);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Esempio n. 3
0
        protected void btSave_Click(object sender, EventArgs e)
        {
            InStockBill info = new InStockBill();
            InStockBLL  bll  = null;

            try
            {
                UIBindHelper.BindModelByControls(this.Page, info);

                bll = BLLFactory.CreateBLL <InStockBLL>();

                info.Details = JsonConvertHelper.DeserializeObject <List <InStockDetail> >(this.hiMatList.Value);

                if (this.hiID.Value == "")
                {
                    bll.InStorage(info);
                }
                else
                {
                    info.CREATEUSER = this.HiCREATEUSER.Value;
                    info.CREATETIME = DateTime.Parse(this.HiCREATETIME.Value);
                    info.ID         = this.hiID.Value;
                    bll.Update(info);
                }
                ClientScript.RegisterStartupScript(this.GetType(), "myjs", "parent.refreshData();parent.closeAppWindow1();", true);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Esempio n. 4
0
        /// <summary>
        /// 获取入库单信息
        /// </summary>
        /// <param name="info">入库信息</param>
        /// <returns></returns>
        public InStockBill GetInfo(InStockBill info)
        {
            string sql = null;
            List <DataParameter> parameters = new List <DataParameter>();

            try
            {
                using (IDataSession session = AppDataFactory.CreateMainSession())
                {
                    //获取数据
                    info = session.Get <InStockBill>(info);

                    //获取明细信息
                    sql = @"select t1.ID,t1.Seq,t1.MatBarCode,t1.MatID,t2.MatCode as MatCode,t2.MatName as MatName,t1.ProduceDate,
                            t1.InAmount,t1.InPrice,t1.InSum,t3.Description as SaveSite,t3.Description as SaveSiteName,t1.Remark,t4.Description as SpecCode,
                            t5.Description as MainUnitName,twms.UnitName,twms.Description as InSpecName
                        from T_WH_InStockDetail t1
                        left outer join T_WH_Mat t2 on t1.MatID=t2.ID
                        left outer join T_WH_MatIDCode mic on t1.MatBarCode=mic.IDCode
                        left outer join T_WH_Site t3 on t1.SaveSite=t3.ID
                        left outer join T_WH_Spec t4 on t2.SpecCode=t4.ID
                        left outer join T_WH_MatUnit t5 on t2.UnitCode=t5.ID
                        left outer join T_WH_MatSpec twms on mic.MatSpec = twms.ID
                        where t1.BillID=@BillID";
                    parameters.Add(new DataParameter("BillID", info.ID));
                    info.Details = session.GetList <InStockDetail>(sql, parameters.ToArray()).ToList();
                }

                return(info);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Esempio n. 5
0
 /// <summary>
 /// 获取入库信息列表
 /// </summary>
 /// <param name="condition"></param>
 /// <param name="page"></param>
 /// <returns></returns>
 public DataPage GetList(InStockBill condition, DataPage page)
 {
     if (this.LoginUser.UserName.ToLower() != "admin")
     {
         condition.CREATEUSER = this.LoginUser.UserID;
     }
     return(new InStockDAL().GetList(condition, page));
 }
Esempio n. 6
0
        /// <summary>
        /// 产成品入库
        /// </summary>
        /// <param name="bill">入库单</param>
        /// <returns></returns>
        public void FGInStorage(InStockBill bill)
        {
            //设置基本信息
            bill.BillNO      = this.GetNewBillNO();
            bill.BillDate    = DateTime.Now;
            bill.InStockMode = "fg";
            bill.Receiver    = this.LoginUser.UserID;

            InStorage(bill);
        }
Esempio n. 7
0
        /// <summary>
        /// 更新入库单信息
        /// </summary>
        /// <param name="info"></param>
        public void Update(InStockBill info)
        {
            InStockDAL isDal = new InStockDAL();

            using (IDataSession session = AppDataFactory.CreateMainSession())
            {
                isDal.Session = session;
                isDal.Update(info);
            }
        }
Esempio n. 8
0
 /// <summary>
 /// 更新入库单信息
 /// </summary>
 /// <param name="info"></param>
 public void Update(InStockBill info)
 {
     try
     {
         Session.Update <InStockBill>(info);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Esempio n. 9
0
 /// <summary>
 /// 新增入库单信息
 /// </summary>
 /// <param name="info"></param>
 public void Insert(InStockBill info)
 {
     try
     {
         Session.Insert <InStockBill>(info);
         Session.Insert <InStockDetail>(info.Details);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Esempio n. 10
0
        private void BindData()
        {
            string      id   = Request.QueryString["id"];
            InStockBLL  bll  = null;
            InStockBill info = new InStockBill();

            try
            {
                bll = BLLFactory.CreateBLL <InStockBLL>();
                if (string.IsNullOrEmpty(id) == false)
                {
                    info.ID      = id;
                    info         = bll.GetInfo(info);
                    info.Details = info.Details.OrderBy(p => p.Seq).ToList();
                    UIBindHelper.BindForm(this.Page, info);
                    this.hiID.Value         = info.ID;
                    this.HiCREATEUSER.Value = info.CREATEUSER;
                    this.HiUPDATEUSER.Value = info.UPDATEUSER;
                    this.HiCREATETIME.Value = info.CREATETIME.ToString();
                    this.btAdd.Visible      = false;
                    this.BillDate.Text      = info.BillDate.ToString("yyyy年MM月dd日");
                }
                else
                {
                    info               = new InStockBill();
                    info.Details       = new List <InStockDetail>();
                    this.BillNO.Text   = bll.GetNewBillNO();
                    this.BillDate.Text = DateTime.Now.ToString("yyyy年MM月dd日");
                }

                //绑定明细
                DataGridResult <InStockDetail> matList = new DataGridResult <InStockDetail>();
                matList.Total = 0;
                matList.Rows  = info.Details;

                foreach (InStockDetail detail in info.Details)
                {
                    detail.UnitName     = string.IsNullOrEmpty(detail.UnitName) == false ? detail.UnitName : detail.MainUnitName;
                    detail.InSpecName   = string.IsNullOrEmpty(detail.InSpecName) == false ? detail.InSpecName : detail.SpecCode;
                    detail.DeleteAction = "none";
                }

                this.hiMatList.Value = matList.GetJsonSource();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Esempio n. 11
0
        private void BindData()
        {
            InStockBLL  bll       = null;
            DataPage    dp        = new DataPage();
            InStockBill condition = new InStockBill();

            try
            {
                bll = BLLFactory.CreateBLL <InStockBLL>();
                condition.StartDate   = this.StartDate.Text;
                condition.EndDate     = this.EndDate.Text;
                condition.InStockMode = this.InStockMode.SelectedValue;
                condition.Warehouse   = this.Warehouse.SelectedValue;
                condition.ProductType = this.ProductType.SelectedValue;
                condition.MatID       = this.MatID.SelectedValue;
                PagerHelper.InitPageControl(this.AspNetPager1, dp, true);
                dp = bll.GetList(condition, dp);

                List <InStockBill> list = dp.Result as List <InStockBill>;
                this.GvList.DataSource = list;
                this.GvList.DataBind();

                for (int i = 0; i < this.GvList.Rows.Count; i++)
                {
                    string click = string.Format("return edit('{0}');", this.GvList.DataKeys[i]["ID"].ToString());

                    //绑定编辑功能
                    (this.GvList.Rows[i].Cells[10].Controls[0] as WebControl).Attributes.Add("onclick", click);

                    //绑定查看功能
                    (this.GvList.Rows[i].Cells[11].FindControl("lbtView") as LinkButton).PostBackUrl = "ViewInStockBill.aspx?id=" + this.GvList.DataKeys[i]["ID"].ToString();
                }
                PagerHelper.SetPageControl(AspNetPager1, dp, true);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Esempio n. 12
0
        private void BindData()
        {
            InStockQueryBLL bll       = null;
            DataPage        dp        = new DataPage();
            InStockBill     condition = new InStockBill();

            try
            {
                bll = BLLFactory.CreateBLL <InStockQueryBLL>();
                condition.StartDate   = this.StartDate.Text;
                condition.EndDate     = this.EndDate.Text;
                condition.InStockMode = this.InStockMode.SelectedValue;
                condition.Warehouse   = this.Warehouse.SelectedValue;
                condition.ProductType = this.ProductType.SelectedValue;
                condition.MatID       = this.MatID.SelectedValue;
                PagerHelper.InitPageControl(this.AspNetPager1, dp, true);
                dp = bll.GetList(condition, dp);

                List <InStockQueryResult> list = dp.Result as List <InStockQueryResult>;
                this.GvList.DataSource = list;
                this.GvList.DataBind();

                for (int i = 0; i < this.GvList.Rows.Count; i++)
                {
                    //绑定查看功能
                    LinkButton lbtView = this.GvList.Rows[i].Cells[7].FindControl("lbtView") as LinkButton;
                    lbtView.OnClientClick = string.Format("view('{0}','{1}','{2}','{3}');return false;"
                                                          , this.GvList.DataKeys[i]["WarehouseID"].ToString(), this.GvList.DataKeys[i]["MatID"].ToString()
                                                          , this.StartDate.Text, this.EndDate.Text);
                }
                PagerHelper.SetPageControl(AspNetPager1, dp, true);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Esempio n. 13
0
 /// <summary>
 /// 获取入库查询结果列表
 /// </summary>
 /// <param name="condition"></param>
 /// <param name="page"></param>
 /// <returns></returns>
 public DataPage GetInMatDetails(InStockBill condition, DataPage page)
 {
     return(new InStockQueryDAL().GetInMatDetails(condition, page));
 }
Esempio n. 14
0
        /// <summary>
        /// 获取入库单列表
        /// </summary>
        /// <param name="condition"></param>
        /// <param name="page"></param>
        /// <returns></returns>
        public DataPage GetList(InStockBill condition, DataPage page)
        {
            DataTable            dt         = new DataTable();
            List <DataParameter> parameters = new List <DataParameter>();
            StringBuilder        sqlBuiler  = new StringBuilder();

            try
            {
                page.KeyName = "ID";

                sqlBuiler.Append(@"select t1.ID,t1.BillNO,t1.BillDate,t4.Description as InStockMode,t1.DeliveryPerson,
                                    u3.USERNAME as WHHeader,t1.Remark,t2.Description as WarehouseName,t3.ProviderName,u2.USERNAME as Receiver
                                   from T_WH_InStockBill t1
                                    inner join T_WH_Warehouse t2 on t1.Warehouse=t2.ID
                                    left outer join T_WH_Provider t3 on t1.ProviderID=t3.ID
                                    left outer join T_USER u2 on t1.Receiver=u2.USERID
                                    left outer join T_USER u3 on t1.WHHeader=u3.USERID
                                    left outer join T_WH_InMode t4 on t1.InStockMode=t4.ID
                                    where 1=1");
                if (!string.IsNullOrEmpty(condition.BillNO))
                {
                    sqlBuiler.Append(" and t1.BillNO like @BillNO");
                    parameters.Add(new DataParameter("BillNO", "%" + condition.BillNO + "%"));
                }

                if (!string.IsNullOrEmpty(condition.ProviderID))
                {
                    sqlBuiler.Append(" and t1.ProviderID = @ProviderID");
                    parameters.Add(new DataParameter("ProviderID", condition.ProviderID));
                }

                if (!string.IsNullOrEmpty(condition.Warehouse))
                {
                    sqlBuiler.Append(" and t1.Warehouse = @Warehouse");
                    parameters.Add(new DataParameter("Warehouse", condition.Warehouse));
                }

                if (!string.IsNullOrEmpty(condition.StartDate))
                {
                    sqlBuiler.Append(" and t1.BillDate >= @StartDate");
                    parameters.Add(new DataParameter("StartDate", DateTime.Parse(condition.StartDate)));
                }

                if (!string.IsNullOrEmpty(condition.EndDate))
                {
                    sqlBuiler.Append(" and t1.BillDate < @EndDate");
                    parameters.Add(new DataParameter("EndDate", DateTime.Parse(condition.EndDate + " 23:59:59")));
                }
                if (!string.IsNullOrEmpty(condition.CREATEUSER))
                {
                    sqlBuiler.Append(" and exists(select WarehouseID from T_WH_WHPower where UserID=@userID and WarehouseID=t1.Warehouse)");
                    parameters.Add(new DataParameter("userID", condition.CREATEUSER));
                }
                //分页关键字段及排序
                page.KeyName = "ID";
                if (string.IsNullOrEmpty(page.SortExpression))
                {
                    page.SortExpression = "t1.BillDate DESC";
                }

                using (IDataSession session = AppDataFactory.CreateMainSession())
                {
                    page = session.GetDataPage <InStockBill>(sqlBuiler.ToString(), parameters.ToArray(), page);
                }

                return(page);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Esempio n. 15
0
        /// <summary>
        /// 获取入库查询结果列表
        /// </summary>
        /// <param name="condition"></param>
        /// <param name="page"></param>
        /// <returns></returns>
        public DataPage GetList(InStockBill condition, DataPage page)
        {
            DataTable            dt         = new DataTable();
            List <DataParameter> parameters = new List <DataParameter>();
            StringBuilder        sqlBuiler  = new StringBuilder();

            try
            {
                page.KeyName = "ID";

                sqlBuiler.Append(@"select t2.ID+t3.ID as ID,t2.ID as WareHouseID,t2.Description as WarehouseName,t4.Description as ProductType
                                   ,t3.ID as MatID,t3.MatCode,t3.MatName,t5.Description as UnitName
                                   ,t6.Description as SpecName,sum(twhisd.MainUnitAmount) as Amount
                                   from T_WH_InStockBill t1
                                    inner join T_WH_InStockDetail twhisd on t1.ID = twhisd.BillID
                                    inner join T_WH_Warehouse t2 on t1.Warehouse=t2.ID
                                    left outer join T_WH_Mat t3 on twhisd.MatID=t3.ID
                                    left outer join T_WH_MatType t4 on t3.ProductType=t4.ID
                                    left outer join T_WH_MatUnit t5 on t3.UnitCode=t5.ID
                                    left outer join T_WH_Spec t6 on t3.SpecCode=t6.ID
                                    where 1=1");
                if (!string.IsNullOrEmpty(condition.BillNO))
                {
                    sqlBuiler.Append(" and t1.BillNO like @BillNO");
                    parameters.Add(new DataParameter("BillNO", "%" + condition.BillNO + "%"));
                }

                if (!string.IsNullOrEmpty(condition.InStockMode))
                {
                    sqlBuiler.Append(" and t1.InStockMode = @InStockMode");
                    parameters.Add(new DataParameter("InStockMode", condition.InStockMode));
                }

                if (!string.IsNullOrEmpty(condition.Warehouse))
                {
                    sqlBuiler.Append(" and t1.Warehouse = @Warehouse");
                    parameters.Add(new DataParameter("Warehouse", condition.Warehouse));
                }

                if (!string.IsNullOrEmpty(condition.StartDate))
                {
                    sqlBuiler.Append(" and t1.BillDate >= @StartDate");
                    parameters.Add(new DataParameter("StartDate", DateTime.Parse(condition.StartDate)));
                }

                if (!string.IsNullOrEmpty(condition.EndDate))
                {
                    sqlBuiler.Append(" and t1.BillDate < @EndDate");
                    parameters.Add(new DataParameter("EndDate", DateTime.Parse(condition.EndDate + " 23:59:59")));
                }
                if (!string.IsNullOrEmpty(condition.ProductType))
                {
                    sqlBuiler.Append(" and t3.ProductType = @ProductType");
                    parameters.Add(new DataParameter("ProductType", condition.ProductType));
                }
                if (!string.IsNullOrEmpty(condition.MatID))
                {
                    sqlBuiler.Append(" and twhisd.MatID = @MatID");
                    parameters.Add(new DataParameter("MatID", condition.MatID));
                }
                if (!string.IsNullOrEmpty(condition.CREATEUSER))
                {
                    sqlBuiler.Append(" and exists(select WarehouseID from T_WH_WHPower where UserID=@userID and WarehouseID=t1.Warehouse)");
                    parameters.Add(new DataParameter("userID", condition.CREATEUSER));
                }
                sqlBuiler.Append(@" group by t2.ID,t2.Description,t4.Description
                                   ,t3.ID,t3.MatCode,t3.MatName,t5.Description,t6.Description");
                //分页关键字段及排序
                page.KeyName = "ID";
                if (string.IsNullOrEmpty(page.SortExpression))
                {
                    page.SortExpression = "MatCode DESC";
                }

                using (IDataSession session = AppDataFactory.CreateMainSession())
                {
                    page = session.GetDataPage <InStockQueryResult>(sqlBuiler.ToString(), parameters.ToArray(), page);
                }

                return(page);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Esempio n. 16
0
        /// <summary>
        /// 入库(货品编号)
        /// </summary>
        /// <param name="bill">入库单</param>
        /// <returns></returns>
        public void InMatStorage(InStockBill bill)
        {
            //设置基本信息
            bill.BillNO   = this.GetNewBillNO();
            bill.BillDate = DateTime.Now;
            bill.Receiver = this.LoginUser.UserID;

            bill.ID         = Guid.NewGuid().ToString();
            bill.CREATEUSER = this.LoginUser.UserID;
            bill.CREATETIME = DateTime.Now;
            bill.UPDATEUSER = this.LoginUser.UserID;
            bill.UPDATETIME = bill.CREATETIME;

            int seq = 1;

            foreach (InStockDetail detail in bill.Details)
            {
                detail.ID         = Guid.NewGuid().ToString();
                detail.BillID     = bill.ID;
                detail.InAmount   = detail.MainUnitAmount;
                detail.CREATEUSER = bill.CREATEUSER;
                detail.CREATETIME = bill.CREATETIME;
                detail.UPDATEUSER = bill.UPDATEUSER;
                detail.UPDATETIME = bill.UPDATETIME;
                detail.Seq        = seq;
                seq++;
            }

            StockDAL   stockDal = new StockDAL();
            InStockDAL isDal    = new InStockDAL();

            using (IDataSession session = AppDataFactory.CreateMainSession())
            {
                try
                {
                    stockDal.Session = session;
                    isDal.Session    = session;

                    foreach (InStockDetail detail in bill.Details)
                    {
                        WHMatAmount inStock = new WHMatAmount();
                        inStock.Warehouse     = bill.Warehouse;
                        inStock.SaveSite      = detail.SaveSite;
                        inStock.MatBarCode    = detail.MatBarCode;
                        inStock.MatID         = detail.MatID;
                        inStock.ProductAmount = detail.InAmount;
                        inStock.ProductPrice  = detail.InPrice;
                        inStock.ProductSum    = detail.InSum;
                        inStock.Unit          = detail.UnitCode;
                        inStock.CreateUser    = this.LoginUser.UserID;
                        inStock.UpdateUser    = this.LoginUser.UserID;
                        inStock.MainAmount    = detail.MainUnitAmount;

                        stockDal.InStock(inStock);
                    }

                    isDal.Insert(bill);

                    session.CommitTs();
                }
                catch (Exception ex)
                {
                    session.RollbackTs();
                    throw ex;
                }
            }
        }
Esempio n. 17
0
        /// <summary>
        /// 入库
        /// </summary>
        /// <param name="bill">入库单</param>
        /// <returns></returns>
        public string InStorage(InStockBill bill)
        {
            string result = "";

            bill.ID         = Guid.NewGuid().ToString();
            bill.CREATEUSER = this.LoginUser.UserID;
            bill.CREATETIME = DateTime.Now;
            bill.UPDATEUSER = this.LoginUser.UserID;
            bill.UPDATETIME = bill.CREATETIME;

            int seq = 1;

            foreach (InStockDetail detail in bill.Details)
            {
                detail.ID         = Guid.NewGuid().ToString();
                detail.BillID     = bill.ID;
                detail.CREATEUSER = bill.CREATEUSER;
                detail.CREATETIME = bill.CREATETIME;
                detail.UPDATEUSER = bill.UPDATEUSER;
                detail.UPDATETIME = bill.UPDATETIME;
                detail.Seq        = seq;
                seq++;
            }

            StockDAL   stockDal = new StockDAL();
            InStockDAL isDal    = new InStockDAL();

            using (IDataSession session = AppDataFactory.CreateMainSession())
            {
                try
                {
                    stockDal.Session = session;
                    isDal.Session    = session;

                    foreach (InStockDetail detail in bill.Details)
                    {
                        WHMatAmount inStock = new WHMatAmount();
                        inStock.Warehouse     = bill.Warehouse;
                        inStock.SaveSite      = detail.SaveSite;
                        inStock.MatBarCode    = detail.MatBarCode;
                        inStock.MatID         = detail.MatID;
                        inStock.ProductAmount = detail.InAmount;
                        inStock.ProductPrice  = detail.InPrice;
                        inStock.ProductSum    = detail.InSum;
                        inStock.Unit          = detail.UnitCode;
                        inStock.MainAmount    = detail.MainUnitAmount;

                        if (string.IsNullOrEmpty(detail.MatBarCode) == false && string.IsNullOrEmpty(detail.ProduceDate) == false)
                        {
                            inStock.ProduceDate = DateTime.Parse(detail.ProduceDate);
                            //更新条码信息的生产日期
                            new WHMatDAL().UpdateIDCodeProduceDate(new MatIDCode {
                                IDCode = detail.MatBarCode, ProduceDate = detail.ProduceDate
                            });
                        }


                        stockDal.InStock(inStock);
                    }

                    isDal.Insert(bill);

                    session.CommitTs();
                }
                catch (Exception ex)
                {
                    session.RollbackTs();
                    throw ex;
                }
            }

            return(result);
        }
Esempio n. 18
0
 /// <summary>
 /// 获取入库单
 /// </summary>
 /// <param name="info">入库信息</param>
 /// <returns></returns>
 public InStockBill GetInfo(InStockBill info)
 {
     return(new InStockDAL().GetInfo(info));
 }
Esempio n. 19
0
        /// <summary>
        /// 获取入库查询结果列表
        /// </summary>
        /// <param name="condition"></param>
        /// <param name="page"></param>
        /// <returns></returns>
        public DataPage GetInMatDetails(InStockBill condition, DataPage page)
        {
            DataTable            dt           = new DataTable();
            List <DataParameter> parameters   = new List <DataParameter>();
            StringBuilder        sqlBuiler    = new StringBuilder();
            StringBuilder        whereBuilder = new StringBuilder();

            try
            {
                page.KeyName = "ID";
                sqlBuiler.Append(@"select t1.ID,t1.Seq,t1.MatBarCode,t1.MatID,t2.MatCode as MatCode,t2.MatName as MatName,
                            t1.InAmount as Amount,t1.InPrice,t1.InSum,t3.Description as SaveSite,t1.Remark,wh.Description as WarehouseName,
                            twms.UnitName,t1.MatSpec,isb.BillDate as InDate,t5.Description as MainUnitName
                            from T_WH_InStockDetail t1
                            inner join T_WH_InStockBill isb on t1.BillID=isb.ID
                            left outer join T_WH_MatIDCode mic on t1.MatBarCode=mic.IDCode
                            left outer join T_WH_MatSpec twms on mic.MatSpec = twms.ID
                            left outer join T_WH_Mat t2 on t1.MatID=t2.ID
                            left outer join T_WH_Site t3 on t1.SaveSite=t3.ID
                            left join T_WH_Warehouse wh on t3.whid=wh.ID
                            left outer join T_WH_MatUnit t5 on t2.UnitCode=t5.ID
                           ");


                if (!string.IsNullOrEmpty(condition.Warehouse))
                {
                    whereBuilder.Append(" and isb.Warehouse = @Warehouse");
                    parameters.Add(new DataParameter("Warehouse", condition.Warehouse));
                }

                if (!string.IsNullOrEmpty(condition.StartDate))
                {
                    whereBuilder.Append(" and isb.BillDate >= @StartDate");
                    parameters.Add(new DataParameter("StartDate", DateTime.Parse(condition.StartDate)));
                }

                if (!string.IsNullOrEmpty(condition.EndDate))
                {
                    whereBuilder.Append(" and isb.BillDate < @EndDate");
                    parameters.Add(new DataParameter("EndDate", DateTime.Parse(condition.EndDate + " 23:59:59")));
                }
                if (!string.IsNullOrEmpty(condition.MatID))
                {
                    whereBuilder.Append(" and t1.MatID = @MatID");
                    parameters.Add(new DataParameter("MatID", condition.MatID));
                }

                if (whereBuilder.Length > 0)
                {
                    sqlBuiler.Append(" where " + whereBuilder.ToString().Substring(4));
                }

                //分页关键字段及排序
                page.KeyName = "ID";
                if (string.IsNullOrEmpty(page.SortExpression))
                {
                    page.SortExpression = "BillDate ASC";
                }

                using (IDataSession session = AppDataFactory.CreateMainSession())
                {
                    page = session.GetDataPage <InStockQueryResult>(sqlBuiler.ToString(), parameters.ToArray(), page);
                }

                return(page);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }