Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/YearWorkloadReportHelper.java =================================================================== diff -u -r37641 -r37645 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/YearWorkloadReportHelper.java (.../YearWorkloadReportHelper.java) (revision 37641) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/YearWorkloadReportHelper.java (.../YearWorkloadReportHelper.java) (revision 37645) @@ -154,6 +154,7 @@ List beans = getYearWorkloadReport(dateStrSet, "mm",startDate,endDate,year+"", queryMonth, querySupplyRoom, isAddEndoscopic, isStatisticDisposableGoodsSendAmount, parametMap); List beanSum = getSumBeans(beans, year+"年"); + fillingInVacantBeans(beanSum, lastBeanSum, lastYear+"年", year+"年"); return addComparisonBeans("同比", lastBeanSum, beanSum); } /** @@ -196,7 +197,7 @@ List beans = getYearWorkloadReport(dateStrSet, "mm",startDate,endDate,year+"", queryMonth, querySupplyRoom, isAddEndoscopic, isStatisticDisposableGoodsSendAmount, parametMap); List beanSum = getSumBeans(beans, year+"年"+ month +"月"); - + fillingInVacantBeans(beanSum, lastBeanSum, lastYear+"年"+ month +"月", year+"年"+ month +"月"); return addComparisonBeans("同比", lastBeanSum, beanSum); } /** @@ -284,6 +285,7 @@ List beans = getYearWorkloadReport(dateStrSet, "mm",startDate,endDate,year+"", queryMonth, querySupplyRoom, isAddEndoscopic, isStatisticDisposableGoodsSendAmount, parametMap); List beanSum = getSumBeans(beans, year+quarterlyName); + fillingInVacantBeans(beanSum, lastBeanSum, lastYear+quarterlyName, year+quarterlyName); return addComparisonBeans("同比", lastBeanSum, beanSum); } /** @@ -322,6 +324,7 @@ dateStrSet.add(year + "-06"); List beans = getYearWorkloadReport(dateStrSet, "mm",startDate,endDate,year, queryMonth, querySupplyRoom, isAddEndoscopic, isStatisticDisposableGoodsSendAmount, parametMap); List beanSum = getSumBeans(beans,year + "上半年"); + fillingInVacantBeans(beanSum, lastSums, lastYear + "上半年", year + "上半年"); return addComparisonBeans("同比", lastSums, beanSum); } /** @@ -366,14 +369,6 @@ break; } } - if(bean2 == null){ - bean2 = new YearWorkloadBean(); - bean2.setColumnName(bean1.getColumnName()); - bean2.setAmount(0); - bean2.setColumnSequence(bean1.getColumnSequence()); - bean2.setRowSequence(bean1.getRowSequence()); - bean2.setMonth(beanSum.get(0).getMonth()); - } read.add(bean1.getColumnName()); showBeans.add(bean1.getShowBean()); showBeans.add(bean2.getShowBean()); @@ -402,45 +397,51 @@ if(StringUtils.isNotBlank(queryMonth)){ String lastMonth = DateTools.getNextMonth(year, queryMonth, -2); String nextMonth = DateTools.getNextMonth(year, queryMonth, 0); + String lastYear = lastMonth.contains("12")?(Integer.parseInt(year) - 1)+"":year; startTime = lastMonth + "-01 00:00:00"; - endTime = nextMonth+ "-01 00:00:00"; + String yearMonth = year + "-" + queryMonth; + endTime = yearMonth+ "-01 00:00:00"; + dateStrSet.add(lastMonth); - dateStrSet.add(year + "-" + queryMonth); parametMap.put("title", year + "年"+ (StringUtils.isBlank(queryMonth)?"":queryMonth+"月份") +"消毒供应中心工作量及收入统计报表"); - List beans = getYearWorkloadReport(dateStrSet, "mm",startTime,endTime,year, queryMonth, querySupplyRoom, isAddEndoscopic, isStatisticDisposableGoodsSendAmount, parametMap); - if(beans.size() > 0){ + List beans = getYearWorkloadReport(dateStrSet, "mm",startTime,endTime,lastYear, queryMonth, querySupplyRoom, isAddEndoscopic, isStatisticDisposableGoodsSendAmount, parametMap); + + startTime = yearMonth + "-01 00:00:00"; + endTime = nextMonth+ "-01 00:00:00"; + queryMonth = lastMonth.substring(lastMonth.indexOf("-")+1); + dateStrSet.clear(); + dateStrSet.add(yearMonth); + List lastBeans = getYearWorkloadReport(dateStrSet, "mm",startTime,endTime,year, queryMonth, querySupplyRoom, isAddEndoscopic, isStatisticDisposableGoodsSendAmount, parametMap); + + List thisYearWorkloadBeans = getSumBeans(beans, lastMonth); + List lastYearWorkloadBeans = getSumBeans(lastBeans, yearMonth); + fillingInVacantBeans(thisYearWorkloadBeans, lastYearWorkloadBeans, lastMonth, yearMonth); + if(thisYearWorkloadBeans.size() > 0){ + DecimalFormat df = new DecimalFormat("0.0000"); + df.applyPattern("0.00"); Set read = new HashSet(); - for (YearWorkloadBean bean1 : beans) { + for (YearWorkloadBean bean1 : thisYearWorkloadBeans) { if(read.contains(bean1.getColumnName())){ continue; } YearWorkloadBean bean2 = null; - for (YearWorkloadBean jbean : beans) { - if(StringUtils.equals(bean1.getColumnName(), jbean.getColumnName()) && !StringUtils.equals(bean1.getMonth(), jbean.getMonth())){ + for (YearWorkloadBean jbean : lastYearWorkloadBeans) { + if(StringUtils.equals(bean1.getColumnName(), jbean.getColumnName())){ bean2 = jbean; break; } } - if(bean2 == null){ - bean2 = new YearWorkloadBean(); - bean2.setColumnName(bean1.getColumnName()); - bean2.setAmount(0); - bean2.setColumnSequence(bean1.getColumnSequence()); - bean2.setRowSequence(bean1.getRowSequence()); - bean2.setMonth(bean1.getMonth()); - } read.add(bean1.getColumnName()); - DecimalFormat df = new DecimalFormat("0.0000"); showBeans.add(bean1.getShowBean()); showBeans.add(bean2.getShowBean()); - df.applyPattern("0.00"); YearWorkloadShowBean showBean3 = comparisonBean("环比增减", df, bean1, bean2); showBean3.setColumnName(bean1.getColumnName()); showBeans.add(showBean3); } } }else{ int lastYear = Integer.parseInt(year) - 1; + String lastYearStr = lastYear + ""; startTime = year + "-01-01 00:00:00"; endTime = (lastYear + 2) + "-01-01 00:00:00"; dateStrSet.add(year + "-01"); @@ -473,9 +474,10 @@ dateStrSet.add(lastYear + "-12"); startTime = lastYear + "-01-01 00:00:00"; endTime = year + "-01-01 00:00:00"; - List beans2 = getYearWorkloadReport(dateStrSet, "mm",startTime,endTime,lastYear+"", "", querySupplyRoom, isAddEndoscopic, isStatisticDisposableGoodsSendAmount, parametMap); + List beans2 = getYearWorkloadReport(dateStrSet, "mm",startTime,endTime,lastYearStr, "", querySupplyRoom, isAddEndoscopic, isStatisticDisposableGoodsSendAmount, parametMap); List thisYearWorkloadBeans = getSumBeans(beans, year); - List lastYearWorkloadBeans = getSumBeans(beans2, lastYear+""); + List lastYearWorkloadBeans = getSumBeans(beans2, lastYearStr); + fillingInVacantBeans(thisYearWorkloadBeans, lastYearWorkloadBeans, year, lastYearStr); if(beans.size() > 0){ DecimalFormat df = new DecimalFormat("0.0000"); df.applyPattern("0.00"); @@ -541,6 +543,52 @@ } /** + * 对比两个list 互相填充缺少的列 + * @param thisYearWorkloadBeans + * @param lastYearWorkloadBeans + * @param thisMonth thisYearWorkloadBeans的month + * @param lastMonth lastYearWorkloadBeans的month + */ + private void fillingInVacantBeans(List thisYearWorkloadBeans, List lastYearWorkloadBeans, String thisMonth, String lastMonth){ + if(CollectionUtils.isEmpty(thisYearWorkloadBeans) && CollectionUtils.isEmpty(lastYearWorkloadBeans)){ + return; + } + for (YearWorkloadBean bean : lastYearWorkloadBeans) { + boolean find = false; + for (YearWorkloadBean thisBean : thisYearWorkloadBeans) { + if(StringUtils.equals(thisBean.getColumnName(), bean.getColumnName())){ + find = true; + break; + } + } + if(!find){ + YearWorkloadBean thisBean = new YearWorkloadBean(); + thisBean.setAmount(0); + thisBean.setMonth(thisMonth); + thisBean.setColumnName(bean.getColumnName()); + thisBean.setColumnSequence(bean.getRowSequence()); + thisYearWorkloadBeans.add(thisBean); + } + } + for (YearWorkloadBean thisBean : thisYearWorkloadBeans) { + boolean find = false; + for (YearWorkloadBean lastBean : lastYearWorkloadBeans) { + if(StringUtils.equals(thisBean.getColumnName(), lastBean.getColumnName())){ + find = true; + break; + } + } + if(!find){ + YearWorkloadBean lastBean = new YearWorkloadBean(); + lastBean.setAmount(0); + lastBean.setMonth(lastMonth); + lastBean.setColumnName(thisBean.getColumnName()); + lastBean.setColumnSequence(thisBean.getRowSequence()); + lastYearWorkloadBeans.add(lastBean); + } + } + } + /** * 对比两个WorkloadAndIncomeStatisticsBean 返回一个用来展示的showBean * @param dateStr 返回的showBean的dateStr列显示值 * @param bean1 时间早的bean