Index: ssts-web/src/main/webapp/disinfectsystem/config/zsly/config.js =================================================================== diff -u -r16746 -r19412 --- ssts-web/src/main/webapp/disinfectsystem/config/zsly/config.js (.../config.js) (revision 16746) +++ ssts-web/src/main/webapp/disinfectsystem/config/zsly/config.js (.../config.js) (revision 19412) @@ -44,6 +44,8 @@ enableTousseDefinitionIsPecPackConfig : true, allowApplyDisposableGoodsWhenUnderstock: false,// 一次性物品库存不足时,是否允许申领 //是否隐藏一次性物品退库单列表添加功能按钮(无此配置项或配置的值不为true(一般为false)时才显示添加退库单功能,为true时则隐藏该按钮) - hiddenGodownOutAddButton:true + hiddenGodownOutAddButton:true, + // 年度消毒中心指标工作量统计的改进,增加腔镜和下收下送的统计 + isYearWorkloadReportAddEndoscopic : true } \ No newline at end of file Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java =================================================================== diff -u -r19395 -r19412 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 19395) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 19412) @@ -580,10 +580,16 @@ if (StringUtils.isBlank(year)) { year = new SimpleDateFormat("yyyy").format(new Date()); } + // 是否添加腔镜器械,下收下送次数统计 + String addEndoscopic = StrutsParamUtils.getPraramValue("addEndoscopic", ""); + boolean isAddEndoscopic = false; + if(StringUtils.equals("true", addEndoscopic)){ + isAddEndoscopic = true; + } if("true".equals(isSpecial)){ return jasperReportManager.getYearWorkloadReportSpecial(year,departCoding); }else{ - return jasperReportManager.getYearWorkloadReport(year,departCoding); + return jasperReportManager.getYearWorkloadReport(year,departCoding,isAddEndoscopic); } } else if (reportName.equals("statisticalWorkload")) { String startTime = StrutsParamUtils.getPraramValue("startTime", ""); Index: ssts-web/src/main/webapp/disinfectsystem/reportforms/yearWorkloadReportView2.js =================================================================== diff -u -r16996 -r19412 --- ssts-web/src/main/webapp/disinfectsystem/reportforms/yearWorkloadReportView2.js (.../yearWorkloadReportView2.js) (revision 16996) +++ ssts-web/src/main/webapp/disinfectsystem/reportforms/yearWorkloadReportView2.js (.../yearWorkloadReportView2.js) (revision 19412) @@ -48,7 +48,11 @@ if(sstsConfig.hasOwnProperty('isYearWorkloadReportSpecial') && sstsConfig.isYearWorkloadReportSpecial){ isSpecial = true; } - window.open(WWWROOT + "/jasperreports/jasperreportsAction!createReportFromJavaBeanSource.do?departCoding="+departCoding+"&jasperreportName=yearWorkloadReport2.jasper&year="+monthSearch+"&reportName=yearWorkloadReport2"+"&isSpecial="+isSpecial,'thisIframe','_self'); + var addEndoscopic = false; + if(sstsConfig.isYearWorkloadReportAddEndoscopic == true){ + addEndoscopic = true; + } + window.open(WWWROOT + "/jasperreports/jasperreportsAction!createReportFromJavaBeanSource.do?departCoding="+departCoding+"&jasperreportName=yearWorkloadReport2.jasper&year="+monthSearch+"&reportName=yearWorkloadReport2"+"&isSpecial="+isSpecial+"&addEndoscopic="+addEndoscopic,'thisIframe','_self'); } var form = new Ext.form.FormPanel({ title : entityName, Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r19385 -r19412 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 19385) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 19412) @@ -8544,9 +8544,13 @@ } return totalAmount; } - + /** + * @param year 查询年份 + * @param querySupplyRoom 查询供应室 + * @param isAddEndoscopic 是否添加腔镜器械,下收下送次数统计 + */ @Override - public List getYearWorkloadReport(String year,String querySupplyRoom) { + public List getYearWorkloadReport(String year,String querySupplyRoom,boolean isAddEndoscopic) { List sterilerGroupList = httpOptionManager.getHttpOptionListById("sterilerGroup"); @@ -8564,6 +8568,8 @@ } Map map = new HashMap(); + SimpleDateFormat dateFormat = new SimpleDateFormat( + "yyyy-MM-dd hh:mm:ss"); for (int i = 1; i <= 12; i++) { String monthFormart = i + ""; @@ -8572,6 +8578,15 @@ } String startDay = year + "-" + i + "-01 00:00:00"; String endDay = year + "-" + (i + 1) + "-01 00:00:00"; + Date startDate = null; + Date endDate = null; + try{ + startDate = dateFormat.parse(startDay); + endDate = dateFormat.parse(endDay); + }catch(Exception e){ + e.printStackTrace(); + } + if (i == 12) { endDay = (Integer.parseInt(year) + 1) + "-01-01 00:00:00"; } @@ -8683,9 +8698,100 @@ String columnName6 = "器械包发放数量"; YearWorkloadBean bean6 = new YearWorkloadBean(i,month, 6, columnName6, amount6); list.add(bean6); + if(isAddEndoscopic == true){ + String sql7 = " select sum(tdc.amount) from Invoice i,TousseInstance ti,TousseDefinition td,(select td.name tdName, sum(mi.count) amount from MaterialInstance mi,MaterialDefinition md, tousseDefinition td " + + " where mi.materialDefinition_id=md.id and mi.tousse_id=td.id and td.forDisplay=1 and md.type like '%腔镜%' group by td.name) tdc " + + " where i.id=ti.invoice_id and ti.tousseDefinition_id=td.id " + + " and tdc.tdName = td.name " + + " and i.sendTime between " + startDay +" and "+endDay; + + ResultSet rs7 = objectDao.executeSql(sql7); + Integer amount7 = 0; + if (rs7 != null) { + try { + while (rs7.next()) { + amount7 = rs7.getInt(1); + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs7); + } + } + String columnName7 = "处理腔镜器械总件数"; + YearWorkloadBean bean7 = new YearWorkloadBean(i,month, 7, columnName7, amount7); + list.add(bean7); + String key7 = ("7#@" + columnName7); + setColumnTotalAmount(map,key7,amount7); + + String departs = ""; + GoodsOption goodsOption = goodsOptionManager.getGoodsOption(GoodsOption.MODEL_SURGICALINSTRUMENTS_DEPT, null); + if (goodsOption != null) { + String value = goodsOption.getValue(); + if(StringUtils.isNotBlank(value)){ + String[] nameArray = value.split(";"); + for (int j = 0; j < nameArray.length; j++) { + String name = nameArray[j]; + if(StringUtils.isNotBlank(departs)){ + departs += ","; + } + departs += "'" + name + "'"; + } + } + } + if(StringUtils.isBlank(departs)){ + departs = "''"; + } + String sql8 = " select count(*) from RecyclingRecord rr " + + " where rr.depart in ("+ departs + ")" + + " and rr.recyclingTime between " + startDay + " and " + endDay; + ResultSet rs8 = objectDao.executeSql(sql8); + Integer amount8 = 0; + if (rs8 != null) { + try { + while (rs8.next()) { + amount8 = rs8.getInt(1); + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs8); + } + } + Integer clinicAmount = 0; + if(startDate != null && endDate != null){ + Date nowDate = new Date(); + if(nowDate.after(endDate)){ + // 当前时间在结束时间之后,获取改月的天数 + clinicAmount = getMaxDayByYearMonth(Integer.parseInt(year),i); + }else{ + if(nowDate.after(startDate)){ + Calendar nowCalendar = Calendar.getInstance(); + Calendar startCalendar = Calendar.getInstance(); + nowCalendar.setTime(nowDate); + startCalendar.setTime(startDate); + // 当前时间在开始时间和结束时间之间 去现在时间和开始时间差的天数 + clinicAmount = nowCalendar.get(Calendar.DAY_OF_YEAR) - startCalendar.get(Calendar.DAY_OF_YEAR); + } + } + } + + String columnName8 = "下收下送次数"; + YearWorkloadBean bean8 = new YearWorkloadBean(i,month, 8, columnName8, amount8 + clinicAmount*4); + list.add(bean8); + String key8 = ("8#@" + columnName8); + setColumnTotalAmount(map,key8,amount8 + clinicAmount*4); + } } return list; } + private void setColumnTotalAmount(Map map,String key,Integer amount){ + Integer t_amount = map.get(key); + if(t_amount == null){ + t_amount = 0; + } + map.put(key, t_amount + amount); + } /** * 获取年度消毒供应中心指标工作量统计报表数据,东莞市中医院项目特殊的定制 * @param year 查询的年份 @@ -17436,4 +17542,10 @@ beanList = Arrays.asList(beanMap.values().toArray()); return beanList; } + private int getMaxDayByYearMonth(int year, int month) { + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.YEAR, year - 1); + calendar.set(Calendar.MONTH, month-1); + return calendar.getActualMaximum(Calendar.DATE); + } } Index: ssts-web/src/main/webapp/jasperRtp/yearWorkloadReport2.jasper =================================================================== diff -u -r19148 -r19412 Binary files differ Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java =================================================================== diff -u -r19224 -r19412 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java (.../JasperReportManager.java) (revision 19224) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java (.../JasperReportManager.java) (revision 19412) @@ -92,9 +92,13 @@ */ public List getStatisticalWorkloadData(String startTime, String endTime, String querySupplyRoom, boolean isStrengthen); - - public List getYearWorkloadReport(String year, String querySupplyRoom); /** + * @param year 查询年份 + * @param querySupplyRoom 查询供应室 + * @param isAddEndoscopic 是否添加腔镜器械,下收下送次数统计 + */ + public List getYearWorkloadReport(String year, String querySupplyRoom,boolean isAddEndoscopic); + /** * 获取年度消毒供应中心指标工作量统计报表数据,东莞市中医院项目特殊的定制 * @param year 查询的年份 * @param querySupplyRoom 查询的供应室 Index: ssts-web/src/main/webapp/jasperRtp/yearWorkloadReport2.jrxml =================================================================== diff -u -r19148 -r19412 --- ssts-web/src/main/webapp/jasperRtp/yearWorkloadReport2.jrxml (.../yearWorkloadReport2.jrxml) (revision 19148) +++ ssts-web/src/main/webapp/jasperRtp/yearWorkloadReport2.jrxml (.../yearWorkloadReport2.jrxml) (revision 19412) @@ -1,5 +1,5 @@ - + @@ -65,9 +65,9 @@ - + - + @@ -95,20 +95,6 @@ - - - - - - - - - - - - - - @@ -178,12 +164,6 @@ - - - - - - @@ -198,25 +178,11 @@ - + - - - - - - - - - - - - - -