Index: ssts-web/src/main/webapp/jasperRtp/summaryUseRecordDepartOfPatientReport.jrxml =================================================================== diff -u --- ssts-web/src/main/webapp/jasperRtp/summaryUseRecordDepartOfPatientReport.jrxml (revision 0) +++ ssts-web/src/main/webapp/jasperRtp/summaryUseRecordDepartOfPatientReport.jrxml (revision 27366) @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <band height="30" splitType="Stretch"> + <textField> + <reportElement uuid="4dd1a765-4207-4079-8cf6-8b2dc4d91f3b" x="1" y="0" width="540" height="30"/> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font size="14" isBold="true"/> + </textElement> + <textFieldExpression><![CDATA[$P{title}]]></textFieldExpression> + </textField> + </band> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java =================================================================== diff -u -r27180 -r27366 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java (.../JasperReportManager.java) (revision 27180) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java (.../JasperReportManager.java) (revision 27366) @@ -62,6 +62,7 @@ import com.forgon.disinfectsystem.jasperreports.javabeansource.SterilizingStove; import com.forgon.disinfectsystem.jasperreports.javabeansource.SterilizingStove_child; import com.forgon.disinfectsystem.jasperreports.javabeansource.SummaryUseRecordForDepartmentVO; +import com.forgon.disinfectsystem.jasperreports.javabeansource.SummaryUseRecordVO; import com.forgon.disinfectsystem.jasperreports.javabeansource.SupplyRoomQualityQuota; import com.forgon.disinfectsystem.jasperreports.javabeansource.TousseApplyDepartment; import com.forgon.disinfectsystem.jasperreports.javabeansource.TousseApplySummary; @@ -589,10 +590,20 @@ * @param endTime * @param departCoding * @param operatorSearch + * @param departColumnName 第二列部门 病区或病人所在科室 + * @param departOfpatientSearch 病人所在科室过滤 * @return */ - public List getSummaryUseRecordForGoodsVO(String startTime, String endTime, String departSearch, String goodsSearch); - + public List getSummaryUseRecordForGoodsVO(String startTime, String endTime, String departSearch, String goodsSearch, String departColumnName, String departOfpatientSearch); + /** + * 获取"使用记录物品汇总表"的javabean + * @param startTime 开始时间 + * @param endTime 结束时间 + * @param departOfpatientSearch 病人所在科室 + * @return + */ + public List getSummaryUseRecordVO(String startTime, String endTime, String departOfpatientSearch); + public List getFormInstanceData(String startDate,String endDate,String departCoding,String formDefinitionId); public List getQualityMonitoringDataSource(); Index: ssts-web/src/main/webapp/disinfectsystem/useRecord/useRecordForm.js =================================================================== diff -u -r27335 -r27366 --- ssts-web/src/main/webapp/disinfectsystem/useRecord/useRecordForm.js (.../useRecordForm.js) (revision 27335) +++ ssts-web/src/main/webapp/disinfectsystem/useRecord/useRecordForm.js (.../useRecordForm.js) (revision 27366) @@ -776,7 +776,7 @@ top.Ext.getCmp('depart').enable(); setFormParams(formObj.form, [ 'id', 'washHandNurse','circuitNurse', 'operationRoom','treatmentNum', 'hospitalNum', 'patientName','patientAge', 'patientSex', 'roomNumber', - 'bedNumber', 'patientIDCard', 'doctorName', 'surgeon','operationName','specialInfection','operationTime','operationScheduleId', 'remark' ]); + 'bedNumber', 'patientIDCard', 'doctorName', 'surgeon','operationName','specialInfection','operationTime','operationScheduleId', 'remark','departCodeOfpatient' ]); // 设置表单上的item参数(因为struts2版本会对前台传过来日期的时分秒部分截掉,所以手术时间需要单独传) setFormItems(useItemsStore); formObj.form.submit( { @@ -887,7 +887,7 @@ top.Ext.getCmp('depart').enable(); setFormParams(formObj.form, [ 'id', 'washHandNurse','circuitNurse', 'operationRoom','treatmentNum', 'hospitalNum', 'patientName','patientAge', 'patientSex', 'roomNumber', - 'bedNumber', 'patientIDCard', 'doctorName','operationName','specialInfection','operationTime','operationScheduleId', 'remark' ]); + 'bedNumber', 'patientIDCard', 'doctorName','operationName','specialInfection','operationTime','operationScheduleId', 'remark','departCodeOfpatient']); // 设置表单上的item参数 setFormItems(useItemsStore); formObj.form.submit( { @@ -1369,7 +1369,7 @@ width : formWidth, // autoHeight : true, autoScroll : true, - labelWidth : 80, + labelWidth : 90, items : [ { xtype : "fieldset", title : "基础数据", @@ -1399,8 +1399,12 @@ xtype : 'hidden', name : 'originalFormParams', id : 'originalFormParams' - }, { + },{ xtype : 'hidden', + name : 'departCodeOfpatient', + id : 'departCodeOfpatient' + },{ + xtype : 'hidden', name : 'tousseInstanceBarcodes', id : 'tousseInstanceBarcodes' }, { @@ -1741,8 +1745,34 @@ name : 'patientArea', anchor : '96%' }] - }, { + },{ + columnWidth : .33, layout : 'form', + hidden:fromDepartmentUseRecord, + items : [{ + xtype : 'combo', + id : 'departNameOfpatient', + name : 'departNameOfpatient', + queryParam : 'spell', + fieldLabel : '病人所在科室', + minChars : 0, + valueField : 'id', + displayField : 'name', + store : departJsonStore, + forceSelection : true, + lazyInit : true, + triggerAction : 'all', + typeAhead : false, + allowBlank : true, + anchor : '96%', + listeners : { + select : function(combo, record, index) { + top.Ext.getCmp('departCodeOfpatient').setValue(record.data.id); + } + } + }] + },{ + layout : 'form', columnWidth : 0.33, hidden:fromDepartmentUseRecord, items : [{ @@ -2248,12 +2278,13 @@ top.Ext.getCmp('reviewTime').setValue(formatDateYear(action.result.data.reviewTime)); top.Ext.getCmp('applicationTime').setValue(formatDateYear(action.result.data.applicationTime)); top.Ext.getCmp('operationTime').setValue(formatDateYear(action.result.data.operationTime)); - top.Ext.getCmp('tempBarcode').focus(true); + top.Ext.getCmp('departNameOfpatient').setValue(action.result.data.departCodeOfpatient); + top.Ext.getCmp('tempBarcode').focus(true); // 保存原始数据,只需要保存需要修改的属性 setOriginalFormParams(form, [ 'id', 'washHandNurse','circuitNurse', 'operationRoom','treatmentNum', 'hospitalNum', 'patientName','patientAge', 'patientSex', 'roomNumber', - 'bedNumber', 'patientIDCard', 'doctorName', 'surgeon','operationName','specialInfection', 'remark' ]); + 'bedNumber', 'patientIDCard', 'doctorName', 'surgeon','operationName','specialInfection', 'remark','departCodeOfpatient' ]); }, failure : function(form, action) { Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java =================================================================== diff -u -r27180 -r27366 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 27180) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 27366) @@ -1216,9 +1216,15 @@ String endDay = StrutsParamUtils.getPraramValue("endDay", ""); String departSearch = StrutsParamUtils.getPraramValue("departSearch", ""); String goodsSearch = StrutsParamUtils.getPraramValue("goodsSearch", ""); - List summaryUseRecordForGoodsVOList = jasperReportManager.getSummaryUseRecordForGoodsVO(startDay, endDay, departSearch, goodsSearch); - return summaryUseRecordForGoodsVOList; - } else if("tousseOverLoadReport".equals(reportName)){ + String departOfpatientSearch = StrutsParamUtils.getPraramValue("departOfpatientSearch", ""); + String departColumnName = StrutsParamUtils.getPraramValue("departColumnName", "病区"); + return jasperReportManager.getSummaryUseRecordForGoodsVO(startDay, endDay, departSearch, goodsSearch,departColumnName,departOfpatientSearch); + } else if("summaryUseRecord".equals(reportName)){ + String startDay = StrutsParamUtils.getPraramValue("startDay", ""); + String endDay = StrutsParamUtils.getPraramValue("endDay", ""); + String departOfpatientSearch = StrutsParamUtils.getPraramValue("departOfpatientSearch", ""); + return jasperReportManager.getSummaryUseRecordVO(startDay, endDay, departOfpatientSearch); + }else if("tousseOverLoadReport".equals(reportName)){ return jasperReportManager.getTousseOverLoadData(requestParameters); }else if("tousseMorrowSendReport".equals(reportName)){ return jasperReportManager.getTousseMorrwoSendData(requestParameters); @@ -2204,7 +2210,14 @@ String startDay = StrutsParamUtils.getPraramValue("startDay", ""); String endDay = StrutsParamUtils.getPraramValue("endDay", ""); String title = "使用记录物品分类汇总表 (" + startDay + " ~ " + endDay + ")"; + String departColumnName = StrutsParamUtils.getPraramValue("departColumnName", "病区"); + map.put("departColumnName", departColumnName); map.put("title", title); + }else if("summaryUseRecord".equals(reportName)){ + String startDay = StrutsParamUtils.getPraramValue("startDay", ""); + String endDay = StrutsParamUtils.getPraramValue("endDay", ""); + String title = "使用记录物品汇总表 (" + startDay + " ~ " + endDay + ")"; + map.put("title", title); }else if (reportName.equals("QualityMonitoringInspectMonthReport")) { String year = StrutsParamUtils.getPraramValue("queryYear", null); String queryMonth = StrutsParamUtils.getPraramValue("queryMonth", null); Index: ssts-web/src/main/webapp/jasperRtp/summaryUseRecordForDepartmentAndDepart.jrxml =================================================================== diff -u --- ssts-web/src/main/webapp/jasperRtp/summaryUseRecordForDepartmentAndDepart.jrxml (revision 0) +++ ssts-web/src/main/webapp/jasperRtp/summaryUseRecordForDepartmentAndDepart.jrxml (revision 27366) @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + <band height="33" splitType="Stretch"> + <textField> + <reportElement uuid="654ad630-523e-4152-83dd-6d6ecc28848a" x="0" y="0" width="820" height="33"/> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font size="12" isBold="true"/> + </textElement> + <textFieldExpression><![CDATA[$P{title}]]></textFieldExpression> + </textField> + </band> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: ssts-web/src/main/webapp/disinfectsystem/reportforms/summaryUseRecordForGoodsAndDepartView.jsp =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/reportforms/summaryUseRecordForGoodsAndDepartView.jsp (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/reportforms/summaryUseRecordForGoodsAndDepartView.jsp (revision 27366) @@ -0,0 +1,52 @@ +<%@page import="org.apache.commons.lang.StringUtils"%> +<%@ page import="com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager"%> +<%@ page contentType="text/html; charset=UTF-8"%> +<%@ include file="/common/taglibs.jsp"%> +<%@ include file="/common/includeExtJsAndCss.jsp"%> + + +<% + SupplyRoomConfigManager configManager =(SupplyRoomConfigManager) SpringBeanManger.getBean("supplyRoomConfigManager"); + LoginUserData userData = AcegiHelper.getLoginUser(); + String currentUserOfCoding = userData.getCurrentOrgUnitCode(); + String orgName = userData.getOrgUnitNameCodingFromSupplyRoomConfig(); + String firstRoomCode = configManager.getFirstSupplyRoomConfig().getOrgUnitCoding(); + request.setAttribute("currentOrgCode", currentUserOfCoding); + request.setAttribute("orgName", orgName); + request.setAttribute("userName", userData.getUserFullName()); + if(StringUtils.equals(currentUserOfCoding,firstRoomCode)){ + request.setAttribute("isFirstRoomPeople", true); + }else{ + request.setAttribute("isFirstRoomPeople", false); + } +%> + +使用记录物品分类汇总表 + + + + + + + + + + + + + + + + + + +
+
+
+ + \ No newline at end of file Index: ssts-web/src/main/webapp/disinfectsystem/useRecord/useRecordView.js =================================================================== diff -u -r27127 -r27366 --- ssts-web/src/main/webapp/disinfectsystem/useRecord/useRecordView.js (.../useRecordView.js) (revision 27127) +++ ssts-web/src/main/webapp/disinfectsystem/useRecord/useRecordView.js (.../useRecordView.js) (revision 27366) @@ -13,8 +13,17 @@ addAndEditUseRecord('', '',''); setTimeout("top.Ext.getCmp('hospitalNum').focus(true)", 500); } - - +var departJsonStore = new Ext.data.Store({ + proxy : new Ext.data.HttpProxy({ + url : WWWROOT + '/disinfectSystem/baseData/supplyRoomConfigAction!getAllOrgUnitName.do', + method : 'POST' + }), + reader : new Ext.data.JsonReader({ + root : 'data' + }, + [{name : 'id',mapping : 'id'},{name : 'name',mapping : 'name'}]) +}); +departJsonStore.load(); /** * 批量设置状态为已回收 * @param ids @@ -709,7 +718,6 @@ dismissDelay: 0, showDelay: 0 }); - //隐藏列名 var hiddenColumnsOfUseRecordListView = sstsConfig.hiddenColumnsOfUseRecordListView; var patientNameColumnHeader = "病人"; Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java =================================================================== diff -u -r27331 -r27366 --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 27331) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 27366) @@ -2150,6 +2150,13 @@ modifyContent.add("主刀医生由"+ originalSurgeon +"修改为"+ surgeon); } + //departCodeOfpatient病人所在科室的编码 + String originalDepartCodeOfpatient = original.getDepartCodeOfpatient(); + String departCodeOfpatient = modified.getDepartCodeOfpatient(); + if (!StringUtils.equals(originalDepartCodeOfpatient, departCodeOfpatient)) { + curUseRecord.setDepartCodeOfpatient(departCodeOfpatient); + modifyContent.add("病人所在科室由"+ originalDepartCodeOfpatient +"修改为"+ departCodeOfpatient); + } //聚合包内的子包使用数据也需要复制到新的使用记录对象中 curUseRecord.setTousseInstanceList(modified.getTousseInstanceList()); curUseRecord.setSubComboTousseUseRecordList(modified.getSubComboTousseUseRecordList()); Index: ssts-web/src/main/webapp/jasperRtp/summaryUseRecordForPatientAreaAndDepart.jrxml =================================================================== diff -u --- ssts-web/src/main/webapp/jasperRtp/summaryUseRecordForPatientAreaAndDepart.jrxml (revision 0) +++ ssts-web/src/main/webapp/jasperRtp/summaryUseRecordForPatientAreaAndDepart.jrxml (revision 27366) @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: ssts-web/src/main/webapp/jasperRtp/summaryUseRecordForDepartmentAndDepart.jasper =================================================================== diff -u Binary files differ Index: ssts-web/src/main/webapp/disinfectsystem/reportforms/summaryUseRecordView.js =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/reportforms/summaryUseRecordView.js (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/reportforms/summaryUseRecordView.js (revision 27366) @@ -0,0 +1,155 @@ +var entityName = "使用记录物品汇总表"; +var form; +var myMask; +function reloadReport(){ + if (!form.getForm().isValid()) { + showResult('请正确填写表单各值'); + return false; + } + var startTime= $Id('startTime').value; + var endTime = $Id('endTime').value; + var departOfpatientSearch = $Id('departOfpatientSearch').value; + myMask = new Ext.LoadMask(Ext.getBody(), { + msg: '正在加载,请稍候!', + removeMask: true + }); + myMask.show(); + window.open(WWWROOT+"/jasperreports/jasperreportsAction!createReportFromJavaBeanSource.do" + + "?jasperreportName=summaryUseRecordDepartOfPatientReport.jasper&reportName=summaryUseRecord" + + "&startDay=" + startTime + + "&endDay=" + endTime + + "&departOfpatientSearch=" + departOfpatientSearch, + 'thisIframe', '_self'); +} +Ext.onReady(function(){ + Ext.QuickTips.init(); + var departRecord = Ext.data.Record.create([ { + name : 'id' + }, { + name : 'name' + } ]); + var departJsonStore = new Ext.data.Store({ + proxy : new Ext.data.HttpProxy({ + url : WWWROOT + '/disinfectSystem/baseData/supplyRoomConfigAction!getAllOrgUnitName.do', + method : 'POST' + }), + reader : new Ext.data.JsonReader({ + root : 'data' + },departRecord) + }); + 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', + height : 105, + items : [{ + layout : 'column', + labelWidth : 60, + items : [{ + layout:'form', + width:230, + items:[{ + xtype : 'datefieldWithMin', + fieldLabel : '开始日期', + id : 'startTime', + name : 'startTime', + format : 'Y-m-d H:i:s', + allowBlank : true, + anchor : '95%', + theHours : 0, + theMinutes : 0, + value: new Date(startDayofMonth) + }] + },{ + layout:'form', + width:230, + items:[{ + xtype : 'datefieldWithMin', + fieldLabel : '结束日期', + id : 'endTime', + name : 'endTime', + format : 'Y-m-d H:i:s', + allowBlank : true, + anchor : '95%', + theHours : 23, + theMinutes : 59, + value: new Date() + }] + },{ + layout:'form', + width:260, + labelWidth:100, + items:[{ + xtype : 'combo', + id : 'departOfpatientSearch', + name : 'departOfpatientSearch', + queryParam : 'spell', + fieldLabel : '病人所在科室', + minChars : 0, + valueField : 'id', + displayField : 'name', + store : departJsonStore, + forceSelection : true, + lazyInit : true, + anchor : '95%', + listWidth:200, + disabled :!isFirstRoomPeople, + value : !isFirstRoomPeople ? orgName : '', + triggerAction : 'all', + hideTrigger : true, + typeAhead : false, + allowBlank : true + }] + }] + }], + buttons:[{ + xtype : 'button', + text : '查询', + minWidth : 70, + iconCls : 'icon_search', + handler : function() { + reloadReport(); + } + },{ + xtype : 'button', + text : '重置', + minWidth : 70, + iconCls : 'icon_set', + handler : function() { + form.getForm().reset(); + $Id('startTime').value = ""; + $Id('endTime').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-web/src/main/webapp/jasperRtp/summaryUseRecordDepartOfPatientReport.jasper =================================================================== diff -u Binary files differ Index: ssts-web/src/main/webapp/jasperRtp/summaryUseRecordForGoodsAndDepart.jrxml =================================================================== diff -u --- ssts-web/src/main/webapp/jasperRtp/summaryUseRecordForGoodsAndDepart.jrxml (revision 0) +++ ssts-web/src/main/webapp/jasperRtp/summaryUseRecordForGoodsAndDepart.jrxml (revision 27366) @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: ssts-web/src/main/webapp/disinfectsystem/reportforms/summaryUseRecordView.jsp =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/reportforms/summaryUseRecordView.jsp (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/reportforms/summaryUseRecordView.jsp (revision 27366) @@ -0,0 +1,52 @@ +<%@page import="org.apache.commons.lang.StringUtils"%> +<%@ page import="com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager"%> +<%@ page contentType="text/html; charset=UTF-8"%> +<%@ include file="/common/taglibs.jsp"%> +<%@ include file="/common/includeExtJsAndCss.jsp"%> + + +<% + SupplyRoomConfigManager configManager =(SupplyRoomConfigManager) SpringBeanManger.getBean("supplyRoomConfigManager"); + LoginUserData userData = AcegiHelper.getLoginUser(); + String currentUserOfCoding = userData.getCurrentOrgUnitCode(); + String orgName = userData.getOrgUnitNameCodingFromSupplyRoomConfig(); + String firstRoomCode = configManager.getFirstSupplyRoomConfig().getOrgUnitCoding(); + request.setAttribute("currentOrgCode", currentUserOfCoding); + request.setAttribute("orgName", orgName); + request.setAttribute("userName", userData.getUserFullName()); + if(StringUtils.equals(currentUserOfCoding,firstRoomCode)){ + request.setAttribute("isFirstRoomPeople", true); + }else{ + request.setAttribute("isFirstRoomPeople", false); + } +%> + +使用记录物品分类汇总表 + + + + + + + + + + + + + + + + + + +
+
+
+ + \ No newline at end of file Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/useRecord/UseRecord.java =================================================================== diff -u -r27323 -r27366 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/useRecord/UseRecord.java (.../UseRecord.java) (revision 27323) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/useRecord/UseRecord.java (.../UseRecord.java) (revision 27366) @@ -208,7 +208,10 @@ * 手术时间 */ private Date operationTime; - + /** + * 病人所在科室编码 + */ + private String departCodeOfpatient; @JsonIgnore private List tousseInstanceList;// 用于页面传参 @@ -783,6 +786,7 @@ jsonObject.put("washHandNurse", getWashHandNurse()); jsonObject.put("dataType", getDataType()); jsonObject.put("reviewOperateUserCode", getReviewOperateUserCode()); + jsonObject.put("departCodeOfpatient", getDepartCodeOfpatient()); if(CollectionUtils.isNotEmpty(tousseInstanceList)){ JSONArray array = new JSONArray(); @@ -832,4 +836,12 @@ this.dataType = dataType; } + public String getDepartCodeOfpatient() { + return departCodeOfpatient; + } + + public void setDepartCodeOfpatient(String departCodeOfpatient) { + this.departCodeOfpatient = departCodeOfpatient; + } + } Index: ssts-web/src/main/resources/systemset/operationDefine.xml =================================================================== diff -u -r27214 -r27366 --- ssts-web/src/main/resources/systemset/operationDefine.xml (.../operationDefine.xml) (revision 27214) +++ ssts-web/src/main/resources/systemset/operationDefine.xml (.../operationDefine.xml) (revision 27366) @@ -446,6 +446,7 @@ + Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r27364 -r27366 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 27364) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 27366) @@ -160,6 +160,7 @@ import com.forgon.log.model.Log; import com.forgon.log.service.LogManager; import com.forgon.security.model.User; +import com.forgon.security.service.OperationManager; import com.forgon.systemsetting.model.HttpOption; import com.forgon.systemsetting.service.HttpOptionManager; import com.forgon.tools.MathTools; @@ -244,6 +245,8 @@ private WorkQualityCollectionDataIndex workQualityCollectionDataIndex; @Autowired private SterilisationManager sterilisationManager; + @Autowired + private OperationManager operationManager; public static final String FORMNAMEOFADJ = "无菌包质量抽查登记表"; /** * 利用sql语句做数据源创建JasperPrint对象 @@ -12671,7 +12674,7 @@ @Override public List getSummaryUseRecordForGoodsVO( String startTime, String endTime, String departSearch, - String goodsSearch) { + String goodsSearch, String departColumnName, String departOfpatientSearch) { List list = new ArrayList(); if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime)) { @@ -12680,6 +12683,24 @@ String betweenSql = " and ur.enteringDate between " + dateQueryAdapter.dateConverAdapter2(startTime, "yyyy-mm-dd HH24:MI") + " and " + dateQueryAdapter.dateConverAdapter2(endTime, "yyyy-mm-dd HH24:MI") + " "; + String departSql = null; + String departOfpatientSearchSql = ""; + String departLimitSql = "";//科室权限过滤 + //是否有权限查看所有科室,如果没有只能查看自己科室 + boolean seeAllDepart = operationManager.isCurrentUserHaveAnyOperation("SSTS_USERECORD_ForGoodsAndDepart"); + seeAllDepart = false; + if("病区".equals(departColumnName)){ + departSql = "ur.patientArea"; + }else{//病人所在科室 + departSql = "(select ou.name from OrgUnit ou where departCodeOfpatient is not null and ou.orgUnitCoding=ur.departCodeOfpatient)"; + if(StringUtils.isNotBlank(departOfpatientSearch)){ + departOfpatientSearchSql = String.format(" and t1.patientArea='%s' ", departOfpatientSearch); + } + if (!seeAllDepart) { + String departCoding = AcegiHelper.getCurrentOrgUnitCode(); + departLimitSql = String.format(" and ur.departCoding='%s' ", departCoding); + } + } //按科室过滤 String departSearchSql = ""; @@ -12694,16 +12715,16 @@ } String sql = String.format("select t1.departCode,min(t1.departName) departName,t1.patientArea,min(t1.goodsName) goodsName,t1.price,sum(t1.amount) amount,sum(t1.amount*t1.price) total from (" - + "select 'tousse' type,ti.tousseDefinition_id goodsId,ur.depart departName,ur.departCoding departCode,ti.tousseName goodsName,1 amount,ur.patientArea patientArea,ti.fluctuationPrice price " - + "from UseRecord ur inner join TousseInstance ti on ti.useRecord_id=ur.id where 1=1 %s" + + "select 'tousse' type,ti.tousseDefinition_id goodsId,ur.depart departName,ur.departCoding departCode,ti.tousseName goodsName,1 amount,%s patientArea,ti.fluctuationPrice price " + + "from UseRecord ur inner join TousseInstance ti on ti.useRecord_id=ur.id where 1=1 %s %s" + "union all " - + "select 'disposableGoods' type,udgi.disposableGoodsId goodsId,ur.depart departName,ur.departCoding departCode,udgi.name goodsName,udgi.amount amount,ur.patientArea patientArea,case when dgb.cost is not null then dgb.cost else edg.price end price " + + "select 'disposableGoods' type,udgi.disposableGoodsId goodsId,ur.depart departName,ur.departCoding departCode,udgi.name goodsName,udgi.amount amount,%s patientArea,case when dgb.cost is not null then dgb.cost else edg.price end price " + "from UseRecord ur inner join UseDiposableGoodsItem udgi on udgi.userecord_id=ur.id " + "inner join barcodeDevice bd on bd.barcode=udgi.barcode " - + "left join DisposableGoodsBatch dgb on dgb.id=bd.id left join ExpensiveDisposablegoods edg on edg.id=bd.id where 1=1 %s " - + ") t1 where 1=1 %s %s " + + "left join DisposableGoodsBatch dgb on dgb.id=bd.id left join ExpensiveDisposablegoods edg on edg.id=bd.id where 1=1 %s %s" + + ") t1 where 1=1 %s %s %s" + "group by t1.departCode,t1.patientArea,t1.type,t1.goodsId,t1.price", - betweenSql, betweenSql, departSearchSql, goodsSearchSql); + departSql, betweenSql,departLimitSql, departSql, betweenSql,departLimitSql, departSearchSql, goodsSearchSql, departOfpatientSearchSql); ResultSet result = objectDao.executeSql(sql); @@ -12794,8 +12815,65 @@ } return list; } - @Override + public List getSummaryUseRecordVO(String startTime, + String endTime, String departOfpatientSearch) { + + List list = new ArrayList(); + if (StringUtils.isBlank(startTime) || StringUtils.isBlank(endTime)) { + return list; + } + //按时间段过滤 + String betweenSql = " and ur.enteringDate between " + + dateQueryAdapter.dateConverAdapter2(startTime, "yyyy-mm-dd HH24:MI") + + " and " + dateQueryAdapter.dateConverAdapter2(endTime, "yyyy-mm-dd HH24:MI") + " "; + String departSql = "(select ou.name from OrgUnit ou where departCodeOfpatient is not null and ou.orgUnitCoding=ur.departCodeOfpatient)"; + String departOfpatientSearchSql = ""; + if(StringUtils.isNotBlank(departOfpatientSearch)){//病人所在科室过滤 + departOfpatientSearchSql = String.format(" and t1.departName='%s' ", departOfpatientSearch); + } + //是否有权限查看所有科室,如果没有只能查看自己科室 + boolean seeAllDepart = operationManager.isCurrentUserHaveAnyOperation("SSTS_USERECORD_ForGoodsAndDepart"); + String departSearchSql = ""; + if (!seeAllDepart) { + String departCoding = AcegiHelper.getCurrentOrgUnitCode(); + departSearchSql = String.format(" and ur.departCoding='%s' ", departCoding); + System.out.println("-false"); + }else{ + System.out.println("-true"); + } + String sql = String.format("select t1.departName,sum(t1.amount) totalAmount,sum(t1.amount*t1.price) totalPrice from (" + + "select 1 amount,%s departName,ur.departCoding departCode,ti.fluctuationPrice price " + + "from UseRecord ur inner join TousseInstance ti on ti.useRecord_id=ur.id where 1=1 %s %s" + + "union all " + + "select udgi.amount amount,%s departName,ur.departCoding departCode,case when dgb.cost is not null then dgb.cost else edg.price end price " + + "from UseRecord ur inner join UseDiposableGoodsItem udgi on udgi.userecord_id=ur.id " + + "inner join barcodeDevice bd on bd.barcode=udgi.barcode " + + "left join DisposableGoodsBatch dgb on dgb.id=bd.id left join ExpensiveDisposablegoods edg on edg.id=bd.id where 1=1 %s %s " + + ") t1 where 1=1 %s" + + "group by t1.departName", + departSql, betweenSql, departSearchSql, departSql, betweenSql, departSearchSql, departOfpatientSearchSql); + ResultSet result = objectDao.executeSql(sql); + try { + while(result.next()){ + String departName = StringTools.defaultString(result.getString("departName")); + Long totalAmount = result.getLong("totalAmount"); + Double totalPrice = result.getDouble("totalPrice"); + totalPrice = (totalPrice != null ? totalPrice : 0D); + SummaryUseRecordVO item = new SummaryUseRecordVO(); + item.setDepartName(departName); + item.setTotalAmount(totalAmount); + item.setTotalPrice(totalPrice); + list.add(item); + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(result); + } + return list; + } + @Override public List getFormInstanceData(String startDate,String endDate,String departCoding,String formName) { List vos = new ArrayList(); if (StringUtils.isNotBlank(startDate) Index: ssts-web/src/main/webapp/jasperRtp/summaryUseRecordForPatientAreaAndDepart.jasper =================================================================== diff -u Binary files differ Index: ssts-web/src/main/webapp/jasperRtp/summaryUseRecordForGoodsAndDepart.jasper =================================================================== diff -u Binary files differ Index: ssts-web/src/main/webapp/homepage/menuconfigure.js =================================================================== diff -u -r27208 -r27366 --- ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 27208) +++ ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 27366) @@ -597,6 +597,8 @@ {hidden :SSTS_USERECORD_Item,text:"使用记录录入明细报表",href:WWWROOT+'/disinfectsystem/reportforms/useRecordItemView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_USERECORD_OperatorTotal,text:"使用记录人员汇总报表",href:WWWROOT+'/disinfectsystem/reportforms/useRecordOperatorTotalView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_USERECORD_ForGoods,text:"使用记录物品分类汇总表",href:WWWROOT+'/disinfectsystem/reportforms/summaryUseRecordForGoodsView.jsp',hrefTarget:linkTarget,leaf:true}, + {hidden :!sstsConfig.enableUseRecordByPatientDept,text:"使用记录物品分类汇总表 -病人所在科室",href:WWWROOT+'/disinfectsystem/reportforms/summaryUseRecordForGoodsAndDepartView.jsp',hrefTarget:linkTarget,leaf:true}, + {hidden :!sstsConfig.enableUseRecordByPatientDept,text:"使用记录物品汇总表",href:WWWROOT+'/disinfectsystem/reportforms/summaryUseRecordView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_SterilizingStoveUseCountReport,text:"灭菌炉使用次数统计报表",href:WWWROOT+'/disinfectsystem/reportforms/sterilizingStoveUseCountView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_TousseWorkLoadTotalReport,text:(sstsConfig.tousseWorkLoadName ? sstsConfig.tousseWorkLoadName : "器械包工作量统计报表"),href:WWWROOT+'/disinfectsystem/reportforms/tousseWorkLoadView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_CleaningAreaWorkloadForUser,text:'清洗区人员工作量统计报表',href:WWWROOT+'/disinfectsystem/reportforms/cleaningAreaWorkloadForUser.jsp',hrefTarget:linkTarget,leaf:true}, Index: ssts-web/src/main/webapp/disinfectsystem/reportforms/summaryUseRecordForGoodsAndDepartView.js =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/reportforms/summaryUseRecordForGoodsAndDepartView.js (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/reportforms/summaryUseRecordForGoodsAndDepartView.js (revision 27366) @@ -0,0 +1,231 @@ +var entityName = "使用记录物品分类汇总表-病人所在科室"; +var form; +var myMask; +function reloadReport(){ + if (!form.getForm().isValid()) { + showResult('请正确填写表单各值'); + return false; + } + var startTime= $Id('startTime').value; + var endTime = $Id('endTime').value; + var departSearch = $Id('departSearch').value; + var departOfpatientSearch = $Id('departOfpatientSearch').value; + var goodsSearch = $Id('goodsSearch').value; + + myMask = new Ext.LoadMask(Ext.getBody(), { + msg: '正在加载,请稍候!', + removeMask: true + }); + myMask.show(); + window.open(WWWROOT+"/jasperreports/jasperreportsAction!createReportFromJavaBeanSource.do" + + "?jasperreportName=summaryUseRecordForDepartmentAndDepart.jasper&reportName=summaryUseRecordForGoods" + + "&startDay=" + startTime + + "&endDay=" + endTime + + "&departColumnName=" + "病人所在科室" + + "&departSearch=" + departSearch + + "&departOfpatientSearch=" + departOfpatientSearch + + "&goodsSearch=" + goodsSearch, + 'thisIframe', '_self'); +} +Ext.onReady(function(){ + Ext.QuickTips.init(); + var departRecord = Ext.data.Record.create([ { + name : 'id' + }, { + name : 'name' + } ]); + var departJsonStore = new Ext.data.Store({ + proxy : new Ext.data.HttpProxy({ + url : WWWROOT + '/disinfectSystem/baseData/supplyRoomConfigAction!getAllOrgUnitName.do', + method : 'POST' + }), + reader : new Ext.data.JsonReader({ + root : 'data' + },departRecord) + }); + + var comboGoodsRecord = Ext.data.Record.create([ + {name : 'id',mapping : 'id'}, + {name : 'name',mapping : 'name'} + ]); + //物品选择下拉框数据源 + var comboGoodsStore = new Ext.data.Store({ + proxy : new Ext.data.HttpProxy({ + url : WWWROOT + '/disinfectSystem/baseData/tousseDefinitionAction!searchAllTousseAndAllDisposableGoods.do' + }), + reader : new Ext.data.JsonReader({ + root : 'data' + },comboGoodsRecord) + }); + + + 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', + height : 105, + items : [{ + layout : 'column', + labelWidth : 60, + items : [{ + layout:'form', + width:230, + items:[{ + xtype : 'datefieldWithMin', + fieldLabel : '开始日期', + id : 'startTime', + name : 'startTime', + format : 'Y-m-d H:i:s', + allowBlank : true, + anchor : '95%', + theHours : 0, + theMinutes : 0, + value: new Date(startDayofMonth) + }] + },{ + layout:'form', + width:230, + items:[{ + xtype : 'datefieldWithMin', + fieldLabel : '结束日期', + id : 'endTime', + name : 'endTime', + format : 'Y-m-d H:i:s', + allowBlank : true, + anchor : '95%', + theHours : 23, + theMinutes : 59, + value: new Date() + }] + },{ + layout:'form', + width:260, + labelWidth:100, + items:[{ + xtype : 'combo', + id : 'departSearch', + name : 'departSearch', + queryParam : 'spell', + fieldLabel : '科室', + minChars : 0, + valueField : 'id', + displayField : 'name', + store : departJsonStore, + forceSelection : true, + lazyInit : true, + anchor : '95%', + listWidth:200, + disabled :!isFirstRoomPeople, + value : !isFirstRoomPeople ? orgName : '', + triggerAction : 'all', + hideTrigger : true, + typeAhead : false, + allowBlank : true + }] + },{ + layout:'form', + width:260, + labelWidth:100, + items:[{ + xtype : 'combo', + id : 'departOfpatientSearch', + name : 'departOfpatientSearch', + queryParam : 'spell', + fieldLabel : '病人所在科室', + minChars : 0, + valueField : 'id', + displayField : 'name', + store : departJsonStore, + forceSelection : true, + lazyInit : true, + anchor : '95%', + listWidth:200, + disabled :!isFirstRoomPeople, + value : !isFirstRoomPeople ? orgName : '', + triggerAction : 'all', + hideTrigger : true, + typeAhead : false, + allowBlank : true + }] + },{ + layout:'form', + width:300, + labelWidth:60, + items:[{ + xtype : 'combo', + id : 'goodsSearch', + name : 'goodsSearch', + queryParam : 'spell', + fieldLabel : '物品', + minChars : 0, + valueField : 'id', + displayField : 'name', + store : comboGoodsStore, + forceSelection : true, + lazyInit : true, + anchor : '95%', + triggerAction : 'all', + hideTrigger : true, + typeAhead : false, + allowBlank : true, + listeners:{ + specialkey:function(field,event){ + if(event.getKey()==Ext.EventObject.ENTER){ + reloadReport(); + } + } + } + }] + }] + }], + buttons:[{ + xtype : 'button', + text : '查询', + minWidth : 70, + iconCls : 'icon_search', + handler : function() { + reloadReport(); + } + },{ + xtype : 'button', + text : '重置', + minWidth : 70, + iconCls : 'icon_set', + handler : function() { + form.getForm().reset(); + $Id('startTime').value = ""; + $Id('endTime').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/javabeansource/SummaryUseRecordVO.java =================================================================== diff -u --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/SummaryUseRecordVO.java (revision 0) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/SummaryUseRecordVO.java (revision 27366) @@ -0,0 +1,48 @@ +package com.forgon.disinfectsystem.jasperreports.javabeansource; + +/** + * 使用记录物品汇总表的javabean(病人所属科室) + * @author zc.li 2019-12-17 + */ +public class SummaryUseRecordVO { + + /** + * 病人所在科室 + */ + private String departName; + + /** + * 器械包总价 + */ + private Double totalPrice; + + /** + * 器械包总数 + */ + private Long totalAmount; + + public String getDepartName() { + return departName; + } + + public void setDepartName(String departName) { + this.departName = departName; + } + + public Double getTotalPrice() { + return totalPrice; + } + + public void setTotalPrice(Double totalPrice) { + this.totalPrice = totalPrice; + } + + public Long getTotalAmount() { + return totalAmount; + } + + public void setTotalAmount(Long totalAmount) { + this.totalAmount = totalAmount; + } + +}