/// <summary>
        /// 增加一条数据
        /// </summary>
        /// <param name="model">model</param>
        public int AddRecord(BTallyBillDetailData model)
        {
            StringBuilder strSql = new StringBuilder();
            strSql.Append("set nocount on; ");
            strSql.Append("insert into BTallyBillDetail(");
            strSql.Append(@"mainId,region,oldPalletNo,boxNo,isrtEmpId,isrtDt)");
            strSql.Append(" values (");
            strSql.Append(@"@mainId,@region,@oldPalletNo,@boxNo,@isrtEmpId,@isrtDt)");
            strSql.Append("; select @@identity; set nocount off; ");
            SqlParameter[] parameters = {
                    new SqlParameter("@mainId", SqlDbType.VarChar,20),
                    new SqlParameter("@region", SqlDbType.VarChar,10),
                    new SqlParameter("@oldPalletNo", SqlDbType.VarChar,20),
                    new SqlParameter("@boxNo", SqlDbType.VarChar,20),
                    new SqlParameter("@isrtEmpId", SqlDbType.Int),
                    new SqlParameter("@isrtDt", SqlDbType.DateTime)
                };
            parameters[0].Value = model.mainId;
            parameters[1].Value = model.region;
            parameters[2].Value = model.oldPalletNo;
            parameters[3].Value = model.boxNo;
            parameters[4].Value = model.isrtEmpId;
            parameters[5].Value = model.isrtDt == string.Empty ? null : model.isrtDt;

            int id = 0;
            try
            {
                object ret = SqlHelper.ExecuteScalar(this.connection, this.transaction, CommandType.Text, strSql.ToString(), parameters);

                if (ret != null && ret != DBNull.Value)
                {
                    id = Convert.ToInt32(ret);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return id;
        }
        /// <summary>
        /// 更新一条数据
        /// </summary>
        /// <param name="model">model</param>
        public bool ModifyRecord(BTallyBillDetailData model)
        {
            bool ret = false;
            StringBuilder strSql = new StringBuilder();
            strSql.Append("update BTallyBillDetail set ");
            strSql.Append("mainId=@mainId,");
            strSql.Append("region=@region,");
            strSql.Append("oldPalletNo=@oldPalletNo,");
            strSql.Append("boxNo=@boxNo,");
            strSql.Append("isrtEmpId=@isrtEmpId,");
            strSql.Append("isrtDt=@isrtDt");
            strSql.Append(" where id = @id ");
            SqlParameter[] parameters = {
                    new SqlParameter("@id", SqlDbType.Int),
                    new SqlParameter("@mainId", SqlDbType.VarChar,20),
                    new SqlParameter("@region", SqlDbType.VarChar,10),
                    new SqlParameter("@oldPalletNo", SqlDbType.VarChar,20),
                    new SqlParameter("@boxNo", SqlDbType.VarChar,20),
                    new SqlParameter("@isrtEmpId", SqlDbType.Int),
                    new SqlParameter("@isrtDt", SqlDbType.DateTime)
                };
            parameters[0].Value = model.id;
            parameters[1].Value = model.mainId;
            parameters[2].Value = model.region;
            parameters[3].Value = model.oldPalletNo;
            parameters[4].Value = model.boxNo;
            parameters[5].Value = model.isrtEmpId;
            parameters[6].Value = model.isrtDt == string.Empty ? null : model.isrtDt;

            try
            {
                SqlHelper.ExecuteNonQuery(this.connection, this.transaction, CommandType.Text, strSql.ToString(), parameters);
                ret = true;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return ret;
        }
 /// <summary>
 /// 更新一条数据
 /// </summary>
 /// <param name="model">model</param>
 public bool ModifyRecord(BTallyBillDetailData model)
 {
     return this.tallyBillDetailDB.ModifyRecord(model);
 }
        /// <summary>
        /// 得到一个model
        /// </summary>
        /// <param name="id">主键值</param>
        /// <returns>model</returns>
        public BTallyBillDetailData GetModel(int id)
        {
            StringBuilder strSql = new StringBuilder();
            strSql.Append(@"select id,mainId,region,oldPalletNo,boxNo,isrtEmpId,isrtDt from BTallyBillDetail");
            strSql.Append(" where id = @id ");
            SqlParameter[] parameters = {
                    new SqlParameter("@id", SqlDbType.Int)
                };
            parameters[0].Value = id;

            BTallyBillDetailData model = new BTallyBillDetailData();
            DataSet ds = SqlHelper.ExecuteDataset(this.connection, this.transaction, CommandType.Text, strSql.ToString(), parameters);

            if (ds.Tables[0].Rows.Count > 0)
            {
                DataRow row = ds.Tables[0].Rows[0];
                if (row["id"] != DBNull.Value)
                {
                    model.id = Convert.ToInt32(row["id"]);
                }
                if (row["mainId"] != DBNull.Value)
                {
                    model.mainId = Convert.ToString(row["mainId"]);
                }
                if (row["region"] != DBNull.Value)
                {
                    model.region = Convert.ToString(row["region"]);
                }
                if (row["oldPalletNo"] != DBNull.Value)
                {
                    model.oldPalletNo = Convert.ToString(row["oldPalletNo"]);
                }
                if (row["boxNo"] != DBNull.Value)
                {
                    model.boxNo = Convert.ToString(row["boxNo"]);
                }
                if (row["isrtEmpId"] != DBNull.Value)
                {
                    model.isrtEmpId = Convert.ToInt32(row["isrtEmpId"]);
                }
                if (row["isrtDt"] != DBNull.Value)
                {
                    model.isrtDt = Convert.ToString(row["isrtDt"]);
                }
                return model;
            }
            else
            {
                return null;
            }
        }
 /// <summary>
 /// 增加一条数据
 /// </summary>
 /// <param name="model">model</param>
 public int AddRecord(BTallyBillDetailData model)
 {
     return this.tallyBillDetailDB.AddRecord(model);
 }
        //*****************************************************************************
        //do it later      do it later      do it later
        //*****************************************************************************
        /// <summary>
        /// 保存称重理货明细信息,同时更改箱子称重数据
        /// </summary>
        /// <param name="mainId">称重理货单ID</param>
        /// <param name="regionId">区域ID</param>
        /// <param name="strNewPalletNo">新托盘条码号</param>
        /// <param name="strOldPalletNo">原托盘号</param>
        /// <param name="strBoxNo">箱号</param>
        /// <param name="weight">称重重量</param>
        /// <param name="factNum">实际数量</param>
        /// <param name="arriveDetailId">到货单明细ID</param>
        /// <param name="firstBoxSingleWeight">首箱单重</param>
        /// <param name="tallyNoPassReasonId">理货不合格原因</param>
        /// <returns></returns>
        public bool SaveRecord(int mainId, int regionId, string strNewPalletNo, string strOldPalletNo, string strBoxNo,
            float weight, int factNum, int arriveDetailId, double firstBoxSingleWeight, int tallyNoPassReasonId)
        {
            bool ret = false;
            SqlTransaction trans = null;
            SCommBB commBB = new SCommBB(this.connection);
            BArriveDetailBB arriveDetailBB = new BArriveDetailBB(this.connection);
            BArrangeBillBoxBB arrangeBillBoxBB = new BArrangeBillBoxBB(this.connection);

            try
            {
                if (this.transaction == null)
                {
                    trans = this.connection.BeginTransaction("TransSave");
                    this.tallyBillDetailBB.Transaction = trans;
                    commBB.Transaction = trans;
                    arriveDetailBB.Transaction = trans;
                    arrangeBillBoxBB.Transaction = trans;
                }
                else
                {
                    this.tallyBillDetailBB.Transaction = this.transaction;
                    commBB.Transaction = this.transaction;
                    arriveDetailBB.Transaction = this.transaction;
                    arrangeBillBoxBB.Transaction = this.transaction;
                }

                DataSet ds = new DataSet();
                DataTable dtArrangeBillBox = new DataTable();
                BTallyBillDetailData tallyBillDetailModel = new BTallyBillDetailData();
                StringBuilder strSql = new StringBuilder();
                DataTable dtWareLocator = new DataTable();

                //保存称重理货明细数据
                if (mainId != 0)
                {
                    tallyBillDetailModel.mainId = mainId.ToString();//称重理货单ID
                    tallyBillDetailModel.region = regionId.ToString();//区域ID
                    tallyBillDetailModel.oldPalletNo = strOldPalletNo;//原托盘号
                    tallyBillDetailModel.boxNo = strBoxNo;//箱号
                    tallyBillDetailModel.isrtDt = System.DateTime.Now.ToString();//添加时间
                    tallyBillDetailModel.isrtEmpId = this.empId;//添加人

                    tallyBillDetailBB.AddRecord(tallyBillDetailModel);

                    //获取排托区下线库位信息
                    strSql.Append(@"select wareLocator.wareNo,wareLocator.downWareLocatorNo as wareLocatorNo ");
                    strSql.Append(@"from dbo.BArrangeBillBox as arrangeBillBoxBox ");
                    strSql.Append(@"left join dbo.LWareLocator as wareLocator on wareLocator.wareLocatorNo=arrangeBillBoxBox.wareLocatorNo ");
                    strSql.Append(@"where arrangeBillBoxBox.boxNo='" + strBoxNo + "'");

                    dtWareLocator = commBB.Query(strSql.ToString()).Tables[0];
                    if (dtWareLocator.Rows.Count > 0
                        && dtWareLocator.Rows[0]["wareLocatorNo"] != DBNull.Value
                        && dtWareLocator.Rows[0]["wareLocatorNo"].ToString() != "")
                    {
                        dtArrangeBillBox = arrangeBillBoxBB.GetVList("boxNo='" + strBoxNo + "'").Tables[0];
                        //首先将语句完整后 再将数据传递到后台当中

                        string command = "update dbo.BArrangeBillBox set preWareLocatorNo=wareLocatorNo,wareLocatorNo='" + dtWareLocator.Rows[0]["wareLocatorNo"].ToString() + "',weight='" + weight.ToString()
                            + "',factNum=factNum-" + Convert.ToString(Convert.ToInt32(dtArrangeBillBox.Rows[0]["leavingNum"]) + Convert.ToInt32(dtArrangeBillBox.Rows[0]["DEPickOutNum"]) - factNum)
                            + ",oldPalletNo=palletNo,oldRegion=region,palletNo='" + strNewPalletNo
                            + "',region='" + regionId.ToString() + "',noPassReasonId='" + tallyNoPassReasonId.ToString() + "' where boxNo='" + strBoxNo + "'";

                        if(command.Contains("--"))
                        {
                            command =command.Replace("--", "+");
                        }
                        //更改箱子称重重量和实际数量
                        //commBB.ExecuteSql(command);
                        string conn = "Data Source=172.16.0.160;Initial Catalog=GMWJ;User=wms;Password=sasa";
                        try
                        {
                            SQLHelperDM.ExecuteNonQuery(conn, command);
                        }
                        catch (Exception ee)
                        {
                            string errorRecord = "Insert into SqlText values ('" + ee.Message + "','Hello World','" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "')";
                            SQLHelperDM.ExecuteNonQuery(conn, errorRecord);//在数据库表当中增加相应的判断错误处理,因为在程序运行当中经常出现将数据全部更改的错误
                            ret = false;

                            //在此处将所有的插入数据存储到一个表当中 用来进行记录
                        }

                        string record = "Insert into SqlText values ('" +command.Replace('\'',' ') + "','你好','" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "')";
                        SQLHelperDM.ExecuteNonQuery(conn, record);//在数据库表当中增加相应的判断错误处理,因为在程序运行当中经常出现将数据全部更改的错误
                    }

                    //更改到货单明细的首箱单重
                    if (firstBoxSingleWeight == 0)
                    {
                        BArriveDetailData arriveDetailModel = new BArriveDetailData();

                        arriveDetailModel = arriveDetailBB.GetModel(arriveDetailId);

                        if (arriveDetailModel != null)
                        {
                            arriveDetailModel.firstBoxSingleWeight = Math.Round(weight / factNum, 4);

                            arriveDetailBB.ModifyRecord(arriveDetailModel);
                        }
                    }
                }
                else
                {
                    ret = false;
                    throw new Exception("保存错误,不存在理货单!");
                }

                if (this.transaction == null) trans.Commit();
                ret = true;
            }
            catch (Exception ex)
            {
                ret = false;
                if (this.transaction == null) trans.Rollback("TransSave");
                throw ex;
            }
            finally
            {
                commBB.Dispose();
                arriveDetailBB.Dispose();
                arrangeBillBoxBB.Dispose();
            }

            return ret;
        }
        /// <summary>
        /// 保存非标准箱从质检区入库信息
        /// </summary>
        /// <param name="strPalletNo">托盘条码号</param>
        /// <param name="strNextWareNo">目的库区编码</param>
        /// <param name="strNextWareLocatorNo">目的库位编码</param>
        /// <returns></returns>
        public bool SaveNoStandBoxInStockInfo(string strPalletNo, string strNextWareNo, string strNextWareLocatorNo)
        {
            bool ret = false;
            SqlTransaction trans = null;
            SCommBB commBB = new SCommBB(this.connection);
            BTallyBillBB tallyBillBB = new BTallyBillBB(this.connection);
            BArrangeBillBoxBB arrangeBillBoxBB = new BArrangeBillBoxBB(this.connection);
            BForkliftTaskBB forkliftTaskBB = new BForkliftTaskBB(this.connection);

            try
            {
                if (this.transaction == null)
                {
                    trans = this.connection.BeginTransaction("TransSave");
                    this.tallyBillDetailBB.Transaction = trans;
                    commBB.Transaction = trans;
                    tallyBillBB.Transaction = trans;
                    arrangeBillBoxBB.Transaction = trans;
                    forkliftTaskBB.Transaction = trans;
                }
                else
                {
                    this.tallyBillDetailBB.Transaction = this.transaction;
                    commBB.Transaction = this.transaction;
                    tallyBillBB.Transaction = this.transaction;
                    arrangeBillBoxBB.Transaction = this.transaction;
                    forkliftTaskBB.Transaction = this.transaction;
                }

                int mainId = 0;
                StringBuilder strSql = new StringBuilder();
                DataTable dtArrangeBillBox = new DataTable();
                BTallyBillData tallyBillModel = new BTallyBillData();
                BTallyBillDetailData tallyBillDetailModel = new BTallyBillDetailData();
                BForkliftTaskData forkliftTaskModel = new BForkliftTaskData();

                //保存理货信息
                tallyBillModel = new BTallyBillData();

                tallyBillModel.palletNo = strPalletNo;//托盘条码号
                tallyBillModel.isInStock = false;//是否入库
                tallyBillModel.isrtDt = System.DateTime.Now.ToString();//添加时间
                tallyBillModel.isrtEmpId = this.empId;//添加人
                tallyBillModel.instantState = "02";//理货完成

                mainId = tallyBillBB.AddRecord(tallyBillModel);//称重理货单ID赋值

                dtArrangeBillBox = arrangeBillBoxBB.GetList("palletNo='" + strPalletNo + "' and isnull(wareNo,'')<>''").Tables[0];
                foreach (DataRow row in dtArrangeBillBox.Rows)
                {
                    //保存称重理货明细数据
                    tallyBillDetailModel = new BTallyBillDetailData();

                    tallyBillDetailModel.mainId = mainId.ToString();//称重理货单ID
                    tallyBillDetailModel.region = "0";//区域ID
                    tallyBillDetailModel.oldPalletNo = strPalletNo;//原托盘号
                    tallyBillDetailModel.boxNo = row["boxNo"].ToString();//箱号
                    tallyBillDetailModel.isrtDt = System.DateTime.Now.ToString();//添加时间
                    tallyBillDetailModel.isrtEmpId = this.empId;//添加人

                    tallyBillDetailBB.AddRecord(tallyBillDetailModel);
                }

                //生成叉车任务
                if (dtArrangeBillBox.Rows.Count > 0)
                {
                    forkliftTaskModel = new BForkliftTaskData();

                    forkliftTaskModel.taskType = "11";//任务类型为:从质检区到正式区
                    forkliftTaskModel.palletNo = strPalletNo;//托盘号
                    forkliftTaskModel.preWareNo = dtArrangeBillBox.Rows[0]["wareNo"].ToString();//源库区
                    forkliftTaskModel.preLocatorNo = dtArrangeBillBox.Rows[0]["wareLocatorNo"].ToString();//源库位
                    forkliftTaskModel.nextWareNo = strNextWareNo;//目的库区
                    forkliftTaskModel.nextLocatorNo = strNextWareLocatorNo;//目的库位
                    forkliftTaskModel.effectDt = System.DateTime.Now.ToString();//生效时间
                    forkliftTaskModel.isDeal = false;//是否处理

                    forkliftTaskBB.AddRecord(forkliftTaskModel);

                    //更新目的库区占用状态
                    if (strNextWareLocatorNo != "")
                    {
                        //更改库位的使用状态
                        commBB.ExecuteSql("update dbo.LWareLocator set isUsing=1 where wareLocatorNo='"
                            + strNextWareLocatorNo + "'");
                    }
                }

                if (this.transaction == null) trans.Commit();
                ret = true;
            }
            catch (Exception ex)
            {
                if (this.transaction == null) trans.Rollback("TransSave");
                throw ex;
            }
            finally
            {
                commBB.Dispose();
                tallyBillBB.Dispose();
                arrangeBillBoxBB.Dispose();
                forkliftTaskBB.Dispose();
            }

            return ret;
        }
        /// <summary>
        /// 更新一条"称重理货单明细"信息
        /// </summary>
        /// <param name="model">model</param>
        public bool ModifyRecord(BTallyBillDetailData model)
        {
            bool ret = false;
            SqlTransaction trans = null;
            try
            {
                if (this.transaction == null)
                {
                    trans = this.connection.BeginTransaction("TransModify");
                    this.tallyBillDetailBB.Transaction = trans;
                    this.errorDiaryBB.Transaction = trans;
                    this.operatDiaryBB.Transaction = trans;
                }

                this.tallyBillDetailBB.ModifyRecord(model);

                SOperatDiaryData operatDiaryData = new SOperatDiaryData();
                operatDiaryData.empId = this.empId;
                operatDiaryData.functionId = "";
                operatDiaryData.recordId = model.id.ToString();
                operatDiaryData.operateContent = "称重理货单明细修改一条id为“" + model.id.ToString() + "”的记录";
                this.operatDiaryBB.AddRecord(operatDiaryData);

                if (this.transaction == null) trans.Commit();
                ret = true;
            }
            catch (Exception ex)
            {
                if (this.transaction == null) trans.Rollback("TransModify");
                SErrorDiaryData errorDiaryData = new SErrorDiaryData();
                errorDiaryData.empId = this.empId;
                errorDiaryData.functionId = "";
                errorDiaryData.errorText = "称重理货单明细修改记录“" + model.id.ToString() + "”时报错:" + ex.Message;
                this.errorDiaryBB.AddRecord(errorDiaryData);
                throw ex;
            }
            finally
            {
            }
            return ret;
        }
        /// <summary>
        /// 增加一条"称重理货单明细"信息
        /// </summary>
        /// <param name="model">model</param>
        public int AddRecord(BTallyBillDetailData model)
        {
            int id = 0;
            SqlTransaction trans = null;
            try
            {
                if (this.transaction == null)
                {
                    trans = this.connection.BeginTransaction("TransAdd");
                    this.tallyBillDetailBB.Transaction = trans;
                    this.errorDiaryBB.Transaction = trans;
                    this.operatDiaryBB.Transaction = trans;
                }

                id = this.tallyBillDetailBB.AddRecord(model);

                SOperatDiaryData operatDiaryData = new SOperatDiaryData();
                operatDiaryData.empId = this.empId;
                operatDiaryData.functionId = "";
                operatDiaryData.recordId = id.ToString();
                operatDiaryData.operateContent = "称重理货单明细增加一条id为“" + id.ToString() + "”的记录";
                this.operatDiaryBB.AddRecord(operatDiaryData);

                if (this.transaction == null) trans.Commit();
            }
            catch (Exception ex)
            {
                if (this.transaction == null) trans.Rollback("TransAdd");
                SErrorDiaryData errorDiaryData = new SErrorDiaryData();
                errorDiaryData.empId = this.empId;
                errorDiaryData.functionId = "";
                errorDiaryData.errorText = "称重理货单明细增加记录时报错:" + ex.Message;
                this.errorDiaryBB.AddRecord(errorDiaryData);
                throw ex;
            }
            finally
            {
            }
            return id;
        }