Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r33340 -r33355 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 33340) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 33355) @@ -23219,7 +23219,7 @@ .append(dateQueryAdapter.dateAdapter(endDate+" 23:59:59")) .append(") and fd.formName='") .append(formName) - .append("' and fdi.isReportDisplay='是' order by fdi.orderNumber,fdio.orderNumber asc"); + .append("' and fdi.isReportDisplay='是' order by fd.version desc,fdi.orderNumber,fdio.orderNumber asc"); ResultSet rs = null; Map> columnNameMap = new LinkedHashMap>(); Map columnWidthMap = new LinkedHashMap(); @@ -23228,6 +23228,10 @@ Map voMap = new HashMap(); try { rs = objectDao.executeSql(sbf.toString()); + Map fdiOrderNumberMap = new HashMap(); + Map fdioOrderNumberMap = new HashMap(); + int i = 1;//元素序号 用于不同版本中有相同序号的数据重新排列 + int j = 1;//元素值序号 用于不同版本中有相同序号的数据重新排列 while(rs.next()){ String formDefinitionItemName = rs.getString("name"); int version = rs.getInt("version"); @@ -23250,8 +23254,20 @@ if(vo.getVersion() == null || version > vo.getVersion()){ vo.setVersion(version); vo.setFdiName(formDefinitionItemName); - vo.setFdiOrderNumber(fdiOrderNumber); - vo.setFdioOrderNumber(fdioOrderNumber); + if(fdiOrderNumberMap.containsKey(formDefinitionItemName)){ + vo.setFdiOrderNumber(fdiOrderNumberMap.get(formDefinitionItemName)); + }else{ + vo.setFdiOrderNumber(i); + fdiOrderNumberMap.put(formDefinitionItemName, i); + i++; + } + if(fdioOrderNumberMap.containsKey(formDefinitionItemName)){ + vo.setFdioOrderNumber(fdioOrderNumberMap.get(formDefinitionItemName)); + }else{ + vo.setFdioOrderNumber(j); + fdiOrderNumberMap.put(formDefinitionItemName, j); + j++; + } vo.setValue(value); vo.setDisplayFormat(displayFormat); vo.setType(type);