Index: ssts-web/src/test/java/test/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerTests.java =================================================================== diff -u --- ssts-web/src/test/java/test/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerTests.java (revision 0) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/invoicemanager/service/InvoiceManagerTests.java (revision 17548) @@ -0,0 +1,731 @@ +package test.forgon.disinfectsystem.invoicemanager.service; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNotNull; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import net.sf.json.JSONObject; + +import org.apache.commons.lang.StringUtils; +import org.testng.annotations.Test; + +import test.forgon.constant.Constants; +import test.forgon.disinfectsystem.AbstractCSSDTest; + +import com.forgon.directory.model.BarcodeDevice; +import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoods; +import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsBatch; +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.toussedefinition.TousseDefinition; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; +import com.forgon.disinfectsystem.entity.basedatamanager.warehouse.WareHouse; +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.disinfectsystem.webservice.service.ServiceManager; +import com.forgon.tools.StrutsParamUtils; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +/** + * 通用申请单发货 + * @author WangYi + * 2015-01-28 14:47 + */ +public class InvoiceManagerTests extends AbstractCSSDTest{ + + private ServiceManager serviceManager; + + private final String [] tousseInstanceArray = {"20150100001","20150100002","20150100003","20150100004","20150100005"}; + private final String [] disposableGoodsArray = {"20150300001","20150300002"}; + private final String [] disinfectArray = {"20150200001"}; + + public void setServiceManager(ServiceManager serviceManager) { + this.serviceManager = serviceManager; + } + + private RecyclingApplication application;//定义为全局变量,然后取其id + private void createComboApplication(){ + + DisposableGoods disposableGoods = diposableGoodsManager.getDisposableGoodsByName("test注射器", "小号"); + application = new RecyclingApplication(); + objectDao.saveOrUpdate(application); + // 器械包 + TousseDefinition tousseDefinition1 = tousseDefinitionManager.getTousseDefinitionByName("Test开胸包"); + for (String barcode : tousseInstanceArray) { + TousseInstance tousseInstance1 = new TousseInstance(); + tousseInstance1.setTousseDefinition(tousseDefinition1); + tousseInstance1.setTousseName("Test开胸包"); + tousseInstance1.setBarcode(barcode); + tousseInstance1.setType(BarcodeDevice.BARCODE_TYPE_PACKAGE); + tousseInstance1.setStatus(TousseInstance.STATUS_STERILED); + tousseInstance1.setPrice(3.14); + tousseInstance1.setFluctuationPrice(3.14); + tousseInstance1.setSterilingType("P1"); + tousseInstance1.setOrgUnitCoding(Constants.ORG_UNIT_CODE_DISINFECT); + tousseInstance1.setOrgUnitName(Constants.ORG_UNIT_NAME_DISINFECT); + tousseInstance1.setStatisticsAmount(1); + Date date = null; + try { + date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2030-10-20 13:00:00"); + } catch (ParseException e) { + e.printStackTrace(); + } + tousseInstance1.setValidUntil(date); + tousseInstanceManager.setToDefaultWareHouse(tousseInstance1, Constants.ORG_UNIT_CODE_OR); + tousseInstanceManager.saveOrUpdate(tousseInstance1); + tousseStockManager.increaseStockByTousseName(tousseInstance1.getTousseName()); + } + + //// 消毒物品 + //消毒物品(固定条码器械包关联用) + TousseDefinition disinfectionTousse = new TousseDefinition(); + disinfectionTousse.setTousseType(TousseDefinition.PACKAGE_TYPE_DISINFECTION); + + disinfectionTousse.setName("止血带"); + disinfectionTousse.setPrice(2.5); + disinfectionTousse.setTousseAmount(1); + disinfectionTousse.setSpelling("zxd"); + disinfectionTousse.setIsTraceable("否"); + disinfectionTousse.setIsCleanedEntirely("否"); + disinfectionTousse.setWorkLoadStatisticalMethod("按包"); + disinfectionTousse.setIsRecycling("是"); + + objectDao.save(disinfectionTousse); + disinfectionTousse.setAncestorID(disinfectionTousse.getId()); + objectDao.saveOrUpdate(disinfectionTousse); + //创建固定条码的器械包 + for (String barcode : disinfectArray) { + TousseInstance tousseInstance1 = new TousseInstance(); + tousseInstance1.setTousseDefinition(disinfectionTousse); + tousseInstance1.setTousseName("止血带"); + tousseInstance1.setBarcode(barcode); + tousseInstance1.setType(BarcodeDevice.BARCODE_TYPE_PACKAGE); + tousseInstance1.setStatus(TousseInstance.STATUS_DISINFECTED); + tousseInstance1.setPrice(2.5); + tousseInstance1.setFluctuationPrice(2.5); + tousseInstance1.setSterilingType("P1"); + tousseInstance1.setOrgUnitCoding(Constants.ORG_UNIT_CODE_DISINFECT); + tousseInstance1.setOrgUnitName(Constants.ORG_UNIT_NAME_DISINFECT); + tousseInstance1.setStatisticsAmount(10); + tousseInstance1.setTousseFixedBarcode(true); + tousseInstance1.setUnTraceableTousse(true); + + Date date = null; + try { + Calendar cal = Calendar.getInstance(); + cal.add(Calendar.DATE, 180); + date = cal.getTime(); + } catch (Exception e) { + e.printStackTrace(); + } + tousseInstance1.setValidUntil(date); + tousseInstanceManager.setToDefaultWareHouse(tousseInstance1, Constants.ORG_UNIT_CODE_DISINFECT); + tousseInstanceManager.saveOrUpdate(tousseInstance1); + tousseStockManager.increaseStockByTousseName(tousseInstance1.getTousseName()); + } + + + TousseDefinition disinfectionTousseNew = new TousseDefinition(); + disinfectionTousseNew.setTousseType(TousseDefinition.PACKAGE_TYPE_DISINFECTION); + disinfectionTousseNew.setAncestorID(disinfectionTousse.getId()); + disinfectionTousseNew.setName("止血带"); + disinfectionTousseNew.setInvoicePlanID(application.getId()); + disinfectionTousseNew.setPrice(2.5); + disinfectionTousseNew.setTousseAmount(1); + disinfectionTousseNew.setSpelling("zxd"); + disinfectionTousseNew.setIsTraceable("否"); + disinfectionTousseNew.setIsCleanedEntirely("否"); + disinfectionTousseNew.setWorkLoadStatisticalMethod("按包"); + disinfectionTousseNew.setIsRecycling("是"); + disinfectionTousseNew.setMaterialsMD5("testMD5"); +// tousseDefinitionManager.saveOrUpdate(disinfectionTousseNew); + objectDao.saveOrUpdate(disinfectionTousseNew); + + //创建一个待发货器械包实例记录及相应器械包定义 + TousseInstance tousseInstanceNew = new TousseInstance(); + tousseInstanceNew.setTousseDefinition(disinfectionTousseNew); + tousseInstanceNew.setTousseName("止血带"); + tousseInstanceNew.setInvoicePlanID(application.getId()); + tousseInstanceNew.setBarcode("010000218");//随便写,反正不使用此条码 + tousseInstanceNew.setType(BarcodeDevice.BARCODE_TYPE_PACKAGE); + tousseInstanceNew.setStatus(TousseInstance.STATUS_DISINFECTED); + tousseInstanceNew.setPrice(2.5); + tousseInstanceNew.setFluctuationPrice(2.5); + tousseInstanceNew.setSterilingType("P1"); + tousseInstanceNew.setOrgUnitCoding(Constants.ORG_UNIT_CODE_DISINFECT); + tousseInstanceNew.setOrgUnitName(Constants.ORG_UNIT_NAME_DISINFECT); + tousseInstanceNew.setStatisticsAmount(10); + tousseInstanceNew.setTousseFixedBarcode(false); + tousseInstanceNew.setUnTraceableTousse(true); + + Date date = null; + try { + Calendar cal = Calendar.getInstance(); + cal.add(Calendar.DATE, 180); + date = cal.getTime(); + } catch (Exception e) { + e.printStackTrace(); + } + tousseInstanceNew.setValidUntil(date); + tousseInstanceManager.setToDefaultWareHouse(tousseInstanceNew, Constants.ORG_UNIT_CODE_DISINFECT); + tousseInstanceManager.saveOrUpdate(tousseInstanceNew); + //// 消毒物品 + TousseItem ti1 = new TousseItem(); + ti1.setTousseName("Test开胸包"); + ti1.setTousseDefinitionId(tousseDefinition1.getId()); + ti1.setAmount(5); + ti1.setRecyclingAmount(null); + ti1.setSendOutAmount(0); + ti1.setTousseType(TousseDefinition.PACKAGE_TYPE_INSIDE); + ti1.setDiposable("否"); + ti1.setInvoicePlan(application); + + TousseItem ti2 = new TousseItem(); + ti2.setTousseName("Test治疗巾"); + ti2.setAmount(10); + ti2.setTousseType(TousseDefinition.PACKAGE_TYPE_INSIDE); + ti2.setRecyclingAmount(null); + ti2.setSendOutAmount(0); + ti2.setDiposable("否"); + ti2.setInvoicePlan(application); + + TousseItem ti3 = new TousseItem(); + ti3.setTousseType(TousseItem.TYPE_DIPOSABLE_GOODS); + ti3.setTousseName(disposableGoods.getShowName()); + ti3.setDisposableGoodsId(disposableGoods.getId()); + ti3.setAmount(1000); + ti3.setDiposable("是"); + ti3.setRecyclingAmount(0); + ti3.setSendOutAmount(0); + ti3.setInvoicePlan(application); + + + List applicationItems = new ArrayList(); + applicationItems.add(ti1); + applicationItems.add(ti2); + applicationItems.add(ti3); + + application.setRecyclingStatus(InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE); + application.setDeliverStatus(InvoicePlan.DELIVERSTATUS_AWAITDELIVER); + application.setCommittedStatus(true); + application.setApplicationItems(applicationItems); + application.setType(InvoicePlan.TYPE_COMBO_FORM); + application.setIncludeRecyclingItems(InvoicePlan.SIGNED_TRUE); + application.setSerialNumber("89012000001"); + application.setDepartCoding("3266"); + application.setSettleAccountsDepartCoding("3266"); + application.setHandleDepart(Constants.ORG_UNIT_NAME_CSSD); + application.setHandleDepartCoding(Constants.ORG_UNIT_CODE_CSSD); + + objectDao.saveOrUpdate(application); + + TousseItem ti4 = new TousseItem(); + ti4.setTousseType(TousseDefinition.PACKAGE_TYPE_DISINFECTION); + ti4.setTousseName("止血带"); + ti4.setInvoicePlanID(application.getId()); + ti4.setTousseDefinitionId(disinfectionTousseNew.getId()); + ti4.setAmount(1); + ti4.setDiposable("否"); + ti4.setRecyclingAmount(null); + ti4.setSendOutAmount(0); + ti4.setInvoicePlan(application); + objectDao.save(ti4); + + application.getApplicationItems().add(ti4); + objectDao.saveOrUpdate(application); + + } + + + /** + * 创建一次性物品 + */ + private void createDiposableGoods2(){ + WareHouse wareHouse_CSSD = wareHouseManager.getDefaultWareHouseByUnitCode(Constants.ORG_UNIT_CODE_CSSD); + assertNotNull(wareHouse_CSSD); + DisposableGoods disposableGoods = new DisposableGoods(); + disposableGoods.setName("test注射器"); + disposableGoods.setSpecification("小号"); + disposableGoods.setReferencePrice(1.2); + disposableGoods.setMinApplyAmount(100); + objectDao.saveOrUpdate(disposableGoods); + //一次性物品 + DisposableGoodsStock disposableGoodsStock = new DisposableGoodsStock(); + disposableGoodsStock.setName("test注射器"); + disposableGoodsStock.setSpecification("小号"); + //diposableGoods.setAmount(1100L); + disposableGoodsStock.setReferencePrice(1.2); + disposableGoodsStock.setMinApplyAmount(100); + disposableGoodsStock.setDisposableGoodsID(disposableGoods.getId()); + disposableGoodsStock.setWarehouseID(wareHouse_CSSD.getId()); + disposableGoodsStock.setWarehouseName(wareHouse_CSSD.getName()); + //批次 + Set batchList = new HashSet(); + // 批次定义 + DisposableGoodsBatch disposableGoodsBatch = new DisposableGoodsBatch(); + disposableGoodsBatch.setDiposableGoods(disposableGoods); + disposableGoodsBatch.setBatchNumber("1402180001"); + disposableGoodsBatch.setBarcode(disposableGoodsArray[0]); + disposableGoodsBatch.setCost(1.2); + Date date = null; + try { + date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2030-09-20 00:00:00"); + } catch (ParseException e) { + e.printStackTrace(); + } + disposableGoodsBatch.setExpDate(date); + objectDao.saveOrUpdate(disposableGoodsBatch); + ///// + DisposableGoodsBatchStock batch = new DisposableGoodsBatchStock(); + batch.setDiposableGoods(disposableGoodsStock); + batch.setDisposableGoodsBatchId(disposableGoodsBatch.getId()); + batch.setDisposableGoodsId(disposableGoods.getId()); + batch.setDisposableGoodsStockId(disposableGoodsStock.getId()); + batch.setWarehouseID(wareHouse_CSSD.getId()); + batch.setWarehouseName(wareHouse_CSSD.getName()); + batch.setBatchNumber("1402180001"); +// batch.setType(BarcodeDevice.BARCODE_TYPE_DIPOSABLEGOODS); + batch.setBarcode(disposableGoodsArray[0]); + batch.setStorage(700L); + batch.setCost(1.2); + + batch.setExpDate(date); + batchList.add(batch); + + // 批次定义 + DisposableGoodsBatch disposableGoodsBatch2 = new DisposableGoodsBatch(); + disposableGoodsBatch2.setDiposableGoods(disposableGoods); + disposableGoodsBatch2.setBatchNumber("1402180002"); + disposableGoodsBatch2.setBarcode(disposableGoodsArray[1]); + disposableGoodsBatch2.setCost(1.5); + disposableGoodsBatch2.setExpDate(date); + objectDao.saveOrUpdate(disposableGoodsBatch2); + DisposableGoodsBatchStock batch2 = new DisposableGoodsBatchStock(); + batch2.setDiposableGoods(disposableGoodsStock); + batch2.setDisposableGoodsBatchId(disposableGoodsBatch2.getId()); + batch2.setDisposableGoodsId(disposableGoods.getId()); + batch2.setDisposableGoodsStockId(disposableGoodsStock.getId()); + batch2.setWarehouseID(wareHouse_CSSD.getId()); + batch2.setWarehouseName(wareHouse_CSSD.getName()); + batch2.setBatchNumber("1402180002"); +// batch2.setType(BarcodeDevice.BARCODE_TYPE_DIPOSABLEGOODS); + batch2.setBarcode(disposableGoodsArray[1]); + batch2.setStorage(400L); + batch2.setCost(1.5); + batch2.setExpDate(date); + batchList.add(batch2); + + //标识号 + List list = new ArrayList(); + DisposableGoodsIdentification identification = new DisposableGoodsIdentification(); + identification.setAmount(200L); + identification.setBatchStock(batch2); + identification.setDisposableGoodsBatchID(disposableGoodsBatch2.getId()); + identification.setDisposableGoodsID(disposableGoods.getId()); + identification.setDisposableGoodsStockID(disposableGoodsStock.getId()); + identification.setWarehouseID(wareHouse_CSSD.getId()); + identification.setWarehouseName(wareHouse_CSSD.getName()); + identification.setIdentification("00001"); + identification.setPrice(1.5); + identification.setEntryDate(date); + list.add(identification); + DisposableGoodsIdentification identification22 = new DisposableGoodsIdentification(); + identification22.setAmount(200L); + identification22.setBatchStock(batch2); + identification22.setDisposableGoodsBatchID(disposableGoodsBatch2.getId()); + identification22.setDisposableGoodsID(disposableGoods.getId()); + identification22.setDisposableGoodsStockID(disposableGoodsStock.getId()); + identification22.setWarehouseID(wareHouse_CSSD.getId()); + identification22.setWarehouseName(wareHouse_CSSD.getName()); + identification22.setIdentification("00002"); + identification22.setPrice(1.6); + identification22.setEntryDate(date); + list.add(identification22); + batch2.setIdentifications(list); + + List list2 = new ArrayList(); + DisposableGoodsIdentification identification2 = new DisposableGoodsIdentification(); + identification2.setAmount(700L); + identification2.setBatchStock(batch); + identification2.setDisposableGoodsBatchID(disposableGoodsBatch.getId()); + identification2.setDisposableGoodsID(disposableGoods.getId()); + identification2.setDisposableGoodsStockID(disposableGoodsStock.getId()); + identification2.setWarehouseID(wareHouse_CSSD.getId()); + identification2.setWarehouseName(wareHouse_CSSD.getName()); + identification2.setIdentification("00002"); + identification2.setPrice(1.2); + identification2.setEntryDate(date); + list2.add(identification2); + + batch.setIdentifications(list2); + disposableGoodsStock.setGoodsBatchs(batchList); + disposableGoodsStock.recalculateAmount(); + objectDao.saveOrUpdate(disposableGoodsStock); + } + + public void createInvoiceGoods(){} + + private List getInvoiceGoods(){ + WareHouse wareHouse_CSSD = wareHouseManager.getDefaultWareHouseByUnitCode(Constants.ORG_UNIT_CODE_CSSD); + List list = new ArrayList(); + for (String barcode : tousseInstanceArray) { + JSONObject vo = new JSONObject(); + vo.put("barcode", barcode); + vo.put("sendAmount", 1); + vo.put("isRoutine", TousseInstance.ROUTINE_YES); + list.add(vo); + } + for (String barcode : disposableGoodsArray) { + JSONObject vo = new JSONObject(); + vo.put("barcode", barcode); + vo.put("tousseType", DisposableGoods.TYPE_NAME); + + JSONObject typeInfoOnScanned = new JSONObject(); + + DisposableGoodsBatchStock disposableGoodsBatchStock = diposableGoodsManager.getByWarehouseIDAndBarcode(wareHouse_CSSD.getId(), barcode); + /// + typeInfoOnScanned.put("disposableGoodsId", disposableGoodsBatchStock.getDisposableGoodsId()); + typeInfoOnScanned.put("disposableGoodsStockId", disposableGoodsBatchStock.getDisposableGoodsStockId()); + typeInfoOnScanned.put("disposableGoodsBatchId", disposableGoodsBatchStock.getDisposableGoodsBatchId()); + typeInfoOnScanned.put("disposableGoodsBatchStockId", disposableGoodsBatchStock.getId()); +// if(StringUtils.equals(tousseType,DisposableGoods.TYPE_EXPENSIVEDIPOSABLEGOODS)){ +// typeInfoOnScanned.put("expensiveDisposablegoodsId", null); +// } + /// + if("20150300001".equals(barcode)){ + vo.put("sendAmount", 700); + }else{ + vo.put("sendAmount", 300); + } + vo.put("isRoutine", TousseInstance.ROUTINE_YES); + vo.put("typeInfoOnScanned", typeInfoOnScanned); + list.add(vo); + } + for (String barcode : disinfectArray) { + JSONObject vo = new JSONObject(); + vo.put("barcode", barcode); + vo.put("sendAmount", 1); + vo.put("isRoutine", TousseInstance.ROUTINE_YES); + list.add(vo); + } + return list; + } + + private void initData(){ + cleanAll(); + initDirectoryInfo(); + initBaseData(); + initMaterialAndTousseData(); + makeActiveUser("cssduser1"); + createDiposableGoods2(); + createComboApplication();//先创建申请单 + createInvoiceGoods();//然后创建发货物品 + } + + private TousseItem getAppTousseItem(List appTousseItems,String name,Long appid){ + for (TousseItem tousseItem : appTousseItems) { + if(StringUtils.equals(tousseItem.getTousseName(), name) && appid.equals(tousseItem.getInvoicePlanID())){ + return tousseItem; + } + } + return null; + } + private TousseItem getAppTousseItem(List appTousseItems,String name){ + for (TousseItem tousseItem : appTousseItems) { + if(StringUtils.equals(tousseItem.getTousseName(), name)){ + return tousseItem; + } + } + return null; + } + /** + * 扫描发货物品,验证状态,成功 + * + */ + @Test + public void test_getInfoByBarcodeForInvoiceScan_status() throws Exception{ + initData(); + + TousseDefinition td = tousseDefinitionManager.getTousseDefinitionByName("Test开胸包"); + WareHouse wareHouse1 = wareHouseManager.getDefaultWareHouseByUnitCode(Constants.ORG_UNIT_CODE_CSSD); + + { + TousseInstance tousseInstance1 = new TousseInstance(); + tousseInstance1.setTousseDefinition(td); + tousseInstance1.setOrgUnitCoding(Constants.ORG_UNIT_CODE_NEIKE); + tousseInstance1.setOrgUnitName(""); + tousseInstance1.setReviewer(""); + tousseInstance1.setReviewerCode(""); + tousseInstance1.setReviewTime(new Date()); + tousseInstance1.setDisinfectIdentification(""); + tousseInstance1.setDisinfectProgram(""); + tousseInstance1.setFluctuationPrice(123D); + tousseInstance1.setPackageType(""); + tousseInstance1.setTousseName(td.getName()); + tousseInstance1.setStatus(TousseInstance.STATUS_STERILED); + tousseInstance1.setVirtualBasketSeqNum("001"); + tousseInstance1.setBarcode("010000123"); + tousseInstanceManager.setToWarehouse(tousseInstance1, wareHouse1); + tousseInstanceManager.saveOrUpdate(tousseInstance1); + + 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", "010000123"); + params.add("extraParam", extraParam); + JsonObject result = invoiceManager.getInfoByBarcodeForInvoiceScan(params); + assertEquals(result.get("success").getAsBoolean(),true); + } + + } + /** + * 扫描发货物品,验证状态,失败 + * + */ + @Test + public void test_getInfoByBarcodeForInvoiceScan_status_failed() throws Exception{ + initData(); + + TousseDefinition td = tousseDefinitionManager.getTousseDefinitionByName("Test开胸包"); + WareHouse wareHouse1 = wareHouseManager.getDefaultWareHouseByUnitCode(Constants.ORG_UNIT_CODE_CSSD); + + { + TousseInstance tousseInstance1 = new TousseInstance(); + tousseInstance1.setTousseDefinition(td); + tousseInstance1.setOrgUnitCoding(Constants.ORG_UNIT_CODE_NEIKE); + tousseInstance1.setOrgUnitName(""); + tousseInstance1.setReviewer(""); + tousseInstance1.setReviewerCode(""); + tousseInstance1.setReviewTime(new Date()); + tousseInstance1.setDisinfectIdentification(""); + tousseInstance1.setDisinfectProgram(""); + tousseInstance1.setFluctuationPrice(123D); + tousseInstance1.setPackageType(""); + tousseInstance1.setTousseName(td.getName()); + tousseInstance1.setStatus(TousseInstance.STATUS_PACKED); + tousseInstance1.setVirtualBasketSeqNum("001"); + tousseInstance1.setBarcode("010000123"); + tousseInstanceManager.setToWarehouse(tousseInstance1, wareHouse1); + tousseInstanceManager.saveOrUpdate(tousseInstance1); + + 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", "010000123"); + params.add("extraParam", extraParam); + JsonObject result = invoiceManager.getInfoByBarcodeForInvoiceScan(params); + assertEquals(result.get("success").getAsBoolean(),false); + } + + } + /** + * 扫描发货物品,验证科室,成功 + * + */ + @Test + public void test_getInfoByBarcodeForInvoiceScan_depart() throws Exception{ + initData(); + + TousseDefinition td = tousseDefinitionManager.getTousseDefinitionByName("Test开胸包"); + WareHouse wareHouse1 = wareHouseManager.getDefaultWareHouseByUnitCode(Constants.ORG_UNIT_CODE_CSSD); + + { + td.setLimitInvoiceDepart(TousseDefinition.STR_YES); + TousseInstance tousseInstance1 = new TousseInstance(); + tousseInstance1.setTousseDefinition(td); + tousseInstance1.setDepart(Constants.ORG_UNIT_NAME_NEIKE); + tousseInstance1.setDepartCoding(Constants.ORG_UNIT_CODE_NEIKE); + tousseInstance1.setOrgUnitCoding(Constants.ORG_UNIT_CODE_NEIKE); + tousseInstance1.setOrgUnitName(""); + tousseInstance1.setReviewer(""); + tousseInstance1.setReviewerCode(""); + tousseInstance1.setReviewTime(new Date()); + tousseInstance1.setDisinfectIdentification(""); + tousseInstance1.setDisinfectProgram(""); + tousseInstance1.setFluctuationPrice(123D); + tousseInstance1.setPackageType(""); + tousseInstance1.setTousseName(td.getName()); + tousseInstance1.setStatus(TousseInstance.STATUS_STERILED); + tousseInstance1.setVirtualBasketSeqNum("001"); + tousseInstance1.setBarcode("010000123"); + tousseInstanceManager.setToWarehouse(tousseInstance1, wareHouse1); + tousseInstanceManager.saveOrUpdate(tousseInstance1); + + 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", "010000123"); + params.add("extraParam", extraParam); + JsonObject result = invoiceManager.getInfoByBarcodeForInvoiceScan(params); + assertEquals(result.get("success").getAsBoolean(),true); + } + + } + /** + * 扫描发货物品,验证科室,失败 + * + */ + @Test + public void test_getInfoByBarcodeForInvoiceScan_depart_failed() throws Exception{ + initData(); + + TousseDefinition td = tousseDefinitionManager.getTousseDefinitionByName("Test开胸包"); + WareHouse wareHouse1 = wareHouseManager.getDefaultWareHouseByUnitCode(Constants.ORG_UNIT_CODE_CSSD); + + { + td.setLimitInvoiceDepart(TousseDefinition.STR_YES); + TousseInstance tousseInstance1 = new TousseInstance(); + tousseInstance1.setTousseDefinition(td); + tousseInstance1.setDepart(Constants.ORG_UNIT_NAME_NEIKE); + tousseInstance1.setDepartCoding(Constants.ORG_UNIT_CODE_NEIKE); + tousseInstance1.setOrgUnitCoding(Constants.ORG_UNIT_CODE_NEIKE); + tousseInstance1.setOrgUnitName(""); + tousseInstance1.setReviewer(""); + tousseInstance1.setReviewerCode(""); + tousseInstance1.setReviewTime(new Date()); + tousseInstance1.setDisinfectIdentification(""); + tousseInstance1.setDisinfectProgram(""); + tousseInstance1.setFluctuationPrice(123D); + tousseInstance1.setPackageType(""); + tousseInstance1.setTousseName(td.getName()); + tousseInstance1.setStatus(TousseInstance.STATUS_STERILED); + tousseInstance1.setVirtualBasketSeqNum("001"); + tousseInstance1.setBarcode("010000123"); + tousseInstanceManager.setToWarehouse(tousseInstance1, wareHouse1); + tousseInstanceManager.saveOrUpdate(tousseInstance1); + + JsonObject extraParam = new JsonObject(); + extraParam.addProperty("mode", "depart"); + extraParam.addProperty("departCodeOfInvoicePlan", Constants.ORG_UNIT_CODE_WAIKE); + extraParam.addProperty("sourceWarehouseId", wareHouse1.getId().toString()); + extraParam.addProperty("invoiceType", Invoice.TYPE_APPLICATION); + + JsonObject params = new JsonObject(); + params.addProperty("barcode", "010000123"); + params.add("extraParam", extraParam); + JsonObject result = invoiceManager.getInfoByBarcodeForInvoiceScan(params); + assertEquals(result.get("success").getAsBoolean(),false); + } + + } + + /** + * 扫描发货物品,验证失效期,成功 + * + */ + @Test + public void test_getInfoByBarcodeForInvoiceScan_validUntil() throws Exception{ + initData(); + + TousseDefinition td = tousseDefinitionManager.getTousseDefinitionByName("Test开胸包"); + WareHouse wareHouse1 = wareHouseManager.getDefaultWareHouseByUnitCode(Constants.ORG_UNIT_CODE_CSSD); + + { + td.setLimitInvoiceDepart(TousseDefinition.STR_YES); + TousseInstance tousseInstance1 = new TousseInstance(); + tousseInstance1.setTousseDefinition(td); + tousseInstance1.setDepart(Constants.ORG_UNIT_NAME_NEIKE); + tousseInstance1.setDepartCoding(Constants.ORG_UNIT_CODE_NEIKE); + tousseInstance1.setOrgUnitCoding(Constants.ORG_UNIT_CODE_NEIKE); + tousseInstance1.setOrgUnitName(""); + tousseInstance1.setReviewer(""); + tousseInstance1.setReviewerCode(""); + tousseInstance1.setReviewTime(new Date()); + tousseInstance1.setDisinfectIdentification(""); + tousseInstance1.setDisinfectProgram(""); + tousseInstance1.setFluctuationPrice(123D); + tousseInstance1.setPackageType(""); + tousseInstance1.setTousseName(td.getName()); + tousseInstance1.setValidUntil(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("3030-09-20 00:00:00")); + tousseInstance1.setStatus(TousseInstance.STATUS_STERILED); + tousseInstance1.setVirtualBasketSeqNum("001"); + tousseInstance1.setBarcode("010000123"); + tousseInstanceManager.setToWarehouse(tousseInstance1, wareHouse1); + tousseInstanceManager.saveOrUpdate(tousseInstance1); + + 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", "010000123"); + params.add("extraParam", extraParam); + JsonObject result = invoiceManager.getInfoByBarcodeForInvoiceScan(params); + assertEquals(result.get("success").getAsBoolean(),true); + } + + } + /** + * 扫描发货物品,验证失效期,失败 + * + */ + @Test + public void test_getInfoByBarcodeForInvoiceScan_validUntil_failed() throws Exception{ + initData(); + + TousseDefinition td = tousseDefinitionManager.getTousseDefinitionByName("Test开胸包"); + WareHouse wareHouse1 = wareHouseManager.getDefaultWareHouseByUnitCode(Constants.ORG_UNIT_CODE_CSSD); + + { + td.setLimitInvoiceDepart(TousseDefinition.STR_YES); + TousseInstance tousseInstance1 = new TousseInstance(); + tousseInstance1.setTousseDefinition(td); + tousseInstance1.setDepart(Constants.ORG_UNIT_NAME_NEIKE); + tousseInstance1.setDepartCoding(Constants.ORG_UNIT_CODE_NEIKE); + tousseInstance1.setOrgUnitCoding(Constants.ORG_UNIT_CODE_NEIKE); + tousseInstance1.setOrgUnitName(""); + tousseInstance1.setReviewer(""); + tousseInstance1.setReviewerCode(""); + tousseInstance1.setReviewTime(new Date()); + tousseInstance1.setDisinfectIdentification(""); + tousseInstance1.setDisinfectProgram(""); + tousseInstance1.setFluctuationPrice(123D); + tousseInstance1.setPackageType(""); + tousseInstance1.setTousseName(td.getName()); + tousseInstance1.setValidUntil(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2000-09-20 00:00:00")); + tousseInstance1.setStatus(TousseInstance.STATUS_STERILED); + tousseInstance1.setVirtualBasketSeqNum("001"); + tousseInstance1.setBarcode("010000123"); + tousseInstanceManager.setToWarehouse(tousseInstance1, wareHouse1); + tousseInstanceManager.saveOrUpdate(tousseInstance1); + + 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", "010000123"); + params.add("extraParam", extraParam); + JsonObject result = invoiceManager.getInfoByBarcodeForInvoiceScan(params); + assertEquals(result.get("success").getAsBoolean(),false); + } + + } + +}