Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java =================================================================== diff -u -r32884 -r32889 --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 32884) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 32889) @@ -10361,49 +10361,85 @@ } } @Override - public String calcRecyclingStatusByInvoicePlanRecyclingStatus( - Long useRecordId) { - List recyclingApplications = objectDao.findByHql("select po from " + RecyclingApplication.class.getSimpleName() + " po where useRecord.id="+ useRecordId); - List foreignTousseApplications = objectDao.findByHql("select po from " + ForeignTousseApplication.class.getSimpleName() + " po where useRecord.id=" + useRecordId); - Set recyclingStatusSet = new HashSet(); - if(CollectionUtils.isNotEmpty(recyclingApplications)){ - for (RecyclingApplication ra : recyclingApplications) { - if(StringUtils.isBlank(ra.getRecyclingStatus())){ - continue; - } - recyclingStatusSet.add(ra.getRecyclingStatus()); + public JSONArray calcRecyclingStatusByInvoicePlanRecyclingStatus(JSONArray datas, Set useRecordIds) { + List recyclingAppAndUseRecordIdList = objectDao.findByHql("select po,useRecord.id from " + RecyclingApplication.class.getSimpleName() + " po where " + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("useRecord.id", useRecordIds)); + + Map> recyclingApplicationMap = new HashMap>(); + for (int i=0; i recyclingApplicationsOfMap = null; + if(recyclingApplicationMap.containsKey(thisUseRecordId)){ + recyclingApplicationsOfMap = recyclingApplicationMap.get(thisUseRecordId); + }else{ + recyclingApplicationsOfMap = new ArrayList(); + recyclingApplicationMap.put(thisUseRecordId, recyclingApplicationsOfMap); } + recyclingApplicationsOfMap.add(recyclingApplication); } - if(CollectionUtils.isNotEmpty(foreignTousseApplications)){ - for (ForeignTousseApplication fta : foreignTousseApplications) { - if(StringUtils.isBlank(fta.getRecyclingStatus())){ - continue; + + List foreignTousseAppAndUseRecordIdList = objectDao.findByHql("select po,useRecord.id from " + ForeignTousseApplication.class.getSimpleName() + " po where " + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("useRecord.id", useRecordIds)); + Map> foreignTousseApplicationMap = new HashMap>(); + for (int i=0; i foreignTousseApplicationsOfMap = null; + if(foreignTousseApplicationMap.containsKey(thisUseRecordId)){ + foreignTousseApplicationsOfMap = foreignTousseApplicationMap.get(thisUseRecordId); + }else{ + foreignTousseApplicationsOfMap = new ArrayList(); + foreignTousseApplicationMap.put(thisUseRecordId, foreignTousseApplicationsOfMap); + } + foreignTousseApplicationsOfMap.add(recyclingApplication); + } + for (int i = 0; i < datas.size(); i++) { + JSONObject obj = (JSONObject)datas.get(i); + Long thisUseRecordId = obj.optLong("id"); + List thisRecyclingApplications = recyclingApplicationMap.get(thisUseRecordId); + Set recyclingStatusSet = new HashSet(); + if(CollectionUtils.isNotEmpty(thisRecyclingApplications)){ + for (RecyclingApplication ra : thisRecyclingApplications) { + if(StringUtils.isBlank(ra.getRecyclingStatus())){ + continue; + } + recyclingStatusSet.add(ra.getRecyclingStatus()); } - if(InvoicePlan.RECYCLINGSTATUS_SECRECYCLED.equals(fta.getRecyclingStatus())){ - recyclingStatusSet.add(InvoicePlan.RECYCLINGSTATUS_RECYCLED); - }else{ - recyclingStatusSet.add(fta.getRecyclingStatus()); + } + List thisForeignTousseApplications = foreignTousseApplicationMap.get(thisUseRecordId); + if(CollectionUtils.isNotEmpty(thisForeignTousseApplications)){ + for (ForeignTousseApplication fta : thisForeignTousseApplications) { + if(StringUtils.isBlank(fta.getRecyclingStatus())){ + continue; + } + if(InvoicePlan.RECYCLINGSTATUS_SECRECYCLED.equals(fta.getRecyclingStatus())){ + recyclingStatusSet.add(InvoicePlan.RECYCLINGSTATUS_RECYCLED); + }else{ + recyclingStatusSet.add(fta.getRecyclingStatus()); + } } } + if(CollectionUtils.isEmpty(recyclingStatusSet)){ + continue; + } + int size = recyclingStatusSet.size(); + if(size == 1 && recyclingStatusSet.contains(InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE)){ + obj.put("recyclingStatus", UseRecord.RECYCLINGSTATUS_AWAITRECYCLE); + }else if(size == 1 && recyclingStatusSet.contains(InvoicePlan.RECYCLINGSTATUS_RECYCLED)){ + obj.put("recyclingStatus", UseRecord.RECYCLINGSTATUS_RECYCLED); + }else if(size == 1 && recyclingStatusSet.contains(InvoicePlan.STATUS_END)){ + obj.put("recyclingStatus", InvoicePlan.STATUS_END); + }else if(size == 1 && recyclingStatusSet.contains(InvoicePlan.RECYCLINGSTATUS_PARTRECYCLE)){ + obj.put("recyclingStatus", UseRecord.RECYCLINGSTATUS_PARTRECYCLE); + }else if(size == 2 && recyclingStatusSet.contains(InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE) && recyclingStatusSet.contains(InvoicePlan.STATUS_END)){ + obj.put("recyclingStatus", UseRecord.RECYCLINGSTATUS_AWAITRECYCLE); + }else if(size == 2 && recyclingStatusSet.contains(InvoicePlan.RECYCLINGSTATUS_RECYCLED) && recyclingStatusSet.contains(InvoicePlan.STATUS_END)){ + obj.put("recyclingStatus", UseRecord.RECYCLINGSTATUS_RECYCLED); + }else{ + obj.put("recyclingStatus", UseRecord.RECYCLINGSTATUS_PARTRECYCLE); + } } - if(CollectionUtils.isEmpty(recyclingStatusSet)){ - return null; - } - int size = recyclingStatusSet.size(); - if(size == 1 && recyclingStatusSet.contains(InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE)){ - return UseRecord.RECYCLINGSTATUS_AWAITRECYCLE; - }else if(size == 1 && recyclingStatusSet.contains(InvoicePlan.RECYCLINGSTATUS_RECYCLED)){ - return UseRecord.RECYCLINGSTATUS_RECYCLED; - }else if(size == 1 && recyclingStatusSet.contains(InvoicePlan.STATUS_END)){ - return InvoicePlan.STATUS_END; - }else if(size == 1 && recyclingStatusSet.contains(InvoicePlan.RECYCLINGSTATUS_PARTRECYCLE)){ - return UseRecord.RECYCLINGSTATUS_PARTRECYCLE; - }else if(size == 2 && recyclingStatusSet.contains(InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE) && recyclingStatusSet.contains(InvoicePlan.STATUS_END)){ - return UseRecord.RECYCLINGSTATUS_AWAITRECYCLE; - }else if(size == 2 && recyclingStatusSet.contains(InvoicePlan.RECYCLINGSTATUS_RECYCLED) && recyclingStatusSet.contains(InvoicePlan.STATUS_END)){ - return UseRecord.RECYCLINGSTATUS_RECYCLED; - }else{ - return UseRecord.RECYCLINGSTATUS_PARTRECYCLE; - } + return datas; } } Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManager.java =================================================================== diff -u -r32882 -r32889 --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManager.java (.../UseRecordManager.java) (revision 32882) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManager.java (.../UseRecordManager.java) (revision 32889) @@ -4,6 +4,7 @@ import java.util.Date; import java.util.List; import java.util.Map; +import java.util.Set; import javax.servlet.ServletOutputStream; @@ -407,9 +408,9 @@ */ public void timingPushUseRecord(); /** - * 根据使用记录转换的申请单的回收状态计算使用记录的回收状态 + * 根据使用记录转换的申请单的回收状态计算使用记录的回收状态 SZSZLYY-31 * @param useRecordId * @return */ - public String calcRecyclingStatusByInvoicePlanRecyclingStatus(Long useRecordId); + public JSONArray calcRecyclingStatusByInvoicePlanRecyclingStatus(JSONArray data, Set useRecordIds); } Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/dwr/table/UseRecordTableManager.java =================================================================== diff -u -r32882 -r32889 --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/dwr/table/UseRecordTableManager.java (.../UseRecordTableManager.java) (revision 32882) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/dwr/table/UseRecordTableManager.java (.../UseRecordTableManager.java) (revision 32889) @@ -7,8 +7,10 @@ import java.util.ArrayList; import java.util.Date; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -32,7 +34,6 @@ import com.forgon.security.service.OperationManager; import com.forgon.timeout.service.TimeoutManager; import com.forgon.tools.date.DateTools; -import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.json.JSONUtil; /** @@ -219,12 +220,14 @@ JSONArray rowsJSONArray = jsonData.optJSONArray(JSONUtil.JSON_KEY_ROWS); if(CollectionUtils.isNotEmpty(rowsJSONArray)){ List departCodeOfpatientList = new ArrayList(); + Set useRecordIds = new HashSet(); for (int i = 0; i < rowsJSONArray.size(); i++) { JSONObject data = rowsJSONArray.optJSONObject(i); String departCodeOfpatient = data.optString("departCodeOfpatient"); if(StringUtils.isNotBlank(departCodeOfpatient)){ departCodeOfpatientList.add(departCodeOfpatient); } + useRecordIds.add(data.optLong("id")); } Map orgUnitNameMap = new HashMap(); @@ -244,15 +247,9 @@ if(orgUnit != null){ data.put("departNameOfpatient", orgUnit.getName()); } - Long useRecordId = data.optLong("id"); - if(DatabaseUtil.isPoIdValid(useRecordId)){ - String recyclingStatus = useRecordManager.calcRecyclingStatusByInvoicePlanRecyclingStatus(useRecordId); - if(StringUtils.isNotBlank(recyclingStatus)){ - data.put("recyclingStatus", recyclingStatus); - } - } newRowsJSONArray.add(data); } + newRowsJSONArray = useRecordManager.calcRecyclingStatusByInvoicePlanRecyclingStatus(newRowsJSONArray, useRecordIds); jsonData.put(JSONUtil.JSON_KEY_ROWS,newRowsJSONArray); } return jsonData.toString();