Index: ssts-web/src/test/java/test/forgon/disinfectsystem/material/service/MaterialEntryManagerTests.java =================================================================== diff -u -r19186 -r19233 --- ssts-web/src/test/java/test/forgon/disinfectsystem/material/service/MaterialEntryManagerTests.java (.../MaterialEntryManagerTests.java) (revision 19186) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/material/service/MaterialEntryManagerTests.java (.../MaterialEntryManagerTests.java) (revision 19233) @@ -229,7 +229,7 @@ assertEquals(totalPrice, dbMaterialEntry.getTotalPrice()); } /** - * 盘点断言 + * 盘点断言(盘盈) */ public void takeStockAssertion(){ List inventoryItems = inventoryRecordManager.getAllInventoryItem(recordId()); @@ -264,7 +264,7 @@ GoodsStockInfo gsb = findGoodsStockInfo(materialStockBefore,info);//盘点前材料的库存信息 assertNotNull(gsb); assertNotNull(gsa); - amount = MathTools.add(gsb.getAmount(), gsa.getAmount()).intValue();//盘点材料库存前后总数量 + amount = MathTools.add(gsb.getAmount(), gsa.getAmount()).intValue();//盘点材料库存前后总数量(盘盈) for(InventoryItem info1 : inventoryItems){ if(info1.getPrice().equals(infoPrice)){ continue; @@ -281,11 +281,89 @@ } /** - * 盘点测试(材料盘盈测试,盘亏后期补上) + * 盘点断言(盘亏) + */ + public void takeStockAssertions(){ + List inventoryItems = inventoryRecordManager.getAllInventoryItem(recordId()); + assertNotNull(inventoryItems); + Integer storageDifference = null; + Double infoPrice = null ;//用来判断什么时候退出循环 + Integer storage = null; + Double price = null; + for(InventoryItem item : inventoryItems){ + storage = item.getStorage(); + price = item.getPrice(); + for(GoodsStockInfo goods : materialStockBefore){ + if(goods.getPrice().equals(infoPrice)){ + continue; + } + storageDifference = 0 - MathTools.sub( goods.getAmount(),amount).intValue();//盘点差值 + assertEquals(item.getAmount(),amount);//对比盘点的数量是否一致 + assertEquals(storage,goods.getAmount());//对比账面数量和入库数量 + assertEquals(item.getStorageDifference(),storageDifference);//对比盘点差值 + assertEquals(price,goods.getPrice());//物品价格是否一致 + assertEquals(item.getWareHouseId(),wareHouse.getId());//仓库Id是否一致 + assertEquals(item.getWareHouseName(),wareHouse.getName());//仓库名称是否一致 + infoPrice = goods.getPrice(); + break; + } + } + List currentStock = getMaterialStocks(); + MaterialEntry dbMaterialEntry = materialEntryManager.getFirst("subType","盘亏出库");//盘盈生成的盘盈入库信息 + Double totalPrice = 0.0; + GoodsStockInfo gsa = currentStock.get(currentStock.size()-2);//盘点后材料的库存信息 + for(MaterialItemInfo info : items){ + GoodsStockInfo gsb = findGoodsStockInfo(materialStockBefore,info);//盘点前材料的库存信息 + assertNotNull(gsb); + assertNotNull(gsa); + for(InventoryItem info1 : inventoryItems){ + if(info1.getPrice().equals(infoPrice)){ + continue; + } + assertEquals(info1.getAmount(),gsa.getAmount());//对比盘点材料库存前后总数量和盘点数量是否一致 + infoPrice=info1.getPrice(); + totalPrice += MathTools.mul(info1.getPrice(),-info1.getStorageDifference()).doubleValue(); + gsa = currentStock.get(currentStock.size()-1); + break; + } + + } + assertEquals(totalPrice, dbMaterialEntry.getTotalPrice());//对比盘点生成的盘亏出库单总价格是否和盘点信息总价格一致 + + } + /** + * 盘点测试(材料盘亏测试) * @throws Exception */ @Test @Rollback(value=false) + public void testSaveInventoryRecords() throws Exception{ + prepare(); + //2.添加材料 + testSaveMterialDefinitions(); + //3.准备材料 + initMaterial(); + //4.准备入库单 + buildMaterialEntry(true); + //5.保存入库单 + materialEntryManager.saveMaterialEntry((MaterialEntry)BeanUtilsBean2.getInstance().cloneBean(materialEntry), buildItemsJsonStr(),false); + //6.断言 + assertion(); + //7.记录盘点前库存数量 + materialStockBefore = getMaterialStocks(); + //8.添加盘点记录和详情 + inventoryRecordManager.addInventoryRecord(initInventoryJson()); + //9.修改物品库存生成盘亏单 + inventoryRecordManager.updateGoodsStock(recordId(),itemJson(),"material");//material材料disposableGoods一次性物品 + //10.断言 + takeStockAssertions(); + } + /** + * 盘点测试(材料盘盈测试) + * @throws Exception + */ + @Test + @Rollback(value=false) public void testSaveInventoryRecord() throws Exception{ prepare(); //2.添加材料 @@ -302,13 +380,13 @@ materialStockBefore = getMaterialStocks(); //8.添加盘点记录和详情 inventoryRecordManager.addInventoryRecord(initInventoryJson()); - //9.修改物品库存生成盘盈盘亏单 + //9.修改物品库存生成盘盈单 inventoryRecordManager.updateGoodsStock(recordId(),itemJson(),"material");//material材料disposableGoods一次性物品 //10.断言 takeStockAssertion(); } /** - * 需要盘点的材料 + * 需要盘盈的材料 */ public void testSaveMterialDefinition() { MaterialDefinition md = new MaterialDefinition(); @@ -329,6 +407,27 @@ materialDefinitionManager.save(md1); } /** + * 需要盘亏的材料 + */ + public void testSaveMterialDefinitions() { + MaterialDefinition md = new MaterialDefinition(); + md.setName("Test手术夹"); + md.setType("金属"); + md.setGoodsType(MaterialDefinition.TYPE_MATERIALGOODS); + md.setIsForeignMaterial("否"); + md.setDisable("否"); + md.setIsMonthCheck("是"); + materialDefinitionManager.save(md); + MaterialDefinition md1 = new MaterialDefinition(); + md1.setName("Test手术锤"); + md1.setType("金属"); + md1.setGoodsType(MaterialDefinition.TYPE_MATERIALGOODS); + md1.setIsForeignMaterial("否"); + md1.setDisable("否"); + md1.setIsMonthCheck("是"); + materialDefinitionManager.save(md1); + } + /** * 将InventoryRecordInfo信息转换为JsonObject * @return */ @@ -376,6 +475,24 @@ MaterialItemInfo info2 = new MaterialItemInfo(md2.getId(),100,60.8); items.add(info2); } + /** + * 准备盘点入库材料 + */ + private void initMaterial(){ + items.clear(); + MaterialDefinition md = materialDefinitionManager.getMaterialDefinitionByName("Test手术夹", null); + assertNotNull(md); + materialDefinitionIds.add(md.getId()); + MaterialItemInfo info = new MaterialItemInfo(md.getId(),1500,50.8); + items.add(info); + + MaterialDefinition md2 = materialDefinitionManager.getMaterialDefinitionByName("Test手术锤", null); + assertNotNull(md2); + materialDefinitionIds.add(md2.getId()); + + MaterialItemInfo info2 = new MaterialItemInfo(md2.getId(),1500,60.8); + items.add(info2); + } /** *获取需要盘点的盘点记录单Id *测试用例,每次只会在InventoryRecord里创建一条记录,所以这么查