Index: ssts-web/src/main/webapp/disinfectsystem/reportforms/workQualityCollectionView.js =================================================================== diff -u -r34548 -r34559 --- ssts-web/src/main/webapp/disinfectsystem/reportforms/workQualityCollectionView.js (.../workQualityCollectionView.js) (revision 34548) +++ ssts-web/src/main/webapp/disinfectsystem/reportforms/workQualityCollectionView.js (.../workQualityCollectionView.js) (revision 34559) @@ -27,6 +27,402 @@ } } }); + +//整年 +function getAllYearHtml(data, title) { + var tableHtml = "

" + title + "

"; + var tableHeader = [{ + title: '统计项', + field: 'title', + width: 200, + align: 'left' + }, { + title: '一月', + field: 'janAmount' + }, { + title: '二月', + field: 'febAmount' + }, { + title: '三月', + field: 'marAmount' + }, { + title: '四月', + field: 'aprAmount' + }, { + title: '五月', + field: 'mayAmount' + }, { + title: '六月', + field: 'junAmount' + }, { + title: '七月', + field: 'julAmount' + }, { + title: '八月', + field: 'augAmount' + }, { + title: '九月', + field: 'sepAmount' + }, { + title: '十月', + field: 'octAmount' + }, { + title: '十一月', + field: 'novAmount' + }, { + title: '十二月', + field: 'decAmount' + }, { + title: '平均每月', + field: 'aveAmount' + }, { + title: '年度合计', + field: 'thisYearAmount' + }]; + var tableWidth = 'auto' + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + for (var i = 0; i < tableHeader.length; i++) { + var width = tableHeader[i].width || 80; + tableHtml += ""; + } + tableHtml += ""; + tableHtml += ""; + tableHtml += ""; + for (var j = 0; j < data.length; j++) { + tableHtml += ""; + tableHtml += ""; + for (var i = 0; i < tableHeader.length; i++) { + var value = 0; + var align = tableHeader[i].align || 'center'; + if (tableHeader[i].field == 'aveAmount') { + value = parseFloat(data[j]['thisYearAmount'] / 12).toFixed(2); + } else if (tableHeader[i].field == 'title') { + value = data[j][tableHeader[i].field]; + } else { + value = parseInt(data[j][tableHeader[i].field]); + } + tableHtml += ""; + } + tableHtml += ""; + } + tableHtml += ""; + + return tableHtml; +} + +//上半年、下半年对比 +function getSplitHtml(data, title) { + var tableHtml = "

" + title + "

