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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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;
+ }
}