示例#1
0
        /// <summary>
        /// 提交检测单
        /// </summary>
        /// <param name="checkBillModel">检测单实例</param>
        /// <returns></returns>
        public void CommitData(BCheckBillData checkBillModel)
        {
            SqlTransaction trans = null;
            LCheckDetailBB lCheckDetailBB = new LCheckDetailBB();
            BCheckDetailBB checkDetailBB = new BCheckDetailBB();
            SCommBB commBB = new SCommBB(this.connection);

            try
            {
                if (this.transaction == null)
                {
                    trans = this.connection.BeginTransaction("TranCommit");
                    checkBillBB.Transaction = trans;
                    commBB.Transaction = trans;
                }
                else
                {
                    checkBillBB.Transaction = this.transaction;
                    commBB.Transaction = this.transaction;
                }

                DataSet dsCheckDetail = new DataSet();
                DataSet dsMaterialCheckDetail = new DataSet();
                DataSet dsArriveDetail = new DataSet();
                string strSql = "";
                DataRow[] myDataRowArray = null;

                //获取物料对应的检测项
                dsMaterialCheckDetail = lCheckDetailBB.GetList("materialNo='" + checkBillModel.materialNo + "'");

                //获取检测单对应到货单信息
                strSql = "select id,num from BArriveDetail where arriveBillNo='" + checkBillModel.arriveBillNo
                    + "' and financeBillNo='" + checkBillModel.financeBillNo + "' and materialNo='" + checkBillModel.materialNo + "'";
                dsArriveDetail = commBB.Query(strSql);

                //提交检测单
                this.checkBillBB.ModifyRecord(checkBillModel);

                //获取检测单下的所有检测明细
                dsCheckDetail = checkDetailBB.GetVList("checkBillId=" + checkBillModel.id);
                foreach (DataRow row in dsCheckDetail.Tables[0].Rows)
                {
                    if (Convert.ToBoolean(row["isAddupCheck"]))//检测明细是累计检测项
                    {
                        strSql = "update dbo.LCheckDetail set arrivedAmount=0 where id=" + row["checkDetailId"].ToString();
                        commBB.Query(strSql);
                        continue;
                    }

                    //当前物料存在累计检测项,当前没有检测,累计到货数量
                    myDataRowArray = dsMaterialCheckDetail.Tables[0].Select("id=" + row["checkDetailId"].ToString()
                        + " and isAddupCheck=1");
                    if (myDataRowArray.Length > 0)
                    {
                        strSql = "update dbo.LCheckDetail set arrivedAmount=isnull(arrivedAmount,0)+" + dsArriveDetail.Tables[0].Rows[0]["num"].ToString()
                            + " where id=" + row["checkDetailId"].ToString();
                        commBB.Query(strSql);
                    }
                }

                if (transaction == null) trans.Commit();
            }
            catch (Exception ex)
            {
                if (transaction == null) trans.Rollback("TranCommit");
                throw new Exception(ex.Message);
            }
            finally
            {
                lCheckDetailBB.Dispose();
                checkDetailBB.Dispose();
                commBB.Dispose();
            }
        }