Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java =================================================================== diff -u -r35093 -r35096 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 35093) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 35096) @@ -3061,6 +3061,76 @@ return sbf.toString(); } /** + * 创建查询灭菌记录中器械包信息的语句 + * @param tousseBarcode 包条码 + * @param reviewedBasketId 篮筐id + * @param sterilizationRecordId 灭菌记录id + * @return + */ + private String buildSqlToQueryTosseeOfSterilizationRecord(Set tousseBarcode,Long reviewedBasketId, Long sterilizationRecordId){ + boolean queryReviewedBasket = false; + String rbSql = ""; + if(DatabaseUtil.isPoIdValid(reviewedBasketId)){ + queryReviewedBasket = true; + rbSql = " and rb.id=" + reviewedBasketId; + } + String fixedBarcodeQuerySql = ""; + if(dbConnection.isSqlServer()){ + fixedBarcodeQuerySql = new StringBuffer().append("(select top 1 barcode from ") + .append(TousseInstance.class.getSimpleName()) + .append(" ti1 join ") + .append(BarcodeDevice.class.getSimpleName()) + .append(" b1 on b1.id=ti1.id where ti1.tousseFixedBarcode=1 and ti1.tousseDefinition_id=td.id)").toString(); + } else if(dbConnection.isOracle()){ + fixedBarcodeQuerySql = new StringBuffer().append("(select barcode from ") + .append(TousseInstance.class.getSimpleName()) + .append(" ti1 join ") + .append(BarcodeDevice.class.getSimpleName()) + .append(" b1 on b1.id=ti1.id where ti1.tousseFixedBarcode=1 and ti1.tousseDefinition_id=td.id and rownum <= 1)").toString(); + } + String sql = "select srid, id,tousseName,status,barcode from ("; + if(queryReviewedBasket){//入筐 + sql += " select sr.id srid, ti.id,tousseName,ti.status," + + fixedBarcodeQuerySql + + " barcode from SterilizationRecord sr " + + "join sterilization_reviewed srd on srd.sterilizationRecord_id=sr.id " + + "join ReviewedBasket rb on rb.id=srd.reviewedBasket_id " + + "join TousseInstance ti on ti.reviewBasket_id=rb.id " + + "join TousseDefinition td on td.id=ti.tousseDefinition_id " + + "where td.isTraceable='否' " + + rbSql + + "union all select sr.id srid, ti.id,tousseName,ti.status,bd.barcode " + + "from SterilizationRecord sr join sterilization_reviewed srd " + + "on srd.sterilizationRecord_id=sr.id " + + "join ReviewedBasket rb on rb.id=srd.reviewedBasket_id " + + "join TousseInstance ti on ti.reviewBasket_id=rb.id " + + "join barcodeDevice bd on bd.id=ti.id " + + "join TousseDefinition td on td.id=ti.tousseDefinition_id " + + "where td.isTraceable='是' " + + rbSql; + }else{//未入筐 + sql += "select sr.id srid, ti.id,tousseName,ti.status," + + fixedBarcodeQuerySql + + " barcode " + + "from SterilizationRecord sr " + + "join TousseInstance ti on ti.sterilizationRecord_id=sr.id " + + "join TousseDefinition td on td.id=ti.tousseDefinition_id " + + "where td.isTraceable='否' and ti.reviewBasket_id is null " + + "union all select sr.id srid, ti.id,tousseName,ti.status,bd.barcode " + + "from SterilizationRecord sr " + + "join TousseInstance ti on ti.sterilizationRecord_id=sr.id " + + "join barcodeDevice bd on bd.id=ti.id " + + "join TousseDefinition td on td.id=ti.tousseDefinition_id " + + "where td.isTraceable='是' and ti.reviewBasket_id is null "; + } + sql += ") t where 1=1 "; + if(CollectionUtils.isNotEmpty(tousseBarcode)){ + sql += " and " + SqlUtils.getStringFieldInLargeCollectionsPredicate("t.barcode", tousseBarcode) ; + } + sql += " and t.srid=" + sterilizationRecordId; + return sql; + } + /** * 构建查询灭菌篮筐内包实例的查询语句 * @return */ @@ -7222,13 +7292,19 @@ ResultSet rs = null; JSONObject result = JSONUtil.buildJsonObject(true); try { - ReviewedBasket reviewedBasket = reviewedBasketManager.getReviewedBasketByBasketBarcodeAndSterilizationRecordId(basketBarcode, sterilizationRecordId); - if(reviewedBasket == null){ - return JSONUtil.buildJsonObject(false, "找不到该篮筐"); + Long reviewedBasketId = null; + if(StringUtils.isNotBlank(basketBarcode)){ + ReviewedBasket reviewedBasket = reviewedBasketManager.getReviewedBasketByBasketBarcodeAndSterilizationRecordId(basketBarcode, sterilizationRecordId); + if(reviewedBasket == null){ + return JSONUtil.buildJsonObject(false, "找不到该篮筐"); + } + reviewedBasketId = reviewedBasket.getId(); } Set tousseBarcodes = new HashSet(); - tousseBarcodes.add(tousseBarcode); - String sql = buildSqlToQueryTosseeOfReviewedBasket(tousseBarcodes, reviewedBasket.getId()); + if(StringUtils.isNotBlank(tousseBarcode)){ + tousseBarcodes.add(tousseBarcode); + } + String sql = buildSqlToQueryTosseeOfSterilizationRecord(tousseBarcodes, reviewedBasketId,sterilizationRecordId); rs = objectDao.executeSql(sql); while (rs.next()) { String tousseName = rs.getString("tousseName"); @@ -7237,7 +7313,11 @@ if(!TousseInstance.STATUS_STERILING.equals(tiStatus) && !TousseInstance.STATUS_DELAY_CONFIRM.equals(tiStatus) && !TousseInstance.STATUS_STERILED.equals(tiStatus)){ - result = JSONUtil.buildJsonObject(false, "条码为" + barcode + "的器械包["+ tousseName +"]状态为" + tiStatus + ",不能删除!"); + if(DatabaseUtil.isPoIdValid(reviewedBasketId)){ + result = JSONUtil.buildJsonObject(false, "篮筐内条码为" + barcode + "的器械包["+ tousseName +"]状态为" + tiStatus + ",不能删除!"); + }else{ + result = JSONUtil.buildJsonObject(false, "条码为" + barcode + "的器械包["+ tousseName +"]状态为" + tiStatus + ",不能删除!"); + } break; } }