Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/CrossTableBeanUtil.java =================================================================== diff -u --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/CrossTableBeanUtil.java (revision 0) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/CrossTableBeanUtil.java (revision 38052) @@ -0,0 +1,42 @@ +package com.forgon.disinfectsystem.jasperreports.util; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang.StringUtils; + +import com.forgon.disinfectsystem.jasperreports.javabeansource.CrossTableBean; +import com.forgon.tools.MathTools; + +public class CrossTableBeanUtil { + /** + * 获取汇总的map + * @param ctBeanList + * @return + */ + public static Map getSumMap(List ctBeanList){ + Map sumMap = new HashMap(); + if(CollectionUtils.isNotEmpty(ctBeanList)){ + for(CrossTableBean ctBean : ctBeanList){ + String title = ctBean.getColummTitle(); + if(StringUtils.isNotBlank(title)){ + if(sumMap.containsKey(title)){ + Integer curAmount = sumMap.get(title); + Integer amount = (ctBean.getValueInteger() == null ? MathTools.ZERO_INTEGER : ctBean.getValueInteger()) + curAmount; + sumMap.put(title, amount); + }else{ + Integer amount = ctBean.getValueInteger() == null ? MathTools.ZERO_INTEGER : ctBean.getValueInteger(); + if(amount == null){ + sumMap.put(title, 0); + }else{ + sumMap.put(title, amount); + } + } + } + } + } + return sumMap; + } +} Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/ChineseMedicineInstrTypeQuaRateReportHelper.java =================================================================== diff -u --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/ChineseMedicineInstrTypeQuaRateReportHelper.java (revision 0) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/ChineseMedicineInstrTypeQuaRateReportHelper.java (revision 38052) @@ -0,0 +1,334 @@ +package com.forgon.disinfectsystem.jasperreports.util; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.text.DecimalFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; + +import net.sf.json.JSONArray; + +import org.apache.commons.collections4.MapUtils; +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.common.CssdUtils; +import com.forgon.disinfectsystem.jasperreports.javabeansource.CrossTableBean; +import com.forgon.disinfectsystem.jasperreports.service.dataindex.DataIndex; +import com.forgon.disinfectsystem.reportforms.vo.ReportQueryParams; +import com.forgon.exception.SystemException; +import com.forgon.tools.MathTools; +import com.forgon.tools.date.DateTools; +import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.db.InitDbConnection; +import com.forgon.tools.hibernate.ObjectDao; +import com.forgon.tools.util.SqlUtils; +/** + * 中医器具消毒合格率报表 2024-05-16 + * @author zc.li + */ +@Component +public class ChineseMedicineInstrTypeQuaRateReportHelper { + @Autowired + private ReportSqlUtil reportSqlUtil; + @Autowired + private CommonReportHelper commonReportHelper; + @Autowired + private FormDefinitionHelper formDefinitionHelper; + @Autowired + private DateQueryAdapter dateQueryAdapter; + @Autowired + private ObjectDao objectDao; + @Autowired + private InitDbConnection dbConnection; + @Autowired + private DataIndex dataIndex; + public List getChineseMedicineInstrTypeQuaRateReportData(Map requestParameters, Map parametMap){ + //查询的开始时间 + String startDateStr; + //查询的结束时间 + String endDateStr; + /** + * 数据查询的时间类型 queryDateType为年份是值为month 否则day + */ + String dateType; + /** + * 不合格数据map <时间,数量> + */ + Map unQualityAmountMap = new HashMap(); + /** + * 分组数据map <时间,<组名,数量>> + */ + Map> dateAmountMapOfTypeGroup = new HashMap>(); + /** + * 表格列头 + */ + Map titleColumnNumMap = new HashMap(); + /** + * 最终返回的交叉表数据 + */ + List ctBeanList = new ArrayList(); + /** + * 多个方法中用到的对象 + */ + ReportQueryParams params = new ReportQueryParams(); + SimpleDateFormat sdfyyyyMMdd; + /** + * 开始时间 + */ + Date startDate = null; + /** + * 结束时间 + */ + Date endDate = null; + /** + * 日期差量 查询天为Calendar.MONTH 否则 Calendar.DAY_OF_MONTH + */ + Integer addDateType; + Calendar calendar = Calendar.getInstance();; + DecimalFormat decimalFormat = new DecimalFormat("0.0000"); + sdfyyyyMMdd = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat sdfyyyyMMddHHmmss = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String querySupplyRoom = requestParameters.getOrDefault("querySupplyRoom", ""); + String queryDateType = requestParameters.getOrDefault("queryDateType", ""); + String chineseMedicineInstrTypeIds = requestParameters.getOrDefault("chineseMedicineInstrTypeIds", ""); + String startTime = requestParameters.get("startTime"); + String endTime = requestParameters.get("endTime"); + params.querySupplyRoom = querySupplyRoom; + endDate = calendar.getTime(); + if("year".equals(queryDateType)){ + dateType = "month"; + startDateStr = startTime + "-01-01 00:00:00"; + try { + startDate = sdfyyyyMMddHHmmss.parse(startDateStr); + } catch (ParseException e) { + e.printStackTrace(); + } + calendar.setTime(startDate); + calendar.add(Calendar.YEAR, 1); + endDateStr = sdfyyyyMMdd.format(calendar.getTime()) + " 00:00:00"; + }else if("day".equals(queryDateType)){ + dateType = "day"; + startDateStr = startTime + " 00:00:00"; + endDateStr = endTime + " 23:59:59"; + }else{//按月份查询查询的是天 + dateType = "day"; + startDateStr = startTime + "-01 00:00:00"; + if(StringUtils.isBlank(endTime)){ + try { + startDate = sdfyyyyMMddHHmmss.parse(startDateStr); + } catch (ParseException e) { + e.printStackTrace(); + } + calendar.setTime(startDate); + calendar.add(Calendar.MONTH, 1); + endDateStr = sdfyyyyMMdd.format(calendar.getTime()) + " 00:00:00"; + }else{ + String[] dateArr = endTime.split("-"); + endDateStr = DateTools.getLastDayOfMonthByDate(dateArr[0], dateArr[1]) + " 23:59:59"; + } + } + if("month".equals(dateType)){ + addDateType = Calendar.MONTH; + params.monthlyStr = dateQueryAdapter.dateToVarchar2("qi.datetime"); + }else{ + addDateType = Calendar.DAY_OF_MONTH; + params.monthlyStr = dateQueryAdapter.dateToVarchar1("qi.datetime"); + } + try { + if(startDate == null){//按月份查询的 如果没传结束月份 前面已经获取过 + startDate = sdfyyyyMMddHHmmss.parse(startDateStr); + } + calendar.setTime(startDate); + endDate = sdfyyyyMMddHHmmss.parse(endDateStr); + } catch (ParseException e) { + e.printStackTrace(); + } + //查询清洗 + int dataSoureOfMaterialsCountOfToussesInReports = CssdUtils.getSystemSetConfigByNameInt("dataSoureOfMaterialsCountOfToussesInReports", 3); + Set chineseMedicineInstrTypeIdSet = null; + if(StringUtils.isNotBlank(chineseMedicineInstrTypeIds)){ + chineseMedicineInstrTypeIdSet = SqlUtils.splitLongToSet(chineseMedicineInstrTypeIds, ",", false); + } + Set types = new HashSet(); + setDateAmountMapOfTypeGroup(types, dateAmountMapOfTypeGroup, params, startDateStr, endDateStr, querySupplyRoom, dataSoureOfMaterialsCountOfToussesInReports, true,"yyyy-mm-dd HH24:MI:SS", dateType, chineseMedicineInstrTypeIdSet); + int clounmNum = 0; + JSONArray titleColumnArr = new JSONArray(); + if(types.size() > 0){ + for (String type : types) { + titleColumnNumMap.put(type, clounmNum++); + titleColumnArr.add(type); + } + } + titleColumnArr.add("清洗总数"); + titleColumnArr.add("合格数"); + titleColumnArr.add("合格率"); + setUnQualityAmountMap(unQualityAmountMap, params, chineseMedicineInstrTypeIdSet);; + //组合返回数据 + SimpleDateFormat sdf = null; + if("month".equals(dateType)){ + sdf = new SimpleDateFormat("yyyy-MM"); + }else{ + sdf = sdfyyyyMMdd; + } + if(startDate == null){ + throw new SystemException("参数异常"); + } + int num = 1; + int totalAmount = 0; + int totalQualityAmount = 0; + while(endDate.after(startDate)){ + num++; + if(num > 10000){//只是避免死循环和查询太多而已 + break; + } + String thisStartDate = sdf.format(startDate); + Map thisWashAmountMap = dateAmountMapOfTypeGroup.containsKey(thisStartDate)?dateAmountMapOfTypeGroup.get(thisStartDate):new HashMap(); + int totalAmountOfRows = 0; + for (Entry entry : titleColumnNumMap.entrySet()) { + String title = entry.getKey(); + int order = entry.getValue(); + if(MapUtils.isEmpty(thisWashAmountMap) || !thisWashAmountMap.containsKey(title)){ + ctBeanList.add(new CrossTableBean(title, order, thisStartDate, 0, "0")); + }else{ + int amount = thisWashAmountMap.get(title); + totalAmountOfRows += amount; + ctBeanList.add(new CrossTableBean(title, order, thisStartDate, amount, amount+"")); + } + } + totalAmount+=totalAmountOfRows; + int size = titleColumnNumMap.size(); + ctBeanList.add(new CrossTableBean("清洗总数", size++, thisStartDate, totalAmountOfRows, totalAmountOfRows+"")); + Integer thisUnQualityAmount = unQualityAmountMap.get(thisStartDate); + if(thisUnQualityAmount == null){ + thisUnQualityAmount = 0; + } + int qualityAmount = totalAmountOfRows - thisUnQualityAmount; + totalQualityAmount+=qualityAmount; + ctBeanList.add(new CrossTableBean("合格数", size++, thisStartDate, qualityAmount, qualityAmount+"")); + String rate = null; + if(totalAmountOfRows > 0){ + rate = decimalFormat.format(100.00d*qualityAmount/totalAmountOfRows) + "%"; + }else{ + rate = "0.0000%"; + } + ctBeanList.add(new CrossTableBean("合格率", size++, thisStartDate, null, rate)); + calendar.setTime(startDate); + calendar.add(addDateType, 1); + startDate = calendar.getTime(); + } + titleColumnNumMap.put("清洗总数", clounmNum++); + titleColumnNumMap.put("合格数", clounmNum++); + // 对数据做合计 ctBeanList + Map totalMap = CrossTableBeanUtil.getSumMap(ctBeanList); + for(Entry entry : titleColumnNumMap.entrySet()){ + String title = entry.getKey(); + if("合格率".equals(title)){ + continue; + } + Integer columnNum = entry.getValue(); + Integer totalCount = totalMap.get(title); + CrossTableBean sumBean = new CrossTableBean(); + sumBean.setQueryDate("合计"); + sumBean.setColummTitle(title); + sumBean.setColumnNum(columnNum); + sumBean.setValueInteger(totalCount); + ctBeanList.add(sumBean); + } + String rate = null; + if(totalAmount != 0){ + rate = decimalFormat.format(100.00d*totalQualityAmount/totalAmount) + "%"; + }else{ + rate = "0.0000%"; + } + ctBeanList.add(new CrossTableBean("合格率", clounmNum++, "合计", null, rate)); + parametMap.put("title", "中医器具消毒合格率报表"); + parametMap.put("titleColumnArr", titleColumnArr); + return ctBeanList; + } + private void setUnQualityAmountMap(Map unQualityAmountMap ,ReportQueryParams obj, Set chineseMedicineInstrTypeIdSet){ + //查询不合格 + String unQualitySql = getQMAmountSql(obj, chineseMedicineInstrTypeIdSet); + ResultSet unQualityRs = null; + try { + unQualityRs = objectDao.executeSql(unQualitySql); + while(unQualityRs.next()){ + unQualityAmountMap.put(unQualityRs.getString("monthstr"), unQualityRs.getInt("amount")); + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(unQualityRs); + } + } + private void setDateAmountMapOfTypeGroup(Set types, Map> dateAmountMapOfTypeGroup, ReportQueryParams params, String statDate, String endDate, String querySupplyRoom, Integer dataSoureOfMaterialsCountOfToussesInReports, boolean groupByDay, String format, String queryDateType, Set chineseMedicineInstrTypeIdSet){ + String washWorkloadSql = reportSqlUtil.getMaterialWashWorkloadSql(params, statDate, endDate, querySupplyRoom, dataSoureOfMaterialsCountOfToussesInReports, true,"yyyy-mm-dd HH24:MI:SS",queryDateType, chineseMedicineInstrTypeIdSet); + ResultSet rs = null; + try { + rs = objectDao.executeSql(washWorkloadSql); + while(rs.next()){ + String name = rs.getString("name"); + if(StringUtils.isBlank(name)){ + name = "空"; + } + types.add(name); + int amount = rs.getInt("amount"); + String endDateStr = rs.getString("endDate"); + Map typeAmountMap = null; + if(dateAmountMapOfTypeGroup.containsKey(endDateStr)){ + typeAmountMap = dateAmountMapOfTypeGroup.get(endDateStr); + }else{ + typeAmountMap = new HashMap(); + dateAmountMapOfTypeGroup.put(endDateStr, typeAmountMap); + } + typeAmountMap.put(name, MathTools.add(amount, typeAmountMap.get(name)).intValue()); + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + } + public String getQMAmountSql(ReportQueryParams obj, Set chineseMedicineInstrTypeIdSet) { + String groupByToken = ""; + if (StringUtils.isNotBlank(obj.monthlyStr)){ + groupByToken = obj.monthlyStr + " monthstr,"; + } + String sql = "select " + groupByToken + + "sum(qmd.amount) as amount " + + obj.extraSelectColumns + + " from QualityMonitoringInstance qi,FormInstance fi,FormDefinition fd,QualityMonitoringDefinition qmdf " + + ",QualityMonitoringGoods qmd " + + " join (select case when md.specification is null or md.specification='' then md.name else md.name " + + dbConnection.getConnector() + + " '[' " + + dbConnection.getConnector() + + " md.specification " + + dbConnection.getConnector() + + " ']' end mdName " + + " from MaterialDefinition md join ChineseMedicineInstrType ct on ct.id=md.chineseMedicineInstrTypeId " + + "where 1=1 " + + SqlUtils.getInLongListSql("ct.id", chineseMedicineInstrTypeIdSet) + +" ) b on b.mdName=qmd.material " + + "where qmdf.id=fd.id and qi.id = fi.id and fi.formDefinition_id = fd.id and qi.id=qmd.qualityMonitoringInstance_id " + + " and qi.isQualified='否' " + + " and (qmd.tousseName is null or qmd.tousseName='') and qi.datetime " + obj.betweenSql + + SqlUtils.getHandleDepartCodingOfQualityMonitoringDefinitionSql(obj.querySupplyRoom) + + " and qi.responsibilityPart ='清洗消毒' and fd.formType = '质量监测' "; + if (StringUtils.isNotBlank(obj.monthlyStr)){ + sql += " group by " + obj.monthlyStr + obj.extraGroupBy; + } + return sql; + } +} Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/ReportSqlUtil.java =================================================================== diff -u -r36865 -r38052 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/ReportSqlUtil.java (.../ReportSqlUtil.java) (revision 36865) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/ReportSqlUtil.java (.../ReportSqlUtil.java) (revision 38052) @@ -4,6 +4,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.forgon.databaseadapter.service.DateQueryAdapter; +import com.forgon.disinfectsystem.entity.basedatamanager.materialdefinition.ChineseMedicineInstrType; +import com.forgon.disinfectsystem.entity.basedatamanager.materialdefinition.MaterialDefinition; +import com.forgon.disinfectsystem.entity.basedatamanager.materialinstance.MaterialInstance; import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; import com.forgon.disinfectsystem.jasperreports.service.dataindex.DataIndex; import com.forgon.disinfectsystem.reportforms.vo.ReportQueryParams; @@ -182,4 +185,101 @@ + " group by rs.type,rs.orgUnitName,rs.isSencondWashForForeignTousse,rs.tousseType" + endDaySql; return sql; } + + + /** + * 获取根据材料的一些属性分类获取的清洗件数 + * @param params + * @param statDate 开始时间 + * @param endDate 结束时间 + * @param querySupplyRoom 科室编码 + * @param dataSoureOfMaterialsCountOfToussesInReports 报表材料数量显示方式 + * @param queryDateType 查询时间类型 月或天 + * @param chineseMedicineInstrTypeIds 中医器械类型 + * @return + */ + public String getMaterialWashWorkloadSql(ReportQueryParams params, String statDate, String endDate, String querySupplyRoom, Integer dataSoureOfMaterialsCountOfToussesInReports, boolean groupByDay, String format, String queryDateType, Set chineseMedicineInstrTypeIdSet){ + params.betweenSql = String.format(" between %s and %s ", + dateQueryAdapter.dateConverAdapter2(statDate, format), + dateQueryAdapter.dateConverAdapter2(endDate, format)); + params.querySupplyRoom = querySupplyRoom; + String groupByDaySql = null; + String queryDaySql = null; + String endDaySql = ",rs.endDate "; + if("month".equals(queryDateType)){ + groupByDaySql = "," + dateQueryAdapter.dateToVarchar2("wr.endDate"); + }else{ + groupByDaySql = "," + dateQueryAdapter.dateToVarchar1("wr.endDate"); + } + queryDaySql = groupByDaySql + " endDate "; + String ctTypeIdSql = "";//材料定义的过滤 + String joinCtTypeSql = " join "+ MaterialDefinition.class.getSimpleName() +" md on md.id=ci.materialdefinition_id " + + " join "+ ChineseMedicineInstrType.class.getSimpleName() +" ct on ct.id=md.chineseMedicineInstrTypeId "; + params.extraJoinCondition = params.extraJoinCondition + joinCtTypeSql; + if(chineseMedicineInstrTypeIdSet != null && chineseMedicineInstrTypeIdSet.size() > 0){ + ctTypeIdSql = SqlUtils.getInLongListSql("ct.id", chineseMedicineInstrTypeIdSet); + } + // 统计清洗项的itemType为材料的物品,包括拆包清洗的器械包以及外来器械包 + String sql = String + .format("select ct.name,sum(ci.amount-case when numOfUnwashedStops is null then 0 else numOfUnwashedStops end) amount " + + queryDaySql + + dataIndex.getWashMaterialAmountSqlFromItemTypeIsMaterial(params.extraJoinCondition) + + " and wr.endDate %s and wr.washMaterialAmount <> 0 %s "+ ctTypeIdSql +" group by ci.itemType,ci.orgUnitName,ci.isSencondWashForForeignTousse, td.tousseType " + + groupByDaySql + + ",ct.name ", + params.betweenSql, + SqlUtils.get_InSql_Extra("wr.orgUnitCoding", params.querySupplyRoom)); + + // 统计清洗项的itemType为材料的物品,单独入清洗篮筐的器械,没有关联的器械包 + sql += " union all "; + sql += String + .format("select ct.name,sum(ci.amount-case when numOfUnwashedStops is null then 0 else numOfUnwashedStops end) amount " + + queryDaySql + + dataIndex.getWashMaterialAmountSqlFromItemTypeIsMaterialWithoutTousseDefinition(params.extraJoinCondition) + + " and wr.endDate %s and wr.washMaterialAmount <> 0 %s "+ ctTypeIdSql +" group by ci.itemType,ci.orgUnitName,ci.isSencondWashForForeignTousse, td.tousseType " + + groupByDaySql + + ",ct.name ", + params.betweenSql, + SqlUtils.get_InSql_Extra("wr.orgUnitCoding", params.querySupplyRoom)); + + + // 统计清洗项的itemType不为材料的物品,包括整包清洗的器械包 + sql += " union all "; + String joinMaterialInstanceSql = " join (select sum(mi.count) miCount,ct.name,mi.tousse_id tdId from " + + MaterialDefinition.class.getSimpleName() + +" md join " + + ChineseMedicineInstrType.class.getSimpleName() + + " ct on ct.id=md.chineseMedicineInstrTypeId join " + + MaterialInstance.class.getSimpleName() + +" mi on mi.materialDefinition_id=md.id where " + + " 1=1 " + + ctTypeIdSql + + "group by mi.tousse_id,ct.name ) b on b.tdId=td.id "; + sql += String + .format("select b.name,sum((ci.amount-case when numOfUnwashedStops is null then 0 else numOfUnwashedStops end)*b.miCount) amount " + + queryDaySql + + dataIndex.getWashMaterialAmountSqlFromItemTypeIsNotMaterial(joinMaterialInstanceSql) + + " and wr.endDate %s and wr.washMaterialAmount <> 0 %s group by b.name " + + groupByDaySql + + ",b.name ", + params.betweenSql, + SqlUtils.get_InSql_Extra("wr.orgUnitCoding", params.querySupplyRoom)); + + sql += " union all "; + sql += String + .format("select ct.name,sum(wrm.amount) amount " + + queryDaySql + + "from WashAndDisinfectRecord wr, WashRecord_WashMaterial wm,WashAndDisinfectRecordMaterial wrm,MaterialDefinition md, OrgUnit org " + + " ,ChineseMedicineInstrType ct " + + "where ct.id=md.chineseMedicineInstrTypeId and wm.WashAndDisinfectRecord_ID = wr.id and wrm.id = wm.WashAndDisinfectMaterial_ID and wrm.materialDefinition_id = md.id and org.orgUnitCoding = wr.orgUnitCoding " + + " and wr.endDate %s %s "+ ctTypeIdSql +" group by ct.name " + + groupByDaySql, + params.betweenSql, SqlUtils.get_InSql_Extra( + "wr.orgUnitCoding", params.querySupplyRoom)); + sql = " select sum(rs.amount) amount, rs.name "+ endDaySql + " from (" + + sql + + ")rs " + + " group by rs.name " + endDaySql; + return sql; + } } Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java =================================================================== diff -u -r37982 -r38052 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 37982) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 38052) @@ -104,6 +104,7 @@ import com.forgon.disinfectsystem.jasperreports.service.JasperReportManager; import com.forgon.disinfectsystem.jasperreports.service.WorkQualityCollectionReport; import com.forgon.disinfectsystem.jasperreports.util.BorrowingReportReportHelper; +import com.forgon.disinfectsystem.jasperreports.util.ChineseMedicineInstrTypeQuaRateReportHelper; import com.forgon.disinfectsystem.jasperreports.util.DepartPackingDetailSummaryReportHelper; import com.forgon.disinfectsystem.jasperreports.util.InstrumentRepairReportHelper; import com.forgon.disinfectsystem.jasperreports.util.LineGraphReportOfWorkloadByTimePeriodHelper; @@ -182,6 +183,13 @@ private BorrowingReportReportHelper borrowingReportReportHelper; private TousseDeliverStatisticsHelper tousseDeliverStatisticsHelper; + + private ChineseMedicineInstrTypeQuaRateReportHelper chineseMedicineInstrTypeQuaRateReportHelper; + + public void setChineseMedicineInstrTypeQuaRateReportHelper( + ChineseMedicineInstrTypeQuaRateReportHelper chineseMedicineInstrTypeQuaRateReportHelper) { + this.chineseMedicineInstrTypeQuaRateReportHelper = chineseMedicineInstrTypeQuaRateReportHelper; + } public void setTousseDeliverStatisticsHelper( TousseDeliverStatisticsHelper tousseDeliverStatisticsHelper) { this.tousseDeliverStatisticsHelper = tousseDeliverStatisticsHelper; @@ -2579,6 +2587,8 @@ setNoDataReport(list, requestParameters); return list; } + }else if("chineseMedicineInstrTypeQuaRateReport".equals(reportName)){ + return chineseMedicineInstrTypeQuaRateReportHelper.getChineseMedicineInstrTypeQuaRateReportData(requestParameters, parametMap); } return null; } Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/CrossTableBean.java =================================================================== diff -u -r19712 -r38052 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/CrossTableBean.java (.../CrossTableBean.java) (revision 19712) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/CrossTableBean.java (.../CrossTableBean.java) (revision 38052) @@ -58,4 +58,21 @@ public void setValue(String value) { this.value = value; } + public CrossTableBean(){} + /** + * 获取交叉报表的bean + * @param title + * @param titleColunmMap + * @param date + * @param valueInteger + * @param value + * @return + */ + public CrossTableBean (String title,Integer columnNum,String date,Integer valueInteger,String value){ + this.colummTitle = title; + this.columnNum = columnNum; + this.queryDate = date; + this.value = value; + this.valueInteger = valueInteger; + } }