Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r36487 -r36488 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 36487) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 36488) @@ -2563,27 +2563,28 @@ } // 新入筐的器械包实例要关联二次回收记录的回收项 if(CollectionUtils.isNotEmpty(intoBasketTousseInstanceIds)){ - List tousseInstances = objectDao.findByIds(TousseInstance.class.getSimpleName(), intoBasketTousseInstanceIds); // 关联回收项和上一个包实例 - for (TousseInstance tousseInstance : tousseInstances) { - tousseInstance.setStatus(TousseInstance.STATUS_RECYCLED); - for (RecyclingItem item : recyclingRecord.getItems()) { - if(item.getTousseDefinitionId().longValue() == tousseInstance.getTousseDefinition().getId().longValue()){ - tousseInstance.setRecyclingItemId(item.getId()); - break; - } - } - } - objectDao.batchSaveOrUpdate(tousseInstances); + StringBuffer sql = new StringBuffer(); + sql.append("update "); + sql.append(TousseInstance.class.getSimpleName()); + sql.append(" set status='"); + sql.append(TousseInstance.STATUS_RECYCLED); + sql.append("',recyclingItemId=(select max(id) from "); + sql.append(RecyclingItem.class.getSimpleName()); + sql.append(" where recyclingRecord_id="); + sql.append(recyclingRecord.getId()); + sql.append(" and tousseDefinitionId=TousseInstance.tousseDefinition_id) where "); + sql.append(SqlUtils.getNonStringFieldInLargeCollectionsPredicate("id", intoBasketTousseInstanceIds)); + jdbcTemplate.execute(sql.toString()); } // 从篮筐删除的器械包实例,需要解除和二次回收记录的关联关系 if(CollectionUtils.isNotEmpty(delFromBasketTousseInstanceIds)){ - List tousseInstances = objectDao.findByIds(TousseInstance.class.getSimpleName(), delFromBasketTousseInstanceIds); - // 关联回收项和上一个包实例 - for (TousseInstance tousseInstance : tousseInstances) { - tousseInstance.setRecyclingItemId(null); - } - objectDao.batchSaveOrUpdate(tousseInstances); + StringBuffer sql = new StringBuffer(); + sql.append("update "); + sql.append(TousseInstance.class.getSimpleName()); + sql.append(" set recyclingItemId=null where "); + sql.append(SqlUtils.getNonStringFieldInLargeCollectionsPredicate("id", delFromBasketTousseInstanceIds)); + jdbcTemplate.execute(sql.toString()); } }