Index: ssts-web/src/main/webapp/disinfectsystem/config/cdlqyq1yy/config.js =================================================================== diff -u -r20717 -r20872 --- ssts-web/src/main/webapp/disinfectsystem/config/cdlqyq1yy/config.js (.../config.js) (revision 20717) +++ ssts-web/src/main/webapp/disinfectsystem/config/cdlqyq1yy/config.js (.../config.js) (revision 20872) @@ -89,5 +89,7 @@ // PDA签收器械包 enablePDATousseSign:true, //只有装配完成才能使用清洗篮筐回收.默认为true - recycleClassifyBasketAfterPacked:false + recycleClassifyBasketAfterPacked:false, + //是否显示预处理不合格统计报表 + showUnqualifiedPretreatmentReport:true } \ No newline at end of file Index: ssts-web/src/main/webapp/jasperRtp/unqualifiedPretreatmentReport.jrxml =================================================================== diff -u --- ssts-web/src/main/webapp/jasperRtp/unqualifiedPretreatmentReport.jrxml (revision 0) +++ ssts-web/src/main/webapp/jasperRtp/unqualifiedPretreatmentReport.jrxml (revision 20872) @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <band height="38" splitType="Stretch"> + <textField> + <reportElement uuid="3ef5ef90-ca6c-42eb-855c-ff2336f47b62" x="0" y="0" width="980" height="38"/> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font size="14" isBold="true"/> + </textElement> + <textFieldExpression><![CDATA[$P{title}]]></textFieldExpression> + </textField> + </band> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: ssts-web/src/main/webapp/disinfectsystem/reportforms/unqualifiedPretreatmentReport.js =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/reportforms/unqualifiedPretreatmentReport.js (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/reportforms/unqualifiedPretreatmentReport.js (revision 20872) @@ -0,0 +1,200 @@ +var entityName = "预处理不合格报表"; +var grid; + +var rd = new Ext.data.JsonReader( { + fields : [ + {name : 'id'}, + {name : 'departId'}, + {name : 'name'} + + ] +}); + +// 申请科室Store +var sendDepartJsonStore = new Ext.data.Store({ + proxy : new Ext.data.HttpProxy({ + url : WWWROOT + '/disinfectSystem/baseData/supplyRoomConfigAction!getDepartNameJson.do', + method : 'POST' + }), + reader : new Ext.data.JsonReader({ + root : 'data' + },[ + {name : 'id',mapping : 'id'}, + {name : 'name',mapping : 'name'} + ] + ) +}); + +var myMask; +Ext.onReady(function() { + Ext.QuickTips.init(); + // 记录cookie(3步) + function reloadReport(){ + var startDate = $Id('startDate').value; + var endDate = $Id('endDate').value; + var sendDepart = Ext.getCmp('depart').getValue(); + var remark = Ext.getCmp('remark').getValue();; + var reportFile = "unqualifiedPretreatmentReport.jasper"; + myMask = new Ext.LoadMask(Ext.getBody(), { + msg: '正在加载,请稍候!', + removeMask: true + }); + myMask.show(); + + /* + * 因为window.open只能用get方式提交,有些参数的值有“#”会被当成锚点,“#”后面的内容会被截掉,导致后台得到的值发生变化 + * 所以这里改成了post方式提交 + * + */ + + var newWindow = window.open('', 'thisIframe', '_self'); + var url = WWWROOT+"/jasperreports/jasperreportsAction!createReportFromJavaBeanSource.do"; + formString = '
' + +'' + +'' + +'' + +'' + +'' + +'' + +'
'; + + newWindow.document.body.innerHTML = formString; + newWindow.document.forms[0].submit(); + } + + var form = new Ext.form.FormPanel({ + title : '灭菌物品质量监测统计报表', + region : 'north', + labelAlign : 'right', + buttonAlign : 'center', + collapsible : true, + collapseMode : 'mini', + split : true, + border : 0, + // bodyStyle : 'padding: 10px 10px 0px 10px;', + frame : true, + bodyStyle : 'padding:0px auto;margin:0px',// padding:1px;padding-top:5px; + height : 100, + items : [{ + layout : 'column', + height : 40, + labelWidth : 70, + items : [{ + columnWidth : .15, + layout : 'form', + labelWidth : 60, + items : [new Ext.form.DateField({ + id:'startDate', + name : 'startDate', + fieldLabel : '开始日期', + readOnly : false, + format:'Y-m-d', + value : new Date(), + anchor : '95%', + listeners : { + specialkey : function(field, ee) { + if (ee.getKey() == Ext.EventObject.ENTER) { + var isOK = field.validate(); + if(isOK){ + var value = field.getValue(); + field.setValue(value); + reloadReport(); + } + } + } + } + })] + },{ + columnWidth : .15, + layout : 'form', + labelWidth : 60, + items : [new Ext.form.DateField({ + id:'endDate', + name : 'endDate', + fieldLabel : '结束日期', + readOnly : false, + format:'Y-m-d', + value : new Date(), + anchor : '95%', + listeners : { + specialkey : function(field, ee) { + if (ee.getKey() == Ext.EventObject.ENTER) { + var isOK = field.validate(); + if(isOK){ + var value = field.getValue(); + field.setValue(value); + reloadReport(); + } + } + } + } + })] + },{ + columnWidth : .20, + layout : 'form', + labelWidth : 70, + items : [{ + xtype : 'combo', + id : 'depart', + name : 'depart', + valueField : 'id', + displayField : 'name', + fieldLabel : "科室", + allowBlank : true, + editable : true, + store : sendDepartJsonStore, + forceSelection : true, + triggerAction : 'all', + anchor : '95%' + }] + },{ + columnWidth : .15, + layout : 'form', + labelWidth : 60, + items : [{ + xtype:'textfield', + id:'remark', + name:'remark', + fieldLabel : '备注' + }] + }] + }], + buttons:[{ + text : '查询', + minWidth : 70, + iconCls : 'icon_search', + handler : function() { + reloadReport(); + } + },{ + text : '重置', + minWidth : 70, + iconCls : 'icon_set', + handler : function() { + Ext.getCmp('startDate').setValue(""); + Ext.getCmp('endDate').setValue(""); + Ext.getCmp('depart').setValue(""); + Ext.getCmp('remark').setValue(""); + } + }] + }); + + + 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-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingItemManagerImpl.java =================================================================== diff -u -r18645 -r20872 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingItemManagerImpl.java (.../RecyclingItemManagerImpl.java) (revision 18645) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingItemManagerImpl.java (.../RecyclingItemManagerImpl.java) (revision 20872) @@ -1,22 +1,45 @@ package com.forgon.disinfectsystem.recyclingrecord.service; +import java.sql.ResultSet; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Calendar; import java.util.Collection; import java.util.HashMap; +import java.util.List; import java.util.Map; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.Predicate; +import org.apache.commons.lang3.StringUtils; +import com.forgon.Constants; +import com.forgon.databaseadapter.service.DateQueryAdapter; +import com.forgon.databaseadapter.service.SqlFunctionsAdapter; import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; import com.forgon.disinfectsystem.entity.recyclingrecord.RecyclingItem; +import com.forgon.disinfectsystem.entity.recyclingrecord.RecyclingRecord; import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; +import com.forgon.disinfectsystem.recyclingrecord.vo.UnqualifiedPretreatmentVo; import com.forgon.tools.MathTools; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.BasePoManagerImpl; +import com.forgon.tools.util.ForgonDateUtils; public class RecyclingItemManagerImpl extends BasePoManagerImpl implements RecyclingItemManager { + private DateQueryAdapter dateQueryAdapter; + private SqlFunctionsAdapter sqlFunctionsAdapter; + + public void setDateQueryAdapter(DateQueryAdapter dateQueryAdapter) { + this.dateQueryAdapter = dateQueryAdapter; + } + + public void setSqlFunctionsAdapter(SqlFunctionsAdapter sqlFunctionsAdapter) { + this.sqlFunctionsAdapter = sqlFunctionsAdapter; + } + @Override public RecyclingItem find(Collection items, Long tousseDefinitionId) { @@ -55,5 +78,48 @@ } return null; } + + @Override + public List loadUnqualifiedPretreatments( + String startDate, String endDate, String departCode, String remark) { + String dateSql = dateQueryAdapter.dateAreaSql("rr.recyclingTime", endDate, endDate, true, true); + String departSql = "1=1"; + String remarkSql = null; + if(StringUtils.isNotBlank(departCode)){ + departSql = "rr.departCode='" + departCode + "'"; + } + if(StringUtils.isNotBlank(remark)){ + remarkSql = "po.remark like '%" + remark + "%'"; + }else{ + remarkSql = sqlFunctionsAdapter.strNotBlank("po.remark") + " and po.remark <> 'undefined'"; + } + String sql = String.format("select po.remark,po.tousseName,rr.depart,rr.recyclingTime,rr.recyclingUser from %s po join %s rr on rr.id = po.recyclingRecord_id where %s and %s and %s order by rr.departCode", + poName,RecyclingRecord.class.getSimpleName(),dateSql,departSql,remarkSql); + List ret = new ArrayList<>(); + ResultSet rs = objectDao.executeSql(sql); + try{ + while(rs.next()){ + String rm = rs.getString("remark"); + String tousseName = rs.getString("tousseName"); + String depart = rs.getString("depart"); + String recyclingUser = rs.getString("recyclingUser"); + Timestamp t = rs.getTimestamp("recyclingTime", Calendar.getInstance()); + + UnqualifiedPretreatmentVo vo = new UnqualifiedPretreatmentVo(); + vo.setDepart(depart); + vo.setRecyclingTime(ForgonDateUtils.safelyFormatDate(t, + Constants.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS, "")); + vo.setRecyclingUser(recyclingUser); + vo.setTousseName(tousseName); + vo.setRemark(rm); + ret.add(vo); + } + }catch(Exception e){ + e.printStackTrace(); + }finally{ + DatabaseUtil.closeResultSetAndStatement(rs); + } + return ret; + } } Index: ssts-web/src/main/webapp/homepage/menuconfigure.js =================================================================== diff -u -r20862 -r20872 --- ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 20862) +++ ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 20872) @@ -548,7 +548,8 @@ {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.enableNurseWorkload,text:"护理工作质量指标报表",href:WWWROOT+'/disinfectsystem/reportforms/nurseWorkload.jsp',hrefTarget:linkTarget,leaf:true}, - {hidden :!sstsConfig.showSterilizerQualityReport,text:"灭菌物品质量监测统计报表",href:WWWROOT+'/disinfectsystem/reportforms/sterilizerQuality.jsp',hrefTarget:linkTarget,leaf:true} + {hidden :!sstsConfig.showSterilizerQualityReport,text:"灭菌物品质量监测统计报表",href:WWWROOT+'/disinfectsystem/reportforms/sterilizerQuality.jsp',hrefTarget:linkTarget,leaf:true}, + {hidden :!sstsConfig.showUnqualifiedPretreatmentReport,text:"预处理不合格报表",href:WWWROOT+'/disinfectsystem/reportforms/unqualifiedPretreatmentReport.jsp',hrefTarget:linkTarget,leaf:true} ] },{ text:"财务核算及物品发放报表", Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/vo/UnqualifiedPretreatmentVo.java =================================================================== diff -u --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/vo/UnqualifiedPretreatmentVo.java (revision 0) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/vo/UnqualifiedPretreatmentVo.java (revision 20872) @@ -0,0 +1,54 @@ +package com.forgon.disinfectsystem.recyclingrecord.vo; + + +public class UnqualifiedPretreatmentVo { + private String tousseName; + /** + * 申请科室的名称.为回收时显示的科室名称,可能为申请科室,可能为结算科室,看配置 + */ + private String depart; + /** + * 回收时间 + */ + private String recyclingTime; + /** + * 回收人 + */ + private String recyclingUser; + /** + * 备注 + */ + private String remark; + + public String getTousseName() { + return tousseName; + } + public void setTousseName(String tousseName) { + this.tousseName = tousseName; + } + public String getDepart() { + return depart; + } + public void setDepart(String depart) { + this.depart = depart; + } + public String getRecyclingTime() { + return recyclingTime; + } + public void setRecyclingTime(String recyclingTime) { + this.recyclingTime = recyclingTime; + } + public String getRecyclingUser() { + return recyclingUser; + } + public void setRecyclingUser(String recyclingUser) { + this.recyclingUser = recyclingUser; + } + public String getRemark() { + return remark; + } + public void setRemark(String remark) { + this.remark = remark; + } + +} Index: ssts-web/src/main/webapp/disinfectsystem/reportforms/unqualifiedPretreatmentReport.jsp =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/reportforms/unqualifiedPretreatmentReport.jsp (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/reportforms/unqualifiedPretreatmentReport.jsp (revision 20872) @@ -0,0 +1,49 @@ +<%@ page contentType="text/html; charset=UTF-8"%> +<%@ include file="/common/taglibs.jsp"%> + + + +<%@ include file="/common/includeExtJsAndCss.jsp"%> +<%@ include file="/common/includeExtJs4_2.jsp"%> + + + + + + + + + + + +预处理不合格报表 + + + + + + + +
+
+
+ + +
+ + +
+ + \ No newline at end of file Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java =================================================================== diff -u -r20726 -r20872 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 20726) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 20872) @@ -87,6 +87,7 @@ import com.forgon.disinfectsystem.jasperreports.javabeansource.YearReportChartBean; import com.forgon.disinfectsystem.jasperreports.service.JasperReportManager; import com.forgon.disinfectsystem.materialerrordamage.service.MaterialErrorDamageDetailManager; +import com.forgon.disinfectsystem.recyclingrecord.service.RecyclingItemManager; import com.forgon.disinfectsystem.tousse.materialdefinition.service.MaterialDefinitionManager; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseDefinitionManager; import com.forgon.systemsetting.model.HttpOption; @@ -132,6 +133,12 @@ private WareHouseManager wareHouseManager; + private RecyclingItemManager recyclingItemManager; + + public void setRecyclingItemManager(RecyclingItemManager recyclingItemManager) { + this.recyclingItemManager = recyclingItemManager; + } + public void setMaterialErrorDamageDetailManager( MaterialErrorDamageDetailManager materialErrorDamageDetailManager) { this.materialErrorDamageDetailManager = materialErrorDamageDetailManager; @@ -967,6 +974,13 @@ && StringUtils.isNotBlank(endTime)) { return jasperReportManager.getTousseApplySummaryData(startTime, endTime, departmentCode); } + }else if("unqualifiedPretreatmentReport".equals(reportName)){ + //预处理不合格统计报表 + String startDate = StrutsParamUtils.getPraramValue("startDate", ""); + String endDate = StrutsParamUtils.getPraramValue("endDate", ""); + String departCode = StrutsParamUtils.getPraramValue("departCode", ""); + String remark = StrutsParamUtils.getPraramValue("remark", ""); + return recyclingItemManager.loadUnqualifiedPretreatments(startDate, endDate, departCode, remark); } return null; } @@ -1625,6 +1639,10 @@ String startTime = StrutsParamUtils.getPraramValue("startTime", ""); String endTime = StrutsParamUtils.getPraramValue("endTime", ""); map.put("title", String.format("各部门器械包申请汇总(%s~%s)", startTime, endTime)); + }else if("unqualifiedPretreatmentReport".equals(reportName)){ + String startDate = StrutsParamUtils.getPraramValue("startDate", ""); + String endDate = StrutsParamUtils.getPraramValue("endDate", ""); + map.put("title", String.format("预处理不合格统计报表(%s~%s)", startDate, endDate)); } return map; } Index: ssts-web/src/main/webapp/jasperRtp/unqualifiedPretreatmentReport.jasper =================================================================== diff -u Binary files differ Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingItemManager.java =================================================================== diff -u -r18645 -r20872 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingItemManager.java (.../RecyclingItemManager.java) (revision 18645) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingItemManager.java (.../RecyclingItemManager.java) (revision 20872) @@ -1,9 +1,11 @@ package com.forgon.disinfectsystem.recyclingrecord.service; import java.util.Collection; +import java.util.List; import com.forgon.disinfectsystem.entity.recyclingrecord.RecyclingItem; import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; +import com.forgon.disinfectsystem.recyclingrecord.vo.UnqualifiedPretreatmentVo; import com.forgon.tools.hibernate.BasePoManager; /** * 回收项操作类 @@ -31,5 +33,15 @@ * @return */ public RecyclingItem get(TousseItem tousseItem); + /** + * 获取预处理统计报表数据 + * @param startDate + * @param endDate + * @param departCode + * @param remark + * @return + */ + public List loadUnqualifiedPretreatments(String startDate,String endDate, + String departCode,String remark); }