Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/sterilizer/Sterilizer.java =================================================================== diff -u -r30209 -r30245 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/sterilizer/Sterilizer.java (.../Sterilizer.java) (revision 30209) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/sterilizer/Sterilizer.java (.../Sterilizer.java) (revision 30245) @@ -222,7 +222,7 @@ * 灭菌炉管理中增加监测包扫描提示默认值 */ public static final String MONITORTOUSSEDISPLAY_EVERYTHING = "每炉(第1炉除外)"; - public static final String MONITORTOUSSEDISPLAY_FIRST = "每天第一炉"; + public static final String MONITORTOUSSEDISPLAY_FIRST = "每天第1炉"; public static final String MONITORTOUSSEDISPLAY_IMPLANT = "有植入物时"; public static final String MONITORTOUSSEDISPLAY_FOREIGN_TOUSSE = "有外来器械包时"; Index: forgon-tools/src/main/java/com/forgon/Constants.java =================================================================== diff -u -r30035 -r30245 --- forgon-tools/src/main/java/com/forgon/Constants.java (.../Constants.java) (revision 30035) +++ forgon-tools/src/main/java/com/forgon/Constants.java (.../Constants.java) (revision 30245) @@ -25,7 +25,7 @@ "4.7.8","4.7.9","4.8.0","4.8.1","4.8.2","4.8.3","4.8.4","4.8.5","4.8.6","4.8.7","4.8.8","4.8.9","4.9.0","4.9.1","4.9.2","4.9.3","4.9.4","4.9.5","4.9.6", "4.9.7","4.9.8","4.9.9","4.9.10","4.9.11","4.9.12","4.9.13","4.9.14","4.9.15","4.9.16","4.9.17","4.9.18","4.9.19","4.9.20","4.9.21","4.9.22","4.9.23","4.9.24", "4.9.25","4.9.26","4.9.27","4.9.28","4.9.29","4.9.30","4.9.31","4.9.32","4.9.33","4.9.34","4.9.35","4.9.36","4.9.37","4.9.38","4.9.39","4.9.40","4.9.41","4.9.42","4.9.43","4.9.44", - "4.9.45","4.9.46","4.9.47","4.9.48","4.9.49","4.9.50","4.9.51","4.9.52","4.9.53","4.9.54","4.9.55","4.9.56","4.9.57","4.9.58","4.9.59","4.9.60","4.9.61"}; + "4.9.45","4.9.46","4.9.47","4.9.48","4.9.49","4.9.50","4.9.51","4.9.52","4.9.53","4.9.54","4.9.55","4.9.56","4.9.57","4.9.58","4.9.59","4.9.60","4.9.61","4.9.62"}; // 版本列表(4.0版本升级4.1版需要分两步:先从4.0升到4.1.0、然后从4.1.0升级4.1最新版本) /*public final static String[] SOFTWARE_VERSION_ARRAY = new String[] { Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java =================================================================== diff -u -r30209 -r30245 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 30209) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 30245) @@ -1588,6 +1588,9 @@ return result; } isNewRecord = true; + + // 验证是否需要扫描监测包条码 + isNeedScanMonitoringTousse(sr, sterilizationRecord, tousseInstanceBarcodes, containerBarcodes); } // 在新建灭菌记录,或者编辑暂存状态的灭菌记录时,允许修改炉次,需要验证炉次是否正确(HBSXKYY-19) @@ -2071,6 +2074,128 @@ return result; } /** + * 验证验证是否需要扫描监测包条码 + * @param sr + * @param sterilizationRecord + * @param tousseInstanceBarcodes + */ + private void isNeedScanMonitoringTousse(Sterilizer sr, SterilizationRecord sterilizationRecord, Collection tousseInstanceBarcodes, Collection containerBarcodes) { + + String monitorTousseDisplay = sr.getMonitorTousseDisplay(); + String monitorPackageBarcode = sterilizationRecord.getMonitorPackageBarcode(); + String chemistryPackageBarcode = sterilizationRecord.getChemistryPackageBarcode(); + Boolean includeForeignTousse = false; + Boolean includeImplant = false; + Integer frequency = sterilizationRecord.getFrequency(); + + if (StringUtils.isNotBlank(monitorTousseDisplay)) { + + // 器械包条码 + if(CollectionUtils.isNotEmpty(tousseInstanceBarcodes)){ + String sql = "select td.includeImplant, td.tousseType from TousseDefinition td " + + "join TousseInstance ti on ti.tousseDefinition_id = td.id " + + "join barcodeDevice bd on bd.id = ti.id " + + "where " + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("bd.barcode", tousseInstanceBarcodes); + ResultSet rs = null; + try { + rs = objectDao.executeSql(sql); + while(rs.next()){ + int includeImplantInt = rs.getInt("includeImplant"); + String tousseType = rs.getString("tousseType"); + if(!includeImplant && includeImplantInt == TousseDefinition.INCLUDE_IMPLANT){ + includeImplant = true; + } + if(!includeForeignTousse && StringUtils.equals(tousseType, TousseDefinition.PACKAGE_TYPE_FOREIGN)){ + includeForeignTousse = true; + } + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + } + + // 篮筐条码 + if(CollectionUtils.isNotEmpty(containerBarcodes) && !includeForeignTousse && !includeImplant){ + for (String barcode : containerBarcodes) { + ReviewedBasket reviewedBasket = reviewedBasketManager.getReviewedBasketForSterilizeRecordNew(barcode, null); + if (reviewedBasket == null) { + continue; + } + Collection tousseInstances = tousseInstanceManager.getReviewedTousseInstance(reviewedBasket); + if (CollectionUtils.isNotEmpty(tousseInstances)) { + for (TousseInstance tousseInstance : tousseInstances) { + if(includeImplant && includeForeignTousse){ + break; + } + TousseDefinition td = tousseInstance.getTousseDefinition(); + int includeImplantInt = td.getIncludeImplant() == null ? TousseDefinition.UNINCLUDE_IMPLANT : td.getIncludeImplant().intValue(); + String tousseType = td.getTousseType(); + if(!includeImplant && includeImplantInt == TousseDefinition.INCLUDE_IMPLANT){ + includeImplant = true; + } + if(!includeForeignTousse && StringUtils.equals(tousseType, TousseDefinition.PACKAGE_TYPE_FOREIGN)){ + includeForeignTousse = true; + } + } + } + } + } + + String[] monitorTousseDisplayArray = monitorTousseDisplay.split(";"); + for (int i = 0; i < monitorTousseDisplayArray.length; i++) { + String item = monitorTousseDisplayArray[i]; + //每炉 + if (item.indexOf(Sterilizer.MONITORTOUSSEDISPLAY_EVERYTHING) >= 0) { + if (item.indexOf("生物") >= 0 && item.indexOf("化学") >= 0 && StringUtils.isBlank(monitorPackageBarcode) && StringUtils.isBlank(chemistryPackageBarcode)) { + throw new SystemException("请扫描化学监测包条码和生物监测包条码!"); + } else if (item.indexOf("生物") >= 0 && StringUtils.isBlank(monitorPackageBarcode)) { + throw new SystemException("请扫描生物监测包条码!"); + } else if (item.indexOf("化学") >= 0 && StringUtils.isBlank(chemistryPackageBarcode)) { + throw new SystemException("请扫描化学监测包条码!"); + } else if (item.indexOf("生物") == -1 && item.indexOf("化学") == -1 && StringUtils.isBlank(monitorPackageBarcode)) { + throw new SystemException("请扫描生物监测包条码!"); + } + //每天第一炉 + } else if (item.indexOf(Sterilizer.MONITORTOUSSEDISPLAY_FIRST) >= 0 && frequency == 1) { + if (item.indexOf("生物") >= 0 && item.indexOf("化学") >= 0 && StringUtils.isBlank(monitorPackageBarcode) && StringUtils.isBlank(chemistryPackageBarcode)) { + throw new SystemException("请扫描化学监测包条码和生物监测包条码!"); + } else if (item.indexOf("生物") >= 0 && StringUtils.isBlank(monitorPackageBarcode)) { + throw new SystemException("请扫描生物监测包条码!"); + } else if (item.indexOf("化学") >= 0 && StringUtils.isBlank(chemistryPackageBarcode)) { + throw new SystemException("请扫描化学监测包条码!"); + } else if (item.indexOf("生物") == -1 && item.indexOf("化学") == -1 && StringUtils.isBlank(monitorPackageBarcode)) { + throw new SystemException("请扫描生物监测包条码!"); + } + //有植入物时 + } else if (item.indexOf(Sterilizer.MONITORTOUSSEDISPLAY_IMPLANT) >= 0 && includeImplant) { + if (item.indexOf("生物") >= 0 && item.indexOf("化学") >= 0 && StringUtils.isBlank(monitorPackageBarcode) && StringUtils.isBlank(chemistryPackageBarcode)) { + throw new SystemException("请扫描化学监测包条码和生物监测包条码!"); + } else if (item.indexOf("生物") >= 0 && StringUtils.isBlank(monitorPackageBarcode)) { + throw new SystemException("请扫描生物监测包条码!"); + } else if (item.indexOf("化学") >= 0 && StringUtils.isBlank(chemistryPackageBarcode)) { + throw new SystemException("请扫描化学监测包条码!"); + } else if (item.indexOf("生物") == -1 && item.indexOf("化学") == -1 && StringUtils.isBlank(monitorPackageBarcode)) { + throw new SystemException("请扫描生物监测包条码!"); + } + //有外来器械包时 + } else if (item.indexOf(Sterilizer.MONITORTOUSSEDISPLAY_FOREIGN_TOUSSE) >= 0 && includeForeignTousse) { + if (item.indexOf("生物") >= 0 && item.indexOf("化学") >= 0 && StringUtils.isBlank(monitorPackageBarcode) && StringUtils.isBlank(chemistryPackageBarcode)) { + throw new SystemException("请扫描化学监测包条码和生物监测包条码!"); + } else if (item.indexOf("生物") >= 0 && StringUtils.isBlank(monitorPackageBarcode)) { + throw new SystemException("请扫描生物监测包条码!"); + } else if (item.indexOf("化学") >= 0 && StringUtils.isBlank(chemistryPackageBarcode)) { + throw new SystemException("请扫描化学监测包条码!"); + } else if (item.indexOf("生物") == -1 && item.indexOf("化学") == -1 && StringUtils.isBlank(monitorPackageBarcode)) { + throw new SystemException("请扫描生物监测包条码!"); + } + } + } + } + } + + /** * 删除篮筐内器械包 * @param delTousseJsonArr 删除的器械包和篮筐信息 * @param sterilizationRecord 灭菌记录 Index: ssts-web/src/main/webapp/dataUpdater/sqls/4.9.61_4.9.62_sqlserver.sql =================================================================== diff -u --- ssts-web/src/main/webapp/dataUpdater/sqls/4.9.61_4.9.62_sqlserver.sql (revision 0) +++ ssts-web/src/main/webapp/dataUpdater/sqls/4.9.61_4.9.62_sqlserver.sql (revision 30245) @@ -0,0 +1,2 @@ +update Sterilizer set monitorTousseDisplay = replace(monitorTousseDisplay, '每天第一炉', '每天第1炉') where monitorTousseDisplay = '每天第一炉' or monitorTousseDisplay like '每天第一炉;%' or monitorTousseDisplay like '%;每天第一炉;%' or monitorTousseDisplay like '%;每天第一炉'; +update Sterilizer set monitorTousseDisplay = replace(monitorTousseDisplay, '每炉', '每炉(第1炉除外)') where monitorTousseDisplay = '每炉' or monitorTousseDisplay like '每炉;%' or monitorTousseDisplay like '%;每炉;%' or monitorTousseDisplay like '%;每炉'; \ No newline at end of file