"; + var tableHeader = [{ + title: '统计项', + field: 'title', + width: 200, + align: 'left' + }]; + var showDescriptionColumnOfDataIndex = false; + var compareColumnsSettingsOfDataIndex = []; + if (sstsConfig.workQualityCollectionReportConfiguration) { + var comapreReportsSettings = sstsConfig.workQualityCollectionReportConfiguration.comapreReportsSettings; + if (comapreReportsSettings) { + showDescriptionColumnOfDataIndex = comapreReportsSettings.showDescriptionColumnOfDataIndex || false; + compareColumnsSettingsOfDataIndex = comapreReportsSettings.compareColumnsSettingsOfDataIndex || []; + } + } + + if (showDescriptionColumnOfDataIndex) { + tableHeader.push({ + title: '统计项说明', + field: 'descriptionOfDataIndex', + width: 200, + align: 'left' + }) + } + + if (compareColumnsSettingsOfDataIndex.length > 0) { + tableHeader.push({ + title: '上半年', + field: 'firstHalfYearAmount', + align: 'right', + children: compareColumnsSettingsOfDataIndex + }, { + title: '下半年', + field: 'secondHalfYearAmount', + align: 'right', + children: compareColumnsSettingsOfDataIndex + }, { + title: '改善标准', + field: 'improve' + }) + } else { + tableHeader.push({ + title: '上半年', + align: 'right', + field: 'firstHalfYearAmount' + }, { + title: '下半年', + align: 'right', + field: 'secondHalfYearAmount' + }, { + title: '改善标准', + field: 'improve' + }) + } + + var tableWidth = 'auto' + tableHtml += "
序号" + tableHeader[i].title + "
" + (j + 1) + "" + value + "
"; + tableHtml += ""; + if (compareColumnsSettingsOfDataIndex.length > 0) { + tableHtml += ""; + tableHtml += ""; + for (var i = 0; i < tableHeader.length; i++) { + var width = tableHeader[i].width || 80; + if (tableHeader[i].children) { + tableHtml += ""; + } else { + tableHtml += ""; + } + } + tableHtml += ""; + tableHtml += ""; + for (var i = 0; i < tableHeader.length; i++) { + var width = tableHeader[i].width || 80; + if (tableHeader[i].children) { + for (var k = 0; k < tableHeader[i].children.length; k++) { + tableHtml += ""; + } + } + } + tableHtml += ""; + } else { + tableHtml += ""; + tableHtml += ""; + for (var i = 0; i < tableHeader.length; i++) { + var width = tableHeader[i].width || 80; + tableHtml += ""; + } + tableHtml += ""; + } + tableHtml += ""; + tableHtml += ""; + for (var j = 0; j < data.length; j++) { + tableHtml += ""; + tableHtml += ""; + for (var i = 0; i < tableHeader.length; i++) { + var value = 0; + var align = tableHeader[i].align || 'center'; + if (tableHeader[i].field == 'title' || tableHeader[i].field == 'descriptionOfDataIndex') { + value = data[j][tableHeader[i].field] || ''; + } else if (tableHeader[i].field == 'improve') { + var firstHalfYearAmount = parseInt(data[j].firstHalfYearAmount); + var secondHalfYearAmount = parseInt(data[j].secondHalfYearAmount); + if (firstHalfYearAmount == 0 || secondHalfYearAmount == 0) { + value = '-'; + } else { + if (secondHalfYearAmount > firstHalfYearAmount) { + value = '↑ ' + parseFloat(Math.abs(secondHalfYearAmount - firstHalfYearAmount) / firstHalfYearAmount * 100).toFixed(2) + '%'; + } else { + value = '↓ ' + parseFloat(Math.abs(secondHalfYearAmount - firstHalfYearAmount) / firstHalfYearAmount * 100).toFixed(2) + '%'; + } + } + } else { + value = parseInt(data[j][tableHeader[i].field]); + } + if (tableHeader[i].children) { + for (var k = 0; k < tableHeader[i].children.length; k++) { + if (tableHeader[i].children[k].columnName == 'valueOfDataIndex') { + value = parseInt(data[j][tableHeader[i].field]) + tableHtml += ""; + } else if (tableHeader[i].children[k].columnName == 'averageMonthlyValue') { + value = parseFloat(data[j][tableHeader[i].field] / 6).toFixed(2) + tableHtml += ""; + } else if (tableHeader[i].children[k].columnName == 'denominatorOfRatio') { + var firstHalfYearAmount = parseInt(data[j].firstHalfYearAmount); + var secondHalfYearAmount = parseInt(data[j].secondHalfYearAmount); + value = Math.abs(secondHalfYearAmount - firstHalfYearAmount); + tableHtml += ""; + } else if (tableHeader[i].children[k].columnName == 'numeratorOfRatio') { + var firstHalfYearAmount = parseInt(data[j].firstHalfYearAmount); + value = firstHalfYearAmount; + tableHtml += ""; + } + } + } else { + tableHtml += ""; + } + } + tableHtml += ""; + } + tableHtml += ""; + + return tableHtml; +} + +//与上一年对比 +function getCompareToLastYearHtml(data, title, year) { + var tableHtml = "

" + title + "

