diff --git a/src/main/java/com/objecteye/service/impl/HumanVehicleAssociationServiceImpl.java b/src/main/java/com/objecteye/service/impl/HumanVehicleAssociationServiceImpl.java index 400219e..7780c0e 100644 --- a/src/main/java/com/objecteye/service/impl/HumanVehicleAssociationServiceImpl.java +++ b/src/main/java/com/objecteye/service/impl/HumanVehicleAssociationServiceImpl.java @@ -303,66 +303,41 @@ public class HumanVehicleAssociationServiceImpl implements HumanVehicleAssociati } double currentFea = compareDistance.getDistance(currentFeature); - -// //遍历mongodb所有的车辆信息 + //遍历mongodb所有的车辆信息 List pvc = new ArrayList(); - - int numberCount = 0; - for (int i = 0; i < allRabbitMQVehicleList.size(); i++) { - numberCount++; - RabbitMQVehicle rmqv = allRabbitMQVehicleList.get(i); - int vehicle_special_type = rmqv.getVehicle_special_type(); - - double[] dbFeature = rmqv.getVehicle_fea_feature(); + for (RabbitMQVehicle rabbitMQVehicle : allRabbitMQVehicleList) { + int vehicle_special_type = rabbitMQVehicle.getVehicle_special_type(); + double[] dbFeature = rabbitMQVehicle.getVehicle_fea_feature(); //进行比对 double dbFea = compareDistance.getDistance(dbFeature); double similar = compareDistance.simDistance(currentFeature, currentFea, dbFeature, dbFea); if (threshold <= similar) { similar = (double) Math.round(similar * 100) / 100; similar = similar >= 1 ? 1 : similar; - PicVehicleCompare picVehicleCompare = new PicVehicleCompare(); picVehicleCompare.setSimilar(similar); - picVehicleCompare.setRabbitMQVehicle(rmqv); + picVehicleCompare.setRabbitMQVehicle(rabbitMQVehicle); pvc.add(picVehicleCompare); } - } //对row进行排序 - pvc.sort(new Comparator() { - @Override - public int compare(PicVehicleCompare o1, PicVehicleCompare o2) { - if (o2.getSimilar() == o1.getSimilar()) { - return 0; - } else { - return (o2.getSimilar() > o1.getSimilar()) ? 1 : -1; - } + pvc.sort((o1, o2) -> { + if (o2.getSimilar() == o1.getSimilar()) { + return 0; + } else { + return (o2.getSimilar() > o1.getSimilar()) ? 1 : -1; } }); //对row进行分页查询 - ArrayList picVehicleComparesNew = new ArrayList<>(); - int startNumber = (currentpage - 1) * pagevolume; - int endNumber = startNumber + pagevolume; - endNumber = pagevolume > (pvc.size() - startNumber) ? pvc.size() : endNumber; - for (int m = startNumber; m < endNumber; m++) { - PicVehicleCompare picVehicleCompare = pvc.get(m); - picVehicleComparesNew.add(picVehicleCompare); - } - - //获取total(总条数) - int total = pvc.size(); + List picVehicleComparesNew = UserTools.getPagedResultByBaseList(pvc, currentpage, pagevolume); //根据总条数获取总页数 - int totalPage = (int) Math.ceil(((double) total) / pagevolume); - - data = new JSONObject(); + int totalPage = UserTools.getPageTotalByBaseList(pvc, pagevolume); //获取row数据 JSONArray row = new JSONArray(); - Iterator it = picVehicleComparesNew.iterator(); - while (it.hasNext()) { - PicVehicleCompare next = it.next(); + for (PicVehicleCompare next : picVehicleComparesNew) { JSONObject rowData = new JSONObject(); //获取id RabbitMQVehicle rabbitMQVehicle1 = next.getRabbitMQVehicle(); @@ -381,7 +356,8 @@ public class HumanVehicleAssociationServiceImpl implements HumanVehicleAssociati rowData.put("picurl", rabbitMQVehicle1.getPicurl()); row.add(rowData); } - if (total > 0 && row != null && row.size() > 0) { + data = new JSONObject(); + if (pvc.size() > 0 && row.size() > 0) { data.put("total", totalPage); data.put("row", row); } diff --git a/src/main/java/com/objecteye/service/impl/SpecialtyServicesImpl.java b/src/main/java/com/objecteye/service/impl/SpecialtyServicesImpl.java index d1f854f..c8cded7 100644 --- a/src/main/java/com/objecteye/service/impl/SpecialtyServicesImpl.java +++ b/src/main/java/com/objecteye/service/impl/SpecialtyServicesImpl.java @@ -129,15 +129,9 @@ public class SpecialtyServicesImpl implements SpecialtyServices { }); //对row进行分页查询 - int startNumber = (currentpage - 1) * pagevolume; - int endNumber = startNumber + pagevolume; - endNumber = Math.min(endNumber, pvc.size()); - List picVehicleComparesNew = pvc.subList(startNumber, endNumber); - - //获取total(总条数) - int total = pvc.size(); - //根据总条数获取总页数 - int totalPage = (int) Math.ceil(((double) total) / pagevolume); + List picVehicleComparesNew = UserTools.getPagedResultByBaseList(pvc, currentpage, pagevolume); + //总页数 + int totalPage = UserTools.getPageTotalByBaseList(pvc, pagevolume); JSONObject data = new JSONObject(); @@ -163,14 +157,14 @@ public class SpecialtyServicesImpl implements SpecialtyServices { data.put("total", totalPage); data.put("row", row); - if (total > 0 && row.size() > 0) { + if (pvc.size() > 0 && row.size() > 0) { result.put("code", 200); result.put("message", "操作成功"); result.put("data", data); } else { result.put("code", 201); result.put("message", "没有符合要求的数据"); - data.put("total", total); + data.put("total", pvc.size()); data.put("row", row); result.put("data", data); } diff --git a/src/main/java/com/objecteye/service/impl/VehicleCurrencyServiceImpl.java b/src/main/java/com/objecteye/service/impl/VehicleCurrencyServiceImpl.java index e0c0fac..29b998e 100644 --- a/src/main/java/com/objecteye/service/impl/VehicleCurrencyServiceImpl.java +++ b/src/main/java/com/objecteye/service/impl/VehicleCurrencyServiceImpl.java @@ -273,19 +273,9 @@ public class VehicleCurrencyServiceImpl implements VehicleCurrencyService { }); //对row进行分页查询 - ArrayList picVehicleComparesNew = new ArrayList<>(); - int startNumber = (currentpage - 1) * pagevolume; - int endNumber = startNumber + pagevolume; - endNumber = pagevolume > (pvc.size() - startNumber) ? pvc.size() : endNumber; - for (int m = startNumber; m < endNumber; m++) { - PicVehicleCompare picVehicleCompare = pvc.get(m); - picVehicleComparesNew.add(picVehicleCompare); - } - - //获取total(总条数) - int total = pvc.size(); - //根据总条数获取总页数 - int totalPage = (int) Math.ceil(((double) total) / pagevolume); + List picVehicleComparesNew = UserTools.getPagedResultByBaseList(pvc, currentpage, pagevolume); + //总页数 + int totalPage = UserTools.getPageTotalByBaseList(pvc, pagevolume); ArrayList picVehicleRows = new ArrayList<>(); for (PicVehicleCompare next : picVehicleComparesNew) { @@ -294,12 +284,9 @@ public class VehicleCurrencyServiceImpl implements VehicleCurrencyService { // 新方法,如果不需要四舍五入,可以使用RoundingMode.DOWN double similar = next.getSimilar(); String picurl = rabbitMqVehicle1.getPicurl(); - //获取到快照路径 String snapshoturl = rabbitMqVehicle1.getSnapshoturl(); - String bg = String.format("%.3f", similar); - //因为需要将快照图的值给picurl所以需要下面的返回方式 PicVehicleRow picVehicleRow = new PicVehicleRow(rabbitMqVehicle1.getId(), rabbitMqVehicle1.getRecordid(), rabbitMqVehicle1.getVehicle_plate_hphm(), snapshoturl, picurl, bg, @@ -309,7 +296,6 @@ public class VehicleCurrencyServiceImpl implements VehicleCurrencyService { } PicVehicleDataResult picVehicleDataResult = new PicVehicleDataResult(totalPage, picVehicleRows); - if (picVehicleDataResult.getRow().size() <= 0) { return CommonResult.success(201, "没有查询到任何数据", null); } else { diff --git a/src/main/java/com/objecteye/utils/UserTools.java b/src/main/java/com/objecteye/utils/UserTools.java index 72da657..da7fbb4 100644 --- a/src/main/java/com/objecteye/utils/UserTools.java +++ b/src/main/java/com/objecteye/utils/UserTools.java @@ -28,30 +28,62 @@ public class UserTools { * 统一手动分页 * * @param baseList 原始数据集合 - * @param currentpage 页码 - * @param pagevolume 页面容量 + * @param currentPage 页码 + * @param pageVolume 页面容量 * @return 结果集 */ - public static PageResult makePageResultByBaseList(List baseList, Integer currentpage, Integer pagevolume) { - // 总页数 - int pageTotal = (baseList.size() / pagevolume) + ((baseList.size() % pagevolume > 0) ? 1 : 0); + public static PageResult makePageResultByBaseList(List baseList, int currentPage, int pageVolume) { + return new PageResult<>(getPageTotalByBaseList(baseList, pageVolume), + getPagedResultByBaseList(baseList, currentPage, pageVolume)); + } + + /** + * 手动分页获取页码数量 + * + * @param baseList 原始数据集合 + * @param pageVolume 页面容量 + * @return 页数 + */ + public static int getPageTotalByBaseList(List baseList, int pageVolume) { + return getPageTotalByBaseList(baseList.size(), pageVolume); + } + + /** + * 手动分页获取页码数量 + * + * @param size 集合数量 + * @param pageVolume 页面容量 + * @return 页数 + */ + public static int getPageTotalByBaseList(int size, int pageVolume) { + return (size / pageVolume) + ((size % pageVolume > 0) ? 1 : 0); + } - int fromIndex = (currentpage - 1) * pagevolume; + /** + * 手动获取分页对应页面的数据 + * + * @param baseList 原始数据集合 + * @param currentPage 页码 + * @param pageVolume 页面容量 + * @return 数据集合 + */ + public static List getPagedResultByBaseList(List baseList, int currentPage, int pageVolume) { + int pageTotal = getPageTotalByBaseList(baseList, pageVolume); + int fromIndex = (currentPage - 1) * pageVolume; int toIndex; - if (currentpage == pageTotal) { + if (currentPage == pageTotal) { toIndex = baseList.size(); } else if (pageTotal == 0) { - return new PageResult<>(pageTotal, new ArrayList<>()); + return new ArrayList<>(); } else { - toIndex = currentpage * pagevolume; + toIndex = currentPage * pageVolume; if (toIndex > baseList.size()) { toIndex = baseList.size(); } if (fromIndex >= toIndex) { - return new PageResult<>(pageTotal, new ArrayList<>()); + return new ArrayList<>(); } } - - return new PageResult<>(pageTotal, baseList.subList(fromIndex, toIndex)); + return baseList.subList(fromIndex, toIndex); } }