Index: ssts-web/src/test/java/test/forgon/disinfectsystem/invoicemanager/service/TestPDATousseInvoiceManager.java =================================================================== diff -u -r16742 -r16747 --- ssts-web/src/test/java/test/forgon/disinfectsystem/invoicemanager/service/TestPDATousseInvoiceManager.java (.../TestPDATousseInvoiceManager.java) (revision 16742) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/invoicemanager/service/TestPDATousseInvoiceManager.java (.../TestPDATousseInvoiceManager.java) (revision 16747) @@ -28,9 +28,6 @@ import com.forgon.tools.db.DatabaseUtil; public class TestPDATousseInvoiceManager extends AbstractCSSDTest { - - private static final String testAll = "TESTALL"; - private static final String testPart = "TESTPART"; private String [] barcodeArray1 = {"201410260001","201410260002","201410260003"};//普通器械包条码 /** @@ -81,227 +78,100 @@ private void createTousseInstanceAndUpdateStock(){ createSimpleTousseInstanceByParam(barcodeArray1, "Test开胸包", BarcodeDevice.BARCODE_TYPE_PACKAGE, Constants.ORG_UNIT_NAME_DISINFECT, Constants.ORG_UNIT_CODE_DISINFECT, 3.14); } - - private void sendOutTousseAssertment(String jsonStr,String type){ - - prepareData(); - //浮动价格 - double tousseFluctionPrice = supplyRoomConfigManager.getTousseFluctuationPercent(); - //发货前的器械包二级库存 - DepartmentStock departmentStock = departmentStockManager.getByDepartCodingAndTousseName(clinicOrgUnitCode, "Test开胸包"); - int departmentStockBeforeInvoice = 0; - if(departmentStock != null){ - departmentStockBeforeInvoice = departmentStock.getAmount(); - } - //发货前的库存量 - TousseStock stock_beforeInvoce = tousseStockManager.getTousseStockByTousseName("Test开胸包"); - int stockBeforeInvoice = 0; - if(stock_beforeInvoce != null){ - stockBeforeInvoice = stock_beforeInvoce.getTousseAmount(); - assertEquals(3, stockBeforeInvoice); - } - - webServiceManager.submitInvoicePlans(jsonStr); - - //发货单 - Invoice invoice = (Invoice)objectDao.getByProperty(Invoice.class.getSimpleName(), "invoicePlan.serialNumber", "2014021100001"); - - //发货后的库存量 - TousseStock stock_afterInvoice = tousseStockManager.getTousseStockByTousseName("Test开胸包"); - objectDao.getHibernateSession().refresh(stock_afterInvoice); - //发货后的部门二级库存量 - DepartmentStock departmentStock2 = departmentStockManager.getByDepartCodingAndTousseName(clinicOrgUnitCode, "Test开胸包"); - - //测试全部发货 - if(type.equals(testAll)){ - //断言发货单关联的包实例为3个 - assertEquals(3 , invoice.getTousseInstances(objectDao).size()); - - //断言器械包状态为已发货 - for (String barcode : barcodeArray1) { - TousseInstance tousseInstance = tousseInstanceManager.getTousseInstanceByBarcode(barcode); - assertEquals(tousseInstance.getStatus(), TousseInstance.STATUS_SHIPPED); - } - //断言发货后的库存量与发货前的库存量相同 - if(stock_afterInvoice !=null){ - assertEquals(3 , stockBeforeInvoice - stock_afterInvoice.getTousseAmount().intValue()); - } - - //断言申请单状态为已发货 - assertEquals(InvoicePlan.DELIVERSTATUS_DELIVERED , invoice.getInvoicePlan().getDeliverStatus()); - - //断言发货单金额 - assertEquals( 3.14*3 *tousseFluctionPrice , invoice.getTotalPrice()); - //断言发货后的二级库存量与发货前的二级库存量多3个 - if(departmentStock2 != null){ - assertEquals(3 , departmentStock2.getAmount().intValue()-departmentStockBeforeInvoice); - } - }else if(type.equals(testPart)){ - //部分发货 - //发货单关联的包实例是否正确 - assertEquals(2 , invoice.getTousseInstances(objectDao).size()); - - JSONObject params = JSONObject.fromObject(jsonStr); - JSONArray jsonArray = params.getJSONArray("invoiceItems"); - for(int i =0 ;i cssdGoodsStockBefore = goodsStockManager.getTousseStock(wareHouse_CSSD.getId(), tdAcestorId); + //断言是有库存的 + assertNotNull(cssdGoodsStockBefore); + //测试只有一条库存记录 + assertEquals(cssdGoodsStockBefore.size(), 1); + int cssdGoodsAmoutBefore = cssdGoodsStockBefore.get(0).getAmount(); + //断言库存数量为3 + assertEquals(cssdGoodsAmoutBefore, 3); - JSONObject invoiceItems1_2 = new JSONObject(); - invoiceItems1_2.put("barcode", "201410260002"); - invoiceItems1_2.put("sendAmount", 1); - invoiceItems1_2.put("isRoutine", TousseInstance.ROUTINE_YES); - invoiceItems1.add(invoiceItems1_2); + List goodsStock3266Before = goodsStockManager.getTousseStock(wareHouse_clinic.getId(), tdAcestorId); + //断言没有库存的。这里得看之前的数据准备。如果这个仓库下没有入过库,肯定是没有库存的。但是如果有库存,则应该是对应的库存数量 + assertTrue(CollectionUtils.isEmpty(goodsStock3266Before)); - params.put("mode", "depart"); - params.put("departCode", clinicOrgUnitCode); - params.put("assistantSender", "朱广兴"); - params.put("sender", "朱广兴"); - params.put("invoiceItems", invoiceItems1); - params.put("sourceWarehouseId", wareHouse_CSSD.getId()); - params.put("sourceWarehouseName", wareHouse_CSSD.getName()); + webServiceManager.submitInvoicePlans(jsonStr); - //浮动价格 - double tousseFluctionPrice = supplyRoomConfigManager.getTousseFluctuationPercent(); - //发货前的器械包二级库存 - DepartmentStock departmentStock = departmentStockManager.getByDepartCodingAndTousseName(clinicOrgUnitCode, "Test开胸包"); - int departmentStockBeforeInvoice = 0; - if(departmentStock != null){ - departmentStockBeforeInvoice = departmentStock.getAmount(); - } - //发货前的库存量 - TousseStock stock_beforeInvoce = tousseStockManager.getTousseStockByTousseName("Test开胸包"); - int stockBeforeInvoice = 0; - if(stock_beforeInvoce != null){ - stockBeforeInvoice = stock_beforeInvoce.getTousseAmount(); - assertEquals(3, stockBeforeInvoice); - } + //发货后的库存量 + List cssdGoodsStockAfter = goodsStockManager.getTousseStock(wareHouse_CSSD.getId(), tdAcestorId); + //断言是有库存的 + assertNotNull(cssdGoodsStockAfter); + //测试只有一条库存记录 + assertEquals(cssdGoodsStockAfter.size(), 1); - webServiceManager.submitInvoicePlans(params.toString()); - - //发货单 + //发货后的库存量 + List goodsStock3266After = goodsStockManager.getTousseStock(wareHouse_clinic.getId(), tdAcestorId); + //断言是有库存的 + assertNotNull(goodsStock3266After); + //测试只有一条库存记录 + assertEquals(goodsStock3266After.size(), 1); + + //供应室的库存数量减少3个,临床科室增加3个 + assertEquals(cssdGoodsStockAfter.get(0).getAmount()-cssdGoodsAmoutBefore, -3); + //供应室库存数量为0个 + assertEquals(cssdGoodsStockAfter.get(0).getAmount().intValue(), 0); + //这里需要根据先前的库存数量进行断言.因为之前数量为0,现在库存数量为3 + assertEquals(goodsStock3266After.get(0).getAmount().intValue(), 3); + Invoice invoice = (Invoice)objectDao.getByProperty(Invoice.class.getSimpleName(), "invoicePlan.serialNumber", "2014021100001"); assertNotNull(invoice); - //发货后的库存量 - TousseStock stock_afterInvoice = tousseStockManager.getTousseStockByTousseName("Test开胸包"); - objectDao.getHibernateSession().refresh(stock_afterInvoice); - //发货后的部门二级库存量 - DepartmentStock departmentStock2 = departmentStockManager.getByDepartCodingAndTousseName(clinicOrgUnitCode, "Test开胸包"); - - //部分发货 - //发货单关联的包实例是否正确 - assertEquals(2 , invoice.getTousseInstances(objectDao).size()); + //断言发货单关联的包实例为3个 + assertEquals(3 , invoice.getTousseInstances(objectDao).size()); - JSONArray jsonArray = params.getJSONArray("invoiceItems"); - for(int i =0 ;i cssdGoodsStockBefore = goodsStockManager.getTousseStock(wareHouse_CSSD.getId(), tdAcestorId); //断言是有库存的 assertNotNull(cssdGoodsStockBefore); @@ -317,6 +187,9 @@ webServiceManager.submitInvoicePlans(params.toString()); + //发货单 + Invoice invoice = (Invoice)objectDao.getByProperty(Invoice.class.getSimpleName(), "invoicePlan.serialNumber", "2014021100001"); + assertNotNull(invoice); //发货后的库存量 List cssdGoodsStockAfter = goodsStockManager.getTousseStock(wareHouse_CSSD.getId(), tdAcestorId); //断言是有库存的 @@ -338,5 +211,54 @@ //这里需要根据先前的库存数量进行断言.因为之前数量为0,现在库存数量为2 assertEquals(goodsStock3266After.get(0).getAmount().intValue(), 2); + //部分发货 + //发货单关联的包实例是否正确 + assertEquals(2 , invoice.getTousseInstances(objectDao).size()); + + JSONArray jsonArray = params.getJSONArray("invoiceItems"); + for(int i =0 ;i