Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/reportforms/service/ReportManager.java =================================================================== diff -u -r22374 -r26433 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/reportforms/service/ReportManager.java (.../ReportManager.java) (revision 22374) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/reportforms/service/ReportManager.java (.../ReportManager.java) (revision 26433) @@ -1,13 +1,10 @@ package com.forgon.disinfectsystem.reportforms.service; -import java.util.ArrayList; import java.util.List; import java.util.Map; -import org.apache.commons.lang.StringUtils; +import net.sf.json.JSONObject; -import com.forgon.disinfectsystem.entity.basedatamanager.reportoption.GoodsOption; - /** * 报表manager类 * @author shuyongfu @@ -42,5 +39,15 @@ * @return 外层的map的key为具体结果的日期,内层map的key的指标项名称(英文),内层map的value为指标项的值 */ public Map> countCssdWorkloadQuota(String querySql , String ... columnName); - + /** + * 获取灭菌炉使用次数统计报表数据 + * @param reportType 查询类型 + * @param departCoding 供应商编码 + * @param sterilizationPurpose 灭菌目的 + * @param dateStr 时间 + * @param sterilizerId 灭菌炉id + * @return + */ + public JSONObject getSterilizingStoveUseCountData(String queryType, String departCoding,String sterilizationPurpose, + String dateStr, Long sterilizerId); } Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/reportforms/service/ReportManagerImpl.java =================================================================== diff -u -r22400 -r26433 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/reportforms/service/ReportManagerImpl.java (.../ReportManagerImpl.java) (revision 22400) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/reportforms/service/ReportManagerImpl.java (.../ReportManagerImpl.java) (revision 26433) @@ -1,12 +1,16 @@ package com.forgon.disinfectsystem.reportforms.service; import java.sql.ResultSet; +import java.sql.SQLException; +import java.text.ParseException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.TreeMap; +import net.sf.json.JSONObject; + import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; @@ -17,6 +21,7 @@ import com.forgon.disinfectsystem.entity.basedatamanager.reportoption.GoodsOption; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecord; +import com.forgon.disinfectsystem.jasperreports.service.dataindex.DataIndex; import com.forgon.disinfectsystem.reportforms.constant.ReportConstant; import com.forgon.disinfectsystem.reportforms.util.MapKeyComparator; import com.forgon.systemsetting.service.HttpOptionManager; @@ -330,5 +335,149 @@ } } } - + @Override + public JSONObject getSterilizingStoveUseCountData(String queryType, String departCoding,String sterilizationPurpose, + String dateStr, Long sterilizerId){ + JSONObject resultObj = new JSONObject(); + if("listChart".equals(queryType)){//图形 + resultObj = getListChartData(departCoding, sterilizationPurpose, dateStr); + }else if("allYearChart".equals(queryType)){//图形对比(全年) + resultObj = getAllYearChartData(departCoding, sterilizationPurpose, dateStr, sterilizerId); + } + return resultObj; + } + /** + * 获取灭菌炉使用次数统计报表之图形数据 + * @param departCoding 供应室编码 + * @param sterilizationPurpose 灭菌目的 + * @param yearAndMonth 年月 + * @return JSONObject + */ + public JSONObject getListChartData(String departCoding,String sterilizationPurpose, + String yearAndMonth){ + JSONObject resultObj = new JSONObject(); + try { + String sql = createSqlOfListChartData(departCoding, sterilizationPurpose, yearAndMonth); + ResultSet resultSet = objectDao.executeSql(sql); + List names = new ArrayList(); + List amounts = new ArrayList(); + while(resultSet.next()){ + Long amount = resultSet.getLong("amount"); + String name = resultSet.getString("name"); + names.add(name); + amounts.add(amount); + } + JSONObject obj = new JSONObject(); + obj.put("name", names); + obj.put("amounts", amounts); + resultObj.put("data", obj); + resultObj.put("success", true); + } catch (Exception e) { + resultObj.put("success", false); + e.printStackTrace(); + } + return resultObj; + } + /** + * 创建获取灭菌炉使用次数统计报表之图形数据的sql + * @param departCoding 供应室编码 + * @param sterilizationPurpose 灭菌目的 + * @param yearAndMonth 年月 + * @return sql + * @throws ParseException + */ + public String createSqlOfListChartData(String departCoding,String sterilizationPurpose, + String yearAndMonth){ + String startTime = ""; + String endTime = ""; + if(StringUtils.isNotBlank(yearAndMonth)){ + startTime = yearAndMonth+ "-01 00:00:00"; + try { + endTime = DataIndex.getLastDayOfMonth(yearAndMonth) + " 23:59:59"; + } catch (ParseException e) { + e.printStackTrace(); + } + } + String sqlOfSterilizationPurpose = ""; + if(StringUtils.isNotBlank(sterilizationPurpose) && !"全部".equals(sterilizationPurpose)){ + sqlOfSterilizationPurpose = " and sr.sterilizationPurpose = '" + sterilizationPurpose + "' "; + } + String sql = "select count(*) amount,s.name from SterilizationRecord sr,Sterilizer s " + + " where sr.sterilizer_id = s.id and s.orgUnitCoding = '"+ departCoding +"'" + + sqlOfSterilizationPurpose + + " and sr.endDate between " + dateQueryAdapter.dateConverAdapter2(startTime, "yyyy-mm-dd HH24:MI") + + " and "+dateQueryAdapter.dateConverAdapter2(endTime, "yyyy-mm-dd HH24:MI") + + " group by s.name"; + return sql; + } + /** + * 获取灭菌炉使用次数统计报表之图形对比(全年)数据 + * @param departCoding 供应室编码 + * @param sterilizationPurpose 灭菌目的 + * @param year 年份 + * @param sterilizerId 灭菌炉id + * @return JSONObject + */ + public JSONObject getAllYearChartData(String departCoding,String sterilizationPurpose, + String year, Long sterilizerId){ + JSONObject resultObj = new JSONObject(); + String sql = createSqlOfAllYearChartData(departCoding, sterilizationPurpose, year, sterilizerId); + ResultSet resultSet = objectDao.executeSql(sql); + try { + List amountList = new ArrayList(); + Map mapOfmonthAmount = new HashMap(); + while(resultSet.next()){ + int month = resultSet.getInt("month"); + Long amount = resultSet.getLong("amount"); + mapOfmonthAmount.put(month, amount); + } + for (int i = 1; i <= 12; i++) { + if(mapOfmonthAmount.containsKey(i)){ + amountList.add(mapOfmonthAmount.get(i)); + }else{ + amountList.add(null); + } + } + resultObj.put("data", amountList); + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(resultSet); + } + return resultObj; + } + /** + * 构建查询灭菌炉使用次数统计报表之图形对比(全年)数据的sql + * @param departCoding 供应室编码 + * @param sterilizationPurpose 灭菌目的 + * @param year 年份 + * @param sterilizerId 灭菌炉id + * @return sql + */ + public String createSqlOfAllYearChartData(String departCoding,String sterilizationPurpose, + String year, Long sterilizerId){ + String startTime = ""; + String endTime = ""; + if(StringUtils.isNotBlank(year)){ + startTime = year+ "-01-01 00:00:00"; + endTime = DataIndex.getNextYear(year) + " 00:00:00"; + } + String sqlOfSterilizationPurpose = ""; + if(StringUtils.isNotBlank(sterilizationPurpose) && !"全部".equals(sterilizationPurpose)){ + sqlOfSterilizationPurpose = " and sr.sterilizationPurpose = '" + sterilizationPurpose + "' "; + } + String monthStr = dateQueryAdapter.dateConverAdapter3("sr.endDate","mm"); + String groupSql = " group by s.id," + monthStr; + String orderBySql = " order by " + monthStr; + String sql = "select min(s.name) name,count(*) amount,"+ monthStr +" month from SterilizationRecord sr,Sterilizer s " + +" where sr.sterilizer_id = s.id " + + " and s.id=" + sterilizerId + +" and s.orgUnitCoding = '"+departCoding+"'" + +" and sr.endDate between "+dateQueryAdapter.dateConverAdapter2( startTime + , "yyyy-mm-dd HH24:MI") + +" and "+dateQueryAdapter.dateConverAdapter2( endTime + , "yyyy-mm-dd HH24:MI") + + sqlOfSterilizationPurpose + groupSql + orderBySql; + return sql; + } } Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/reportforms/action/ReportAction.java =================================================================== diff -u -r22400 -r26433 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/reportforms/action/ReportAction.java (.../ReportAction.java) (revision 22400) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/reportforms/action/ReportAction.java (.../ReportAction.java) (revision 26433) @@ -255,5 +255,37 @@ StrutsResponseUtils.output(resultJsonObject); } } - + /** + * 获取Echarts图形数据 + */ + public void getReportDataOfEcharts(){ + JSONObject resultObject = new JSONObject(); + try { + String reportName = StrutsParamUtils.getPraramValue("reportName", ""); + resultObject = getReportDataByReportName(reportName); + resultObject.put("success", true); + } catch (Exception e) { + e.printStackTrace(); + resultObject.put("success", false); + }finally{ + StrutsResponseUtils.output(resultObject); + } + } + /** + * 根据报表名称获取报表数据 + * @param reportName 报表名 + * @return + */ + public JSONObject getReportDataByReportName(String reportName){ + JSONObject resultObj = new JSONObject(); + if("sterilizingStoveUseCount".equals(reportName)){//灭菌炉使用次数统计报表图形数据 + String queryType = StrutsParamUtils.getPraramValue("queryType", ""); + String departCoding = StrutsParamUtils.getPraramValue("departCoding", ""); + String sterilizationPurpose = StrutsParamUtils.getPraramValue("sterilizationPurpose", ""); + String dateStr = StrutsParamUtils.getPraramValue("dateStr", ""); + Long sterilizerId = StrutsParamUtils.getPraramLongValue("sterilizerId", null); + resultObj = reportManager.getSterilizingStoveUseCountData(queryType, departCoding, sterilizationPurpose, dateStr, sterilizerId); + } + return resultObj; + } }