//***************************************************************************** //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(); } }
/// <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(); } }