Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r35923 -r35925 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 35923) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 35925) @@ -181,6 +181,7 @@ import com.forgon.disinfectsystem.jasperreports.util.QualityMonitoringReportTaskGroupReportHelper; import com.forgon.disinfectsystem.jasperreports.util.RealTimeBulletinBoardWorkloadHelper; import com.forgon.disinfectsystem.jasperreports.util.RecycleReportHelper; +import com.forgon.disinfectsystem.jasperreports.util.ReportHelper1; import com.forgon.disinfectsystem.jasperreports.util.ReportSqlUtil; import com.forgon.disinfectsystem.jasperreports.util.ReturnGoodReportHelper; import com.forgon.disinfectsystem.jasperreports.util.RinserStoveUseCountReportHelper; @@ -373,6 +374,8 @@ private RecycleReportHelper recycleReportHelper; @Autowired private TousseDeliverDetailReportHelper tousseDeliverDetailReportHelper; + @Autowired + private ReportHelper1 reportHelper1; /** * 利用sql语句做数据源创建JasperPrint对象 * @param realPath 报表的jasper文件在服务器本地机子的全路径 @@ -1516,123 +1519,9 @@ @Override public List getApparatusInfusionis( String startDay, String endDay, String departCoding, String showDetail) { - String sql = "select min(p.settleAccountsDepartCoding),t.settleAccountsDepart, i.name, " - + "sum(i.amount) from DiposableGoodsItem i, " - + "Invoice t,invoiceplan p where i.invoice_id = t.id and p.id = t.invoiceplan_id " - + "and (t.status = '已发货' or t.status = '收货签收')"; - if (StringUtils.isNotBlank(endDay)) { - endDay += " 23:59"; - } else { - endDay = new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + " 23:59"; - } - if (StringUtils.isBlank(startDay)) { - startDay = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); - } - sql +=" and t.sendtime between " - + dateQueryAdapter.dateAdapter(startDay) - + " and " + dateQueryAdapter.dateAdapter(endDay) - + SqlUtils.get_InSql_Extra("t.orgUnitCoding", departCoding); - - GoodsOption option = goodsOptionManager.getGoodsOption(GoodsOption.MODEL_APPARATUS, departCoding); - Collection goodsNames = new ArrayList(); - if (option != null && StringUtils.isNotBlank(option.getValue())) { - String [] goodsNameArray = option.getValue().split(";"); - for (int i = 0; i < goodsNameArray.length; i++) { - goodsNames.add(goodsNameArray[i]); - } - } - sql += " and " + SqlBuilder.build_IN_Statement("i.name", SqlBuilder.IN, goodsNames); - sql += " group by t.settleAccountsDepart, i.name"; - ResultSet rs = objectDao.executeSql(sql); - List list = new ArrayList(); - Map map = new HashMap(); - - Map uccMap = getAllDiposableGoodsUnitConvertCoefficient(); - try { - while(rs.next()){ - String code = rs.getString(1); - String dept = rs.getString(2); - String goodsName = rs.getString(3); - Integer amount = rs.getInt(4); - Double ucc = uccMap.get(goodsName); - if(ucc == null){ - ucc = 1D; - } - Double totalAmount = MathTools.mul(amount, ucc,2).doubleValue(); - if("是".equals(showDetail)){ - ApparatusInfusionisType vo = new ApparatusInfusionisType(); - vo.setAmount(totalAmount); - vo.setColumnName(goodsName); - vo.setColumnNum("1"); - vo.setRowName(dept); - vo.setRowNum(code); - list.add(vo); - String key = dept + "#&@" + code; - Double sumAmount = map.get(key); - if(sumAmount == null){ - sumAmount = 0d; - } - map.put(key, sumAmount + totalAmount); - }else{ - Double sumAmount = map.get(goodsName); - if(sumAmount == null){ - sumAmount = 0d; - } - map.put(goodsName, sumAmount + totalAmount); - } - - } - } catch (SQLException e) { - e.printStackTrace(); - }finally { - DatabaseUtil.closeResultSetAndStatement(rs); - } - for(Entry entry : map.entrySet()){ - String key = entry.getKey(); - String rowName = key; - String rowNum = null; - int index = key.indexOf("#&@"); - if(index != -1){ - String [] array = rowName.split("#&@"); - rowName = array[0]; - rowNum = array[1]; - } - ApparatusInfusionisType vo = new ApparatusInfusionisType(); - vo.setAmount(entry.getValue()); - vo.setColumnName("合计"); - vo.setColumnNum("2"); - vo.setRowName(rowName); - vo.setRowNum(rowNum); - list.add(vo); - } - return list; + return reportHelper1.getApparatusInfusionis(startDay, endDay, departCoding, showDetail); } - private Map getAllDiposableGoodsUnitConvertCoefficient(){ - Map map = new HashMap(); - String sql = "select name,specification,unitConvertCoefficient from " + DisposableGoodsStock.class.getSimpleName(); - ResultSet rs = objectDao.executeSql(sql); - try { - while(rs.next()){ - String name = rs.getString(1); - String sp = rs.getString(2); - if(StringUtils.isNotBlank(sp)){ - name += "[" + sp+ "]"; - } - Double unitCoefficient = rs.getDouble(3); - if(unitCoefficient == null || unitCoefficient == 0){ - unitCoefficient = 1D; - } - map.put(name, unitCoefficient); - } - } catch (SQLException e) { - e.printStackTrace(); - }finally { - DatabaseUtil.closeResultSetAndStatement(rs); - } - return map; - } - @Override public List getBorrowingRecord(String startDay, String endDay, String goodsName, String deptName) { Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/ReportHelper1.java =================================================================== diff -u --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/ReportHelper1.java (revision 0) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/ReportHelper1.java (revision 35925) @@ -0,0 +1,167 @@ +package com.forgon.disinfectsystem.jasperreports.util; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.HashMap; +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.basedatamanager.reportoption.GoodsOptionManager; +import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsStock; +import com.forgon.disinfectsystem.entity.basedatamanager.reportoption.GoodsOption; +import com.forgon.disinfectsystem.jasperreports.javabeansource.ApparatusInfusionisType; +import com.forgon.tools.MathTools; +import com.forgon.tools.SqlBuilder; +import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.hibernate.ObjectDao; +import com.forgon.tools.util.SqlUtils; + +/** + * 一些小报表(超过500行建议换一个文件) + * 各类型输液器报表 + */ +@Component +public class ReportHelper1 { + @Autowired + private GoodsOptionManager goodsOptionManager; + @Autowired + private ObjectDao objectDao; + @Autowired + private DateQueryAdapter dateQueryAdapter; + /** + * 各类型输液器报表 + * @param startDay + * @param endDay + * @param departCoding + * @param showDetail + * @return + */ + public List getApparatusInfusionis( + String startDay, String endDay, String departCoding, String showDetail) { + String sql = "select min(p.settleAccountsDepartCoding),t.settleAccountsDepart, i.name, " + + "sum(i.amount) from DiposableGoodsItem i, " + + "Invoice t,invoiceplan p where i.invoice_id = t.id and p.id = t.invoiceplan_id " + + "and (t.status = '已发货' or t.status = '收货签收')"; + if (StringUtils.isNotBlank(endDay)) { + endDay += " 23:59"; + } else { + endDay = new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + " 23:59"; + } + if (StringUtils.isBlank(startDay)) { + startDay = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); + } + sql +=" and t.sendtime between " + + dateQueryAdapter.dateAdapter(startDay) + + " and " + dateQueryAdapter.dateAdapter(endDay) + + SqlUtils.get_InSql_Extra("t.orgUnitCoding", departCoding); + + GoodsOption option = goodsOptionManager.getGoodsOption(GoodsOption.MODEL_APPARATUS, departCoding); + Collection goodsNames = new ArrayList(); + if (option != null && StringUtils.isNotBlank(option.getValue())) { + String [] goodsNameArray = option.getValue().split(";"); + for (int i = 0; i < goodsNameArray.length; i++) { + goodsNames.add(goodsNameArray[i]); + } + } + sql += " and " + SqlBuilder.build_IN_Statement("i.name", SqlBuilder.IN, goodsNames); + sql += " group by t.settleAccountsDepart, i.name"; + ResultSet rs = objectDao.executeSql(sql); + List list = new ArrayList(); + Map map = new HashMap(); + + Map uccMap = getAllDiposableGoodsUnitConvertCoefficient(); + try { + while(rs.next()){ + String code = rs.getString(1); + String dept = rs.getString(2); + String goodsName = rs.getString(3); + Integer amount = rs.getInt(4); + Double ucc = uccMap.get(goodsName); + if(ucc == null){ + ucc = 1D; + } + Double totalAmount = MathTools.mul(amount, ucc,2).doubleValue(); + if("是".equals(showDetail)){ + ApparatusInfusionisType vo = new ApparatusInfusionisType(); + vo.setAmount(totalAmount); + vo.setColumnName(goodsName); + vo.setColumnNum("1"); + vo.setRowName(dept); + vo.setRowNum(code); + list.add(vo); + String key = dept + "#&@" + code; + Double sumAmount = map.get(key); + if(sumAmount == null){ + sumAmount = 0d; + } + map.put(key, sumAmount + totalAmount); + }else{ + Double sumAmount = map.get(goodsName); + if(sumAmount == null){ + sumAmount = 0d; + } + map.put(goodsName, sumAmount + totalAmount); + } + + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + for(Entry entry : map.entrySet()){ + String key = entry.getKey(); + String rowName = key; + String rowNum = null; + int index = key.indexOf("#&@"); + if(index != -1){ + String [] array = rowName.split("#&@"); + rowName = array[0]; + rowNum = array[1]; + } + ApparatusInfusionisType vo = new ApparatusInfusionisType(); + vo.setAmount(entry.getValue()); + vo.setColumnName("合计"); + vo.setColumnNum("2"); + vo.setRowName(rowName); + vo.setRowNum(rowNum); + list.add(vo); + } + return list; + } + private Map getAllDiposableGoodsUnitConvertCoefficient(){ + Map map = new HashMap(); + String sql = "select name,specification,unitConvertCoefficient from " + DisposableGoodsStock.class.getSimpleName(); + ResultSet rs = objectDao.executeSql(sql); + try { + while(rs.next()){ + String name = rs.getString(1); + String sp = rs.getString(2); + if(StringUtils.isNotBlank(sp)){ + name += "[" + sp+ "]"; + } + Double unitCoefficient = rs.getDouble(3); + if(unitCoefficient == null || unitCoefficient == 0){ + unitCoefficient = 1D; + } + map.put(name, unitCoefficient); + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + return map; + } + +}