Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r36546 -r36548 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 36546) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 36548) @@ -887,7 +887,7 @@ detail.setMaterialDefinitionId(materialDefinitionId); detail.setType(itemType); if(recyclingItem == null){ - TousseDefinition td = recyclingSumInfoVo.getTdByTdId(tousseDefinitionID, tousseDefinitionManager); + TousseDefinition td = tousseDefinitionManager.getTousseDefinition(recyclingSumInfoVo.getTousseDefinitions(), tousseDefinitionID); if(td == null){ throw new RuntimeException("未找到"+ tousseDefinitionID +"的包定义"); } @@ -2137,14 +2137,10 @@ /** * 设置回收汇总信息的包定义map * @param tousseDefinitions - * @param recyclingSumInfoVo 回收汇 + * @param recyclingSumInfoVo 回收汇总 */ private void seTdMapOfRecyclingSumInfoVo(List tousseDefinitions, RecyclingSumInfoVo recyclingSumInfoVo){ - Map tdMap = new HashMap(); - for (TousseDefinition td : tousseDefinitions) { - tdMap.put(td.getId(), td); - } - recyclingSumInfoVo.setTdMap(tdMap); + recyclingSumInfoVo.setTousseDefinitions(tousseDefinitions); } /** * 标识牌回收时,自动取出器械包实例GDSRMYY-556 @@ -3496,7 +3492,7 @@ int amount = json.getAmount(); //回收的数量+处于供应室的数量 int amount2 = amount; - TousseDefinition td = recyclingSumInfoVo.getTdByTdId(tousseDefinitionID, tousseDefinitionManager); + TousseDefinition td = tousseDefinitionManager.getTousseDefinition(recyclingSumInfoVo.getTousseDefinitions(), tousseDefinitionID); if (td == null) { throw new RuntimeException(String.format("器械包【%s】包定义不存在!", tousseName)); } @@ -4596,7 +4592,8 @@ List tousseDefinitions,InvoicePlan application,boolean isNotInvoice, List applicationItemList,String invoiceOrigin,RecyclingRecord record, List errorDamages,List urgentTousseItems, - List basketItemJson, RecyclingContext recyclingContext){ + List basketItemJson, RecyclingContext recyclingContext + , RecyclingSumInfoVo recyclingSumInfoVo){ String tousseName = recyclingBasketItem.getTousseName(); Long tousseDefinitionID = recyclingBasketItem.getTousseDefinitionID(); // 此数量为篮筐内物品的数量,即为回收数量 @@ -4613,16 +4610,24 @@ return; } //tousseDefinitionID可能是祖先包定义的id(如消毒物品),那根据祖先id查找申请项 - List tds = tousseDefinitionManager.getCollection(appTousseItemMap.keySet()); + List tds = new ArrayList(); + Set tdIdsOfAppTousseItem = appTousseItemMap.keySet(); + if(CollectionUtils.isNotEmpty(tdIdsOfAppTousseItem)){ + for (TousseDefinition td : tousseDefinitions) { + if(tdIdsOfAppTousseItem.contains(td.getId())){ + tds.add(td); + } + } + } if(CollectionUtils.isNotEmpty(tds)){ - TousseDefinition findTd = tousseDefinitionManager.findByAncestorId(tds, tousseDefinitionID); + TousseDefinition findTd = tousseDefinitionManager.findByAncestorId(tousseDefinitions, tousseDefinitionID); if(findTd != null){ appItem = appTousseItemMap.get(findTd.getId()); } } //可能是消毒物品且同一个祖先包id if(appItem == null){ - TousseDefinition td = tousseDefinitionManager.get(tousseDefinitionID); + TousseDefinition td = tousseDefinitionManager.getTousseDefinition(tousseDefinitions, tousseDefinitionID); if(td != null && TousseDefinition.PACKAGE_TYPE_DISINFECTION.equals(td.getTousseType()) && !MathTools.equals(td.getAncestorID(), tousseDefinitionID)){ for (TousseDefinition thisTd : tds) { if(MathTools.equals(td.getAncestorID(), thisTd.getAncestorID())){ @@ -4677,15 +4682,15 @@ } newUnPackingTousseInstanceOrDisinfectGoodsDefinition( record, application, amount, isNewAddTousse,td, appItem, - recyclingBasketItem, errorDamages,basketItemJson, urgentTousseItems,appTousseItemMap,MaterialsIdJson); + recyclingBasketItem, errorDamages,basketItemJson, urgentTousseItems,appTousseItemMap,MaterialsIdJson,recyclingSumInfoVo); } } } private void newTousseItem(RecyclingContext recyclingContext,SimpleTousseItem recyclingBasketItem,Map appTousseItemMap, List tousseDefinitions,InvoicePlan application,boolean isNotInvoice, List applicationItemList,String invoiceOrigin,RecyclingRecord record, List errorDamages,List urgentTousseItems, - List basketItemJson){ + List basketItemJson,RecyclingSumInfoVo recyclingSumInfoVo){ String tousseName = recyclingBasketItem.getTousseName(); Long tousseDefinitionID = recyclingBasketItem.getTousseDefinitionID(); Integer amount = recyclingBasketItem.getAmount(); @@ -4722,7 +4727,8 @@ if(td.isDisinfection()){ newDisinfectTousseDefinition(application, td, appItem, recyclingBasketItem, errorDamages, basketItemJson, - urgentTousseItems, appTousseItemMap, recyclingContext.getMaterialsJsonForSave().optJSONObject(td.getId().toString())); + urgentTousseItems, appTousseItemMap, recyclingContext.getMaterialsJsonForSave().optJSONObject(td.getId().toString()) + ,recyclingSumInfoVo); } } } @@ -4766,7 +4772,7 @@ Map tousseDefIdTousseItemVoMap, RecyclingSumInfoVo recyclingSumInfoVo) { InvoicePlan application = record.getRecyclingApplication(); String invoiceOrigin = supplyRoomConfigManager.getInvoiceOrigin(); - RecyclingApplicationVo orignalApplication = invoicePlanManager.invoicePlan2RecyclingApplicationVo(application,false,null,recyclingSumInfoVo.getTdMap(),1,record); + RecyclingApplicationVo orignalApplication = invoicePlanManager.invoicePlan2RecyclingApplicationVo(application,false,null,recyclingSumInfoVo.getTousseDefinitions(),1,record); if(application != null){ record.setRecyclingApplicationType(application.getType()); List applicationItemList = application @@ -4803,7 +4809,8 @@ //篮筐内的物品 for (RecyclingBasketItemVo json : itemJsonList) { addApplicationItem(json, appTousseItemMap, tousseDefinitions, application, isNotInvoice, - applicationItemList, invoiceOrigin, record, errorDamages, urgentTousseItems, basketItemJson, recyclingContext); + applicationItemList, invoiceOrigin, record, errorDamages, urgentTousseItems, basketItemJson, recyclingContext + ,recyclingSumInfoVo); } //未入筐添加的物品 for(Map.Entry entry : tousseDefIdTousseItemVoMap.entrySet()){ @@ -4813,7 +4820,7 @@ SimpleTousseItem simpleTousseItem = new SimpleTousseItemImpl(tousseDefinitionId, tousseItemVo.getTousseName(), tousseItemVo.getRecyclingAmount()); newTousseItem(recyclingContext,simpleTousseItem, appTousseItemMap, tousseDefinitions, application, isNotInvoice, - applicationItemList, invoiceOrigin, record, errorDamages, urgentTousseItems, basketItemJson); + applicationItemList, invoiceOrigin, record, errorDamages, urgentTousseItems, basketItemJson,recyclingSumInfoVo); } } for(Map.Entry entry : appTousseItemMap.entrySet()){ @@ -4973,6 +4980,7 @@ if(!isForeignTousseApplication){ invoicePlanManager.computeAndSetStatus(application,deleteTousseItems); if(DatabaseUtil.isPoIdValid(application.getId()) && InvoicePlan.TYPE_APPLYING_FOR_RETURN_FORM.equals(application.getType())){ + //不这样做的话 修改回收时间和状态在整个方法执行完之后不生效 InvoicePlan ip = (InvoicePlan)objectDao.getById(InvoicePlan.class.getSimpleName(), application.getId()); if(ip != null && StringUtils.isNotBlank(application.getRecyclingStatus()) && !application.getRecyclingStatus().equals(ip.getRecyclingStatus())){ ip.setRecyclingStatus(application.getRecyclingStatus()); @@ -5079,7 +5087,7 @@ newUnPackingTousseInstanceOrDisinfectGoodsDefinition( record, application, recyclingAmount, isNewAddTousse, td, item, json, errorDamages, - basketItemJson, urgentTousseItems,itemMap,MaterialsIdJson); + basketItemJson, urgentTousseItems,itemMap,MaterialsIdJson,recyclingSumInfoVo); } //未入筐添加的物品 for(Map.Entry entry : tousseDefIdTousseItemVoMap.entrySet()){ @@ -5089,7 +5097,7 @@ SimpleTousseItem simpleTousseItem = new SimpleTousseItemImpl(tousseDefinitionId, tousseItemVo.getTousseName(), tousseItemVo.getRecyclingAmount()); newTousseItem(recyclingContext,simpleTousseItem, itemMap, tousseDefinitions, application, isNotInvoice, - tousseItems, invoiceOrigin, record, errorDamages, urgentTousseItems, basketItemJson); + tousseItems, invoiceOrigin, record, errorDamages, urgentTousseItems, basketItemJson,recyclingSumInfoVo); } } application.setApplicationItems(tousseItems); @@ -5127,7 +5135,7 @@ application.setRecyclingStatus(InvoicePlan.RECYCLINGSTATUS_TALLIED); } String compareResult = new RecyclingApplicationComparator(RecyclingApplicationComparator.MODULE_RECYCLE).doCompare(orignalApplication, - invoicePlanManager.invoicePlan2RecyclingApplicationVo(application,false,null,recyclingSumInfoVo.getTdMap(),1,record), + invoicePlanManager.invoicePlan2RecyclingApplicationVo(application,false,null,recyclingSumInfoVo.getTousseDefinitions(),1,record), tousseItemManager.tousseItem2TousseItemVo(application.getApplicationItems())); if(StringTools.isNotEmpty(compareResult) || orignalApplication == null){ applicationLogManager.saveApplicationLog(application, compareResult, ApplicationLogStatusEnum.SUBMIT); @@ -5717,14 +5725,14 @@ boolean isNewAddTousse, TousseDefinition td, TousseItem appItem, SimpleTousseItem basketItemJson, List errorDamageDetail, List basketItems, List urgentTousseItems, - Map toussItemMap,JSONObject materialsJsonForSave) { + Map toussItemMap,JSONObject materialsJsonForSave,RecyclingSumInfoVo recyclingSumInfoVo) { TousseDefinition createInstanceTD = td; //创建消毒物品包定义 if(isNewAddTousse && td.isDisinfection()){ createInstanceTD = newDisinfectTousseDefinition(application, td, appItem, basketItemJson, errorDamageDetail, basketItems, - urgentTousseItems, toussItemMap,materialsJsonForSave); + urgentTousseItems, toussItemMap,materialsJsonForSave,recyclingSumInfoVo); } //创建不装配、不追溯的包实例 if(TousseDefinition.STR_NO.equals(td.getIsPacking())){ @@ -5739,7 +5747,8 @@ List errorDamageDetail, List basketItems, List urgentTousseItems, - Map toussItemMap, JSONObject materialsJsonForSave) { + Map toussItemMap, JSONObject materialsJsonForSave + ,RecyclingSumInfoVo recyclingSumInfoVo) { TousseDefinition createInstanceTD; JSONArray materialArray = new JSONArray(); for(MaterialInstance mi : td.getMaterialInstances()){ @@ -5759,13 +5768,13 @@ } TousseDefinition ancestorTD = null; if(td.getAncestorID() != null && td.getAncestorID().longValue() != td.getId().longValue()){ - ancestorTD = tousseDefinitionManager.get(td.getAncestorID()); + ancestorTD = tousseDefinitionManager.getTousseDefinition(recyclingSumInfoVo.getTousseDefinitions(), td.getAncestorID()); if(ancestorTD.getAncestorID() != null && ancestorTD.getAncestorID().longValue() != ancestorTD.getId().longValue()){ - ancestorTD = tousseDefinitionManager.get(ancestorTD.getAncestorID()); + ancestorTD = tousseDefinitionManager.getTousseDefinition(recyclingSumInfoVo.getTousseDefinitions(), ancestorTD.getAncestorID()); if(ancestorTD.getAncestorID() != null && ancestorTD.getAncestorID().longValue() != ancestorTD.getId().longValue()){ - ancestorTD = tousseDefinitionManager.get(ancestorTD.getAncestorID()); + ancestorTD = tousseDefinitionManager.getTousseDefinition(recyclingSumInfoVo.getTousseDefinitions(), ancestorTD.getAncestorID()); if(ancestorTD.getAncestorID() != null && ancestorTD.getAncestorID().longValue() != ancestorTD.getId().longValue()){ - ancestorTD = tousseDefinitionManager.get(ancestorTD.getAncestorID()); + ancestorTD = tousseDefinitionManager.getTousseDefinition(recyclingSumInfoVo.getTousseDefinitions(), ancestorTD.getAncestorID()); } } } Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/vo/RecyclingSumInfoVo.java =================================================================== diff -u -r36477 -r36548 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/vo/RecyclingSumInfoVo.java (.../RecyclingSumInfoVo.java) (revision 36477) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/vo/RecyclingSumInfoVo.java (.../RecyclingSumInfoVo.java) (revision 36548) @@ -1,10 +1,8 @@ package com.forgon.disinfectsystem.recyclingrecord.vo; -import java.util.HashMap; -import java.util.Map; +import java.util.List; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; -import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseDefinitionManager; /** * 回收汇总信息vo @@ -14,29 +12,16 @@ */ public class RecyclingSumInfoVo { /** - * 包定义map 目的是减少重复查询 + * 包定义 目的是减少重复查询 */ - private Map tdMap; + private List tousseDefinitions; - public Map getTdMap() { - return tdMap; + + public List getTousseDefinitions() { + return tousseDefinitions; } - public void setTdMap(Map tdMap) { - this.tdMap = tdMap; + public void setTousseDefinitions(List tousseDefinitions) { + this.tousseDefinitions = tousseDefinitions; } - /** - * 通过包定义id获取包定义 如果存在于tdMap中,则从tdMap获取 如果不存在tdMap中,则查询数据并加入tdMap中 - * @param tdId - * @param tousseDefinitionManager - * @return - */ - public TousseDefinition getTdByTdId(Long tdId, TousseDefinitionManager tousseDefinitionManager){ - if(tdMap.containsKey(tdId)){ - return tdMap.get(tdId); - } - TousseDefinition td = tousseDefinitionManager.get(tdId); - tdMap.put(tdId, td); - return td; - } } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManager.java =================================================================== diff -u -r36547 -r36548 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManager.java (.../InvoicePlanManager.java) (revision 36547) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManager.java (.../InvoicePlanManager.java) (revision 36548) @@ -413,12 +413,12 @@ * @param sort 申请单中的物品是否需要排序 * @param invoicePlan * @param specialInfectionMap 特殊感染类型 - * @param tdMap 已经获取到的包定义 目的是为了减少查询 + * @param tds 已经获取到的包定义 目的是为了减少查询 * @param useTo 用途 1为回收 回收时只需要申请单修改信息 不需要其他的一些东西 * @param recyclingRecord 回收记录 * @return */ - public RecyclingApplicationVo invoicePlan2RecyclingApplicationVo(InvoicePlan invoicePlan,boolean sort, Map specialInfectionMap, Map tdMap, Integer useTo + public RecyclingApplicationVo invoicePlan2RecyclingApplicationVo(InvoicePlan invoicePlan,boolean sort, Map specialInfectionMap, List tds, Integer useTo , RecyclingRecord recyclingRecord); /** * 回收模块打开待回收的申请单时,把数据转换成OpenToBeRecycledRecordVo Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java =================================================================== diff -u -r36547 -r36548 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 36547) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 36548) @@ -6395,11 +6395,16 @@ public RecyclingApplicationVo invoicePlan2RecyclingApplicationVo( InvoicePlan invoicePlan, boolean sort, Map specialInfectionMap, - Map tdMap, Integer useTo, RecyclingRecord recyclingRecord) { + List tousseDefinitions, Integer useTo, RecyclingRecord recyclingRecord) { RecyclingApplicationVo vo = null; if(invoicePlan != null){ - if(tdMap == null){ - tdMap = new HashMap(); + Map tdMap = new HashMap(); + if(tousseDefinitions == null){ + tousseDefinitions = new ArrayList(); + }else{ + for (TousseDefinition td : tousseDefinitions) { + tdMap.put(td.getId(), td); + } } vo = new RecyclingApplicationVo(); vo.setId(invoicePlan.getId());