Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r35394 -r35395 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 35394) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 35395) @@ -6525,14 +6525,17 @@ String sumRriAmountSql = null; String groupByMaterialAmountAtThatTime = null; String tousseInstanceMaterialAmountSql = null; + String sumMaterialAmountSql = null; if(showMaterialsAmountColumnOfDetailMonthReport){ + sumMaterialAmountSql = " sum(materialAmount) materialAmount,"; tousseInstanceMaterialAmountSql = " sum(ti.materialAmount) materialAmount,"; tousseMaterialAmountSql = " sum(ii.materialAmount*ii.amount) materialAmount,"; noMaterialAmountSql = " 0 materialAmount,"; returnGoodsItemMaterialAmountSql = " case when ri.materialAmountAtThatTime is null then sum(-ri.materialAmount*ri.amount) else sum(-ri.materialAmountAtThatTime*ri.amount) end materialAmount,"; sumRriAmountSql = "sum(rri.amount) materialAmount,"; groupByMaterialAmountAtThatTime = ",ri.materialAmountAtThatTime "; }else{ + sumMaterialAmountSql = ""; tousseInstanceMaterialAmountSql = ""; tousseMaterialAmountSql = ""; noMaterialAmountSql = ""; @@ -6573,7 +6576,7 @@ +",settleAccountsDepart,type,name,tousseDefinitionId " + getRemovePrefixSql(tousseDefinitionOfSupplierNameSql) + getRemovePrefixSql(integralOftousseDefinitionSql); - tousseSql = " select sum(materialAmount) materialAmount,depart,settleAccountsDepart" + tousseSql = " select "+ sumMaterialAmountSql +"depart,settleAccountsDepart" + showTimeOfT + sendTimeOfT + getRemovePrefixSql(tousseDefinitionOfSupplierNameSql) @@ -7000,134 +7003,135 @@ Map expensiveExternalCode = expensiveExternalCode(); Map materialExternalCodeMap = getMaterialExternalCode(); Map tousseExternalCodeMap = getTousseExternalCode(); - ResultSet rs = objectDao.executeSql(sql); - if (rs != null) { - try { - Set toussedefinitionIdSet = new HashSet();//需要查询材料实例数量的包定义id - Map itemAndTDid = new HashMap();//,用于给DepartmentMonthDetailItem计算price和totalAmount - while (rs.next()) { - String settleaccountsdepart = rs.getString("settleaccountsdepart"); - if(StringUtils.isBlank(settleaccountsdepart)){ - settleaccountsdepart = ""; + ResultSet rs = null; + + try { + rs = objectDao.executeSql(sql); + Set toussedefinitionIdSet = new HashSet();//需要查询材料实例数量的包定义id + Map itemAndTDid = new HashMap();//,用于给DepartmentMonthDetailItem计算price和totalAmount + while (rs.next()) { + String settleaccountsdepart = rs.getString("settleaccountsdepart"); + if(StringUtils.isBlank(settleaccountsdepart)){ + settleaccountsdepart = ""; + } + String depart = rs.getString("depart"); + if(StringUtils.isBlank(depart) || queryUnit){ + depart = ""; + } + String departKey = settleaccountsdepart + ";_;" + depart; + List itemList = detailMap.get(departKey); + if (itemList == null) { + itemList = new ArrayList(); + detailMap.put(departKey, itemList); + } + String goodsName = rs.getString("name"); + String type = rs.getString("type"); + double settlementPrice = rs.getDouble("settlementprice"); + double settlementDiscountPrice = rs.getDouble("settlementDiscountPrice"); + int amount = rs.getInt("amount"); + Date expDate = null; + if(!TYPE_CHARGE.equals(type)){ + try { + expDate = rs.getTimestamp("expDate"); + } catch (Exception e) { } - String depart = rs.getString("depart"); - if(StringUtils.isBlank(depart) || queryUnit){ - depart = ""; - } - String departKey = settleaccountsdepart + ";_;" + depart; - List itemList = detailMap.get(departKey); - if (itemList == null) { - itemList = new ArrayList(); - detailMap.put(departKey, itemList); - } - String goodsName = rs.getString("name"); - String type = rs.getString("type"); - double settlementPrice = rs.getDouble("settlementprice"); - double settlementDiscountPrice = rs.getDouble("settlementDiscountPrice"); - int amount = rs.getInt("amount"); - Date expDate = null; - if(!TYPE_CHARGE.equals(type)){ - try { - expDate = rs.getTimestamp("expDate"); - } catch (Exception e) { - } - - } - int disinfectGoodsStatisticAmount = 0; - int totalAmount = amount; - DepartmentMonthDetailItem mdi = new DepartmentMonthDetailItem(); - boolean flag = true; - if (TousseDefinition.PACKAGE_TYPE_DISINFECTION.equals(type) - || (TousseDefinition.PACKAGE_TYPE_CUSTOM.equals(type) && !showCustonTousseAmount)) { - Long toussedefinitionId = rs.getLong("tousseDefinitionId"); - if (DatabaseUtil.isPoIdValid(toussedefinitionId)) { - toussedefinitionIdSet.add(toussedefinitionId);//记下id,一次性查询对应的材料实例数量 - mdi.setAmount(totalAmount); - itemAndTDid.put(mdi, toussedefinitionId); - flag = false;//先不计算价格和总数量,批量查询时再计算 - } - } - if(flag){ - Double price = 0D; - if(totalAmount != 0){ - price = MathTools.divide(settlementPrice, totalAmount, 4); - } - mdi.setPrice(price); - mdi.setAmount(totalAmount); - } -// goodsName = CssdUtils.filterUnderScoreName(goodsName); + } + int disinfectGoodsStatisticAmount = 0; + int totalAmount = amount; + DepartmentMonthDetailItem mdi = new DepartmentMonthDetailItem(); + boolean flag = true; + if (TousseDefinition.PACKAGE_TYPE_DISINFECTION.equals(type) + || (TousseDefinition.PACKAGE_TYPE_CUSTOM.equals(type) && !showCustonTousseAmount)) { + Long toussedefinitionId = rs.getLong("tousseDefinitionId"); + if (DatabaseUtil.isPoIdValid(toussedefinitionId)) { + toussedefinitionIdSet.add(toussedefinitionId);//记下id,一次性查询对应的材料实例数量 + mdi.setAmount(totalAmount); + itemAndTDid.put(mdi, toussedefinitionId); + flag = false;//先不计算价格和总数量,批量查询时再计算 + } + } + if(flag){ Double price = 0D; if(totalAmount != 0){ price = MathTools.divide(settlementPrice, totalAmount, 4); } - if(showSupplierNameInDetailedAccountingMonthlyReport){ - if(TousseDefinition.PACKAGE_TYPE_FOREIGN.equals(type) || TousseDefinition.PACKAGE_TYPE_SPLIT.equals(type) - || DisposableGoods.TYPE_NAME.equals(type)){ - String supplierName = rs.getString("supplierName"); - mdi.setSupplierName(supplierName); - } + mdi.setPrice(price); + mdi.setAmount(totalAmount); + } +// goodsName = CssdUtils.filterUnderScoreName(goodsName); + + Double price = 0D; + if(totalAmount != 0){ + price = MathTools.divide(settlementPrice, totalAmount, 4); + } + if(showSupplierNameInDetailedAccountingMonthlyReport){ + if(TousseDefinition.PACKAGE_TYPE_FOREIGN.equals(type) || TousseDefinition.PACKAGE_TYPE_SPLIT.equals(type) + || DisposableGoods.TYPE_NAME.equals(type)){ + String supplierName = rs.getString("supplierName"); + mdi.setSupplierName(supplierName); } - if(showSendTime){ - mdi.setSendTime(rs.getString("sendTime")); + } + if(showSendTime){ + mdi.setSendTime(rs.getString("sendTime")); + } + if(showTime){ + mdi.setShowTime(rs.getString("showTime")); + } + mdi.setType(type); + mdi.setSettlementPrice(settlementPrice); + mdi.setSettlementDiscountPrice(settlementDiscountPrice); + mdi.setBatchNumber(rs.getString("batchNumber")); + if(queryUnit){ + mdi.setUnit(rs.getString("unit")); + } + mdi.setExpDate(ForgonDateUtils.safelyFormatDate(expDate, Constants.SIMPLEDATEFORMAT_YYYYMMDD, "")); + if ("一次性物品".equals(type)) { + mdi.setManufacturer(manufacturerMap.get(goodsName + "_" + mdi.getBatchNumber())); + mdi.setExternalCode(disposableGoodsExternalCodeMap.get(goodsName)); + }else if("材料".equals(type)){ + mdi.setExternalCode(materialExternalCodeMap.get(goodsName)); + }else{ + if(enableExpensiveGoods && ExpensiveGoods.TYPE_NAME.equals(type)){ + //新的高值耗材设置外部编码及生产厂家 + mdi.setExternalCode(expensiveExternalCode.get(goodsName)); + }else{ + mdi.setExternalCode(tousseExternalCodeMap.get(goodsName)); } - if(showTime){ - mdi.setShowTime(rs.getString("showTime")); + } + if(queryUnit && DisposableGoods.TYPE_NAME.equals(type)){ + int beginIndex = goodsName.indexOf("["); + int endIndex = goodsName.lastIndexOf("]"); + if(beginIndex != -1 && endIndex != -1){ + String specification = goodsName.substring(beginIndex + 1, endIndex); + goodsName = goodsName.substring(0, beginIndex); + mdi.setSpecification(specification); } - mdi.setType(type); - mdi.setSettlementPrice(settlementPrice); - mdi.setSettlementDiscountPrice(settlementDiscountPrice); - mdi.setBatchNumber(rs.getString("batchNumber")); - if(queryUnit){ - mdi.setUnit(rs.getString("unit")); - } - mdi.setExpDate(ForgonDateUtils.safelyFormatDate(expDate, Constants.SIMPLEDATEFORMAT_YYYYMMDD, "")); - if ("一次性物品".equals(type)) { - mdi.setManufacturer(manufacturerMap.get(goodsName + "_" + mdi.getBatchNumber())); - mdi.setExternalCode(disposableGoodsExternalCodeMap.get(goodsName)); - }else if("材料".equals(type)){ - mdi.setExternalCode(materialExternalCodeMap.get(goodsName)); + } + mdi.setGoodsName(goodsName); + if(showMaterialsAmountColumnOfDetailMonthReport){ + if("一次性物品".equals(type) || "材料".equals(type) || ExpensiveGoods.TYPE_NAME.equals(type) || "收费项目".equals(type) || "高值耗材".equals(type)){ + mdi.setMaterialAmount(totalAmount); }else{ - if(enableExpensiveGoods && ExpensiveGoods.TYPE_NAME.equals(type)){ - //新的高值耗材设置外部编码及生产厂家 - mdi.setExternalCode(expensiveExternalCode.get(goodsName)); - }else{ - mdi.setExternalCode(tousseExternalCodeMap.get(goodsName)); - } + mdi.setMaterialAmount(ConvertNumber.getNumberIntValue(rs.getObject("materialAmount"), 0)); } - if(queryUnit && DisposableGoods.TYPE_NAME.equals(type)){ - int beginIndex = goodsName.indexOf("["); - int endIndex = goodsName.lastIndexOf("]"); - if(beginIndex != -1 && endIndex != -1){ - String specification = goodsName.substring(beginIndex + 1, endIndex); - goodsName = goodsName.substring(0, beginIndex); - mdi.setSpecification(specification); - } + } + if(enableToussePointsStatistics){ + Number integralNum = (Number)rs.getObject("integral"); + if(integralNum != null){ + mdi.setIntegral(integralNum.doubleValue() * totalAmount); } - mdi.setGoodsName(goodsName); - if(showMaterialsAmountColumnOfDetailMonthReport){ - if("一次性物品".equals(type) || "材料".equals(type) || ExpensiveGoods.TYPE_NAME.equals(type) || "收费项目".equals(type) || "高值耗材".equals(type)){ - mdi.setMaterialAmount(totalAmount); - }else{ - mdi.setMaterialAmount(ConvertNumber.getNumberIntValue(rs.getObject("materialAmount"), 0)); - } - } - if(enableToussePointsStatistics){ - Number integralNum = (Number)rs.getObject("integral"); - if(integralNum != null){ - mdi.setIntegral(integralNum.doubleValue() * totalAmount); - } - } - itemList.add(mdi); } - //统一计算要查询包定义对应的材料实例数量的DepartmentMonthDetailItem的price和totalAmount - calcPriceAndAmout(toussedefinitionIdSet, itemAndTDid); - } catch (SQLException e) { - logger.error("获取明细核算月报数据时出错", e); - }finally { - DatabaseUtil.closeResultSetAndStatement(rs); + itemList.add(mdi); } + //统一计算要查询包定义对应的材料实例数量的DepartmentMonthDetailItem的price和totalAmount + calcPriceAndAmout(toussedefinitionIdSet, itemAndTDid); + } catch (SQLException e) { + logger.error("获取明细核算月报数据时出错", e); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs); } + Iterator itr = detailMap.keySet().iterator(); while(itr.hasNext()){ String departKey = itr.next();