Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java =================================================================== diff -u -r17236 -r17238 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 17236) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 17238) @@ -68,6 +68,7 @@ import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstanceUseRecord; import com.forgon.disinfectsystem.entity.basedatamanager.warehouse.WareHouse; import com.forgon.disinfectsystem.entity.becleanitem.ClassifyBasket; +import com.forgon.disinfectsystem.entity.customform.formdefinition.FormDefinition; import com.forgon.disinfectsystem.entity.goodsstock.GoodsStock; import com.forgon.disinfectsystem.entity.invoicemanager.DiposableGoodsItem; import com.forgon.disinfectsystem.entity.invoicemanager.InvoiceItem; @@ -2717,46 +2718,38 @@ } /** * 通过器械包条码,判断是否需要提示录入定期监测 - * @param barcode + * @param barcodes 格式如:'010222333','010444555' * @return true 当器械包的灭菌炉有配了定期监测,并且没有录入了相关的定期监测记录;其他情况均返回false */ - public boolean isNeedRoutineMonitoringWarning(String barcode){ + public boolean isNeedRoutineMonitoringWarning(String barcodes){ boolean haveRoutineMonitoring = false; - if(StringUtils.isBlank(barcode)){ + if(StringUtils.isBlank(barcodes)){ return haveRoutineMonitoring; } - BarcodeDevice barcodeDevice = barcodeManager.getBarcodeByBarcode(barcode); - if(barcodeDevice instanceof TousseInstance){ - TousseInstance ti = (TousseInstance)barcodeDevice; - String sterilizerDate = ti.getSterileStartTime(); - if(sterilizerDate != null && sterilizerDate.length() > 10){ - sterilizerDate = sterilizerDate.substring(0,10); + String subString = "SUBSTRING"; + if(dbConnection.isOracle()){ + subString = "SUBSTR"; + } + String sql = " select count(*) from TousseInstance ti join barcodeDevice bd on bd.id = ti.id join Sterilizer s on s.name = ti.sterilizerName " + + " left join QualityMonitoringInstance qi on qi.sterilizerName = s.name and qi.sterilizerFrequency = ti.sterileFrequency " + + " and " + subString + "(qi.sterilizerDate,0,10) = " + subString + "(ti.sterileStartTime,0,10) " + + " where s.isRoutineMonitoring = '是' and (qi.id is null or qi.type <> '" + FormDefinition.FOMRTYPE_PERIODICMONITORING + "')" + + " and bd.barcode in (" + barcodes + ")"; + ResultSet result = objectDao.executeSql(sql); + int count = 0; + try { + while (result.next()) { + count = result.getInt(1); } - Sterilizer ser = (Sterilizer) objectDao.getByProperty(Sterilizer.class - .getSimpleName(), "name", ti.getSterilizerName()); - if(ser != null && "是".equals(ser.getIsRoutineMonitoring())){ - String sql = "select qi.name from QualityMonitoringInstance qi,Sterilizer ser where qi.sterilizerName = ser.name and ser.isRoutineMonitoring = '是' " - + " and qi.type = '定期监测' " - + " and qi.sterilizerDate = '" + sterilizerDate + "'" - + " and qi.sterilizerName = '" + ti.getSterilizerName() + "'" - + " and qi.sterilizerFrequency = '" + ti.getSterileFrequency() + "'"; - ResultSet result = objectDao.executeSql(sql); - String name = ""; - try { - while (result.next()) { - name = result.getString(1); - } - } catch (SQLException e) { - e.printStackTrace(); - }finally { - DatabaseUtil.closeResultSetAndStatement(result); - } - // 灭菌炉配了要定期监测,但没找到相关记录的定期监测 - if(StringUtils.isBlank(name)){ - haveRoutineMonitoring = true; - } - } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(result); } + // 灭菌炉配了要定期监测,但没找到相关记录的定期监测 + if(count > 0){ + haveRoutineMonitoring = true; + } return haveRoutineMonitoring; } Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java =================================================================== diff -u -r17236 -r17238 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java (.../TousseInstanceManager.java) (revision 17236) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java (.../TousseInstanceManager.java) (revision 17238) @@ -411,10 +411,10 @@ /** * 通过器械包条码,判断是否需要提示录入定期监测 - * @param barcode + * @param barcodes 格式如:'010222333','010444555' * @return true 当器械包的灭菌炉有配了定期监测,并且没有录入了相关的定期监测记录;其他情况均返回false */ - public boolean isNeedRoutineMonitoringWarning(String barcode); + public boolean isNeedRoutineMonitoringWarning(String barcodes); /** * 将器械包的集合设置仓库属性。如果targetWareHouse为null,则将包实例的仓库id设置为null,仓库名称设置为""; Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/action/InvoiceAction.java =================================================================== diff -u -r17236 -r17238 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/action/InvoiceAction.java (.../InvoiceAction.java) (revision 17236) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/action/InvoiceAction.java (.../InvoiceAction.java) (revision 17238) @@ -1488,6 +1488,7 @@ } final String type = src.get("type").getAsString(); + String needValidRMBarcodes = ""; if("diposableGoodsBatchStock".equals(type) || "expensiveDisposablegoods".equals(type)) { final JsonObject data = src.get("data").getAsJsonObject(); InvoiceGoodsVo vo = new InvoiceGoodsVo(); @@ -1547,7 +1548,7 @@ setTousseInstancesBelongToThisComboTousse(data, vo); updateVO(barcode, vo); // 判断器械包是否需要做定期监测的提示 - if(tousseInstanceManager.isNeedRoutineMonitoringWarning(barcode)){ + if(tousseInstanceManager.isNeedRoutineMonitoringWarning("'" + barcode + "'")){ result.addProperty("isNeedRoutineMonitoringWarning", true); } result.add("data", gson.toJsonTree(Collections.singleton(vo), gsonType)); @@ -1564,6 +1565,11 @@ final JsonObject data = datas.get(i).getAsJsonObject(); String barcode = data.get("barcode").getAsString(); + if(StringUtils.isNotBlank(needValidRMBarcodes)){ + needValidRMBarcodes += "," + "'" + barcode + "'"; + }else{ + needValidRMBarcodes = "'" + barcode + "'"; + } voBarcodes += barcode + ";"; vo.setIsTracable("否"); vo.setBarcode(barcode); @@ -1584,13 +1590,12 @@ // vo.setSterilizerName(sterilizerName); // vo.setFrequency(frequency); // vo.setTousseDefinitionId(tousseDefinitionId); - // 判断器械包是否需要做定期监测的提示 - if(tousseInstanceManager.isNeedRoutineMonitoringWarning(barcode)){ - result.addProperty("isNeedRoutineMonitoringWarning", true); - } setTousseInstancesBelongToThisComboTousse(data, vo); } - + // 判断器械包是否需要做定期监测的提示 + if(tousseInstanceManager.isNeedRoutineMonitoringWarning(needValidRMBarcodes)){ + result.addProperty("isNeedRoutineMonitoringWarning", true); + } if (!voBarcodes.equals("")) { voBarcodes = voBarcodes.substring(0, voBarcodes.length() - 1); updateVOs(voBarcodes, vos);