Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r30632 -r30642 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 30632) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 30642) @@ -14920,9 +14920,8 @@ String extraQuery = ""; String extraJoin = ""; boolean showSterilizationInfo = false;//是否查询灭菌炉和炉次 - String extraTousseNameQuery = ""; - String extraTousseJoin = ""; - String whereTousseSql = ""; + String qmdOrderNumberBySql = ""; + boolean washScope = false; if(FORMNAMEOFADJ.equals(formName)){//从关联的灭菌记录获取 showSterilizationInfo = true; extraQuery = ",sr.frequency,s.name sterilizerName"; @@ -14932,10 +14931,9 @@ extraQuery = ",qmi.sterilizerDate,qmi.sterilizerFrequency frequency,qmi.sterilizerName"; requestParameters.put("jasperreportName", "routineMonitoringSteScopeReport.jasper"); }else if(QualityMonitoringDefinition.SCOPE_MATERIAL_AND_TOUSSE.equals(scope) && "质量监测".equals(monitoringType)){ - extraTousseNameQuery = ",td.name tdName "; - extraTousseJoin = " left join TousseDefinition td on td.id=qmd.tousseDefinitionId "; - whereTousseSql = " and (qmd.haveMaterial is null or qmd.haveMaterial<>'是') "; requestParameters.put("jasperreportName", "routineMonitoringWashScopeReport.jasper"); + qmdOrderNumberBySql = " order by qmi.id desc,qmd.orderNumber asc"; + washScope = true; } if (StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate) && StringUtils.isNotBlank(formName)) { @@ -14960,16 +14958,14 @@ + " qmd.tousseName toussName,qmd.material material,qmd.amount amount,qmi.id qmiId,qmi.positionMsg positionMsg," + " fdi.name fdiName, fdi.orderNumber orderNum"+ fdioValueSql +",fiov.id,fi.createUserName,fdio.orderNumber " + extraQuery - + extraTousseNameQuery + " 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 join FormInstanceItem fiItem on qmi.id=fiItem.formInstance_id join FormDefinitionItem fdi on fiItem.formDefinitionItem_id=fdi.id" + " join FormDefinitionItemOption fdio on fdi.id=fdio.formDefinitionItem_id join QualityMonitoringGoods qmd on qmi.id=qmd.qualityMonitoringInstance_id " + extraJoin - + extraTousseJoin + " left join FormInstanceOptionValue fiov on fiov.formInstanceItem_id=fiItem.id " + " and fiov.definitionItemOption_id=fdio.id " - + " where (fdi.type = '" + FormDefinitionItem.TYPE_RADIO + "' or fdi.type ='" + FormDefinitionItem.TYPE_CHECK + "')" + " and " + whereSql + tousseNameSql + whereTousseSql; - addMonitoringItemBeanOptionRadioAndCHeck(list,sql,showSterilizationInfo); + + " where (fdi.type = '" + FormDefinitionItem.TYPE_RADIO + "' or fdi.type ='" + FormDefinitionItem.TYPE_CHECK + "')" + " and " + whereSql + tousseNameSql + qmdOrderNumberBySql; + addMonitoringItemBeanOptionRadioAndCHeck(list,sql,showSterilizationInfo, washScope); // 没有录入材料和包,有配了多选的细则的项 sql = " select " + dataSql + " dateStr," + " qmi.id qmiId,qmi.positionMsg positionMsg," @@ -14988,14 +14984,12 @@ + " qmd.tousseName toussName,qmd.material material,qmd.amount amount,qmi.id qmiId,qmi.positionMsg positionMsg," + " fdi.name fdiName, fdi.orderNumber orderNum,fiItem.answer amswer,fi.createUserName " + extraQuery - + extraTousseNameQuery + " 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 join FormInstanceItem fiItem on qmi.id=fiItem.formInstance_id join FormDefinitionItem fdi on fiItem.formDefinitionItem_id=fdi.id " + " join QualityMonitoringGoods qmd on qmi.id=qmd.qualityMonitoringInstance_id " + extraJoin - + extraTousseJoin - + " where (fdi.type != '" + FormDefinitionItem.TYPE_RADIO + "' and fdi.type!='" + FormDefinitionItem.TYPE_CHECK + "')" + " and " + whereSql + tousseNameSql + whereTousseSql; - addMonitoringItemBeanOptionSingleResult(list,sql,showSterilizationInfo); + + " where (fdi.type != '" + FormDefinitionItem.TYPE_RADIO + "' and fdi.type!='" + FormDefinitionItem.TYPE_CHECK + "')" + " and " + whereSql + tousseNameSql + qmdOrderNumberBySql; + addMonitoringItemBeanOptionSingleResult(list,sql,showSterilizationInfo, washScope); // 没有录入材料和包,单一的结果 sql = " select " + dataSql + " dateStr," + " qmi.id qmiId,qmi.positionMsg positionMsg," @@ -15012,16 +15006,14 @@ sql = " select " + dataSql + " dateStr," + " qmd.tousseName toussName,qmd.material material,qmd.amount amount,qmi.id qmiId,qmi.positionMsg positionMsg,fi.createUserName " + extraQuery - + extraTousseNameQuery + " 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 join QualityMonitoringGoods qmd on qmi.id=qmd.qualityMonitoringInstance_id " + " left join FormInstanceItem fiItem on qmi.id=fiItem.formInstance_id" + extraJoin - + extraTousseJoin + " where qmi.id not in (select formInstance_id from FormInstanceItem) " + " and qmi.type = '" + FormDefinition.FOMRTYPE_QUALITYMONITORING + "' " - + " and " + whereSql + tousseNameSql + whereTousseSql; - addMonitoringItemBeanQualityMonitoring(list,sql,showSterilizationInfo); + + " and " + whereSql + tousseNameSql + qmdOrderNumberBySql; + addMonitoringItemBeanQualityMonitoring(list,sql,showSterilizationInfo, washScope); } //是否无菌包质量抽查登记表,是则隐藏监测结果列 Map isQualifiedAmount = new HashMap(); @@ -15039,9 +15031,9 @@ Integer qmCount = 0; // 材料或者包数量和 Integer qmTousseAndMaterialAmount = 0; - if(StringUtils.isNotBlank(extraTousseNameQuery)){ + if(washScope){ sql = " select sum(t.aAmount) 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 QualityMonitoringDefinition qmdf on qmdf.id=fd.id join ( select qmi.id qid,sum(qmd.amount) aAmount from QualityMonitoringInstance qmi,QualityMonitoringGoods qmd where qmi.id=qmd.qualityMonitoringInstance_id and (qmd.haveMaterial is null or qmd.haveMaterial<>'是') " + + " join QualityMonitoringDefinition qmdf on qmdf.id=fd.id join ( select qmi.id qid,sum(qmd.amount) aAmount from QualityMonitoringInstance qmi,QualityMonitoringGoods qmd where qmi.id=qmd.qualityMonitoringInstance_id and qmd.material is not null " + tousseNameSql + " group by qmi.id ) t on t.qid=qmi.id " + " where " + whereSql; @@ -16112,26 +16104,30 @@ * @param list * @param sql */ - private void addMonitoringItemBeanOptionRadioAndCHeck(List list,String sql, boolean isCustomADJAndIsFormNameIsADJ){ + private void addMonitoringItemBeanOptionRadioAndCHeck(List list,String sql, boolean isCustomADJAndIsFormNameIsADJ, boolean washScope){ if(StringUtils.isBlank(sql)){ return ; } ResultSet rs = objectDao.executeSql(sql); try { + Map qmiIdToLastTousseNameMap = new HashMap(); while (rs.next()) { String dataStr = null; String tousseName = rs.getString("toussName"); String materialName = rs.getString("material"); - if(StringUtils.isNotBlank(materialName)){ - try { - if(rs.findColumn("tdName") > 0){ - tousseName = rs.getString("tdName"); - } - } catch (Exception e) { + Long qmiId = rs.getLong("qmiId"); + if(washScope){ + if(StringUtils.isNotBlank(tousseName)){ + qmiIdToLastTousseNameMap.put(qmiId, tousseName); } + if(StringUtils.isBlank(materialName)){ + continue; + } + if(qmiIdToLastTousseNameMap.containsKey(qmiId)){ + tousseName = qmiIdToLastTousseNameMap.get(qmiId); + } } int amount = rs.getInt("amount"); - Long qmiId = rs.getLong("qmiId"); String positionMsg = rs.getString("positionMsg"); String questionName = rs.getString("fdiName"); int orderNum = rs.getInt("orderNum"); @@ -16474,27 +16470,32 @@ * @param list * @param sql */ - private void addMonitoringItemBeanOptionSingleResult(List list,String sql, boolean addMonitoringItemBeanOptionSingleResult){ + private void addMonitoringItemBeanOptionSingleResult(List list,String sql, boolean addMonitoringItemBeanOptionSingleResult, boolean washScope){ if(StringUtils.isBlank(sql)){ return ; } ResultSet rs = null; try { rs = objectDao.executeSql(sql); + Map qmiIdToLastTousseNameMap = new HashMap(); while (rs.next()) { String dataStr = null; String tousseName = rs.getString(2); - String materialName = rs.getString(3); - if(StringUtils.isNotBlank(materialName)){ - try { - if(rs.findColumn("tdName") > 0){ - tousseName = rs.getString("tdName"); - } - } catch (Exception e) { + String materialName = rs.getString(3); + Long qmiId = rs.getLong(5); + if(washScope){ + if(StringUtils.isNotBlank(tousseName)){ + qmiIdToLastTousseNameMap.put(qmiId, tousseName); } + if(StringUtils.isBlank(materialName)){ + continue; + } + if(qmiIdToLastTousseNameMap.containsKey(qmiId)){ + tousseName = qmiIdToLastTousseNameMap.get(qmiId); + } } int amount = rs.getInt(4); - Long qmiId = rs.getLong(5); + String positionMsg = rs.getString(6); String questionName = rs.getString(7); String createUserName = rs.getString("createUserName"); @@ -16595,27 +16596,32 @@ * @param list * @param sql */ - private void addMonitoringItemBeanQualityMonitoring(List list,String sql, boolean addMonitoringItemBeanQualityMonitoring){ + private void addMonitoringItemBeanQualityMonitoring(List list,String sql, boolean addMonitoringItemBeanQualityMonitoring,boolean washScope){ if(StringUtils.isBlank(sql)){ return ; } ResultSet rs = null; try { rs = objectDao.executeSql(sql); + Map qmiIdToLastTousseNameMap = new HashMap(); while (rs.next()) { String dataStr = rs.getString(1); String tousseName = rs.getString(2); String materialName = rs.getString(3); - if(StringUtils.isNotBlank(materialName)){ - try { - if(rs.findColumn("tdName") > 0){ - tousseName = rs.getString("tdName"); - } - } catch (Exception e) { + Long qmiId = rs.getLong(5); + if(washScope){ + if(StringUtils.isNotBlank(tousseName)){ + qmiIdToLastTousseNameMap.put(qmiId, tousseName); } + if(StringUtils.isBlank(materialName)){ + continue; + } + if(qmiIdToLastTousseNameMap.containsKey(qmiId)){ + tousseName = qmiIdToLastTousseNameMap.get(qmiId); + } } int amount = rs.getInt(4); - Long qmiId = rs.getLong(5); + String positionMsg = rs.getString(6); String createUserName = rs.getString("createUserName"); Integer frequency = null;