示例#1
0
        //*****************************************************************************
        //do it later      do it later      do it later
        //*****************************************************************************
        /// <summary>
        /// 保存检测单数据
        /// </summary>
        /// <param name="checkBillModel">检测单实例</param>
        /// <param name="detailModelList">检测单明细实例列表</param>
        /// <param name="isReNew">是否进行过初始化,如果进行过,则保存时,先删除旧数据。0否1是</param>
        /// <returns></returns>
        public string SavelData(BCheckBillData checkBillModel, List<BCheckDetailData> detailModelList,string isReNew)
        {
            SqlTransaction trans = null;
            BCheckDetailBB checkDetailBB = new BCheckDetailBB(this.connection);
            SCommBB commBB = new SCommBB(this.connection);

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

                string strBillNo = "";

                if (isReNew == "1")//进行过初始化,则先删掉旧数据
                {
                    string strSQL = " delete from BCheckDetail where checkBillId='" + checkBillModel.id + "'";
                    commBB.Query(strSQL);
                }

                strBillNo = checkBillModel.checkBillNo;
                if (strBillNo == "")//新增
                {
                    checkBillModel.checkBillNo = checkBillBB.GetCurrentInBillNoByPreBillNo();
                    strBillNo = checkBillModel.checkBillNo;

                    //保存检测单主数据
                    int mainId = checkBillBB.AddRecord(checkBillModel);
                    checkBillModel.id = mainId;

                    //保存检测单明细数据
                    foreach (BCheckDetailData model in detailModelList)
                    {
                        if (model.openBoxNum != 0 && model.checkNum != 0)
                        {
                            model.checkBillId = mainId;
                            checkDetailBB.AddRecord(model);
                        }
                    }
                }
                else//修改
                {
                    //修改检测单主数据
                    checkBillBB.ModifyRecord(checkBillModel);

                    //明细
                    foreach (BCheckDetailData model in detailModelList)
                    {
                        if (model.id > 0 && model.checkBillId > 0)//修改 且未删除的明细
                        {
                            checkDetailBB.ModifyRecord(model);
                        }
                        else if (model.id > 0 && model.checkBillId == -1)//修改时,被删了。需从数据库删除
                        {
                            checkDetailBB.DeleteRecord(model.id);
                        }
                        else if (model.id == 0)//本次新增的检测明细项目
                        {
                            if (model.openBoxNum != 0 && model.checkNum != 0)
                            {
                                model.checkBillId = checkBillModel.id;
                                checkDetailBB.AddRecord(model);
                            }
                        }
                    }
                }

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