Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r17775 -r17797 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 17775) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 17797) @@ -1469,17 +1469,25 @@ //回收换筐后,可能出现这种情况,由于打印的地方有限制数量为0的数据不打印,所以此处暂时注释 //appItem.setIsPrinted(true); } - + TousseDefinition td = getTousseDefinition(idToTDMap,appItem.getTousseDefinitionId()); + if(td != null){ + //需要重新设置价格和小计价格.可能数量发生了改变(包括材料数量和回收数量) + Double price = td.getPrice(); + if(td.isDisinfection()){ + //消毒物品取材料的消毒价格之和 + price = tousseDefinitionManager.getDisinfectGoodsTotalPrice(td); + } + appItem.setPrice(price); +// appItem.setRowPrice(MathTools.mul(amount, price).doubleValue()); + } //外来器械二次回收 if(!application.isSecondRecycleForForeignTousse()){ appItem.setRecyclingAmount(currentAmount); } if(SupplyRoomConfig.INVOICE_ORIGIN_RECYCLING.equals(invoiceOrigin)){ //不装配不追溯物品 - TousseDefinition td = getTousseDefinition(idToTDMap,appItem.getTousseDefinitionId()); if (amount != 0) { - newUnPackingTousseInstanceOrDisinfectGoodsDefinition( record, application, amount, isNewAddTousse,td, appItem, json, errorDamages,basketItemJson, urgentTousseItems,appTousseItemMap); Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManager.java =================================================================== diff -u -r17775 -r17797 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManager.java (.../TousseDefinitionManager.java) (revision 17775) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManager.java (.../TousseDefinitionManager.java) (revision 17797) @@ -168,8 +168,13 @@ * @return */ public int getWorkloadAmount(TousseDefinition tousseDefinition); - /** + * 获取包定义中的材料数量 + * @param tousseDefinition 包定义,如果为null,则返回0 + * @return + */ + public int getTousseDefinitionMaterialCount(TousseDefinition tousseDefinition); + /** * 根据关键字进行检索物品(包括但不限于器械包和一次性物品), * 关键字为中文,则按照器械包的(拼音码、五笔码、外部编码、名称)这四个字段进行检索, * 关键字为英文,则根据用户属性表的searchMode字段来决定 Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java =================================================================== diff -u -r17775 -r17797 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 17775) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 17797) @@ -2219,13 +2219,8 @@ // 非整包申请,按材料数量打印 if (!td.applyEntireTousse()){ - int miAmount = 0; - List miList = td.getMaterialInstances(); - if (miList != null) { - for (MaterialInstance mi : miList) { - miAmount += mi.getCount(); - } - } + int miAmount = tousseDefinitionManager.getTousseDefinitionMaterialCount(td); + Integer amount = vo.getGoodsAmount(); if(amount == null){ amount = 0; @@ -2676,8 +2671,9 @@ rowVo.setUnit(unit); rowVo.setPackageSpec(packageSpec); rowVo.setSp(sp); - rowVo.setPrice(MathTools.divide(tousseItem.getRowPrice(), printAmount,4)); - rowVo.setRowPrice(tousseItem.getRowPrice()); + rowVo.setRowPrice(MathTools.mul(tousseItem.getPrice(), printAmount).doubleValue()); + rowVo.setPrice(MathTools.divide(rowVo.getRowPrice(), printAmount,4)); + //修改消毒物品价格、数量 reSetDisinfectGoodPrintItem(tousseType, td, rowVo); return rowVo; Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java =================================================================== diff -u -r17775 -r17797 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 17775) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 17797) @@ -619,18 +619,9 @@ if (tousseDefinition != null) { - List materialList = tousseDefinition - .getMaterialInstances(); String workLoadStatisticalMethod = tousseDefinition.getWorkLoadStatisticalMethod(); - - // 器械包中的材料总数量 - int totalAmountOfMaterials = 0; - - if (materialList != null && materialList.size() > 0){ - for (MaterialInstance materialInstance : materialList) { - totalAmountOfMaterials += materialInstance.getCount(); - } - } + + int totalAmountOfMaterials = getTousseDefinitionMaterialCount(tousseDefinition); // 按材料数量计算 if (TousseDefinition.WORKLOAD_STATISTICAL_METHOD_MATERIAL .equals(workLoadStatisticalMethod)) { @@ -658,7 +649,17 @@ return workloadAmount; } - + @Override + public int getTousseDefinitionMaterialCount(TousseDefinition tousseDefinition) { + // 器械包中的材料总数量 + int totalAmountOfMaterials = 0; + if (tousseDefinition != null && CollectionUtils.isNotEmpty(tousseDefinition.getMaterialInstances())){ + for (MaterialInstance materialInstance : tousseDefinition.getMaterialInstances()) { + totalAmountOfMaterials += materialInstance.getCount(); + } + } + return totalAmountOfMaterials; + } /** * 搜索自定义器械包,返回唯一名字的自定义器械包,去掉包名字后面的下划线和id * @param searchString