Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/RinserStoveUseCountReportHelper.java =================================================================== diff -u --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/RinserStoveUseCountReportHelper.java (revision 0) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/RinserStoveUseCountReportHelper.java (revision 35866) @@ -0,0 +1,172 @@ +package com.forgon.disinfectsystem.jasperreports.util; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.text.DateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import com.forgon.databaseadapter.service.DateQueryAdapter; +import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washanddisinfectrecord.WashAndDisinfectRecord; +import com.forgon.disinfectsystem.jasperreports.javabeansource.RinserStove; +import com.forgon.disinfectsystem.jasperreports.javabeansource.RinserStove_child; +import com.forgon.tools.date.DateTools; +import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.hibernate.ObjectDao; +import edu.emory.mathcs.backport.java.util.Arrays; +/** + * 清洗机使用次数统计报表(图形的目前不在此处) + */ +@Component +public class RinserStoveUseCountReportHelper { + @Autowired + protected DateQueryAdapter dateQueryAdapter; + @Autowired + protected ObjectDao objectDao; + /** + * 清洗机使用次数统计报表 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @param depart 科室名称 + * @param departCoding 科室编码 + * @return + */ + public List getRinserStoveUseCountData(String startTime, + String endTime, String depart, String departCoding) { + List ssList = new ArrayList(); + RinserStove ss = new RinserStove(); + List list = new ArrayList(); + Map successMap = getSuccessDataForRinser(depart,departCoding, + startTime,endTime,WashAndDisinfectRecord.STATUS_WASHED); + Map failureMap = getSuccessDataForRinser(depart,departCoding, + startTime,endTime,WashAndDisinfectRecord.STATUS_WASHFAILD); + Iterator> iterator = successMap.entrySet().iterator(); + while(iterator.hasNext()){ + Entry next = iterator.next(); + String name = next.getKey(); + RinserStove_child ssc = next.getValue(); + if(failureMap.get(name) != null){ + ssc.setFailureCount(failureMap.get(name).getFailureCount()); + }else{ + ssc.setFailureCount(0); + } + list.add(ssc); + } + if(list.size()>0){ + ss.setDepartName(depart); + ss.setList(list); + ssList.add(ss); + } + return ssList; + } + /** + * 获取清洗机使用次数报表在一个时间段内明细的数据 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @param depart 科室名称 + * @param departCoding 科室编码 + * @return + */ + public List getRinserStoveUseCountDetailData( + String startTime, String endTime, String depart, String departCoding) { + Map keyResultMap = new HashMap(); + try{ + String sql = " SELECT disinfectIdentification,endDate from WashAndDisinfectRecord wr where wr.endDate between " + + dateQueryAdapter.dateConverAdapter2( startTime + , "yyyy-mm-dd HH24:MI") + + " and " + "" + + dateQueryAdapter.dateConverAdapter2( endTime + , "yyyy-mm-dd HH24:MI") + + " and wr.orgUnitCoding = '" + + departCoding + "'"; + ResultSet rs = null; + try { + rs = objectDao.executeSql(sql); + DateFormat dateFormat = DateTools.YMDFORMAT.get(); + while(rs.next()){ + String rinserName = rs.getString("disinfectIdentification"); + Date endDate = rs.getTimestamp("endDate"); + String dateStr = null; + if(endDate != null){ + dateStr = dateFormat.format(endDate); + }else{ + dateStr = ""; + } + String key = null; + key = dateStr + rinserName; + if(StringUtils.isNotBlank(key)){ + RinserStove_child sc = null; + if(keyResultMap.containsKey(key)){ + sc = keyResultMap.get(key); + }else{ + sc = new RinserStove_child(); + sc.setRinserName(rinserName); + } + Integer curCount = sc.getTotalWashCount(); + sc.setTotalWashCount(curCount + 1); + sc.setWashTime(dateStr); + keyResultMap.put(key, sc); + } + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + }catch(Exception ex){ + ex.printStackTrace(); + } + return Arrays.asList(keyResultMap.values().toArray()); + } + /** + * 获取清洗成功和失败的数据信息 + * @param depart 部门 + * @param departCoding 部门编码 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @param type 类型 即使清洗成功或清洗失败 + * @return + */ + private Map getSuccessDataForRinser(String depart , String departCoding, + String startTime, String endTime, String type){ + String sql = "select min(r.name) name,count(*) amount from WashAndDisinfectRecord wr inner join Rinser r on r.id=wr.rinserId " + +" where wr.washStatus = '"+type+"'" + +" and wr.orgUnitCoding = '"+departCoding+"'" + +" and wr.endDate between "+dateQueryAdapter.dateConverAdapter2(startTime + , "yyyy-mm-dd HH24:MI") + +" and "+dateQueryAdapter.dateConverAdapter2(endTime + , "yyyy-mm-dd HH24:MI"); + sql += " group by r.id "; + Map map = new LinkedHashMap(); + RinserStove_child ssc = null; + ResultSet resultSet = objectDao.executeSql(sql); + try { + while(resultSet.next()){ + ssc = new RinserStove_child(); + String name = resultSet.getString("name"); + int count = resultSet.getInt("amount"); + ssc.setDepartName(depart); + ssc.setRinserName(name); + if(WashAndDisinfectRecord.STATUS_WASHED.equals(type)){ + ssc.setSuccessCount(count); + }else if(WashAndDisinfectRecord.STATUS_WASHFAILD.equals(type)){ + ssc.setFailureCount(count); + } + map.put(name, ssc); + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(resultSet); + } + return map; + } +} Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r35863 -r35866 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 35863) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 35866) @@ -188,6 +188,7 @@ import com.forgon.disinfectsystem.jasperreports.util.QualityMonitoringReportTaskGroupReportHelper; import com.forgon.disinfectsystem.jasperreports.util.RealTimeBulletinBoardWorkloadHelper; import com.forgon.disinfectsystem.jasperreports.util.ReportSqlUtil; +import com.forgon.disinfectsystem.jasperreports.util.RinserStoveUseCountReportHelper; import com.forgon.disinfectsystem.jasperreports.util.StatisticalWorkloadHelper; import com.forgon.disinfectsystem.jasperreports.util.SteAmountEachBranchReportHelper; import com.forgon.disinfectsystem.jasperreports.util.SterilizationWorkloadReportHelper; @@ -403,6 +404,8 @@ private UseRecordItemsReportHelper useRecordItemsReportHelper; @Autowired private UseRecordEnterReportHelper useRecordEnterReportHelper; + @Autowired + private RinserStoveUseCountReportHelper rinserStoveUseCountReportHelper; /** * 利用sql语句做数据源创建JasperPrint对象 * @param realPath 报表的jasper文件在服务器本地机子的全路径 @@ -7399,126 +7402,13 @@ @Override public List getRinserStoveUseCountData(String startTime, String endTime, String depart, String departCoding) { - List ssList = new ArrayList(); - RinserStove ss = new RinserStove(); - List list = new ArrayList(); - Map successMap = getSuccessDataForRinser(depart,departCoding, - startTime,endTime,WashAndDisinfectRecord.STATUS_WASHED); - Map failureMap = getSuccessDataForRinser(depart,departCoding, - startTime,endTime,WashAndDisinfectRecord.STATUS_WASHFAILD); - Iterator> iterator = successMap.entrySet().iterator(); - while(iterator.hasNext()){ - Entry next = iterator.next(); - String name = next.getKey(); - RinserStove_child ssc = next.getValue(); - if(failureMap.get(name) != null){ - ssc.setFailureCount(failureMap.get(name).getFailureCount()); - }else{ - ssc.setFailureCount(0); - } - list.add(ssc); - } - if(list.size()>0){ - ss.setDepartName(depart); - ss.setList(list); - ssList.add(ss); - } - return ssList; + return rinserStoveUseCountReportHelper.getRinserStoveUseCountData(startTime, endTime, depart, departCoding); } - /** - * 获取清洗成功和失败的数据信息 - * @param depart 部门 - * @param departCoding 部门编码 - * @param startTime 开始时间 - * @param endTime 结束时间 - * @param type 类型 即使清洗成功或清洗失败 - * @return - */ - private Map getSuccessDataForRinser(String depart , String departCoding, - String startTime, String endTime, String type){ - String sql = "select min(r.name) name,count(*) amount from WashAndDisinfectRecord wr inner join Rinser r on r.id=wr.rinserId " - +" where wr.washStatus = '"+type+"'" - +" and wr.orgUnitCoding = '"+departCoding+"'" - +" and wr.endDate between "+dateQueryAdapter.dateConverAdapter2(startTime - , "yyyy-mm-dd HH24:MI") - +" and "+dateQueryAdapter.dateConverAdapter2(endTime - , "yyyy-mm-dd HH24:MI"); - sql += " group by r.id "; - Map map = new LinkedHashMap(); - RinserStove_child ssc = null; - ResultSet resultSet = objectDao.executeSql(sql); - try { - while(resultSet.next()){ - ssc = new RinserStove_child(); - String name = resultSet.getString("name"); - int count = resultSet.getInt("amount"); - ssc.setDepartName(depart); - ssc.setRinserName(name); - if(WashAndDisinfectRecord.STATUS_WASHED.equals(type)){ - ssc.setSuccessCount(count); - }else if(WashAndDisinfectRecord.STATUS_WASHFAILD.equals(type)){ - ssc.setFailureCount(count); - } - map.put(name, ssc); - } - } catch (SQLException e) { - e.printStackTrace(); - }finally { - DatabaseUtil.closeResultSetAndStatement(resultSet); - } - return map; - } + @Override public List getRinserStoveUseCountDetailData( String startTime, String endTime, String depart, String departCoding) { - Map keyResultMap = new HashMap(); - try{ - String sql = " SELECT disinfectIdentification,endDate from WashAndDisinfectRecord wr where wr.endDate between " - + dateQueryAdapter.dateConverAdapter2( startTime - , "yyyy-mm-dd HH24:MI") - + " and " + "" - + dateQueryAdapter.dateConverAdapter2( endTime - , "yyyy-mm-dd HH24:MI") - + " and wr.orgUnitCoding = '" - + departCoding + "'"; - ResultSet rs = null; - try { - rs = objectDao.executeSql(sql); - DateFormat dateFormat = DateTools.YMDFORMAT.get(); - while(rs.next()){ - String rinserName = rs.getString("disinfectIdentification"); - Date endDate = rs.getTimestamp("endDate"); - String dateStr = null; - if(endDate != null){ - dateStr = dateFormat.format(endDate); - }else{ - dateStr = ""; - } - String key = null; - key = dateStr + rinserName; - if(StringUtils.isNotBlank(key)){ - RinserStove_child sc = null; - if(keyResultMap.containsKey(key)){ - sc = keyResultMap.get(key); - }else{ - sc = new RinserStove_child(); - sc.setRinserName(rinserName); - } - Integer curCount = sc.getTotalWashCount(); - sc.setTotalWashCount(curCount + 1); - sc.setWashTime(dateStr); - keyResultMap.put(key, sc); - } - } - } catch (SQLException e) { - e.printStackTrace(); - }finally { - DatabaseUtil.closeResultSetAndStatement(rs); - } - }catch(Exception ex){ - ex.printStackTrace(); - } - return Arrays.asList(keyResultMap.values().toArray()); + return rinserStoveUseCountReportHelper.getRinserStoveUseCountDetailData(startTime, endTime, depart, departCoding); } @Override public List getWorkloadScoreStatisticReportData(