"; + var tableHeader = [{ + title: '统计项', + field: 'title', + width: 200, + align: 'left' + }]; + var showDescriptionColumnOfDataIndex = false; + var compareColumnsSettingsOfDataIndex = []; + if (sstsConfig.workQualityCollectionReportConfiguration) { + var comapreReportsSettings = sstsConfig.workQualityCollectionReportConfiguration.comapreReportsSettings; + if (comapreReportsSettings) { + showDescriptionColumnOfDataIndex = comapreReportsSettings.showDescriptionColumnOfDataIndex || false; + compareColumnsSettingsOfDataIndex = comapreReportsSettings.compareColumnsSettingsOfDataIndex || []; + } + } + + if (showDescriptionColumnOfDataIndex) { + tableHeader.push({ + title: '统计项说明', + field: 'descriptionOfDataIndex', + width: 200, + align: 'left' + }) + } + + if (compareColumnsSettingsOfDataIndex.length > 0) { + tableHeader.push({ + title: (year - 1) + '年', + field: 'lastYearAmount', + align: 'right', + children: compareColumnsSettingsOfDataIndex + }, { + title: year + '年', + field: 'thisYearAmount', + align: 'right', + children: compareColumnsSettingsOfDataIndex + }, { + title: '改善标准', + field: 'improve' + }) + } else { + tableHeader.push({ + title: (year - 1) + '年', + align: 'right', + field: 'lastYearAmount' + }, { + title: year + '年', + align: 'right', + field: 'thisYearAmount' + }, { + title: '改善标准', + field: 'improve' + }) + } + + var tableWidth = 'auto' + tableHtml += "
序号" + tableHeader[i].title + "" + tableHeader[i].title + "
" + tableHeader[i].children[k].columnTitle + "
序号" + tableHeader[i].title + "
" + (j + 1) + "" + value + "" + value + "" + value + "" + value + "" + value + "
"; + tableHtml += ""; + if (compareColumnsSettingsOfDataIndex.length > 0) { + tableHtml += ""; + tableHtml += ""; + for (var i = 0; i < tableHeader.length; i++) { + var width = tableHeader[i].width || 80; + if (tableHeader[i].children) { + tableHtml += ""; + } else { + tableHtml += ""; + } + } + tableHtml += ""; + tableHtml += ""; + for (var i = 0; i < tableHeader.length; i++) { + var width = tableHeader[i].width || 80; + if (tableHeader[i].children) { + for (var k = 0; k < tableHeader[i].children.length; k++) { + tableHtml += ""; + } + } + } + tableHtml += ""; + } else { + tableHtml += ""; + tableHtml += ""; + for (var i = 0; i < tableHeader.length; i++) { + var width = tableHeader[i].width || 80; + tableHtml += ""; + } + tableHtml += ""; + } + tableHtml += ""; + tableHtml += ""; + for (var j = 0; j < data.length; j++) { + tableHtml += ""; + tableHtml += ""; + for (var i = 0; i < tableHeader.length; i++) { + var value = 0; + var align = tableHeader[i].align || 'center'; + if (tableHeader[i].field == 'title' || tableHeader[i].field == 'descriptionOfDataIndex') { + value = data[j][tableHeader[i].field] || ''; + } else if (tableHeader[i].field == 'improve') { + var thisYearAmount = parseInt(data[j].thisYearAmount); + var lastYearAmount = parseInt(data[j].lastYearAmount); + if (thisYearAmount == 0 || lastYearAmount == 0) { + value = '-'; + } else { + if (thisYearAmount > lastYearAmount) { + value = '↑ ' + parseFloat(Math.abs(thisYearAmount - lastYearAmount) / lastYearAmount * 100).toFixed(2) + '%'; + } else { + value = '↓ ' + parseFloat(Math.abs(thisYearAmount - lastYearAmount) / lastYearAmount * 100).toFixed(2) + '%'; + } + } + } else { + value = parseInt(data[j][tableHeader[i].field]); + } + if (tableHeader[i].children) { + for (var k = 0; k < tableHeader[i].children.length; k++) { + if (tableHeader[i].children[k].columnName == 'valueOfDataIndex') { + value = parseInt(data[j][tableHeader[i].field]) + tableHtml += ""; + } else if (tableHeader[i].children[k].columnName == 'averageMonthlyValue') { + value = parseFloat(data[j][tableHeader[i].field] / 12).toFixed(2) + tableHtml += ""; + } else if (tableHeader[i].children[k].columnName == 'denominatorOfRatio') { + var thisYearAmount = parseInt(data[j].thisYearAmount); + var lastYearAmount = parseInt(data[j].lastYearAmount); + value = Math.abs(thisYearAmount - lastYearAmount); + tableHtml += ""; + } else if (tableHeader[i].children[k].columnName == 'numeratorOfRatio') { + var lastYearAmount = parseInt(data[j].lastYearAmount); + value = lastYearAmount; + tableHtml += ""; + } + } + } else { + tableHtml += ""; + } + } + tableHtml += ""; + } + tableHtml += ""; + + return tableHtml; +} + +//获取报表html +function getTableHtml(data, type, year) { + var html = ''; + if (type == 'allYear') { + var title = year + '年 工作质量持续收集统计报表'; + html = getAllYearHtml(data, title); + } else if (type == 'split') { + var title = year + '年 上半年、下半年工作质量持续收集统计报表'; + html = getSplitHtml(data, title); + } else if (type == 'compareToLastYear') { + var title = (year - 1) + '年、' + year + '年 工作质量持续收集统计报表'; + html = getCompareToLastYearHtml(data, title, year); + } + return html; +} + var myMask; Ext.onReady(function () { Ext.QuickTips.init(); @@ -153,7 +549,7 @@ } } - var url = WWWROOT + '/jasperreports/jasperreportsAction!createReportFromJavaBeanSource.do'; + var url = WWWROOT + '/jasperreports/jasperreportsAction!queryDataSourceList.do'; var params = { jasperreportName: jasperReportName, isZSYYWorkQualityCollection: isZSYYWorkQualityCollection, @@ -165,20 +561,26 @@ reportName: 'workQualityCollection' } - searchReport(url, params); + Ext.Ajax.request({ + url: url, + params: params, + success: function (response, options) { + var result = Ext.decode(response.responseText); + myMask.hide(); + if (result.data.length == 0) { + document.getElementById('thisIframe').contentWindow.document.getElementById('table').innerHTML = '

查询无数据

