Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r29865 -r29936 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 29865) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 29936) @@ -1650,6 +1650,7 @@ Collection tousseDefIds = CollectionUtils.union(tousseDefIdTousseItemVoMap.keySet(), basketItemJson.stream().map(p->p.getTousseDefinitionID()).collect(Collectors.toSet())); //包定义集合 List tousseDefinitions = tousseDefinitionManager.getCollection(tousseDefIds); + tousseDefinitionManager.initTousseGoods(tousseDefinitions); //验证回收时的包定义 verifyTousseAtRecycling(record, tousseDefIds,recyclingContext); Map containerMap = new HashMap(); @@ -1689,7 +1690,7 @@ tousseDefIdTousseItemVoMap = tousseDefIdTousseItemVoMapNew; tousseDefIds = CollectionUtils.union(tousseDefIdTousseItemVoMap.keySet(), basketItemJson.stream().map(p->p.getTousseDefinitionID()).collect(Collectors.toSet())); tousseDefinitions = tousseDefinitionManager.getCollection(tousseDefIds); - + tousseDefinitionManager.initTousseGoods(tousseDefinitions); //申请还物单的id List borrowRecyclingApplicationIds = returnGoodsVo.getNewBorrowingRecyclingApplicationIds(); if(CollectionUtils.isNotEmpty(borrowRecyclingApplicationIds)){ Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java =================================================================== diff -u -r29913 -r29936 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 29913) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 29936) @@ -2420,15 +2420,33 @@ @Override public Double getDisinfectGoodsTotalPrice(TousseDefinition tousseDefinition){ - double totalPrice = 0; - if (tousseDefinition != null && CollectionUtils.isNotEmpty(tousseDefinition.getMaterialInstances())) { - for (MaterialInstance ms : tousseDefinition.getMaterialInstances()) { - Double cost = ms.getMaterialDefinition().getDisinfectionPrice(); - if(cost == null){ - cost = 0d; + if(tousseDefinition == null){ + return 0.0; + } + Double totalPrice = null; + try { + totalPrice = 0.0; + if (CollectionUtils.isNotEmpty(tousseDefinition.getMaterialInstances())) { + for (MaterialInstance ms : tousseDefinition.getMaterialInstances()) { + Double cost = ms.getMaterialDefinition().getDisinfectionPrice(); + if(cost == null){ + cost = 0d; + } + totalPrice += MathTools.mul(cost, ms.getCount()).doubleValue(); } - totalPrice += MathTools.mul(cost, ms.getCount()).doubleValue(); } + } catch (LazyInitializationException e) { + totalPrice = 0.0; + List materialList = materialInstanceManager.getMaterialInstanceByTousseId(tousseDefinition.getId()); + if(!(materialList == null || materialList.isEmpty())){ + for (MaterialInstance ms : materialList) { + Double cost = ms.getMaterialDefinition().getDisinfectionPrice(); + if(cost == null){ + cost = 0d; + } + totalPrice += MathTools.mul(cost, ms.getCount()).doubleValue(); + } + } } return totalPrice; } @@ -4927,5 +4945,22 @@ } return this.getCombForeignTousseDefinition(ancestorTousse.getForeignComboId(), showForeignTousseAncestorDefinition); } - + @Override + public void initTousseGoods(List tds) { + if(tds == null || tds.isEmpty()){ + return; + } + for (int i = 0; i < tds.size(); i++) { + TousseDefinition td = tds.get(i); + if(td == null){ + continue; + } + if(CollectionUtils.isNotEmpty(td.getMaterialInstances())){ + td.getMaterialInstances().size(); + } + if(CollectionUtils.isNotEmpty(td.getDiposableGoodsItems())){ + td.getDiposableGoodsItems().size(); + } + } + } } Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManager.java =================================================================== diff -u -r29688 -r29936 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManager.java (.../TousseDefinitionManager.java) (revision 29688) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManager.java (.../TousseDefinitionManager.java) (revision 29936) @@ -855,4 +855,9 @@ * @return */ public List loadComboTousseByForeignTousseId(Long foreignTousseId, Boolean showForeignTousseAncestorDefinition); + /** + * 初始化包内的材料和消毒物品(使用join fetch 多个对象时会报错,所以采用这种方式初始化) + * @param tds + */ + public void initTousseGoods(List tds); }