Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java =================================================================== diff -u -r25920 -r26066 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java (.../JasperReportManager.java) (revision 25920) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java (.../JasperReportManager.java) (revision 26066) @@ -59,7 +59,6 @@ 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.SummaryUseRecordForGoodsVO; import com.forgon.disinfectsystem.jasperreports.javabeansource.SupplyRoomQualityQuota; import com.forgon.disinfectsystem.jasperreports.javabeansource.TousseApplyDepartment; import com.forgon.disinfectsystem.jasperreports.javabeansource.TousseApplySummary; @@ -77,11 +76,9 @@ import com.forgon.disinfectsystem.jasperreports.javabeansource.WaitPackingTaskReportBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.WashAndDisinfectRecordItemBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.WashFractionDefectiveChartBean; -import com.forgon.disinfectsystem.jasperreports.javabeansource.WorkQualityCollection; import com.forgon.disinfectsystem.jasperreports.javabeansource.YearReportChartBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.YearWorkLoadReportBean; import com.forgon.disinfectsystem.vo.SupplyRoomMaterialStocktaking; -import com.forgon.tools.StrutsParamUtils; /** * @author wangyi 2012-08-15 上午12:04 @@ -633,6 +630,16 @@ */ public List getNurseWorkloadData(Map params); /** + * 获取“使用记录录入统计报表”的数据 之 第二版 对第一版进行了优化 + * @param departmentName 科室名称 + * @param operator 录入人名字 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return + */ + public List getUseRecordDataSource2(String departmentName, String operator, + String startTime, String endTime); + /** * 获取“使用记录录入统计报表”的数据 * @param departmentName 科室名称 * @param operator 录入人名字 @@ -642,7 +649,6 @@ */ public List getUseRecordDataSource(String departmentName, String operator, String startTime, String endTime); - /** * 获取手术排班报表(明细)报表的数据 * @param startTime 开始时间格式如:2017-01-01 00:00 Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r26012 -r26066 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 26012) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 26066) @@ -6267,6 +6267,96 @@ } @Override + public List getUseRecordDataSource2(String departmentName, String operator, + String startTime, String endTime){ + List list = new LinkedList(); + List itemBeans = new ArrayList(); + Map> map = new HashMap>(); + ResultSet rs = null; + try { + boolean queryExpensiveGoods = CssdUtils.getSystemSetConfigByNameBool("enableExpensiveGoods", false); + String sql = buildSqlToGetUseRecordDataSource(departmentName, operator, startTime, endTime, queryExpensiveGoods); + rs = objectDao.executeSql(sql); + while (rs.next()) { + String depart = rs.getString("depart"); //录入部门 + List itemBeanList = null; + if(map.containsKey(depart)){ + itemBeanList = map.get(depart); + }else{ + itemBeanList = new ArrayList(); + map.put(depart, itemBeanList); + } + UseRecordItemBean itemBean = new UseRecordItemBean(); + String operatorRs = rs.getString("operator"); //录入人 + int amount = rs.getInt("amount"); //录入的使用记录条数 + int tousseAmount = rs.getInt("tousseAmount"); + int disposableGoodsAmount = rs.getInt("disposableGoodsAmount"); + itemBean.setUserName(operatorRs); + itemBean.setRecordAmount(amount); + itemBean.setTousseAmount(tousseAmount); + itemBean.setDisposableGoodsAmount(disposableGoodsAmount); + //新的高值耗材 + if (queryExpensiveGoods) { + int expensiveGoodsAmount = rs.getInt("expensiveGoodsAmount"); + itemBean.setExpensiveGoodsAmount(expensiveGoodsAmount); + } + itemBeanList.add(itemBean); + } + for (String depart : map.keySet()){ + UseRecordBean recordBean = new UseRecordBean(); + recordBean.setDepart(depart); + recordBean.setItems(map.get(depart)); + list.add(recordBean); + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + return list; + } + /** + * 构建获取使用记录数据的sql语句 + * @param departmentName 部门名字 + * @param operator 录入人 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @param queryExpensiveGoods 是否查询高值耗材 + * @return 获取使用记录数据的sql语句 + */ + private String buildSqlToGetUseRecordDataSource(String departmentName, String operator, + String startTime, String endTime, boolean queryExpensiveGoods){ + if ("全部".equals(departmentName)) { + departmentName = ""; + } + String departSql = ""; + if(StringUtils.isNotBlank(departmentName)){ + departSql = String.format(" and u.depart = '%s' ", departmentName); + } + String operatorSql = ""; + if(StringUtils.isNotBlank(operator)){ + operatorSql = String.format(" and u.operator = '%s' ", operator); + } + String outsideQueryExpensiveGoodsAmount = ""; + String insidequeryExpensiveGoodsAmount = ""; + if (queryExpensiveGoods) { + outsideQueryExpensiveGoodsAmount = " ,sum(expensiveGoodsAmount) expensiveGoodsAmount "; + insidequeryExpensiveGoodsAmount = " (select count(0) from ExpensiveGoodsInstance egi where egi.userecordId=u.id) expensiveGoodsAmount,"; + } + String sql = String.format("select u1.operator,u1.depart,sum(useRecordAmount) amount,sum(tousseAmount) tousseAmount,sum(disposableGoodsAmount) disposableGoodsAmount " + + " %s from ( select u.operator,u.depart,u.enteringDate,1 useRecordAmount,u.hospitalNum," + + "(select count(0) from TousseInstance ti where ti.useRecord_id=u.id) tousseAmount," + + "(select sum(amount) from UseDiposableGoodsItem ugi where ugi.userecord_id=u.id) disposableGoodsAmount " + + "%s from userecord u " + + "where u.enteringDate between %s and %s %s %s " + + ") u1 group by u1.operator,u1.depart", + outsideQueryExpensiveGoodsAmount, + insidequeryExpensiveGoodsAmount, + dateQueryAdapter.dateAdapter(startTime), + dateQueryAdapter.dateAdapter(endTime), + departSql,operatorSql); + return sql; + } public List getUseRecordDataSource(String departmentName, String operator, String startTime, String endTime){ List list = new LinkedList(); Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java =================================================================== diff -u -r25920 -r26066 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 25920) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 26066) @@ -1021,7 +1021,7 @@ String operator = StrutsParamUtils.getPraramValue("operator", ""); String startTime = StrutsParamUtils.getPraramValue("startDay", null); String endTime = StrutsParamUtils.getPraramValue("endDay", null); - return jasperReportManager.getUseRecordDataSource(departmentName, operator, startTime, endTime); + return jasperReportManager.getUseRecordDataSource2(departmentName, operator, startTime, endTime); }else if (reportName.equals("useRecordItemView")) {//使用记录录入明细报表 return jasperReportManager.getUseRecordItemDataSource(requestParameters); }else if (reportName.equals("useRecordOperatorTotalView")) {//使用记录人员汇总报表