public static void UpdateBOV(BillOfValidate bov, BusiLog bl) { //ConnectionPool.IsCenter = false; using (SqlConnection conn = ConnectionPool.BorrowConnection()) { //conn.Open(); SqlTransaction trans = conn.BeginTransaction(IsolationLevel.ReadCommitted); try { string strSysTime = SqlHelper.ExecuteScalar(trans, CommandType.Text, "select getdate()").ToString(); DateTime dtSysTime = DateTime.Parse(strSysTime); Dept dept = new Dept(); dept.cnvcDeptID = bov.cnvcDeptID; dept = EntityMapping.Get(dept, trans) as Dept; OilStorage os = new OilStorage(); os.cnvcGoodsName = bov.cnvcGoodsName; os.cnvcGoodsType = bov.cnvcGoodsType; os.cnvcDeptID = bov.cnvcDeptID; os = EntityMapping.Get(os, trans) as OilStorage; if (null == os) { throw new BusinessException(bexType.noobject, "库存获取错误"); } Guid gd = Guid.NewGuid(); //判断修改操作类型 改多为入库 改少为出库 BillOfValidate oldbov = new BillOfValidate(); oldbov.cnvcDeptID = bov.cnvcDeptID; oldbov.cnvcBillNo = bov.cnvcBillNo; oldbov = EntityMapping.Get(oldbov, trans) as BillOfValidate; string strOperType = ""; if (oldbov.cnnValidateCount > bov.cnnValidateCount) { strOperType = InType.BOVModOut; } else { strOperType = InType.BOVModIn; } if (bov.cnnValidateCount != oldbov.cnnValidateCount) { //验收单 //库存日志 OilStorageLog ol = new OilStorageLog(bov.ToTable()); ol.cnvcDeptName = dept.cnvcDeptName; ol.cndOperDate = dtSysTime; ol.cnvcOperType = strOperType; ol.cnnSerial = gd; ol.cnnLastCount = oldbov.cnnValidateCount; //os.cnnStorageCount; ol.cnnInOutCount = bov.cnnValidateCount - oldbov.cnnValidateCount; ol.cnnCurCount = bov.cnnValidateCount; //os.cnnStorageCount + bov.cnnValidateCount - oldbov.cnnValidateCount; EntityMapping.Create(ol, trans); OilStorageLogHis olhis = new OilStorageLogHis(ol.ToTable()); EntityMapping.Create(olhis, trans); oldbov.SynchronizeModifyValue(bov); oldbov.cnnDistance = bov.cnnDistance; oldbov.cnnLose = bov.cnnLose; oldbov.cnnOriginalCount = bov.cnnOriginalCount; oldbov.cnnOuterLose = bov.cnnQuotaLose; oldbov.cnnQuotaLose = bov.cnnQuotaLose; oldbov.cnnTransportLose = bov.cnnTransportLose; oldbov.cnnValidateCount = bov.cnnValidateCount; oldbov.cnvcInType = strOperType; EntityMapping.Update(oldbov, trans); //库存 os.cnnStorageCount = os.cnnStorageCount + ol.cnnInOutCount; //ol.cnnCurCount; EntityMapping.Update(os, trans); } //日志 bl.cnnSerial = gd; bl.cnvcComments = "验收单修改,出入库量:" + (bov.cnnValidateCount - oldbov.cnnValidateCount); bl.cnvcOperType = OperType.OP201; bl.cndOperDate = dtSysTime; bl.cnvcSource = InSource.cs; EntityMapping.Create(bl, trans); trans.Commit(); } catch (BusinessException bex) { trans.Rollback(); LogAdapter.WriteBusinessException(bex); throw bex; } catch (SqlException sex) { trans.Rollback(); LogAdapter.WriteDatabaseException(sex); throw sex; } catch (Exception ex) { trans.Rollback(); LogAdapter.WriteFeaturesException(ex); throw ex; } finally { ConnectionPool.ReturnConnection(conn); } } }