Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java =================================================================== diff -u -r36080 -r36194 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 36080) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 36194) @@ -6278,8 +6278,18 @@ public RecyclingApplicationVo invoicePlan2RecyclingApplicationVo( InvoicePlan invoicePlan, boolean sort, Map specialInfectionMap) { + return invoicePlan2RecyclingApplicationVo(invoicePlan, sort, specialInfectionMap, null); + } + @Override + public RecyclingApplicationVo invoicePlan2RecyclingApplicationVo( + InvoicePlan invoicePlan, boolean sort, + Map specialInfectionMap, + Map tdMap) { RecyclingApplicationVo vo = null; if(invoicePlan != null){ + if(tdMap == null){ + tdMap = new HashMap(); + } vo = new RecyclingApplicationVo(); vo.setId(invoicePlan.getId()); vo.setSerialNumber(invoicePlan.getSerialNumber()); @@ -6334,14 +6344,15 @@ // } // }); List tousseInstances = null; - Map tdMap = new HashMap(); if(CollectionUtils.isNotEmpty(applicationItems)){ Set tousseItemIds = new HashSet(); Set tdIds = new HashSet(); for (TousseItem ti : applicationItems) { tousseItemIds.add(ti.getId()); if(DatabaseUtil.isPoIdValid(ti.getTousseDefinitionId())){ - tdIds.add(ti.getTousseDefinitionId()); + if(!tdMap.containsKey(ti.getTousseDefinitionId())){ + tdIds.add(ti.getTousseDefinitionId()); + } } } tousseInstances = tousseInstanceManager.getCollection("tousseItemId", tousseItemIds); Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/vo/RecyclingSumInfoVo.java =================================================================== diff -u --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/vo/RecyclingSumInfoVo.java (revision 0) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/vo/RecyclingSumInfoVo.java (revision 36194) @@ -0,0 +1,27 @@ +package com.forgon.disinfectsystem.recyclingrecord.vo; + +import java.util.HashMap; +import java.util.Map; + +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; + +/** + * 回收汇总信息vo + * 不属于某张回收记录,属于本次调用的公共信息(由于现在都是按回收记录单次调用,所以目前这个vo虽然还用在单次里,但是不要把专属于某张回收记录的信息放到此vo,如回收记录id) + * 后续如果有批量回收记录(如快速回收优化) 一些公共参数可考虑此vo + * + */ +public class RecyclingSumInfoVo { + /** + * 包定义map 目的是减少重复查询 + */ + private Map tdMap; + + public Map getTdMap() { + return tdMap; + } + + public void setTdMap(Map tdMap) { + this.tdMap = tdMap; + } +} Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManager.java =================================================================== diff -u -r35664 -r36194 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManager.java (.../InvoicePlanManager.java) (revision 35664) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManager.java (.../InvoicePlanManager.java) (revision 36194) @@ -13,6 +13,7 @@ import net.sf.json.JSONArray; import net.sf.json.JSONObject; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.invoicemanager.Invoice; import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; @@ -398,6 +399,15 @@ */ public RecyclingApplicationVo invoicePlan2RecyclingApplicationVo(InvoicePlan invoicePlan,boolean sort, Map specialInfectionMap); /** + * 申请单转换为RecyclingApplicationVo对象 + * @param sort 申请单中的物品是否需要排序 + * @param invoicePlan + * @param specialInfectionMap 特殊感染类型 + * @param tdMap 已经获取到的包定义 目的是为了减少查询 + * @return + */ + public RecyclingApplicationVo invoicePlan2RecyclingApplicationVo(InvoicePlan invoicePlan,boolean sort, Map specialInfectionMap, Map tdMap); + /** * 根据科室编码分组 * @param invoicePlans 待分组的申请单 * @return Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r36184 -r36194 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 36184) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 36194) @@ -121,6 +121,7 @@ import com.forgon.disinfectsystem.recyclingrecord.vo.RecyclingPrintData; import com.forgon.disinfectsystem.recyclingrecord.vo.RecyclingPrintItem; import com.forgon.disinfectsystem.recyclingrecord.vo.RecyclingRecordVo; +import com.forgon.disinfectsystem.recyclingrecord.vo.RecyclingSumInfoVo; import com.forgon.disinfectsystem.recyclingrecord.vo.SimpleTousseItem; import com.forgon.disinfectsystem.recyclingrecord.vo.SimpleTousseItemImpl; import com.forgon.disinfectsystem.recyclingrecord.vo.TousseDefinitionAble; @@ -1752,6 +1753,7 @@ @Activity(name = AmountControl.RECYCLING) public void save(RecyclingRecord record, RecyclingContext recyclingContext) { JSONObject params = recyclingContext.getJsonParamObject(); + RecyclingSumInfoVo recyclingSumInfoVo = new RecyclingSumInfoVo(); boolean autoReturnTheBorrowingTousse = recyclingContext.getAutoReturnTheBorrowingTousse(); //放入篮筐的物品 List basketItemJson = JSONUtil.fromJson(params.optJSONArray("tousseJson"), RecyclingBasketItemVo.class) ; @@ -1934,9 +1936,11 @@ if(CollectionUtils.isNotEmpty(tousseOfTousseItems)){ tousseDefinitions.addAll(tousseOfTousseItems); } + seTdMapOfRecyclingSumInfoVo(tousseDefinitions, recyclingSumInfoVo); //更新申请单(如果是回收页面直接产添加回收记录则创建申请单) updateInvoicePlan(record,recyclingContext, tousseItemJson, deleteTousseItems, tousseDefinitions, - errorDamageDetail, basketItemJson, urgentTousseItems,isForeignTousseApplication,isChangeApplyDepart,tousseDefIdTousseItemVoMap); + errorDamageDetail, basketItemJson, urgentTousseItems,isForeignTousseApplication,isChangeApplyDepart,tousseDefIdTousseItemVoMap + ,recyclingSumInfoVo); //将新增的回收记录id赋值给回收上下文对象的id(必须在updateInvoicePlan之后,否则外来器械申请单二次回收时,回收状态不会变为已回收) recyclingContext.setId(String.valueOf(record.getId())); @@ -2007,8 +2011,19 @@ } // throw new RuntimeException("测试"); } - /** + * 设置回收汇总信息的包定义map + * @param tousseDefinitions + * @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); + } + /** * 标识牌回收时,自动取出器械包实例GDSRMYY-556 * @param tousseItemJson */ @@ -2432,6 +2447,7 @@ //丢失项 JSONArray errorDamageDetailArr = params.optJSONArray("errorDamageDetail"); reSetErrorDamageDetailArr(errorDamageDetailArr); + RecyclingSumInfoVo recyclingSumInfoVo = new RecyclingSumInfoVo(); List errorDamageDetail = JSONUtil.fromJson(errorDamageDetailArr,MaterialErrorDamageDetailVo.class); //是否确认 boolean confirmation = params.optBoolean("confirmation"); @@ -2589,9 +2605,11 @@ boolean isForeignTousseApplication = (application == null) ? false : application.isForeignTousseAppliaction(); //是否更改科室 boolean isChangeApplyDepart = isChangeApplyDepartment(record); + seTdMapOfRecyclingSumInfoVo(tousseDefinitions, recyclingSumInfoVo); //更新申请单(如果是回收页面直接产添加回收记录则创建申请单) updateInvoicePlan(record,recyclingContext, tousseItemJson, deleteTousseItems, tousseDefinitions, - errorDamageDetail, basketItemJson, urgentTousseItems,isForeignTousseApplication,isChangeApplyDepart,tousseDefIdTousseItemVoMap); + errorDamageDetail, basketItemJson, urgentTousseItems,isForeignTousseApplication,isChangeApplyDepart,tousseDefIdTousseItemVoMap + ,recyclingSumInfoVo); //等申请单确定创建了以后,如果需要添加归还的备注时,则添加相应的备注 if(recyclingContext.getNeedAppendRemark() != null && recyclingContext.getNeedAppendRemark()){ @@ -3399,7 +3417,7 @@ List tousseDefinitions, Long id) { TousseDefinition tousseDefinition = IDOperators.find(tousseDefinitions, id); if (tousseDefinition == null) { - tousseDefinition = tousseDefinitionManager.get(id.toString()); + tousseDefinition = tousseDefinitionManager.get(id); tousseDefinitions.add(tousseDefinition); } if(tousseDefinition == null){ @@ -4492,10 +4510,10 @@ List itemJsonList, JSONArray deleteTousseItems, List tousseDefinitions, List errorDamages, List basketItemJson, List urgentTousseItems,boolean isForeignTousseApplication,boolean isChangeApplyDepart, - Map tousseDefIdTousseItemVoMap) { + Map tousseDefIdTousseItemVoMap, RecyclingSumInfoVo recyclingSumInfoVo) { InvoicePlan application = record.getRecyclingApplication(); String invoiceOrigin = supplyRoomConfigManager.getInvoiceOrigin(); - RecyclingApplicationVo orignalApplication = invoicePlanManager.invoicePlan2RecyclingApplicationVo(application,false); + RecyclingApplicationVo orignalApplication = invoicePlanManager.invoicePlan2RecyclingApplicationVo(application,false,null,recyclingSumInfoVo.getTdMap()); if(application != null){ record.setRecyclingApplicationType(application.getType()); List applicationItemList = application