Index: ssts-web/src/main/java/com/forgon/disinfectsystem/recall/service/RecallRecordManager.java =================================================================== diff -u -r19154 -r32548 --- ssts-web/src/main/java/com/forgon/disinfectsystem/recall/service/RecallRecordManager.java (.../RecallRecordManager.java) (revision 19154) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/recall/service/RecallRecordManager.java (.../RecallRecordManager.java) (revision 32548) @@ -1,9 +1,11 @@ package com.forgon.disinfectsystem.recall.service; import java.util.List; +import java.util.Map; import net.sf.json.JSONArray; +import com.forgon.disinfectsystem.datasynchronization.model.OrgUnitVo; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.recall.RecallRecord; import com.forgon.disinfectsystem.entity.recall.RecallRecordItem; @@ -74,4 +76,11 @@ public void exchangeRecalledToussesForApplication(String ids); + /** + * 查询器械包实例的位置的map(没有位置的的取其灭菌记录的供应室,否则取所在的最后位置) + * @param instances + * @return + */ + public Map getTousseInstanceIdToOrgunitVoMap(List instances); + } Index: ssts-web/src/main/java/com/forgon/disinfectsystem/recall/action/RecallRecordAction.java =================================================================== diff -u -r32543 -r32548 --- ssts-web/src/main/java/com/forgon/disinfectsystem/recall/action/RecallRecordAction.java (.../RecallRecordAction.java) (revision 32543) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/recall/action/RecallRecordAction.java (.../RecallRecordAction.java) (revision 32548) @@ -43,6 +43,7 @@ import com.forgon.directory.service.OrgUnitManager; import com.forgon.disinfectsystem.barcode.service.BarcodeManager; import com.forgon.disinfectsystem.common.CssdUtils; +import com.forgon.disinfectsystem.datasynchronization.model.OrgUnitVo; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoods; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsBatch; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; @@ -387,7 +388,7 @@ try { // 打开文件 book = Workbook.createWorkbook(ops); - + Map tousseInstanceIdToOrgUnitVoMap = recallRecordManager.getTousseInstanceIdToOrgunitVoMap(tousseList); if(CollectionUtils.isNotEmpty(tousseList)){ //器械包的使用记录map(key为使用记录id,value为使用记录)-(GGSRMYY-94 器械包召回功能的改进) Map useRecordMap = @@ -450,6 +451,8 @@ for(int i = kk*sheetSize; i< (kk+1)*sheetSize ; i++ ){ if(i tis = recallRecordItem.getTousseInstances(); allInstances.addAll(tis); }); - //已灭菌器械包包实例的灭菌记录id(所在位置为空的包实例) - List sterilizationRecordIdList = allInstances.stream().filter(ti -> { - return StringUtils.isBlank(ti.getFinalLocation()); - }).map(TousseInstance::getSterilizationRecord_id).distinct().collect(Collectors.toList()); - Map idToSterilizationRecordMap = new HashMap(); - Map orgUnitCodingToOrgunitMap = new HashMap(); - if(CollectionUtils.isNotEmpty(sterilizationRecordIdList)){ - List sterilizationRecordList = sterilizationRecordManager.getCollection(sterilizationRecordIdList); - if(CollectionUtils.isNotEmpty(sterilizationRecordList)){ - sterilizationRecordList.stream().forEach(sr -> { - idToSterilizationRecordMap.put(sr.getId(), sr); - }); - List orgUnitCodingList = sterilizationRecordList.stream().map(SterilizationRecord::getOrgUnitCoding).distinct().collect(Collectors.toList()); - if(CollectionUtils.isNotEmpty(orgUnitCodingList)){ - List orgUnitList = orgUnitManager.getCollection("orgUnitCoding", orgUnitCodingList); - if(CollectionUtils.isNotEmpty(orgUnitList)){ - orgUnitList.stream().forEach(orgUnit -> { - orgUnitCodingToOrgunitMap.put(orgUnit.getOrgUnitCoding(), orgUnit); - }); - } - } - } - } + Map tousseInstanceIdToOrgUnitVoMap = recallRecordManager.getTousseInstanceIdToOrgunitVoMap(allInstances); // 由于数据结构的原因需要对item对象做一些处理。页面需要显示具体的器械包, // 器械包的信息是item里面的一个list所以需要下面的for循环进行转换 for (RecallRecordItem recallRecordItem : recallRecordItems) { @@ -611,16 +592,9 @@ if(ti.isUsed()){ continue; } - String departName = ti.getFinalLocationForDisplay(); - if(StringUtils.isNotBlank(departName)){ - SterilizationRecord sterilizationRecord = idToSterilizationRecordMap.get(ti.getSterilizationRecord_id()); - if(sterilizationRecord != null && StringUtils.isNotBlank(sterilizationRecord.getOrgUnitCoding())){ - OrgUnit orgUnit = orgUnitCodingToOrgunitMap.get(sterilizationRecord.getOrgUnitCoding()); - if(orgUnit != null){ - departName = orgUnit.getOrgUnitCoding(); - } - } - } + OrgUnitVo orgUnitVo = tousseInstanceIdToOrgUnitVoMap.get(ti.getId()); + String departName = orgUnitVo.getName(); + RecalledTousseVO tousseVO = new RecalledTousseVO(); tousseVO.setDepartName(departName); tousseVO.setBarcode(ti.getBarcode()); Index: ssts-web/src/main/java/com/forgon/disinfectsystem/recall/service/RecallRecordManagerImpl.java =================================================================== diff -u -r32545 -r32548 --- ssts-web/src/main/java/com/forgon/disinfectsystem/recall/service/RecallRecordManagerImpl.java (.../RecallRecordManagerImpl.java) (revision 32545) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/recall/service/RecallRecordManagerImpl.java (.../RecallRecordManagerImpl.java) (revision 32548) @@ -32,6 +32,7 @@ import com.forgon.directory.vo.LoginUserData; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.common.CssdUtils; +import com.forgon.disinfectsystem.datasynchronization.model.OrgUnitVo; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsBatchStock; import com.forgon.disinfectsystem.entity.basedatamanager.foreigntoussedefinition.ForeignTousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; @@ -513,44 +514,13 @@ Map>> departMap = new HashMap>>(); List tousseVOs = new ArrayList(); if (CollectionUtils.isNotEmpty(instances)) { - //已灭菌器械包包实例的灭菌记录id(所在位置为空的包实例) - List sterilizationRecordIdList = instances.stream().filter(ti -> { - return StringUtils.isBlank(ti.getFinalLocation()); - }).map(TousseInstance::getSterilizationRecord_id).distinct().collect(Collectors.toList()); - Map idToSterilizationRecordMap = new HashMap(); - Map orgUnitCodingToOrgunitMap = new HashMap(); - if(CollectionUtils.isNotEmpty(sterilizationRecordIdList)){ - List sterilizationRecordList = sterilizationRecordManager.getCollection(sterilizationRecordIdList); - if(CollectionUtils.isNotEmpty(sterilizationRecordList)){ - sterilizationRecordList.stream().forEach(sr -> { - idToSterilizationRecordMap.put(sr.getId(), sr); - }); - List orgUnitCodingList = sterilizationRecordList.stream().map(SterilizationRecord::getOrgUnitCoding).distinct().collect(Collectors.toList()); - if(CollectionUtils.isNotEmpty(orgUnitCodingList)){ - List orgUnitList = orgUnitManager.getCollection("orgUnitCoding", orgUnitCodingList); - if(CollectionUtils.isNotEmpty(orgUnitList)){ - orgUnitList.stream().forEach(orgUnit -> { - orgUnitCodingToOrgunitMap.put(orgUnit.getOrgUnitCoding(), orgUnit); - }); - } - } - } - } + Map tousseInstanceIdToOrgUnitVoMap = getTousseInstanceIdToOrgunitVoMap(instances); //根据包实例查询对应的使用记录map(key为包实例id,map为使用记录对象)-(GGSRMYY-94 器械包召回功能的改进) Map useRecordMap = tousseInstanceManager.getUseRecordMapByTousseInstanceList(instances); for (TousseInstance instance : instances) { - String departName = instance.getFinalLocationForDisplay(); - String departCode = instance.getFinalLocation(); - if(StringUtils.isBlank(departCode)){ - SterilizationRecord sterilizationRecord = idToSterilizationRecordMap.get(instance.getSterilizationRecord_id()); - if(sterilizationRecord != null && StringUtils.isNotBlank(sterilizationRecord.getOrgUnitCoding())){ - OrgUnit orgUnit = orgUnitCodingToOrgunitMap.get(sterilizationRecord.getOrgUnitCoding()); - if(orgUnit != null){ - departCode = orgUnit.getOrgUnitCoding(); - departName = orgUnit.getName(); - } - } - } + OrgUnitVo orgUnitVo = tousseInstanceIdToOrgUnitVoMap.get(instance.getId()); + String departName = orgUnitVo.getName(); + String departCode = orgUnitVo.getCoding(); String departMapKey = departName + ";" + departCode;//用科室名称+编码作为其map的key String realName = instance.getTousseName(); //包实例的使用记录(GGSRMYY-94 器械包召回功能的改进) @@ -688,6 +658,52 @@ } @Override + public Map getTousseInstanceIdToOrgunitVoMap(List instances){ + Map tousseInstanceIdToOrgunitVoMap = new HashMap(); + if (CollectionUtils.isNotEmpty(instances)) { + //已灭菌器械包包实例的灭菌记录id(所在位置为空的包实例) + List sterilizationRecordIdList = instances.stream().filter(ti -> { + return StringUtils.isBlank(ti.getFinalLocation()); + }).map(TousseInstance::getSterilizationRecord_id).distinct().collect(Collectors.toList()); + Map idToSterilizationRecordMap = new HashMap(); + Map orgUnitCodingToOrgunitMap = new HashMap(); + if(CollectionUtils.isNotEmpty(sterilizationRecordIdList)){ + List sterilizationRecordList = sterilizationRecordManager.getCollection(sterilizationRecordIdList); + if(CollectionUtils.isNotEmpty(sterilizationRecordList)){ + sterilizationRecordList.stream().forEach(sr -> { + idToSterilizationRecordMap.put(sr.getId(), sr); + }); + List orgUnitCodingList = sterilizationRecordList.stream().map(SterilizationRecord::getOrgUnitCoding).distinct().collect(Collectors.toList()); + if(CollectionUtils.isNotEmpty(orgUnitCodingList)){ + List orgUnitList = orgUnitManager.getCollection("orgUnitCoding", orgUnitCodingList); + if(CollectionUtils.isNotEmpty(orgUnitList)){ + orgUnitList.stream().forEach(orgUnit -> { + orgUnitCodingToOrgunitMap.put(orgUnit.getOrgUnitCoding(), orgUnit); + }); + } + } + } + } + for(TousseInstance instance : instances){ + String finalLocationForDisplay = instance.getFinalLocationForDisplay(); + if(StringUtils.isBlank(finalLocationForDisplay)){ + OrgUnit orgUnit = orgUnitCodingToOrgunitMap.get(idToSterilizationRecordMap.get(instance.getSterilizationRecord_id()).getOrgUnitCoding()); + OrgUnitVo orgUnitVo = new OrgUnitVo(); + orgUnitVo.setCoding(orgUnit.getOrgUnitCoding()); + orgUnitVo.setName(orgUnit.getName()); + tousseInstanceIdToOrgunitVoMap.put(instance.getId(), orgUnitVo); + }else{ + OrgUnitVo orgUnitVo = new OrgUnitVo(); + orgUnitVo.setCoding(instance.getFinalLocation()); + orgUnitVo.setName(instance.getFinalLocationForDisplay()); + tousseInstanceIdToOrgunitVoMap.put(instance.getId(), orgUnitVo); + } + } + } + return tousseInstanceIdToOrgunitVoMap; + } + + @Override public String searchToussesForRecallForJsonString(String sterileName, String startDate, String endDate, String sterilizingFrequency_end, String sterilizingFrequency_start) {