Sfoglia il codice sorgente

医院距离计算优化

baifucheng 10 ore fa
parent
commit
0f4e6f7274

+ 14 - 3
ruoyi-api/src/main/java/com/ruoyi/api/controller/info/ApiHospitalController.java

@@ -47,15 +47,26 @@ public class ApiHospitalController {
                 if (StrUtil.isEmpty(hospitalVo.getCoordinates())) {
                     continue;
                 }
+
+                // 获取两个点位的相对距离,单位:米
                 double distance = MapTools.calculate(coordinates.split(",")[0], coordinates.split(",")[1],
                     hospitalVo.getCoordinates().split(",")[0], hospitalVo.getCoordinates().split(",")[1]);
 
-                // 转化为km,保留一位小数
-                BigDecimal relativeDistance = BigDecimal.valueOf(distance).abs().divide(BigDecimal.valueOf(1000),  1, RoundingMode.HALF_UP);
-                hospitalVo.setRelativeDistance(relativeDistance);
+//                BigDecimal relativeDistance = BigDecimal.valueOf(distance).abs().divide(BigDecimal.valueOf(1000),  1, RoundingMode.HALF_UP);
+                hospitalVo.setRelativeDistance(BigDecimal.valueOf(distance).abs().setScale(0, RoundingMode.DOWN));
+                hospitalVo.setDistanceUnit("m");
             }
             // 根据相对距离排序,从小到大
             hospitalVoList.sort(Comparator.comparing(HospitalVo::getRelativeDistance));
+
+            for (HospitalVo hospitalVo : hospitalVoList) {
+                // 如果相对距离大于1000米,则转换为km,保留一位小数
+                if (hospitalVo.getRelativeDistance().compareTo(BigDecimal.valueOf(1000)) > 0) {
+                    BigDecimal relativeDistance = hospitalVo.getRelativeDistance().divide(BigDecimal.valueOf(1000),  1, RoundingMode.HALF_UP);
+                    hospitalVo.setRelativeDistance(relativeDistance);
+                    hospitalVo.setDistanceUnit("km");
+                }
+            }
         }
 
         return R.ok(hospitalVoList);

+ 7 - 1
ruoyi-info/src/main/java/com/ruoyi/info/hospital/domain/vo/HospitalVo.java

@@ -185,9 +185,15 @@ public class HospitalVo implements Serializable {
     /**
      * 相对距离
      */
-    @ApiModelProperty("相对距离 单位:km")
+    @ApiModelProperty("相对距离")
     private BigDecimal relativeDistance;
 
+    /**
+     * 距离单位
+     */
+    @ApiModelProperty("距离单位")
+    private String distanceUnit;
+
     /**
      * 创建时间
      */