Index: ssts-web/src/main/java/test/forgon/disinfectsystem/CSSDTestDataProcess.java =================================================================== diff -u -r19799 -r19972 --- ssts-web/src/main/java/test/forgon/disinfectsystem/CSSDTestDataProcess.java (.../CSSDTestDataProcess.java) (revision 19799) +++ ssts-web/src/main/java/test/forgon/disinfectsystem/CSSDTestDataProcess.java (.../CSSDTestDataProcess.java) (revision 19972) @@ -3119,52 +3119,151 @@ * */ private void createForeignTousseDefinition(){ - MaterialDefinition materialDefinition = new MaterialDefinition(); - materialDefinition.setName("test骨科剥离器"); - materialDefinition.setIsTraceble("是"); - materialDefinition.setSpecification("尖头"); - materialDefinition.setCost(1600D); - materialDefinition.setSpelling("testGKBLQ"); - materialDefinition.setType("金属"); - materialDefinition.setStorage(30L); + { + MaterialDefinition materialDefinition = new MaterialDefinition(); + materialDefinition.setName("test骨科剥离器"); + materialDefinition.setIsTraceble("是"); + materialDefinition.setSpecification("尖头"); + materialDefinition.setCost(1600D); + materialDefinition.setSpelling("testGKBLQ"); + materialDefinition.setType("金属"); + materialDefinition.setStorage(30L); + + MaterialDefinition materialDefinition2 = new MaterialDefinition(); + materialDefinition2.setName("test骨科植入性钢钉"); + materialDefinition2.setIsTraceble("是"); + materialDefinition2.setSpecification("8mm"); + materialDefinition2.setCost(1200D); + materialDefinition2.setSpelling("testGKZRXGD"); + materialDefinition2.setType("金属"); + materialDefinition2.setStorage(30L); + + materialDefinitionManager.save(materialDefinition); + materialDefinitionManager.save(materialDefinition2); + + //外来器械包 + TousseDefinition tousseDefinition = new TousseDefinition(); + MaterialInstance materialInstance = new MaterialInstance(); + materialInstance.setCount(1); + materialInstance.setMaterialDefinition(materialDefinition); + materialInstance.setMaterialName("test骨科剥离器"); + materialInstance.setTousse(tousseDefinition); + + MaterialInstance materialInstance2 = new MaterialInstance(); + materialInstance2.setCount(5); + materialInstance2.setMaterialDefinition(materialDefinition2); + materialInstance2.setMaterialName("test骨科植入性钢钉"); + materialInstance2.setTousse(tousseDefinition); + + tousseDefinition.setName("test骨科外来器械包"); + tousseDefinition.setIsCleanedEntirely("是"); + tousseDefinition.setTaskGroup("OR器械组"); + tousseDefinition.setTousseType(TousseDefinition.PACKAGE_TYPE_FOREIGN); + List materialInstanceList = new ArrayList(); + materialInstanceList.add(materialInstance); + materialInstanceList.add(materialInstance2); + tousseDefinition.setMaterialInstances(materialInstanceList); + objectDao.saveOrUpdate(materialInstance); + objectDao.saveOrUpdate(materialInstance2); + tousseDefinitionManager.saveOrUpdate(tousseDefinition); + } - MaterialDefinition materialDefinition2 = new MaterialDefinition(); - materialDefinition2.setName("test骨科植入性钢钉"); - materialDefinition2.setIsTraceble("是"); - materialDefinition2.setSpecification("8mm"); - materialDefinition2.setCost(1200D); - materialDefinition2.setSpelling("testGKZRXGD"); - materialDefinition2.setType("金属"); - materialDefinition2.setStorage(30L); - - materialDefinitionManager.save(materialDefinition); - materialDefinitionManager.save(materialDefinition2); - - //外来器械包 - TousseDefinition tousseDefinition = new TousseDefinition(); - MaterialInstance materialInstance = new MaterialInstance(); - materialInstance.setCount(1); - materialInstance.setMaterialDefinition(materialDefinition); - materialInstance.setMaterialName("test骨科剥离器"); - materialInstance.setTousse(tousseDefinition); - - MaterialInstance materialInstance2 = new MaterialInstance(); - materialInstance2.setCount(5); - materialInstance2.setMaterialDefinition(materialDefinition2); - materialInstance2.setMaterialName("test骨科植入性钢钉"); - materialInstance2.setTousse(tousseDefinition); - - tousseDefinition.setName("test骨科外来器械包"); - tousseDefinition.setIsCleanedEntirely("是"); - tousseDefinition.setTaskGroup("OR器械组"); - tousseDefinition.setTousseType(TousseDefinition.PACKAGE_TYPE_FOREIGN); - List materialInstanceList = new ArrayList(); - materialInstanceList.add(materialInstance); - materialInstanceList.add(materialInstance2); - tousseDefinition.setMaterialInstances(materialInstanceList); - objectDao.saveOrUpdate(materialInstance); - objectDao.saveOrUpdate(materialInstance2); - tousseDefinitionManager.saveOrUpdate(tousseDefinition); + { + MaterialDefinition materialDefinition = new MaterialDefinition(); + materialDefinition.setName("test骨科剥离器2"); + materialDefinition.setIsTraceble("是"); + materialDefinition.setSpecification("尖头"); + materialDefinition.setCost(1600D); + materialDefinition.setSpelling("testGKBLQ"); + materialDefinition.setType("金属"); + materialDefinition.setStorage(30L); + + MaterialDefinition materialDefinition2 = new MaterialDefinition(); + materialDefinition2.setName("test骨科植入性钢钉2"); + materialDefinition2.setIsTraceble("是"); + materialDefinition2.setSpecification("8mm"); + materialDefinition2.setCost(1200D); + materialDefinition2.setSpelling("testGKZRXGD"); + materialDefinition2.setType("金属"); + materialDefinition2.setStorage(30L); + + materialDefinitionManager.save(materialDefinition); + materialDefinitionManager.save(materialDefinition2); + + //外来器械包 + TousseDefinition tousseDefinition = new TousseDefinition(); + MaterialInstance materialInstance = new MaterialInstance(); + materialInstance.setCount(1); + materialInstance.setMaterialDefinition(materialDefinition); + materialInstance.setMaterialName(materialDefinition.getName()); + materialInstance.setTousse(tousseDefinition); + + MaterialInstance materialInstance2 = new MaterialInstance(); + materialInstance2.setCount(5); + materialInstance2.setMaterialDefinition(materialDefinition2); + materialInstance2.setMaterialName(materialDefinition2.getName()); + materialInstance2.setTousse(tousseDefinition); + + tousseDefinition.setName("test骨科外来器械包"); + tousseDefinition.setIsCleanedEntirely("是"); + tousseDefinition.setTaskGroup("OR器械组"); + tousseDefinition.setTousseType(TousseDefinition.PACKAGE_TYPE_FOREIGN); + List materialInstanceList = new ArrayList(); + materialInstanceList.add(materialInstance); + materialInstanceList.add(materialInstance2); + tousseDefinition.setMaterialInstances(materialInstanceList); + objectDao.saveOrUpdate(materialInstance); + objectDao.saveOrUpdate(materialInstance2); + tousseDefinitionManager.saveOrUpdate(tousseDefinition); + } + { + MaterialDefinition materialDefinition = new MaterialDefinition(); + materialDefinition.setName("test骨科剥离器3"); + materialDefinition.setIsTraceble("是"); + materialDefinition.setSpecification("尖头"); + materialDefinition.setCost(1600D); + materialDefinition.setSpelling("testGKBLQ"); + materialDefinition.setType("金属"); + materialDefinition.setStorage(30L); + + MaterialDefinition materialDefinition2 = new MaterialDefinition(); + materialDefinition2.setName("test骨科植入性钢钉3"); + materialDefinition2.setIsTraceble("是"); + materialDefinition2.setSpecification("8mm"); + materialDefinition2.setCost(1200D); + materialDefinition2.setSpelling("testGKZRXGD"); + materialDefinition2.setType("金属"); + materialDefinition2.setStorage(30L); + + materialDefinitionManager.save(materialDefinition); + materialDefinitionManager.save(materialDefinition2); + + //外来器械包 + TousseDefinition tousseDefinition = new TousseDefinition(); + MaterialInstance materialInstance = new MaterialInstance(); + materialInstance.setCount(1); + materialInstance.setMaterialDefinition(materialDefinition); + materialInstance.setMaterialName(materialDefinition.getName()); + materialInstance.setTousse(tousseDefinition); + + MaterialInstance materialInstance2 = new MaterialInstance(); + materialInstance2.setCount(5); + materialInstance2.setMaterialDefinition(materialDefinition2); + materialInstance2.setMaterialName(materialDefinition2.getName()); + materialInstance2.setTousse(tousseDefinition); + + tousseDefinition.setName("test胸科外来器械包"); + tousseDefinition.setIsCleanedEntirely("是"); + tousseDefinition.setTaskGroup("OR器械组"); + tousseDefinition.setTousseType(TousseDefinition.PACKAGE_TYPE_FOREIGN); + List materialInstanceList = new ArrayList(); + materialInstanceList.add(materialInstance); + materialInstanceList.add(materialInstance2); + tousseDefinition.setMaterialInstances(materialInstanceList); + objectDao.saveOrUpdate(materialInstance); + objectDao.saveOrUpdate(materialInstance2); + tousseDefinitionManager.saveOrUpdate(tousseDefinition); + } } /** Index: ssts-web/src/test/java/test/forgon/disinfectsystem/invoicemanager/service/TestMultiForeignTousseInvoiceManager.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/invoicemanager/service/TestMultiForeignTousseInvoiceManager.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/invoicemanager/service/TestMultiForeignTousseInvoiceManager.java (revision 19972) @@ -0,0 +1,428 @@ +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.ArrayList; +import java.util.Date; +import java.util.List; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +import org.testng.annotations.Test; + +import test.forgon.constant.Constants; +import test.forgon.disinfectsystem.AbstractCSSDTest; + +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.foreigntousseapplication.ForeignTousseApplication; +import com.forgon.disinfectsystem.entity.invoicemanager.Invoice; +import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; +import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; +public class TestMultiForeignTousseInvoiceManager extends AbstractCSSDTest { + + private static final String testAll = "TESTALL"; + //消毒物品器械包条码 + private String [] barcodeArray1 = {"201410160001","201410160002","201410160003"}; + + ForeignTousseApplication foreignTousseApplication = null; + + /** + * 创建一张外来器械申请单,申请数量为2个test骨科外来器械包,1个test胸科外来器械包 + */ + private void createMultiForeignTousseGoodsApplication(){ + + List foreignTousseTousseDefinitionList1 = tousseDefinitionManager.getForeignTousseDefinitionByName("test骨科外来器械包"); + assertNotNull(foreignTousseTousseDefinitionList1); + assertTrue(foreignTousseTousseDefinitionList1.size() >= 2); + TousseDefinition foreignTousseTousseDefinition2 = tousseDefinitionManager.getTousseDefinitionByName("test胸科外来器械包"); + foreignTousseApplication = new ForeignTousseApplication(); + foreignTousseApplication.setApplicant("林倩"); + foreignTousseApplication.setApplicationTime(new Date()); + foreignTousseApplication.setCommittedStatus(true); + foreignTousseApplication.setDeliverStatus(InvoicePlan.DELIVERSTATUS_AWAITDELIVER); + foreignTousseApplication.setDepart(Constants.ORG_UNIT_NAME_NEIKE); + foreignTousseApplication.setDepartCoding(Constants.ORG_UNIT_CODE_NEIKE); + foreignTousseApplication.setHandleDepart(Constants.ORG_UNIT_NAME_CSSD); + foreignTousseApplication.setHandleDepartCoding(Constants.ORG_UNIT_CODE_CSSD); + foreignTousseApplication.setRecyclingStatus(InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE); + foreignTousseApplication.setType(InvoicePlan.TYPE_FOREIGNTOUSSEAPPLIACTION); + foreignTousseApplication.setSerialNumber("2014101700001"); + foreignTousseApplication.setSettleAccountsDepart(Constants.ORG_UNIT_NAME_NEIKE); + foreignTousseApplication.setSettleAccountsDepartCoding(Constants.ORG_UNIT_CODE_NEIKE); + foreignTousseApplication.setPackageStatus(ForeignTousseApplication.RECYCLINGSTATUS_AWAITRECYCLE); + objectDao.save(foreignTousseApplication); + + List list = new ArrayList(); + { + TousseItem item = new TousseItem(); + item.setTousseName("test骨科外来器械包"); + item.setTousseDefinitionId(foreignTousseTousseDefinitionList1.get(0).getId()); + item.setInvoicePlanID(foreignTousseApplication.getId()); + item.setAmount(1); + item.setDiposable("否"); + item.setInvoicePlan(foreignTousseApplication); + list.add(item); + tousseItemManager.save(item); + + // + TousseInstance tousseInstance = new TousseInstance(); + tousseInstance.setTousseDefinition(foreignTousseTousseDefinitionList1.get(0)); + tousseInstance.setTousseName("test骨科外来器械包"); + tousseInstance.setForeignTousseApp_id(foreignTousseApplication.getId()); + tousseInstance.setInvoicePlanID(foreignTousseApplication.getId()); + tousseInstance.setBarcode(barcodeArray1[0]); + tousseInstance.setType(TousseDefinition.PACKAGE_TYPE_FOREIGN); + tousseInstance.setStatus(TousseInstance.STATUS_STERILED); + tousseInstance.setPrice(356.00); + tousseInstance.setFluctuationPrice(356.00); + tousseInstance.setOrgUnitCoding(Constants.ORG_UNIT_CODE_OR); + tousseInstance.setOrgUnitName(Constants.ORG_UNIT_NAME_OR); + tousseInstance.setStatisticsAmount(10); + tousseInstance.setPackageType("纸塑"); + tousseInstanceManager.setToDefaultWareHouse(tousseInstance, Constants.ORG_UNIT_CODE_OR); + tousseInstanceManager.saveOrUpdate(tousseInstance); + } + { + TousseItem item = new TousseItem(); + item.setTousseName("test骨科外来器械包"); + item.setTousseDefinitionId(foreignTousseTousseDefinitionList1.get(1).getId()); + item.setInvoicePlanID(foreignTousseApplication.getId()); + item.setAmount(1); + item.setDiposable("否"); + item.setInvoicePlan(foreignTousseApplication); + + list.add(item); + tousseItemManager.save(item); + + // + TousseInstance tousseInstance = new TousseInstance(); + tousseInstance.setTousseDefinition(foreignTousseTousseDefinitionList1.get(1)); + tousseInstance.setTousseName("test骨科外来器械包"); + tousseInstance.setForeignTousseApp_id(foreignTousseApplication.getId()); + tousseInstance.setInvoicePlanID(foreignTousseApplication.getId()); + tousseInstance.setBarcode(barcodeArray1[1]); + tousseInstance.setType(TousseDefinition.PACKAGE_TYPE_FOREIGN); + tousseInstance.setStatus(TousseInstance.STATUS_STERILED); + tousseInstance.setPrice(356.00); + tousseInstance.setFluctuationPrice(356.00); + tousseInstance.setOrgUnitCoding(Constants.ORG_UNIT_CODE_OR); + tousseInstance.setOrgUnitName(Constants.ORG_UNIT_NAME_OR); + tousseInstance.setStatisticsAmount(10); + tousseInstance.setPackageType("纸塑"); + tousseInstanceManager.setToDefaultWareHouse(tousseInstance, Constants.ORG_UNIT_CODE_OR); + tousseInstanceManager.saveOrUpdate(tousseInstance); + } + { + TousseItem item = new TousseItem(); + item.setTousseName("test骨科外来器械包"); + item.setTousseDefinitionId(foreignTousseTousseDefinition2.getId()); + item.setInvoicePlanID(foreignTousseApplication.getId()); + item.setAmount(1); + item.setDiposable("否"); + item.setInvoicePlan(foreignTousseApplication); + list.add(item); + tousseItemManager.save(item); + + // + TousseInstance tousseInstance = new TousseInstance(); + tousseInstance.setTousseDefinition(foreignTousseTousseDefinition2); + tousseInstance.setTousseName("test骨科外来器械包"); + tousseInstance.setForeignTousseApp_id(foreignTousseApplication.getId()); + tousseInstance.setInvoicePlanID(foreignTousseApplication.getId()); + tousseInstance.setBarcode(barcodeArray1[2]); + tousseInstance.setType(TousseDefinition.PACKAGE_TYPE_FOREIGN); + tousseInstance.setStatus(TousseInstance.STATUS_STERILED); + tousseInstance.setPrice(356.00); + tousseInstance.setFluctuationPrice(356.00); + tousseInstance.setOrgUnitCoding(Constants.ORG_UNIT_CODE_OR); + tousseInstance.setOrgUnitName(Constants.ORG_UNIT_NAME_OR); + tousseInstance.setStatisticsAmount(10); + tousseInstance.setPackageType("纸塑"); + tousseInstanceManager.setToDefaultWareHouse(tousseInstance, Constants.ORG_UNIT_CODE_OR); + tousseInstanceManager.saveOrUpdate(tousseInstance); + } + + // + foreignTousseApplication.setApplicationItems(list); + foreignTousseApplicationManager.saveOrUpdate(foreignTousseApplication); + } + + /* + * 测试外来器械全部发货 + */ + @Test + public void testSendAllForeignTousseGoods() { + prepareData(); + WareHouse wareHouse_CSSD = wareHouseManager + .getDefaultWareHouseByUnitCode(Constants.ORG_UNIT_CODE_CSSD); + assertNotNull(wareHouse_CSSD); + + JSONObject params = new JSONObject(); + JSONArray invoiceItems1 = new JSONArray(); + // 发普通器械包 + for (String barcode : barcodeArray1) { + JSONObject invoiceItems1_1 = new JSONObject(); + invoiceItems1_1.put("barcode", barcode); + invoiceItems1_1.put("sendAmount", 1); + invoiceItems1_1.put("isRoutine", TousseInstance.ROUTINE_YES); + invoiceItems1.add(invoiceItems1_1); + } + + params.put("mode", "depart"); + params.put("departCode", Constants.ORG_UNIT_CODE_NEIKE); + params.put("assistantSender", "朱广兴"); + params.put("sender", "朱广兴"); + params.put("invoiceItems", invoiceItems1); + params.put("sourceWarehouseId", wareHouse_CSSD.getId()); + params.put("sourceWarehouseName", wareHouse_CSSD.getName()); + + // 只发一个条码的器械包,只会对申请单2014101700001的申请对进行对应发货,2014101700002的不会发货 + webServiceManager.submitInvoicePlans(params.toString()); + // 外来器械申请单的发货单 + Invoice invoice = (Invoice) objectDao.getByProperty( + Invoice.class.getSimpleName(), "invoicePlan.serialNumber", + "2014101700001"); + // 断言发货单不为空 + assertNotNull(invoice); + // 外来器械申请单 + ForeignTousseApplication foreignTousseApplication = foreignTousseApplicationManager + .get(invoice.getInvoicePlan().getId()); + // 代理灭菌的发货单 + Invoice invoice2 = (Invoice) objectDao.getByProperty( + Invoice.class.getSimpleName(), "invoicePlan.serialNumber", + "2014101700002"); + // 断言代理灭菌发货单为空 + assertNull(invoice2); + // 代理灭菌单 + // ProxyDisinfection proxyDisinfection = + // proxyDisinfectionManager.getProxyDisinfectionById(invoice2.getInvoicePlan().getId().toString()); + + // 断言发货单关联的包实例为3个 + assertEquals(3, invoice.getTousseInstances(objectDao).size()); + + TousseInstance instance = tousseInstanceManager + .getTousseInstanceByBarcode(barcodeArray1[0]); + // 断言发货状态为已发货 + assertEquals(TousseInstance.STATUS_SHIPPED, instance.getStatus()); + + // 断言申请单状态为已发货 + assertEquals(InvoicePlan.DELIVERSTATUS_DELIVERED, invoice + .getInvoicePlan().getDeliverStatus()); + + // 外来器械不存在库存,所以与库存相关的断言注释 + // 供应室的库存(外来器械申请单不会更新科室库存) + /* + * DepartmentStock departmentStock = + * departmentStockManager.getById(String + * .valueOf(instance.getDepartmentStock_id())); //断言二级库存为0; + * assertEquals(0, departmentStock.getAmount().intValue()); //手术室的库存 + * DepartmentStock departmentStock2 = + * departmentStockManager.getByDepartCodingAndTousseName + * (Constants.ORG_UNIT_CODE_OR, instance.getTousseName()); + * + * assertEquals(1, departmentStock2.getAmount().intValue()); + */ + + // 断言发货单金额 + assertEquals(3 * instance.getPrice(), invoice.getTotalPrice()); + + // 断言代理灭菌单状态为已发货 + assertEquals(InvoicePlan.DELIVERSTATUS_DELIVERED, + foreignTousseApplication.getDeliverStatus()); + // 断言代理灭菌器械包个数为1个 + assertEquals(3, + foreignTousseApplication.getTousseInstanceList(objectDao) + .size()); + + } + + /* + * 测试发货其中1个 + */ + @Test + public void testSendForeignTousseGoods_1(){ + prepareData(); + WareHouse wareHouse_CSSD = wareHouseManager.getDefaultWareHouseByUnitCode(Constants.ORG_UNIT_CODE_CSSD); + assertNotNull(wareHouse_CSSD); + + JSONObject params = new JSONObject(); + JSONArray invoiceItems1 = new JSONArray(); + //发普通器械包 + JSONObject invoiceItems1_1 = new JSONObject(); + invoiceItems1_1.put("barcode", barcodeArray1[0]); + invoiceItems1_1.put("sendAmount", 1); + invoiceItems1_1.put("isRoutine", TousseInstance.ROUTINE_YES); + invoiceItems1.add(invoiceItems1_1); + + + params.put("mode", "depart"); + params.put("departCode", Constants.ORG_UNIT_CODE_NEIKE); + params.put("assistantSender", "朱广兴"); + params.put("sender", "朱广兴"); + params.put("invoiceItems", invoiceItems1); + params.put("sourceWarehouseId", wareHouse_CSSD.getId()); + params.put("sourceWarehouseName", wareHouse_CSSD.getName()); + params.put("allowPartlyInvoiceForeignTousse", true); + + invoiceManager.submitInvoice(params); + //外来器械申请单的发货单 + Invoice invoice = (Invoice)objectDao.getByProperty(Invoice.class.getSimpleName(), "invoicePlan.serialNumber", "2014101700001"); + //断言发货单不为空 + assertNotNull(invoice); + //外来器械申请单 + ForeignTousseApplication foreignTousseApplication = foreignTousseApplicationManager.get(invoice.getInvoicePlan().getId()); + //断言发货单关联的包实例为3个 + assertEquals(1 , invoice.getTousseInstances(objectDao).size()); + TousseInstance instance = tousseInstanceManager.getTousseInstanceByBarcode(barcodeArray1[0]); + //断言申请单状态为部分发货 + assertEquals(InvoicePlan.DELIVERSTATUS_PARTDELIVERED , invoice.getInvoicePlan().getDeliverStatus()); + //断言发货单金额 + assertEquals(1 *instance.getPrice() , invoice.getTotalPrice()); + } + + /* + * 逐步发完 + */ + @Test + public void testSendForeignTousseGoods_2(){ + prepareData(); + WareHouse wareHouse_CSSD = wareHouseManager.getDefaultWareHouseByUnitCode(Constants.ORG_UNIT_CODE_CSSD); + assertNotNull(wareHouse_CSSD); + + { + JSONObject params = new JSONObject(); + JSONArray invoiceItems1 = new JSONArray(); + //发普通器械包 + JSONObject invoiceItems1_1 = new JSONObject(); + invoiceItems1_1.put("barcode", barcodeArray1[0]); + invoiceItems1_1.put("sendAmount", 1); + invoiceItems1_1.put("isRoutine", TousseInstance.ROUTINE_YES); + invoiceItems1.add(invoiceItems1_1); + + + params.put("mode", "depart"); + params.put("departCode", Constants.ORG_UNIT_CODE_NEIKE); + params.put("assistantSender", "朱广兴"); + params.put("sender", "朱广兴"); + params.put("invoiceItems", invoiceItems1); + params.put("sourceWarehouseId", wareHouse_CSSD.getId()); + params.put("sourceWarehouseName", wareHouse_CSSD.getName()); + params.put("allowPartlyInvoiceForeignTousse", true); + + invoiceManager.submitInvoice(params); + //外来器械申请单的发货单 + Invoice invoice = (Invoice)objectDao.getByProperty(Invoice.class.getSimpleName(), "invoicePlan.serialNumber", "2014101700001"); + //断言发货单不为空 + assertNotNull(invoice); + //外来器械申请单 + ForeignTousseApplication foreignTousseApplication = foreignTousseApplicationManager.get(invoice.getInvoicePlan().getId()); + //断言发货单关联的包实例 + assertEquals(1 , invoice.getTousseInstances(objectDao).size()); + TousseInstance instance = tousseInstanceManager.getTousseInstanceByBarcode(barcodeArray1[0]); + TousseInstance instance1 = tousseInstanceManager.getTousseInstanceByBarcode(barcodeArray1[1]); + TousseInstance instance2 = tousseInstanceManager.getTousseInstanceByBarcode(barcodeArray1[2]); + assertEquals(TousseInstance.STATUS_SHIPPED , instance.getStatus()); + assertEquals(TousseInstance.STATUS_STERILED , instance1.getStatus()); + assertEquals(TousseInstance.STATUS_STERILED , instance2.getStatus()); + //断言申请单状态为部分发货 + assertEquals(InvoicePlan.DELIVERSTATUS_PARTDELIVERED , invoice.getInvoicePlan().getDeliverStatus()); + //断言发货单金额 + assertEquals(1 *instance.getPrice() , invoice.getTotalPrice()); + } + { + JSONObject params = new JSONObject(); + JSONArray invoiceItems1 = new JSONArray(); + //发普通器械包 + JSONObject invoiceItems1_1 = new JSONObject(); + invoiceItems1_1.put("barcode", barcodeArray1[1]); + invoiceItems1_1.put("sendAmount", 1); + invoiceItems1_1.put("isRoutine", TousseInstance.ROUTINE_YES); + invoiceItems1.add(invoiceItems1_1); + + + params.put("mode", "depart"); + params.put("departCode", Constants.ORG_UNIT_CODE_NEIKE); + params.put("assistantSender", "朱广兴"); + params.put("sender", "朱广兴"); + params.put("invoiceItems", invoiceItems1); + params.put("sourceWarehouseId", wareHouse_CSSD.getId()); + params.put("sourceWarehouseName", wareHouse_CSSD.getName()); + params.put("allowPartlyInvoiceForeignTousse", true); + + invoiceManager.submitInvoice(params); + //外来器械申请单的发货单 + Invoice invoice = (Invoice)objectDao.getByProperty(Invoice.class.getSimpleName(), "invoicePlan.serialNumber", "2014101700001"); + //断言发货单不为空 + assertNotNull(invoice); + //外来器械申请单 + ForeignTousseApplication foreignTousseApplication = foreignTousseApplicationManager.get(invoice.getInvoicePlan().getId()); + //断言发货单关联的包实例 + assertEquals(1 , invoice.getTousseInstances(objectDao).size()); + TousseInstance instance = tousseInstanceManager.getTousseInstanceByBarcode(barcodeArray1[0]); + TousseInstance instance1 = tousseInstanceManager.getTousseInstanceByBarcode(barcodeArray1[1]); + TousseInstance instance2 = tousseInstanceManager.getTousseInstanceByBarcode(barcodeArray1[2]); + assertEquals(TousseInstance.STATUS_SHIPPED , instance.getStatus()); + assertEquals(TousseInstance.STATUS_SHIPPED , instance1.getStatus()); + assertEquals(TousseInstance.STATUS_STERILED , instance2.getStatus()); + //断言申请单状态为部分发货 + assertEquals(InvoicePlan.DELIVERSTATUS_PARTDELIVERED , invoice.getInvoicePlan().getDeliverStatus()); + //断言发货单金额 + assertEquals(1 *instance.getPrice() , invoice.getTotalPrice()); + } + { + JSONObject params = new JSONObject(); + JSONArray invoiceItems1 = new JSONArray(); + //发普通器械包 + JSONObject invoiceItems1_1 = new JSONObject(); + invoiceItems1_1.put("barcode", barcodeArray1[2]); + invoiceItems1_1.put("sendAmount", 1); + invoiceItems1_1.put("isRoutine", TousseInstance.ROUTINE_YES); + invoiceItems1.add(invoiceItems1_1); + + + params.put("mode", "depart"); + params.put("departCode", Constants.ORG_UNIT_CODE_NEIKE); + params.put("assistantSender", "朱广兴"); + params.put("sender", "朱广兴"); + params.put("invoiceItems", invoiceItems1); + params.put("sourceWarehouseId", wareHouse_CSSD.getId()); + params.put("sourceWarehouseName", wareHouse_CSSD.getName()); + params.put("allowPartlyInvoiceForeignTousse", true); + + invoiceManager.submitInvoice(params); + //外来器械申请单的发货单 + Invoice invoice = (Invoice)objectDao.getByProperty(Invoice.class.getSimpleName(), "invoicePlan.serialNumber", "2014101700001"); + //断言发货单不为空 + assertNotNull(invoice); + //外来器械申请单 + ForeignTousseApplication foreignTousseApplication = foreignTousseApplicationManager.get(invoice.getInvoicePlan().getId()); + //断言发货单关联的包实例 + assertEquals(1 , invoice.getTousseInstances(objectDao).size()); + TousseInstance instance = tousseInstanceManager.getTousseInstanceByBarcode(barcodeArray1[0]); + TousseInstance instance1 = tousseInstanceManager.getTousseInstanceByBarcode(barcodeArray1[1]); + TousseInstance instance2 = tousseInstanceManager.getTousseInstanceByBarcode(barcodeArray1[2]); + assertEquals(TousseInstance.STATUS_SHIPPED , instance.getStatus()); + assertEquals(TousseInstance.STATUS_SHIPPED , instance1.getStatus()); + assertEquals(TousseInstance.STATUS_SHIPPED , instance2.getStatus()); + //断言申请单状态为已发货 + assertEquals(InvoicePlan.DELIVERSTATUS_DELIVERED , invoice.getInvoicePlan().getDeliverStatus()); + //断言发货单金额 + assertEquals(1 *instance.getPrice() , invoice.getTotalPrice()); + } + } + + private void prepareData(){ + initCSSDData(); + makeActiveUser("cssduser1"); + createMultiForeignTousseGoodsApplication(); +// createForeignTousseGoodsInstance(); + //创建代理灭菌申请单 +// createProxyDisifectionApplication(); + } + +}