Index: ssts-web/src/test/java/test/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManagerTests.java =================================================================== diff -u -r40675 -r41279 --- ssts-web/src/test/java/test/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManagerTests.java (.../DiposableGoodsManagerTests.java) (revision 40675) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManagerTests.java (.../DiposableGoodsManagerTests.java) (revision 41279) @@ -178,6 +178,7 @@ GodownEntry entry1 = new GodownEntry(); entry1.setWarehouseID(warehouseID); entry1.setWarehouseName(warehouseName); + entry1.setTime(new Date()); GodownEntryItem godownEntryItem1_1 = new GodownEntryItem(); godownEntryItem1_1.setBatchNumber("20150704"); godownEntryItem1_1.setAmount(100L); @@ -226,6 +227,7 @@ GodownEntry entry2 = new GodownEntry(); entry2.setWarehouseID(warehouseID); entry2.setWarehouseName(warehouseName); + entry2.setTime(new Date()); GodownEntryItem godownEntryItem2_1 = new GodownEntryItem(); godownEntryItem2_1.setBatchNumber("20150704"); godownEntryItem2_1.setAmount(200L); @@ -600,58 +602,91 @@ } // 测试出库,库存数量小于出库数量,不够出库,执行后库存应保持不变 - @Test(expected = ExpectedException.class) + @Test public void testOutStorageWhenStorageLessThanOutAmount(){ initCSSDData(); Map result = new HashMap(); WareHouse wareHouse1 = wareHouseManager.getDefaultWareHouseByUnitCode(Constants.ORG_UNIT_CODE_CSSD); assertNotNull(wareHouse1); Long warehouseID = wareHouse1.getId(); String warehouseName = wareHouse1.getName(); - //DisposableGoodsStock goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "5ML"); - //assertNotNull(goods); DisposableGoods dg = diposableGoodsManager.get("注射器", "5ML"); assertNotNull(dg); - //因为之前运行的测试用例的库存数据未清除,所以库存数量为本次入库数量+入库前的数量 - //assertEquals(1000, goods.getAmount().intValue()); - //DisposableGoodsBatchStock disposableGoodsBatchStock = diposableGoodBatchStockManager.getDisposableGoodsBatchStockByNameAndBatchNumber(warehouseID, "注射器", "5ML", "b-20140101"); - //assertNotNull(disposableGoodsBatchStock); - //assertEquals(1000, disposableGoodsBatchStock.getStorage().intValue()); - DisposableGoodsBatch disposableGoodsBatch = diposableGoodsManager.getDisposableGoodsBatchByBatchNumber(dg.getId(), "b-20140101"); + + String batchNumber = "b-2025103101"; + DisposableGoodsBatch disposableGoodsBatch = diposableGoodsManager.getDisposableGoodsBatchByBatchNumber(dg.getId(), batchNumber); + //这个批次只用于当前测试用例 + assertEquals(true, disposableGoodsBatch == null); + + // 开始入库 + // 注射器【5ML】 1000个,有1个批次,1个标识号 + GodownEntry entry = new GodownEntry(); + entry.setWarehouseID(warehouseID); + entry.setWarehouseName(warehouseName); + GodownEntryItem godownEntryItem1 = new GodownEntryItem(); + godownEntryItem1.setBatchNumber(batchNumber); + godownEntryItem1.setAmount(1000L); + godownEntryItem1.setCost(1.5); + godownEntryItem1.setDisposableGoodsID(dg.getId()); + godownEntryItem1.setManufacturer("广州白云山制药厂"); + godownEntryItem1.setSupplierName("广州捷康医疗"); + godownEntryItem1.setGodownEntry(entry); + godownEntryItem1.setExpDate(new Date()); + godownEntryItem1.setIdentification("i-001"); + entry.getItemsList().add(godownEntryItem1); + godownEntryManager.saveGodownEntry_TRANS_REQUIRED(entry, result); + + // 休眠1秒钟,让后台线程处理 + try { + Thread.sleep(1000); + } catch (Exception e) { + } + + DisposableGoodsStock goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "5ML"); + assertNotNull(goods); + //入库后,库存大于等于1000 + int goodsAmountBeforeOutStorage = goods.getAmount().intValue(); + assertEquals(true, goodsAmountBeforeOutStorage >= 1000); + DisposableGoodsBatchStock disposableGoodsBatchStock = diposableGoodBatchStockManager.getDisposableGoodsBatchStockByNameAndBatchNumber(warehouseID, "注射器", "5ML", batchNumber); + assertNotNull(disposableGoodsBatchStock); + //入库后,批次库存=1000 + assertEquals(1000, disposableGoodsBatchStock.getStorage().intValue()); + + disposableGoodsBatch = diposableGoodsManager.getDisposableGoodsBatchByBatchNumber(dg.getId(), batchNumber); assertNotNull(disposableGoodsBatch); GodownEntry entry2 = new GodownEntry(); entry2.setWarehouseID(warehouseID); entry2.setWarehouseName(warehouseName); GodownEntryItem godownEntryItem21 = new GodownEntryItem(); - godownEntryItem21.setBatchNumber("b-20140101"); + godownEntryItem21.setBatchNumber(batchNumber); godownEntryItem21.setAmount(1500L); godownEntryItem21.setCost(1.5); godownEntryItem21.setDisposableGoodsID(dg.getId()); - //godownEntryItem21.setDisposableGoodsStockID(goods.getId()); + godownEntryItem21.setDisposableGoodsStockID(goods.getId()); godownEntryItem21.setDisposableGoodsBatchID(disposableGoodsBatch.getId()); - //godownEntryItem21.setDisposableGoodsBatchStockID(disposableGoodsBatchStock.getId()); + godownEntryItem21.setDisposableGoodsBatchStockID(disposableGoodsBatchStock.getId()); godownEntryItem21.setManufacturer("广州白云山制药厂"); godownEntryItem21.setSupplierName("广州捷康医疗"); godownEntryItem21.setGodownEntry(entry2); godownEntryItem21.setExpDate(new Date()); entry2.getItemsList().add(godownEntryItem21); try { -// godownEntryManager.saveGodownOutEntry_TRANS_NEW(entry2, result); boolean needWriteBack = false; godownEntryManager.saveGodownOutEntry_TRANS_REQUIRED(entry2, result,needWriteBack); } catch (Exception e) { e.printStackTrace(); - throw new ExpectedException(); } -// goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "5ML"); -// assertNotNull(goods); -// assertEquals(1000, goods.getAmount().intValue()); + goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "5ML"); + assertNotNull(goods); + int goodsAmountAfterOutStorage = goods.getAmount().intValue(); + //库存数量小于出库数量,出库失败,库存没有扣除 + assertEquals(goodsAmountAfterOutStorage, goodsAmountBeforeOutStorage); } - @Test(expected = ExpectedException.class) +/* @Test(expected = ExpectedException.class) public void testOutStorageWhenStorageLessThanOutAmount_assert(){ try{ testOutStorageWhenStorageLessThanOutAmount(); @@ -664,38 +699,67 @@ }catch(ExpectedException e){ throw e; } - } - // 测试出库,库存数量大于发货数量,正常发货 - @Test(expected = ExpectedException.class) + }*/ + // 测试出库,库存数量大于出库数量,正常出库 + @Test public void testOutStorageWhenStorageGreaterThanOutAmount(){ initCSSDData(); Map result = new HashMap(); WareHouse wareHouse1 = wareHouseManager.getDefaultWareHouseByUnitCode(Constants.ORG_UNIT_CODE_CSSD); assertNotNull(wareHouse1); Long warehouseID = wareHouse1.getId(); String warehouseName = wareHouse1.getName(); - /*DisposableGoodsStock goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "5ML"); - assertNotNull(goods); - assertEquals(1000, goods.getAmount().intValue()); - DisposableGoodsBatchStock disposableGoodsBatchStock = diposableGoodBatchStockManager.getDisposableGoodsBatchStockByNameAndBatchNumber(warehouseID, "注射器", "5ML", "b-20140101"); - assertNotNull(disposableGoodsBatchStock); - assertEquals(1000, disposableGoodsBatchStock.getStorage().intValue());*/ + DisposableGoods dg = diposableGoodsManager.get("注射器", "5ML"); assertNotNull(dg); - DisposableGoodsBatch disposableGoodsBatch = diposableGoodsManager.getDisposableGoodsBatchByBatchNumber(dg.getId(), "b-20140101"); + + String batchNumber = "b-2025103102"; + DisposableGoodsBatch disposableGoodsBatch = diposableGoodsManager.getDisposableGoodsBatchByBatchNumber(dg.getId(), batchNumber); + //这个批次只用于当前测试用例 + assertEquals(true, disposableGoodsBatch == null); + + GodownEntry entry = new GodownEntry(); + entry.setWarehouseID(warehouseID); + entry.setWarehouseName(warehouseName); + GodownEntryItem godownEntryItem1 = new GodownEntryItem(); + godownEntryItem1.setBatchNumber(batchNumber); + godownEntryItem1.setAmount(1000L); + godownEntryItem1.setCost(1.5); + godownEntryItem1.setDisposableGoodsID(dg.getId()); + godownEntryItem1.setManufacturer("广州白云山制药厂"); + godownEntryItem1.setSupplierName("广州捷康医疗"); + godownEntryItem1.setGodownEntry(entry); + godownEntryItem1.setExpDate(new Date()); + godownEntryItem1.setIdentification("i-001"); + entry.getItemsList().add(godownEntryItem1); + godownEntryManager.saveGodownEntry_TRANS_REQUIRED(entry, result); + try { + Thread.sleep(1000); + } catch (Exception e) {} + + DisposableGoodsStock goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "5ML"); + assertNotNull(goods); + int goodsAmountBeforeOutStorage = goods.getAmount().intValue(); + //刚刚入库1000,库存大于等于1000 + assertEquals(true, goodsAmountBeforeOutStorage >= 1000); + DisposableGoodsBatchStock disposableGoodsBatchStock = diposableGoodBatchStockManager.getDisposableGoodsBatchStockByNameAndBatchNumber(warehouseID, "注射器", "5ML", batchNumber); + assertNotNull(disposableGoodsBatchStock); + //批次库存=1000 + assertEquals(1000, disposableGoodsBatchStock.getStorage().intValue()); + disposableGoodsBatch = diposableGoodsManager.getDisposableGoodsBatchByBatchNumber(dg.getId(), batchNumber); assertNotNull(disposableGoodsBatch); GodownEntry entry1 = new GodownEntry(); entry1.setWarehouseID(warehouseID); entry1.setWarehouseName(warehouseName); GodownEntryItem godownEntryItem1_1 = new GodownEntryItem(); - godownEntryItem1_1.setBatchNumber("b-20140101"); + godownEntryItem1_1.setBatchNumber(batchNumber); godownEntryItem1_1.setAmount(500L); godownEntryItem1_1.setCost(1.5); godownEntryItem1_1.setDisposableGoodsID(dg.getId()); -// godownEntryItem1_1.setDisposableGoodsStockID(goods.getId()); + godownEntryItem1_1.setDisposableGoodsStockID(goods.getId()); godownEntryItem1_1.setDisposableGoodsBatchID(disposableGoodsBatch.getId()); -// godownEntryItem1_1.setDisposableGoodsBatchStockID(disposableGoodsBatchStock.getId()); + godownEntryItem1_1.setDisposableGoodsBatchStockID(disposableGoodsBatchStock.getId()); godownEntryItem1_1.setManufacturer("广州白云山制药厂"); godownEntryItem1_1.setSupplierName("广州捷康医疗"); godownEntryItem1_1.setGodownEntry(entry1); @@ -715,10 +779,18 @@ } - /*goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "5ML"); + goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "5ML"); assertNotNull(goods); - assertEquals(500, goods.getAmount().intValue());*/ + int goodsAmountAfterOutStorage = goods.getAmount().intValue(); + //出库成功,库存扣除500 + assertEquals(500, goodsAmountBeforeOutStorage - goodsAmountAfterOutStorage); + disposableGoodsBatchStock = diposableGoodBatchStockManager.getDisposableGoodsBatchStockByNameAndBatchNumber(warehouseID, "注射器", "5ML", batchNumber); + objectDao.refresh(disposableGoodsBatchStock); + assertNotNull(disposableGoodsBatchStock); + //出库成功,批次库存剩余500 + assertEquals(500, disposableGoodsBatchStock.getStorage().longValue()); + } // 高强度并发测试,并且数据随机生成。TODO