数据获取:从集合中获取某属性的列表
JSONArray arrPatient = DAO.newCommonBusinessDAO().getRealPatient(centerId,startDate,endDate,institutionCode,bFlag305);
//统计人数列表
List<String> lsPatientIdSatisticAccurate = lsPatientIdSatistic;//统计人数中的患者ID列表
arrPatient.stream().forEach(o-> lsPatientIdSatisticAccurate.add(((JSONObject)o).getString("patientId")));
数据筛选:已知目标数据属性,从大的集合中把目标数据筛选出来
Set<String> setMappedId = mapItemName2ItemIdSet.get("血红蛋白");
//获取 setMappedId 中的项目
JSONArray arrHb = hisTestReportArray.stream().filter(o-> setMappedId.contains( ((JSONObject)o).getString("itemId"))).collect(Collectors.toCollection(JSONArray::new));
if(arrHb!=null && arrHb.size()>0){
JSONObject joHb = arrHb.getJSONObject(arrHb.size()-1);//获取最后一个
}
xueHongDanBaiUnitElement.setText(arrHb.size()==0?"g/L":arrHb.getJSONObject(arrHb.size()-1).getString("unit"));
数据筛选:筛选出数据集中在某个日期之前的数据
JSONArray arrVasAcc = DAO.newDataPackageExportDao().getPatientVasAcc(institutionCode, dateStart, dateEnd, patientId, dbo);
if(arrVasAcc != null && arrVasAcc.size()>0){
//结束时间之前建立的最近一条通路
JSONArray arrReal = arrVasAcc.stream().filter(c->
StringUtils.isNotBlank(((JSONObject) c).getString("vascularAccessDate")) && ((JSONObject) c).getString("vascularAccessDate").compareTo(dateEnd)<0
).collect(Collectors.toCollection(JSONArray::new));
}
分组
// 将基础信息表和检验、检查数据表分开
Map<String, List<Object>> mapTableAll = arrTableAll.stream().collect(Collectors.groupingBy(o -> {
JSONObject obj = (JSONObject) o;
return obj.getString("isTestReport");
}));
// 13张基础信息表
List<Object> basicInfoList = mapTableAll.get("0");