Index: ssts-web/src/test/java/test/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManagerTests.java =================================================================== diff -u -r13035 -r13038 --- ssts-web/src/test/java/test/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManagerTests.java (.../DiposableGoodsManagerTests.java) (revision 13035) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManagerTests.java (.../DiposableGoodsManagerTests.java) (revision 13038) @@ -67,180 +67,168 @@ // 本测试用例的数据 // 规格1ml-500ml,500种注射器 - Set specifications = new HashSet(); - int minSpecification = 1; - int maxSpecification = 500; - for(int i=minSpecification;i goodsBatchs = new HashSet(); - for (int ib = 0; ib < curBatchCount; ++ib) { - DisposableGoodsBatchStock stock = new DisposableGoodsBatchStock(); - stock.setDiposableGoods(diposableGoods); -// stock.setType(BarcodeDevice.BARCODE_TYPE_DIPOSABLEGOODS); - String barcode = "010000900"; - String batchNumber = generateBatchNumber(batches); - stock.setBarcode(barcode); - stock.setBatchNumber(batchNumber); - // tock.setStorage(1000L); 最后计算 - // iden数量 - int indentCount = randomGenerateInt(minIdentificationCount, - maxIdentificationCount); - // 开始生成Identification - List identifications = new ArrayList(); - - for (int ii = 0; ii < indentCount; ++ii) { - IdentificationOfDisposableGoods ident = new IdentificationOfDisposableGoods(); - ident.setBatchStock(stock); - ident.setIdentification(ii + 1 + ""); - // 数量随机产生 - long amount = randomGenerateLong(minAmount, maxAmount); - ident.setAmount(amount); - // 价格随机产生 - Double cost = generateDouble(minCost, maxCost); - ident.setPrice(cost); - identifications.add(ident); - // - stock.setCost(cost); - diposableGoods.setReferencePrice(cost); - - String log = diposableGoods.getName() - + diposableGoods.getSpecification() + ",batchNumber=" - + batchNumber + ",ident=" + ident.getIdentification() - + ",Amount=" + ident.getAmount() + ",Price=" + ident.getPrice(); - addLog(log); - } - stock.setIdentifications(identifications); - goodsBatchs.add(stock); - } - diposableGoods.setGoodsBatchs(goodsBatchs); - //objectDao.saveOrUpdate(diposableGoods); - } +// Set specifications = new HashSet(); +// int minSpecification = 1; +// int maxSpecification = 500; +// for(int i=minSpecification;i goodsBatchs = new HashSet(); +// for (int ib = 0; ib < curBatchCount; ++ib) { +// DisposableGoodsBatchStock stock = new DisposableGoodsBatchStock(); +// stock.setDiposableGoods(diposableGoods); +//// stock.setType(BarcodeDevice.BARCODE_TYPE_DIPOSABLEGOODS); +// String barcode = "010000900"; +// String batchNumber = generateBatchNumber(batches); +// stock.setBarcode(barcode); +// stock.setBatchNumber(batchNumber); +// // tock.setStorage(1000L); 最后计算 +// // iden数量 +// int indentCount = randomGenerateInt(minIdentificationCount, +// maxIdentificationCount); +// // 开始生成Identification +// List identifications = new ArrayList(); +// +// for (int ii = 0; ii < indentCount; ++ii) { +// IdentificationOfDisposableGoods ident = new IdentificationOfDisposableGoods(); +// ident.setBatchStock(stock); +// ident.setIdentification(ii + 1 + ""); +// // 数量随机产生 +// long amount = randomGenerateLong(minAmount, maxAmount); +// ident.setAmount(amount); +// // 价格随机产生 +// Double cost = generateDouble(minCost, maxCost); +// ident.setPrice(cost); +// identifications.add(ident); +// // +// stock.setCost(cost); +// diposableGoods.setReferencePrice(cost); +// +// String log = diposableGoods.getName() +// + diposableGoods.getSpecification() + ",batchNumber=" +// + batchNumber + ",ident=" + ident.getIdentification() +// + ",Amount=" + ident.getAmount() + ",Price=" + ident.getPrice(); +// addLog(log); +// } +// stock.setIdentifications(identifications); +// goodsBatchs.add(stock); +// } +// diposableGoods.setGoodsBatchs(goodsBatchs); +// //objectDao.saveOrUpdate(diposableGoods); +// } } // 测试一次性物品入库,2次入库,批次号相同,但价格不同 @Test public void testAddDiposableGoodsToStorageWithSameBatchButDifferentPrice(){ initCSSDData(); WareHouse wareHouse1 = wareHouseManager.getDefaultWareHouseByUnitCode("testCSSD"); assertNotNull(wareHouse1); - DisposableGoodsStock goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "1ML"); - assertNull(goods); - DisposableGoodsStock diposableGoods = new DisposableGoodsStock(); - diposableGoods.setName("注射器"); - diposableGoods.setSpecification("1ML"); - diposableGoods.setType("注射器"); - diposableGoods.setSpelling(GB2Alpha.string2Alpha(diposableGoods - .getName())); - diposableGoods.setWbCode(GB2WB.getWBCode(diposableGoods.getName())); - diposableGoodsManager.saveOrUpdate(diposableGoods); + Long warehouseID = wareHouse1.getId(); + String warehouseName = wareHouse1.getName(); - goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "1ML"); - assertNotNull(goods); + DisposableGoods disposableGoods = diposableGoodsManager.getDisposableGoodsByName("注射器", "1ML"); + assertNull(disposableGoods); + disposableGoods = new DisposableGoods(); + disposableGoods.setName("注射器"); + disposableGoods.setSpecification("1ML"); + disposableGoods.setType("注射器"); + diposableGoodsManager.saveOrUpdate(disposableGoods); + assertNotNull(disposableGoods.getId()); - Set batchs = goods.getGoodsBatchs(); - assertNotNull(batchs); - assertEquals(0, batchs.size()); + DisposableGoodsStock disposableGoodsStock = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "1ML"); + assertNull(disposableGoodsStock); // 第一次入库,新批次 DisposableGoodsBatchStock disposableGoodsBatchStock = null; Map result = new HashMap(); - try { - GodownEntry entry = new GodownEntry(); - GodownEntryItem godownEntryItem = new GodownEntryItem(); - godownEntryItem.setBatchNumber("20150704"); - godownEntryItem.setAmount(100L); - godownEntryItem.setCost(1.6); - godownEntryItem.setDisposableGoodsStockID(goods.getId()); - godownEntryItem.setManufacturer("广州白云山制药厂"); - godownEntryItem.setSupplierName("广州捷康医疗"); - godownEntryItem.setGodownEntry(entry); - godownEntryItem.setExpDate(new Date()); - entry.getItemsList().add(godownEntryItem); - godownEntryManager.saveGodownEntry_TRANS_REQUIRED(entry, result); - - disposableGoodsBatchStock = diposableGoodBatchStockManager.getDiposableGoodBatchStock(goods.getId().toString(), "20150704"); -// disposableGoodsBatchStock = diposableGoodsManager.addDiposableGoodsToStorage( -// goods, 100, "20150704", -// 1.6, new Date(), "广州捷康医疗", "", "广州白云山制药厂", ""); - } catch (Exception e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } + GodownEntry entry1 = new GodownEntry(); + entry1.setWarehouseID(warehouseID); + entry1.setWarehouseName(warehouseName); + GodownEntryItem godownEntryItem1_1 = new GodownEntryItem(); + godownEntryItem1_1.setBatchNumber("20150704"); + godownEntryItem1_1.setAmount(100L); + godownEntryItem1_1.setCost(1.6); + godownEntryItem1_1.setDisposableGoodsID(disposableGoods.getId()); + godownEntryItem1_1.setManufacturer("广州白云山制药厂"); + godownEntryItem1_1.setSupplierName("广州捷康医疗"); + godownEntryItem1_1.setGodownEntry(entry1); + godownEntryItem1_1.setExpDate(new Date()); + entry1.getItemsList().add(godownEntryItem1_1); + godownEntryManager.saveGodownEntry_TRANS_REQUIRED(entry1, result); + disposableGoodsStock = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "1ML"); + assertNotNull(disposableGoodsStock); + + disposableGoodsBatchStock = diposableGoodBatchStockManager.getDiposableGoodBatchStock(disposableGoodsStock.getId().toString(), "20150704"); assertNotNull(disposableGoodsBatchStock); assertEquals(1.6, disposableGoodsBatchStock.getCost()); assertEquals(100, disposableGoodsBatchStock.getStorage().intValue()); - goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "1ML"); - batchs = goods.getGoodsBatchs(); + Set batchs = disposableGoodsStock.getGoodsBatchs(); assertNotNull(batchs); assertEquals(1, batchs.size()); - assertEquals(1.6, goods.getReferencePrice()); - assertEquals(100, goods.getAmount().intValue()); + assertEquals(1.6, disposableGoodsStock.getReferencePrice()); + assertEquals(100, disposableGoodsStock.getAmount().intValue()); List identifications = batchs.iterator().next().getIdentifications(); assertNotNull(identifications); assertEquals(1, identifications.size()); - + assertEquals(100, identifications.get(0).getAmount().intValue()); + assertEquals(1.6, identifications.get(0).getPrice()); // 第二次入库,同一个批次,但价格不同 - try { - GodownEntry entry = new GodownEntry(); - GodownEntryItem godownEntryItem = new GodownEntryItem(); - godownEntryItem.setBatchNumber("20150704"); - godownEntryItem.setAmount(200L); - godownEntryItem.setCost(1.71); - godownEntryItem.setDisposableGoodsStockID(goods.getId()); - godownEntryItem.setManufacturer("广州白云山制药厂"); - godownEntryItem.setSupplierName("广州捷康医疗"); - godownEntryItem.setGodownEntry(entry); - godownEntryItem.setExpDate(new Date()); - entry.getItemsList().add(godownEntryItem); - godownEntryManager.saveGodownEntry_TRANS_REQUIRED(entry, result); - - disposableGoodsBatchStock = diposableGoodBatchStockManager.getDiposableGoodBatchStock(goods.getId().toString(), "20150704"); -// disposableGoodsBatchStock = diposableGoodsManager.addDiposableGoodsToStorage( -// goods, 200, "20150704", -// 1.71, new Date(), "广州捷康医疗", "", "广州白云山制药厂", ""); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "1ML"); - assertEquals(1.71, goods.getReferencePrice()); - assertEquals(300, goods.getAmount().intValue()); + GodownEntry entry2 = new GodownEntry(); + entry2.setWarehouseID(warehouseID); + entry2.setWarehouseName(warehouseName); + GodownEntryItem godownEntryItem2_1 = new GodownEntryItem(); + godownEntryItem2_1.setBatchNumber("20150704"); + godownEntryItem2_1.setAmount(200L); + godownEntryItem2_1.setCost(1.71); + godownEntryItem2_1.setDisposableGoodsID(disposableGoods.getId()); + godownEntryItem2_1.setManufacturer("广州白云山制药厂"); + godownEntryItem2_1.setSupplierName("广州捷康医疗"); + godownEntryItem2_1.setGodownEntry(entry2); + godownEntryItem2_1.setExpDate(new Date()); + entry2.getItemsList().add(godownEntryItem2_1); + godownEntryManager.saveGodownEntry_TRANS_REQUIRED(entry2, result); - batchs = goods.getGoodsBatchs(); + disposableGoodsBatchStock = diposableGoodBatchStockManager.getDiposableGoodBatchStock(disposableGoodsStock.getId().toString(), "20150704"); + + disposableGoodsStock = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "1ML"); + assertEquals(1.71, disposableGoodsStock.getReferencePrice()); + assertEquals(300, disposableGoodsStock.getAmount().intValue()); + + batchs = disposableGoodsStock.getGoodsBatchs(); assertNotNull(batchs); assertEquals(1, batchs.size()); assertEquals(1.71, disposableGoodsBatchStock.getCost()); @@ -264,93 +252,84 @@ initCSSDData(); WareHouse wareHouse1 = wareHouseManager.getDefaultWareHouseByUnitCode("testCSSD"); assertNotNull(wareHouse1); - DisposableGoodsStock goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "1ML"); - assertNull(goods); - DisposableGoodsStock diposableGoods = new DisposableGoodsStock(); - diposableGoods.setName("注射器"); - diposableGoods.setSpecification("1ML"); - diposableGoods.setType("注射器"); - diposableGoods.setSpelling(GB2Alpha.string2Alpha(diposableGoods + Long warehouseID = wareHouse1.getId(); + String warehouseName = wareHouse1.getName(); + + DisposableGoods disposableGoods = diposableGoodsManager.getDisposableGoodsByName("注射器", "1ML"); + assertNull(disposableGoods); + disposableGoods = new DisposableGoods(); + disposableGoods.setName("注射器"); + disposableGoods.setSpecification("1ML"); + disposableGoods.setType("注射器"); + disposableGoods.setSpelling(GB2Alpha.string2Alpha(disposableGoods .getName())); - diposableGoods.setWbCode(GB2WB.getWBCode(diposableGoods.getName())); - objectDao.saveOrUpdate(diposableGoods); + disposableGoods.setWbCode(GB2WB.getWBCode(disposableGoods.getName())); + diposableGoodsManager.saveOrUpdate(disposableGoods); - goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "1ML"); - assertNotNull(goods); + disposableGoods = diposableGoodsManager.getDisposableGoodsByName("注射器", "1ML"); + assertNotNull(disposableGoods); + DisposableGoodsStock disposableGoodsStock = diposableGoodsManager.getDisposableGoodsStockByName(warehouseID, "注射器", "1ML"); + assertNull(disposableGoodsStock); - Set batchs = goods.getGoodsBatchs(); - assertNotNull(batchs); - assertEquals(0, batchs.size()); - Map result = new HashMap(); // 第一次入库,新批次 DisposableGoodsBatchStock disposableGoodsBatchStock = null; - try { - GodownEntry entry = new GodownEntry(); - GodownEntryItem godownEntryItem = new GodownEntryItem(); - godownEntryItem.setBatchNumber("20150704"); - godownEntryItem.setAmount(100L); - godownEntryItem.setCost(1.6); - godownEntryItem.setDisposableGoodsStockID(goods.getId()); - godownEntryItem.setManufacturer("广州白云山制药厂"); - godownEntryItem.setSupplierName("广州捷康医疗"); - godownEntryItem.setGodownEntry(entry); - godownEntryItem.setExpDate(new Date()); - entry.getItemsList().add(godownEntryItem); - godownEntryManager.saveGodownEntry_TRANS_REQUIRED(entry, result); - - disposableGoodsBatchStock = diposableGoodBatchStockManager.getDiposableGoodBatchStock(goods.getId().toString(), "20150704"); -// disposableGoodsBatchStock = diposableGoodsManager.addDiposableGoodsToStorage( -// goods, 100, "20150704", -// 1.6, new Date(), "广州捷康医疗", "", "广州白云山制药厂", ""); - } catch (Exception e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } + GodownEntry entry1 = new GodownEntry(); + entry1.setWarehouseID(warehouseID); + entry1.setWarehouseName(warehouseName); + GodownEntryItem godownEntryItem1_1 = new GodownEntryItem(); + godownEntryItem1_1.setBatchNumber("20150704"); + godownEntryItem1_1.setAmount(100L); + godownEntryItem1_1.setCost(1.6); + godownEntryItem1_1.setDisposableGoodsID(disposableGoods.getId()); + godownEntryItem1_1.setManufacturer("广州白云山制药厂"); + godownEntryItem1_1.setSupplierName("广州捷康医疗"); + godownEntryItem1_1.setGodownEntry(entry1); + godownEntryItem1_1.setExpDate(new Date()); + entry1.getItemsList().add(godownEntryItem1_1); + godownEntryManager.saveGodownEntry_TRANS_REQUIRED(entry1, result); + disposableGoodsStock = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "1ML"); + disposableGoodsBatchStock = diposableGoodBatchStockManager.getDiposableGoodBatchStock(disposableGoodsStock.getId().toString(), "20150704"); + assertNotNull(disposableGoodsBatchStock); - goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "1ML"); - batchs = goods.getGoodsBatchs(); + disposableGoodsStock = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "1ML"); + Set batchs = disposableGoodsStock.getGoodsBatchs(); assertNotNull(batchs); assertEquals(1, batchs.size()); - assertEquals(1.6, goods.getReferencePrice()); - assertEquals(100, goods.getAmount().intValue()); + assertEquals(1.6, disposableGoodsStock.getReferencePrice()); + assertEquals(100, disposableGoodsStock.getAmount().intValue()); List identifications = batchs.iterator().next().getIdentifications(); assertNotNull(identifications); assertEquals(1, identifications.size()); // 第二次入库,同一个批次,价格相同 - try { - GodownEntry entry = new GodownEntry(); - GodownEntryItem godownEntryItem = new GodownEntryItem(); - godownEntryItem.setBatchNumber("20150704"); - godownEntryItem.setAmount(200L); - godownEntryItem.setCost(1.6); - godownEntryItem.setDisposableGoodsStockID(goods.getId()); - godownEntryItem.setManufacturer("广州白云山制药厂"); - godownEntryItem.setSupplierName("广州捷康医疗"); - godownEntryItem.setGodownEntry(entry); - godownEntryItem.setExpDate(new Date()); - entry.getItemsList().add(godownEntryItem); - godownEntryManager.saveGodownEntry_TRANS_REQUIRED(entry, result); - - disposableGoodsBatchStock = diposableGoodBatchStockManager.getDiposableGoodBatchStock(goods.getId().toString(), "20150704"); -// disposableGoodsBatchStock = diposableGoodsManager.addDiposableGoodsToStorage( -// goods, 200, "20150704", -// 1.6, new Date(), "广州捷康医疗", "", "广州白云山制药厂", ""); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "1ML"); - assertEquals(1.6, goods.getReferencePrice()); - assertEquals(300, goods.getAmount().intValue()); + GodownEntry entry2 = new GodownEntry(); + entry2.setWarehouseID(warehouseID); + entry2.setWarehouseName(warehouseName); + GodownEntryItem godownEntryItem2_1 = new GodownEntryItem(); + godownEntryItem2_1.setBatchNumber("20150704"); + godownEntryItem2_1.setAmount(200L); + godownEntryItem2_1.setCost(1.6); + godownEntryItem2_1.setDisposableGoodsID(disposableGoods.getId()); + godownEntryItem2_1.setManufacturer("广州白云山制药厂"); + godownEntryItem2_1.setSupplierName("广州捷康医疗"); + godownEntryItem2_1.setGodownEntry(entry2); + godownEntryItem2_1.setExpDate(new Date()); + entry2.getItemsList().add(godownEntryItem2_1); + godownEntryManager.saveGodownEntry_TRANS_REQUIRED(entry2, result); - batchs = goods.getGoodsBatchs(); + disposableGoodsStock = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "1ML"); + disposableGoodsBatchStock = diposableGoodBatchStockManager.getDiposableGoodBatchStock(disposableGoodsStock.getId().toString(), "20150704"); + + assertEquals(1.6, disposableGoodsStock.getReferencePrice()); + assertEquals(300, disposableGoodsStock.getAmount().intValue()); + + batchs = disposableGoodsStock.getGoodsBatchs(); assertNotNull(batchs); assertEquals(1, batchs.size()); assertEquals(1.6, disposableGoodsBatchStock.getCost()); @@ -492,9 +471,9 @@ assertEquals(200, identifications.get(0).getAmount().intValue()); } - // 测试出库,库存数量小于发货数量,不够出库,执行后库存应保持不变 + // 测试出库,库存数量小于出库数量,不够出库,执行后库存应保持不变 @Test - public void testOutStorageWhenStorageLessThanInvoiceAmount(){ + public void testOutStorageWhenStorageLessThanOutAmount(){ initCSSDData(); Map result = new HashMap(); WareHouse wareHouse1 = wareHouseManager.getDefaultWareHouseByUnitCode("testCSSD"); @@ -514,7 +493,7 @@ GodownEntryItem godownEntryItem21 = new GodownEntryItem(); godownEntryItem21.setBatchNumber("b-20140101"); godownEntryItem21.setAmount(1500L); - godownEntryItem21.setCost(1.71); + godownEntryItem21.setCost(1.5); godownEntryItem21.setDisposableGoodsID(goods.getDisposableGoodsID()); godownEntryItem21.setDisposableGoodsStockID(goods.getId()); godownEntryItem21.setDisposableGoodsBatchID(disposableGoodsBatchStock.getDisposableGoodsBatchID()); @@ -524,7 +503,11 @@ godownEntryItem21.setGodownEntry(entry2); godownEntryItem21.setExpDate(new Date()); entry2.getItemsList().add(godownEntryItem21); - godownEntryManager.saveGodownOutEntry_TRANS_REQUIRED(entry2, result); + try { + godownEntryManager.saveGodownOutEntry_TRANS_NEW(entry2, result); + } catch (Exception e) { + e.printStackTrace(); + } goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "5ML"); assertNotNull(goods); @@ -533,18 +516,38 @@ // 测试出库,库存数量大于发货数量,正常发货 @Test - public void testOutStorageWhenStorageGreaterThanInvoiceAmount(){ + public void testOutStorageWhenStorageGreaterThanOutAmount(){ initCSSDData(); + Map result = new HashMap(); WareHouse wareHouse1 = wareHouseManager.getDefaultWareHouseByUnitCode("testCSSD"); assertNotNull(wareHouse1); - // 5ML 注射器 发货 + 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()); + GodownEntry entry1 = new GodownEntry(); + entry1.setWarehouseID(warehouseID); + entry1.setWarehouseName(warehouseName); + GodownEntryItem godownEntryItem1_1 = new GodownEntryItem(); + godownEntryItem1_1.setBatchNumber("b-20140101"); + godownEntryItem1_1.setAmount(500L); + godownEntryItem1_1.setCost(1.5); + godownEntryItem1_1.setDisposableGoodsID(goods.getDisposableGoodsID()); + godownEntryItem1_1.setDisposableGoodsStockID(goods.getId()); + godownEntryItem1_1.setDisposableGoodsBatchID(disposableGoodsBatchStock.getDisposableGoodsBatchID()); + godownEntryItem1_1.setDisposableGoodsBatchStockID(disposableGoodsBatchStock.getId()); + godownEntryItem1_1.setManufacturer("广州白云山制药厂"); + godownEntryItem1_1.setSupplierName("广州捷康医疗"); + godownEntryItem1_1.setGodownEntry(entry1); + godownEntryItem1_1.setExpDate(new Date()); + entry1.getItemsList().add(godownEntryItem1_1); try { - //diposableGoodsManager.outStorage(goods, "b-20140101",Long.valueOf(500) ); -// diposableGoodsManager.outStorage(goods, "b-20140101", false, 0, false, 500); + godownEntryManager.saveGodownOutEntry_TRANS_NEW(entry1, result); } catch (Exception e) { e.printStackTrace(); } @@ -553,368 +556,73 @@ assertNotNull(goods); assertEquals(500, goods.getAmount().intValue()); + GodownEntry entry2 = new GodownEntry(); + entry2.setWarehouseID(warehouseID); + entry2.setWarehouseName(warehouseName); + GodownEntryItem godownEntryItem2_1 = new GodownEntryItem(); + godownEntryItem2_1.setBatchNumber("b-20000101"); + godownEntryItem2_1.setAmount(600L); + godownEntryItem2_1.setCost(1.5); + godownEntryItem2_1.setDisposableGoodsID(goods.getDisposableGoodsID()); + godownEntryItem2_1.setDisposableGoodsStockID(goods.getId()); + godownEntryItem2_1.setDisposableGoodsBatchID(disposableGoodsBatchStock.getDisposableGoodsBatchID()); + godownEntryItem2_1.setDisposableGoodsBatchStockID(disposableGoodsBatchStock.getId()); + godownEntryItem2_1.setManufacturer("广州白云山制药厂"); + godownEntryItem2_1.setSupplierName("广州捷康医疗"); + godownEntryItem2_1.setGodownEntry(entry2); + godownEntryItem2_1.setExpDate(new Date()); + entry2.getItemsList().add(godownEntryItem2_1); try { - //diposableGoodsManager.outStorage(goods, "b-20140101", Long.valueOf(100)); -// diposableGoodsManager.outStorage(goods, "b-20140101", false, 0, false, 100); + godownEntryManager.saveGodownOutEntry_TRANS_NEW(entry2, result); } catch (Exception e) { e.printStackTrace(); } goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "5ML"); + objectDao.getHibernateSession().refresh(goods); assertNotNull(goods); - assertEquals(400, goods.getAmount().intValue()); + assertEquals(500, goods.getAmount().intValue()); - // 指定不存在的批次号发货 - try { - //diposableGoodsManager.outStorage(goods, "b-20000101", Long.valueOf(100)); -// diposableGoodsManager.outStorage(goods, "b-20000101", false, 0, false, 100); - } catch (Exception e) { - e.printStackTrace(); - } - - goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "5ML"); - assertNotNull(goods); - assertEquals(400, goods.getAmount().intValue()); - - // 10ML 注射器发货 - - } - // 测试出库,不限制批次号 - @Test - public void testOutStorageIgnoreBatchNumber2() { - initCSSDData(); - WareHouse wareHouse1 = wareHouseManager.getDefaultWareHouseByUnitCode("testCSSD"); - assertNotNull(wareHouse1); - DisposableGoodsStock goods = null; - DisposableGoodsBatchStock stock = null; - // 开始10ml注射器测试 - goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "10ML"); - assertNotNull(goods); - assertEquals(2000, goods.getAmount().intValue()); - - try { - // 不存在的批次,存在的价格,应该从1.3里面出库 -// diposableGoodsManager.outStorage(goods, "xxxx", false, 1.3, false, -// 500); - - } catch (Exception e) { - e.printStackTrace(); - } - - goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "10ML"); - assertNotNull(goods); - assertEquals(1500, goods.getAmount().intValue()); - // 减少的应该是1.3的ident - IdentificationOfDisposableGoods ident = identificationOfDiposableGoodsManager - .getIdentificationOfDiposableGoodsByIdentification(wareHouse1.getId(),"注射器", - "10ML", "b-20140101", "i-001"); - assertNotNull(ident); - assertEquals(1000, ident.getAmount().intValue()); - - // 继续出库不同价格的 - try { - // 不存在的批次,存在的价格,应该从1.3里面出库 -// diposableGoodsManager.outStorage(goods, "xxxx", false, 1.4, false, -// 300); - - } catch (Exception e) { - e.printStackTrace(); - } - // 结果 - goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "10ML"); - assertNotNull(goods); - assertEquals(1200, goods.getAmount().intValue()); - // 减少的应该是1.4的ident - ident = identificationOfDiposableGoodsManager - .getIdentificationOfDiposableGoodsByIdentification(wareHouse1.getId(),"注射器", - "10ML", "b-20140101", "i-002"); - assertNotNull(ident); - assertEquals(200, ident.getAmount().intValue()); - - // 继续出库10ML注射器,将剩下的库存出完。 - try { - // 不存在的批次,存在的价格,应该从1.3里面出库 -// diposableGoodsManager.outStorage(goods, "xxxx", false, 1.4, false, -// 1200); - - } catch (Exception e) { - e.printStackTrace(); - } - // 库存应该变为0 - goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "10ML"); - assertNotNull(goods); - assertEquals(0, goods.getAmount().intValue()); - // 开始纱块测试 - goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"纱块", "6*8"); - assertNotNull(goods); - assertEquals(2000, goods.getAmount().intValue()); - // 出库b-20140101批次的,但是价格不对,应该也能出 - try { -// diposableGoodsManager.outStorage(goods, "b-20140101", false, -// 101010101.00, false, 500); - - } catch (Exception e) { - e.printStackTrace(); - } - // 应该剩余1500,b-20140101剩余1000 - goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"纱块", "6*8"); - assertNotNull(goods); - assertEquals(1500, goods.getAmount().intValue()); - // 减少的应该是b-20140101批次 - stock = diposableGoodBatchStockManager.getDiposableGoodBatchStock(goods - .getId().toString(), "b-20140101"); - assertNotNull(stock); - assertEquals(1000, stock.getStorage().intValue()); - // 空的批次,但是指定价格,应该也能出 - try { -// diposableGoodsManager.outStorage(goods, "", false, 1.4, false, 300); - - } catch (Exception e) { - e.printStackTrace(); - } - // 应该剩余1500,b-20140202剩余200 - goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"纱块", "6*8"); - assertNotNull(goods); - assertEquals(1200, goods.getAmount().intValue()); - // - stock = diposableGoodBatchStockManager.getDiposableGoodBatchStock(goods - .getId().toString(), "b-20140202"); - assertNotNull(stock); - assertEquals(200, stock.getStorage().intValue()); - // 空的批次,但是指定价格,优先从该价格的出 - try { -// diposableGoodsManager.outStorage(goods, "", false, 1.4, false, 500); - - } catch (Exception e) { - e.printStackTrace(); - } - // 应该剩余700,b-20140201剩余700,b-20140202剩余0 - goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"纱块", "6*8"); - assertNotNull(goods); - assertEquals(700, goods.getAmount().intValue()); - - stock = diposableGoodBatchStockManager.getDiposableGoodBatchStock(goods - .getId().toString(), "b-20140101"); - assertNotNull(stock); - assertEquals(700, stock.getStorage().intValue()); - - stock = diposableGoodBatchStockManager.getDiposableGoodBatchStock(goods - .getId().toString(), "b-20140202"); - assertNotNull(stock); - assertEquals(0, stock.getStorage().intValue()); - } + // 高强度并发测试,并且数据随机生成。TODO // 测试出库,不限制批次号 - @Test - public void testOutStorageIgnoreBatchNumber(){ - initCSSDData(); - WareHouse wareHouse1 = wareHouseManager.getDefaultWareHouseByUnitCode("testCSSD"); - assertNotNull(wareHouse1); - DisposableGoodsBatchStock stock = null; - DisposableGoodsStock goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "5ML"); - assertNotNull(goods); - assertEquals(1000, goods.getAmount().intValue()); - Map result = new HashMap(); - try { - stock = diposableGoodBatchStockManager.getDiposableGoodBatchStock(goods - .getId().toString(), "b-20140101"); - assertNotNull(stock); - GodownEntry entry = new GodownEntry(); - GodownEntryItem godownEntryItem = new GodownEntryItem(); - godownEntryItem.setBatchNumber("b-20140101"); -// godownEntryItem.setDisposableGoodsBatchStockID(stock.getId()); - godownEntryItem.setAmount(1500L); - godownEntryItem.setCost(1.5); - godownEntryItem.setDisposableGoodsStockID(goods.getId()); - godownEntryItem.setManufacturer("广州白云山制药厂"); - godownEntryItem.setSupplierName("广州捷康医疗"); - godownEntryItem.setGodownEntry(entry); - godownEntryItem.setExpDate(new Date()); - entry.getItemsList().add(godownEntryItem); - godownEntryManager.saveGodownOutEntry_TRANS_REQUIRED(entry, result); -// godownEntryManager.saveGodownOutEntry_TRANS_NEW(entry, result); - -// diposableGoodsManager.outStorage(goods , "b-20140101", -// false, 1.5, false,1500); - - } catch (Exception e) { - e.printStackTrace(); - } - - goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "5ML"); - objectDao.getHibernateSession().refresh(goods); - assertNotNull(goods); - assertEquals(1000, goods.getAmount().intValue()); - // 出库数量大于库存,出库失败,物品数量不变 - try { - stock = diposableGoodBatchStockManager.getDiposableGoodBatchStock(goods - .getId().toString(), "b-20140101"); - assertNotNull(stock); - GodownEntry entry = new GodownEntry(); - GodownEntryItem godownEntryItem = new GodownEntryItem(); - godownEntryItem.setBatchNumber("b-20140101"); - godownEntryItem.setDisposableGoodsBatchStockID(stock.getId()); - godownEntryItem.setAmount(1000L); - godownEntryItem.setCost(1.5); - godownEntryItem.setDisposableGoodsStockID(goods.getId()); - godownEntryItem.setManufacturer("广州白云山制药厂"); - godownEntryItem.setSupplierName("广州捷康医疗"); - godownEntryItem.setGodownEntry(entry); - godownEntryItem.setExpDate(new Date()); - entry.getItemsList().add(godownEntryItem); - godownEntryManager.saveGodownOutEntry_TRANS_REQUIRED(entry, result); -// diposableGoodsManager.outStorage(goods , "b-20140101", -// false, 1.5, false,1000); - - } catch (Exception e) { - e.printStackTrace(); - } - // 出库数量等于库存,剩余库存应变为0 - goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"注射器", "5ML"); - assertNotNull(goods); - assertEquals(0, goods.getAmount().intValue()); - - goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"纱块", "6*8"); - assertNotNull(goods); - assertEquals(2000, goods.getAmount().intValue()); - - try { - stock = diposableGoodBatchStockManager.getDiposableGoodBatchStock(goods - .getId().toString(), "b-20140101"); - assertNotNull(stock); - GodownEntry entry = new GodownEntry(); - GodownEntryItem godownEntryItem = new GodownEntryItem(); -// godownEntryItem.setBatchNumber("b-20150101"); - godownEntryItem.setDisposableGoodsBatchStockID(stock.getId()); - godownEntryItem.setAmount(1000L); - godownEntryItem.setCost(1.4); - godownEntryItem.setDisposableGoodsStockID(goods.getId()); - godownEntryItem.setManufacturer("广州白云山制药厂"); - godownEntryItem.setSupplierName("广州捷康医疗"); - godownEntryItem.setGodownEntry(entry); - godownEntryItem.setExpDate(new Date()); - entry.getItemsList().add(godownEntryItem); - godownEntryManager.saveGodownOutEntry_TRANS_REQUIRED(entry, result); -// diposableGoodsManager.outStorage(goods , "b-20150101", -// false, 1.4, false,1000); - - } catch (Exception e) { - e.printStackTrace(); - } - // 库存2000,出库1000后,库存应该变为1000. - goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"纱块", "6*8"); - assertNotNull(goods); - assertEquals(1000, goods.getAmount().intValue()); - - try { -// diposableGoodsManager.outStorage(goods , "b-20150101", -// false, 1.4, false,300); - - } catch (Exception e) { - e.printStackTrace(); - } - - goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"纱块", "6*8"); - assertNotNull(goods); - assertEquals(700, goods.getAmount().intValue()); - - try { - stock = diposableGoodBatchStockManager.getDiposableGoodBatchStock(goods - .getId().toString(), "b-20150101"); - assertNotNull(stock); - GodownEntry entry = new GodownEntry(); - GodownEntryItem godownEntryItem = new GodownEntryItem(); -// godownEntryItem.setBatchNumber("b-20150101"); - godownEntryItem.setDisposableGoodsBatchStockID(stock.getId()); - godownEntryItem.setAmount(3000L); - godownEntryItem.setCost(1.4); - godownEntryItem.setDisposableGoodsStockID(goods.getId()); - godownEntryItem.setManufacturer("广州白云山制药厂"); - godownEntryItem.setSupplierName("广州捷康医疗"); - godownEntryItem.setGodownEntry(entry); - godownEntryItem.setExpDate(new Date()); - entry.getItemsList().add(godownEntryItem); - godownEntryManager.saveGodownOutEntry_TRANS_REQUIRED(entry, result); -// diposableGoodsManager.outStorage(goods , "b-20150101", -// false, 1.4, false,3000); - - } catch (Exception e) { - e.printStackTrace(); - } - - goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"纱块", "6*8"); - assertNotNull(goods); - assertEquals(700, goods.getAmount().intValue()); - - try { - stock = diposableGoodBatchStockManager.getDiposableGoodBatchStock(goods - .getId().toString(), "b-20150101"); - assertNotNull(stock); - GodownEntry entry = new GodownEntry(); - GodownEntryItem godownEntryItem = new GodownEntryItem(); -// godownEntryItem.setBatchNumber("b-20150101"); - godownEntryItem.setDisposableGoodsBatchStockID(stock.getId()); - godownEntryItem.setAmount(700L); - godownEntryItem.setCost(1.4); - godownEntryItem.setDisposableGoodsStockID(goods.getId()); - godownEntryItem.setManufacturer("广州白云山制药厂"); - godownEntryItem.setSupplierName("广州捷康医疗"); - godownEntryItem.setGodownEntry(entry); - godownEntryItem.setExpDate(new Date()); - entry.getItemsList().add(godownEntryItem); - godownEntryManager.saveGodownOutEntry_TRANS_REQUIRED(entry, result); -// diposableGoodsManager.outStorage(goods , "b-20150101", -// false, 1.4, false,700); - - } catch (Exception e) { - e.printStackTrace(); - } - - goods = diposableGoodsManager.getDisposableGoodsStockByName(wareHouse1.getId(),"纱块", "6*8"); - assertNotNull(goods); - assertEquals(0, goods.getAmount().intValue()); - - - } - // 高强度并发测试,并且数据随机生成。 - // 测试出库,不限制批次号 - @Test - public void testOutStorageConcurrency() { - // 初始化数据 - - initCSSDData(); - - int testThreadCount = 200; - List threads = new ArrayList(); - for (int i = 0; i < testThreadCount; ++i) { - Runnable thread = new Runnable() { - public void run() { - ; - } - }; - threads.add(thread); - } - // 写日志文件 - FileWriter fileWriter = null; - try { - fileWriter = new FileWriter("C:/testLog.txt"); - fileWriter.write(logs.toString()); - fileWriter.close(); - } catch (IOException e1) { - e1.printStackTrace(); - } finally { - if (fileWriter != null) { - try { - fileWriter.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - } - // TODO 测试完成之后根据日志校验数据完整性。 - - } +// @Test +// public void testOutStorageConcurrency() { +// // 初始化数据 +// +// initCSSDData(); +// +// int testThreadCount = 200; +// List threads = new ArrayList(); +// for (int i = 0; i < testThreadCount; ++i) { +// Runnable thread = new Runnable() { +// public void run() { +// ; +// } +// }; +// threads.add(thread); +// } +// // 写日志文件 +// FileWriter fileWriter = null; +// try { +// fileWriter = new FileWriter("C:/testLog.txt"); +// fileWriter.write(logs.toString()); +// fileWriter.close(); +// } catch (IOException e1) { +// e1.printStackTrace(); +// } finally { +// if (fileWriter != null) { +// try { +// fileWriter.close(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } +// // TODO 测试完成之后根据日志校验数据完整性。 +// +// } // 测试一次性物品入库,2次入库,批次号相同,但价格不同 @Test