Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java =================================================================== diff -u -r18165 -r18170 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 18165) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 18170) @@ -422,7 +422,9 @@ if (Constants.STR_YES.equals(rapidFurnace)) { //是快速炉(中大五院的需求) Double price = sterilizer.getPrice(); int size = allTousseInstancesOfSterile.size(); - unitPrice = MathTools.divide(price, size, 2); + if (price != null && size > 0) { + unitPrice = MathTools.divide(price, size, 2); + } } // 更新器械包的状态 for (TousseInstance tousseInstance : allTousseInstancesOfSterile) { Index: ssts-web/src/test/java/test/forgon/disinfectsystem/sterileRecord/SterieRecordManagerTests.java =================================================================== diff -u -r17827 -r18170 --- ssts-web/src/test/java/test/forgon/disinfectsystem/sterileRecord/SterieRecordManagerTests.java (.../SterieRecordManagerTests.java) (revision 17827) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/sterileRecord/SterieRecordManagerTests.java (.../SterieRecordManagerTests.java) (revision 18170) @@ -23,6 +23,7 @@ import com.forgon.directory.acegi.tools.AcegiHelper; import com.forgon.directory.model.BarcodeDevice; +import com.forgon.directory.vo.LoginUserData; import com.forgon.disinfectsystem.entity.basedatamanager.container.Container; import com.forgon.disinfectsystem.entity.basedatamanager.sterilizer.Sterilizer; import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; @@ -702,4 +703,73 @@ sterilizationRecordManager.saveOrUpdateSterilizationRecord(sr, tousseInstanceBarcodes, new ArrayList(), null); return sr; } + /** + * 此方法主要测试快速炉灭菌 + * + * 模拟以下一种场景 + * 1、用快速炉灭菌3个Test开胸包实例,快速炉的灭菌价格是100元 预期:灭菌后每个包实例的价格和浮动价格都是为33.33元 + * + */ + @Test + public void testRapidFurnaceSterilization() { + initCSSDData(); + makeActiveUser("admin"); + LoginUserData userData = AcegiHelper.getLoginUser(); + String userName = userData.getUserName(); //登录用户的用户名 + String userFullName = userData.getUserFullName(); //登录用户的全名 + String currentOrgUnitCode = userData.getCurrentOrgUnitCode(); //登录用户的用当前科室编码 + + //装配管理 + TousseDefinition td_开胸包 = tousseDefinitionManager.getTousseDefinitionByName("Test开胸包"); + TousseInstance ti_开胸包1 = new TousseInstance(); + ti_开胸包1.setTousseDefinition(td_开胸包); + ti_开胸包1.setOperationTime(new Date()); + ti_开胸包1.setBarcode(serialNumManager.getSerialNumberStr(SerialNum.TYPE_BARCODE)); + ti_开胸包1.setStatus(TousseInstance.STATUS_PACKED); + TousseInstance ti_开胸包2 = new TousseInstance(); + ti_开胸包2.setTousseDefinition(td_开胸包); + ti_开胸包2.setOperationTime(new Date()); + ti_开胸包2.setBarcode(serialNumManager.getSerialNumberStr(SerialNum.TYPE_BARCODE)); + ti_开胸包2.setStatus(TousseInstance.STATUS_PACKED); + TousseInstance ti_开胸包3 = new TousseInstance(); + ti_开胸包3.setTousseDefinition(td_开胸包); + ti_开胸包3.setOperationTime(new Date()); + ti_开胸包3.setBarcode(serialNumManager.getSerialNumberStr(SerialNum.TYPE_BARCODE)); + ti_开胸包3.setStatus(TousseInstance.STATUS_PACKED); + tousseInstanceManager.saveOrUpdate(ti_开胸包1); + tousseInstanceManager.saveOrUpdate(ti_开胸包2); + tousseInstanceManager.saveOrUpdate(ti_开胸包3); + + //审核管理 + String tiIds = String.format("%s;%s;%s", ti_开胸包1.getId().toString(), ti_开胸包2.getId().toString(), ti_开胸包3.getId().toString()); + + packingManager.reviewTousseInstance(tiIds, "", Constants.TASKGROUP_CHANGGUZU, userFullName, userName, new Date()); + + //灭菌管理 + Sterilizer s_1号高温蒸汽灭菌炉 = sterilizerManager.getSterilizerByName("1号高温蒸汽灭菌炉"); //灭菌炉 + s_1号高温蒸汽灭菌炉.setRapidFurnace(com.forgon.Constants.STR_YES); + s_1号高温蒸汽灭菌炉.setPrice(100D); + SterilizationRecord sr1 = new SterilizationRecord(); //灭菌记录 + sr1.setStartDate(new Date()); + sr1.setOrgUnitCoding(currentOrgUnitCode); + sr1.setSterilizationUser(userFullName); + sr1.setSterilizerName(s_1号高温蒸汽灭菌炉.getName()); + sr1.setFrequency(2); + sr1.setStatus(""); + Collection tousseInstanceBarcodes = new ArrayList(); + tousseInstanceBarcodes.add(ti_开胸包1.getBarcode()); + tousseInstanceBarcodes.add(ti_开胸包2.getBarcode()); + tousseInstanceBarcodes.add(ti_开胸包3.getBarcode()); + sterilizationRecordManager.saveOrUpdateSterilizationRecord(sr1, tousseInstanceBarcodes, new ArrayList(), null); + + //完成灭菌 + Collection srIds = Collections.singleton(sr1.getId()); + sterilizationRecordManager.completeSterilization(srIds, currentOrgUnitCode, userFullName, userFullName, false); + assertEquals(ti_开胸包1.getPrice(), 33.33D); + assertEquals(ti_开胸包1.getFluctuationPrice(), 33.33D); + assertEquals(ti_开胸包2.getPrice(), 33.33D); + assertEquals(ti_开胸包2.getFluctuationPrice(), 33.33D); + assertEquals(ti_开胸包3.getPrice(), 33.33D); + assertEquals(ti_开胸包3.getFluctuationPrice(), 33.33D); + } }