Index: ssts-web/src/test/java/test/forgon/disinfectsystem/invoicemanager/service/PDASimpleTousseComplexStatusInvoiceManagerTests.java =================================================================== diff -u -r15035 -r16765 --- ssts-web/src/test/java/test/forgon/disinfectsystem/invoicemanager/service/PDASimpleTousseComplexStatusInvoiceManagerTests.java (.../PDASimpleTousseComplexStatusInvoiceManagerTests.java) (revision 15035) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/invoicemanager/service/PDASimpleTousseComplexStatusInvoiceManagerTests.java (.../PDASimpleTousseComplexStatusInvoiceManagerTests.java) (revision 16765) @@ -1,403 +1,163 @@ package test.forgon.disinfectsystem.invoicemanager.service; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNotNull; -import static org.testng.Assert.assertNull; +import static org.testng.Assert.*; -import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; - -import org.apache.commons.lang.ArrayUtils; +import org.apache.commons.collections4.CollectionUtils; import org.testng.annotations.Test; +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; import test.forgon.constant.Constants; import test.forgon.disinfectsystem.AbstractCSSDTest; +import test.forgon.disinfectsystem.invoicemanager.model.InvoiceInfo; import com.forgon.directory.model.BarcodeDevice; +import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoods; +import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsBatchStock; import com.forgon.disinfectsystem.entity.assestmanagement.TousseStock; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; +import com.forgon.disinfectsystem.entity.basedatamanager.warehouse.WareHouse; import com.forgon.disinfectsystem.entity.departmentstock.DepartmentStock; +import com.forgon.disinfectsystem.entity.goodsstock.GoodsStock; import com.forgon.disinfectsystem.entity.invoicemanager.Invoice; import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; -import com.forgon.disinfectsystem.entity.recyclingapplication.RecyclingApplication; -import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; -import com.forgon.tools.MathTools; -/** - * 同一科室先后申请多张申请单时的测试用例 - * 第一种情况: - * 科室 申请包名称 申请包数量 - * 口腔科 A包 2 - * B包 10 - * C包 5 - * - * 口腔科 B包 8 - * C包 2 - * D包 10 - * - * 现发货: A包:2个,B包:15个,C包:7个,D包5个 - * 预计结果:第一张单为全部发货,第二张单为部分发货,未发货情况为:B包3个,D包5个 - * -----------------------华丽丽的分割线------------------------------ - * 第二种情况: - * 科室 申请包名称 申请包数量 - * 口腔科 A包 10 - * B包 2 - * C包 5 - * - * 现发货: A包:8个,B包:2个,C包:3个 - * 预计结果:第一张单为部分发货,其中第一张未发货情况为:A包2个,C包2个 - * 口腔科 A包 2 - * B包 5 - * D包 5 - * 现再次发货: A包:2个,B包:5个,C包:2个,D包:5个 - * 预计结果:第一张部分发货的单全部发货,第二张单为部分发货,其中第二张未发货情况为:A包:2个 - * @author LiuJie - * - */ -public class PDASimpleTousseComplexStatusInvoiceManagerTests extends - AbstractCSSDTest { +import com.forgon.tools.db.DatabaseUtil; + +public class PDASimpleTousseComplexStatusInvoiceManagerTests extends AbstractCSSDTest { + + private String [] barcodeArray1 = {"201410260001","201410260002","201410260003"};//普通器械包条码 + /** + * 测试的临床科室编码 + */ + private String clinicOrgUnitCode = "3266"; - private static final String[] barcodeArrayOfTousseA = {"201410260","201410261"}; - private static final String[] barcodeArrayOfTousseB = {"201410262","201410263","201410264","201410265","201410266","201410267","201410268","201410269","201410270","201410271","201410272","201410273","201410274","201410275","201410276"}; - private static final String[] barcodeArrayOfTousseC = {"201410277","201410278","201410279","201410280","201410281","201410282","201410283"}; - private static final String[] barcodeArrayOfTousseD = {"201410284","201410285","201410286","201410287","201410288"}; - /**********************以上条码专为第一种情况准备*********************************************************************************/ - private static final String[] barcodeArrayOfTousseAA = {"201410270","201410271","201410272","201410273","201410274","201410275","201410276","201410277","201410278","201410279"}; - private static final String[] barcodeArrayOfTousseBB = {"201410280","201410281","201410282","201410283","201410284","201410285","201410286"}; - private static final String[] barcodeArrayOfTousseCC = {"201410287","201410288","201410289","201410290","201410291"}; - private static final String[] barcodeArrayOfTousseDD = {"201410292","201410293","201410294","201410295","201410296"}; - - private static final String type1 = "情景一"; - private static final String type2 = "情景二"; - - private void createSimpleTousseApplication(String type){ - Calendar today = Calendar.getInstance(); - Date earler = today.getTime(); - today.add(Calendar.HOUR_OF_DAY, 3); - Date later = today.getTime(); - if(type.equals(type1)){ - Map applicationItemsMap = new HashMap(); - applicationItemsMap.put("Test开胸包", 2); - applicationItemsMap.put("Test缝合包", 10); - applicationItemsMap.put("Test清创包", 5); - createSimpleTousseOrDiposableGoodsApplicationByParam("201410261707001", InvoicePlan.TYPE_TOUSSE_APPLICATION_FORM, "口腔科", "3266", earler, applicationItemsMap); - - applicationItemsMap.clear(); - applicationItemsMap.put("Test缝合包", 8); - applicationItemsMap.put("Test清创包", 2); - applicationItemsMap.put("Test宫碘包", 10); - createSimpleTousseOrDiposableGoodsApplicationByParam("201410261707002", InvoicePlan.TYPE_TOUSSE_APPLICATION_FORM, "口腔科", "3266", later, applicationItemsMap); - }else if(type.equals(type2)){ - Map applicationItemsMap = new HashMap(); - applicationItemsMap.put("Test开胸包", 10); - applicationItemsMap.put("Test缝合包", 2); - applicationItemsMap.put("Test清创包", 5); - createSimpleTousseOrDiposableGoodsApplicationByParam("201410261707003", InvoicePlan.TYPE_TOUSSE_APPLICATION_FORM, "口腔科", "3266", earler, applicationItemsMap); - } + /** + * 创普通的器械包申请单 + * 外六科护士站18B 吴启华 申请3个Test开胸包 + */ + private void createTousseApplication(){ + Map appMap = new HashMap(); + appMap.put("Test开胸包", 3); + createSimpleTousseOrDiposableGoodsApplicationByParam("2014021100001", InvoicePlan.TYPE_TOUSSE_APPLICATION_FORM, "外六科护士站18B", clinicOrgUnitCode, new Date(), appMap); } - private void createTousseInstance(String type){ - if(type.equals(type1)){ - createSimpleTousseInstanceByParam(barcodeArrayOfTousseA, "Test开胸包", BarcodeDevice.BARCODE_TYPE_PACKAGE, Constants.ORG_UNIT_NAME_DISINFECT, Constants.ORG_UNIT_CODE_DISINFECT,3.14); - createSimpleTousseInstanceByParam(barcodeArrayOfTousseB, "Test缝合包", BarcodeDevice.BARCODE_TYPE_PACKAGE, Constants.ORG_UNIT_NAME_DISINFECT, Constants.ORG_UNIT_CODE_DISINFECT,3.14); - createSimpleTousseInstanceByParam(barcodeArrayOfTousseC, "Test清创包", BarcodeDevice.BARCODE_TYPE_PACKAGE, Constants.ORG_UNIT_NAME_DISINFECT, Constants.ORG_UNIT_CODE_DISINFECT,3.14); - createSimpleTousseInstanceByParam(barcodeArrayOfTousseD, "Test宫碘包", BarcodeDevice.BARCODE_TYPE_PACKAGE, Constants.ORG_UNIT_NAME_DISINFECT, Constants.ORG_UNIT_CODE_DISINFECT,3.14); - }else if(type.equals(type2)){ - createSimpleTousseInstanceByParam(barcodeArrayOfTousseAA, "Test开胸包", BarcodeDevice.BARCODE_TYPE_PACKAGE, Constants.ORG_UNIT_NAME_DISINFECT, Constants.ORG_UNIT_CODE_DISINFECT,3.14); - createSimpleTousseInstanceByParam(barcodeArrayOfTousseBB, "Test缝合包", BarcodeDevice.BARCODE_TYPE_PACKAGE, Constants.ORG_UNIT_NAME_DISINFECT, Constants.ORG_UNIT_CODE_DISINFECT,3.14); - createSimpleTousseInstanceByParam(barcodeArrayOfTousseCC, "Test清创包", BarcodeDevice.BARCODE_TYPE_PACKAGE, Constants.ORG_UNIT_NAME_DISINFECT, Constants.ORG_UNIT_CODE_DISINFECT,3.14); - createSimpleTousseInstanceByParam(barcodeArrayOfTousseDD, "Test宫碘包", BarcodeDevice.BARCODE_TYPE_PACKAGE, Constants.ORG_UNIT_NAME_DISINFECT, Constants.ORG_UNIT_CODE_DISINFECT,3.14); - } - - } - - private void prepareData(String type){ + private void prepareData(){ initCSSDData(); - - makeActiveUser("cssduser1"); - - createSimpleTousseApplication(type); - createTousseInstance(type); + makeActiveUser("admin"); + initBasicData(); + //仓库仓库 + createWareHouse(); + //创建普通器械包申请单 + createTousseApplication(); + //生成器械包实例,增加库存 + createTousseInstanceAndUpdateStock(); } - - + private void createWareHouse(){ + //消毒供应室的仓库 + createWareHouse(Constants.ORG_UNIT_CODE_DISINFECT); + //仓库临床科室的仓库 + createWareHouse(clinicOrgUnitCode); + } + private void createTousseInstanceAndUpdateStock(){ + createSimpleTousseInstanceByParam(barcodeArray1, "Test开胸包", BarcodeDevice.BARCODE_TYPE_PACKAGE, Constants.ORG_UNIT_NAME_DISINFECT, Constants.ORG_UNIT_CODE_DISINFECT, 3.14); + } /** - * 测试多张单的器械包发货,场景一 + * 测试全部发货的情况 */ @Test - public void testSendMultiTousse(){ - //在使用前一定要先清空,防止上一个用例的数据对本用例产生影响 - map.clear(); - for(String barcode :barcodeArrayOfTousseA){ - map.put(barcode, 1); + public void testSendOutAllTousseForPDA(){ + prepareData(); + //运行前对全局变量清空,以防止影响下一个用例的运行结果 + String jsonStr = createInvoiceParam(wareHouseManager.getDefaultWareHouseByUnitCode(Constants.ORG_UNIT_CODE_DISINFECT),true).toString(); + //浮动价格 + double tousseFluctionPrice = supplyRoomConfigManager.getTousseFluctuationPercent(); + //发货前的器械包库存 + WareHouse wareHouse_CSSD = wareHouseManager.getDefaultWareHouseByUnitCode(Constants.ORG_UNIT_CODE_DISINFECT); + WareHouse wareHouse_clinic = wareHouseManager.getDefaultWareHouseByUnitCode(clinicOrgUnitCode); + Long tdAcestorId = tousseDefinitionManager.getTousseDefinitionByName("Test开胸包").getAncestorID(); + assertNotNull(wareHouse_CSSD); + assertNotNull(wareHouse_clinic); + assertTrue(DatabaseUtil.isPoIdValid(tdAcestorId)); + + webServiceManager.submitInvoicePlans(jsonStr); + + Invoice invoice = (Invoice)objectDao.getByProperty(Invoice.class.getSimpleName(), "invoicePlan.serialNumber", "2014021100001"); + assertNotNull(invoice); + + //断言发货单关联的包实例为3个 + assertEquals(3 , invoice.getTousseInstances(objectDao).size()); + + //断言器械包状态为已发货 + for (String barcode : barcodeArray1) { + TousseInstance tousseInstance = tousseInstanceManager.getTousseInstanceByBarcode(barcode); + assertEquals(tousseInstance.getStatus(), TousseInstance.STATUS_SHIPPED); } - for(String barcode :barcodeArrayOfTousseB){ - map.put(barcode, 1); - } - for(String barcode :barcodeArrayOfTousseC){ - map.put(barcode, 1); - } - for(String barcode :barcodeArrayOfTousseD){ - map.put(barcode, 1); - } - map.put("departCode", "3266"); - String jsonStr = createSendOutParam(map); - sendoutGoods(type1 , jsonStr); + + //断言申请单状态为已发货 + assertEquals(InvoicePlan.DELIVERSTATUS_DELIVERED , invoice.getInvoicePlan().getDeliverStatus()); + + //断言发货单金额 + assertEquals( 3.14*3 *tousseFluctionPrice , invoice.getTotalPrice()); } + /** - * 场景二 + * 测试部分发货的情况 */ @Test - public void testSendMultiTousse1(){ - //在使用前一定要先清空,防止上一个用例的数据对本用例产生影响 - map.clear(); - //A包先发8个 - String[] subAA = (String[]) ArrayUtils.subarray(barcodeArrayOfTousseAA, 0, 8); - //B包先发2个 - String[] subBB = (String[]) ArrayUtils.subarray(barcodeArrayOfTousseBB, 0, 2); - //C包先发3个 - String[] subCC = (String[]) ArrayUtils.subarray(barcodeArrayOfTousseCC, 0, 3); - for(String barcode :subAA){ - map.put(barcode, 1); - } - for(String barcode :subBB){ - map.put(barcode, 1); - } - for(String barcode :subCC){ - map.put(barcode, 1); - } - map.put("departCode", "3266"); - String jsonStr = createSendOutParam(map); - sendoutGoods(type2 , jsonStr); - } - @SuppressWarnings("unchecked") - private void sendoutGoods(String type,String jsonStr){ - prepareData(type); + public void testSendOutPartlyTousseForPDA(){ + + prepareData(); + //运行前对全局变量清空,以防止影响下一个用例的运行结果 + WareHouse wareHouse_CSSD = wareHouseManager.getDefaultWareHouseByUnitCode(Constants.ORG_UNIT_CODE_DISINFECT); + WareHouse wareHouse_clinic = wareHouseManager.getDefaultWareHouseByUnitCode(clinicOrgUnitCode); + Long tdAcestorId = tousseDefinitionManager.getTousseDefinitionByName("Test开胸包").getAncestorID(); + + assertNotNull(wareHouse_CSSD); + assertNotNull(wareHouse_clinic); + assertTrue(DatabaseUtil.isPoIdValid(tdAcestorId)); + + JSONObject params = createInvoiceParam(wareHouse_CSSD,false); + //浮动价格 double tousseFluctionPrice = supplyRoomConfigManager.getTousseFluctuationPercent(); - //发货前的器械包二级库存 - DepartmentStock departmentStockA = departmentStockManager.getByDepartCodingAndTousseName("3266", "Test开胸包"); - assertNull(departmentStockA); - DepartmentStock departmentStockB = departmentStockManager.getByDepartCodingAndTousseName("3266", "Test缝合包"); - assertNull(departmentStockB); - DepartmentStock departmentStockC = departmentStockManager.getByDepartCodingAndTousseName("3266", "Test清创包"); - assertNull(departmentStockC); - DepartmentStock departmentStockD = departmentStockManager.getByDepartCodingAndTousseName("3266", "Test宫碘包"); - assertNull(departmentStockD); - if(type.equals(type1)){ - //发货前的库存量 - TousseStock stock_beforeInvoceA = tousseStockManager.getTousseStockByTousseName("Test开胸包"); - assertEquals(barcodeArrayOfTousseA.length, stock_beforeInvoceA.getTousseAmount().intValue()); - TousseStock stock_beforeInvoceB = tousseStockManager.getTousseStockByTousseName("Test缝合包"); - assertEquals(barcodeArrayOfTousseB.length, stock_beforeInvoceB.getTousseAmount().intValue()); - TousseStock stock_beforeInvoceC = tousseStockManager.getTousseStockByTousseName("Test清创包"); - assertEquals(barcodeArrayOfTousseC.length, stock_beforeInvoceC.getTousseAmount().intValue()); - TousseStock stock_beforeInvoceD = tousseStockManager.getTousseStockByTousseName("Test宫碘包"); - assertEquals(barcodeArrayOfTousseD.length, stock_beforeInvoceD.getTousseAmount().intValue()); - - webServiceManager.submitInvoicePlans(jsonStr); - //发货单 - Invoice invoice1 = (Invoice)objectDao.getByProperty(Invoice.class.getSimpleName(), "invoicePlan.serialNumber", "201410261707001"); - Invoice invoice2 = (Invoice)objectDao.getByProperty(Invoice.class.getSimpleName(), "invoicePlan.serialNumber", "201410261707002"); - - //发货后的库存量 - TousseStock stock_afterInvoiceA = tousseStockManager.getTousseStockByTousseName("Test开胸包"); - assertEquals(0 , stock_beforeInvoceA.getTousseAmount().intValue() - stock_afterInvoiceA.getTousseAmount().intValue()); - TousseStock stock_afterInvoiceB = tousseStockManager.getTousseStockByTousseName("Test缝合包"); - assertEquals(0 ,stock_beforeInvoceB.getTousseAmount().intValue() - stock_afterInvoiceB.getTousseAmount().intValue()); - TousseStock stock_afterInvoiceC = tousseStockManager.getTousseStockByTousseName("Test清创包"); - assertEquals(0 , stock_beforeInvoceC.getTousseAmount().intValue() - stock_afterInvoiceC.getTousseAmount().intValue()); - TousseStock stock_afterInvoiceD = tousseStockManager.getTousseStockByTousseName("Test宫碘包"); - assertEquals(0 , stock_beforeInvoceD.getTousseAmount().intValue() - stock_afterInvoiceD.getTousseAmount().intValue()); - //发货后的部门二级库存量 - DepartmentStock departmentStockA_after = departmentStockManager.getByDepartCodingAndTousseName("3266", "Test开胸包"); - assertEquals(2, departmentStockA_after.getAmount().intValue()); - DepartmentStock departmentStockB_after = departmentStockManager.getByDepartCodingAndTousseName("3266", "Test缝合包"); - assertEquals(15, departmentStockB_after.getAmount().intValue()); - DepartmentStock departmentStockC_after = departmentStockManager.getByDepartCodingAndTousseName("3266", "Test清创包"); - assertEquals(7, departmentStockC_after.getAmount().intValue()); - DepartmentStock departmentStockD_after = departmentStockManager.getByDepartCodingAndTousseName("3266", "Test宫碘包"); - assertEquals(5, departmentStockD_after.getAmount().intValue()); - - assertNotNull(invoice1); - assertNotNull(invoice2); - //断言第一张申请单全部发货 - assertEquals(InvoicePlan.DELIVERSTATUS_DELIVERED, invoice1.getInvoicePlan().getDeliverStatus()); - assertEquals(2+10+5, invoice1.getTousseInstances(objectDao).size()); - //断言发货单总价 - assertEquals(2*3.14*tousseFluctionPrice + 10*3.14*tousseFluctionPrice + 5*3.14*tousseFluctionPrice , invoice1.getTotalPrice()); - - for(String barcode : barcodeArrayOfTousseA){ - TousseInstance instance = tousseInstanceManager.getTousseInstanceByBarcode(barcode); - assertNotNull(instance); - assertEquals(TousseInstance.STATUS_SHIPPED , instance.getStatus()); - } - for(String barcode : barcodeArrayOfTousseB){ - TousseInstance instance = tousseInstanceManager.getTousseInstanceByBarcode(barcode); - assertNotNull(instance); - assertEquals(TousseInstance.STATUS_SHIPPED , instance.getStatus()); - } - for(String barcode : barcodeArrayOfTousseC){ - TousseInstance instance = tousseInstanceManager.getTousseInstanceByBarcode(barcode); - assertNotNull(instance); - assertEquals(TousseInstance.STATUS_SHIPPED , instance.getStatus()); - } - for(String barcode : barcodeArrayOfTousseD){ - TousseInstance instance = tousseInstanceManager.getTousseInstanceByBarcode(barcode); - assertNotNull(instance); - assertEquals(TousseInstance.STATUS_SHIPPED , instance.getStatus()); - } - - RecyclingApplication application2 = (RecyclingApplication) invoice2.getInvoicePlan(); - assertNotNull(application2); - for(TousseItem item :application2.getApplicationItems()){ - if(item.getTousseName().equals("Test缝合包")){ - assertEquals(5 , item.getSendOutAmount().intValue() ); - }else if(item.getTousseName().equals("Test清创包")){ - assertEquals(2 , item.getSendOutAmount().intValue() ); - }else if(item.getTousseName().equals("Test宫碘包")){ - assertEquals(5 , item.getSendOutAmount().intValue() ); - } - } - //断言第二张申请单部分发货 - assertEquals(InvoicePlan.DELIVERSTATUS_PARTDELIVERED, application2.getDeliverStatus()); - assertEquals(15-10 + 7-5 + 5, invoice2.getTousseInstances(objectDao).size()); - //断言发货单总价 - assertEquals(5*3.14*tousseFluctionPrice + 2*3.14*tousseFluctionPrice + 5*3.14*tousseFluctionPrice , invoice2.getTotalPrice()); - }else if(type.equals(type2)){ - //发货前的供应室库存量 - TousseStock stock_beforeInvoceA = tousseStockManager.getTousseStockByTousseName("Test开胸包"); - assertEquals(barcodeArrayOfTousseAA.length, stock_beforeInvoceA.getTousseAmount().intValue()); - TousseStock stock_beforeInvoceB = tousseStockManager.getTousseStockByTousseName("Test缝合包"); - assertEquals(barcodeArrayOfTousseBB.length, stock_beforeInvoceB.getTousseAmount().intValue()); - TousseStock stock_beforeInvoceC = tousseStockManager.getTousseStockByTousseName("Test清创包"); - assertEquals(barcodeArrayOfTousseCC.length, stock_beforeInvoceC.getTousseAmount().intValue()); - TousseStock stock_beforeInvoceD = tousseStockManager.getTousseStockByTousseName("Test宫碘包"); - assertEquals(barcodeArrayOfTousseDD.length, stock_beforeInvoceD.getTousseAmount().intValue()); - //发货 - webServiceManager.submitInvoicePlans(jsonStr); - //发货单 - Invoice invoice1 = (Invoice)objectDao.getByProperty(Invoice.class.getSimpleName(), "invoicePlan.serialNumber", "201410261707003"); - //发货后的供应室库存量都为0 - TousseStock stock_afterInvoiceA = tousseStockManager.getTousseStockByTousseName("Test开胸包"); - assertEquals(0 , stock_beforeInvoceA.getTousseAmount().intValue() - stock_afterInvoiceA.getTousseAmount().intValue()); - TousseStock stock_afterInvoiceB = tousseStockManager.getTousseStockByTousseName("Test缝合包"); - assertEquals(0 ,stock_beforeInvoceB.getTousseAmount().intValue() - stock_afterInvoiceB.getTousseAmount().intValue()); - TousseStock stock_afterInvoiceC = tousseStockManager.getTousseStockByTousseName("Test清创包"); - assertEquals(0 , stock_beforeInvoceC.getTousseAmount().intValue() - stock_afterInvoiceC.getTousseAmount().intValue()); - TousseStock stock_afterInvoiceD = tousseStockManager.getTousseStockByTousseName("Test宫碘包"); - assertEquals(barcodeArrayOfTousseDD.length, stock_afterInvoiceD.getTousseAmount().intValue()); - - //发货后的部门二级库存量 - DepartmentStock departmentStockA_after = departmentStockManager.getByDepartCodingAndTousseName("3266", "Test开胸包"); - assertEquals(8, departmentStockA_after.getAmount().intValue()); - DepartmentStock departmentStockB_after = departmentStockManager.getByDepartCodingAndTousseName("3266", "Test缝合包"); - assertEquals(2, departmentStockB_after.getAmount().intValue()); - DepartmentStock departmentStockC_after = departmentStockManager.getByDepartCodingAndTousseName("3266", "Test清创包"); - assertEquals(3, departmentStockC_after.getAmount().intValue()); - - //断言第一张申请单部分发货 - assertEquals(InvoicePlan.DELIVERSTATUS_PARTDELIVERED, invoice1.getInvoicePlan().getDeliverStatus()); - assertEquals(8+2+3, invoice1.getTousseInstances(objectDao).size()); - //断言发货单总价 - assertEquals(8*3.14*tousseFluctionPrice + 2*3.14*tousseFluctionPrice + 3*3.14*tousseFluctionPrice , invoice1.getTotalPrice()); - - JSONObject jsonObject = JSONObject.fromObject(jsonStr); - JSONArray jsonArray = jsonObject.getJSONArray("invoiceItems"); - //断言器械包状态是已发货 - for(int i = 0;i applicationItemsMap = new HashMap(); - applicationItemsMap.put("Test开胸包", 2); - applicationItemsMap.put("Test缝合包", 5); - applicationItemsMap.put("Test宫碘包", 5); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(invoice1.getApplicationTime()); - calendar.add(Calendar.HOUR_OF_DAY, 3); - createSimpleTousseOrDiposableGoodsApplicationByParam("201410261707004", InvoicePlan.TYPE_TOUSSE_APPLICATION_FORM, "口腔科", "3266", calendar.getTime(), applicationItemsMap); - /*******************第二次发货*****************************************************************/ - //A包先发2个 - String[] subAA = (String[]) ArrayUtils.subarray(barcodeArrayOfTousseAA, 8, barcodeArrayOfTousseAA.length); - //B包先发5个 - String[] subBB = (String[]) ArrayUtils.subarray(barcodeArrayOfTousseBB, 2, barcodeArrayOfTousseBB.length); - //C包先发2个 - String[] subCC = (String[]) ArrayUtils.subarray(barcodeArrayOfTousseCC, 3, barcodeArrayOfTousseCC.length); - Map itemMap = new HashMap(); - for(String barcode :subAA){ - itemMap.put(barcode, 1); - } - for(String barcode :subBB){ - itemMap.put(barcode, 1); - } - for(String barcode :subCC){ - itemMap.put(barcode, 1); - } - for(String barcode :barcodeArrayOfTousseDD){ - itemMap.put(barcode, 1); - } - itemMap.put("departCode", 3266); - String json = createSendOutParam(itemMap); - webServiceManager.submitInvoicePlans(json); - - List invoices = objectDao.findByProperty(Invoice.class.getSimpleName(), "invoicePlan.serialNumber", "201410261707003"); - assertNotNull(invoices); - assertEquals(2 , invoices.size()); - - //第一张申请单 - InvoicePlan invoicePlan1 = invoices.get(0).getInvoicePlan(); - assertNotNull(invoicePlan1); - //断言第一张申请单有两张发货单 - for(Invoice invoice : invoices){ - if(invoice.getId().longValue() != invoice1.getId().longValue()){ - //第二张发货单 - //断言第二张发货单发了4个器械包 - assertEquals(4 , invoice.getTousseInstances(objectDao).size()); - //第二张发货单发货总价 - assertEquals(4*3.14 , invoice.getTotalPrice().doubleValue()); - break; - } - } - //断言第二次发货后,第一张申请单为已发货 - assertEquals(InvoicePlan.DELIVERSTATUS_DELIVERED, invoicePlan1.getDeliverStatus()); - //第二次发货的发货单 - Invoice invoice2 = (Invoice)objectDao.getByProperty(Invoice.class.getSimpleName(), "invoicePlan.serialNumber", "201410261707004"); - assertNotNull(invoice2); - //断言发了10个包 - assertEquals(10 , invoice2.getTousseInstances(objectDao).size()); - //new BigDecimal("10").multiply(new BigDecimal(3.14)).doubleValue()的结果等于31.40000000000000002,所以不相同 - assertEquals(MathTools.mul(10d , 3.14d , 2) , MathTools.mul(invoice2.getTotalPrice().doubleValue() , 1, 2)); - - //断言第二次发货后,第二张申请单为部分发货 - assertEquals(InvoicePlan.DELIVERSTATUS_PARTDELIVERED, invoice2.getInvoicePlan().getDeliverStatus()); - String[] barcodeArr = {}; - barcodeArr = (String[]) ArrayUtils.addAll(barcodeArrayOfTousseAA, barcodeArrayOfTousseBB); - barcodeArr = (String[]) ArrayUtils.addAll(barcodeArr, barcodeArrayOfTousseCC); - - barcodeArr = (String[]) ArrayUtils.addAll(barcodeArr, barcodeArrayOfTousseDD); - for(String barcode : barcodeArr){ - TousseInstance instance = tousseInstanceManager.getTousseInstanceByBarcode(barcode); - assertNotNull(instance); - assertEquals(TousseInstance.STATUS_SHIPPED , instance.getStatus()); - } - - DepartmentStock departmentStockA_afterA = departmentStockManager.getByDepartCodingAndTousseName("3266", "Test开胸包"); - assertEquals(barcodeArrayOfTousseAA.length, departmentStockA_afterA.getAmount().intValue()); - DepartmentStock departmentStockB_afterB = departmentStockManager.getByDepartCodingAndTousseName("3266", "Test缝合包"); - assertEquals(barcodeArrayOfTousseBB.length, departmentStockB_afterB.getAmount().intValue()); - DepartmentStock departmentStockC_afterC = departmentStockManager.getByDepartCodingAndTousseName("3266", "Test清创包"); - assertEquals(barcodeArrayOfTousseCC.length, departmentStockC_afterC.getAmount().intValue()); - DepartmentStock departmentStockD_afterD = departmentStockManager.getByDepartCodingAndTousseName("3266", "Test宫碘包"); - assertEquals(barcodeArrayOfTousseDD.length, departmentStockD_afterD.getAmount().intValue()); + + + webServiceManager.submitInvoicePlans(params.toString()); + + //发货单 + Invoice invoice = (Invoice)objectDao.getByProperty(Invoice.class.getSimpleName(), "invoicePlan.serialNumber", "2014021100001"); + assertNotNull(invoice); + + //发货单关联的包实例是否正确 + assertEquals(2 , invoice.getTousseInstances(objectDao).size()); + + JSONArray jsonArray = params.getJSONArray("invoiceItems"); + for(int i =0 ;i