Index: ssts-web/src/main/webapp/jasperRtp/QualityMonitoringReport.jrxml =================================================================== diff -u -r27750 -r27871 --- ssts-web/src/main/webapp/jasperRtp/QualityMonitoringReport.jrxml (.../QualityMonitoringReport.jrxml) (revision 27750) +++ ssts-web/src/main/webapp/jasperRtp/QualityMonitoringReport.jrxml (.../QualityMonitoringReport.jrxml) (revision 27871) @@ -129,7 +129,7 @@ - + @@ -216,14 +216,14 @@ - + - + @@ -260,9 +260,9 @@ - + - + @@ -276,13 +276,13 @@ - + - + Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r27848 -r27871 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 27848) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 27871) @@ -13169,9 +13169,11 @@ String tousseName = StrutsParamUtils.getPraramValue("tousseName", ""); Long inspectItemId = StrutsParamUtils.getPraramLongValue("inspectItemId", 0L); String responsibilityPart = null; + String recordRinseInformation = null; if(DatabaseUtil.isPoIdValid(inspectItemId)){ QualityMonitoringDefinition q = (QualityMonitoringDefinition)objectDao.getById(QualityMonitoringDefinition.class.getSimpleName(), inspectItemId); responsibilityPart = q.getResponsibilityPart(); + recordRinseInformation = q.getRecordRinseInformation(); } String extraQueryForResponsibilityPart = null; String extraJoinForResponsibilityPart = null; @@ -13186,10 +13188,12 @@ String wdrStartDate = dateQueryAdapter.dateToVarchar1("wdr.startDate"); extraQueryForResponsibilityPart = ",wdr.disinfectIdentification,"+ wdrStartDate +" washStartDate,wdr.washPersonInCharge "; extraJoinForResponsibilityPart = " left join WashAndDisinfectRecord wdr on wdr.id=qmi.scanWashRecord_id "; - ReportQueryParams params = new ReportQueryParams(); - int dataSoureOfMaterialsCountOfToussesInReports = CssdUtils.getSystemSetConfigByNameInt("dataSoureOfMaterialsCountOfToussesInReports", 3); - String sql = getWashWorkloadSql(params, startDate + " 00:00:00", endDate + " 23:59:59", querySupplyRoom, dataSoureOfMaterialsCountOfToussesInReports, true); - washAmountMap = getWashWorkloadAmountMap(sql, true); + if(Constants.STR_YES.equals(recordRinseInformation)){ + ReportQueryParams params = new ReportQueryParams(); + int dataSoureOfMaterialsCountOfToussesInReports = CssdUtils.getSystemSetConfigByNameInt("dataSoureOfMaterialsCountOfToussesInReports", 3); + String sql = getWashWorkloadSql(params, startDate + " 00:00:00", endDate + " 23:59:59", querySupplyRoom, dataSoureOfMaterialsCountOfToussesInReports, true); + washAmountMap = getWashWorkloadAmountMap(sql, true); + } }else if(QualityMonitoringDefinition.QUALITYMONITORING_MODULE_NAME_STERILIZATION.equals(responsibilityPart)){ String wdrStartDate = dateQueryAdapter.dateToVarchar1("sr.startDate"); extraQueryForResponsibilityPart = ",s.name,sr.frequency,sr.sterilizationUser,"+ wdrStartDate +" sterilizationStartDate,sr.amount steAmount "; @@ -13209,20 +13213,22 @@ if (StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate) && StringUtils.isNotBlank(formName)) { + JSONObject amoutSumJson = new JSONObject(); String whereSql = buildWhereSQL(startDate, endDate, querySupplyRoom, formName, monitoringType); String tousseNameSql = buildTousseNameMaterialNameWhereSql(materialName, tousseName); String dataSql = dateQueryAdapter.dateToVarchar1("qmi.dateTime"); if(StringUtils.isNotBlank(extraQueryForResponsibilityPart) && "质量监测".equals(monitoringType)){ String sql2 = " select " + dataSql + " dateStr," - + " qmd.tousseName toussName,qmd.material material,qmd.amount amount,qmi.id qmiId,qmi.positionMsg positionMsg,fi.createUserName " + + " qmd.tousseName toussName,qmd.material material,qmd.amount amount,qmi.id qmiId,qmi.positionMsg positionMsg,fi.createUserName, qmdf.recordRecycleInformation,qmdf.recordRinseInformation,qmdf.recordSterilizatioInformation " + extraQuery + extraQueryForResponsibilityPart + " from QualityMonitoringInstance qmi join FormInstance fi on qmi.id=fi.id join FormDefinition fd on fi.formDefinition_id=fd.id " + + " join QualityMonitoringDefinition qmdf on qmdf.id=fd.id " + " left join QualityMonitoringGoods qmd on qmi.id=qmd.qualityMonitoringInstance_id " + extraJoin + extraJoinForResponsibilityPart + " where 1=1 " + " and " + whereSql + tousseNameSql; - addMonitoringItemBeanOption(list,sql2,isCustomADJAndIsFormNameIsADJ,washAmountMap); + addMonitoringItemBeanOption(list,sql2,isCustomADJAndIsFormNameIsADJ,washAmountMap,amoutSumJson); } String sql = " select " + dataSql + " dateStr," + " qmd.tousseName toussName,qmd.material material,qmd.amount amount,qmi.id qmiId,qmi.positionMsg positionMsg," @@ -13301,8 +13307,23 @@ Integer qmCount = 0; // 材料或者包数量和 Integer qmTousseAndMaterialAmount = 0; - // 质量检测加数量汇总(取消质量监测汇总) - if (false) { + sql = " select count(0) count,sum(t.aAmount) total from QualityMonitoringInstance qmi join FormInstance fi on qmi.id=fi.id join FormDefinition fd on fi.formDefinition_id=fd.id " + + " join ( select qmi.id qid,sum(qmd.amount) aAmount from QualityMonitoringInstance qmi,QualityMonitoringGoods qmd where qmi.id=qmd.qualityMonitoringInstance_id " + + " group by qmi.id ) t on t.qid=qmi.id " + + " where " + whereSql; + ResultSet rs = objectDao.executeSql(sql); + try { + while (rs.next()) { + qmCount = rs.getInt("count"); + qmTousseAndMaterialAmount = rs.getInt("total"); + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + // 质量检测加数量汇总 + if ("质量监测".equals(monitoringType)) { Integer totalAmount = 0; Integer totalItem = 0; Integer orderNumber = 1; @@ -13316,86 +13337,43 @@ questionName = list.get(0).getQuestionName(); } if (totalAmount > 0 || list.size() > 0) { - // 对每个bean 做统计 - List> listMap = getBeanMap(list); - if( listMap != null && listMap.size() > 1){ - Map beanStatisticsMap = listMap.get(0); - Map beanStatisticsMap2 = listMap.get(1); - if(beanStatisticsMap != null){ - for (Map.Entry entry : beanStatisticsMap.entrySet()){ - String key = entry.getKey(); - String[] arr = key.split("_"); - if(arr.length >=3){ - int _orderNumber = Integer.valueOf(arr[0]); - String _option = arr[1]; - String _questionName = arr[2]; - int anwserInt = entry.getValue(); - MonitoringItemBean bean1 = new MonitoringItemBean(); - bean1.setGoodsName("汇总"); - bean1.setDateTime("汇总"); - bean1.setOrderNumber(_orderNumber); - bean1.setOption(_option); - bean1.setQuestionName(_questionName); - bean1.setAmount(totalItem); - bean1.setAnswer(anwserInt+""); - bean1.setPositionMsg(""); - list.add(bean1); - } - } + MonitoringItemBean bean = new MonitoringItemBean(); + bean.setGoodsName(""); + bean.setDateTime("汇总"); + bean.setOrderNumber(orderNumber); + bean.setOption(option); + bean.setQuestionName(questionName); + bean.setAmount(totalAmount); + bean.setPositionMsg(""); + list.add(bean); + Integer tousseAmoutSum = amoutSumJson.getInt("tousseAmoutSum"); + Integer forgonAmoutSum = amoutSumJson.getInt("forgonAmoutSum"); + if(tousseAmoutSum > 0){ + MonitoringItemBean bean1 = new MonitoringItemBean(); + bean1.setGoodsName(""); + bean1.setDateTime("汇总"); + bean1.setOrderNumber(18); + bean1.setOption("当天清洗件数"); + bean1.setQuestionName("当天清洗件数"); + bean1.setAmount(totalAmount); + bean1.setPositionMsg(""); + bean1.setAnswer(tousseAmoutSum + ""); + list.add(bean1); } - if(beanStatisticsMap2 != null){ - for (Map.Entry entry : beanStatisticsMap2.entrySet()){ - String key = entry.getKey(); - String[] arr = key.split("_"); - if(arr.length >=3){ - int _orderNumber = Integer.valueOf(arr[0]); - String _option = arr[1]; - String _questionName = arr[2]; - int anwserInt = entry.getValue(); - MonitoringItemBean bean2 = new MonitoringItemBean(); - bean2.setGoodsName("材料数量汇总"); - bean2.setDateTime("材料数量汇总"); - bean2.setOrderNumber(_orderNumber); - bean2.setOption(_option); - bean2.setQuestionName(_questionName); - bean2.setAmount(totalAmount); - if(key.equals("1_-_-")){ - bean2.setAnswer(""); - }else{ - bean2.setAnswer(anwserInt+""); - } - bean2.setPositionMsg(""); - list.add(bean2); - } - } + if(forgonAmoutSum > 0){ + MonitoringItemBean bean2 = new MonitoringItemBean(); + bean2.setGoodsName(""); + bean2.setDateTime("汇总"); + bean2.setOrderNumber(19); + bean2.setOption("当天清洗外来器械件数"); + bean2.setQuestionName("当天清洗外来器械件数"); + bean2.setAmount(totalAmount); + bean2.setPositionMsg(""); + bean2.setAnswer(forgonAmoutSum + ""); + list.add(bean2); } } - MonitoringItemBean bean = new MonitoringItemBean(); - bean.setGoodsName("汇总"); - bean.setDateTime("汇总"); - bean.setOrderNumber(orderNumber); - bean.setOption(option); - bean.setQuestionName(questionName); - bean.setAmount(totalItem); - bean.setPositionMsg(""); - list.add(bean); - } }else if("定期监测".equals(monitoringType)){ - sql = " select count(0),sum(t.aAmount) from QualityMonitoringInstance qmi join FormInstance fi on qmi.id=fi.id join FormDefinition fd on fi.formDefinition_id=fd.id " - + " join ( select qmi.id qid,sum(qmd.amount) aAmount from QualityMonitoringInstance qmi,QualityMonitoringGoods qmd where qmi.id=qmd.qualityMonitoringInstance_id " - + " group by qmi.id ) t on t.qid=qmi.id " - + " where " + whereSql; - ResultSet rs = objectDao.executeSql(sql); - try { - while (rs.next()) { - qmCount = rs.getInt(1); - qmTousseAndMaterialAmount = rs.getInt(2); - } - } catch (SQLException e) { - e.printStackTrace(); - }finally { - DatabaseUtil.closeResultSetAndStatement(rs); - } Integer totalAmount = 0; Integer totalItem = 0; Integer orderNumber = 1; @@ -14366,13 +14344,17 @@ * @param sql * @param isCustomADJAndIsFormNameIsADJ * @param washAmountMap 清洗数量map + * @param amoutSumJson 当天清洗件数和当天外来器清洗件数json 格式{tousseAmoutSum":2,"forgonAmoutSum":3}; */ - private void addMonitoringItemBeanOption(List list,String sql, boolean isCustomADJAndIsFormNameIsADJ, Map> washAmountMap){ + private void addMonitoringItemBeanOption(List list,String sql, boolean isCustomADJAndIsFormNameIsADJ, Map> washAmountMap,JSONObject amoutSumJson){ if(StringUtils.isBlank(sql)){ return ; } ResultSet rs = null; try { + Set readedSet = new HashSet(); + Integer tousseAmoutSum = 0; + Integer forgonAmoutSum = 0; rs = objectDao.executeSql(sql); while (rs.next()) { String dataStr = rs.getString("dateStr"); @@ -14393,7 +14375,10 @@ frequency = rs.getInt("frequency"); sterilizerName = rs.getString("sterilizerName"); } - if(SqlUtils.isExistColumn(rs, "sterilizationStartDate")){ + String recordRecycleInformation = rs.getString("recordRecycleInformation"); + String recordRinseInformation = rs.getString("recordRinseInformation"); + String recordSterilizatioInformation = rs.getString("recordSterilizatioInformation"); + if(SqlUtils.isExistColumn(rs, "sterilizationStartDate") && Constants.STR_YES.equals(recordSterilizatioInformation)){ String name = rs.getString("name"); if(StringUtils.isNotBlank(name)){ int steFrequency = rs.getInt("frequency"); @@ -14413,7 +14398,7 @@ Integer steAmount = rs.getInt("steAmount"); newMonitoringItem(list, amount,tousseName,tousseName,qmiId,positionMsg, dataStr, 13, "当次炉次灭菌总包数","", steAmount + "",frequency,sterilizerName,isCustomADJAndIsFormNameIsADJ,createUserName); - }else if(SqlUtils.isExistColumn(rs, "washStartDate")){ + }else if(SqlUtils.isExistColumn(rs, "washStartDate") && Constants.STR_YES.equals(recordRinseInformation)){ String startDate = null; String disinfectIdentification = null; disinfectIdentification = rs.getString("disinfectIdentification"); @@ -14425,7 +14410,7 @@ Integer forgonAmount = 0; Integer totalAmout = 0; if(MapUtils.isNotEmpty(washAmountMap)){ - Map washAmountMapItem = washAmountMap.get(startDate); + Map washAmountMapItem = washAmountMap.get(dataStr); if(MapUtils.isNotEmpty(washAmountMapItem)){ if(washAmountMapItem.containsKey("外来器械")){ forgonAmount = washAmountMapItem.get("外来器械"); @@ -14440,11 +14425,16 @@ newMonitoringItem(list, amount,tousseName,tousseName,qmiId,positionMsg, dataStr, 17, "清洗责任人","", washPersonInCharge, frequency, sterilizerName, isCustomADJAndIsFormNameIsADJ,createUserName); } - newMonitoringItem(list, amount,tousseName,tousseName,qmiId,positionMsg, + if(!readedSet.contains(dataStr)){ + readedSet.add(dataStr); + tousseAmoutSum += totalAmout; + forgonAmoutSum += forgonAmount; + newMonitoringItem(list, amount,tousseName,tousseName,qmiId,positionMsg, dataStr, 18, "当天清洗件数","", totalAmout + "", frequency, sterilizerName, isCustomADJAndIsFormNameIsADJ,createUserName); - newMonitoringItem(list, amount,tousseName,tousseName,qmiId,positionMsg, + newMonitoringItem(list, amount,tousseName,tousseName,qmiId,positionMsg, dataStr, 19, "当天清洗外来器械件数","", forgonAmount + "", frequency, sterilizerName, isCustomADJAndIsFormNameIsADJ,createUserName); - }else if(SqlUtils.isExistColumn(rs, "recyclingTime")){ + } + }else if(SqlUtils.isExistColumn(rs, "recyclingTime") && Constants.STR_YES.equals(recordRecycleInformation)){ String depart = rs.getString("depart"); newMonitoringItem(list, amount,tousseName,tousseName,qmiId,positionMsg, dataStr, 15, "回收科室","", depart, frequency, sterilizerName, isCustomADJAndIsFormNameIsADJ,createUserName); @@ -14462,6 +14452,8 @@ dataStr, 19, "回收时间","", recyclingTime, frequency, sterilizerName, isCustomADJAndIsFormNameIsADJ,createUserName); } } + amoutSumJson.put("tousseAmoutSum", tousseAmoutSum); + amoutSumJson.put("forgonAmoutSum", forgonAmoutSum); } catch (SQLException e) { e.printStackTrace(); }finally { Index: ssts-web/src/main/webapp/jasperRtp/QualityMonitoringReport.jasper =================================================================== diff -u -r27750 -r27871 Binary files differ