Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r35922 -r35923 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 35922) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 35923) @@ -190,6 +190,7 @@ import com.forgon.disinfectsystem.jasperreports.util.SterilizerQualityReportHelper; import com.forgon.disinfectsystem.jasperreports.util.SterilizingStoveUseCountReportHelper; import com.forgon.disinfectsystem.jasperreports.util.SupplyRoomQualityQuotaHelper; +import com.forgon.disinfectsystem.jasperreports.util.TousseDeliverDetailReportHelper; import com.forgon.disinfectsystem.jasperreports.util.TousseMorrowSendReportHelper; import com.forgon.disinfectsystem.jasperreports.util.TousseSterilizationInspectSituationHelper; import com.forgon.disinfectsystem.jasperreports.util.TousseWorkLoadDataForDLZXYYHelper; @@ -370,6 +371,8 @@ private TousseSterilizationInspectSituationHelper tousseSterilizationInspectSituationHelper; @Autowired private RecycleReportHelper recycleReportHelper; + @Autowired + private TousseDeliverDetailReportHelper tousseDeliverDetailReportHelper; /** * 利用sql语句做数据源创建JasperPrint对象 * @param realPath 报表的jasper文件在服务器本地机子的全路径 @@ -1300,224 +1303,14 @@ @Override public List getTousseDeliverDetailData(String startTime, String endTime,String departCoding) { - startTime += " 00:00:00"; - endTime += " 23:59:59"; - startTime = dateQueryAdapter.dateConverAdapter2(startTime,"yyyy-mm-dd HH24:MI:SS"); - endTime = dateQueryAdapter.dateConverAdapter2(endTime,"yyyy-mm-dd HH24:MI:SS"); - Map optionMap = new HashMap(); - GoodsOption option = goodsOptionManager.getGoodsOption(GoodsOption.MODEL_TOUSSEDELIVERDETAIL, departCoding); - if(option != null && StringUtils.isNotBlank(option.getValue())){ - for(String goodsName: option.getValue().split(";")){ - optionMap.put(goodsName, 1); - } - } - Map voMap = new HashMap(); - - //回收 - String sql2 = "select i.tousseName,sum(i.amount) from RecyclingRecord r,RecyclingItem i" - + " where r.id = i.recyclingRecord_id and r.orgUnitCoding = '"+departCoding - + "' and r.recyclingTime between "+startTime - + " and "+endTime - + " group by i.tousseName "; - - ResultSet result2 = null; - try { - result2 = objectDao.executeSql(sql2); - while(result2.next()){ - String tousseName = result2.getString(1); - if(optionMap.size() == 0 || optionMap.get(tousseName) != null){ - int tousseAmount = result2.getInt(2); - TousseDeliverDetailVO vo = voMap.get(tousseName); - if(vo == null){ - vo = new TousseDeliverDetailVO(); - voMap.put(tousseName, vo); - } - vo.setTousseName(tousseName); - vo.setRecyclingAmount(tousseAmount); - } - } - } catch (SQLException e) { - e.printStackTrace(); - }finally { - DatabaseUtil.closeResultSetAndStatement(result2); - } - - //装配 - String sql3 = "select i.tousseName,count(*) from PackingRecord r,tousseInstance i" - + " where r.id = i.packingRecord_id and r.orgUnitCoding = '"+departCoding - + "' and r.packTime between "+startTime - + " and "+endTime - + " group by i.tousseName "; - - ResultSet result3 = null; - try { - result3 = objectDao.executeSql(sql3); - while(result3.next()){ - String tousseName = result3.getString(1); - if(optionMap.size() == 0 || optionMap.get(tousseName) != null){ - int tousseAmount = result3.getInt(2); - TousseDeliverDetailVO vo = voMap.get(tousseName); - if(vo == null){ - vo = new TousseDeliverDetailVO(); - voMap.put(tousseName, vo); - } - vo.setTousseName(tousseName); - vo.setPackingAmount(tousseAmount); - } - } - } catch (SQLException e) { - e.printStackTrace(); - }finally { - DatabaseUtil.closeResultSetAndStatement(result3); - } - - //审核 - String sql4 = "select i.tousseName,count(*) from tousseInstance i" - + " where i.orgUnitCoding = '"+departCoding - + "' and i.reviewTime between "+startTime - + " and "+endTime - + " group by i.tousseName "; - - ResultSet result4 = null; - try { - result4 = objectDao.executeSql(sql4); - while(result4.next()){ - String tousseName = result4.getString(1); - if(optionMap.size() == 0 || optionMap.get(tousseName) != null){ - int tousseAmount = result4.getInt(2); - TousseDeliverDetailVO vo = voMap.get(tousseName); - if(vo == null){ - vo = new TousseDeliverDetailVO(); - voMap.put(tousseName, vo); - } - vo.setTousseName(tousseName); - vo.setReviewAmount(tousseAmount); - } - } - } catch (SQLException e) { - e.printStackTrace(); - } finally { - DatabaseUtil.closeResultSetAndStatement(result4); - } - - //灭菌 - String sql5 = "select i.tousseName,count(*) from SterilizationRecord r, tousseInstance i" - + " where r.id = i.sterilizationRecord_id and i.orgUnitCoding = '"+departCoding - + "' and r.endDate between "+startTime - + " and "+endTime - + " group by i.tousseName "; - - ResultSet result5 = null; - try { - result5 = objectDao.executeSql(sql5); - while(result5.next()){ - String tousseName = result5.getString(1); - if(optionMap.size() == 0 || optionMap.get(tousseName) != null){ - int tousseAmount = result5.getInt(2); - TousseDeliverDetailVO vo = voMap.get(tousseName); - if(vo == null){ - vo = new TousseDeliverDetailVO(); - voMap.put(tousseName, vo); - } - vo.setTousseName(tousseName); - vo.setSterilizationAmount(tousseAmount); - } - } - } catch (SQLException e) { - e.printStackTrace(); - } finally { - DatabaseUtil.closeResultSetAndStatement(result5); - } - - //初次发货 - String sql = " select tousseName,sum(amount) from (select ti.tousseName,count(*) amount from invoice i,TousseInstance ti" - + " where i.id = ti.invoice_id and i.orgUnitCoding = '" + departCoding - + "' and i.sendTime between "+startTime - + " and "+endTime - + " group by ti.tousseName "; - //多次发货 - sql += " union all select ti.tousseName,count(*) amount from invoice i,TousseInstance ti" - + " where i.id = ti.invoice2_id and i.orgUnitCoding = '" + departCoding - + "' and i.sendTime between "+startTime - + " and "+endTime - + " group by ti.tousseName "; - //是否扣减掉退货数量 - boolean sendAmountOfReportsSubstractReturnGoodsAmount = CssdUtils.getSystemSetConfigByNameBool("sendAmountOfReportsSubstractReturnGoodsAmount", false); - if(sendAmountOfReportsSubstractReturnGoodsAmount){ - sql += " union all select ti.tousseName,-count(*) amount from ReturnGoodsRecord rgr,ReturnGoodsItem rgi, TousseInstance ti" - + " where rgr.id = rgi.returnGoodsRecord_ID and ti.returnGoodsItem_ID=rgi.id " - + " and ti.orgUnitCoding = '" + departCoding - + "' and rgr.returnTime between "+startTime - + " and "+endTime - + " group by ti.tousseName "; - } - sql += " )t group by tousseName order by tousseName desc "; - ResultSet result = null; - Map map = new HashMap(); - try { - result = objectDao.executeSql(sql); - while(result.next()){ - String tousseName = result.getString(1); - if(optionMap.size() == 0 || optionMap.get(tousseName) != null){ - int tousseAmount = result.getInt(2); - - TousseDeliverDetailVO vo = voMap.get(tousseName); - if(vo == null){ - vo = new TousseDeliverDetailVO(); - voMap.put(tousseName, vo); - } - vo.setTousseName(tousseName); - vo.setTousseAmount(tousseAmount); - Integer materialAmount = getMaterialAmountByTousse(tousseName,map); - vo.setMaterialAmount(materialAmount*tousseAmount); - } - } - } catch (SQLException e) { - e.printStackTrace(); - }finally { - DatabaseUtil.closeResultSetAndStatement(result); - } - List voList = new ArrayList(); - int serialNum = 0; - if(voMap.size() > 0){ - for(Entry entry : voMap.entrySet()){ - String tousseName = entry.getKey(); - serialNum++; - TousseDeliverDetailVO vo = entry.getValue(); - vo.setSerialNumber(serialNum); - voList.add(vo); - } - } - return voList; + return tousseDeliverDetailReportHelper.getTousseDeliverDetailData(startTime, endTime, departCoding); } @Override public List getSterilizingStoveUseCountDetailData(String startTime,String endTime,String depart,String departCoding, String sterilizationPurpose,String sterilizerNameGroup, String sterilizerName, String sterilisation){ return sterilizingStoveUseCountReportHelper.getSterilizingStoveUseCountDetailData(startTime, endTime, depart, departCoding, sterilizationPurpose, sterilizerNameGroup, sterilizerName, sterilisation); } - public Integer getMaterialAmountByTousse(String tousseName,Map map){ - if(map.get(tousseName) != null){ - return map.get(tousseName); - }else{ - - } - String sql = "select sum(mi.count) from TousseDefinition td,MaterialInstance mi " - + "where td.id = mi.tousse_id and td.name = '" + tousseName + "'"; - ResultSet result = objectDao.executeSql(sql); - try { - while(result.next()){ - int materialAmount = result.getInt(1); - map.put(tousseName, materialAmount); - return materialAmount; - } - } catch (SQLException e) { - e.printStackTrace(); - }finally { - DatabaseUtil.closeResultSetAndStatement(result); - } - return 0; - } - + @Override public List getTousseWorkLoadData(String instrumentSetTypes, String startTime, String endTime, String departCoding, String tousseTypes, String operator, Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/TousseDeliverDetailReportHelper.java =================================================================== diff -u --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/TousseDeliverDetailReportHelper.java (revision 0) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/util/TousseDeliverDetailReportHelper.java (revision 35923) @@ -0,0 +1,251 @@ +package com.forgon.disinfectsystem.jasperreports.util; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +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.common.CssdUtils; +import com.forgon.disinfectsystem.entity.basedatamanager.reportoption.GoodsOption; +import com.forgon.disinfectsystem.jasperreports.javabeansource.TousseDeliverDetailVO; +import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.hibernate.ObjectDao; +/** + * 器械包各生产环节统计报表 + * + */ +@Component +public class TousseDeliverDetailReportHelper { + @Autowired + private DateQueryAdapter dateQueryAdapter; + @Autowired + private ObjectDao objectDao; + @Autowired + private GoodsOptionManager goodsOptionManager; + /** + * 获取器械包各生产环节统计报表数据 + * @param startTime + * @param endTime + * @param departCoding 供应室编码 + * @return + */ + public List getTousseDeliverDetailData(String startTime, String endTime,String departCoding) { + startTime += " 00:00:00"; + endTime += " 23:59:59"; + startTime = dateQueryAdapter.dateConverAdapter2(startTime,"yyyy-mm-dd HH24:MI:SS"); + endTime = dateQueryAdapter.dateConverAdapter2(endTime,"yyyy-mm-dd HH24:MI:SS"); + Map optionMap = new HashMap(); + GoodsOption option = goodsOptionManager.getGoodsOption(GoodsOption.MODEL_TOUSSEDELIVERDETAIL, departCoding); + if(option != null && StringUtils.isNotBlank(option.getValue())){ + for(String goodsName: option.getValue().split(";")){ + optionMap.put(goodsName, 1); + } + } + Map voMap = new HashMap(); + + //回收 + String sql2 = "select i.tousseName,sum(i.amount) from RecyclingRecord r,RecyclingItem i" + + " where r.id = i.recyclingRecord_id and r.orgUnitCoding = '"+departCoding + + "' and r.recyclingTime between "+startTime + + " and "+endTime + + " group by i.tousseName "; + + ResultSet result2 = null; + try { + result2 = objectDao.executeSql(sql2); + while(result2.next()){ + String tousseName = result2.getString(1); + if(optionMap.size() == 0 || optionMap.get(tousseName) != null){ + int tousseAmount = result2.getInt(2); + TousseDeliverDetailVO vo = voMap.get(tousseName); + if(vo == null){ + vo = new TousseDeliverDetailVO(); + voMap.put(tousseName, vo); + } + vo.setTousseName(tousseName); + vo.setRecyclingAmount(tousseAmount); + } + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(result2); + } + + //装配 + String sql3 = "select i.tousseName,count(*) from PackingRecord r,tousseInstance i" + + " where r.id = i.packingRecord_id and r.orgUnitCoding = '"+departCoding + + "' and r.packTime between "+startTime + + " and "+endTime + + " group by i.tousseName "; + + ResultSet result3 = null; + try { + result3 = objectDao.executeSql(sql3); + while(result3.next()){ + String tousseName = result3.getString(1); + if(optionMap.size() == 0 || optionMap.get(tousseName) != null){ + int tousseAmount = result3.getInt(2); + TousseDeliverDetailVO vo = voMap.get(tousseName); + if(vo == null){ + vo = new TousseDeliverDetailVO(); + voMap.put(tousseName, vo); + } + vo.setTousseName(tousseName); + vo.setPackingAmount(tousseAmount); + } + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(result3); + } + + //审核 + String sql4 = "select i.tousseName,count(*) from tousseInstance i" + + " where i.orgUnitCoding = '"+departCoding + + "' and i.reviewTime between "+startTime + + " and "+endTime + + " group by i.tousseName "; + + ResultSet result4 = null; + try { + result4 = objectDao.executeSql(sql4); + while(result4.next()){ + String tousseName = result4.getString(1); + if(optionMap.size() == 0 || optionMap.get(tousseName) != null){ + int tousseAmount = result4.getInt(2); + TousseDeliverDetailVO vo = voMap.get(tousseName); + if(vo == null){ + vo = new TousseDeliverDetailVO(); + voMap.put(tousseName, vo); + } + vo.setTousseName(tousseName); + vo.setReviewAmount(tousseAmount); + } + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(result4); + } + + //灭菌 + String sql5 = "select i.tousseName,count(*) from SterilizationRecord r, tousseInstance i" + + " where r.id = i.sterilizationRecord_id and i.orgUnitCoding = '"+departCoding + + "' and r.endDate between "+startTime + + " and "+endTime + + " group by i.tousseName "; + + ResultSet result5 = null; + try { + result5 = objectDao.executeSql(sql5); + while(result5.next()){ + String tousseName = result5.getString(1); + if(optionMap.size() == 0 || optionMap.get(tousseName) != null){ + int tousseAmount = result5.getInt(2); + TousseDeliverDetailVO vo = voMap.get(tousseName); + if(vo == null){ + vo = new TousseDeliverDetailVO(); + voMap.put(tousseName, vo); + } + vo.setTousseName(tousseName); + vo.setSterilizationAmount(tousseAmount); + } + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(result5); + } + + //初次发货 + String sql = " select tousseName,sum(amount) from (select ti.tousseName,count(*) amount from invoice i,TousseInstance ti" + + " where i.id = ti.invoice_id and i.orgUnitCoding = '" + departCoding + + "' and i.sendTime between "+startTime + + " and "+endTime + + " group by ti.tousseName "; + //多次发货 + sql += " union all select ti.tousseName,count(*) amount from invoice i,TousseInstance ti" + + " where i.id = ti.invoice2_id and i.orgUnitCoding = '" + departCoding + + "' and i.sendTime between "+startTime + + " and "+endTime + + " group by ti.tousseName "; + //是否扣减掉退货数量 + boolean sendAmountOfReportsSubstractReturnGoodsAmount = CssdUtils.getSystemSetConfigByNameBool("sendAmountOfReportsSubstractReturnGoodsAmount", false); + if(sendAmountOfReportsSubstractReturnGoodsAmount){ + sql += " union all select ti.tousseName,-count(*) amount from ReturnGoodsRecord rgr,ReturnGoodsItem rgi, TousseInstance ti" + + " where rgr.id = rgi.returnGoodsRecord_ID and ti.returnGoodsItem_ID=rgi.id " + + " and ti.orgUnitCoding = '" + departCoding + + "' and rgr.returnTime between "+startTime + + " and "+endTime + + " group by ti.tousseName "; + } + sql += " )t group by tousseName order by tousseName desc "; + ResultSet result = null; + Map map = new HashMap(); + try { + result = objectDao.executeSql(sql); + while(result.next()){ + String tousseName = result.getString(1); + if(optionMap.size() == 0 || optionMap.get(tousseName) != null){ + int tousseAmount = result.getInt(2); + + TousseDeliverDetailVO vo = voMap.get(tousseName); + if(vo == null){ + vo = new TousseDeliverDetailVO(); + voMap.put(tousseName, vo); + } + vo.setTousseName(tousseName); + vo.setTousseAmount(tousseAmount); + Integer materialAmount = getMaterialAmountByTousse(tousseName,map); + vo.setMaterialAmount(materialAmount*tousseAmount); + } + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(result); + } + List voList = new ArrayList(); + int serialNum = 0; + if(voMap.size() > 0){ + for(Entry entry : voMap.entrySet()){ + serialNum++; + TousseDeliverDetailVO vo = entry.getValue(); + vo.setSerialNumber(serialNum); + voList.add(vo); + } + } + return voList; + } + private Integer getMaterialAmountByTousse(String tousseName,Map map){ + if(map.get(tousseName) != null){ + return map.get(tousseName); + }else{ + + } + String sql = "select sum(mi.count) from TousseDefinition td,MaterialInstance mi " + + "where td.id = mi.tousse_id and td.name = '" + tousseName + "'"; + ResultSet result = objectDao.executeSql(sql); + try { + while(result.next()){ + int materialAmount = result.getInt(1); + map.put(tousseName, materialAmount); + return materialAmount; + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(result); + } + return 0; + } +}