Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/ForeignTousseSupplierStatisticsReportVO.java =================================================================== diff -u --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/ForeignTousseSupplierStatisticsReportVO.java (revision 0) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/ForeignTousseSupplierStatisticsReportVO.java (revision 33273) @@ -0,0 +1,83 @@ +package com.forgon.disinfectsystem.jasperreports.javabeansource; +public class ForeignTousseSupplierStatisticsReportVO { + /** + * 日期 + */ + private String dateStr; + /** + * 供应商 + */ + private String supplierName; + /** + * 工具数量 + */ + private Long toolAmount; + /** + * 植入物数量 + */ + private Long implantAmount; + /** + * 大包数量 + */ + private Long bigTousseAmount; + /** + * 小包数量 + */ + private Long smallTousseAmount; + /** + * 灭菌包数量 + */ + private Long sterilizationTousseAmount; + public ForeignTousseSupplierStatisticsReportVO(){} + public ForeignTousseSupplierStatisticsReportVO(String dateStr, String supplierName, Long toolAmount, Long implantAmount, Long bigTousseAmount, Long smallTousseAmount, Long sterilizationTousseAmount){ + this.dateStr = dateStr; + this.supplierName = supplierName; + this.toolAmount = toolAmount; + this.implantAmount = implantAmount; + this.bigTousseAmount = bigTousseAmount; + this.smallTousseAmount = smallTousseAmount; + this.sterilizationTousseAmount = sterilizationTousseAmount; + } + public String getDateStr() { + return dateStr; + } + public void setDateStr(String dateStr) { + this.dateStr = dateStr; + } + public String getSupplierName() { + return supplierName; + } + public void setSupplierName(String supplierName) { + this.supplierName = supplierName; + } + public Long getToolAmount() { + return toolAmount; + } + public void setToolAmount(Long toolAmount) { + this.toolAmount = toolAmount; + } + public Long getImplantAmount() { + return implantAmount; + } + public void setImplantAmount(Long implantAmount) { + this.implantAmount = implantAmount; + } + public Long getBigTousseAmount() { + return bigTousseAmount; + } + public void setBigTousseAmount(Long bigTousseAmount) { + this.bigTousseAmount = bigTousseAmount; + } + public Long getSmallTousseAmount() { + return smallTousseAmount; + } + public void setSmallTousseAmount(Long smallTousseAmount) { + this.smallTousseAmount = smallTousseAmount; + } + public Long getSterilizationTousseAmount() { + return sterilizationTousseAmount; + } + public void setSterilizationTousseAmount(Long sterilizationTousseAmount) { + this.sterilizationTousseAmount = sterilizationTousseAmount; + } +} Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r33256 -r33273 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 33256) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 33273) @@ -24869,4 +24869,125 @@ } return itemList; } + + @Override + public List foreignTousseSupplierStatisticsReportDate( + String startDate, String endDate, String timeType, + String supplierName, Long customTimePeriodId, String reportType) { + String dateSql = null; + startDate = dateQueryAdapter.dateAdapter(startDate); + endDate = dateQueryAdapter.dateAdapter(endDate); + String timeFieldName = ""; + String queryDateSql = ""; + String orderAndGroupByDateSql = ""; + if("申请时间".equals(timeType)){ + dateSql = String.format("and (i.applicationTime between %s and %s)", startDate, endDate); + timeFieldName = "i.applicationTime"; + if("按日期汇总".equals(reportType)){ + queryDateSql = " CONVERT(varchar(100), i.applicationTime, 23) dateStr,"; + orderAndGroupByDateSql= "i.applicationTime,"; + } + }else if("发货时间".equals(timeType)){ + dateSql = String.format("and (tit.invoiceSendTime2 is not null and tit.invoiceSendTime2 " + + "between %s and %s or tit.invoiceSendTime2 is null " + + "and tit.invoiceSendTime between %s and %s)", + startDate,endDate,startDate,endDate); + if("按日期汇总".equals(reportType)){ + queryDateSql = " case when tit.invoiceSendTime2 is not null then CONVERT(varchar(100), tit.invoiceSendTime2, 23) else CONVERT(varchar(100), tit.invoiceSendTime, 23) end dateStr,"; + orderAndGroupByDateSql = "case when tit.invoiceSendTime2 is not null then CONVERT(varchar(100), tit.invoiceSendTime2, 23) else CONVERT(varchar(100), tit.invoiceSendTime, 23) end ,"; + } + }else{//接收时间 + dateSql = String.format("and (f.receiveTime between %s and %s)", startDate, endDate); + timeFieldName = "f.receiveTime"; + if("按日期汇总".equals(reportType)){ + queryDateSql = "CONVERT(varchar(100), f.receiveTime, 23) dateStr,"; + orderAndGroupByDateSql= "f.receiveTime,"; + } + } + String customTimePeriodSql = ""; + if(DatabaseUtil.isPoIdValid(customTimePeriodId)){ + CustomTimePeriod customTimePeriod = (CustomTimePeriod)objectDao.getById(CustomTimePeriod.class.getSimpleName(), customTimePeriodId); + String startTime = customTimePeriod.getStartTime(); + String endTime = customTimePeriod.getEndTime(); + if("发货时间".equals(timeType)){ + if(dbConnection.isSqlServer()){ + String[] startTimeArr = startTime.split(":"); + String startTimeHour = startTimeArr[0]; + String startTimeMinute = startTimeArr[1]; + String[] endTimeArr = endTime.split(":"); + String endTimeHour = endTimeArr[0]; + String endTimeMinute = endTimeArr[1]; + customTimePeriodSql = " and (tit.invoiceSendTime2 is not null and (datepart(hour,tit.invoiceSendTime2)="+ startTimeHour +" and datepart(MINUTE,tit.invoiceSendTime2)>="+ startTimeMinute + + " or datepart(hour,tit.invoiceSendTime2)="+ endTimeHour +" and datepart(MINUTE,tit.invoiceSendTime2)<= " + endTimeMinute + + " or datepart(hour,tit.invoiceSendTime2)>"+ startTimeHour +" and datepart(hour,tit.invoiceSendTime2)< " + endTimeHour + " ) or tit.invoiceSendTime2 is null and " + + " (datepart(hour,tit.invoiceSendTime)="+ startTimeHour +" and datepart(MINUTE,tit.invoiceSendTime)>="+ startTimeMinute + + " or datepart(hour,tit.invoiceSendTime)="+ endTimeHour +" and datepart(MINUTE,tit.invoiceSendTime)<= " + endTimeMinute + + " or datepart(hour,tit.invoiceSendTime)>"+ startTimeHour +" and datepart(hour,tit.invoiceSendTime)< " + endTimeHour + ")) "; + }else if(dbConnection.isOracle()){ + customTimePeriodSql = " and (tit.invoiceSendTime2 is not null and TO_CHAR(tit.invoiceSendTime2, 'hh24:mi:ss') BETWEEN '" + + startTime +":00' AND '" + + endTime +":00' or tit.invoiceSendTime2 is null and tit.invoiceSendTime BETWEEN '" + + startTime +":00' AND '" + + endTime + ":00')"; + }else{ + customTimePeriodSql = ""; + } + }else{ + customTimePeriodSql = getTimeFieldQueryStatement(dbConnection, customTimePeriod.getStartTime(), customTimePeriod.getEndTime(), timeFieldName); + } + } + String supplierNameWhereSql = ""; + String supplierNameWhereSql2 = ""; + if(StringUtils.isNotBlank(supplierName)){ + supplierNameWhereSql = " where tdd.supplierName='" + supplierName +"' "; + supplierNameWhereSql2 = " and td.supplierName='" + supplierName +"' "; + } + String sql = String.format("select %s td.supplierName,count(distinct tit.id) sterilizationTousseAmount,sum(case when mi.isImplant='是' then mi.count else 0 end) implantAmount " + + ",sum(case when mi.isImplant='是' then 0 else mi.count end) toolAmount" + + ",count(distinct case when b.basketSize='大包' then b.id else null end) bigTousseAmount " + + ",count(distinct case when b.basketSize='小包' then b.id else null end) smallTousseAmount " + + " from %s f join %s i on f.id=i.id " + + " join %s tit on tit.foreignTousseApp_id=f.id" + + " join %s td on td.id=tit.tousseDefinition_id " + + " left join %s mi on mi.tousse_id=tit.tousseDefinition_id " + + " left join (" + + " select distinct ci.invoicePlanID,cb.id,cb.basketSize from " + + " %s cb join " + + " %s ci on ci.classifybasket_id=cb.id" + + " left join %s tdd on tdd.id=ci.tousseDefinitionID %s " + + " ) b on b.invoicePlanID=f.id " + + " where 1=1 %s %s %s ", + queryDateSql, + ForeignTousseApplication.class.getSimpleName(), + InvoicePlan.class.getSimpleName(), + TousseInstance.class.getSimpleName(), + TousseDefinition.class.getSimpleName(), + MaterialInstance.class.getSimpleName(), + ClassifyBasket.class.getSimpleName(), + ClassifiedItem.class.getSimpleName(), + TousseDefinition.class.getSimpleName(), + supplierNameWhereSql, + dateSql,customTimePeriodSql,supplierNameWhereSql2); + + sql += " group by "+ orderAndGroupByDateSql +" td.supplierName order by "+ orderAndGroupByDateSql +" td.supplierName "; + ResultSet rs = null; + List vos = new ArrayList(); + try { + rs = objectDao.executeSql(sql); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + while (rs.next()) { + String dateStr = null; + if("按日期汇总".equals(reportType)){ + dateStr = rs.getString("dateStr"); + } + ForeignTousseSupplierStatisticsReportVO vo = new ForeignTousseSupplierStatisticsReportVO(dateStr, rs.getString("supplierName"), rs.getLong("toolAmount"), rs.getLong("implantAmount"), rs.getLong("bigTousseAmount"), rs.getLong("smallTousseAmount"), rs.getLong("sterilizationTousseAmount")); + vos.add(vo); + } + } catch (Exception e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + return vos; + } } Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java =================================================================== diff -u -r33237 -r33273 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java (.../JasperReportManager.java) (revision 33237) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManager.java (.../JasperReportManager.java) (revision 33273) @@ -38,6 +38,7 @@ import com.forgon.disinfectsystem.jasperreports.javabeansource.ForeignTousseApplicationVO; import com.forgon.disinfectsystem.jasperreports.javabeansource.ForeignTousseSizeReportBean; import com.forgon.disinfectsystem.jasperreports.javabeansource.ForeignTousseSterilizationMonitorAndDeliveryVO; +import com.forgon.disinfectsystem.jasperreports.javabeansource.ForeignTousseSupplierStatisticsReportVO; import com.forgon.disinfectsystem.jasperreports.javabeansource.FormInstanceVo; import com.forgon.disinfectsystem.jasperreports.javabeansource.GodownEntryItemVo; import com.forgon.disinfectsystem.jasperreports.javabeansource.GodownEntryStatistic_main; @@ -1195,5 +1196,16 @@ * @throws ParseException */ public List getSatisfyDataSource() throws SQLException, ParseException; + /** + * 外来器械包供应商统计报表 + * @param startDate + * @param endDate + * @param timeType 时间类型 + * @param supplierName 供应商 + * @param customTimePeriodId 自定义时间段id + * @param reportType 报表类型 + * @return + */ + public List foreignTousseSupplierStatisticsReportDate(String startDate, String endDate, String timeType, String supplierName, Long customTimePeriodId, String reportType); } Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java =================================================================== diff -u -r33258 -r33273 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 33258) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 33273) @@ -2052,6 +2052,20 @@ requestParameters.put("jasperreportName","packingRecordReportNotHaveForeign.jasper"); } return resultList; + }else if("foreignTousseSupplierStatisticsReport".equals(reportName)){//外来器械包供应商统计报表 + String startDate = StrutsParamUtils.getPraramValue("startDate", ""); + String endDate = StrutsParamUtils.getPraramValue("endDate", ""); + String timeType = StrutsParamUtils.getPraramValue("timeType", ""); + String supplierName = StrutsParamUtils.getPraramValue("supplierName", ""); + Long customTimePeriodId = StrutsParamUtils.getPraramLongValue("customTimePeriodId", 0L); + String reportType = StrutsParamUtils.getPraramValue("reportType", ""); + if (StringUtils.isNotBlank(startDate)) { + startDate += ":00"; + } + if (StringUtils.isNotBlank(endDate)) { + endDate += ":59"; + } + return jasperReportManager.foreignTousseSupplierStatisticsReportDate(startDate, endDate, timeType, supplierName, customTimePeriodId, reportType); } return null; } @@ -4389,7 +4403,7 @@ } } /** - * 报表查询 主要是一些配置项过多不方便使用jasper的报表 + * 报表查询 不使用jasper 主要是一些配置项过多不方便使用jasper的报表 */ public void queryDataSourceList(){ JSONObject obj = new JSONObject();