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);
+ }
+
}