Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r25560 -r25562 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 25560) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 25562) @@ -573,6 +573,7 @@ } } + // 平均不合格率 double avgBHGL = 0.00; for (int i = 1; i <= 12; i++) { String key = ""; @@ -2149,56 +2150,102 @@ } return null; } - // 清洗不合格率环比折线图表 + /** + * 清洗不合格率环比折线图表 + * TODO:此报表的计算方式,需重构与18项指标的计算方式调用同样的代码 Terry Kwan 2019-01-29 + */ @Override public List getWashFractionDefectiveChart( - String queryYear,String querySupplyRoom) { + String year,String querySupplyRoom) { + String queryYear = year + "-01-01 00:00:00"; + String nextYear = DataIndex.getNextYear(year); + nextYear += " 00:00:00"; + if (StringUtils.isNotBlank(queryYear)) { List beans = new ArrayList(); - for (int i = 1; i <= 12; i++) { - String queryMonth = ""; - if (i < 10) { - queryMonth = queryYear + "-0" + i; - } else { - queryMonth = queryYear + "-" + i; + + + ReportQueryParams reportParams = new ReportQueryParams(); + reportParams.betweenSql = String.format(" between %s and %s ", + dateQueryAdapter.dateAdapter(queryYear), + dateQueryAdapter.dateAdapter(nextYear)); + reportParams.querySupplyRoom = querySupplyRoom; + reportParams.monthlyStr = dateQueryAdapter.dateConverAdapter3("wr.endDate","mm"); + + String washRecordSql = dataIndex.getWorkAmountByMaterialSQL("清洗数量", + reportParams); + + + reportParams.monthlyStr = dateQueryAdapter.dateConverAdapter3("qi.dateTime","mm"); + + String qualityMonitoringSql = DataIndex.getQualityMonitorAmountSQL("器械清洗不合格的数量", + reportParams); + + ResultSet washRecordResult = objectDao.executeSql(washRecordSql); + ResultSet monitoringResult = objectDao + .executeSql(qualityMonitoringSql); + + + + Map washRecordMap = new HashMap(); + try { + while (washRecordResult.next()) { + String month = washRecordResult.getString(1); + int amount = washRecordResult.getInt(2); + washRecordMap.put(month, amount); } - String sql = String.format("select * from (select sum(washMaterialAmount) as wamount " - + "from washanddisinfectrecord w where %s like '%s%%' %s)temp1," - + "(select sum(qmd.amount)as amount from QualityMonitoringInstance qi,FormInstance fi,FormDefinition fd," - + "QualityMonitoringDefinition qd ,QualityMonitoringGoods qmd where qi.id = fi.id and fi.formDefinition_id = fd.id " - + " and qd.id = fd.id and qi.id=qmd.qualityMonitoringInstance_id " - + " and fd.departCodes like '%%%s%%' and qd.responsibilitypart = '清洗消毒' and fd.formType = '质量监测' " - + " and %s like '%s%%' %s)temp2", dateQueryAdapter.dateConverAdapter("w.enddate","yyyy-mm"), - queryMonth,SqlUtils.get_InSql_Extra("orgUnitCoding", querySupplyRoom),querySupplyRoom,dateQueryAdapter.dateConverAdapter("qi.datetime","yyyy-mm"),queryMonth,SqlUtils.get_InSql_Extra("fi.orgUnitCoding", querySupplyRoom) ); + } catch (Exception e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(washRecordResult); + } + + + Map map = new HashMap(); + + try { + Map monitoringMap = new HashMap(); + if(monitoringResult != null){ + while (monitoringResult.next()) { + String month = monitoringResult.getString(1); + int amount = monitoringResult.getInt(2); + monitoringMap.put(month, amount); + } + } + + for (int i = 1; i <= 12; i++) { + String key = ""; + if (i > 9) { + key = "" + i; + } else { + key = "0" + i; + } - ResultSet rs = objectDao.executeSql(sql); - Integer washAmount = 0; - Integer fractionDefectiveAmount = 0; - try { - while (rs.next()) { - washAmount = rs.getInt(1); - fractionDefectiveAmount = rs.getInt(2); + // 不合格率 + Double bhgl = 0.00; + if (washRecordMap.get(key) != null + && washRecordMap.get(key) != 0 + && monitoringMap.get(key) != null) { + BigDecimal b1 = new BigDecimal(monitoringMap.get(key)); + BigDecimal b2 = new BigDecimal(washRecordMap.get(key)); + bhgl = b1.divide(b2, 4, BigDecimal.ROUND_HALF_UP) + .doubleValue(); + bhgl = MathTools.mul(bhgl, 100, 2).doubleValue(); } - } catch (SQLException e) { - e.printStackTrace(); - }finally { - DatabaseUtil.closeResultSetAndStatement(rs); + map.put(key, bhgl); + + WashFractionDefectiveChartBean bean = new WashFractionDefectiveChartBean(); + bean.setMonth(key); + bean.setFractionDefective(bhgl); + beans.add(bean); + } - WashFractionDefectiveChartBean bean = new WashFractionDefectiveChartBean(); - bean.setMonth(queryMonth); - BigDecimal bd = new BigDecimal(washAmount); - BigDecimal bd2 = new BigDecimal(fractionDefectiveAmount); - if (washAmount != 0 && fractionDefectiveAmount != 0) { - Double fractionDefective = bd2.divide(bd, 4, - BigDecimal.ROUND_HALF_UP).doubleValue(); - fractionDefective = new BigDecimal(fractionDefective) - .multiply(new BigDecimal(100)).doubleValue(); - bean.setFractionDefective(fractionDefective); - } else { - bean.setFractionDefective(0.00); - } - beans.add(bean); + } catch (Exception e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(monitoringResult); } + return beans; } return null;