Index: ssts-web/src/main/webapp/disinfectsystem/config/gzspyqzyy/config.js =================================================================== diff -u -r16658 -r17493 --- ssts-web/src/main/webapp/disinfectsystem/config/gzspyqzyy/config.js (.../config.js) (revision 16658) +++ ssts-web/src/main/webapp/disinfectsystem/config/gzspyqzyy/config.js (.../config.js) (revision 17493) @@ -74,5 +74,7 @@ // 责任环节进去录之间监测是否限制监测项的范围 responsibilityPartNotLimitInspect : true, //不符合返消规则的器械包是否允许返消(默认为false) - allowReturnDisinfectForNotMatchConditionTousse : true + allowReturnDisinfectForNotMatchConditionTousse : true, + // 是否启用护理工作质量指标报表,true为显示,false或者不配不显示 + enableNurseWorkload : true }; \ No newline at end of file Index: ssts-web/src/main/webapp/jasperRtp/nurseWorkloadReport.jrxml =================================================================== diff -u --- ssts-web/src/main/webapp/jasperRtp/nurseWorkloadReport.jrxml (revision 0) +++ ssts-web/src/main/webapp/jasperRtp/nurseWorkloadReport.jrxml (revision 17493) @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <band height="35" splitType="Stretch"> + <textField> + <reportElement uuid="3ef5ef90-ca6c-42eb-855c-ff2336f47b62" x="0" y="0" width="1260" height="35"/> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font size="14" isBold="true"/> + </textElement> + <textFieldExpression><![CDATA[$P{title}]]></textFieldExpression> + </textField> + </band> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: forgon-core/src/main/java/com/forgon/databaseadapter/service/DateQueryAdapter.java =================================================================== diff -u -r17308 -r17493 --- forgon-core/src/main/java/com/forgon/databaseadapter/service/DateQueryAdapter.java (.../DateQueryAdapter.java) (revision 17308) +++ forgon-core/src/main/java/com/forgon/databaseadapter/service/DateQueryAdapter.java (.../DateQueryAdapter.java) (revision 17493) @@ -172,6 +172,23 @@ return ""; } /** + * 时间类型转换成字符串,只取年月 + * @param property + * @return + */ + public String dateToVarchar2(String property) { + if (StringUtils.isNotBlank(property)) { + if (dbConnection.isSqlServer()) { + return "CONVERT(varchar(7),"+property+",120)"; + } else if (dbConnection.isOracle()) { + return "to_char("+property+",'yyyy-mm')"; + } else if (dbConnection.isMySQL()) { + return property ; + } + } + return ""; + } + /** * 替换sql查询条件的日期 * * @param date Index: ssts-web/src/main/webapp/homepage/menuconfigure.js =================================================================== diff -u -r17440 -r17493 --- ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 17440) +++ ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 17493) @@ -490,7 +490,8 @@ {hidden :SSTS_MATERIAL_MISS_ITEM_TOTAL_VIEW,text:"器材丢失报损分类统计月报",href:WWWROOT+'/disinfectsystem/reportforms/materialDamageMissMonthView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_SterilizationRecordInfoReport,text:"灭菌情况报表",href:WWWROOT+'/disinfectsystem/reportforms/sterilizationRecordInfoView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :!sstsConfig.enableTousseOverloadReport,text:"器械包实际负载组合统计报表",href:WWWROOT+'/disinfectsystem/reportforms/tousseOverLoad.jsp',hrefTarget:linkTarget,leaf:true}, - {hidden :!sstsConfig.enableTousseMorrowSend,text:"器械包次日下送率统计报表",href:WWWROOT+'/disinfectsystem/reportforms/tousseMorrowSend.jsp',hrefTarget:linkTarget,leaf:true} + {hidden :!sstsConfig.enableTousseMorrowSend,text:"器械包次日下送率统计报表",href:WWWROOT+'/disinfectsystem/reportforms/tousseMorrowSend.jsp',hrefTarget:linkTarget,leaf:true}, + {hidden :!sstsConfig.enableNurseWorkload,text:"护理工作质量指标报表",href:WWWROOT+'/disinfectsystem/reportforms/nurseWorkload.jsp',hrefTarget:linkTarget,leaf:true} ] },{ text:"财务核算及物品发放报表", Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java =================================================================== diff -u -r17389 -r17493 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 17389) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 17493) @@ -870,6 +870,8 @@ return jasperReportManager.getTousseOverLoadData(requestParameters); }else if("tousseMorrowSendReport".equals(reportName)){ return jasperReportManager.getTousseMorrwoSendData(requestParameters); + }else if("nurseWorkloadReport".equals(reportName)){ + return jasperReportManager.getNurseWorkloadData(requestParameters); } return null; } @@ -1436,6 +1438,11 @@ String title = "器械包次日下送率统计报表(" + timeSlot + ")"; map.put("title", title); return map; + }else if("nurseWorkloadReport".equals(reportName)){ + String year = StrutsParamUtils.getPraramValue("year", ""); + String title = "护理工作质量指标报表(" + year + ")"; + map.put("title", title); + return map; } return map; Index: ssts-web/src/main/webapp/jasperRtp/nurseWorkloadReport.jasper =================================================================== diff -u Binary files differ Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/NurseWorkloadBean.java =================================================================== diff -u --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/NurseWorkloadBean.java (revision 0) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/NurseWorkloadBean.java (revision 17493) @@ -0,0 +1,150 @@ +package com.forgon.disinfectsystem.jasperreports.javabeansource; +/** + * 护理工作质量指标报表统计的bean + */ +public class NurseWorkloadBean { + + private String dateTime; + // 灭菌合格总数-供应室 + private Integer sterilizeQualifiedSupplyAmount; + // 灭菌合格总数-手术室 + private Integer sterilizeQualifiedOperationAmount; + + // 灭菌物品总数 + private Integer SterilizeTotalAmount; + //清洗合格总件数-供应室 + private Integer washQualifiedSupplyAmount; + //清洗合格总件数-手术室 + private Integer washQualifiedOperationAmount; + // 清洗总件数 + private Integer washTotalAmount; + // 包装不合格件数-供应室 + private Integer packingUnQualifiedSupplyAmount; + // 包装不合格件数-手术室 + private Integer packingUnQualifiedOperationAmount; + // 湿包数量-供应室 + private Integer wetPackRateSupplyAmount; + // 湿包数量-手术室 + private Integer wetPackRateOperationAmount; + + // 无菌物品合格率统计比例显示 分母为全院无菌物品总件数 按包算 + private String sterilizeRateStr = ""; + // 无菌物品合格率统计比例显示 分母为'检查无菌物品总件数' 按包算 + private String sterilizeCheckRateStr = ""; + // 清洗 合格率统计的比例显示 + private String washQualifiedRateStr = ""; + // 包装不合格件数显示 按包算 / 月 + private String packingUnQualifiedAmountStr = ""; + // 包装合格率显示 + private String packingUnQualifiedRateStr = ""; + // 湿包发生率 + private String wetPackRateStr = ""; + + public String getDateTime() { + return dateTime; + } + public void setDateTime(String dateTime) { + this.dateTime = dateTime; + } + public Integer getSterilizeTotalAmount() { + return SterilizeTotalAmount; + } + public void setSterilizeTotalAmount(Integer sterilizeTotalAmount) { + SterilizeTotalAmount = sterilizeTotalAmount; + } + public Integer getWashTotalAmount() { + return washTotalAmount; + } + public void setWashTotalAmount(Integer washTotalAmount) { + this.washTotalAmount = washTotalAmount; + } + public String getSterilizeRateStr() { + return sterilizeRateStr; + } + public void setSterilizeRateStr(String sterilizeRateStr) { + this.sterilizeRateStr = sterilizeRateStr; + } + public String getSterilizeCheckRateStr() { + return sterilizeCheckRateStr; + } + public void setSterilizeCheckRateStr(String sterilizeCheckRateStr) { + this.sterilizeCheckRateStr = sterilizeCheckRateStr; + } + public String getWashQualifiedRateStr() { + return washQualifiedRateStr; + } + public void setWashQualifiedRateStr(String washQualifiedRateStr) { + this.washQualifiedRateStr = washQualifiedRateStr; + } + public String getPackingUnQualifiedAmountStr() { + return packingUnQualifiedAmountStr; + } + public void setPackingUnQualifiedAmountStr(String packingUnQualifiedAmountStr) { + this.packingUnQualifiedAmountStr = packingUnQualifiedAmountStr; + } + public String getPackingUnQualifiedRateStr() { + return packingUnQualifiedRateStr; + } + public void setPackingUnQualifiedRateStr(String packingUnQualifiedRateStr) { + this.packingUnQualifiedRateStr = packingUnQualifiedRateStr; + } + public String getWetPackRateStr() { + return wetPackRateStr; + } + public void setWetPackRateStr(String wetPackRateStr) { + this.wetPackRateStr = wetPackRateStr; + } + public Integer getSterilizeQualifiedSupplyAmount() { + return sterilizeQualifiedSupplyAmount; + } + public void setSterilizeQualifiedSupplyAmount( + Integer sterilizeQualifiedSupplyAmount) { + this.sterilizeQualifiedSupplyAmount = sterilizeQualifiedSupplyAmount; + } + public Integer getSterilizeQualifiedOperationAmount() { + return sterilizeQualifiedOperationAmount; + } + public void setSterilizeQualifiedOperationAmount( + Integer sterilizeQualifiedOperationAmount) { + this.sterilizeQualifiedOperationAmount = sterilizeQualifiedOperationAmount; + } + public Integer getWashQualifiedSupplyAmount() { + return washQualifiedSupplyAmount; + } + public void setWashQualifiedSupplyAmount(Integer washQualifiedSupplyAmount) { + this.washQualifiedSupplyAmount = washQualifiedSupplyAmount; + } + public Integer getWashQualifiedOperationAmount() { + return washQualifiedOperationAmount; + } + public void setWashQualifiedOperationAmount(Integer washQualifiedOperationAmount) { + this.washQualifiedOperationAmount = washQualifiedOperationAmount; + } + public Integer getPackingUnQualifiedSupplyAmount() { + return packingUnQualifiedSupplyAmount; + } + public void setPackingUnQualifiedSupplyAmount( + Integer packingUnQualifiedSupplyAmount) { + this.packingUnQualifiedSupplyAmount = packingUnQualifiedSupplyAmount; + } + public Integer getPackingUnQualifiedOperationAmount() { + return packingUnQualifiedOperationAmount; + } + public void setPackingUnQualifiedOperationAmount( + Integer packingUnQualifiedOperationAmount) { + this.packingUnQualifiedOperationAmount = packingUnQualifiedOperationAmount; + } + public Integer getWetPackRateSupplyAmount() { + return wetPackRateSupplyAmount; + } + public void setWetPackRateSupplyAmount(Integer wetPackRateSupplyAmount) { + this.wetPackRateSupplyAmount = wetPackRateSupplyAmount; + } + public Integer getWetPackRateOperationAmount() { + return wetPackRateOperationAmount; + } + public void setWetPackRateOperationAmount(Integer wetPackRateOperationAmount) { + this.wetPackRateOperationAmount = wetPackRateOperationAmount; + } + +} Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r17460 -r17493 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 17460) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 17493) @@ -155,6 +155,7 @@ import com.forgon.disinfectsystem.jasperreports.javabeansource.MonitoringItemBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.MonthReportBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.MonthReportChartBean; +import com.forgon.disinfectsystem.jasperreports.javabeansource.NurseWorkloadBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.PackingFractionDefectiveBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.QualityMonitoringInspectBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.QualityMonitoringInspectMonthLineChartBean; @@ -5753,6 +5754,28 @@ } return days; } + /** + * 通过年,获取一年中每个月的显示,时间返回格式为"2017-02" + * @param year + * @param month + * @return + */ + private List getMonthList(String year){ + List months = new ArrayList(); + if(StringUtils.isBlank(year)){ + return months; + } + for(Integer i = 1; i <= 12; i++){ + String monthStr = ""; + if(i <= 9){ + monthStr = year + "-0" + i; + }else{ + monthStr = year + "-" + i; + } + months.add(monthStr); + } + return months; + } private String getHandleDeptCodeSql(String field) { LoginUserData user = AcegiHelper.getLoginUser(); String handleDeptCodeSql = ""; @@ -13921,7 +13944,238 @@ } return tousseCountCodeKey; } - + // + public List getNurseWorkloadData( + Map params) { + List beanList = new ArrayList(); + Map beanMap = new HashMap(); + String year = params.get("year"); + if(StringUtils.isBlank(year)){ + return beanList; + } + String startDay = year + "-01-01 00:00:00"; + String endDay = getNextYear(year) + " 00:00:00"; + + List months = getMonthList(year); + List departs = supplyRoomConfigManager.getSupplyRoomNameList(); + // 灭菌不合格物品map key是时间和供应室的组合,如 :2017-03&供应室 + Map sterilizeUQMap = new HashMap(); + Map sterilizeTotalMap = new HashMap(); + String dataSql = dateQueryAdapter.dateToVarchar2("sr.endDate"); // 以灭菌结束时间来统计 + // 获取灭菌物品总数的sql + String sterilizeTotalSql = " select " + dataSql + " dataStr, ster.department depart,count(*) amount " + + " from SterilizationRecord sr,sterilizer ster,TousseInstance ti where sr.sterilizer_id = ster.id " + + " and ti.sterilizationRecord_id = sr.id " + + " and (sr.status = '" + SterilizationRecord.STERILIZATION_STATUS_END + "' or sr.status = '" + SterilizationRecord.STERILIZATION_STATUS_FAILURE + "' )" + + " and ( " + dateQueryAdapter.dateAreaSql("sr.endDate", startDay, endDay, false) + ")" + + " group by " + dataSql + " , ster.department " ; + + // 获取灭菌不合格物品的sql + String qmDataSql = dateQueryAdapter.dateToVarchar2("qmi.dateTime"); + String sterilizeUQSql = "select " + qmDataSql +" dataStr,src.orgUnitName,sum(qmi.amount) count " + + " from QualityMonitoringInstance qmi,FormInstance fi,FormDefinition fd,FormInstanceItem fiItem,FormDefinitionItem fdi " + + " , SupplyRoomConfig src " + + " where qmi.id=fi.id and fd.id = fi.formDefinition_id and fi.id = fiItem.formInstance_id and fiItem.formDefinitionItem_id = fdi.id " + + " and src.orgUnitCoding = fi.orgUnitCoding " + + " and ( fd.formName = '" + "灭菌失败事件"+ "' or fd.formName = '"+ "湿包" + + "' or fd.formName = '"+ "破包"+ "' or fd.formName = '"+ "指示卡变色不均匀有水渍"+ "' )" + + " and qmi.dateTime between " + dateQueryAdapter.dateAdapter(startDay) + + "and "+dateQueryAdapter.dateAdapter(endDay) + + " group by " + qmDataSql + " ,src.orgUnitName "; + + sterilizeUQMap = getAmountMapBySql(sterilizeUQSql); + sterilizeTotalMap = getAmountMapBySql(sterilizeTotalSql); +// select ti.Sterilizationrecord_Id from tousseinstance ti,sterilizationrecord sr where ti.sterilizationrecord_id=sr.id + + // 清洗不合格的map,和清洗总数的map + Map washUQMap = new HashMap(); + Map washTotalMap = new HashMap(); + String washUQSql = "select " + qmDataSql +" dataStr,src.orgUnitName,sum(qmi.amount) count " + + " from QualityMonitoringInstance qmi,FormInstance fi,FormDefinition fd,FormInstanceItem fiItem,FormDefinitionItem fdi " + + " , SupplyRoomConfig src " + + " where qmi.id=fi.id and fd.id = fi.formDefinition_id and fi.id = fiItem.formInstance_id and fiItem.formDefinitionItem_id = fdi.id " + + " and src.orgUnitCoding = fi.orgUnitCoding " + + " and ( fd.formName = '" + "器械清洗不合格"+ "' )" + + " and qmi.dateTime between " + dateQueryAdapter.dateAdapter(startDay) + + "and "+dateQueryAdapter.dateAdapter(endDay) + + " group by " + qmDataSql + " ,src.orgUnitName "; + String washDateSql = dateQueryAdapter.dateToVarchar2("w.enddate"); + String washTotalSql = "select "+washDateSql+" dataStr,src.orgUnitName, sum(w.washMaterialAmount) amount from washanddisinfectrecord w,SupplyRoomConfig src " + + " where w.orgUnitCoding = src.orgUnitCoding " + + " and (w.washStatus = '" + WashAndDisinfectRecord.STATUS_WASHED + "' or w.washStatus = '" + WashAndDisinfectRecord.STATUS_WASHFAILD + "' )" + + " and w.enddate between "+dateQueryAdapter.dateAdapter(startDay) + + " and "+dateQueryAdapter.dateAdapter(endDay) + + " group by "+washDateSql + " ,src.orgUnitName "; + washUQMap = getAmountMapBySql(washUQSql); + washTotalMap = getAmountMapBySql(washTotalSql); + + // 包装不合格的map,包装总数的map跟灭菌总数的一样 + Map packingUQMap = new HashMap(); + String packingUQSql = "select " + qmDataSql +" dataStr,src.orgUnitName,sum(qmi.amount) count " + + " from QualityMonitoringInstance qmi,FormInstance fi,FormDefinition fd,FormInstanceItem fiItem,FormDefinitionItem fdi " + + " , SupplyRoomConfig src " + + " where qmi.id=fi.id and fd.id = fi.formDefinition_id and fi.id = fiItem.formInstance_id and fiItem.formDefinitionItem_id = fdi.id " + + " and src.orgUnitCoding = fi.orgUnitCoding " + + " and ( fd.formName = '" + "器械包装不合格"+ "' or fd.formName = '"+ "器械材料问题" + + "' or fd.formName = '"+ "器械功能不全"+ "' or fd.formName = '"+ "器械包装松散"+ "' )" + + " and qmi.dateTime between " + dateQueryAdapter.dateAdapter(startDay) + + "and "+dateQueryAdapter.dateAdapter(endDay) + + " group by " + qmDataSql + " ,src.orgUnitName "; + packingUQMap = getAmountMapBySql(packingUQSql); + + // 湿包数量的map,包总数的map跟灭菌总数的一样 + Map wetPackUQMap = new HashMap(); + String wetPackUQSql = "select " + qmDataSql +" dataStr,src.orgUnitName,sum(qmi.amount) count " + + " from QualityMonitoringInstance qmi,FormInstance fi,FormDefinition fd,FormInstanceItem fiItem,FormDefinitionItem fdi " + + " , SupplyRoomConfig src " + + " where qmi.id=fi.id and fd.id = fi.formDefinition_id and fi.id = fiItem.formInstance_id and fiItem.formDefinitionItem_id = fdi.id " + + " and src.orgUnitCoding = fi.orgUnitCoding " + + " and ( fd.formName = '" + "湿包"+"' )" + + " and qmi.dateTime between " + dateQueryAdapter.dateAdapter(startDay) + + "and "+dateQueryAdapter.dateAdapter(endDay) + + " group by " + qmDataSql + " ,src.orgUnitName "; + wetPackUQMap = getAmountMapBySql(wetPackUQSql); +// beanList + // 填充数据 + if( months != null && departs != null){ + for(String monthStr : months){ + // 一个月一行数据 + NurseWorkloadBean bean = new NurseWorkloadBean(); + bean.setDateTime(monthStr); + String sterilizeRate1 = ""; + String washQualifiedRateStr1 = ""; + String packingQualifiedRateStr1 = ""; + String wetPackRateStr1 = ""; + String sterilizeRateStr = ""; + String sterilizeCheckRateStr = ""; + String washQualifiedRateStr = ""; + String packingUnQualifiedAmountStr = ""; + String packingUnQualifiedRateStr = ""; + String wetPackRateStr = ""; + + + Integer totalSterilzeAmount = 0; + Integer totalSterilzeUQAmount = 0; + Integer totalWashAmount = 0; + Integer totalWasnUQAmount = 0; + Integer totalPackingUQAmount = 0; + Integer totalWetPackAmount = 0; + for(String depaert : departs){ + // 获取无菌物品合格数据 + String key = monthStr + "&" + depaert; + Integer unAmount = 0; + if(sterilizeUQMap.containsKey(key)){ + unAmount = sterilizeUQMap.get(key); + } + totalSterilzeUQAmount += unAmount; + Integer totalSterilizeAmountDepart = 0; + if(sterilizeTotalMap.containsKey(key)){ + totalSterilizeAmountDepart = sterilizeTotalMap.get(key); + } + totalSterilzeAmount += totalSterilizeAmountDepart; + if(StringUtils.isNotBlank(sterilizeRate1)){ + sterilizeRate1 += " + " + depaert + (totalSterilizeAmountDepart-unAmount); + }else{ + sterilizeRate1 = depaert + (totalSterilizeAmountDepart-unAmount); + } + // 获取械清洗数据 +// Integer washUQAmount = washUQMap.get(key); + Integer washUQAmount = 0; + if(washUQMap.containsKey(key)){ + washUQAmount = washUQMap.get(key); + } +// Integer washTotalAmountDepart = washTotalMap.get(key); + Integer washTotalAmountDepart = 0; + if(washTotalMap.containsKey(key)){ + washTotalAmountDepart = washTotalMap.get(key); + } + totalWasnUQAmount += washUQAmount; + totalWashAmount += washTotalAmountDepart; + if(StringUtils.isNotBlank(washQualifiedRateStr1)){ + washQualifiedRateStr1 += " + " + depaert + (washTotalAmountDepart-washUQAmount); + }else{ + washQualifiedRateStr1 = depaert + (washTotalAmountDepart-washUQAmount); + } + // 获取包装不合格件数 +// Integer packingUQAmount = packingUQMap.get(key); + Integer packingUQAmount = 0; + if(packingUQMap.containsKey(key)){ + packingUQAmount = packingUQMap.get(key); + } + totalPackingUQAmount += packingUQAmount; + if(StringUtils.isNotBlank(packingUnQualifiedAmountStr)){ + packingUnQualifiedAmountStr += " + " + depaert + packingUQAmount; + }else{ + packingUnQualifiedAmountStr += depaert + packingUQAmount; + } + // 合格件数 + if(StringUtils.isNotBlank(packingQualifiedRateStr1)){ + packingQualifiedRateStr1 += " + " + depaert + (totalSterilizeAmountDepart-packingUQAmount); + }else{ + packingQualifiedRateStr1 += depaert + (totalSterilizeAmountDepart-packingUQAmount); + } + // 湿包件数 +// Integer wetAmount = wetPackUQMap.get(key); + Integer wetAmount = 0; + if(wetPackUQMap.containsKey(key)){ + wetAmount = wetPackUQMap.get(key); + } + totalWetPackAmount += wetAmount; + if(StringUtils.isNotBlank(wetPackRateStr1)){ + wetPackRateStr1 += " + " + depaert + wetAmount; + }else{ + wetPackRateStr1 += depaert + wetAmount; + } + + } + String rate = MathTools.divideStr(totalSterilzeAmount-totalSterilzeUQAmount,totalSterilzeAmount, 2); + sterilizeRateStr = sterilizeRate1 + "/" + "全院无菌物品总件数" + totalSterilzeAmount + " = " + rate; + sterilizeCheckRateStr = sterilizeRate1 + "/" + "检查无菌物品总件数" + totalSterilzeAmount + " = " + rate; + rate = MathTools.divideStr(totalWashAmount-totalWasnUQAmount,totalWashAmount, 2); + washQualifiedRateStr = washQualifiedRateStr1 + "/" + "器械清洗总件数" + totalWashAmount + " = " + rate; + packingUnQualifiedAmountStr = packingUnQualifiedAmountStr + " = " + totalPackingUQAmount; + rate = MathTools.divideStr(totalSterilzeAmount-totalPackingUQAmount,totalSterilzeAmount, 2); + packingUnQualifiedRateStr = packingQualifiedRateStr1 + "/" + "包装总件数" + totalSterilzeAmount + " = " + rate; + rate = MathTools.divideStr(totalWetPackAmount,totalSterilzeAmount, 2); + wetPackRateStr = wetPackRateStr1 + "/" + "包总件数" + totalSterilzeAmount + " = " + rate; + bean.setSterilizeRateStr(sterilizeRateStr); + bean.setSterilizeCheckRateStr(sterilizeCheckRateStr); + bean.setWashQualifiedRateStr(washQualifiedRateStr); + bean.setPackingUnQualifiedAmountStr(packingUnQualifiedAmountStr); + bean.setPackingUnQualifiedRateStr(packingUnQualifiedRateStr); + bean.setWetPackRateStr(wetPackRateStr); + beanList.add(bean); + } + } + // 无菌物品不合格 + return beanList; + } + // 通过sql获取统计的数量 + private Map getAmountMapBySql(String sql){ + Map map = new HashMap(); + if(StringUtils.isBlank(sql)){ + return map; + } + ResultSet rs = objectDao.executeSql(sql); + if (rs != null) { + try { + while (rs.next()) { + String data = rs.getString(1); + String depart = rs.getString(2); + Integer amount = rs.getInt(3); + if(StringUtils.isNotBlank(data) && StringUtils.isNotBlank(depart)){ + String key = data + "&" + depart; + map.put(key, amount); + } + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + } + return map; + } @Override public List getSterilizationAreaWorkLoadBeans( String monthSearch, String departCoding) { Index: ssts-web/src/main/webapp/disinfectsystem/reportforms/nurseWorkload.js =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/reportforms/nurseWorkload.js (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/reportforms/nurseWorkload.js (revision 17493) @@ -0,0 +1,142 @@ +var entityName = "护理工作质量指标报表"; +var form; + +/** + * 加载报表的数据 + * + */ +var myMask; +function reloadReport(){ + + if (!form.getForm().isValid()) { + showResult('请正确填写表单各值'); + return false; + } + + var year = $Id('yearSearch').value; + myMask = new Ext.LoadMask(Ext.getBody(), { + msg: '正在加载,请稍候!', + removeMask: true + }); + myMask.show(); + window.open(WWWROOT + "/jasperreports/jasperreportsAction!createReportFromJavaBeanSource.do" + + "?jasperreportName=nurseWorkloadReport.jasper&reportName=nurseWorkloadReport" + + "&year=" + year, + 'thisIframe', '_self'); +} + +Ext.onReady(function() { + + var sterilizationTypeStore = new Ext.data.SimpleStore({ + fields : [ 'id','sterilizationType' ], + url : WWWROOT + '/disinfectSystem/baseData/sterilizerAction!getSterilizerType.do', + listeners : { + beforeload : function(thiz, options){ + thiz.baseParams['sterilizerName'] = Ext.getCmp('sterilizerName').getValue(); + thiz.baseParams['type'] = 'sterilizationRecord'; + }, + load : function(thiz, records, options){ + var sterilizationType = Ext.getCmp('sterilizationType').getValue(); + if (sterilizationType) { + var isExist = false; + for (var i = 0; i < records.length; i++) { + if (sterilizationType == records[i].data.sterilizationType) { + isExist = true; + break; + } + } + if(!isExist){ + Ext.getCmp('sterilizationType').setValue(''); + } + } + } + } + }); + + Ext.QuickTips.init(); + + var dt = new Date(); + var startDayofMonth = dt.getFullYear() + "/" + (dt.getMonth() + 1) + "/01"; + + form = new Ext.form.FormPanel({ + title : entityName, + region : 'north', + labelAlign : 'right', + buttonAlign : 'center', + collapsible : true, + collapseMode : 'mini', + split : true, + border : 0, + frame : true, + bodyStyle : 'padding:0px auto;margin:0px',// padding:1px;padding-top:5px; + height : 105, + items : [{ + layout : 'column', + height : 40, + width : 1024, + labelWidth : 70, + items : [{ + width : 200, + layout : 'form', + labelWidth : 60, + id : 'yearSearch_id', + hidden : false, + items : [ + new Ext.ux.MonthField({ + id:'yearSearch', + name : 'yearSearch', + fieldLabel : '年份', + readOnly : true, + width : 110, + format:'Y', + value : new Date(), + listeners : { + specialkey : function(field, ee) { + if (ee.getKey() == Ext.EventObject.ENTER) { +// initQueryValueAndReload(); + } + } + } + })] + }] + }], + buttons:[{ + xtype : 'button', + text : '查询', + minWidth : 70, + iconCls : 'icon_search', + handler : function() { + reloadReport(); + } + },{ + xtype : 'button', + text : '重置', + minWidth : 70, + iconCls : 'icon_set', + handler : function() { + $Id('yearSearch').value = ""; + } + }] + }); + + + var reportForm = new Ext.Panel({ + frame:false,//渲染面板 + autoScroll:true,//自动显示滚动条 + collapsible:true,//允许展开和收缩 + bodyPadding:5, + html:'' + + }); + + var viewport = new Ext.Viewport({ + layout : 'border', + items : [form, { + region : 'center', + margins : '0 0 0 0', + layout : 'fit', + items : reportForm + }] + }); + +}); \ No newline at end of file Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java =================================================================== diff -u -r17383 -r17493 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java (.../JasperReportManager.java) (revision 17383) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java (.../JasperReportManager.java) (revision 17493) @@ -39,6 +39,7 @@ import com.forgon.disinfectsystem.jasperreports.javabeansource.MonitoringItemBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.MonthReportBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.MonthReportChartBean; +import com.forgon.disinfectsystem.jasperreports.javabeansource.NurseWorkloadBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.PackingFractionDefectiveBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.QualityMonitoringInspectBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.ReturnGoodsVo; @@ -496,4 +497,10 @@ */ public List getTousseMorrwoSendData( Map params); + /** + * 获取护理工作质量报表的数据 + * @param params + * @return + */ + public List getNurseWorkloadData(Map params); } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/service/SupplyRoomConfigManager.java =================================================================== diff -u -r17356 -r17493 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/service/SupplyRoomConfigManager.java (.../SupplyRoomConfigManager.java) (revision 17356) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/service/SupplyRoomConfigManager.java (.../SupplyRoomConfigManager.java) (revision 17493) @@ -160,4 +160,9 @@ * @return */ public JSONArray getAllApplyDepartment(String departCodings); + /** + * 获取供应室的名字集合,包括一级和二级供应室 + * @return + */ + public List getSupplyRoomNameList(); } Index: forgon-tools/src/main/java/com/forgon/tools/MathTools.java =================================================================== diff -u -r16919 -r17493 --- forgon-tools/src/main/java/com/forgon/tools/MathTools.java (.../MathTools.java) (revision 16919) +++ forgon-tools/src/main/java/com/forgon/tools/MathTools.java (.../MathTools.java) (revision 17493) @@ -58,6 +58,21 @@ .divide(new BigDecimal(b), newScale, BigDecimal.ROUND_HALF_UP).doubleValue(); //保留到小数点后2位 } /** + * 返回百分比字符串表示 如: 2.33% + * @param a 被除数 + * @param b 除数 + * @param newScale 保留到小数点的位数 + * @return + */ + public static String divideStr(int a, int b, int newScale) { + if(a == 0){ + return "0.0%"; + } + double value = new BigDecimal(a*100) + .divide(new BigDecimal(b), newScale, BigDecimal.ROUND_HALF_UP).doubleValue(); + return new Double(value).toString() + "%"; + } + /** * 计算两个数的积。如果有一个数为null,则返回值为0.0 * @param a 乘数,可以为null * @param b 乘数,可以为null Index: ssts-web/src/main/webapp/disinfectsystem/reportforms/nurseWorkload.jsp =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/reportforms/nurseWorkload.jsp (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/reportforms/nurseWorkload.jsp (revision 17493) @@ -0,0 +1,57 @@ +<%@page import="org.apache.commons.lang3.ArrayUtils"%> +<%@page import="com.forgon.disinfectsystem.entity.basedatamanager.reportoption.GoodsOption"%> +<%@page import="com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition"%> +<%@ page contentType="text/html; charset=UTF-8"%> +<%@ include file="/common/taglibs.jsp"%> + + + +<%@ include file="/common/includeExtJsAndCss.jsp"%> + + + + + + + + + + + + + + + + + + +护理工作质量指标报表 + + + + + + + +
+
+
+ + +
+ + +
+ + \ No newline at end of file Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/service/SupplyRoomConfigManagerImpl.java =================================================================== diff -u -r17356 -r17493 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/service/SupplyRoomConfigManagerImpl.java (.../SupplyRoomConfigManagerImpl.java) (revision 17356) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/service/SupplyRoomConfigManagerImpl.java (.../SupplyRoomConfigManagerImpl.java) (revision 17493) @@ -689,4 +689,26 @@ } return toJsonArray(list); } + /** + * 获取供应室的名字集合,包括一级和二级供应室 + * @return + */ + public List getSupplyRoomNameList(){ + List nameList = new ArrayList(); + List firstSupplyRoomList = getSupplyRoomList(SupplyRoomConfig.SUPPLYROOM_TYPE_1); + List secondSupplyRoomList = getSupplyRoomList(SupplyRoomConfig.SUPPLYROOM_TYPE_2); + if(firstSupplyRoomList != null ){ + for(SupplyRoomConfig src : firstSupplyRoomList){ + String name = src.getOrgUnitName(); + nameList.add(name); + } + } + if(secondSupplyRoomList != null ){ + for(SupplyRoomConfig src : secondSupplyRoomList){ + String name = src.getOrgUnitName(); + nameList.add(name); + } + } + return nameList; + } }