'; + } else { + var html = getTableHtml(result.data, type, year); + document.getElementById('thisIframe').contentWindow.document.getElementById('table').innerHTML = html; + } + }, + failure: function (response, options) { + var result = Ext.decode(response.responseText); + showResult(result.message); + } + }); } - var sign = true; - var dwrCallParams = null; - Ext.ux.ForgonPageGrid.prototype.getGridParameterMap = function () { - - }; - - var departJsonStore = new Ext.data.SimpleStore({ - fields: ['departName'], - url: WWWROOT + '/disinfectSystem/reportFormsCenterAction!getAllDepartName.do' - }); - var form = new Ext.form.FormPanel({ title: entityName, region: 'north', @@ -281,7 +683,7 @@ id: "type", radios: [{ boxLabel: '整年', value: 'allYear' }, { boxLabel: '上半年、下半年对比', value: 'split' }, - { boxLabel: '与去年对比', value: 'compareToLastYear' }] + { boxLabel: '与上一年对比', value: 'compareToLastYear' }] })] }] }], @@ -296,16 +698,14 @@ }] }); - var reportForm = new Ext.Panel({ frame: false,//渲染面板 autoScroll: true,//自动显示滚动条 collapsible: true,//允许展开和收缩 bodyPadding: 5, - html: '' + html: '' }); - var viewport = new Ext.Viewport({ layout: 'border', items: [form, { @@ -316,6 +716,6 @@ items: reportForm }] }); - + supplyRoomRemoteStore.load();//20181225 }); \ No newline at end of file Index: ssts-web/src/main/webapp/disinfectsystem/config/gdszyy/config.js =================================================================== diff -u -r34240 -r34559 --- ssts-web/src/main/webapp/disinfectsystem/config/gdszyy/config.js (.../config.js) (revision 34240) +++ ssts-web/src/main/webapp/disinfectsystem/config/gdszyy/config.js (.../config.js) (revision 34559) @@ -261,6 +261,28 @@ { "dataIndexNameForDisplay": "湿包件数", "dataIndexSource": "湿包件数" }, { "dataIndexNameForDisplay": "湿包发生率", "dataIndexSource": "湿包发生率" } ], + //对比类型的报表的设置 + workQualityCollectionReportConfiguration: { + "reportName" : "工作质量持续收集统计报表", + //对比类型的报表的设置 + "comapreReportsSettings":{ + "showDescriptionColumnOfDataIndex":true, + "compareColumnsSettingsOfDataIndex":[ + {"columnName":"valueOfDataIndex", "columnTitle":"总计"}, + {"columnName":"averageMonthlyValue", "columnTitle":"平均每月"} + ] + }, + "dataIndexsArray" : [ + { "dataIndexNameForDisplay": "处理临床器械总件数", "dataIndexSource": "处理临床器械总件数","descriptionOfDataIndex":"在供应室清洗消毒,包装灭菌全程处理所有医疗器械数","branchesOfHospital":["大院"] }, + { "dataIndexNameForDisplay": "处理手术器械总件数", "dataIndexSource": "处理手术器械总件数","descriptionOfDataIndex":"在供应室清洗,打包,灭菌手术器械等总数量","branchesOfHospital":["大院"] }, + { "dataIndexNameForDisplay": "处理大院手术室布类总包数", "dataIndexSource": "复用性物品包装总件数","descriptionOfDataIndex":"在供应室打包,灭菌各类手术布类包","taskGroups":["布类班"] }, + { "dataIndexNameForDisplay": "处理外来器械总件数", "dataIndexSource": "处理外来手术器械总件数","descriptionOfDataIndex":"供应室接收外来器械灭菌总数" }, + { "dataIndexNameForDisplay": "灭菌器使用炉次", "dataIndexSource": "灭菌器使用炉次","descriptionOfDataIndex":"包括压力蒸汽灭菌器和低温灭菌器。" }, + { "dataIndexNameForDisplay": "清洗消毒机使用炉次", "dataIndexSource": "清洗机使用炉次","descriptionOfDataIndex":"所有清洗消毒机" }, + { "dataIndexNameForDisplay": "发放物品总件数", "dataIndexSource": "处理器械包总包数","descriptionOfDataIndex":"在发放室发出的所有物品" }, + { "dataIndexNameForDisplay": "接收越秀区中医院物品灭菌数", "dataIndexSource": "复用性外部代理灭菌物品总件数","descriptionOfDataIndex":"越秀区中医院送来灭菌的物品", "orgUnitCodes":["00106"] } + ] + }, //外来器械拆分价格计算方式 foreignTousseSplitPriceType:0, //不符合返消规则的器械包是否允许返消(默认为false)
序号" + tableHeader[i].title + "" + tableHeader[i].title + "
" + tableHeader[i].children[k].columnTitle + "
序号" + tableHeader[i].title + "
" + (j + 1) + "" + value + "" + value + "" + value + "" + value + "" + value + "