Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java =================================================================== diff -u -r17627 -r17775 --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 17627) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 17775) @@ -640,7 +640,7 @@ if (TousseDefinition.PACKAGE_TYPE_DISINFECTION .equals(td.getTousseType())) { price = tousseDefinitionManager - .getDisinfectGoodsPrice(td); + .getDisinfectGoodsTotalPrice(td); } item.setPrice(price); item.setRowPrice(MathTools.mul(price, Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r17735 -r17775 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 17735) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 17775) @@ -5926,7 +5926,7 @@ List allTousseType = getTousseTypes(tousseType); String disposableGoodsIdSql = ""; //包定义id跟材料数量的临时表 - String tousseDefinitionIdMaterialAmountSql = " (select sum(mi.count) materialAmount,td.id,td.tousseType from MaterialInstance mi join TousseDefinition td on mi.tousse_id = td.id group by td.id,td.tousseType) "; + String tousseDefinitionIdMaterialAmountSql = " (select sum(mi.count) materialAmount,td.id,td.tousseType,td.isApplyEntireTousse from MaterialInstance mi join TousseDefinition td on mi.tousse_id = td.id group by td.id,td.tousseType,isApplyEntireTousse) "; if(StringUtils.isNotBlank(disposableGoodsType)){ disposableGoodsIdSql = String.format(" select id from DisposableGoods where type='%s' ", disposableGoodsType); invoiceItemDisposableGoodsTypePredicate = String.format(" (ii.diposable='否' or ii.disposableGoodsId in(%s)) ", disposableGoodsIdSql); @@ -5988,7 +5988,7 @@ if(!TYPE_AUTO_DEDUCTION.equals(tousseType)){ //退货统计(器械包或一次性物品) String returnSql = "select r.type,(-i.settlementPrice),-i.amount,r.departCoding,r.depart,tdm.tousseType,tdm.materialAmount as materialAmount " - + "from ReturnGoodsRecord r join ReturnGoodsItem i on r.id = i.returnGoodsRecord_ID " + + ",tdm.isApplyEntireTousse from ReturnGoodsRecord r join ReturnGoodsItem i on r.id = i.returnGoodsRecord_ID " + " left join " + tousseDefinitionIdMaterialAmountSql + " tdm on tdm.id = i.tousseDefinition_id " + " where "+returnGoodsItemPredicate+ tousseTypeReturnSql + " and "+getHandleDeptCodeSql("r.handleDepartCode")+" and r.returnTime " + betweenSql; if(StringUtils.isNotBlank(department)){ @@ -6003,11 +6003,12 @@ String code = rs5.getString(4); String dept = rs5.getString(5); String returnTousseType = rs5.getString("tousseType"); + String isApplyEntireTousse = rs5.getString("isApplyEntireTousse"); int materialAmount = rs5.getInt("materialAmount"); Double totalMaterialAmount = amount * materialAmount; - // 如果是消毒物品,用统计数量替换包数量 - if ("消毒物品".equals(returnTousseType)) { + // 如果是拆包的消毒物品,用统计数量替换包数量 + if ("消毒物品".equals(returnTousseType) && Constants.STR_NO.equals(isApplyEntireTousse)) { if (materialAmount > 0) { amount = totalMaterialAmount; } @@ -6354,7 +6355,7 @@ //器械包(含消毒物品、敷料包等)发货数量统计 if(StringUtils.isBlank(tousseType) || (!"器械材料".equals(tousseType) && !TousseItem.TYPE_DIPOSABLE_GOODS.equals(tousseType) && !TYPE_AUTO_DEDUCTION.equals(tousseType))){ String invoiceAmountSql = "select i.settleAccountsDepartCoding as coding,i.settleAccountsDepart " - + "as depart,ii.amount,ii.tousseType,ii.tousseName,ii.invoicePlanID,tdm.materialAmount from Invoice i join InvoiceItem ii on i.id = ii.invoice_id " + + "as depart,ii.amount,ii.tousseType,ii.tousseName,ii.invoicePlanID,tdm.materialAmount,tdm.isApplyEntireTousse from Invoice i join InvoiceItem ii on i.id = ii.invoice_id " + " left join " + tousseDefinitionIdMaterialAmountSql + " tdm on tdm.id = ii.tousseDefinitionId " + " where " + getHandleDeptCodeSql("i.orgUnitCoding") + " " + " and (ii.amount is not null and ii.amount>0) "// 限制为只查包含器械包(含消毒物品、敷料包等)数量的 @@ -6371,9 +6372,10 @@ String tousseName = rs2.getString(5); Long invoicePlanId = rs2.getLong(6); int materialAmount = rs2.getInt("materialAmount"); + String isApplyEntireTousse = rs2.getString("isApplyEntireTousse"); Double totalMaterialAmount = tousseAmount * materialAmount; // 如果是消毒物品,用统计数量替换包数量 - if ("消毒物品".equals(tousseTypeName)) { + if ("消毒物品".equals(tousseTypeName) && Constants.STR_NO.equals(isApplyEntireTousse)) { if (materialAmount > 0) { tousseAmount = totalMaterialAmount; } @@ -7104,15 +7106,17 @@ * 获取消毒物品材料数量,没有申请单的可能是自定义装配生成的 * @param disinfectGoodsName * @param invoicePlanID - * @return + * @return 自定义器械包或者是拆包的消毒物品,返回材料数量,其他情况都返回0 */ private int getDisinfectGoodsStatisticAmount(Long toussedefinitionId) { int statisticsAmount = 0; if(toussedefinitionId == null){ return statisticsAmount; } String sql = "select sum(i.count) from Toussedefinition t,MaterialInstance i " - + "where t.id = i.tousse_id and t.id = " + toussedefinitionId; + + "where t.id = i.tousse_id and t.id = " + toussedefinitionId + + " and ((t.isApplyEntireTousse='" + Constants.STR_NO +"' and t.tousseType='" + + TousseDefinition.PACKAGE_TYPE_DISINFECTION+"') or t.tousseType='"+TousseDefinition.PACKAGE_TYPE_CUSTOM+"')"; ResultSet rs = objectDao.executeSql(sql); if(rs != null){ try { Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r17558 -r17775 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 17558) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 17775) @@ -1581,7 +1581,7 @@ double price = td.getPrice(); // 消毒物品取材料的消毒价格之和 if(TousseDefinition.PACKAGE_TYPE_DISINFECTION.equals(td.getTousseType())){ - price = tousseDefinitionManager.getDisinfectGoodsPrice(td); + price = tousseDefinitionManager.getDisinfectGoodsTotalPrice(td); } item.setPrice(price); Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManager.java =================================================================== diff -u -r17677 -r17775 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManager.java (.../TousseDefinitionManager.java) (revision 17677) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManager.java (.../TousseDefinitionManager.java) (revision 17775) @@ -190,7 +190,12 @@ * @return */ public Double getDisinfectGoodsPrice(TousseDefinition tousseDefinition); - + /** + * 获取消毒物品包定义的总价。为材料的消毒价格之和。 + * @param tousseDefinition + * @return + */ + public Double getDisinfectGoodsTotalPrice(TousseDefinition tousseDefinition); public boolean updateImageUploadStatus(String tousseDefinitionId, String imageType); public boolean updateVideoUploadStatus(String tousseDefinitionId, String videoType); Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/toussetransition/service/TousseTransitionRecordManagerImpl.java =================================================================== diff -u -r17745 -r17775 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/toussetransition/service/TousseTransitionRecordManagerImpl.java (.../TousseTransitionRecordManagerImpl.java) (revision 17745) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/toussetransition/service/TousseTransitionRecordManagerImpl.java (.../TousseTransitionRecordManagerImpl.java) (revision 17775) @@ -168,7 +168,7 @@ if (TousseDefinition.PACKAGE_TYPE_DISINFECTION .equals(td.getTousseType())) { price = tousseDefinitionManager - .getDisinfectGoodsPrice(td); + .getDisinfectGoodsTotalPrice(td); } item.setPrice(price); item.setRowPrice(MathTools.mul(price, Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java =================================================================== diff -u -r17667 -r17775 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 17667) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 17775) @@ -4611,7 +4611,7 @@ if(td == null){ throw new RuntimeException(tousseItemJson.optString("tousseName") + ",器械包定义已不存在!"); } - Double price = tousseDefinitionManager.getDisinfectGoodsPrice(td); + Double price = tousseDefinitionManager.getDisinfectGoodsTotalPrice(td); goodsVo.setPrice(price); goodsVo.setRowPrice(MathTools.mul(price, goodsVo.getAmount()).doubleValue()); if(TousseDefinition.STR_NO.equals(td.getIsRecycling())){ Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java =================================================================== diff -u -r17714 -r17775 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 17714) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 17775) @@ -1865,6 +1865,20 @@ } return price; } + + 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; + } + totalPrice += MathTools.mul(cost, ms.getCount()).doubleValue(); + } + } + return totalPrice; + } /** * 创建模糊查询的sql子句语句..