Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java =================================================================== diff -u -r14012 -r14101 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 14012) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 14101) @@ -2,6 +2,7 @@ import java.io.Serializable; import java.lang.reflect.InvocationTargetException; +import java.math.BigDecimal; import java.sql.ResultSet; import java.sql.SQLException; import java.text.SimpleDateFormat; @@ -2660,7 +2661,9 @@ DisposableGoods diposableGoods = diposableGoodsManager.getDisposableGoodsByName(diposableName, sp); Double price = diposableGoods.getReferencePrice(); if (diposableGoods != null) { - price = MathTools.mul(price, dpf, 2); + //price = MathTools.mul(price, dpf, 2); + BigDecimal bg = MathTools.mul(price, dpf); + price = bg == null ? 0.0 : bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); Double rowPrice = MathTools.mul(price,tousseItem.getAmount(),2); tousseItem.setPrice(price); tousseItem.setRowPrice(rowPrice); Index: ssts-web/src/test/java/test/forgon/disinfectsystem/application/TestRecyclingApplication.java =================================================================== diff -u -r14032 -r14101 --- ssts-web/src/test/java/test/forgon/disinfectsystem/application/TestRecyclingApplication.java (.../TestRecyclingApplication.java) (revision 14032) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/application/TestRecyclingApplication.java (.../TestRecyclingApplication.java) (revision 14101) @@ -325,7 +325,8 @@ // 要先将科室供应室配置里面的自动合并申请单设为true,否则是不会自动合并申请单的 SupplyRoomConfig config = supplyRoomConfigManager.getSystemParamsObj(); if (config != null && !config.getAutoMergeApplication()) { - config.setAutoMergeApplication(true); + config.setAutoMergeApplication(true);//设置申请单合并为 true + config.setIsORAppFormMerge(true);//设置手术室申请单合并为 true } SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -421,7 +422,8 @@ // 要先将科室供应室配置里面的自动合并申请单设为true,否则是不会自动合并申请单的 SupplyRoomConfig config = supplyRoomConfigManager.getSystemParamsObj(); if (config != null && !config.getAutoMergeApplication()) { - config.setAutoMergeApplication(true); + config.setAutoMergeApplication(true);//设置申请单合并为 true + config.setIsORAppFormMerge(true);//设置手术室申请单合并为 true } SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -517,7 +519,9 @@ // 要先将科室供应室配置里面的自动合并申请单设为true,否则是不会自动合并申请单的 SupplyRoomConfig config = supplyRoomConfigManager.getSystemParamsObj(); if (config != null && !config.getAutoMergeApplication()) { - config.setAutoMergeApplication(true); + config.setAutoMergeApplication(true);//设置申请单合并为 true + config.setIsORAppFormMerge(true);//设置手术室申请单合并为 true + supplyRoomConfigManager.saveOrUpdate(config); } SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Collection applyItemVos = new ArrayList(); @@ -592,7 +596,7 @@ List rList = objectDao.findBySql( RecyclingApplication.class.getSimpleName(), sql); assertNotNull(rList); - // 合并后只有一张单 + // 合并后只有一张单(由于该申请单的申请科室"测试手术室"为二级供应室,二级供应室申请单根据科室供应室的手术室申请单是否合并的配置决定申请单是否合并) assertEquals(1, rList.size()); RecyclingApplication recyclingApplication = rList.get(0); List applicationItems3 = recyclingApplication @@ -911,7 +915,8 @@ //在原有的申请单上再次添加器械包 RecyclingApplication recyclingApplication = rList.get(0); - + //需事先清空集合,否则之前的元素还在集合中 + applyItemVos.clear(); appendToCollection(applyItemVos, "眼垫", 6 , "器械包", "是", 0); recyclingApplicationManager.saveRecyclingApplication( @@ -1271,7 +1276,7 @@ initCSSDData(); makeActiveUser("oruser1"); - String foreignTousseTreeData = "0,测试外来器械包,工商银行,1,0,,[0,测试外来器械包材料,5,是]"; + String foreignTousseTreeData = "[{tousseItemId:0,tousseDefinitionId:0,tousseName:\"测试外来器械包\",supplierName:\"工商银行\",amount:1,price:0,materials:[0,测试外来器械包材料,5,是]}]"; ForeignTousseApplication foreignTousseApplication = new ForeignTousseApplication(); foreignTousseApplication .setType(InvoicePlan.TYPE_FOREIGNTOUSSEAPPLIACTION); @@ -1361,9 +1366,11 @@ Map tousseNameAndAmount = new HashMap( items.size()); TousseItem tousseItem = new TousseItem(); + tousseItem.setTousseDefinitionId(tousseDefinition.getId()); tousseItem.setTousseName(name); tousseItem.setInvoicePlanID(appId); tousseItem.setAmount(2); + tousseItem.setEditAmount(2); tousseItem.setDiposable("否"); tousseItem.setInvoicePlan(customRecyclingApplication); tousseNameAndAmount.put(tousseItem.getTousseName(), tousseItem.getAmount()); @@ -1445,9 +1452,10 @@ assertNull(msg); items = application.getApplicationItems(); assertNotNull(items); - assertEquals(1, items.size()); + //第一次创建申请了一条注射器[5ML]的申请项,后来又追加了一条注射器[10ML]的申请项,所以最新申请数量应该是2 + assertEquals(2, items.size()); - item = items.get(0); + item = items.get(1);//第一个申请物品是注射器[5ML],第二个才是注射器[10ML] assertEquals("注射器[10ML]", item.getTousseName()); assertEquals(200, item.getAmount().intValue()); @@ -1457,7 +1465,7 @@ vo2.setTousseName("纱块[6*8]"); vo2.setTousseType("一次性物品"); vo2.setAmount(300); - + newTousseItemVoList.clear();//事先清空 newTousseItemVoList.add(vo2); try{ recyclingApplicationManager.saveRecyclingApplication(application, newTousseItemVoList, true); @@ -1469,13 +1477,13 @@ assertNull(msg); items = application.getApplicationItems(); assertNotNull(items); - assertEquals(2, items.size()); + assertEquals(3, items.size()); - item = items.get(0); + item = items.get(1); assertEquals("注射器[10ML]", item.getTousseName()); assertEquals(200, item.getAmount().intValue()); - item = items.get(1); + item = items.get(2); assertEquals("纱块[6*8]", item.getTousseName()); assertEquals(300, item.getAmount().intValue()); @@ -1529,9 +1537,10 @@ assertNull(msg); items = application.getApplicationItems(); assertNotNull(items); - assertEquals(1, items.size()); + //同1452情况一样,第一次创建申请了一条注射器[5ML]的申请项,后来又追加了一条注射器[10ML]的申请项,所以最新申请数量应该是2 + assertEquals(2, items.size()); - item = items.get(0); + item = items.get(1); assertEquals("注射器[10ML]", item.getTousseName()); assertEquals(200, item.getAmount().intValue()); @@ -1541,7 +1550,7 @@ vo2.setTousseName("纱块[6*8]"); vo2.setTousseType("一次性物品"); vo2.setAmount(300); - + newTousseItemVoList.clear(); newTousseItemVoList.add(vo2); try{ recyclingApplicationManager.saveRecyclingApplication(application, newTousseItemVoList, true); @@ -1553,13 +1562,13 @@ assertNull(msg); items = application.getApplicationItems(); assertNotNull(items); - assertEquals(2, items.size()); + assertEquals(3, items.size()); - item = items.get(0); + item = items.get(1); assertEquals("注射器[10ML]", item.getTousseName()); assertEquals(200, item.getAmount().intValue()); - item = items.get(1); + item = items.get(2); assertEquals("纱块[6*8]", item.getTousseName()); assertEquals(300, item.getAmount().intValue()); Index: ssts-web/src/test/java/test/forgon/disinfectsystem/AbstractCSSDTest.java =================================================================== diff -u -r14096 -r14101 --- ssts-web/src/test/java/test/forgon/disinfectsystem/AbstractCSSDTest.java (.../AbstractCSSDTest.java) (revision 14096) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/AbstractCSSDTest.java (.../AbstractCSSDTest.java) (revision 14101) @@ -883,8 +883,8 @@ supplyRoomConfig.setDayStartTime("05:00"); supplyRoomConfig.setDisposableGoodsExpTime(20); supplyRoomConfig.setSupplyRoomType(SupplyRoomConfig.SUPPLYROOM_TYPE_0); - supplyRoomConfig.setDefalutTaskGroup("常规组"); - supplyRoomConfig.setCustomTousseDefaultTaskGroup("常规组"); + supplyRoomConfig.setDefalutTaskGroup("常规组");//外来器械处理任务组 + supplyRoomConfig.setCustomTousseDefaultTaskGroup("常规组");//自定义器械处理任务组 supplyRoomConfig.setUnitName("阳光医院"); supplyRoomConfig.setAfterRecyclingTousseDeliver(false); supplyRoomConfig.setAutoSignInvoice(false); @@ -2065,6 +2065,91 @@ disposableGoods3.setReferencePrice(1.4); disposableGoods3.setType("纱块"); diposableGoodsManager.saveOrUpdate(disposableGoods3); + + //增加申请测试用例所需用到的一次性物品定义数据 + DisposableGoods diposableGoods = new DisposableGoods(); + diposableGoods.setName("一次性导尿包"); + diposableGoods.setSpecification("12#"); + diposableGoods.setIsPartOfTousseMaterial(DisposableGoodsStock.CONSTANT_YES); + diposableGoodsManager.saveOrUpdate(diposableGoods); + + diposableGoods = new DisposableGoods(); + diposableGoods.setName("一次性压舌板"); + diposableGoods.setIsPartOfTousseMaterial(DisposableGoodsStock.CONSTANT_YES); + diposableGoods.setSpecification("木质"); + diposableGoodsManager.saveOrUpdate(diposableGoods); + + diposableGoods = new DisposableGoods(); + diposableGoods.setName("动脉采血器"); + diposableGoods.setIsPartOfTousseMaterial(DisposableGoodsStock.CONSTANT_YES); + diposableGoods.setSpecification("2ML"); + diposableGoodsManager.saveOrUpdate(diposableGoods); + + diposableGoods = new DisposableGoods(); + diposableGoods.setName("一次性腰穿包"); + diposableGoods.setIsPartOfTousseMaterial(DisposableGoodsStock.CONSTANT_YES); + diposableGoods.setSpecification("9#"); + diposableGoodsManager.saveOrUpdate(diposableGoods); + + diposableGoods = new DisposableGoods(); + diposableGoods.setName("灭菌棉球"); + diposableGoods.setIsPartOfTousseMaterial(DisposableGoodsStock.CONSTANT_YES); + diposableGoods.setSpecification("10粒/包"); + diposableGoodsManager.saveOrUpdate(diposableGoods); + + diposableGoods = new DisposableGoods(); + diposableGoods.setName("一次性弯盘"); + diposableGoods.setIsPartOfTousseMaterial(DisposableGoodsStock.CONSTANT_YES); + diposableGoods.setSpecification("单腰A型"); + diposableGoodsManager.saveOrUpdate(diposableGoods); + + diposableGoods = new DisposableGoods(); + diposableGoods.setName("一次性使用灌肠袋"); + diposableGoods.setIsPartOfTousseMaterial(DisposableGoodsStock.CONSTANT_YES); + diposableGoodsManager.saveOrUpdate(diposableGoods); + + diposableGoods = new DisposableGoods(); + diposableGoods.setName("灭菌纱块"); + diposableGoods.setIsPartOfTousseMaterial(DisposableGoodsStock.CONSTANT_YES); + diposableGoods.setSpecification("6*8CM2块/包(100/盒)"); + diposableGoodsManager.saveOrUpdate(diposableGoods); + + diposableGoods = new DisposableGoods(); + diposableGoods.setName("一次型使用无菌注射针"); + diposableGoods.setIsPartOfTousseMaterial(DisposableGoodsStock.CONSTANT_YES); + diposableGoods.setSpecification("6#"); + diposableGoodsManager.saveOrUpdate(diposableGoods); + + diposableGoods = new DisposableGoods(); + diposableGoods.setName("医用棉签"); + diposableGoods.setSpecification("12CM20支/包"); + diposableGoods.setIsPartOfTousseMaterial(DisposableGoodsStock.CONSTANT_YES); + diposableGoods.setType("医用棉签"); + diposableGoodsManager.saveOrUpdate(diposableGoods); + + diposableGoods = new DisposableGoods(); + diposableGoods.setName("灭菌纱块"); + diposableGoods.setIsPartOfTousseMaterial(DisposableGoodsStock.CONSTANT_YES); + diposableGoods.setSpecification("6*8CM2块/包(100/盒)"); + diposableGoodsManager.saveOrUpdate(diposableGoods); + + diposableGoods = new DisposableGoods(); + diposableGoods.setName("灭菌纱块"); + diposableGoods.setIsPartOfTousseMaterial(DisposableGoodsStock.CONSTANT_YES); + diposableGoods.setSpecification("8*12CM2块/包"); + diposableGoodsManager.saveOrUpdate(diposableGoods); + + diposableGoods = new DisposableGoods(); + diposableGoods.setName("注射器"); + diposableGoods.setIsPartOfTousseMaterial(DisposableGoodsStock.CONSTANT_YES); + diposableGoods.setSpecification("20ML"); + diposableGoodsManager.saveOrUpdate(diposableGoods); + + diposableGoods = new DisposableGoods(); + diposableGoods.setName("一次性使用吸痰管"); + diposableGoods.setIsPartOfTousseMaterial(DisposableGoodsStock.CONSTANT_YES); + diposableGoods.setSpecification("12#"); + diposableGoodsManager.saveOrUpdate(diposableGoods); // 开始入库 // 注射器【5ML】 1000个,有1个批次,1个标识号 GodownEntry entry = new GodownEntry();