Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/MonitoringItemBean.java =================================================================== diff -u -r32170 -r33405 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/MonitoringItemBean.java (.../MonitoringItemBean.java) (revision 32170) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/MonitoringItemBean.java (.../MonitoringItemBean.java) (revision 33405) @@ -14,6 +14,10 @@ private String goodsName;//物品名称 private Integer amount;//数量 + /** + * 登记的材料数量 + */ + private Integer registerMaterialAmount; private Integer orderNumber;//排序号 @@ -224,5 +228,13 @@ public void setMaterialAmount(Integer materialAmount) { this.materialAmount = materialAmount; } + + public Integer getRegisterMaterialAmount() { + return registerMaterialAmount; + } + + public void setRegisterMaterialAmount(Integer registerMaterialAmount) { + this.registerMaterialAmount = registerMaterialAmount; + } } Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r33404 -r33405 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 33404) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 33405) @@ -15885,6 +15885,7 @@ } //是否无菌包质量抽查登记表,是则隐藏监测结果列 Map isQualifiedAmount = new HashMap(); + Map isQualifiedMaterialAmount = new HashMap(); if (!FORMNAMEOFADJ.equals(formName) && FormDefinition.FOMRTYPE_PERIODICMONITORING.equals(monitoringType)) { sql = " select " + dataSql + " dateStr," + " qmd.tousseName toussName,qmd.material material,qmd.amount amount,qmi.id qmiId,qmi.positionMsg positionMsg,qmi.result,fi.createUserName " @@ -15893,7 +15894,7 @@ + " join QualityMonitoringDefinition qmdf on qmdf.id=fd.id join QualityMonitoringGoods qmd on qmi.id=qmd.qualityMonitoringInstance_id " + extraJoin + " where qmi.type = '" + FormDefinition.FOMRTYPE_PERIODICMONITORING + "'" + " and " + whereSql + tousseNameSql; - addMonitoringItemBeanRountineMonitoring(list,sql,showSterilizationInfo,isQualifiedAmount); + addMonitoringItemBeanRountineMonitoring(list,sql,showSterilizationInfo,isQualifiedAmount,isQualifiedMaterialAmount); } if(StringUtils.isNotBlank(extraQueryForResponsibilityPart) && "质量监测".equals(monitoringType)){ String sql2 = " select " + dataSql + " dateStr,qmi.id qmiId," @@ -15973,9 +15974,8 @@ } if (totalAmount > 0 || list.size() > 0) { List> listMap = getBeanMap(list,numNames); - if( listMap != null && listMap.size() > 1){ + if( listMap != null && listMap.size() > 0){ Map beanStatisticsMap = listMap.get(0); - Map beanStatisticsMap2 = listMap.get(1); if(beanStatisticsMap != null){ for (Map.Entry entry : beanStatisticsMap.entrySet()){ String key = entry.getKey(); @@ -16072,7 +16072,7 @@ } } if(totalAmount != null && totalAmount > 0){ - addQualifiedAmountInfo(isQualifiedAmount, list, orderNumber, option, questionName); + addQualifiedAmountInfo(isQualifiedAmount,isQualifiedMaterialAmount, list, orderNumber, option, questionName); } } } @@ -16087,7 +16087,7 @@ * @param option 监测参数 * @param questionName 监测细则名称 */ - private void addQualifiedAmountInfo(Map isQualifiedAmount, List list, Integer orderNumber, + private void addQualifiedAmountInfo(Map isQualifiedAmount,Map isQualifiedMaterialAmount, List list, Integer orderNumber, String option, String questionName){ for (String key : isQualifiedAmount.keySet()) { MonitoringItemBean mib = new MonitoringItemBean(); @@ -16097,6 +16097,7 @@ mib.setOption(option); mib.setQuestionName(questionName); mib.setAmount(isQualifiedAmount.get(key)); + mib.setRegisterMaterialAmount(isQualifiedMaterialAmount.get(key)); mib.setPositionMsg(""); list.add(mib); } @@ -16882,11 +16883,12 @@ list.add(bean); } private void newMonitoringItem(List list, - Integer amount,String tousseName,String materialName, + Integer registerMaterialAmount, Integer amount,String tousseName,String materialName, Long qmiId,String positoinMsg,String dateStr, Integer orderNum,String questionName,String option,String answer,Integer frequency, String sterilizerName, boolean isCustomADJAndIsFormNameIsADJ, String createUserName, Long qmdId, Integer materialAmount) { MonitoringItemBean bean = new MonitoringItemBean(); bean.setAmount(amount); + bean.setRegisterMaterialAmount(registerMaterialAmount); bean.setDateTime(dateStr); bean.setMaterialName(materialName); bean.setTousseName(tousseName); @@ -17025,6 +17027,7 @@ ResultSet rs = objectDao.executeSql(sql); try { Map qmiIdToLastTousseNameMap = new HashMap(); + Map qmiIdToLastTousseAmountMap = new HashMap(); MonitoringItemBean lastMonitoringItemBean = null; Set readedIds = new HashSet(); while (rs.next()) { @@ -17035,7 +17038,8 @@ if(!readedIds.contains(qmiId)){ readedIds.add(qmiId); if(lastMonitoringItemBean != null){ - newMonitoringItem(list, lastMonitoringItemBean.getAmount(), + newMonitoringItem(list, lastMonitoringItemBean.getRegisterMaterialAmount(), + lastMonitoringItemBean.getAmount(), lastMonitoringItemBean.getTousseName(), lastMonitoringItemBean.getMaterialName(), lastMonitoringItemBean.getQualityMonitoringInstanceId(), @@ -17078,14 +17082,16 @@ if(SqlUtils.isExistColumn(rs, "materialAmount")){ materialAmount = rs.getInt("materialAmount"); } + String tousseAmountKey = null; if(washScope){ int qmdOrderNumber = rs.getInt("qmdOrderNumber"); if(StringUtils.isNotBlank(tousseName)){ qmiIdToLastTousseNameMap.put(qmiId + "_" + qmdOrderNumber, tousseName); + qmiIdToLastTousseAmountMap.put(qmiId + "_" + qmdOrderNumber, amount); } if(StringUtils.isBlank(materialName)){ if(lastMonitoringItemBean != null){ - newMonitoringItem(list, lastMonitoringItemBean.getAmount(), + newMonitoringItem(list, lastMonitoringItemBean.getRegisterMaterialAmount(), lastMonitoringItemBean.getAmount(), lastMonitoringItemBean.getTousseName(), lastMonitoringItemBean.getMaterialName(), lastMonitoringItemBean.getQualityMonitoringInstanceId(), @@ -17102,14 +17108,20 @@ lastMonitoringItemBean.getMaterialAmount()); lastMonitoringItemBean = null; } - lastMonitoringItemBean = new MonitoringItemBean(); - lastMonitoringItemBean.setAmount(amount); + lastMonitoringItemBean = new MonitoringItemBean(); lastMonitoringItemBean.setAnswer(answer); lastMonitoringItemBean.setDateTime(dataStr); lastMonitoringItemBean.setSterilizerName(sterilizerName); lastMonitoringItemBean.setCreateUserName(createUserName); lastMonitoringItemBean.setFrequency(frequency); lastMonitoringItemBean.setMaterialName(materialName); + if(StringUtils.isNotBlank(tousseName) && StringUtils.isNotBlank(materialName)){ + lastMonitoringItemBean.setRegisterMaterialAmount(amount); + }else if(StringUtils.isNotBlank(tousseName)){ + lastMonitoringItemBean.setAmount(amount); + }else if(StringUtils.isNotBlank(materialName)){ + lastMonitoringItemBean.setRegisterMaterialAmount(amount); + } lastMonitoringItemBean.setTousseName(tousseName); lastMonitoringItemBean.setQualityMonitoringInstanceId(qmiId); lastMonitoringItemBean.setPositionMsg(positionMsg); @@ -17124,16 +17136,26 @@ for (int i = 1; i < qmdOrderNumber; i++) { if(qmiIdToLastTousseNameMap.containsKey(qmiId + "_" + (qmdOrderNumber - i))){ tousseName = qmiIdToLastTousseNameMap.get(qmiId + "_" + (qmdOrderNumber - i)); + tousseAmountKey = qmiId + "_" + (qmdOrderNumber - i); break; } } - } - newMonitoringItem(list, amount,tousseName,materialName,qmiId,positionMsg, + Integer registerMaterialAmount = 0; + if(StringUtils.isNotBlank(tousseName) && StringUtils.isNotBlank(materialName)){ + registerMaterialAmount = amount; + if(tousseAmountKey != null){ + amount = qmiIdToLastTousseAmountMap.get(tousseAmountKey); + } + }else if(StringUtils.isNotBlank(materialName)){ + registerMaterialAmount = amount; + amount = 0; + } + newMonitoringItem(list, registerMaterialAmount,amount,tousseName,materialName,qmiId,positionMsg, dataStr, orderNum, questionName,optionStr, answer,frequency,sterilizerName,isCustomADJAndIsFormNameIsADJ,createUserName, qmdid, materialAmount); } if(lastMonitoringItemBean != null){ - newMonitoringItem(list, lastMonitoringItemBean.getAmount(), + newMonitoringItem(list, lastMonitoringItemBean.getRegisterMaterialAmount(),lastMonitoringItemBean.getAmount(), lastMonitoringItemBean.getTousseName(), lastMonitoringItemBean.getMaterialName(), lastMonitoringItemBean.getQualityMonitoringInstanceId(), @@ -17323,7 +17345,7 @@ if(dataStr == null){ dataStr = rs.getString("dateStr"); } - newMonitoringItem(list, 0,"","",qmiId,positionMsg, + newMonitoringItem(list, 0, 0,"","",qmiId,positionMsg, dataStr, orderNum, questionName,optionStr, answer, frequency, sterilizerName, addMonitoringItemBeanOptionSingleResult,createUserName, null, 0); } } catch (SQLException e) { @@ -17345,6 +17367,7 @@ try { rs = objectDao.executeSql(sql); Map qmiIdToLastTousseNameMap = new HashMap(); + Map qmiIdToLastTousseAmountMap = new HashMap(); MonitoringItemBean lastMonitoringItemBean = null; Set readedIds = new HashSet(); while (rs.next()) { @@ -17355,7 +17378,7 @@ if(!readedIds.contains(qmiId)){ readedIds.add(qmiId); if(lastMonitoringItemBean != null){ - newMonitoringItem(list, lastMonitoringItemBean.getAmount(), + newMonitoringItem(list, lastMonitoringItemBean.getRegisterMaterialAmount(),lastMonitoringItemBean.getAmount(), lastMonitoringItemBean.getTousseName(), lastMonitoringItemBean.getMaterialName(), lastMonitoringItemBean.getQualityMonitoringInstanceId(), @@ -17397,14 +17420,17 @@ if(SqlUtils.isExistColumn(rs, "materialAmount")){ materialAmount = rs.getInt("materialAmount"); } + String tousseAmountKey = null; if(washScope){ int qmdOrderNumber = rs.getInt("qmdOrderNumber"); if(StringUtils.isNotBlank(tousseName)){ qmiIdToLastTousseNameMap.put(qmiId + "_" + qmdOrderNumber, tousseName); + qmiIdToLastTousseAmountMap.put(qmiId + "_" + qmdOrderNumber, amount); } if(StringUtils.isBlank(materialName)){ if(lastMonitoringItemBean != null){ - newMonitoringItem(list, lastMonitoringItemBean.getAmount(), + newMonitoringItem(list, lastMonitoringItemBean.getRegisterMaterialAmount() + ,lastMonitoringItemBean.getAmount(), lastMonitoringItemBean.getTousseName(), lastMonitoringItemBean.getMaterialName(), lastMonitoringItemBean.getQualityMonitoringInstanceId(), @@ -17420,15 +17446,21 @@ lastMonitoringItemBean.getMaterialAmount()); lastMonitoringItemBean = null; } - lastMonitoringItemBean = new MonitoringItemBean(); - lastMonitoringItemBean.setAmount(amount); + lastMonitoringItemBean = new MonitoringItemBean(); lastMonitoringItemBean.setAnswer(answer); lastMonitoringItemBean.setDateTime(dataStr); lastMonitoringItemBean.setSterilizerName(sterilizerName); lastMonitoringItemBean.setCreateUserName(createUserName); lastMonitoringItemBean.setFrequency(frequency); lastMonitoringItemBean.setMaterialName(materialName); lastMonitoringItemBean.setTousseName(tousseName); + if(StringUtils.isNotBlank(tousseName) && StringUtils.isNotBlank(materialName)){ + lastMonitoringItemBean.setRegisterMaterialAmount(amount); + }else if(StringUtils.isNotBlank(tousseName)){ + lastMonitoringItemBean.setAmount(amount); + }else if(StringUtils.isNotBlank(materialName)){ + lastMonitoringItemBean.setRegisterMaterialAmount(amount); + } lastMonitoringItemBean.setQualityMonitoringInstanceId(qmiId); lastMonitoringItemBean.setPositionMsg(positionMsg); lastMonitoringItemBean.setOrderNumber(orderNum); @@ -17441,16 +17473,27 @@ for (int i = 1; i < qmdOrderNumber; i++) { if(qmiIdToLastTousseNameMap.containsKey(qmiId + "_" + (qmdOrderNumber - i))){ tousseName = qmiIdToLastTousseNameMap.get(qmiId + "_" + (qmdOrderNumber - i)); + tousseAmountKey = qmiId + "_" + (qmdOrderNumber - i); break; } } } lastMonitoringItemBean = null; - newMonitoringItem(list, amount,tousseName,materialName,qmiId,positionMsg, + Integer registerMaterialAmount = 0; + if(StringUtils.isNotBlank(tousseName) && StringUtils.isNotBlank(materialName)){ + registerMaterialAmount = amount; + if(tousseAmountKey != null){ + amount = qmiIdToLastTousseAmountMap.get(tousseAmountKey); + } + }else if(StringUtils.isNotBlank(materialName)){ + registerMaterialAmount = amount; + amount = 0; + } + newMonitoringItem(list, registerMaterialAmount,amount,tousseName,materialName,qmiId,positionMsg, dataStr, orderNum, "-",questionName, answer, frequency, sterilizerName, addMonitoringItemBeanOptionSingleResult,createUserName, qmdid, materialAmount); } if(lastMonitoringItemBean != null){ - newMonitoringItem(list, lastMonitoringItemBean.getAmount(), + newMonitoringItem(list, lastMonitoringItemBean.getRegisterMaterialAmount(),lastMonitoringItemBean.getAmount(), lastMonitoringItemBean.getTousseName(), lastMonitoringItemBean.getMaterialName(), lastMonitoringItemBean.getQualityMonitoringInstanceId(), @@ -17498,7 +17541,7 @@ if(dataStr == null){ dataStr = rs.getString("dateStr"); } - newMonitoringItem(list, 0,"","",qmiId,positionMsg, + newMonitoringItem(list, 0 ,0,"","",qmiId,positionMsg, dataStr, orderNum, "-",questionName, answer ,frequency ,sterilizerName, addMonitoringItemBeanOptionSingleResultWithoutMaterial,createUserName, null, 0); } } catch (SQLException e) { @@ -17520,24 +17563,28 @@ try { rs = objectDao.executeSql(sql); Map qmiIdToLastTousseNameMap = new HashMap(); + Map qmiIdToLastTousseAmountMap = new HashMap(); while (rs.next()) { String dataStr = rs.getString(1); String tousseName = rs.getString(2); String materialName = rs.getString(3); Long qmiId = rs.getLong(5); + int amount = rs.getInt(4); + Integer registerMaterialAmount = 0; if(washScope){ if(StringUtils.isNotBlank(tousseName)){ qmiIdToLastTousseNameMap.put(qmiId, tousseName); + qmiIdToLastTousseAmountMap.put(qmiId, amount); } if(StringUtils.isBlank(materialName)){ continue; } if(qmiIdToLastTousseNameMap.containsKey(qmiId)){ tousseName = qmiIdToLastTousseNameMap.get(qmiId); + registerMaterialAmount = amount; + amount = qmiIdToLastTousseAmountMap.get(qmiId); } } - int amount = rs.getInt(4); - String positionMsg = rs.getString(6); String createUserName = rs.getString("createUserName"); Integer frequency = null; @@ -17550,7 +17597,7 @@ if(SqlUtils.isExistColumn(rs, "materialAmount")){ materialAmount = rs.getInt("materialAmount"); } - newMonitoringItem(list, amount,tousseName,materialName,qmiId,positionMsg, + newMonitoringItem(list,registerMaterialAmount, amount,tousseName,materialName,qmiId,positionMsg, dataStr, 1, "-","-", "", frequency, sterilizerName, addMonitoringItemBeanQualityMonitoring,createUserName, null, materialAmount); } } catch (SQLException e) { @@ -17564,14 +17611,16 @@ * @param list * @param sql */ - private void addMonitoringItemBeanRountineMonitoring(List list,String sql,boolean addMonitoringItemBeanRountineMonitoring,Map isQualifiedAmount){ + private void addMonitoringItemBeanRountineMonitoring(List list,String sql,boolean addMonitoringItemBeanRountineMonitoring,Map isQualifiedAmount, Map isQualifiedMaterialAmount){ if(StringUtils.isBlank(sql)){ return ; } ResultSet rs = objectDao.executeSql(sql); try { Integer qualifiedAmount = 0; Integer unQualifiedAmount = 0; + Integer qualifiedMaterialAmount = 0; + Integer unQualifiedMaterialAmount = 0; while (rs.next()) { String dataStr = rs.getString(1); String tousseName = rs.getString(2); @@ -17587,16 +17636,32 @@ frequency = ConvertNumber.getNumberIntValue(rs.getObject("frequency"), null); sterilizerName = rs.getString("sterilizerName"); } - if("合格".equals(result)){ - qualifiedAmount ++; - }else if("不合格".equals(result)){ - unQualifiedAmount++; + if(StringUtils.isNotBlank(tousseName) && StringUtils.isNotBlank(materialName)){ + if("合格".equals(result)){ + qualifiedMaterialAmount ++; + }else if("不合格".equals(result)){ + unQualifiedMaterialAmount++; + } + }else if(StringUtils.isNotBlank(tousseName)){ + if("合格".equals(result)){ + qualifiedAmount ++; + }else if("不合格".equals(result)){ + unQualifiedAmount++; + } + }else{ + if("合格".equals(result)){ + qualifiedMaterialAmount ++; + }else if("不合格".equals(result)){ + unQualifiedMaterialAmount++; + } } - newMonitoringItem(list, amount,tousseName,materialName,qmiId,positionMsg, + newMonitoringItem(list, null,amount,tousseName,materialName,qmiId,positionMsg, dataStr, 100, "-","监测结果", result, frequency, sterilizerName, addMonitoringItemBeanRountineMonitoring,createUserName, null, 0); } isQualifiedAmount.put("合格", qualifiedAmount); isQualifiedAmount.put("不合格", unQualifiedAmount); + isQualifiedMaterialAmount.put("合格", qualifiedMaterialAmount); + isQualifiedMaterialAmount.put("不合格", unQualifiedMaterialAmount); } catch (SQLException e) { e.printStackTrace(); }finally { @@ -17734,7 +17799,6 @@ return null; List> listMap = new ArrayList>(); Map map = new HashMap(); - Map map2 = new HashMap(); for(MonitoringItemBean mt : beanList){ String questionName = mt.getQuestionName(); if("清洗情况".equals(questionName) || "灭菌情况".equals(questionName) || "回收情况".equals(questionName)){ @@ -17764,43 +17828,9 @@ map.put(key, value); } } - // 有数量才添加 - Integer amount = mt.getAmount(); - if(amount != null && amount > 0){ - if(numNames.contains(questionName) || "-".equals(questionName) && numNames.contains(option)){ - if(StringUtils.isNotBlank(answer) && StringUtils.isNumeric(answer)){ - Integer answerNum = Integer.valueOf(answer); - if(!map2.containsKey(key) ){ - map2.put(key, answerNum); - }else{ - int value = map2.get(key) + answerNum; - map2.put(key, value); - } - } - }else{ - if( !map2.containsKey(key) ){ - map2.put(key, amount); - }else{ - int value = map2.get(key) + amount; - map2.put(key, value); - } - } - } - }else if(key.equals("1_-_-")){ - // 统计项没有结果,只有材料(器械包)和数量的数据 - Integer amount = mt.getAmount(); - if(amount != null && amount > 0){ - if( !map2.containsKey(key) ){ - map2.put(key, amount); - }else{ - int value = map2.get(key) + amount; - map2.put(key, value); - } - } } } listMap.add(map); - listMap.add(map2); return listMap; }