Index: ssts-web/src/main/webapp/disinfectsystem/config/zsyy/config.js =================================================================== diff -u -r19217 -r19325 --- ssts-web/src/main/webapp/disinfectsystem/config/zsyy/config.js (.../config.js) (revision 19217) +++ ssts-web/src/main/webapp/disinfectsystem/config/zsyy/config.js (.../config.js) (revision 19325) @@ -161,5 +161,7 @@ //启用聚合包 enableComboTousse : true, //待回收列表,扫描没有待回收申请单的科室,是否新建回收申请单 - newRecyclingApplicationWhenScanNoApplicationDepart:true + newRecyclingApplicationWhenScanNoApplicationDepart:true, + //中大附一工作质量评价指标报表 + isZSYYWorkQualityCollection : true } \ No newline at end of file Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r19227 -r19325 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 19227) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 19325) @@ -2530,6 +2530,11 @@ } else { startAndEndDays = getStartAndEndDay(null, null, month); } + String isZSYYWorkQualityCollectionStr = params.get("isZSYYWorkQualityCollection"); + if("true".equals(isZSYYWorkQualityCollectionStr)){ + getZSYYWorkQualityCollectionList(startAndEndDays,list,querySupplyRoom); + return list; + } String isHidePartOfWorkQualityCollectionStr = params.get("isHidePartOfWorkQualityCollection"); boolean isHidePartOfWorkQualityCollection = false; if("true".equals(isHidePartOfWorkQualityCollectionStr)){ @@ -2604,26 +2609,434 @@ // System.out.println(Time); return list; } + private void getZSYYWorkQualityCollectionList(Map> startAndEndDays,List list,String querySupplyRoom){ + if(startAndEndDays == null || list == null){ + return ; + } + String startDay = null; + String endDay = null; + String sql = null; + String totalSql = null; + // 回收时发现器械缺损不配套例数 缺损不配套的数据显示 + WorkQualityCollection bean1 = new WorkQualityCollection(); + for (String key : startAndEndDays.keySet()){ + Map innerMap = startAndEndDays.get(key); + for (String keyOfInnerMap : innerMap.keySet()) { + startDay = keyOfInnerMap; + endDay = innerMap.get(keyOfInnerMap); + } + sql = getWorkUnQualityAmountContainSql("缺损不配套的数据显示",startDay,endDay,querySupplyRoom); + totalSql = getTotalRecSql(startDay,endDay,querySupplyRoom); + setWorkQualityCollectionData(bean1,key,sql,totalSql); + } + bean1.setTitle("回收时发现器械缺损不配套例数"); + bean1.setRowNum(list.size()+1); + list.add(bean1); + // 回收时发现器械种类数量不相符例数 种类数据不相符 + WorkQualityCollection bean2 = new WorkQualityCollection(); + for (String key : startAndEndDays.keySet()){ + Map innerMap = startAndEndDays.get(key); + for (String keyOfInnerMap : innerMap.keySet()) { + startDay = keyOfInnerMap; + endDay = innerMap.get(keyOfInnerMap); + } + sql = getWorkUnQualityAmountContainSql("种类数据不相符",startDay,endDay,querySupplyRoom); + totalSql = getTotalRecSql(startDay,endDay,querySupplyRoom); + setWorkQualityCollectionData(bean2,key,sql,totalSql); + } + bean2.setTitle("回收时发现器械种类数量不相符例数"); + bean2.setRowNum(list.size()+1); + list.add(bean2); + // 应急处理器械次数 应急处理 + WorkQualityCollection bean3 = new WorkQualityCollection(); + for (String key : startAndEndDays.keySet()){ + Map innerMap = startAndEndDays.get(key); + for (String keyOfInnerMap : innerMap.keySet()) { + startDay = keyOfInnerMap; + endDay = innerMap.get(keyOfInnerMap); + } + sql = getWorkUnQualityAmountContainSql("应急处理 ",startDay,endDay,querySupplyRoom); + totalSql = getTotalRecSql(startDay,endDay,querySupplyRoom); + setWorkQualityCollectionData(bean3,key,sql,totalSql); + } + bean3.setTitle("应急处理器械次数 "); + bean3.setRowNum(list.size()+1); + list.add(bean3); + // 普通器械清洗不合格率 普通器械清洗不合格 + WorkQualityCollection bean4 = new WorkQualityCollection(); + for (String key : startAndEndDays.keySet()){ + Map innerMap = startAndEndDays.get(key); + for (String keyOfInnerMap : innerMap.keySet()) { + startDay = keyOfInnerMap; + endDay = innerMap.get(keyOfInnerMap); + } + sql = getWorkUnQualityAmountContainSql("普通器械清洗不合格",startDay,endDay,querySupplyRoom); + totalSql = "select sum(cit.amount*tdc.amount) from RecyclingRecord rr join ClassifyBasket_RecyclingRecord cr on rr.id=cr.RecyclingRecord_ID join ClassifyBasket cb on cr.ClassifyBasket_ID=cb.id " + + " join ClassifyBasket_WashRecord cw on cb.id=cw.ClassifyBasket_ID join WashAndDisinfectRecord wr on cw.WashAndDisinfectRecord_ID=wr.id " + + " join ClassifiedItem cit on cb.id=cit.classifybasket_id " + + " join (select td.id tid,td.name tdName, sum(mi.count) amount from MaterialInstance mi, tousseDefinition td where mi.tousse_id=td.id and td.forDisplay=1 and td.tousseGroupName != '专科' group by td.id,td.name) tdc on tdc.tid=cit.tousseDefinitionID" + + " where itemType !='材料' and rr.depart != '手术一区' and rr.depart != '手术二区' and rr.depart != '手术三区' " + + " and wr.id is not null " + + " and rr.orgUnitCoding = '" + querySupplyRoom + "'" + + " and (rr.recyclingTime between "+dateQueryAdapter.dateAdapter(startDay)+" and " + dateQueryAdapter.dateAdapter(endDay) + ")"; + setWorkQualityCollectionData(bean4,key,sql,totalSql); + } + bean4.setTitle("普通器械清洗不合格率"); + bean4.setRowNum(list.size()+1); + list.add(bean4); + // 专科器械清洗不合格率 专科器械清洗不合格 + WorkQualityCollection bean5 = new WorkQualityCollection(); + for (String key : startAndEndDays.keySet()){ + Map innerMap = startAndEndDays.get(key); + for (String keyOfInnerMap : innerMap.keySet()) { + startDay = keyOfInnerMap; + endDay = innerMap.get(keyOfInnerMap); + } + sql = getWorkUnQualityAmountContainSql("专科器械清洗不合格",startDay,endDay,querySupplyRoom); + totalSql = "select sum(cit.amount*tdc.amount) from RecyclingRecord rr join ClassifyBasket_RecyclingRecord cr on rr.id=cr.RecyclingRecord_ID join ClassifyBasket cb on cr.ClassifyBasket_ID=cb.id " + + " join ClassifyBasket_WashRecord cw on cb.id=cw.ClassifyBasket_ID join WashAndDisinfectRecord wr on cw.WashAndDisinfectRecord_ID=wr.id " + + " join ClassifiedItem cit on cb.id=cit.classifybasket_id " + + " join (select td.id tid,td.name tdName, sum(mi.count) amount from MaterialInstance mi, tousseDefinition td where mi.tousse_id=td.id and td.forDisplay=1 and td.tousseGroupName = '专科' group by td.id,td.name) tdc on tdc.tid=cit.tousseDefinitionID" + + " where wr.id is not null " + + " and (rr.recyclingTime between "+dateQueryAdapter.dateAdapter(startDay)+" and " + dateQueryAdapter.dateAdapter(endDay) + ")"; + setWorkQualityCollectionData(bean5,key,sql,totalSql); + } + bean5.setTitle("专科器械清洗不合格率"); + bean5.setRowNum(list.size()+1); + list.add(bean5); + // 手术器械清洗不合格率 手术器械清洗不合格 + WorkQualityCollection bean6 = new WorkQualityCollection(); + for (String key : startAndEndDays.keySet()){ + Map innerMap = startAndEndDays.get(key); + for (String keyOfInnerMap : innerMap.keySet()) { + startDay = keyOfInnerMap; + endDay = innerMap.get(keyOfInnerMap); + } + sql = getWorkUnQualityAmountContainSql("手术器械清洗不合格",startDay,endDay,querySupplyRoom); + totalSql = "select sum(cit.amount*tdc.amount) from RecyclingRecord rr join ClassifyBasket_RecyclingRecord cr on rr.id=cr.RecyclingRecord_ID join ClassifyBasket cb on cr.ClassifyBasket_ID=cb.id " + + " join ClassifyBasket_WashRecord cw on cb.id=cw.ClassifyBasket_ID join WashAndDisinfectRecord wr on cw.WashAndDisinfectRecord_ID=wr.id " + + " join ClassifiedItem cit on cb.id=cit.classifybasket_id " + + " join (select td.id tid,td.name tdName, sum(mi.count) amount from MaterialInstance mi, tousseDefinition td where mi.tousse_id=td.id and td.forDisplay=1 group by td.id,td.name) tdc on tdc.tid=cit.tousseDefinitionID" + + " where itemType !='材料' and (rr.depart = '手术一区' or rr.depart = '手术二区' or rr.depart = '手术三区') " + + " and wr.id is not null " + + " and (rr.recyclingTime between "+dateQueryAdapter.dateAdapter(startDay)+" and " + dateQueryAdapter.dateAdapter(endDay) + ")"; + setWorkQualityCollectionData(bean6,key,sql,totalSql); + } + bean6.setTitle("手术器械清洗不合格率"); + bean6.setRowNum(list.size()+1); + list.add(bean6); + // 无菌包内器械数量不符例数 无菌包内器械数量不符 + WorkQualityCollection bean7 = new WorkQualityCollection(); + for (String key : startAndEndDays.keySet()){ + Map innerMap = startAndEndDays.get(key); + for (String keyOfInnerMap : innerMap.keySet()) { + startDay = keyOfInnerMap; + endDay = innerMap.get(keyOfInnerMap); + } + sql = getWorkUnQualityAmountEqualSql("无菌包内器械数量不符",startDay,endDay,querySupplyRoom); + totalSql = getTotalPackingSql(startDay,endDay,querySupplyRoom); + setWorkQualityCollectionData(bean7,key,sql,totalSql); + } + bean7.setTitle("无菌包内器械数量不符例数"); + bean7.setRowNum(list.size()+1); + list.add(bean7); + // 无菌包内器械功能不全例数 无菌包内器械功能不全 + WorkQualityCollection bean8 = new WorkQualityCollection(); + for (String key : startAndEndDays.keySet()){ + Map innerMap = startAndEndDays.get(key); + for (String keyOfInnerMap : innerMap.keySet()) { + startDay = keyOfInnerMap; + endDay = innerMap.get(keyOfInnerMap); + } + sql = getWorkUnQualityAmountEqualSql("无菌包内器械功能不全",startDay,endDay,querySupplyRoom); + totalSql = getTotalPackingSql(startDay,endDay,querySupplyRoom); + setWorkQualityCollectionData(bean8,key,sql,totalSql); + } + bean8.setTitle("无菌包内器械功能不全例数"); + bean8.setRowNum(list.size()+1); + list.add(bean8); + // 无菌包内器械种类错误例数 无菌包内器械种类错误 + WorkQualityCollection bean9 = new WorkQualityCollection(); + for (String key : startAndEndDays.keySet()){ + Map innerMap = startAndEndDays.get(key); + for (String keyOfInnerMap : innerMap.keySet()) { + startDay = keyOfInnerMap; + endDay = innerMap.get(keyOfInnerMap); + } + sql = getWorkUnQualityAmountEqualSql("无菌包内器械种类错误",startDay,endDay,querySupplyRoom); + totalSql = getTotalPackingSql(startDay,endDay,querySupplyRoom); + setWorkQualityCollectionData(bean9,key,sql,totalSql); + } + bean9.setTitle("无菌包内器械种类错误例数"); + bean9.setRowNum(list.size()+1); + list.add(bean9); + // 包内指示卡欠缺例数 包内指示卡欠缺例数 + WorkQualityCollection bean10 = new WorkQualityCollection(); + for (String key : startAndEndDays.keySet()){ + Map innerMap = startAndEndDays.get(key); + for (String keyOfInnerMap : innerMap.keySet()) { + startDay = keyOfInnerMap; + endDay = innerMap.get(keyOfInnerMap); + } + sql = getWorkUnQualityAmountEqualSql("包内指示卡欠缺例数",startDay,endDay,querySupplyRoom); + totalSql = getTotalPackingSql(startDay,endDay,querySupplyRoom); + setWorkQualityCollectionData(bean10,key,sql,totalSql); + } + bean10.setTitle("包内指示卡欠缺例数"); + bean10.setRowNum(list.size()+1); + list.add(bean10); + // 灭菌包包装密闭性能不合格例数 灭菌包包装密闭性能不合格 + WorkQualityCollection bean11 = new WorkQualityCollection(); + for (String key : startAndEndDays.keySet()){ + Map innerMap = startAndEndDays.get(key); + for (String keyOfInnerMap : innerMap.keySet()) { + startDay = keyOfInnerMap; + endDay = innerMap.get(keyOfInnerMap); + } + sql = getWorkUnQualityAmountEqualSql("灭菌包包装密闭性能不合格",startDay,endDay,querySupplyRoom); + totalSql = getTotalPackingSql(startDay,endDay,querySupplyRoom); + setWorkQualityCollectionData(bean11,key,sql,totalSql); + } + bean11.setTitle("灭菌包包装密闭性能不合格例数"); + bean11.setRowNum(list.size()+1); + list.add(bean11); + // 包外明显污迹例数 污迹 + WorkQualityCollection bean12 = new WorkQualityCollection(); + for (String key : startAndEndDays.keySet()){ + Map innerMap = startAndEndDays.get(key); + for (String keyOfInnerMap : innerMap.keySet()) { + startDay = keyOfInnerMap; + endDay = innerMap.get(keyOfInnerMap); + } + sql = getWorkUnQualityAmountContainSql("污迹",startDay,endDay,querySupplyRoom); + totalSql = getTotalPackingSql(startDay,endDay,querySupplyRoom); + setWorkQualityCollectionData(bean12,key,sql,totalSql); + } + bean12.setTitle("包外明显污迹例数"); + bean12.setRowNum(list.size()+1); + list.add(bean12); + // 无菌包标识不正确例数 无菌包标识不正确 + WorkQualityCollection bean13 = new WorkQualityCollection(); + for (String key : startAndEndDays.keySet()){ + Map innerMap = startAndEndDays.get(key); + for (String keyOfInnerMap : innerMap.keySet()) { + startDay = keyOfInnerMap; + endDay = innerMap.get(keyOfInnerMap); + } + sql = getWorkUnQualityAmountEqualSql("无菌包标识不正确",startDay,endDay,querySupplyRoom); + totalSql = getTotalPackingSql(startDay,endDay,querySupplyRoom); + setWorkQualityCollectionData(bean13,key,sql,totalSql); + } + bean13.setTitle("无菌包标识不正确例数"); + bean13.setRowNum(list.size()+1); + list.add(bean13); + // 灭菌方式选择不正确例数 灭菌方式选择不正确 + WorkQualityCollection bean14 = new WorkQualityCollection(); + for (String key : startAndEndDays.keySet()){ + Map innerMap = startAndEndDays.get(key); + for (String keyOfInnerMap : innerMap.keySet()) { + startDay = keyOfInnerMap; + endDay = innerMap.get(keyOfInnerMap); + } + sql = getWorkUnQualityAmountEqualSql("灭菌方式选择不正确",startDay,endDay,querySupplyRoom); + totalSql = getTotalPackingSql(startDay,endDay,querySupplyRoom); + setWorkQualityCollectionData(bean14,key,sql,totalSql); + } + bean14.setTitle("灭菌方式选择不正确例数"); + bean14.setRowNum(list.size()+1); + list.add(bean14); + // 湿包例数 湿包 + WorkQualityCollection bean15 = new WorkQualityCollection(); + for (String key : startAndEndDays.keySet()){ + Map innerMap = startAndEndDays.get(key); + for (String keyOfInnerMap : innerMap.keySet()) { + startDay = keyOfInnerMap; + endDay = innerMap.get(keyOfInnerMap); + } + sql = getWorkUnQualityAmountEqualSql("湿包",startDay,endDay,querySupplyRoom); + totalSql = getTotalPackingSql(startDay,endDay,querySupplyRoom); + setWorkQualityCollectionData(bean15,key,sql,totalSql); + } + bean15.setTitle("湿包例数"); + bean15.setRowNum(list.size()+1); + list.add(bean15); + // 包内化学指示卡变色不合格例数 包内化学指示卡变色不合格 + WorkQualityCollection bean16 = new WorkQualityCollection(); + for (String key : startAndEndDays.keySet()){ + Map innerMap = startAndEndDays.get(key); + for (String keyOfInnerMap : innerMap.keySet()) { + startDay = keyOfInnerMap; + endDay = innerMap.get(keyOfInnerMap); + } + sql = getWorkUnQualityAmountEqualSql("包内化学指示卡变色不合格",startDay,endDay,querySupplyRoom); + totalSql = getTotalPackingSql(startDay,endDay,querySupplyRoom); + setWorkQualityCollectionData(bean16,key,sql,totalSql); + } + bean16.setTitle("包内化学指示卡变色不合格例数"); + bean16.setRowNum(list.size()+1); + list.add(bean16); + // 无菌物品发放不及时次数 无菌物品发放不及时 + WorkQualityCollection bean17 = new WorkQualityCollection(); + for (String key : startAndEndDays.keySet()){ + Map innerMap = startAndEndDays.get(key); + for (String keyOfInnerMap : innerMap.keySet()) { + startDay = keyOfInnerMap; + endDay = innerMap.get(keyOfInnerMap); + } + sql = getWorkUnQualityAmountEqualSql("无菌物品发放不及时",startDay,endDay,querySupplyRoom); + totalSql = "select sum(it.amount) from invoice iv,InvoiceItem it,OrgUnit org where iv.id=it.invoiceID and iv.orgUnitCoding=org.orgUnitCoding " + + " and org.name != '手术一区' and org.name != '手术二区' and org.name != '手术三区' " + + " and (iv.sendTime between "+dateQueryAdapter.dateAdapter(startDay)+" and " + dateQueryAdapter.dateAdapter(endDay) + ")"; + setWorkQualityCollectionData(bean17,key,sql,totalSql); + } + bean17.setTitle("无菌物品发放不及时次数"); + bean17.setRowNum(list.size()+1); + list.add(bean17); + // 器械损坏例数 器械损坏 + WorkQualityCollection bean18 = new WorkQualityCollection(); + for (String key : startAndEndDays.keySet()){ + Map innerMap = startAndEndDays.get(key); + for (String keyOfInnerMap : innerMap.keySet()) { + startDay = keyOfInnerMap; + endDay = innerMap.get(keyOfInnerMap); + } + sql = getWorkUnQualityAmountEqualSql("器械损坏",startDay,endDay,querySupplyRoom); + totalSql = getTotalRecSql(startDay,endDay,querySupplyRoom); + setWorkQualityCollectionData(bean18,key,sql,totalSql); + } + bean18.setTitle("器械损坏例数"); + bean18.setRowNum(list.size()+1); + list.add(bean18); + // 器械遗失例数 器械遗失 + WorkQualityCollection bean19 = new WorkQualityCollection(); + for (String key : startAndEndDays.keySet()){ + Map innerMap = startAndEndDays.get(key); + for (String keyOfInnerMap : innerMap.keySet()) { + startDay = keyOfInnerMap; + endDay = innerMap.get(keyOfInnerMap); + } + sql = getWorkUnQualityAmountEqualSql("器械遗失",startDay,endDay,querySupplyRoom); + totalSql = getTotalRecSql(startDay,endDay,querySupplyRoom); + setWorkQualityCollectionData(bean19,key,sql,totalSql); + } + bean19.setTitle("器械遗失例数"); + bean19.setRowNum(list.size()+1); + list.add(bean19); + } + // 获取回收总数sql + private String getTotalRecSql(String startDay,String endDay,String querySupplyRoom){ + String sql = " select sum(tdc.amount*ri.amount) from RecyclingRecord rr join RecyclingItem ri on rr.id=ri.recyclingRecord_id join TousseDefinition td on td.id=ri.tousseDefinitionId " + + " join (select td.id tid,td.name tdName, sum(mi.count) amount from MaterialInstance mi, tousseDefinition td where mi.tousse_id=td.id and td.forDisplay=1 group by td.id,td.name) tdc " + + " on tdc.tid=td.id " + + " where rr.orgUnitCoding = '" + querySupplyRoom + "'" + + " and rr.recyclingTime between " + dateQueryAdapter.dateAdapter(startDay) +" and " + dateQueryAdapter.dateAdapter(endDay); + return sql; + } + // 获取清洗总数sql + private String getTotalWashSql(String startDay,String endDay,String querySupplyRoom){ + String sql = "select sum(r.washmaterialamount) from washanddisinfectrecord r " + + "where r.orgUnitCoding = '"+querySupplyRoom+"' and r.endDate >= " + + dateQueryAdapter.dateAdapter(startDay) + + " and r.endDate <= " + + dateQueryAdapter.dateAdapter(endDay); + return sql; + } + // 获取装配总数sql + private String getTotalPackingSql(String startDay,String endDay,String querySupplyRoom){ + String sql = "select sum(p.amount) from packingrecord p" + + " where p.orgUnitCoding = '"+querySupplyRoom+"' and p.packTime >= " + + dateQueryAdapter.dateAdapter(startDay) + + " and p.packTime <= " + + dateQueryAdapter.dateAdapter(endDay); + return sql; + } + // 获取工作量持续收集不合格的数据sql 等于监测项名字 + private String getWorkUnQualityAmountEqualSql(String formName,String startDay,String endDay,String querySupplyRoom){ + String sql =" select sum(qmd.amount) amount " + + " from QualityMonitoringInstance qmi,FormInstance fi,FormDefinition fd,QualityMonitoringGoods qmd" + + " where qmi.id=fi.id and fi.formDefinition_id=fd.id and qmi.id = qmd.qualityMonitoringInstance_id " + + " and fd.orgUnitCoding = '" + querySupplyRoom + "'" + + " and fd.formName = '" + formName + "'" + + " and (qmi.dateTime between " +dateQueryAdapter.dateAdapter(endDay)+" and " + dateQueryAdapter.dateAdapter(endDay) + ")"; + return sql; + } + // 获取工作量持续收集不合格的数据sql 包含监测项名字 + private String getWorkUnQualityAmountContainSql(String formName,String startDay,String endDay,String querySupplyRoom){ + String sql =" select sum(qmd.amount) amount " + + " from QualityMonitoringInstance qmi,FormInstance fi,FormDefinition fd,QualityMonitoringGoods qmd" + + " where qmi.id=fi.id and fi.formDefinition_id=fd.id and qmi.id = qmd.qualityMonitoringInstance_id " + + " and fd.orgUnitCoding = '" + querySupplyRoom + "'" + + " and fd.formName like '%" + formName + "%'" + + " and (qmi.dateTime between " +dateQueryAdapter.dateAdapter(endDay)+" and " + dateQueryAdapter.dateAdapter(endDay) + ")"; + return sql; + } + private void setWorkQualityCollectionData(WorkQualityCollection bean,String key,String subSql,String totalSql){ + Integer amount = 0; + ResultSet rs = objectDao.executeSql(subSql); + try { + while (rs.next()) { + amount = rs.getInt(1); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + ResultSet rs2 = objectDao.executeSql(totalSql); + try { + while (rs2.next()) { + Integer washAmount = rs2.getInt(1); + if (washAmount != null && washAmount > 0) { + double percentage = new BigDecimal(amount).divide( + new BigDecimal(washAmount), 4, + BigDecimal.ROUND_HALF_UP).doubleValue(); + percentage = new BigDecimal(percentage).multiply( + new BigDecimal(100)).doubleValue(); + setWorkQualityBeanPercentage(bean, key, percentage); + } + setWorkQualityBeanAmount(bean, key, washAmount); + if(amount == null){ + setWorkQualityBeanUnQualityAmount(bean, key, 0); + }else { + setWorkQualityBeanUnQualityAmount(bean, key, amount); + } + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs2); + } +// } + } + private List getWorkQualityCollectionListAllyear( String year,String querySupplyRoom,Map params) throws ParseException, SQLException { List list = new ArrayList(); if(params == null){ return list; } - String isHidePartOfWorkQualityCollectionStr = params.get("isHidePartOfWorkQualityCollection"); - boolean isHidePartOfWorkQualityCollection = false; - if("true".equals(isHidePartOfWorkQualityCollectionStr)){ - isHidePartOfWorkQualityCollection = true; - } + // 回收总数的Map + Map recAmountMap = getRecyclingAmountMap(querySupplyRoom,year); // 清洗总数的Map Map washAmountMap = getWashAmountMap(querySupplyRoom,year); // 装配总数的Map Map packAmountMap = getPackAmountMap(querySupplyRoom,year); // 灭菌总数的Map Map sterilizationAmountMap = getSterilizationAmountMap(querySupplyRoom,year); + // 中大附一的特殊配置 + String isZSYYWorkQualityCollectionStr = params.get("isZSYYWorkQualityCollection"); + if("true".equals(isZSYYWorkQualityCollectionStr)){ + return getZSYYWorkQualityCollectionListAllyear(querySupplyRoom,year,recAmountMap,washAmountMap,packAmountMap); + } + String isHidePartOfWorkQualityCollectionStr = params.get("isHidePartOfWorkQualityCollection"); + boolean isHidePartOfWorkQualityCollection = false; + if("true".equals(isHidePartOfWorkQualityCollectionStr)){ + isHidePartOfWorkQualityCollection = true; + } + if(false == isHidePartOfWorkQualityCollection){ // 处理器械总件数 getWashMaterialAmountAllYear(year, list,querySupplyRoom); @@ -2688,7 +3101,312 @@ getSecordDaySendTousseAmountAllYear(year, list,querySupplyRoom,isHidePartOfWorkQualityCollection); return list; } + private List getZSYYWorkQualityCollectionListAllyear(String querySupplyRoom,String year ,Map recAmountMap, + Map washAmountMap,Map packingAmountMap){ + List list = new ArrayList(); + String queryYear = year + "-01-01 00:00:00"; + String nextYear = getNextYear(year) + " 00:00:00"; + //回收时发现器械缺损不配套例数 + String sql = " select " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm") + " monthstr,sum(qmd.amount) amount " + + " from QualityMonitoringInstance qmi,FormInstance fi,FormDefinition fd,QualityMonitoringGoods qmd" + + " where qmi.id=fi.id and fi.formDefinition_id=fd.id and qmi.id = qmd.qualityMonitoringInstance_id " + + " and fd.formName like '%缺损不配套的数据显示%'" + + " and fi.orgUnitCoding = '"+querySupplyRoom+"'" + + " and (qmi.dateTime between " +dateQueryAdapter.dateAdapter(queryYear)+" and " + dateQueryAdapter.dateAdapter(nextYear) + ")" + + " group by " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm"); + String titleName = "回收时发现器械缺损不配套例数"; + addWorkQualityCollectionBean(list,titleName,sql,recAmountMap); + // 回收时发现器械种类数量不相符例数 + sql = " select " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm") + " monthstr,sum(qmd.amount) amount " + + " from QualityMonitoringInstance qmi,FormInstance fi,FormDefinition fd,QualityMonitoringGoods qmd" + + " where qmi.id=fi.id and fi.formDefinition_id=fd.id and qmi.id = qmd.qualityMonitoringInstance_id " + + " and fd.formName like '%种类数据不相符%'" + + " and fi.orgUnitCoding = '"+querySupplyRoom+"'" + + " and (qmi.dateTime between " +dateQueryAdapter.dateAdapter(queryYear)+" and " + dateQueryAdapter.dateAdapter(nextYear) + ")" + + " group by " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm"); + titleName = "回收时发现器械种类数量不相符例数"; + addWorkQualityCollectionBean(list,titleName,sql,recAmountMap); + // 应急处理器械次数 + sql = " select " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm") + " monthstr,sum(qmd.amount) amount " + + " from QualityMonitoringInstance qmi,FormInstance fi,FormDefinition fd,QualityMonitoringGoods qmd" + + " where qmi.id=fi.id and fi.formDefinition_id=fd.id and qmi.id = qmd.qualityMonitoringInstance_id " + + " and fd.formName like '%应急处理%'" + + " and fi.orgUnitCoding = '"+querySupplyRoom+"'" + + " and (qmi.dateTime between " +dateQueryAdapter.dateAdapter(queryYear)+" and " + dateQueryAdapter.dateAdapter(nextYear) + ")" + + " group by " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm"); + titleName = "应急处理器械次数"; + addWorkQualityCollectionBean(list,titleName,sql,recAmountMap); + // 普通器械清洗不合格率 + String totalSql = "select " +dateQueryAdapter.dateConverAdapter3("rr.recyclingTime","mm") + + " month,sum(cit.amount*tdc.amount) from RecyclingRecord rr join ClassifyBasket_RecyclingRecord cr on rr.id=cr.RecyclingRecord_ID join ClassifyBasket cb on cr.ClassifyBasket_ID=cb.id " + + " join ClassifyBasket_WashRecord cw on cb.id=cw.ClassifyBasket_ID join WashAndDisinfectRecord wr on cw.WashAndDisinfectRecord_ID=wr.id " + + " join ClassifiedItem cit on cb.id=cit.classifybasket_id " + + " join (select td.id tid,td.name tdName, sum(mi.count) amount from MaterialInstance mi, tousseDefinition td where mi.tousse_id=td.id and td.forDisplay=1 and td.tousseGroupName != '专科' group by td.id,td.name) tdc on tdc.tid=cit.tousseDefinitionID" + + " where itemType !='材料' and rr.depart != '手术一区' and rr.depart != '手术二区' and rr.depart != '手术三区' " + + " and wr.id is not null " + + " and rr.orgUnitCoding = '" + querySupplyRoom + "'" + + " and (rr.recyclingTime between "+dateQueryAdapter.dateAdapter(queryYear)+" and " + dateQueryAdapter.dateAdapter(nextYear) + ")" + + " group by " + dateQueryAdapter.dateConverAdapter3("rr.recyclingTime","mm"); + Map totalmap = getMapBySql(totalSql); + sql = " select " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm") + " monthstr,sum(qmd.amount) amount " + + " from QualityMonitoringInstance qmi,FormInstance fi,FormDefinition fd,QualityMonitoringGoods qmd" + + " where qmi.id=fi.id and fi.formDefinition_id=fd.id and qmi.id = qmd.qualityMonitoringInstance_id " + + " and fd.formName like '%普通器械清洗不合格%'" + + " and fi.orgUnitCoding = '"+querySupplyRoom+"'" + + " and (qmi.dateTime between " +dateQueryAdapter.dateAdapter(queryYear)+" and " + dateQueryAdapter.dateAdapter(nextYear) + ")" + + " group by " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm"); + titleName = "普通器械清洗不合格率 "; + addWorkQualityCollectionBean(list,titleName,sql,totalmap); + // 专科器械清洗不合格率 + totalSql = "select " +dateQueryAdapter.dateConverAdapter3("rr.recyclingTime","mm") + + " month,sum(cit.amount*tdc.amount) from RecyclingRecord rr join ClassifyBasket_RecyclingRecord cr on rr.id=cr.RecyclingRecord_ID join ClassifyBasket cb on cr.ClassifyBasket_ID=cb.id " + + " join ClassifyBasket_WashRecord cw on cb.id=cw.ClassifyBasket_ID join WashAndDisinfectRecord wr on cw.WashAndDisinfectRecord_ID=wr.id " + + " join ClassifiedItem cit on cb.id=cit.classifybasket_id " + + " join (select td.id tid,td.name tdName, sum(mi.count) amount from MaterialInstance mi, tousseDefinition td where mi.tousse_id=td.id and td.forDisplay=1 and td.tousseGroupName = '专科' group by td.id,td.name) tdc on tdc.tid=cit.tousseDefinitionID" + + " where wr.id is not null " + + " and (rr.recyclingTime between "+dateQueryAdapter.dateAdapter(queryYear)+" and " + dateQueryAdapter.dateAdapter(nextYear) + ")" + + " group by " + dateQueryAdapter.dateConverAdapter3("rr.recyclingTime","mm"); + totalmap = getMapBySql(totalSql); + sql = " select " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm") + " monthstr,sum(qmd.amount) amount " + + " from QualityMonitoringInstance qmi,FormInstance fi,FormDefinition fd,QualityMonitoringGoods qmd" + + " where qmi.id=fi.id and fi.formDefinition_id=fd.id and qmi.id = qmd.qualityMonitoringInstance_id " + + " and fd.formName like '%专科器械清洗不合格%'" + + " and fi.orgUnitCoding = '"+querySupplyRoom+"'" + + " and (qmi.dateTime between " +dateQueryAdapter.dateAdapter(queryYear)+" and " + dateQueryAdapter.dateAdapter(nextYear) + ")" + + " group by " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm"); + titleName = "专科器械清洗不合格率"; + addWorkQualityCollectionBean(list,titleName,sql,totalmap); + // 手术器械清洗不合格率 + totalSql = "select " +dateQueryAdapter.dateConverAdapter3("rr.recyclingTime","mm") + + " month,sum(cit.amount*tdc.amount) from RecyclingRecord rr join ClassifyBasket_RecyclingRecord cr on rr.id=cr.RecyclingRecord_ID join ClassifyBasket cb on cr.ClassifyBasket_ID=cb.id " + + " join ClassifyBasket_WashRecord cw on cb.id=cw.ClassifyBasket_ID join WashAndDisinfectRecord wr on cw.WashAndDisinfectRecord_ID=wr.id " + + " join ClassifiedItem cit on cb.id=cit.classifybasket_id " + + " join (select td.id tid,td.name tdName, sum(mi.count) amount from MaterialInstance mi, tousseDefinition td where mi.tousse_id=td.id and td.forDisplay=1 group by td.id,td.name) tdc on tdc.tid=cit.tousseDefinitionID" + + " where itemType !='材料' and (rr.depart = '手术一区' or rr.depart = '手术二区' or rr.depart = '手术三区') " + + " and wr.id is not null " + + " and (rr.recyclingTime between "+dateQueryAdapter.dateAdapter(queryYear)+" and " + dateQueryAdapter.dateAdapter(nextYear) + ")" + + " group by " + dateQueryAdapter.dateConverAdapter3("rr.recyclingTime","mm"); + totalmap = getMapBySql(totalSql); + sql = " select " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm") + " monthstr,sum(qmd.amount) amount " + + " from QualityMonitoringInstance qmi,FormInstance fi,FormDefinition fd,QualityMonitoringGoods qmd" + + " where qmi.id=fi.id and fi.formDefinition_id=fd.id and qmi.id = qmd.qualityMonitoringInstance_id " + + " and fd.formName like '%手术器械清洗不合格%'" + + " and fi.orgUnitCoding = '"+querySupplyRoom+"'" + + " and (qmi.dateTime between " +dateQueryAdapter.dateAdapter(queryYear)+" and " + dateQueryAdapter.dateAdapter(nextYear) + ")" + + " group by " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm"); + titleName = "手术器械清洗不合格率"; + addWorkQualityCollectionBean(list,titleName,sql,totalmap); + // 无菌包内器械数量不符例数 + sql = " select " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm") + " monthstr,sum(qmd.amount) amount " + + " from QualityMonitoringInstance qmi,FormInstance fi,FormDefinition fd,QualityMonitoringGoods qmd" + + " where qmi.id=fi.id and fi.formDefinition_id=fd.id and qmi.id = qmd.qualityMonitoringInstance_id " + + " and fd.formName = '无菌包内器械数量不符'" + + " and fi.orgUnitCoding = '"+querySupplyRoom+"'" + + " and (qmi.dateTime between " +dateQueryAdapter.dateAdapter(queryYear)+" and " + dateQueryAdapter.dateAdapter(nextYear) + ")" + + " group by " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm"); + titleName = "无菌包内器械数量不符例数"; + addWorkQualityCollectionBean(list,titleName,sql,packingAmountMap); + // 无菌包内器械功能不全例数 + sql = " select " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm") + " monthstr,sum(qmd.amount) amount " + + " from QualityMonitoringInstance qmi,FormInstance fi,FormDefinition fd,QualityMonitoringGoods qmd" + + " where qmi.id=fi.id and fi.formDefinition_id=fd.id and qmi.id = qmd.qualityMonitoringInstance_id " + + " and fd.formName = '无菌包内器械功能不全'" + + " and fi.orgUnitCoding = '"+querySupplyRoom+"'" + + " and (qmi.dateTime between " +dateQueryAdapter.dateAdapter(queryYear)+" and " + dateQueryAdapter.dateAdapter(nextYear) + ")" + + " group by " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm"); + titleName = "菌包内器械功能不全例数"; + addWorkQualityCollectionBean(list,titleName,sql,packingAmountMap); + // 无菌包内器械种类错误例数 + sql = " select " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm") + " monthstr,sum(qmd.amount) amount " + + " from QualityMonitoringInstance qmi,FormInstance fi,FormDefinition fd,QualityMonitoringGoods qmd" + + " where qmi.id=fi.id and fi.formDefinition_id=fd.id and qmi.id = qmd.qualityMonitoringInstance_id " + + " and fd.formName = '无菌包内器械种类错误'" + + " and fi.orgUnitCoding = '"+querySupplyRoom+"'" + + " and (qmi.dateTime between " +dateQueryAdapter.dateAdapter(queryYear)+" and " + dateQueryAdapter.dateAdapter(nextYear) + ")" + + " group by " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm"); + titleName = "无菌包内器械种类错误例数"; + addWorkQualityCollectionBean(list,titleName,sql,packingAmountMap); + // 包内指示卡欠缺例数 + sql = " select " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm") + " monthstr,sum(qmd.amount) amount " + + " from QualityMonitoringInstance qmi,FormInstance fi,FormDefinition fd,QualityMonitoringGoods qmd" + + " where qmi.id=fi.id and fi.formDefinition_id=fd.id and qmi.id = qmd.qualityMonitoringInstance_id " + + " and fd.formName = '包内指示卡欠缺'" + + " and fi.orgUnitCoding = '"+querySupplyRoom+"'" + + " and (qmi.dateTime between " +dateQueryAdapter.dateAdapter(queryYear)+" and " + dateQueryAdapter.dateAdapter(nextYear) + ")" + + " group by " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm"); + titleName = "包内指示卡欠缺例数"; + addWorkQualityCollectionBean(list,titleName,sql,packingAmountMap); + // 灭菌包包装密闭性能不合格例数 + sql = " select " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm") + " monthstr,sum(qmd.amount) amount " + + " from QualityMonitoringInstance qmi,FormInstance fi,FormDefinition fd,QualityMonitoringGoods qmd" + + " where qmi.id=fi.id and fi.formDefinition_id=fd.id and qmi.id = qmd.qualityMonitoringInstance_id " + + " and fd.formName = '灭菌包包装密闭性能不合格'" + + " and fi.orgUnitCoding = '"+querySupplyRoom+"'" + + " and (qmi.dateTime between " +dateQueryAdapter.dateAdapter(queryYear)+" and " + dateQueryAdapter.dateAdapter(nextYear) + ")" + + " group by " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm"); + titleName = "灭菌包包装密闭性能不合格例数"; + addWorkQualityCollectionBean(list,titleName,sql,packingAmountMap); + // 包外明显污迹例数 + sql = " select " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm") + " monthstr,sum(qmd.amount) amount " + + " from QualityMonitoringInstance qmi,FormInstance fi,FormDefinition fd,QualityMonitoringGoods qmd" + + " where qmi.id=fi.id and fi.formDefinition_id=fd.id and qmi.id = qmd.qualityMonitoringInstance_id " + + " and fd.formName like '%污迹%'" + + " and fi.orgUnitCoding = '"+querySupplyRoom+"'" + + " and (qmi.dateTime between " +dateQueryAdapter.dateAdapter(queryYear)+" and " + dateQueryAdapter.dateAdapter(nextYear) + ")" + + " group by " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm"); + titleName = "包外明显污迹例数"; + addWorkQualityCollectionBean(list,titleName,sql,packingAmountMap); + // 无菌包标识不正确例数 + sql = " select " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm") + " monthstr,sum(qmd.amount) amount " + + " from QualityMonitoringInstance qmi,FormInstance fi,FormDefinition fd,QualityMonitoringGoods qmd" + + " where qmi.id=fi.id and fi.formDefinition_id=fd.id and qmi.id = qmd.qualityMonitoringInstance_id " + + " and fd.formName = '无菌包标识不正确'" + + " and fi.orgUnitCoding = '"+querySupplyRoom+"'" + + " and (qmi.dateTime between " +dateQueryAdapter.dateAdapter(queryYear)+" and " + dateQueryAdapter.dateAdapter(nextYear) + ")" + + " group by " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm"); + titleName = "无菌包标识不正确例数"; + addWorkQualityCollectionBean(list,titleName,sql,packingAmountMap); + // 灭菌方式选择不正确例数 + sql = " select " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm") + " monthstr,sum(qmd.amount) amount " + + " from QualityMonitoringInstance qmi,FormInstance fi,FormDefinition fd,QualityMonitoringGoods qmd" + + " where qmi.id=fi.id and fi.formDefinition_id=fd.id and qmi.id = qmd.qualityMonitoringInstance_id " + + " and fd.formName = '灭菌方式选择不正确'" + + " and fi.orgUnitCoding = '"+querySupplyRoom+"'" + + " and (qmi.dateTime between " +dateQueryAdapter.dateAdapter(queryYear)+" and " + dateQueryAdapter.dateAdapter(nextYear) + ")" + + " group by " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm"); + titleName = "灭菌方式选择不正确例数"; + addWorkQualityCollectionBean(list,titleName,sql,packingAmountMap); + // 湿包例数 + sql = " select " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm") + " monthstr,sum(qmd.amount) amount " + + " from QualityMonitoringInstance qmi,FormInstance fi,FormDefinition fd,QualityMonitoringGoods qmd" + + " where qmi.id=fi.id and fi.formDefinition_id=fd.id and qmi.id = qmd.qualityMonitoringInstance_id " + + " and fd.formName = '湿包'" + + " and fi.orgUnitCoding = '"+querySupplyRoom+"'" + + " and (qmi.dateTime between " +dateQueryAdapter.dateAdapter(queryYear)+" and " + dateQueryAdapter.dateAdapter(nextYear) + ")" + + " group by " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm"); + titleName = "湿包例数"; + addWorkQualityCollectionBean(list,titleName,sql,packingAmountMap); + // 包内化学指示卡变色不合格例数 + sql = " select " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm") + " monthstr,sum(qmd.amount) amount " + + " from QualityMonitoringInstance qmi,FormInstance fi,FormDefinition fd,QualityMonitoringGoods qmd" + + " where qmi.id=fi.id and fi.formDefinition_id=fd.id and qmi.id = qmd.qualityMonitoringInstance_id " + + " and fd.formName = '包内化学指示卡变色不合格'" + + " and fi.orgUnitCoding = '"+querySupplyRoom+"'" + + " and (qmi.dateTime between " +dateQueryAdapter.dateAdapter(queryYear)+" and " + dateQueryAdapter.dateAdapter(nextYear) + ")" + + " group by " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm"); + titleName = "包内化学指示卡变色不合格例数"; + addWorkQualityCollectionBean(list,titleName,sql,packingAmountMap); + // 无菌物品发放不及时次数 + totalSql = "select " +dateQueryAdapter.dateConverAdapter3("iv.sendTime","mm") + + " month, sum(it.amount) from invoice iv,InvoiceItem it,OrgUnit org where iv.id=it.invoiceID and iv.orgUnitCoding=org.orgUnitCoding " + + " and org.name != '手术一区' and org.name != '手术二区' and org.name != '手术三区' " + + " and (iv.sendTime between "+dateQueryAdapter.dateAdapter(queryYear)+" and " + dateQueryAdapter.dateAdapter(nextYear) + ")" + + " group by " + dateQueryAdapter.dateConverAdapter3("iv.sendTime","mm"); + totalmap = getMapBySql(totalSql); + sql = " select " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm") + " monthstr,sum(qmd.amount) amount " + + " from QualityMonitoringInstance qmi,FormInstance fi,FormDefinition fd,QualityMonitoringGoods qmd" + + " where qmi.id=fi.id and fi.formDefinition_id=fd.id and qmi.id = qmd.qualityMonitoringInstance_id " + + " and fd.formName = '无菌物品发放不及时'" + + " and fi.orgUnitCoding = '"+querySupplyRoom+"'" + + " and (qmi.dateTime between " +dateQueryAdapter.dateAdapter(queryYear)+" and " + dateQueryAdapter.dateAdapter(nextYear) + ")" + + " group by " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm"); + titleName = "无菌物品发放不及时次数"; + addWorkQualityCollectionBean(list,titleName,sql,totalmap); + // 器械损坏例数 + sql = " select " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm") + " monthstr,sum(qmd.amount) amount " + + " from QualityMonitoringInstance qmi,FormInstance fi,FormDefinition fd,QualityMonitoringGoods qmd" + + " where qmi.id=fi.id and fi.formDefinition_id=fd.id and qmi.id = qmd.qualityMonitoringInstance_id " + + " and fd.formName = '器械损坏'" + + " and fi.orgUnitCoding = '"+querySupplyRoom+"'" + + " and (qmi.dateTime between " +dateQueryAdapter.dateAdapter(queryYear)+" and " + dateQueryAdapter.dateAdapter(nextYear) + ")" + + " group by " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm"); + titleName = "器械损坏例数"; + addWorkQualityCollectionBean(list,titleName,sql,recAmountMap); + // 器械遗失例数 + sql = " select " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm") + " monthstr,sum(qmd.amount) amount " + + " from QualityMonitoringInstance qmi,FormInstance fi,FormDefinition fd,QualityMonitoringGoods qmd" + + " where qmi.id=fi.id and fi.formDefinition_id=fd.id and qmi.id = qmd.qualityMonitoringInstance_id " + + " and fd.formName = '器械遗失'" + + " and fi.orgUnitCoding = '"+querySupplyRoom+"'" + + " and (qmi.dateTime between " +dateQueryAdapter.dateAdapter(queryYear)+" and " + dateQueryAdapter.dateAdapter(nextYear) + ")" + + " group by " + dateQueryAdapter.dateConverAdapter3("qmi.dateTime","mm"); + titleName = "器械遗失例数"; + addWorkQualityCollectionBean(list,titleName,sql,recAmountMap); + return list; + } + private void addWorkQualityCollectionBean(List list,String titileName,String sql,Map totalMap){ + if(list == null || StringUtils.isBlank(sql) || totalMap == null ){ + return ; + } + WorkQualityCollection bean = new WorkQualityCollection(); + ResultSet result = objectDao.executeSql(sql); + bean.setRowNum(list.size()+1); + bean.setTitle(titileName); + String key = ""; + Integer amount = 0; + Map map = new HashMap(); + try { + while (result.next()) { + key = result.getString(1); + // 月份以0开头的,去掉0 + if(key.length() > 1 && Integer.valueOf(key) < 10){ + key = Integer.valueOf(key).toString(); + } + amount = result.getInt(2); + map.put(key,amount); + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(result); + } + // 遍历结果集 设置百分比 + if(totalMap != null){ + for(Map.Entry entry:totalMap.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); + } + setWorkQualityBeanAmount(bean, key, amount2); + if(amount == null){ + setWorkQualityBeanUnQualityAmount(bean, key, 0); + }else { + setWorkQualityBeanUnQualityAmount(bean, key, amount); + } + } + } + list.add(bean); + } /** + * 获取回收数量的map,12个月的数据 + * @param querySupplyRoom + * @param year + * @return + */ + private Map getRecyclingAmountMap(String querySupplyRoom,String year){ + Map map = new HashMap(); + String queryYear = year + "-01-01 00:00:00"; + String nextYear = getNextYear(year) + " 00:00:00"; + String startDay = dateQueryAdapter.dateAdapter(queryYear); + String endDay = dateQueryAdapter.dateAdapter(nextYear); + String sql = " select " + dateQueryAdapter.dateConverAdapter3("rr.recyclingTime","mm") + " monthstr,sum(tdc.amount*ri.amount) from RecyclingRecord rr join RecyclingItem ri on rr.id=ri.recyclingRecord_id join TousseDefinition td on td.id=ri.tousseDefinitionId " + + " join (select td.id tid,td.name tdName, sum(mi.count) amount from MaterialInstance mi, tousseDefinition td where mi.tousse_id=td.id and td.forDisplay=1 group by td.id,td.name) tdc " + + " on tdc.tid=td.id" + + " where rr.orgUnitCoding = '" + querySupplyRoom + "'" + + " and rr.recyclingTime between " + startDay +" and " + endDay + + " group by " + dateQueryAdapter.dateConverAdapter3("rr.recyclingTime","mm"); + map = getMapBySql(sql); + return map; + } + /** * 获取清洗数量的map,12个月的数据 * @param querySupplyRoom * @param year Index: ssts-web/src/main/webapp/disinfectsystem/reportforms/workQualityCollectionView.js =================================================================== diff -u -r18194 -r19325 --- ssts-web/src/main/webapp/disinfectsystem/reportforms/workQualityCollectionView.js (.../workQualityCollectionView.js) (revision 18194) +++ ssts-web/src/main/webapp/disinfectsystem/reportforms/workQualityCollectionView.js (.../workQualityCollectionView.js) (revision 19325) @@ -48,6 +48,11 @@ if(sstsConfig.hasOwnProperty('isHidePartOfWorkQualityCollection') && sstsConfig.isHidePartOfWorkQualityCollection){ hidePartOfWorkQualityCollection = true; } + var isZSYYWorkQualityCollection = false; + if(sstsConfig.hasOwnProperty('isZSYYWorkQualityCollection') && sstsConfig.isZSYYWorkQualityCollection){ + isZSYYWorkQualityCollection = true; + } + // 全年 var jasperReportName = "workQualityCollection.jasper"; if(type == 'split'){ @@ -70,6 +75,7 @@ } window.open(WWWROOT + "/jasperreports/jasperreportsAction!createReportFromJavaBeanSource.do?jasperreportName=" + jasperReportName +"&reportName=workQualityCollection&querySupplyRoom="+departCoding + +"&isZSYYWorkQualityCollection=" + isZSYYWorkQualityCollection +"&year="+year+"&type="+type+"&isHidePartOfWorkQualityCollection="+hidePartOfWorkQualityCollection,'thisIframe','_self'); } var sign = true;