Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r19442 -r19461 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 19442) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 19461) @@ -2587,10 +2587,12 @@ getInstructionCardUnqualified(startAndEndDays, list,querySupplyRoom,isHidePartOfWorkQualityCollection); // 包外明显污迹 getTousseOutsideSmudginess(startAndEndDays, list,querySupplyRoom,isHidePartOfWorkQualityCollection); - // 标签固定差 - getLooseTagsAmount(startAndEndDays, list,querySupplyRoom,isHidePartOfWorkQualityCollection); - // 包装松散 - getIncompactPackageAmount(startAndEndDays, list,querySupplyRoom,isHidePartOfWorkQualityCollection); + if(isHidePartOfWorkQualityCollection == false){ + // 标签固定差 + getLooseTagsAmount(startAndEndDays, list,querySupplyRoom,isHidePartOfWorkQualityCollection); + // 包装松散 + getIncompactPackageAmount(startAndEndDays, list,querySupplyRoom,isHidePartOfWorkQualityCollection); + } // 灭菌方式选择不正确发生数 getSterilizationTypeChooserWrong(startAndEndDays, list,querySupplyRoom,isHidePartOfWorkQualityCollection); // 湿包发生数 @@ -3025,9 +3027,17 @@ // 清洗总数的Map Map washAmountMap = getWashAmountMap(querySupplyRoom,year); // 装配总数的Map - Map packAmountMap = getPackAmountMap(querySupplyRoom,year); + Map packAmountMap = getPackAmountMap(querySupplyRoom,year,""); + // 装配消毒物品总数的Map + Map packDisinfectAmountMap = getPackAmountMap(querySupplyRoom,year,TousseDefinition.PACKAGE_TYPE_DISINFECTION); // 灭菌总数的Map Map sterilizationAmountMap = getSterilizationAmountMap(querySupplyRoom,year); + // 灭菌记录条数的Map + Map sterilizationRecordAmountMap = getSterilizationRecordAmountMap(querySupplyRoom,year,"4#"); + // 发货数量的Map + Map invoiceAmountMap = getInvoiceAmountMap(querySupplyRoom,year,""); + // 手术室发货数量的Map + Map invoiceOperateAmountMap = getInvoiceAmountMap(querySupplyRoom,year,"手术室"); // 中大附一的特殊配置 String isZSYYWorkQualityCollectionStr = params.get("isZSYYWorkQualityCollection"); if("true".equals(isZSYYWorkQualityCollectionStr)){ @@ -3065,13 +3075,13 @@ // 器械清洗不合格数 getMaterialWashUnqualifiedAmountAllYear(year, list,querySupplyRoom,washAmountMap,isHidePartOfWorkQualityCollection); // 消毒物品不合格数 - getDisinfectGoodsUnqualifiedAmountAllYear(year, list,querySupplyRoom,isHidePartOfWorkQualityCollection); + getDisinfectGoodsUnqualifiedAmountAllYear(year, list,querySupplyRoom,packDisinfectAmountMap,isHidePartOfWorkQualityCollection); // 灭菌物品包装密闭不合格数 getPackSealUnqualifiedAmountAllYear(year, list,querySupplyRoom,packAmountMap,isHidePartOfWorkQualityCollection); // 回收器械丢失发生件数 - getRecyclingMaterialLostAmountAllYear(year, list,querySupplyRoom,isHidePartOfWorkQualityCollection); + getRecyclingMaterialLostAmountAllYear(year, list,querySupplyRoom,washAmountMap,isHidePartOfWorkQualityCollection); // 器械损坏件数 - getMaterialScrapAmountAllYear(year, list,querySupplyRoom,packAmountMap,isHidePartOfWorkQualityCollection); + getMaterialScrapAmountAllYear(year, list,querySupplyRoom,washAmountMap,isHidePartOfWorkQualityCollection); // 无菌包内器械缺失发生件数 getMaterialLostAmountAllYear(year, list,querySupplyRoom,packAmountMap,isHidePartOfWorkQualityCollection); // 无菌包内器械功能不全件数 @@ -3086,22 +3096,24 @@ getInstructionCardUnqualifiedAllYear(year, list,querySupplyRoom,packAmountMap,isHidePartOfWorkQualityCollection); // 包外明显污迹 getTousseOutsideSmudginessAllYear(year, list,querySupplyRoom,packAmountMap,isHidePartOfWorkQualityCollection); - // 标签固定差 - getLooseTagsAmountAllYear(year, list,querySupplyRoom,packAmountMap,isHidePartOfWorkQualityCollection); - // 包装松散 - getIncompactPackageAmountAllYear(year, list,querySupplyRoom,packAmountMap,isHidePartOfWorkQualityCollection); + if(isHidePartOfWorkQualityCollection == false){ + // 标签固定差 + getLooseTagsAmountAllYear(year, list,querySupplyRoom,packAmountMap,isHidePartOfWorkQualityCollection); + // 包装松散 + getIncompactPackageAmountAllYear(year, list,querySupplyRoom,packAmountMap,isHidePartOfWorkQualityCollection); + } // 灭菌方式选择不正确发生数 - getSterilizationTypeChooserWrongAllYear(year, list,querySupplyRoom,isHidePartOfWorkQualityCollection); + getSterilizationTypeChooserWrongAllYear(year, list,querySupplyRoom,packAmountMap,isHidePartOfWorkQualityCollection); // 湿包发生数 - getWetBagAmountAllYear(year, list,querySupplyRoom,sterilizationAmountMap,isHidePartOfWorkQualityCollection); + getWetBagAmountAllYear(year, list,querySupplyRoom,packAmountMap,isHidePartOfWorkQualityCollection); // 破包发生数 - getTornBagAmountAllYear(year, list,querySupplyRoom,sterilizationAmountMap,isHidePartOfWorkQualityCollection); + getTornBagAmountAllYear(year, list,querySupplyRoom,packAmountMap,isHidePartOfWorkQualityCollection); // 灭菌失败事件发生数 - getSterilizationFaildAmountAllYear(year, list,querySupplyRoom,isHidePartOfWorkQualityCollection); + getSterilizationFaildAmountAllYear(year, list,querySupplyRoom,sterilizationRecordAmountMap,isHidePartOfWorkQualityCollection); // 无菌物品发放错误发生数 - getGoodsDeliveryErrorAllYear(year, list,querySupplyRoom,isHidePartOfWorkQualityCollection); + getGoodsDeliveryErrorAllYear(year, list,querySupplyRoom,invoiceAmountMap,isHidePartOfWorkQualityCollection); // 手术包次日下送件数 - getSecordDaySendTousseAmountAllYear(year, list,querySupplyRoom,isHidePartOfWorkQualityCollection); + getSecordDaySendTousseAmountAllYear(year, list,querySupplyRoom,invoiceOperateAmountMap,isHidePartOfWorkQualityCollection); return list; } private List getZSYYWorkQualityCollectionListAllyear(String querySupplyRoom,String year ,Map recAmountMap, @@ -3461,7 +3473,7 @@ * @param year * @return */ - private Map getPackAmountMap(String querySupplyRoom,String year){ + private Map getPackAmountMap(String querySupplyRoom,String year,String tousseType){ Map map = new HashMap(); String queryYear = year + "-01-01 00:00:00"; String nextYear = getNextYear(year) + " 00:00:00"; @@ -3472,6 +3484,17 @@ + " and p.packTime <= " + dateQueryAdapter.dateAdapter(nextYear) + " group by " + dateQueryAdapter.dateConverAdapter3("p.packTime","mm"); + if(StringUtils.isNotBlank(tousseType)){ + sql2 = "select " + dateQueryAdapter.dateConverAdapter3("p.packTime","mm") + + " monthstr, sum(p.amount) from packingrecord p,TousseDefinition td " + + " where p.tousseDefinitionId = td.id and td.tousseType = '" + tousseType + "'" + + " and p.orgUnitCoding = '"+querySupplyRoom+"' and p.packTime >= " + + dateQueryAdapter.dateAdapter(queryYear) + + " and p.packTime <= " + + dateQueryAdapter.dateAdapter(nextYear) + + " group by " + dateQueryAdapter.dateConverAdapter3("p.packTime","mm"); + } + map = getMapBySql(sql2); return map; } @@ -3497,6 +3520,68 @@ return map; } /** + * 获取灭菌记录条数的的map,12个月的数据 + * @param querySupplyRoom + * @param year + * @return + */ + private Map getSterilizationRecordAmountMap(String querySupplyRoom,String year,String sterilizerNameNotContain){ + Map map = new HashMap(); + String queryYear = year + "-01-01 00:00:00"; + String nextYear = getNextYear(year) + " 00:00:00"; + String sterilizerNameSql = ""; + + String sql2 = "select " + dateQueryAdapter.dateConverAdapter3("r.endDate","mm") + + " monthstr, count(*) from sterilizationrecord r where r.endDate >= " + + dateQueryAdapter.dateAdapter(queryYear) + + " and r.endDate <= " + + dateQueryAdapter.dateAdapter(nextYear) + + " and (r.status = '灭菌完成' or r.status = '灭菌失败') " + + " and r.orgUnitCoding = '"+querySupplyRoom+"'" + + " group by " + dateQueryAdapter.dateConverAdapter3("r.endDate","mm"); + if(StringUtils.isNotBlank(sterilizerNameNotContain)){ + sql2 = "select " + dateQueryAdapter.dateConverAdapter3("r.endDate","mm") + + " monthstr, count(*) from sterilizationrecord r ,sterilizer s where r.sterilizer_id = s.id " + + " and r.endDate >= " + + dateQueryAdapter.dateAdapter(queryYear) + + " and r.endDate <= " + + dateQueryAdapter.dateAdapter(nextYear) + + " and (r.status = '灭菌完成' or r.status = '灭菌失败') " + + " and r.orgUnitCoding = '"+querySupplyRoom+"'" + + " and s.name not like '%" + sterilizerNameNotContain + "%' " + + " group by " + dateQueryAdapter.dateConverAdapter3("r.endDate","mm"); + } + map = getMapBySql(sql2); + return map; + } + /** + * 获取发货器械包的数量的map,12个月的数据 + * @param querySupplyRoom + * @param year + * @param depart + * @return + */ + private Map getInvoiceAmountMap(String querySupplyRoom,String year,String depart){ + Map map = new HashMap(); + String queryYear = year + "-01-01 00:00:00"; + String nextYear = getNextYear(year) + " 00:00:00"; + String departSql = ""; + if(StringUtils.isNotBlank(depart)){ + departSql = " and i.depart = '" + depart + "'"; + } + String sql2 = "select " + dateQueryAdapter.dateConverAdapter3("i.sendTime","mm") + + " monthstr, count(*) from invoice i,tousseinstance t where i.id=t.invoice_id " + + " and i.sendTime >= " + + dateQueryAdapter.dateAdapter(queryYear) + + " and i.sendTime <= " + + dateQueryAdapter.dateAdapter(nextYear) + + departSql + + " group by " + dateQueryAdapter.dateConverAdapter3("i.sendTime","mm"); + + map = getMapBySql(sql2); + return map; + } + /** * 获取每个月数据的map,sql的查询结果第一个必须是字符串,第二个是数量 * @param sql * @return @@ -3630,26 +3715,42 @@ + " and fd.formType = '质量监测' " +" group by qi.id"; + String totalSql = "select sum(p.amount) from packingrecord p,TousseDefinition td " + + " where p.tousseDefinitionId = td.id and td.tousseType = '" + TousseDefinition.PACKAGE_TYPE_DISINFECTION + "'" + + " and p.orgUnitCoding = '"+querySupplyRoom+"' and p.packTime >= " + + dateQueryAdapter.dateAdapter(startDay) + + " and p.packTime <= " + + dateQueryAdapter.dateAdapter(endDay); +// getAmountBySql bean.setTitle("消毒物品不合格数"); bean.setRowNum(list.size()+1); Integer amount = 0; - ResultSet rs = objectDao.executeSql(sql); - try { - while (rs.next()) { - amount = rs.getInt(1); - if(isHidePartOfWorkQualityCollection == true){ - // 设置发生数 - setWorkQualityBeanUnQualityAmount(bean, key, amount); - // 总数为空 - setWorkQualityBeanAmount(bean, key, ""); - }else{ - setWorkQualityBeanAmount(bean, key, amount); - } + amount = getAmountBySql(sql); + if(isHidePartOfWorkQualityCollection == true){ + // 设置发生数 + setWorkQualityBeanUnQualityAmount(bean, key, amount); + // 总数为空 + setWorkQualityBeanAmount(bean, key, ""); + }else{ + setWorkQualityBeanAmount(bean, key, amount); + } + Integer totalAmount = getAmountBySql(totalSql); + // 设置百分比 + if (totalAmount != null && totalAmount > 0) { + double percentage = new BigDecimal(amount).divide( + new BigDecimal(totalAmount), 4, + BigDecimal.ROUND_HALF_UP).doubleValue(); + percentage = new BigDecimal(percentage).multiply( + new BigDecimal(100)).doubleValue(); + setWorkQualityBeanPercentage(bean, key, percentage); + } + if(isHidePartOfWorkQualityCollection == true && totalAmount > 0){ + setWorkQualityBeanAmount(bean, key, totalAmount); + if(amount == null){ + setWorkQualityBeanUnQualityAmount(bean, key, 0); + }else { + setWorkQualityBeanUnQualityAmount(bean, key, amount); } - } catch (SQLException e) { - e.printStackTrace(); - }finally { - DatabaseUtil.closeResultSetAndStatement(rs); } } if (startAndEndDays.size() != 1 || bean.getAmount().intValue() != 0) { @@ -3660,6 +3761,7 @@ private void getDisinfectGoodsUnqualifiedAmountAllYear( String year, List list,String querySupplyRoom, + Map packAmountMap, boolean isHidePartOfWorkQualityCollection) throws SQLException { WorkQualityCollection bean = new WorkQualityCollection(); String queryYear = year + "-01-01 00:00:00"; @@ -3681,6 +3783,7 @@ bean.setTitle("消毒物品不合格数"); String key = ""; Integer amount = 0; + Map map = new HashMap(); if(isHidePartOfWorkQualityCollection == true){ bean.initAmountSpace(); } @@ -3692,6 +3795,7 @@ key = Integer.valueOf(key).toString(); } amount = result.getInt(2); + map.put(key,amount); if(isHidePartOfWorkQualityCollection == true){ // 设置发生数 setWorkQualityBeanUnQualityAmount(bean, key, amount); @@ -3704,6 +3808,31 @@ }finally { DatabaseUtil.closeResultSetAndStatement(result); } + // 遍历结果集 设置百分比 + if(packAmountMap != null && isHidePartOfWorkQualityCollection == true){ + for(Map.Entry entry:packAmountMap.entrySet()){ + key = entry.getKey(); + amount = map.get(key); + // 总数 + int amount2 = entry.getValue(); + if(amount2 > 0 && amount != null){ + double percentage = new BigDecimal(amount).divide( + new BigDecimal(amount2), 4, BigDecimal.ROUND_HALF_UP) + .doubleValue(); + percentage = new BigDecimal(percentage).multiply( + new BigDecimal(100)).doubleValue(); + setWorkQualityBeanPercentage(bean, key, percentage); + } + if(isHidePartOfWorkQualityCollection == true && amount2 > 0){ + setWorkQualityBeanAmount(bean, key, amount2); + if(amount == null){ + setWorkQualityBeanUnQualityAmount(bean, key, 0); + }else { + setWorkQualityBeanUnQualityAmount(bean, key, amount); + } + } + } + } list.add(bean); } @@ -3843,24 +3972,41 @@ + dateQueryAdapter.dateAdapter(endDay) + " and i.status != '未发货'"; + String totalSql = "select count(*) from invoice i,tousseinstance t where i.id=t.invoice_id " + + " and i.sendTime >= " + + dateQueryAdapter.dateAdapter(startDay) + + " and i.sendTime <= " + + dateQueryAdapter.dateAdapter(endDay) + + " and i.depart = '" + "手术室" + "'"; + bean.setRowNum(list.size()+1);; bean.setTitle("手术包次日下送件数"); - Integer amount = 0; - ResultSet rs = objectDao.executeSql(sql); - try { - while (rs.next()) { - amount = rs.getInt(1); - if(isHidePartOfWorkQualityCollection == true){ - // 设置发生数 - setWorkQualityBeanUnQualityAmount(bean, key, amount); - }else{ - setWorkQualityBeanAmount(bean, key, amount); - } + Integer amount = getAmountBySql(sql); + if(isHidePartOfWorkQualityCollection == true){ + // 设置发生数 + setWorkQualityBeanUnQualityAmount(bean, key, amount); + // 总数为空 + setWorkQualityBeanAmount(bean, key, ""); + }else{ + setWorkQualityBeanAmount(bean, key, amount); + } + Integer totalAmount = getAmountBySql(totalSql); + // 设置百分比 + if (totalAmount != null && totalAmount > 0) { + double percentage = new BigDecimal(amount).divide( + new BigDecimal(totalAmount), 4, + BigDecimal.ROUND_HALF_UP).doubleValue(); + percentage = new BigDecimal(percentage).multiply( + new BigDecimal(100)).doubleValue(); + setWorkQualityBeanPercentage(bean, key, percentage); + } + if(isHidePartOfWorkQualityCollection == true && totalAmount > 0){ + setWorkQualityBeanAmount(bean, key, totalAmount); + if(amount == null){ + setWorkQualityBeanUnQualityAmount(bean, key, 0); + }else { + setWorkQualityBeanUnQualityAmount(bean, key, amount); } - } catch (SQLException e) { - e.printStackTrace(); - }finally { - DatabaseUtil.closeResultSetAndStatement(rs); } } if (startAndEndDays.size() != 1 || bean.getAmount().intValue() != 0) { @@ -3871,6 +4017,7 @@ private void getSecordDaySendTousseAmountAllYear( String year, List list,String querySupplyRoom, + Map invoiceOperateAmountMap, boolean isHidePartOfWorkQualityCollection) throws SQLException { WorkQualityCollection bean = new WorkQualityCollection(); String queryYear = year + "-01-01 00:00:00"; @@ -3896,6 +4043,7 @@ if(isHidePartOfWorkQualityCollection == true){ bean.initAmountSpace(); } + Map map = new HashMap(); try { while (result.next()) { key = result.getString(1); @@ -3904,6 +4052,7 @@ key = Integer.valueOf(key).toString(); } amount = result.getInt(2); + map.put(key,amount); if(isHidePartOfWorkQualityCollection == true){ // 设置发生数 setWorkQualityBeanUnQualityAmount(bean, key, amount); @@ -3916,6 +4065,34 @@ }finally { DatabaseUtil.closeResultSetAndStatement(result); } + // 遍历结果集 设置百分比 + if(invoiceOperateAmountMap != null){ + for(Map.Entry entry:invoiceOperateAmountMap.entrySet()){ + key = entry.getKey(); + amount = map.get(key); + if(amount == null || amount <= 0){ + continue; + } + // 总数 + int amount2 = entry.getValue(); + if(amount2 > 0 && amount != null){ + double percentage = new BigDecimal(amount).divide( + new BigDecimal(amount2), 4, BigDecimal.ROUND_HALF_UP) + .doubleValue(); + percentage = new BigDecimal(percentage).multiply( + new BigDecimal(100)).doubleValue(); + setWorkQualityBeanPercentage(bean, key, percentage); + } + if(isHidePartOfWorkQualityCollection == true && amount2 > 0){ + setWorkQualityBeanAmount(bean, key, amount2); + if(amount == null){ + setWorkQualityBeanUnQualityAmount(bean, key, 0); + }else { + setWorkQualityBeanUnQualityAmount(bean, key, amount); + } + } + } + } list.add(bean); } @@ -4017,15 +4194,44 @@ + dateQueryAdapter.dateAdapter(endDay) + " and fd.formType = '质量监测'" + " and fi.orgUnitCoding = '"+querySupplyRoom+"'"; + String totalSql = "select count(*) from sterilizationrecord r ,sterilizer s where r.sterilizer_id = s.id " + + " and r.endDate >= " + + dateQueryAdapter.dateAdapter(startDay) + + " and r.endDate <= " + + dateQueryAdapter.dateAdapter(endDay) + + " and (r.status = '灭菌完成' or r.status = '灭菌失败') " + + " and r.orgUnitCoding = '"+querySupplyRoom+"'" + + " and s.name not like '%" + "4#" + "%' "; + Integer amount = getSumAmountBySql(sql); bean.setTitle("灭菌失败事件发生数"); bean.setRowNum(list.size()+1); if(isHidePartOfWorkQualityCollection == true){ // 设置发生数 setWorkQualityBeanUnQualityAmount(bean, key, amount); + setWorkQualityBeanAmount(bean, key, ""); }else{ setWorkQualityBeanAmount(bean, key, amount); } + // 总数 + Integer totalAmount = getAmountBySql(totalSql); + // 设置百分比 + if (totalAmount != null && totalAmount > 0) { + double percentage = new BigDecimal(amount).divide( + new BigDecimal(totalAmount), 4, + BigDecimal.ROUND_HALF_UP).doubleValue(); + percentage = new BigDecimal(percentage).multiply( + new BigDecimal(100)).doubleValue(); + setWorkQualityBeanPercentage(bean, key, percentage); + } + if(isHidePartOfWorkQualityCollection == true && totalAmount > 0){ + setWorkQualityBeanAmount(bean, key, totalAmount); + if(amount == null){ + setWorkQualityBeanUnQualityAmount(bean, key, 0); + }else { + setWorkQualityBeanUnQualityAmount(bean, key, amount); + } + } } if (startAndEndDays.size() != 1 || bean.getAmount().intValue() != 0) { list.add(bean); @@ -4035,6 +4241,7 @@ private void getSterilizationFaildAmountAllYear( String year, List list,String querySupplyRoom, + Map sterilizationRecordAmountMap, boolean isHidePartOfWorkQualityCollection) throws SQLException { WorkQualityCollection bean = new WorkQualityCollection(); String queryYear = year + "-01-01 00:00:00"; @@ -4058,6 +4265,7 @@ if(isHidePartOfWorkQualityCollection == true){ bean.initAmountSpace(); } + Map map = new HashMap(); try { while (result.next()) { key = result.getString(1); @@ -4066,6 +4274,7 @@ key = Integer.valueOf(key).toString(); } amount = result.getInt(2); + map.put(key,amount); if(isHidePartOfWorkQualityCollection == true){ // 设置发生数 setWorkQualityBeanUnQualityAmount(bean, key, amount); @@ -4078,6 +4287,31 @@ }finally { DatabaseUtil.closeResultSetAndStatement(result); } + // 遍历结果集 设置百分比 + if(sterilizationRecordAmountMap != null && isHidePartOfWorkQualityCollection == true){ + for(Map.Entry entry:sterilizationRecordAmountMap.entrySet()){ + key = entry.getKey(); + amount = map.get(key); + // 总数 + int amount2 = entry.getValue(); + if(amount2 > 0 && amount != null){ + double percentage = new BigDecimal(amount).divide( + new BigDecimal(amount2), 4, BigDecimal.ROUND_HALF_UP) + .doubleValue(); + percentage = new BigDecimal(percentage).multiply( + new BigDecimal(100)).doubleValue(); + setWorkQualityBeanPercentage(bean, key, percentage); + } + if(isHidePartOfWorkQualityCollection == true && amount2 > 0){ + setWorkQualityBeanAmount(bean, key, amount2); + if(amount == null){ + setWorkQualityBeanUnQualityAmount(bean, key, 0); + }else { + setWorkQualityBeanUnQualityAmount(bean, key, amount); + } + } + } + } list.add(bean); } @@ -4111,15 +4345,41 @@ endDay = innerMap.get(keyOfInnerMap); } String sql = buildQualityMonitoringSQL2(startDay, endDay, querySupplyRoom, "无菌物品发放错误发生数"); + String totalSql = "select count(*) from invoice i,tousseinstance t where i.id=t.invoice_id " + + " and i.sendTime >= " + + dateQueryAdapter.dateAdapter(startDay) + + " and i.sendTime <= " + + dateQueryAdapter.dateAdapter(endDay); Integer amount = getSumAmountBySql(sql); bean.setTitle("无菌物品发放错误发生数"); bean.setRowNum(list.size()+1); if(isHidePartOfWorkQualityCollection == true){ // 设置发生数 setWorkQualityBeanUnQualityAmount(bean, key, amount); + // 总数为空 + setWorkQualityBeanAmount(bean, key, ""); }else{ setWorkQualityBeanAmount(bean, key, amount); } + // + Integer totalAmount = getAmountBySql(totalSql); + // 设置百分比 + if (totalAmount != null && totalAmount > 0) { + double percentage = new BigDecimal(amount).divide( + new BigDecimal(totalAmount), 4, + BigDecimal.ROUND_HALF_UP).doubleValue(); + percentage = new BigDecimal(percentage).multiply( + new BigDecimal(100)).doubleValue(); + setWorkQualityBeanPercentage(bean, key, percentage); + } + if(isHidePartOfWorkQualityCollection == true && totalAmount > 0){ + setWorkQualityBeanAmount(bean, key, totalAmount); + if(amount == null){ + setWorkQualityBeanUnQualityAmount(bean, key, 0); + }else { + setWorkQualityBeanUnQualityAmount(bean, key, amount); + } + } } if (startAndEndDays.size() != 1 || bean.getAmount().intValue() != 0) { list.add(bean); @@ -4129,6 +4389,7 @@ private void getGoodsDeliveryErrorAllYear( String year, List list,String querySupplyRoom, + Map invoiceAmountMap, boolean isHidePartOfWorkQualityCollection) throws SQLException { WorkQualityCollection bean = new WorkQualityCollection(); String queryYear = year + "-01-01 00:00:00"; @@ -4153,6 +4414,7 @@ if(isHidePartOfWorkQualityCollection == true){ bean.initAmountSpace(); } + Map map = new HashMap(); try { while (result.next()) { key = result.getString(1); @@ -4161,6 +4423,7 @@ key = Integer.valueOf(key).toString(); } amount = result.getInt(2); + map.put(key,amount); if(isHidePartOfWorkQualityCollection == true){ // 设置发生数 setWorkQualityBeanUnQualityAmount(bean, key, amount); @@ -4173,6 +4436,31 @@ }finally { DatabaseUtil.closeResultSetAndStatement(result); } + // 遍历结果集 设置百分比 + if(invoiceAmountMap != null && isHidePartOfWorkQualityCollection == true){ + for(Map.Entry entry:invoiceAmountMap.entrySet()){ + key = entry.getKey(); + amount = map.get(key); + // 总数 + int amount2 = entry.getValue(); + if(amount2 > 0 && amount != null){ + double percentage = new BigDecimal(amount).divide( + new BigDecimal(amount2), 4, BigDecimal.ROUND_HALF_UP) + .doubleValue(); + percentage = new BigDecimal(percentage).multiply( + new BigDecimal(100)).doubleValue(); + setWorkQualityBeanPercentage(bean, key, percentage); + } + if(isHidePartOfWorkQualityCollection == true && amount2 > 0){ + setWorkQualityBeanAmount(bean, key, amount2); + if(amount == null){ + setWorkQualityBeanUnQualityAmount(bean, key, 0); + }else { + setWorkQualityBeanUnQualityAmount(bean, key, amount); + } + } + } + } list.add(bean); } private void getRecyclingMaterialLostAmount( @@ -4192,15 +4480,42 @@ endDay = innerMap.get(keyOfInnerMap); } String sql = buildQualityMonitoringSQL(querySupplyRoom, startDay, endDay, "回收器械丢失"); + // 清洗总数量 + String totalSql = "select sum(r.washmaterialamount) from washanddisinfectrecord r " + + "where r.orgUnitCoding = '"+querySupplyRoom+"' and r.endDate >= " + + dateQueryAdapter.dateAdapter(startDay) + + " and r.endDate <= " + + dateQueryAdapter.dateAdapter(endDay); Integer amount = getSumAmountBySql(sql); bean.setTitle("回收器械丢失发生件数"); bean.setRowNum(list.size()+1); if(isHidePartOfWorkQualityCollection == true){ // 设置发生数 setWorkQualityBeanUnQualityAmount(bean, key, amount); + // 总数为空 + setWorkQualityBeanAmount(bean, key, ""); }else{ setWorkQualityBeanAmount(bean, key, amount); } + // + Integer totalAmount = getAmountBySql(totalSql); + // 设置百分比 + if (totalAmount != null && totalAmount > 0) { + double percentage = new BigDecimal(amount).divide( + new BigDecimal(totalAmount), 4, + BigDecimal.ROUND_HALF_UP).doubleValue(); + percentage = new BigDecimal(percentage).multiply( + new BigDecimal(100)).doubleValue(); + setWorkQualityBeanPercentage(bean, key, percentage); + } + if(isHidePartOfWorkQualityCollection == true && totalAmount > 0){ + setWorkQualityBeanAmount(bean, key, totalAmount); + if(amount == null){ + setWorkQualityBeanUnQualityAmount(bean, key, 0); + }else { + setWorkQualityBeanUnQualityAmount(bean, key, amount); + } + } } if (startAndEndDays.size() != 1 || bean.getAmount().intValue() != 0) { list.add(bean); @@ -4210,6 +4525,7 @@ private void getRecyclingMaterialLostAmountAllYear( String year, List list,String querySupplyRoom, + Map washAmountMap, boolean isHidePartOfWorkQualityCollection) throws SQLException { WorkQualityCollection bean = new WorkQualityCollection(); String queryYear = year + "-01-01 00:00:00"; @@ -4231,6 +4547,7 @@ bean.setTitle("回收器械丢失发生件数"); String key = ""; Integer amount = 0; + Map map = new HashMap(); if(isHidePartOfWorkQualityCollection == true){ bean.initAmountSpace(); } @@ -4242,6 +4559,7 @@ key = Integer.valueOf(key).toString(); } amount = result.getInt(2); + map.put(key,amount); if(isHidePartOfWorkQualityCollection == true){ // 设置发生数 setWorkQualityBeanUnQualityAmount(bean, key, amount); @@ -4254,6 +4572,31 @@ }finally { DatabaseUtil.closeResultSetAndStatement(result); } + // 遍历结果集 设置百分比 + if(washAmountMap != null && isHidePartOfWorkQualityCollection == true){ + for(Map.Entry entry:washAmountMap.entrySet()){ + key = entry.getKey(); + amount = map.get(key); + // 总数 + int amount2 = entry.getValue(); + if(amount2 > 0 && amount != null){ + double percentage = new BigDecimal(amount).divide( + new BigDecimal(amount2), 4, BigDecimal.ROUND_HALF_UP) + .doubleValue(); + percentage = new BigDecimal(percentage).multiply( + new BigDecimal(100)).doubleValue(); + setWorkQualityBeanPercentage(bean, key, percentage); + } + if(isHidePartOfWorkQualityCollection == true && amount2 > 0){ + setWorkQualityBeanAmount(bean, key, amount2); + if(amount == null){ + setWorkQualityBeanUnQualityAmount(bean, key, 0); + }else { + setWorkQualityBeanUnQualityAmount(bean, key, amount); + } + } + } + } list.add(bean); } private void getMaterialScrapAmount( @@ -4270,11 +4613,11 @@ endDay = innerMap.get(keyOfInnerMap); } String sql = buildQualityMonitoringSQL(querySupplyRoom, startDay, endDay, "器械损坏"); - String sql2 = "select sum(p.amount) from packingrecord p " - + " where p.orgUnitCoding = '"+querySupplyRoom+"' and p.packTime >= " + String sql2 = "select sum(r.washmaterialamount) from washanddisinfectrecord r " + + "where r.orgUnitCoding = '"+querySupplyRoom+"' and r.endDate >= " + dateQueryAdapter.dateAdapter(startDay) - + " and p.packTime <= " - + dateQueryAdapter.dateAdapter(endDay); + + " and r.endDate <= " + + dateQueryAdapter.dateAdapter(endDay);; Integer amount = getSumAmountBySql(sql); if (amount == null) { @@ -4283,7 +4626,14 @@ Integer amount2 = getSumAmountBySql(sql2); bean.setTitle("器械损坏件数"); bean.setRowNum(list.size()+1); - setWorkQualityBeanAmount(bean, key, amount); + if(isHidePartOfWorkQualityCollection == true){ + // 设置发生数 + setWorkQualityBeanUnQualityAmount(bean, key, amount); + // 总数为空 + setWorkQualityBeanAmount(bean, key, ""); + }else{ + setWorkQualityBeanAmount(bean, key, amount); + } if (amount2 != null && amount2 > 0) { double percentage = new BigDecimal(amount).divide( new BigDecimal(amount2), 4, BigDecimal.ROUND_HALF_UP) @@ -4852,13 +5202,12 @@ endDay = innerMap.get(keyOfInnerMap); } String sql = buildQualityMonitoringSQL2(startDay, endDay, querySupplyRoom, "湿包"); - // 灭菌总数 - String sql2 = "select sum(r.amount) from sterilizationrecord r where r.endDate >= " + // 装配总数 + String sql2 = "select sum(p.amount) from packingrecord p" + + " where p.orgUnitCoding = '"+querySupplyRoom+"' and p.packTime >= " + dateQueryAdapter.dateAdapter(startDay) - + " and r.endDate <= " - + dateQueryAdapter.dateAdapter(endDay) - + " and r.status = '灭菌完成'" - + " and r.orgUnitCoding = '"+querySupplyRoom+"'"; + + " and p.packTime <= " + + dateQueryAdapter.dateAdapter(endDay);; Integer amount = getSumAmountBySql(sql); Integer sterilizationAmount = getSumAmountBySql(sql2); @@ -4972,12 +5321,11 @@ } String sql = buildQualityMonitoringSQL2(startDay, endDay, querySupplyRoom, "破包"); // 灭菌总数 - String sql2 = "select sum(r.amount) from sterilizationrecord r where r.endDate >= " + String sql2 = "select sum(p.amount) from packingrecord p" + + " where p.orgUnitCoding = '"+querySupplyRoom+"' and p.packTime >= " + dateQueryAdapter.dateAdapter(startDay) - + " and r.endDate <= " - + dateQueryAdapter.dateAdapter(endDay) - + " and r.status = '灭菌完成'" - + " and r.orgUnitCoding = '"+querySupplyRoom+"'"; + + " and p.packTime <= " + + dateQueryAdapter.dateAdapter(endDay); Integer amount = getSumAmountBySql(sql); Integer sterilizationAmount = getSumAmountBySql(sql2); @@ -5028,7 +5376,11 @@ ResultSet result = objectDao.executeSql(sql); bean.setRowNum(list.size()+1); - bean.setTitle("破包发生数量"); + if(isHidePartOfWorkQualityCollection == true){ + bean.setTitle("破包发生数"); + }else{ + bean.setTitle("破包发生数量"); + } String key = ""; Integer amount = 0; Map map = new HashMap(); @@ -5100,15 +5452,42 @@ + dateQueryAdapter.dateAdapter(endDay) + " and fd.formType = '质量监测'" + " and fi.orgUnitCoding = '"+querySupplyRoom+"'"; + Integer amount = getSumAmountBySql(sql); bean.setTitle("灭菌方式选择不正确发生数"); bean.setRowNum(list.size()+1); if(isHidePartOfWorkQualityCollection == true){ // 设置发生数 setWorkQualityBeanUnQualityAmount(bean, key, amount); + // 总数为空 + setWorkQualityBeanAmount(bean, key, ""); }else{ setWorkQualityBeanAmount(bean, key, amount); } + //装配总数 + String totalSql = "select sum(p.amount) from packingrecord p" + + " where p.orgUnitCoding = '"+querySupplyRoom+"' and p.packTime >= " + + dateQueryAdapter.dateAdapter(startDay) + + " and p.packTime <= " + + dateQueryAdapter.dateAdapter(endDay); + Integer totalAmount = getAmountBySql(totalSql); + // 设置百分比 + if (totalAmount != null && totalAmount > 0) { + double percentage = new BigDecimal(amount).divide( + new BigDecimal(totalAmount), 4, + BigDecimal.ROUND_HALF_UP).doubleValue(); + percentage = new BigDecimal(percentage).multiply( + new BigDecimal(100)).doubleValue(); + setWorkQualityBeanPercentage(bean, key, percentage); + } + if(isHidePartOfWorkQualityCollection == true && totalAmount > 0){ + setWorkQualityBeanAmount(bean, key, totalAmount); + if(amount == null){ + setWorkQualityBeanUnQualityAmount(bean, key, 0); + }else { + setWorkQualityBeanUnQualityAmount(bean, key, amount); + } + } } if (startAndEndDays.size() != 1 || bean.getAmount().intValue() != 0) { list.add(bean); @@ -5118,6 +5497,7 @@ private void getSterilizationTypeChooserWrongAllYear( String year, List list,String querySupplyRoom, + Map packAmountMap, boolean isHidePartOfWorkQualityCollection) throws SQLException { WorkQualityCollection bean = new WorkQualityCollection(); String queryYear = year + "-01-01 00:00:00"; @@ -5140,6 +5520,7 @@ bean.setTitle("灭菌方式选择不正确发生数"); String key = ""; Integer amount = 0; + Map map = new HashMap(); if(isHidePartOfWorkQualityCollection == true){ bean.initAmountSpace(); } @@ -5151,6 +5532,7 @@ key = Integer.valueOf(key).toString(); } amount = result.getInt(2); + map.put(key,amount); if(isHidePartOfWorkQualityCollection == true){ // 设置发生数 setWorkQualityBeanUnQualityAmount(bean, key, amount); @@ -5163,6 +5545,31 @@ }finally { DatabaseUtil.closeResultSetAndStatement(result); } + // 遍历结果集 设置百分比 + if(packAmountMap != null || isHidePartOfWorkQualityCollection == true){ + for(Map.Entry entry:packAmountMap.entrySet()){ + key = entry.getKey(); + amount = map.get(key); + // 总数 + int amount2 = entry.getValue(); + if(amount2 > 0 && amount != null){ + double percentage = new BigDecimal(amount).divide( + new BigDecimal(amount2), 4, BigDecimal.ROUND_HALF_UP) + .doubleValue(); + percentage = new BigDecimal(percentage).multiply( + new BigDecimal(100)).doubleValue(); + setWorkQualityBeanPercentage(bean, key, percentage); + } + if(isHidePartOfWorkQualityCollection == true && amount2 > 0){ + setWorkQualityBeanAmount(bean, key, amount2); + if(amount == null){ + setWorkQualityBeanUnQualityAmount(bean, key, 0); + }else { + setWorkQualityBeanUnQualityAmount(bean, key, amount); + } + } + } + } list.add(bean); } private void getLabelErrorAmount(