private void map(LendItemInfo oParam, DataRow tempdr) { oParam.SysNo = Util.TrimIntNull(tempdr["SysNo"]); oParam.LendSysNo = Util.TrimIntNull(tempdr["LendSysNo"]); oParam.ProductSysNo = Util.TrimIntNull(tempdr["ProductSysNo"]); oParam.LendQty = Util.TrimIntNull(tempdr["LendQty"]); oParam.ExpectReturnTime = Util.TrimDateNull(tempdr["ExpectReturnTime"]); }
public void UpdateItemQty(LendInfo masterInfo, LendItemInfo itemInfo) { TransactionOptions options = new TransactionOptions(); options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted; options.Timeout = TransactionManager.DefaultTimeout; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options)) { //�����dz�ʼ if ( getCurrentStatus(masterInfo.SysNo) != (int)AppEnum.LendStatus.Origin ) throw new BizException("status is not origin now, update item qty failed"); //��ȡ������ֵ LendItemInfo oldItemInfo = masterInfo.itemHash[itemInfo.ProductSysNo] as LendItemInfo; int deltQty = itemInfo.LendQty - oldItemInfo.LendQty; //���±����ϸ ( ������ӱ����ϸ������ԣ���Ҫ�����ﴦ��һ�£� itemInfo.SysNo = oldItemInfo.SysNo; itemInfo.LendSysNo = oldItemInfo.LendSysNo; if ( 1 != new LendDac().UpdateItem(itemInfo.SysNo, deltQty, itemInfo.ExpectReturnTime)) throw new BizException("expected one-row update failed, update item qty failed"); //���¿�� InventoryManager.GetInstance().SetAvailableQty(masterInfo.StockSysNo, itemInfo.ProductSysNo, deltQty); //���� itemInfo �� masterInfo ע:���ݿ���³ɹ��Ժ�Ÿ����� masterInfo.itemHash.Remove(itemInfo.ProductSysNo); masterInfo.itemHash.Add(itemInfo.ProductSysNo, itemInfo); scope.Complete(); } }
public LendInfo Load(int lendSysNo) { LendInfo masterInfo; TransactionOptions options = new TransactionOptions(); options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted; options.Timeout = TransactionManager.DefaultTimeout; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options)) { string masterSql = "select * from st_lend where sysno = " + lendSysNo; DataSet masterDs = SqlHelper.ExecuteDataSet(masterSql); if ( !Util.HasMoreRow(masterDs)) throw new BizException("there is no this lend sysno"); masterInfo = new LendInfo(); map(masterInfo, masterDs.Tables[0].Rows[0]); string itemSql = "select * from st_lend_item where lendsysno=" + lendSysNo; DataSet itemDs = SqlHelper.ExecuteDataSet(itemSql); if ( Util.HasMoreRow(itemDs)) { foreach(DataRow dr in itemDs.Tables[0].Rows) { LendItemInfo item = new LendItemInfo(); map(item, dr); masterInfo.itemHash.Add(item.ProductSysNo, item); } } //��Ϊ������¼��pk����product��������sysno ��key string returnSql = "select * from st_lend_return where lendsysno=" +lendSysNo; DataSet returnDs = SqlHelper.ExecuteDataSet(returnSql); if ( Util.HasMoreRow(returnDs)) { foreach(DataRow dr in returnDs.Tables[0].Rows) { LendReturnInfo item = new LendReturnInfo(); map(item, dr); masterInfo.returnHash.Add(item.SysNo, item); } } scope.Complete(); } return masterInfo; }
public void InsertItem(LendInfo masterInfo, LendItemInfo itemInfo) { if ( masterInfo.itemHash.ContainsKey(itemInfo.ProductSysNo)) { throw new BizException("item duplicated!"); } TransactionOptions options = new TransactionOptions(); options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted; options.Timeout = TransactionManager.DefaultTimeout; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options)) { //�����dz�ʼ if ( getCurrentStatus(masterInfo.SysNo) != (int)AppEnum.LendStatus.Origin ) throw new BizException("status is not origin now, add item failed"); //��ȡ������ֵ //����item if ( 1 != new LendDac().InsertItem(itemInfo)) throw new BizException("expected one-row update failed, add item failed"); //���¿�� InventoryManager.GetInstance().SetAvailableQty(masterInfo.StockSysNo, itemInfo.ProductSysNo, itemInfo.LendQty); //���� itemInfo �� masterInfo masterInfo.itemHash.Add(itemInfo.ProductSysNo, itemInfo); scope.Complete(); } }
public void Import() { /* �漰������ * 1 ������¼�Ĵ��� * 2 ���Ĵ��� * 3 ״̬�Ĵ��� * 4 ���е���id�Ķ�Ӧ�����Ҫ�ر�ע�� */ if ( !AppConfig.IsImportable) throw new BizException("Is Importable is false"); string sql = " select top 1 sysno from st_lend"; DataSet ds = SqlHelper.ExecuteDataSet(sql); if ( Util.HasMoreRow(ds) ) throw new BizException("the table lend is not empty"); TransactionOptions options = new TransactionOptions(); options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted; options.Timeout = TransactionManager.DefaultTimeout; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options)) { string sql_old = @"select old.sysno, old.lendid, stock_con.newsysno as stocksysno, lender_con.newsysno as lendusersysno, create_con.newsysno as createusersysno, audit_con.newsysno as auditusersysno, out_con.newsysno as outusersysno, createtime, audittime,outstocktime as outtime, productstatus, auditstatus, memo as note, '1' as status from ipp2003..st_lend as old, ippconvert..sys_user as lender_con, ippconvert..sys_user as create_con, ippconvert..sys_user as audit_con, ippconvert..sys_user as out_con, ippconvert..stock as stock_con where old.employeesysno = lender_con.oldsysno and old.createusersysno = create_con.oldsysno and old.auditusersysno = audit_con.oldsysno and old.outstockusersysno = out_con.oldsysno and old.stocksysno = stock_con.oldsysno order by old.sysno"; DataSet ds_old = SqlHelper.ExecuteDataSet(sql_old); if ( !Util.HasMoreRow(ds_old) ) return; foreach(DataRow dr in ds_old.Tables[0].Rows) { /* newStatus aduit product * abandon -1 n/a * origin 0 n/a * verified 1 n/a * outstock n/a 1 * returnpartly n/a 2 * returnall n/a 3 */ int newStatus = (int)AppEnum.LendStatus.Origin; int auditStatus = Util.TrimIntNull(dr["auditStatus"]); int productStatus = Util.TrimIntNull(dr["productStatus"]); if ( auditStatus == -1 ) newStatus = (int)AppEnum.LendStatus.Abandon; if ( auditStatus == 0 ) newStatus = (int)AppEnum.LendStatus.Origin; if ( auditStatus == 1) newStatus = (int)AppEnum.LendStatus.Verified; if ( productStatus == 1) newStatus = (int)AppEnum.LendStatus.OutStock; if ( productStatus == 2) newStatus = (int)AppEnum.LendStatus.ReturnPartly; if ( productStatus == 3) newStatus = (int)AppEnum.LendStatus.ReturnAll; LendInfo oInfo = new LendInfo(); map(oInfo, dr); oInfo.Status = newStatus; if ( new LendDac().ImportMaster(oInfo)!= 1) { throw new BizException("master expected one row error"); } //insert item string sql_item = @"select '0' as sysno, LendSysNo, con_product.newsysno as productsysno, lendqty, returnqty, restoretime as ExpectReturnTime from ipp2003..St_Lend_Item sli, ippconvert..productbasic as con_product where sli.productsysno = con_product.oldsysno and LendSysNo=" + oInfo.SysNo; DataSet ds_item = SqlHelper.ExecuteDataSet(sql_item); if ( !Util.HasMoreRow(ds_item) ) continue; foreach(DataRow drItem in ds_item.Tables[0].Rows) { LendItemInfo oItem = new LendItemInfo(); map(oItem, drItem); int resultitem = new LendDac().InsertItem(oItem); if ( resultitem < 1 ) throw new BizException("insert item row < 1"); if ( Util.TrimIntNull(drItem["returnqty"])!= 0) { LendReturnInfo oReturn = new LendReturnInfo(); oReturn.LendSysNo = oItem.LendSysNo; oReturn.ProductSysNo = oItem.ProductSysNo; oReturn.ReturnTime = oInfo.OutTime.AddDays(30); oReturn.ReturnQty = Util.TrimIntNull(drItem["returnqty"]); int resultReturn = new LendDac().InsertReturn(oReturn); if ( resultReturn != 1) throw new BizException("return item one-row expected error"); } if ( oItem.LendQty - Util.TrimIntNull(drItem["returnqty"]) != 0 ) InventoryManager.GetInstance().SetImportLendQty(oInfo.StockSysNo, oItem.ProductSysNo, oItem.LendQty-Util.TrimIntNull(drItem["returnqty"])); //������� if ( oInfo.Status == (int)AppEnum.LendStatus.Origin || oInfo.Status == (int)AppEnum.LendStatus.Verified) { InventoryManager.GetInstance().SetAvailableQty(oInfo.StockSysNo, oItem.ProductSysNo, oItem.LendQty); } } } string sqlMaxSysNo = "select top 1 sysno from ipp2003..st_lend order by sysno desc"; DataSet dsMax = SqlHelper.ExecuteDataSet(sqlMaxSysNo); if ( !Util.HasMoreRow(dsMax)) throw new BizException("got max sysno error"); int maxSysNo = Util.TrimIntNull(dsMax.Tables[0].Rows[0]["sysno"]); // ���Զ����ɵ�sysno�Ŀǰ����ݺ� int newSysNo; do { newSysNo = SequenceDac.GetInstance().Create("St_Lend_Sequence"); } while( newSysNo < maxSysNo); scope.Complete(); } }
public int InsertItem(LendItemInfo oParam) { string sql = @"INSERT INTO St_Lend_Item ( LendSysNo, ProductSysNo, LendQty, ExpectReturnTime ) VALUES ( @LendSysNo, @ProductSysNo, @LendQty, @ExpectReturnTime );set @SysNo = SCOPE_IDENTITY();"; SqlCommand cmd = new SqlCommand(sql); SqlParameter paramSysNo = new SqlParameter("@SysNo", SqlDbType.Int,4); SqlParameter paramLendSysNo = new SqlParameter("@LendSysNo", SqlDbType.Int,4); SqlParameter paramProductSysNo = new SqlParameter("@ProductSysNo", SqlDbType.Int,4); SqlParameter paramLendQty = new SqlParameter("@LendQty", SqlDbType.Int,4); SqlParameter paramExpectReturnTime = new SqlParameter("@ExpectReturnTime", SqlDbType.DateTime); paramSysNo.Direction = ParameterDirection.Output; paramLendSysNo.Value = oParam.LendSysNo; paramProductSysNo.Value = oParam.ProductSysNo; paramLendQty.Value = oParam.LendQty; if ( oParam.ExpectReturnTime != AppConst.DateTimeNull) paramExpectReturnTime.Value = oParam.ExpectReturnTime.ToString(AppConst.DateFormatLong); else paramExpectReturnTime.Value = System.DBNull.Value; cmd.Parameters.Add(paramSysNo); cmd.Parameters.Add(paramLendSysNo); cmd.Parameters.Add(paramProductSysNo); cmd.Parameters.Add(paramLendQty); cmd.Parameters.Add(paramExpectReturnTime); return SqlHelper.ExecuteNonQuery(cmd, out oParam.SysNo); }