Index: ssts-web/src/test/java/test/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerTests.java =================================================================== diff -u -r17548 -r17580 --- ssts-web/src/test/java/test/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerTests.java (.../InvoiceManagerTests.java) (revision 17548) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerTests.java (.../InvoiceManagerTests.java) (revision 17580) @@ -25,6 +25,9 @@ import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsBatchStock; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsIdentification; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsStock; +import com.forgon.disinfectsystem.entity.basedatamanager.materialdefinition.MaterialDefinition; +import com.forgon.disinfectsystem.entity.basedatamanager.materialinstance.MaterialInstance; +import com.forgon.disinfectsystem.entity.basedatamanager.tousseGroup.TousseGroup; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.basedatamanager.warehouse.WareHouse; @@ -33,6 +36,7 @@ import com.forgon.disinfectsystem.entity.recyclingapplication.RecyclingApplication; import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; import com.forgon.disinfectsystem.webservice.service.ServiceManager; +import com.forgon.serialnumber.model.SerialNum; import com.forgon.tools.StrutsParamUtils; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -727,5 +731,239 @@ } } + + /** + * 创建一张消毒物品申请单,申请数量为3个消毒物品 + */ + private RecyclingApplication createDisifectGoodsApplication(String serialNumber ,TousseDefinition tousseDefinition){ + RecyclingApplication application = new RecyclingApplication(); + application.setSerialNumber(serialNumber); + application.setApplicant("吴启华"); + application.setDepartCoding(Constants.ORG_UNIT_CODE_NEIKE); + application.setDepart(Constants.ORG_UNIT_NAME_NEIKE); + application.setSettleAccountsDepartCoding(Constants.ORG_UNIT_CODE_NEIKE); + application.setSettleAccountsDepart(Constants.ORG_UNIT_NAME_NEIKE); + application.setHandleDepart(Constants.ORG_UNIT_NAME_CSSD); + application.setHandleDepartCoding(Constants.ORG_UNIT_CODE_CSSD); + application.setApplicationTime(new Date()); + application.setCommittedStatus(true); + application.setDeliverStatus(InvoicePlan.DELIVERSTATUS_AWAITDELIVER); + application.setType(InvoicePlan.TYPE_DISINFECT_GOODS_APPLICATION_FORM); + objectDao.saveOrUpdate(application); + + List items = new ArrayList(); + TousseItem item = new TousseItem(); + item.setTousseName(tousseDefinition.getName()); + item.setTousseDefinitionId(tousseDefinition.getId()); + item.setAmount(3); + item.setDiposable("否"); + item.setInvoicePlan(application); + items.add(item); + tousseItemManager.saveOrUpdate(item); + application.setApplicationItems(items); + objectDao.saveOrUpdate(application); + + return application; + } + /** + * 扫描发货物品,固定条码的消毒物品 + * + */ + @Test + public void test_getInfoByBarcodeForInvoiceScan_disinfection() + throws Exception { + initData(); + WareHouse wareHouse1 = wareHouseManager + .getDefaultWareHouseByUnitCode(Constants.ORG_UNIT_CODE_CSSD); + + TousseGroup group1 = new TousseGroup(); + group1.setTousseGroupName("器械分组1"); + objectDao.save(group1); + + MaterialDefinition materialDefinition1 = new MaterialDefinition(); + materialDefinition1.setName("材料1"); + materialDefinition1.setType("布类"); + materialDefinition1.setSpelling("CL1"); + materialDefinition1.setIntoBasketMaxAmount(20); + materialDefinitionManager.saveOrUpdate(materialDefinition1); + + MaterialDefinition materialDefinition2 = new MaterialDefinition(); + materialDefinition2.setName("材料2"); + materialDefinition2.setType("布类"); + materialDefinition2.setSpelling("CL2"); + materialDefinition2.setIntoBasketMaxAmount(20); + materialDefinitionManager.saveOrUpdate(materialDefinition2); + + MaterialDefinition materialDefinition3 = new MaterialDefinition(); + materialDefinition3.setName("材料3"); + materialDefinition3.setType("布类"); + materialDefinition3.setSpelling("CL3"); + materialDefinition3.setIntoBasketMaxAmount(20); + materialDefinitionManager.saveOrUpdate(materialDefinition3); + + MaterialDefinition materialDefinition4 = new MaterialDefinition(); + materialDefinition4.setName("材料4"); + materialDefinition4.setType("布类"); + materialDefinition4.setSpelling("CL4"); + materialDefinition4.setIntoBasketMaxAmount(20); + materialDefinitionManager.saveOrUpdate(materialDefinition4); + + MaterialDefinition materialDefinition5 = new MaterialDefinition(); + materialDefinition5.setName("材料5"); + materialDefinition5.setType("布类"); + materialDefinition5.setSpelling("CL5"); + materialDefinition5.setIntoBasketMaxAmount(20); + materialDefinitionManager.saveOrUpdate(materialDefinition5); + + TousseDefinition tousseDefinition = new TousseDefinition(); + tousseDefinition.setName("消毒物品"); + tousseDefinition.setTaskGroup(group1.getTousseGroupName()); + tousseDefinition.setTousseGroupID(group1.getId()); + tousseDefinition.setTousseGroupName(group1.getTousseGroupName()); + tousseDefinition + .setTousseType(TousseDefinition.PACKAGE_TYPE_DISINFECTION); + tousseDefinition.setPrice(10.0); + tousseDefinition.setSpelling("testkxb"); + tousseDefinition.setWbCode("testgeq"); + tousseDefinition.setExternalCode("1001GYT1AA"); + tousseDefinition.setIntoBasketMaxAmount(5); + // 是否整包清洗 + tousseDefinition.setIsCleanedEntirely(TousseDefinition.STR_YES); + // 是否追朔 + tousseDefinition.setIsTraceable(TousseDefinition.STR_NO); + tousseDefinition.setIsCustomPacking(TousseDefinition.STR_YES); + tousseDefinition + .setHandlerDepartCode(Constants.ORG_UNIT_CODE_CSSD); + // 自动入筐的数量 + tousseDefinition.setPackingAmountPerVirtualBasket(5); + + MaterialInstance materialInstance1 = new MaterialInstance(); + materialInstance1.setTousse(tousseDefinition); + materialInstance1.setMaterialDefinition(materialDefinition1); + materialInstance1.setCount(1); + materialInstance1.setMaterialName(materialDefinition1.getName()); + + MaterialInstance materialInstance2 = new MaterialInstance(); + materialInstance2.setTousse(tousseDefinition); + materialInstance2.setMaterialDefinition(materialDefinition2); + materialInstance2.setCount(1); + materialInstance2.setMaterialName(materialDefinition2.getName()); + tousseDefinition + .setMaterialInstances(new ArrayList()); + tousseDefinition.getMaterialInstances().add(materialInstance1); + tousseDefinition.getMaterialInstances().add(materialInstance2); + tousseDefinitionManager.saveOrUpdate(tousseDefinition); + + String barcodeStr = serialNumManager + .getSerialNumberStr(SerialNum.TYPE_BARCODE); + TousseInstance tousseInstance = new TousseInstance(); + tousseInstance.setTousseDefinition(tousseDefinition); + tousseInstance.setDepart(Constants.ORG_UNIT_NAME_NEIKE); + tousseInstance.setDepartCoding(Constants.ORG_UNIT_CODE_NEIKE); + tousseInstance.setOrgUnitCoding(Constants.ORG_UNIT_CODE_NEIKE); + tousseInstance.setOrgUnitName(""); + tousseInstance.setReviewer(""); + tousseInstance.setReviewerCode(""); + tousseInstance.setReviewTime(new Date()); + tousseInstance.setDisinfectIdentification(""); + tousseInstance.setDisinfectProgram(""); + tousseInstance.setFluctuationPrice(123D); + tousseInstance.setPackageType(""); + tousseInstance.setTousseName(tousseDefinition.getName()); + tousseInstance.setValidUntil(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("3000-09-20 00:00:00")); + tousseInstance.setStatus(TousseInstance.STATUS_STERILED); + tousseInstance.setVirtualBasketSeqNum("001"); + tousseInstance.setBarcode(barcodeStr); + tousseInstance.setTousseFixedBarcode(true); + tousseInstanceManager.setToWarehouse(tousseInstance, wareHouse1); + tousseInstanceManager.saveOrUpdate(tousseInstance); + // 材料为 材料1*2,材料2*3,3个包实例 + { + TousseDefinition tousseDefinition1 = new TousseDefinition(); + tousseDefinition1.setName("消毒物品"); + tousseDefinition1.setTaskGroup(group1.getTousseGroupName()); + tousseDefinition1.setTousseGroupID(group1.getId()); + tousseDefinition1.setTousseGroupName(group1.getTousseGroupName()); + tousseDefinition1 + .setTousseType(TousseDefinition.PACKAGE_TYPE_DISINFECTION); + tousseDefinition1.setAncestorID(tousseDefinition.getId()); + tousseDefinition1.setPrice(10.0); + tousseDefinition1.setSpelling("testkxb"); + tousseDefinition1.setWbCode("testgeq"); + tousseDefinition1.setExternalCode("1001GYT1AA"); + tousseDefinition1.setIntoBasketMaxAmount(5); + // 是否整包清洗 + tousseDefinition1.setIsCleanedEntirely(TousseDefinition.STR_YES); + // 是否追朔 + tousseDefinition1.setIsTraceable(TousseDefinition.STR_NO); + tousseDefinition1.setIsCustomPacking(TousseDefinition.STR_YES); + tousseDefinition1 + .setHandlerDepartCode(Constants.ORG_UNIT_CODE_CSSD); + // 自动入筐的数量 + tousseDefinition1.setPackingAmountPerVirtualBasket(5); + + MaterialInstance materialInstance_1 = new MaterialInstance(); + materialInstance_1.setTousse(tousseDefinition1); + materialInstance_1.setMaterialDefinition(materialDefinition1); + materialInstance_1.setCount(2); + materialInstance_1.setMaterialName(materialDefinition1.getName()); + + MaterialInstance materialInstance_2 = new MaterialInstance(); + materialInstance_2.setTousse(tousseDefinition1); + materialInstance_2.setMaterialDefinition(materialDefinition2); + materialInstance_2.setCount(3); + materialInstance_2.setMaterialName(materialDefinition2.getName()); + tousseDefinition1 + .setMaterialInstances(new ArrayList()); + tousseDefinition1.getMaterialInstances().add(materialInstance_1); + tousseDefinition1.getMaterialInstances().add(materialInstance_2); + tousseDefinitionManager.saveOrUpdate(tousseDefinition1); + + RecyclingApplication application = createDisifectGoodsApplication("2014101600001", tousseDefinition1); + + tousseDefinition1.setInvoicePlanID(application.getId()); + tousseDefinitionManager.saveOrUpdate(tousseDefinition1); + for(int i=0;i<3;++i){ + String barcode = serialNumManager + .getSerialNumberStr(SerialNum.TYPE_BARCODE); + TousseInstance tousseInstance_1 = new TousseInstance(); + tousseInstance_1.setTousseDefinition(tousseDefinition1); + tousseInstance_1.setDepart(Constants.ORG_UNIT_NAME_NEIKE); + tousseInstance_1.setDepartCoding(Constants.ORG_UNIT_CODE_NEIKE); + tousseInstance_1.setOrgUnitCoding(Constants.ORG_UNIT_CODE_NEIKE); + tousseInstance_1.setOrgUnitName(""); + tousseInstance_1.setReviewer(""); + tousseInstance_1.setReviewerCode(""); + tousseInstance_1.setReviewTime(new Date()); + tousseInstance_1.setDisinfectIdentification(""); + tousseInstance_1.setDisinfectProgram(""); + tousseInstance_1.setFluctuationPrice(123D); + tousseInstance_1.setPackageType(""); + tousseInstance_1.setTousseName(tousseDefinition.getName()); + tousseInstance_1.setValidUntil(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("3000-09-20 00:00:00")); + tousseInstance_1.setStatus(TousseInstance.STATUS_DISINFECTED); + tousseInstance_1.setVirtualBasketSeqNum("001"); + tousseInstance_1.setBarcode(barcode); + tousseInstanceManager.setToWarehouse(tousseInstance_1, wareHouse1); + tousseInstanceManager.saveOrUpdate(tousseInstance_1); + } + } + + JsonObject extraParam = new JsonObject(); + extraParam.addProperty("mode", "depart"); + extraParam.addProperty("departCodeOfInvoicePlan", Constants.ORG_UNIT_CODE_NEIKE); + extraParam.addProperty("sourceWarehouseId", wareHouse1.getId().toString()); + extraParam.addProperty("invoiceType", Invoice.TYPE_APPLICATION); + + JsonObject params = new JsonObject(); + params.addProperty("barcode", barcodeStr); + params.add("extraParam", extraParam); + JsonObject result = invoiceManager.getInfoByBarcodeForInvoiceScan(params); + assertEquals(result.get("success").getAsBoolean(),true); + + JsonObject tousse = result.get("data").getAsJsonObject(); + assertEquals(tousse.get("stockForFixedBarcode").getAsInt(),3); + } + }