Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r27687 -r27695 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 27687) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 27695) @@ -10982,26 +10982,25 @@ @Override public List getForeignTousseApplicationReport( String startDay, String endDay, String goodsName, String deptName , String patientName , String deliverStatus, String companyName, String departOfPatient) { + boolean filterConpanyName = false;//是否过滤供应商 + if(StringUtils.isNotBlank(companyName)){ + filterConpanyName = true; + } List list = new LinkedList(); if (StringUtils.isNotBlank(endDay)) { endDay += " 23:59:59"; } StringBuilder sqlBuilder = new StringBuilder(); -// String sql = String -// .format("select distinct f.id from %s f,%s i,%s t where f.id=t.recyclingApplication_ID and (f.applicationTime between %s and %s) ", -// InvoicePlan.class.getSimpleName(), -// TousseItem.class.getSimpleName(), -// dateQueryAdapter.dateAdapter(startDay), -// dateQueryAdapter.dateAdapter(endDay)); String sql = String - .format("select f.id from %s f join %s i on f.id=i.id where (i.applicationTime between %s and %s) ", + .format("select tit.tousseName,f.id,ti.supplierName,i.applicationTime,i.applicant,i.remark,f.patient,f.surgery,f.hospitalNumber,i.depart,i.deliverStatus,f.ascriptionDepartment,f.doctor,f.processType,count(tit.id) amount from %s f join %s i on f.id=i.id left join %s ti on ti.recyclingApplication_ID=i.id left join %s tit on tit.foreignTousseApp_id=f.id where (i.applicationTime between %s and %s) ", ForeignTousseApplication.class.getSimpleName(), InvoicePlan.class.getSimpleName(), + TousseItem.class.getSimpleName(), + TousseInstance.class.getSimpleName(), dateQueryAdapter.dateAdapter(startDay), dateQueryAdapter.dateAdapter(endDay)); sqlBuilder.append(sql); if (StringUtils.isNotBlank(goodsName)) { -// sql = " and t.tousseName = '" + goodsName + "'"; sql = String .format(" and f.id=(select t.recyclingApplication_ID from %s t where t.recyclingApplication_ID=f.id and t.tousseName = '%s')",TousseItem.class.getSimpleName(),goodsName); sqlBuilder.append(sql); @@ -11021,87 +11020,67 @@ if(StringUtils.isNotBlank(departOfPatient)){ sqlBuilder.append(" and f.ascriptionDepartment ='").append(departOfPatient).append("' "); } - sqlBuilder.append(" order by i.id asc"); - ResultSet rs = objectDao.executeSql(sqlBuilder.toString()); - boolean filterConpanyName = false;//是否过滤供应商 - if(StringUtils.isNotBlank(companyName)){ - filterConpanyName = true; + if(filterConpanyName){ + sqlBuilder.append(" and ti.SupplierName='").append(companyName).append("' "); } + sqlBuilder.append(" group by tit.tousseName,f.id,ti.supplierName,i.applicationTime,i.applicant,i.remark,f.patient,f.surgery,f.hospitalNumber,i.depart,i.deliverStatus,f.ascriptionDepartment,f.doctor,f.processType order by f.id asc "); + ResultSet rs = null; try { + rs = objectDao.executeSql(sqlBuilder.toString()); + Map voMap = new LinkedHashMap(); while (rs.next()) { Long id = rs.getLong("id"); - ForeignTousseApplication foreignTousseApplication = (ForeignTousseApplication) objectDao - .getByProperty( - ForeignTousseApplication.class.getSimpleName(), - "id", id); - List appItems = foreignTousseApplication.getApplicationItems(); - String supplierName = null; - if(appItems != null && appItems.size()>0){ - supplierName = appItems.get(0).getSupplierName(); - } - if(filterConpanyName && !companyName.equals(supplierName)){//供应商过滤 - continue; - } - ForeignTousseApplicationVO vo = new ForeignTousseApplicationVO(); - if(StringUtils.isNotBlank(supplierName)){ - vo.setSupplierName(supplierName); - } - String applicationTimeStr = ""; - if (foreignTousseApplication.getApplicationTime() != null) { - applicationTimeStr = Constants.SIMPLEDATEFORMAT_YYYYMMDD - .format(foreignTousseApplication - .getApplicationTime()); - } - vo.setApplicationTimeStr(StringTools.defaultIfBlank(applicationTimeStr,"")); - vo.setApplicant(StringTools.defaultIfBlank(foreignTousseApplication.getApplicant(),"")); - vo.setRemark(StringTools.defaultIfBlank(foreignTousseApplication.getRemark(),"")); - vo.setPatient(StringTools.defaultIfBlank(foreignTousseApplication.getPatient(),"")); - vo.setSurgery(StringTools.defaultIfBlank(foreignTousseApplication.getSurgery(),"")); - vo.setHospitalNumber(StringTools.defaultIfBlank(foreignTousseApplication.getHospitalNumber(),"")); - vo.setDepart(StringTools.defaultIfBlank(foreignTousseApplication.getDepart(),"")); - vo.setDeliverStatus(StringTools.defaultIfBlank(foreignTousseApplication.getDeliverStatus(),"")); - vo.setAscriptionDepartment(StringTools.defaultIfBlank(foreignTousseApplication.getAscriptionDepartment(),"")); - vo.setDoctor(StringTools.defaultIfBlank(foreignTousseApplication.getDoctor(),"")); - vo.setProcessType(StringTools.defaultIfBlank(foreignTousseApplication.getProcessType(),"")); - if(vo.getProcessType() == null){ - vo.setProcessType(""); - } - // 拆包信息 - String tousseItemVOSql = String - .format("select t.tousseName,count(*) from %s t where t.foreignTousseApp_id=%s group by t.tousseName", - TousseInstance.class.getSimpleName(), id); - - List tousseItems = vo.getTousseItems(); - - ResultSet tousseItemVORS = objectDao - .executeSql(tousseItemVOSql); - - try { - while (tousseItemVORS.next()) { - String itemName = tousseItemVORS.getString(1); - // 去掉包名下划线 - if(StringUtils.isNotBlank(itemName)){ - itemName = itemName.replaceAll("_", ""); - } - long tousseInstanceAmount = tousseItemVORS.getLong(2); - TousseItemVO tousseItemVO = new TousseItemVO(); - tousseItemVO.setItemName(itemName); - tousseItemVO - .setTousseInstanceAmount(tousseInstanceAmount); - tousseItems.add(tousseItemVO); + ForeignTousseApplicationVO vo = null; + if(voMap.containsKey(id)){ + vo = voMap.get(id); + }else{ + vo = new ForeignTousseApplicationVO(); + String supplierName = rs.getString("supplierName"); + if(StringUtils.isNotBlank(supplierName)){ + vo.setSupplierName(supplierName); } - - } catch (Exception e) { - e.printStackTrace(); - } finally { - DatabaseUtil.closeResultSetAndStatement(tousseItemVORS); + String applicationTimeStr = ""; + Date applicationTime = rs.getTimestamp("applicationTime"); + ForeignTousseApplication foreignTousseApplication = null; + if (applicationTime != null) { + applicationTimeStr = Constants.SIMPLEDATEFORMAT_YYYYMMDD + .format(applicationTime); + } + vo.setApplicationTimeStr(StringTools.defaultIfBlank(applicationTimeStr,"")); + vo.setApplicationTimeStr(StringTools.defaultIfBlank(applicationTimeStr,"")); + vo.setApplicant(StringTools.defaultIfBlank(rs.getString("applicant"),"")); + vo.setRemark(StringTools.defaultIfBlank(rs.getString("remark"),"")); + vo.setPatient(StringTools.defaultIfBlank(rs.getString("patient"),"")); + vo.setSurgery(StringTools.defaultIfBlank(rs.getString("surgery"),"")); + vo.setHospitalNumber(StringTools.defaultIfBlank(rs.getString("hospitalNumber"),"")); + vo.setDepart(StringTools.defaultIfBlank(rs.getString("depart"),"")); + vo.setDeliverStatus(StringTools.defaultIfBlank(rs.getString("deliverStatus"),"")); + vo.setAscriptionDepartment(StringTools.defaultIfBlank(rs.getString("ascriptionDepartment"),"")); + vo.setDoctor(StringTools.defaultIfBlank(rs.getString("doctor"),"")); + vo.setProcessType(StringTools.defaultIfBlank(rs.getString("processType"),"")); + voMap.put(id, vo); + list.add(vo); + } + long amount = rs.getLong("amount"); + if(amount > 0){ + String tousseName = rs.getString("tousseName"); + // 去掉包名下划线 + if(StringUtils.isNotBlank(tousseName)){ + tousseName = tousseName.replaceAll("_", ""); + } + List tousseItems = vo.getTousseItems(); + TousseItemVO tousseItemVO = new TousseItemVO(); + tousseItemVO.setItemName(tousseName); + tousseItemVO.setTousseInstanceAmount(amount); + tousseItems.add(tousseItemVO); } - // 如果是空的列表,要添加一个空的对象,避免单元格的线不显示。 + } + // 如果是空的列表,要添加一个空的对象,避免单元格的线不显示。 + for (Entry entry : voMap.entrySet()) { + List tousseItems = entry.getValue().getTousseItems(); if(tousseItems.size() == 0){ tousseItems.add(new TousseItemVO()); } - vo.setTousseItems(tousseItems); - list.add(vo); } } catch (SQLException e) { e.printStackTrace();