问题:
分页后,数据重复,有些无法显示,数据非常混乱。然而,开发环境和测试环境无法重现,现场没有测试环境,正式环境一直存在问题。
解决过程:
后台跟踪数据库sql发现数据库返回正常,所以问题应该在代码上。
但数据库查询后,只是遍历赋值,没有特殊操作。
类似发现类似问题的原因有两个:
1.如果分页后需要操作数据,则需要先操作数据getList()之后再操作,这里已经有了List<MzhszPatReturn> patReturnList = pageInfo.getList(),排除这个问题;
2.很多人说是排序字段值重复造成的问题。sql没有排序,现在加上排序字段(唯一值)。现场暂时无法测试,暂时不确定是否有用。
代码:
PageInfo pageInfo = PageHelper.startPage(pageNum, pageSize, "id asc").doSelectPageInfo(() -> mzhszmapper.getPatientList(orgnCode, ksdm, kssj, jssj, klx, kbh)); PagedResult<MzhszPatReturn> pagedResult = new PagedResult<>(pageInfo); List<MzhszPatReturn> patReturnList = pageInfo.getList(); for (MzhszPatReturn patReturn : patReturnList) { patReturn.setNl(CommonUtils.getAge(patReturn.getCsrq())); patReturn.setYffl(""); //按用法分类 String yffls = ""; for (String yf : patReturn.getYpyf().split(",")) { List<Sys1Sjzd> searchYf = yfList.stream().filter(p -> p.getDmz().equals(yf)).collect(Collectors.toList()); if (searchYf.size() > 0) { String yffl = "静脉".equals(searchYf.get(0).getBz()) ? "输液" : searchYf.get(0).getBz(); if (!patReturn.getYffl().contains(yffl)) { yffls = yffls "," yffl; } } } if (yffls.length() > 1) { patReturn.setYffl(yffls.substring(1, yffls.length())); } } pagedResult.setList(patReturnList);