Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java =================================================================== diff -u -r13649 -r13786 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 13649) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 13786) @@ -605,6 +605,12 @@ if(StringUtils.isNotBlank(month)){ return jasperReportManager.getwashWorkloadList(month,querySupplyRoom); } + }else if(reportName.equals("materialTypeWorkloadReport")){ // 清洗器械物品工作量及不合格率汇总表 + String month = StrutsParamUtils.getPraramValue("month", ""); + String querySupplyRoom = StrutsParamUtils.getPraramValue("querySupplyRoom", ""); + if(StringUtils.isNotBlank(month)){ + return jasperReportManager.findMaterialTypeWorkloadReportList(month,querySupplyRoom); + } }else if(reportName.equals("godownEntryDetailStatistic")){ // 入库物品明细统计报表 String title = StrutsParamUtils.getPraramValue("title", ""); @@ -1153,6 +1159,9 @@ map.put("title", "使用记录录入统计报表(" + startDay + "至" + endDay + ")"); }else if(reportName.equals("washWorkloadReprot")){ getWashWorkloadReprotParam(map); + }else if(reportName.equals("materialTypeWorkloadReport")){ // 清洗器械物品工作量及不合格率汇总表 + String month = StrutsParamUtils.getPraramValue("month", ""); + map.put("title", "清洗区材料类型工作量统计报表 " + month); }else if("useRecordOperatorTotalView".equals(reportName)){ getUseRecordOperatorTotalViewParam(map); } else if (reportName.equals("invoiceQuery")) { Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java =================================================================== diff -u -r13521 -r13786 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java (.../JasperReportManager.java) (revision 13521) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java (.../JasperReportManager.java) (revision 13786) @@ -27,6 +27,7 @@ import com.forgon.disinfectsystem.jasperreports.javabeansource.GoodsAmountSummaryByGrade; import com.forgon.disinfectsystem.jasperreports.javabeansource.InvoiceAmountContrastBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.InvoiceQuery; +import com.forgon.disinfectsystem.jasperreports.javabeansource.MaterialTypeWorkloadReport; import com.forgon.disinfectsystem.jasperreports.javabeansource.MaterialWashUnqualified; import com.forgon.disinfectsystem.jasperreports.javabeansource.MaterialWashUnqualifiedContrast; import com.forgon.disinfectsystem.jasperreports.javabeansource.MaterialWashUnqualifiedPosition; @@ -292,4 +293,6 @@ public List getGoodsAmountSummaryByGrade(String timeStart, String timeEnd, String goodsName,String grade,String orgUnitName); public List getStockTakeList(StockTakeRecord startRecord, StockTakeRecord endRecord,String type, String summaryType); + + public List findMaterialTypeWorkloadReportList(String month,String querySupplyRoom); } Index: ssts-web/src/main/webapp/disinfectsystem/reportforms/materialTypeWorkloadReportView.js =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/reportforms/materialTypeWorkloadReportView.js (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/reportforms/materialTypeWorkloadReportView.js (revision 13786) @@ -0,0 +1,168 @@ +var entityName = "清洗区材料分类工作量统计报表"; +var grid; + +var rd = new Ext.data.JsonReader( { + fields : [ + {name : 'id'}, + {name : 'departId'}, + {name : 'name'} + + ] +}); + +var supplyRoomStore = new Ext.data.Store({ + proxy : new Ext.data.HttpProxy({ + url : WWWROOT + '/disinfectSystem/baseData/supplyRoomConfigAction!loadSupplyRoomConfigRoom.do', + method : 'POST' + }), + baseParams :{type:"12"}, + reader : rd, + listeners :{ + 'load' : function(thiz,records,options){ + if(records.length > 0){ + Ext.getCmp('querySupplyRoom').setValue(records[0].data.departId); + } + } + } +}); +supplyRoomStore.load(); + +var myMask; +Ext.onReady(function() { + Ext.QuickTips.init(); + + function reloadReport(){ + var monthSearch= $Id('monthSearch').value; + var querySupplyRoom = Ext.getCmp('querySupplyRoom').getValue(); + myMask = new Ext.LoadMask(Ext.getBody(), { + msg: '正在加载,请稍候!', + removeMask: true + }); + myMask.show(); + window.open(WWWROOT + "/jasperreports/jasperreportsAction!createReportFromJavaBeanSource.do?jasperreportName=materialTypeWorkloadReport.jasper&month="+monthSearch+"&querySupplyRoom="+querySupplyRoom+"&reportName=materialTypeWorkloadReport",'thisIframe','_self'); + } + + var sign = true; + var dwrCallParams = null; + + var tbar = [{ + text : '导出Excel', + iconCls : 'btn_ext_refresh', + id : 'editTbar', + handler : function() { + var month = Ext.getCmp('monthSearch').getRawValue(); + location.href=WWWROOT + "/disinfectsystem/reportforms/departmentMonthlyExport.jsp?month="+month+"&reportType=科室月报明细"; + } + } ]; + + 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', + 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', + height : 40, + labelWidth : 60, + items : [{ + width : 180, + layout : 'form', + labelWidth : 60, + items : [new Ext.form.DateField({ + id:'monthSearch', + name : 'monthSearch', + fieldLabel : '年月', + readOnly : true, + format:'Y-m', + value : new Date(), + anchor : '95%', + listeners : { + specialkey : function(field, ee) { + if (ee.getKey() == Ext.EventObject.ENTER) { + initQueryValueAndReload(); + } + } + } + })] + },{ + columnWidth : .4, + layout : 'form', + labelWidth : 50, + items : [{ + width : 250, + layout : 'form', + labelWidth : 70, + labelSeparator : '选择供应室:', + items : [{ + xtype : 'combo', + id : 'querySupplyRoom', + name : 'querySupplyRoom', + valueField : 'departId', + displayField : 'name', + allowBlank : true, + editable : false, + store : supplyRoomStore, + forceSelection : true, + mode : 'local', + triggerAction : 'all', + anchor : '95%' + }] + }] + + }] + }], + buttons:[{ + text : '查询', + minWidth : 70, + iconCls : 'icon_search', + handler : function() { + reloadReport(); + } + },{ + text : '重置', + minWidth : 70, + iconCls : 'icon_set', + handler : function() { + $Id('startTime').value = ""; + $Id('endTime').value = ""; + $Id('querySupplyRoom').value = ""; + } + }] + }); + + var reportForm = new Ext.Panel({ + frame:false,//渲染面板 + autoScroll:true,//自动显示滚动条 + collapsible:true,//允许展开和收缩 + bodyPadding:5, + html:'' + }); + + var viewport = new Ext.Viewport({ + layout : 'border', + items : [form, { + id:'reportPanel', + 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/MaterialTypeWorkloadReport.java =================================================================== diff -u --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/MaterialTypeWorkloadReport.java (revision 0) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/MaterialTypeWorkloadReport.java (revision 13786) @@ -0,0 +1,65 @@ +package com.forgon.disinfectsystem.jasperreports.javabeansource; + +public class MaterialTypeWorkloadReport { + + private Integer rowNum;//行序号 + + private Integer columnNum;//列序号 + + private String dayOfMonth;//年月日 + + private String materialType;//材料类别 + + private Integer amount;//数量 + + private Integer washUnqualifiedAmount = 0;//清洗不合数 + + public Integer getRowNum() { + return rowNum; + } + + public void setRowNum(Integer rowNum) { + this.rowNum = rowNum; + } + + public Integer getColumnNum() { + return columnNum; + } + + public void setColumnNum(Integer columnNum) { + this.columnNum = columnNum; + } + + public String getDayOfMonth() { + return dayOfMonth; + } + + public void setDayOfMonth(String dayOfMonth) { + this.dayOfMonth = dayOfMonth; + } + + public String getMaterialType() { + return materialType; + } + + public void setMaterialType(String materialType) { + this.materialType = materialType; + } + + public Integer getAmount() { + return amount; + } + + public void setAmount(Integer amount) { + this.amount = amount; + } + + public Integer getWashUnqualifiedAmount() { + return washUnqualifiedAmount; + } + + public void setWashUnqualifiedAmount(Integer washUnqualifiedAmount) { + this.washUnqualifiedAmount = washUnqualifiedAmount; + } + +} Index: ssts-web/src/main/webapp/disinfectsystem/reportforms/materialTypeWorkloadReportView.jsp =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/reportforms/materialTypeWorkloadReportView.jsp (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/reportforms/materialTypeWorkloadReportView.jsp (revision 13786) @@ -0,0 +1,37 @@ +<%@page import="com.forgon.disinfectsystem.entity.basedatamanager.reportoption.GoodsOption"%> +<%@ 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-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r13732 -r13786 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 13732) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 13786) @@ -1,12 +1,10 @@ package com.forgon.disinfectsystem.jasperreports.service; import java.io.File; -import java.io.OutputStream; import java.math.BigDecimal; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; -import java.sql.Statement; import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -24,9 +22,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import java.util.stream.Stream; -import net.sf.ehcache.search.Results; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; @@ -65,7 +61,6 @@ import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; -import com.forgon.disinfectsystem.entity.basedatamanager.warehouse.WareHouse; import com.forgon.disinfectsystem.entity.devicemaintenance.DeviceMaintenance; import com.forgon.disinfectsystem.entity.devicemonitoring.DeviceMonitoring; import com.forgon.disinfectsystem.entity.disposablegoods.DisposableGoodsInventory; @@ -75,17 +70,12 @@ import com.forgon.disinfectsystem.entity.invoicemanager.InvoiceItem; import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; import com.forgon.disinfectsystem.entity.invoicemanager.MaterialItem; -import com.forgon.disinfectsystem.entity.materialmanager.MaterialCheck; -import com.forgon.disinfectsystem.entity.materialmanager.MaterialCheckRecord; import com.forgon.disinfectsystem.entity.materialmanager.MaterialEntry; import com.forgon.disinfectsystem.entity.materialmanager.MaterialEntryItem; import com.forgon.disinfectsystem.entity.packing.PackingRecord; import com.forgon.disinfectsystem.entity.receiverecord.ReceiveRecord; import com.forgon.disinfectsystem.entity.receiverecord.ReceiveRecordItem; import com.forgon.disinfectsystem.entity.recyclingapplication.RecyclingApplication; -import com.forgon.disinfectsystem.entity.recyclingdamagerecord.RecyclingDamageItem; -import com.forgon.disinfectsystem.entity.recyclingdamagerecord.RecyclingDamageRecord; -import com.forgon.disinfectsystem.entity.recyclingerror.RecyclingError; import com.forgon.disinfectsystem.entity.recyclingrecord.RecyclingRecord; import com.forgon.disinfectsystem.entity.returngoodsrecord.ReturnGoodsItem; import com.forgon.disinfectsystem.entity.returngoodsrecord.ReturnGoodsRecord; @@ -119,6 +109,7 @@ import com.forgon.disinfectsystem.jasperreports.javabeansource.InvoiceAmountContrastBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.InvoiceQuery; import com.forgon.disinfectsystem.jasperreports.javabeansource.InvoiceQueryItem; +import com.forgon.disinfectsystem.jasperreports.javabeansource.MaterialTypeWorkloadReport; import com.forgon.disinfectsystem.jasperreports.javabeansource.MaterialWashUnqualified; import com.forgon.disinfectsystem.jasperreports.javabeansource.MaterialWashUnqualifiedContrast; import com.forgon.disinfectsystem.jasperreports.javabeansource.MaterialWashUnqualifiedPosition; @@ -165,8 +156,6 @@ import com.forgon.tools.db.InitDbConnection; import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.string.StringTools; -import com.forgon.tools.util.BaseUtils; -import com.forgon.tools.util.SqlUtils; /** * @author wangyi 2012-08-15 上午12:04 报表服务类 @@ -8381,5 +8370,98 @@ public List getGoodsBySql(String sql){ return objectDao.findBySql(StockDiposableGoods.class.getSimpleName(), sql); } + + public List findMaterialTypeWorkloadReportList(String month,String querySupplyRoom){ + + month = month + "-01"; + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date statDate = null; + try { + statDate = sdf.parse(month); + } catch (ParseException e) { + e.printStackTrace(); + } + Calendar calendar = Calendar.getInstance(); + calendar.setTime(statDate); + calendar.add(Calendar.MONTH, 1); + Date endDate = calendar.getTime(); + List list = new ArrayList(); + while(endDate.after(statDate)){ + String startDateStr = sdf.format(statDate); + calendar.setTime(statDate); + calendar.add(Calendar.DAY_OF_MONTH, 1); + statDate = calendar.getTime(); + String endDateStr = sdf.format(statDate); + materialTypeWorkloadReportList(startDateStr,endDateStr,querySupplyRoom,list); + } + return list; + } + + /** + * 获取每日清洗数据 + * @param statDate + * @param endDate + * @return + */ + private void materialTypeWorkloadReportList(String statDate,String endDate,String querySupplyRoom,List list){ + + String sql = "select m.type as type,(min(i.amount)*sum(ms.count)) as amount from "; + sql += "washanddisinfectrecord r,ClassifyBasket_WashRecord cw,ClassifyBasket b,ClassifiedItem i,"; + sql += "TousseDefinition t,materialinstance ms,materialdefinition m "; + sql += "where r.id = cw.washanddisinfectrecord_id and cw.classifybasket_id = b.id and "; + sql += "b.id = i.classifybasket_id and i.toussedefinition_id = t.id and t.id = ms.tousse_id and ms.materialdefinition_id = m.id "; + sql += "and r.enddate between " + dateQueryAdapter.dateConverAdapter2(statDate,"yyyy-mm-dd") + " and "; + sql += dateQueryAdapter.dateConverAdapter2(endDate,"yyyy-mm-dd")+ " and r.orgUnitCoding = '" + querySupplyRoom + "' group by i.id,m.type "; + + sql += " union all "; + + sql += "select m.type as type,sum(i.amount) as amount from "; + sql += "washanddisinfectrecord r ,ClassifyBasket_WashRecord cw ,ClassifyBasket b, ClassifiedItem i,materialdefinition "; + sql += "m where r.id = cw.washanddisinfectrecord_id and cw.classifybasket_id = b.id and b.id = i.classifybasket_id and "; + sql += "i.materialdefinition_id = m.id and r.enddate between " + dateQueryAdapter.dateConverAdapter2(statDate,"yyyy-mm-dd") + " and "; + sql += dateQueryAdapter.dateConverAdapter2(endDate,"yyyy-mm-dd") + " and r.orgUnitCoding = '" + querySupplyRoom + "' group by m.type"; + + sql += " union all "; + + sql += "select '不合格数',sum(qu.amount)as amount from QualityMonitoring qu where qu.inspectitem in "; + sql += "(select qm.name from qualitymonitoringConfig qm where qm.departcodes like '%"+querySupplyRoom+"%'"; + sql += " and qm.responsibilitypart = '清洗消毒' and qm.type = '质量监测')"; + sql += " and qu.datetime between "+dateQueryAdapter.dateConverAdapter2(statDate,"yyyy-mm-dd"); + sql += " and "+dateQueryAdapter.dateConverAdapter2(endDate,"yyyy-mm-dd"); + sql += " and qu.orgUnitCoding = '"+querySupplyRoom+"'"; + + Integer totalAmount = 0; + + ResultSet rs = objectDao.executeSql(sql); + try { + while(rs.next()){ + MaterialTypeWorkloadReport data = new MaterialTypeWorkloadReport(); + data.setAmount(rs.getInt(2)); + if("不合格数".equals(rs.getString(1))){ + data.setColumnNum(3); + }else{ + data.setColumnNum(1); + } + data.setDayOfMonth(statDate); + data.setMaterialType(rs.getString(1)); + list.add(data); + if(!"不合格数".equals(data.getMaterialType())){ + totalAmount += data.getAmount(); + } + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + //日合计 + MaterialTypeWorkloadReport data = new MaterialTypeWorkloadReport(); + data.setAmount(totalAmount); + data.setColumnNum(2); + data.setDayOfMonth(statDate); + data.setMaterialType("合计"); + list.add(data); + } } Index: ssts-web/src/main/webapp/jasperRtp/materialTypeWorkloadReport.jasper =================================================================== diff -u Binary files differ Index: ssts-web/src/main/webapp/jasperRtp/materialTypeWorkloadReport.jrxml =================================================================== diff -u --- ssts-web/src/main/webapp/jasperRtp/materialTypeWorkloadReport.jrxml (revision 0) +++ ssts-web/src/main/webapp/jasperRtp/materialTypeWorkloadReport.jrxml (revision 13786) @@ -0,0 +1,221 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <band height="30" splitType="Stretch"> + <textField> + <reportElement uuid="11ae082d-b215-43b4-aeaa-684ca09252d2" x="0" y="0" width="595" height="30"/> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font size="14" isBold="true"/> + </textElement> + <textFieldExpression><![CDATA[$P{title}]]></textFieldExpression> + </textField> + </band> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: ssts-web/src/main/webapp/homepage/menuconfigure.js =================================================================== diff -u -r13695 -r13786 --- ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 13695) +++ ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 13786) @@ -388,6 +388,7 @@ {hidden :SSTS_WorkQualityCountReport,text:"工作质量持续收集统计报表",href:WWWROOT+'/disinfectsystem/reportforms/workQualityCollectionView.jsp',hrefTarget:linkTarget,leaf:true}, // {hidden :SSTS_WorkQualityCountReport,text:"工作质量持续收集饼状图统计报表",href:WWWROOT+'/disinfectsystem/reportforms/workQualityCollectionPicChartView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_WashWorkloadReport,text:"清洗区工作量及不合格率月报",href:WWWROOT+'/disinfectsystem/reportforms/washWorkloadReportView.jsp',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_WashWorkloadReport,text:"清洗区材料类型工作量统计报表",href:WWWROOT+'/disinfectsystem/reportforms/materialTypeWorkloadReportView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_PackingUnqualifieReport,text:"包装区工作量及不合格率月报",href:WWWROOT+'/disinfectsystem/reportforms/packingUnqualifieReportView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_SterilizationWorkloadReport,text:"灭菌区工作量及不合格率月报",href:WWWROOT+'/disinfectsystem/reportforms/sterilizationWorkloadReportView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_DeviceMaintenanceReport,text:"设备维护报表",href:WWWROOT+'/disinfectsystem/reportforms/deviceMaintenanceView.jsp',hrefTarget:linkTarget,leaf:true},