|
@@ -382,7 +382,7 @@ public class FilterServiceImpl implements FilterService {
|
|
|
coordinates2[0] = jsonData.getLocation()[0];
|
|
|
coordinates2[1] = jsonData.getLocation()[1];
|
|
|
|
|
|
- Double distance = JsonUtil.distance(coordinates1, coordinates2, new Options().setUnits("miles"));
|
|
|
+ Double distance = DistanceUtil.distance(coordinates1, coordinates2, new Options().setUnits("miles"));
|
|
|
// log.info("计算出的距离:{}", distance);
|
|
|
|
|
|
if (queryJsonData.getRadius() > distance) {
|
|
@@ -416,7 +416,7 @@ public class FilterServiceImpl implements FilterService {
|
|
|
coordinates2[0] = jsonData.getLocation()[0];
|
|
|
coordinates2[1] = jsonData.getLocation()[1];
|
|
|
|
|
|
- Double distance = JsonUtil.distance(coordinates1, coordinates2, new Options().setUnits("miles"));
|
|
|
+ Double distance = DistanceUtil.distance(coordinates1, coordinates2, new Options().setUnits("miles"));
|
|
|
// log.info("计算出的距离:{}", distance);
|
|
|
|
|
|
if (queryJsonData.getRadius() > distance) {
|
|
@@ -470,7 +470,7 @@ public class FilterServiceImpl implements FilterService {
|
|
|
coordinates2[0] = jsonData.getLocation()[0];
|
|
|
coordinates2[1] = jsonData.getLocation()[1];
|
|
|
|
|
|
- Double distance = JsonUtil.distance(coordinates1, coordinates2, new Options().setUnits("miles"));
|
|
|
+ Double distance = DistanceUtil.distance(coordinates1, coordinates2, new Options().setUnits("miles"));
|
|
|
// log.info("计算出的距离:{}", distance);
|
|
|
// 默认取第一值
|
|
|
if (i==1) {
|
|
@@ -543,6 +543,12 @@ public class FilterServiceImpl implements FilterService {
|
|
|
return newJsonData;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 按最近距离排序
|
|
|
+ * @param queryJsonData
|
|
|
+ * @param jsonDataList
|
|
|
+ * @return
|
|
|
+ */
|
|
|
private List<FilterHotDto> calcule_5_1(QueryJsonDataOne queryJsonData, List<FilterHotDto> jsonDataList) {
|
|
|
log.info("run calcule");
|
|
|
// List<JsonData> newJsonData = new ArrayList<>();
|
|
@@ -560,7 +566,7 @@ public class FilterServiceImpl implements FilterService {
|
|
|
coordinates2[0] = jsonData.getLocation()[0];
|
|
|
coordinates2[1] = jsonData.getLocation()[1];
|
|
|
|
|
|
- Double distance = JsonUtil.distance(coordinates1, coordinates2, new Options().setUnits("miles"));
|
|
|
+ Double distance = DistanceUtil.distance(coordinates1, coordinates2, new Options().setUnits("miles"));
|
|
|
// log.info("计算出的距离:{}", distance);
|
|
|
|
|
|
if (queryJsonData.getRadius() > distance) {
|
|
@@ -713,7 +719,7 @@ public class FilterServiceImpl implements FilterService {
|
|
|
coordinates2[0] = jsonData.getLocation()[0];
|
|
|
coordinates2[1] = jsonData.getLocation()[1];
|
|
|
|
|
|
- Double distance = JsonUtil.distance(coordinates1, coordinates2, new Options().setUnits("miles"));
|
|
|
+ Double distance = DistanceUtil.distance(coordinates1, coordinates2, new Options().setUnits("miles"));
|
|
|
// log.info("计算出的距离:{}", distance);
|
|
|
// 默认取第一值
|
|
|
if (i==1) {
|
|
@@ -759,24 +765,25 @@ public class FilterServiceImpl implements FilterService {
|
|
|
List<FilterHotDto> data = getDataBySceneCode_5(code);
|
|
|
log.info("输入数量:{}", data.size());
|
|
|
|
|
|
- Stream<FilterHotDto> dataStream = data.stream();
|
|
|
// 过滤条件
|
|
|
Integer dataset = param.getDataset();
|
|
|
if (dataset != null) {
|
|
|
- dataStream = dataStream.filter(p -> dataset.equals(p.getDataset_id()));
|
|
|
+ data = data.stream().filter(p -> dataset.equals(p.getDataset_id())).collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
|
Integer site_model_entity = param.getSite_model_entity();
|
|
|
if (site_model_entity != null) {
|
|
|
- dataStream = dataStream.filter(p -> site_model_entity.equals(p.getSite_model_entity_id()));
|
|
|
+ data = data.stream().filter(p -> site_model_entity.equals(p.getSite_model_entity_id())).collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
|
- // 处理 z
|
|
|
- Double z = param.getZ();
|
|
|
- if (z != null) {
|
|
|
- dataStream = dataStream.filter(p ->
|
|
|
- p.getLocation()[2] >= z && p.getFloor_location()[2] <= z);
|
|
|
- }
|
|
|
+ // 暂时不处理- 2021-08-02
|
|
|
+// Double z = param.getZ();
|
|
|
+// if (z != null) {
|
|
|
+// dataStream = dataStream.filter(p ->
|
|
|
+// p.getLocation()[2] >= z && p.getFloor_location()[2] <= z);
|
|
|
+// data = dataStream.collect(Collectors.toList());
|
|
|
+// log.info("z-输出数量:{}", data.size());
|
|
|
+// }
|
|
|
|
|
|
|
|
|
// 处理 lat, lon
|
|
@@ -786,11 +793,12 @@ public class FilterServiceImpl implements FilterService {
|
|
|
// 处理半径, radius:半径
|
|
|
Double radius = param.getRadius();
|
|
|
if (radius != null) {
|
|
|
- dataStream = calcule_5_2(param, dataStream);
|
|
|
+ data = calcule_5_2(param, data);
|
|
|
} else {
|
|
|
- // 没有半径,算最近的距离
|
|
|
- dataStream = calculeMin_5_2(param, dataStream);
|
|
|
+ // 没有半径,算最近的距离, 返回值只有一天数据
|
|
|
+ data = calculeMin_5_2(param, data);
|
|
|
}
|
|
|
+ log.info("lat、lon-输出数量:{}", data.size());
|
|
|
}
|
|
|
|
|
|
|
|
@@ -800,9 +808,9 @@ public class FilterServiceImpl implements FilterService {
|
|
|
Double lonMax = param.getLon_max();
|
|
|
Double lonMin = param.getLon_min();
|
|
|
if (latMax != null && latMin != null && lonMax != null && lonMin != null) {
|
|
|
- dataStream = dataStream.filter(jsonData ->
|
|
|
+ data = data.stream().filter(jsonData ->
|
|
|
jsonData.getLocation()[0] >= lonMin && jsonData.getLocation()[0] <= lonMax
|
|
|
- && jsonData.getLocation()[1] >= latMin && jsonData.getLocation()[1] <= latMax);
|
|
|
+ && jsonData.getLocation()[1] >= latMin && jsonData.getLocation()[1] <= latMax).collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
|
|
|
@@ -811,7 +819,7 @@ public class FilterServiceImpl implements FilterService {
|
|
|
// 处理间隔数量
|
|
|
Integer step = param.getStep();
|
|
|
if (step != null){
|
|
|
- dataStream = executeStep(step, dataStream);
|
|
|
+ data = executeStep(step, data);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -826,19 +834,17 @@ public class FilterServiceImpl implements FilterService {
|
|
|
|
|
|
// 处理排序reversed()降序, 默认是升序
|
|
|
if ("desc".equals(sortBy) && "file_id".equals(sortOrder)) {
|
|
|
- dataStream = dataStream.sorted(Comparator.comparing(FilterHotDto::getFile_id).reversed());
|
|
|
+ data = data.stream().sorted(Comparator.comparing(FilterHotDto::getFile_id).reversed()).collect(Collectors.toList());
|
|
|
} else if ("asc".equals(sortBy) && "file_id".equals(sortOrder)){
|
|
|
- dataStream = dataStream.sorted(Comparator.comparing(FilterHotDto::getFile_id));
|
|
|
+ data = data.stream().sorted(Comparator.comparing(FilterHotDto::getFile_id)).collect(Collectors.toList());
|
|
|
}
|
|
|
-
|
|
|
+ log.info("排序数量-输出数量:{}", data.size());
|
|
|
|
|
|
Integer limit = param.getLimit();
|
|
|
limit = limit==null ? 10 : limit;
|
|
|
- dataStream = dataStream.limit(limit);
|
|
|
+ data = data.stream().limit(limit).collect(Collectors.toList());
|
|
|
|
|
|
- // 返回最近距离
|
|
|
|
|
|
- data = dataStream.collect(Collectors.toList());
|
|
|
log.info("输出数量:{}", data.size());
|
|
|
|
|
|
return Result.success(data);
|
|
@@ -849,17 +855,15 @@ public class FilterServiceImpl implements FilterService {
|
|
|
* 处理step step的值会有影响
|
|
|
* 当step=null, 0, 1不做处理
|
|
|
* @param inputStep
|
|
|
- * @param dataStream
|
|
|
* @return
|
|
|
*/
|
|
|
- private Stream<FilterHotDto> executeStep(Integer inputStep, Stream<FilterHotDto> dataStream) {
|
|
|
+ private List<FilterHotDto> executeStep(Integer inputStep, List<FilterHotDto> jsonDataList) {
|
|
|
|
|
|
- List<FilterHotDto> jsonDataList = dataStream.collect(Collectors.toList());
|
|
|
List<FilterHotDto> newJsonData = new ArrayList<>();
|
|
|
log.info("输入对象数量:{}", jsonDataList.size());
|
|
|
// 当inputStep为空、null、0、1 时返回全部数据
|
|
|
if (inputStep == null || inputStep==0 || inputStep==1) {
|
|
|
- return jsonDataList.stream();
|
|
|
+ return jsonDataList;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -879,13 +883,12 @@ public class FilterServiceImpl implements FilterService {
|
|
|
}
|
|
|
}
|
|
|
log.info("输出对象数量:{}", newJsonData.size());
|
|
|
- return newJsonData.stream();
|
|
|
+ return newJsonData;
|
|
|
}
|
|
|
|
|
|
|
|
|
- private Stream<FilterHotDto> calcule_5_2(FilterQueryDto queryJsonData, Stream<FilterHotDto> dataStream) {
|
|
|
+ private List<FilterHotDto> calcule_5_2(FilterQueryDto queryJsonData, List<FilterHotDto> jsonDataList) {
|
|
|
log.info("run calcule");
|
|
|
- List<FilterHotDto> jsonDataList = dataStream.collect(Collectors.toList());
|
|
|
|
|
|
// 计算距离后的结果集
|
|
|
Map<Double, FilterHotDto> calResultMap = new HashMap<>();
|
|
@@ -898,7 +901,7 @@ public class FilterServiceImpl implements FilterService {
|
|
|
coordinates2[0] = jsonData.getLocation()[0];
|
|
|
coordinates2[1] = jsonData.getLocation()[1];
|
|
|
|
|
|
- Double distance = JsonUtil.distance(coordinates1, coordinates2, new Options().setUnits("miles"));
|
|
|
+ Double distance = DistanceUtil.distance(coordinates1, coordinates2, new Options().setUnits("miles"));
|
|
|
// log.info("计算出的距离:{}", distance);
|
|
|
|
|
|
if (queryJsonData.getRadius() > distance) {
|
|
@@ -924,7 +927,7 @@ public class FilterServiceImpl implements FilterService {
|
|
|
result.add(calResultMap.get(p));
|
|
|
});
|
|
|
|
|
|
- return result.stream();
|
|
|
+ return result;
|
|
|
}
|
|
|
|
|
|
|
|
@@ -933,8 +936,7 @@ public class FilterServiceImpl implements FilterService {
|
|
|
* @param queryJsonData
|
|
|
* @return 获取最小值对象
|
|
|
*/
|
|
|
- private Stream<FilterHotDto> calculeMin_5_2(FilterQueryDto queryJsonData, Stream<FilterHotDto> dataStream) {
|
|
|
- List<FilterHotDto> jsonDataList = dataStream.collect(Collectors.toList());
|
|
|
+ private List<FilterHotDto> calculeMin_5_2(FilterQueryDto queryJsonData, List<FilterHotDto> jsonDataList) {
|
|
|
log.info("run calculeMin");
|
|
|
List<FilterHotDto> newJsonData = new ArrayList<>();
|
|
|
|
|
@@ -952,7 +954,7 @@ public class FilterServiceImpl implements FilterService {
|
|
|
coordinates2[0] = jsonData.getLocation()[0];
|
|
|
coordinates2[1] = jsonData.getLocation()[1];
|
|
|
|
|
|
- Double distance = JsonUtil.distance(coordinates1, coordinates2, new Options().setUnits("miles"));
|
|
|
+ Double distance = DistanceUtil.distance(coordinates1, coordinates2, new Options().setUnits("miles"));
|
|
|
// log.info("计算出的距离:{}", distance);
|
|
|
// 默认取第一值
|
|
|
if (i==1) {
|
|
@@ -972,7 +974,7 @@ public class FilterServiceImpl implements FilterService {
|
|
|
// 获取最小值
|
|
|
FilterHotDto minJson = calResultMap.get(min);
|
|
|
newJsonData.add(minJson);
|
|
|
- return newJsonData.stream();
|
|
|
+ return newJsonData;
|
|
|
}
|
|
|
|
|
|
|