示例#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();
            }
        }
示例#2
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();
            }
        }