Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r36527 -r36531 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 36527) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 36531) @@ -2547,22 +2547,43 @@ public void setRecyclingItemIdForLastTousseInstance(RecyclingRecord recyclingRecord, List basketItemJson){ List intoBasketTousseInstanceIds = new ArrayList(); List delFromBasketTousseInstanceIds = new ArrayList(); + Set idCardBarcodes = new HashSet(); for (RecyclingBasketItemVo vo : basketItemJson) { Long lastTousseInsatnceId = vo.getLastTousseInstanceId(); if(!DatabaseUtil.isPoIdValid(lastTousseInsatnceId) && StringUtils.isNotBlank(vo.getIdCardBarcode())){ - IDCardInstance idCardInstance = null; - BarcodeDevice barcodeDevice = barcodeManager - .getBarcodeByBarcode(vo.getIdCardBarcode()); - if (barcodeDevice instanceof IDCardInstance) { - idCardInstance = (IDCardInstance) barcodeDevice; - TousseInstance tousseInstance = IDCardInstanceUtils - .getLastOperatedTousseInstance(objectDao, - idCardInstance); - if(tousseInstance != null){ - lastTousseInsatnceId = tousseInstance.getId(); - } + idCardBarcodes.add(vo.getIdCardBarcode()); + } + } + Map barcodeToTousseInstanceId = null; + if(idCardBarcodes.size() > 0){ + barcodeToTousseInstanceId = new HashMap(); + StringBuffer sbf = new StringBuffer(); + sbf.append("select bd.barcode,ii.lastTousseInstanceId from "); + sbf.append(IDCardInstance.class.getSimpleName()); + sbf.append(" ii join "); + sbf.append(BarcodeDevice.class.getSimpleName()); + sbf.append(" bd on bd.id=ii.id where ii.lastTousseInstanceId is not null "); + sbf.append(SqlUtils.getInStringListSql("bd.barcode", idCardBarcodes)); + ResultSet rs = null; + try { + rs = objectDao.executeSql(sbf.toString()); + while (rs.next()){ + barcodeToTousseInstanceId.put(rs.getString("barcode"), rs.getLong("lastTousseInstanceId")); } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs); } + } + for (RecyclingBasketItemVo vo : basketItemJson) { + Long lastTousseInsatnceId = vo.getLastTousseInstanceId(); + if(barcodeToTousseInstanceId != null + && !DatabaseUtil.isPoIdValid(lastTousseInsatnceId) + && StringUtils.isNotBlank(vo.getIdCardBarcode()) + && barcodeToTousseInstanceId.containsKey(vo.getIdCardBarcode())){ + lastTousseInsatnceId = barcodeToTousseInstanceId.get(vo.getIdCardBarcode()); + } // 获取扫描的包实例条码 if(DatabaseUtil.isPoIdValid(lastTousseInsatnceId)) { if (vo.getAmount() > 0) {