Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r21042 -r21043 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 21042) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 21043) @@ -78,6 +78,8 @@ import com.forgon.disinfectsystem.entity.basedatamanager.sterilizer.ConsumptiveInstance; import com.forgon.disinfectsystem.entity.basedatamanager.sterilizer.DetectionItem; import com.forgon.disinfectsystem.entity.basedatamanager.sterilizer.Sterilizer; +import com.forgon.disinfectsystem.entity.basedatamanager.supplier.RegistrationCertification; +import com.forgon.disinfectsystem.entity.basedatamanager.supplier.Supplier; import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; @@ -7936,7 +7938,41 @@ } return map; } - + /** + * 获取新的高值耗材的生产厂家和外部编码 + * @param expensiveManufacture 生产厂家的map,输出参数 + * @param expensiveExternalCode 外部编码的map,输出参数 + */ + private void expensiveManufactureAndExternalCode( + Map expensiveManufacture, + Map expensiveExternalCode) { + String sql = "select eg.externalCode,s.companyName,eg.name,eg.specification from " + + RegistrationCertification.class.getSimpleName() + " rc join " + Supplier.class.getSimpleName() + + " s on s.id = rc.supplier_id join " + ExpensiveGoods.class.getSimpleName() + " eg on eg.certificationId = rc.id where s.rentTousse = '"+Supplier.SUPPLIER_TYPE_EXPENSIVEGOODSSUPPLIER+"'"; + ResultSet rs = objectDao.executeSql(sql); + try { + while(rs.next()){ + String name = rs.getString("name"); + String sp = rs.getString("specification"); + String externalCode = rs.getString("externalCode"); + String companyName = rs.getString("companyName"); + String key = name; + if(StringUtils.isNotBlank(sp)){ + key += "[" + sp + "]"; + } + if(expensiveManufacture != null){ + expensiveManufacture.put(key, companyName); + } + if(expensiveExternalCode != null){ + expensiveExternalCode.put(key, externalCode); + } + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + } private Map disposableGoodsExternalCodeMap(){ String sql = "select name,specification,externalCode from DisposableGoods where externalCode is not null"; ResultSet rs = objectDao.executeSql(sql); @@ -8341,17 +8377,29 @@ String returnGoodsTousseType = " CASE rr.type WHEN '一次性物品' THEN (rr.type) WHEN '器械包' THEN (td.toussetype) ELSE rr.type END "; String returnGoodsTousseDefinitionId = " CASE rr.type WHEN '器械包' THEN ri.tousseDefinition_id ELSE 0 END "; - + //器械包 String tousseSql = " (select i.settleAccountsDepart,ii.tousseName as name,sum(ii.amount) as amount," +"sum(ii.settlementPrice) as settlementprice,sum(ii.settlementDiscountPrice) as settlementDiscountPrice,ii.tousseType as type" + ",'' as batchNumber,null as expDate,ii.tousseDefinitionId as tousseDefinitionId from invoice i,InvoiceItem ii " + " where i.id = ii.invoice_id " - + " and ii.diposable = '否' and "+getHandleDeptCodeSql("i.orgUnitCoding")+" " + + " and ii.diposable = '否' and ii.expensiveGoodsInstanceId is null and "+getHandleDeptCodeSql("i.orgUnitCoding")+" " + monthFilterSql + departFilterSql + typeFilterSql + goodsNameFilterSql + " and i.settleaccountsdepart is not null group by i.settleAccountsDepart,ii.tousseType,ii.tousseName,ii.tousseDefinitionId)"; + //新的高值耗材 + String selectExpensiveGoodsSql = " union all (select i.settleAccountsDepart,ii.tousseName as name,sum(ii.amount) as amount," + +"sum(ii.settlementPrice) as settlementprice,sum(ii.settlementDiscountPrice) as settlementDiscountPrice,ii.tousseType as type" + + ",'' as batchNumber,ei.expDate as expDate,0 as tousseDefinitionId from " + Invoice.class.getSimpleName() + " i join " + + InvoiceItem.class.getSimpleName()+" ii on i.id = ii.invoice_id join " + ExpensiveGoodsInstance.class.getSimpleName() + + " ei on ei.id = ii.expensiveGoodsInstanceId" + + " where ii.diposable = '否' and "+getHandleDeptCodeSql("i.orgUnitCoding")+" " + + monthFilterSql + + departFilterSql + + typeFilterSql + + goodsNameFilterSql + + " and i.settleaccountsdepart is not null group by i.settleAccountsDepart,ii.tousseType,ii.tousseName,ii.expensiveGoodsInstanceId,ei.expDate)"; String diposableGoodsSql = " "; String diposableGoodsTousseTypeSql = ""; @@ -8468,7 +8516,7 @@ + " group by oge.orgUnitName, ged.goodsName,dgb.batchNumber,dgb.expDate) "; - String sql = tousseSql + diposableGoodsSql + supplyRoomDiposableGoodsSql ; + String sql = tousseSql + selectExpensiveGoodsSql + diposableGoodsSql + supplyRoomDiposableGoodsSql ; if(!TYPE_AUTO_DEDUCTION.equals(typeSearch)){ sql += materialInvoiceSql; @@ -8500,6 +8548,9 @@ Map manufacturerMap = getDiposableGoodsManufacturer(); Map disposableGoodsExternalCodeMap = disposableGoodsExternalCodeMap(); + Map expensiveExternalCode = new HashMap<>(); + Map expensiveManufacture = new HashMap<>(); + expensiveManufactureAndExternalCode(expensiveManufacture,expensiveExternalCode); Map materialExternalCodeMap = getMaterialExternalCode(); Map tousseExternalCodeMap = getTousseExternalCode(); ResultSet rs = objectDao.executeSql(sql); @@ -8553,7 +8604,13 @@ }else if("材料".equals(type)){ mdi.setExternalCode(materialExternalCodeMap.get(goodsName)); }else{ - mdi.setExternalCode(tousseExternalCodeMap.get(goodsName)); + if(enableExpensiveGoods && ExpensiveGoods.TYPE_NAME.equals(type)){ + //新的高值耗材设置外部编码及生产厂家 + mdi.setExternalCode(expensiveExternalCode.get(goodsName)); + mdi.setManufacturer(expensiveManufacture.get(goodsName)); + }else{ + mdi.setExternalCode(tousseExternalCodeMap.get(goodsName)); + } } itemList.add(mdi); }