|
|
@@ -1,10 +1,27 @@
|
|
|
package com.ruoyi.api.controller.info;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
+import org.springframework.web.bind.annotation.GetMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestParam;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
+import com.ruoyi.common.core.domain.R;
|
|
|
+import com.ruoyi.common.utils.BeanCopyUtils;
|
|
|
+import com.ruoyi.common.utils.MapTools;
|
|
|
+import com.ruoyi.info.hospital.domain.bo.HospitalBo;
|
|
|
+import com.ruoyi.info.hospital.domain.vo.HospitalSimpleInfoVo;
|
|
|
+import com.ruoyi.info.hospital.domain.vo.HospitalVo;
|
|
|
+import com.ruoyi.info.hospital.service.IHospitalService;
|
|
|
+
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
import io.swagger.annotations.Api;
|
|
|
+import io.swagger.annotations.ApiOperation;
|
|
|
+import io.swagger.annotations.ApiParam;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
|
/**
|
|
|
@@ -18,5 +35,29 @@ import lombok.RequiredArgsConstructor;
|
|
|
@RequestMapping("/api/info/hospital")
|
|
|
public class ApiHospitalController {
|
|
|
|
|
|
+ private final IHospitalService iHospitalService;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取所有医院列表
|
|
|
+ */
|
|
|
+ @ApiOperation("查询医院信息列表")
|
|
|
+ @GetMapping("/list")
|
|
|
+ public R<List<HospitalSimpleInfoVo>> list(@ApiParam("经纬度,以逗号隔开") @RequestParam(required = false) String coordinates) {
|
|
|
+ List<HospitalVo> hospitalVoList = iHospitalService.queryList(new HospitalBo());
|
|
|
+ if (!StrUtil.isEmpty(coordinates)) {
|
|
|
+ // 如果坐标不为空,则计算相对距离
|
|
|
+ for (HospitalVo hospitalVo : hospitalVoList) {
|
|
|
+ if (StrUtil.isEmpty(hospitalVo.getCoordinates())) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ double distance = MapTools.calculate(coordinates.split(",")[0], coordinates.split(",")[1],
|
|
|
+ hospitalVo.getCoordinates().split(",")[0], hospitalVo.getCoordinates().split(",")[1]);
|
|
|
+
|
|
|
+ BigDecimal relativeDistance = BigDecimal.valueOf(distance).abs().setScale(1, RoundingMode.HALF_UP);
|
|
|
+ hospitalVo.setRelativeDistance(relativeDistance);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
+ return R.ok(BeanCopyUtils.copyList(hospitalVoList, HospitalSimpleInfoVo.class));
|
|
|
+ }
|
|
|
}
|