Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/dwr/table/SterilizationRecordTableManager.java =================================================================== diff -u -r29472 -r29473 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/dwr/table/SterilizationRecordTableManager.java (.../SterilizationRecordTableManager.java) (revision 29472) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/dwr/table/SterilizationRecordTableManager.java (.../SterilizationRecordTableManager.java) (revision 29473) @@ -51,6 +51,7 @@ import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.string.StringTools; import com.forgon.tools.util.ForgonDateUtils; +import com.forgon.tools.util.SqlUtils; /** * @author WangYi 2012-2-24 @@ -258,13 +259,39 @@ if(CollectionUtils.isNotEmpty(sterilizationRecordList)){ JSONArray newArray = new JSONArray(); Map includeImplantMap = new HashMap(); - for (SterilizationRecord sterilizationRecord : sterilizationRecordList) { - includeImplantMap.put(sterilizationRecord.getId(), sterilizationRecord.getIncludeImplant(objectDao)); + String sql = String.format("select sr.id, td.includeImplant from %s sr join sterilization_tousseInstance sti on sr.id = sti.sterilizationRecord_id " + + " join %s ti on ti.id = sti.tousseInstance_id " + + " join %s td on ti.tousseDefinition_id = td.id " + + " where %s ", + SterilizationRecord.class.getSimpleName(), TousseInstance.class.getSimpleName(), TousseDefinition.class.getSimpleName(), + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("sr.id", sterilizationRecordIdList)); + sql += String.format(" union all select sr.id, td.includeImplant from %s sr join sterilization_reviewed str on sr.id = str.sterilizationRecord_id " + + " join %s ti on str.reviewedBasket_id = ti.reviewBasket_id " + + " join %s td on ti.tousseDefinition_id = td.id " + + " where %s ", + SterilizationRecord.class.getSimpleName(), TousseInstance.class.getSimpleName(), TousseDefinition.class.getSimpleName(), + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("sr.id", sterilizationRecordIdList)); + + ResultSet rs = null; + try { + rs = objectDao.executeSql(sql); + while(rs.next()){ + Long recordId = rs.getLong("id"); + Integer inclideImplant = rs.getInt("includeImplant"); + inclideImplant = inclideImplant == null ? TousseDefinition.UNINCLUDE_IMPLANT : inclideImplant; + if(inclideImplant.intValue() == TousseDefinition.INCLUDE_IMPLANT){ + includeImplantMap.put(recordId, Constants.STR_YES); + } + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); } for (int i = 0; i < arry.size(); i++) { JSONObject jsObj =JSONObject.fromObject(arry.get(i)); Long recordId = jsObj.optLong("id"); - jsObj.put("includeImplant", includeImplantMap.get(recordId)); + jsObj.put("includeImplant", includeImplantMap.get(recordId) == null ? Constants.STR_NO : Constants.STR_YES); newArray.add(jsObj); } return newArray;