Kaynağa Gözat

Merge remote-tracking branch 'origin/master'

guomengjiao 3 ay önce
ebeveyn
işleme
1c38e5e0c0

+ 41 - 0
ruoyi-api/src/main/java/com/ruoyi/api/controller/info/ApiHospitalController.java

@@ -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));
+    }
 }

+ 44 - 0
ruoyi-api/src/main/java/com/ruoyi/api/controller/info/ApiHospitalDepartmentController.java

@@ -0,0 +1,44 @@
+package com.ruoyi.api.controller.info;
+
+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.core.validate.QueryGroup;
+import com.ruoyi.info.hospital.domain.bo.HospitalDepartmentBo;
+import com.ruoyi.info.hospital.domain.vo.HospitalDepartmentVo;
+import com.ruoyi.info.hospital.service.IHospitalDepartmentService;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+
+/**
+ * @author fucheng.bai
+ * @date 2025/9/22
+ */
+@Validated
+@Api(value = "API 科室管理控制器", tags = {"科室管理"})
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/api/info/hospitalDepartment")
+public class ApiHospitalDepartmentController {
+
+    private final IHospitalDepartmentService iHospitalDepartmentService;
+
+    /**
+     * 获取科室列表
+     */
+    @ApiOperation("获取科室列表")
+    @GetMapping("/list")
+    public R<List<HospitalDepartmentVo>> list(@Validated(QueryGroup.class) HospitalDepartmentBo bo) {
+        return R.ok(iHospitalDepartmentService.queryByHospitalId(bo.getHospitalId()));
+    }
+
+
+}

+ 1 - 1
ruoyi-info/src/main/java/com/ruoyi/info/hospital/domain/HospitalDepartment.java

@@ -29,7 +29,7 @@ public class HospitalDepartment extends BaseEntity {
     /**
      * 医院id
      */
-    private String hospitalId;
+    private Long hospitalId;
     /**
      * 科室名称
      */

+ 1 - 1
ruoyi-info/src/main/java/com/ruoyi/info/hospital/domain/bo/HospitalDepartmentBo.java

@@ -39,7 +39,7 @@ public class HospitalDepartmentBo extends BaseEntity {
      */
     @ApiModelProperty(value = "医院id", required = true)
     @NotBlank(message = "医院id不能为空", groups = { AddGroup.class, EditGroup.class, QueryGroup.class })
-    private String hospitalId;
+    private Long hospitalId;
 
     /**
      * 科室名称

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

@@ -35,7 +35,7 @@ public class HospitalDepartmentVo {
      */
     @ExcelProperty(value = "医院id")
     @ApiModelProperty("医院id")
-    private String hospitalId;
+    private Long hospitalId;
 
     /**
      * 科室名称

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

@@ -7,6 +7,8 @@ import com.ruoyi.common.convert.ExcelDictConvert;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+
+import java.math.BigDecimal;
 import java.util.Date;
 
 
@@ -177,5 +179,9 @@ public class HospitalVo {
     @ApiModelProperty("排序序号")
     private Integer sortOrder;
 
-
+    /**
+     * 相对距离
+     */
+    @ApiModelProperty("相对距离 单位:km")
+    private BigDecimal relativeDistance;
 }

+ 8 - 0
ruoyi-info/src/main/java/com/ruoyi/info/hospital/service/IHospitalDepartmentService.java

@@ -82,4 +82,12 @@ public interface IHospitalDepartmentService {
      * @param bo
      */
     void updateRackStatus(HospitalDepartmentRackUpdateBo bo);
+
+    /**
+     * 根据医院id查询科室信息列表
+     *
+     * @param hospitalId 医院id
+     * @return 医院科室信息集合
+     */
+    List<HospitalDepartmentVo> queryByHospitalId(Long hospitalId);
 }

+ 18 - 2
ruoyi-info/src/main/java/com/ruoyi/info/hospital/service/impl/HospitalDepartmentServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ruoyi.info.hospital.service.impl;
 
 import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
@@ -68,7 +69,7 @@ public class HospitalDepartmentServiceImpl implements IHospitalDepartmentService
     private LambdaQueryWrapper<HospitalDepartment> buildQueryWrapper(HospitalDepartmentBo bo) {
         Map<String, Object> params = bo.getParams();
         LambdaQueryWrapper<HospitalDepartment> lqw = Wrappers.lambdaQuery();
-        lqw.eq(StringUtils.isNotBlank(bo.getHospitalId()), HospitalDepartment::getHospitalId, bo.getHospitalId());
+        lqw.eq(ObjectUtil.isNotNull(bo.getHospitalId()), HospitalDepartment::getHospitalId, bo.getHospitalId());
         lqw.like(StringUtils.isNotBlank(bo.getName()), HospitalDepartment::getName, bo.getName());
         lqw.ge(ObjectUtil.isNotNull(bo.getCreateTimeStart()), HospitalDepartment::getCreateTime, bo.getCreateTimeStart());
         lqw.le(ObjectUtil.isNotNull(bo.getCreateTimeEnd()), HospitalDepartment::getCreateTime, bo.getCreateTimeEnd());
@@ -147,7 +148,7 @@ public class HospitalDepartmentServiceImpl implements IHospitalDepartmentService
         // 医院名称不可重复
         LambdaQueryWrapper<HospitalDepartment> lqw = new LambdaQueryWrapper<HospitalDepartment>()
             .eq(HospitalDepartment::getName, entity.getName())
-            .eq(HospitalDepartment::getId, entity.getHospitalId());
+            .eq(HospitalDepartment::getHospitalId, entity.getHospitalId());
 
         List<HospitalDepartment> hospitalList = baseMapper.selectList(lqw);
         if (CollUtil.isNotEmpty(hospitalList)) {
@@ -197,4 +198,19 @@ public class HospitalDepartmentServiceImpl implements IHospitalDepartmentService
         baseMapper.updateById(hospitalDepartment);
     }
 
+    /**
+     * 根据医院id查询科室信息列表
+     *
+     * @param hospitalId 医院id
+     * @return
+     */
+    @Override
+    public List<HospitalDepartmentVo> queryByHospitalId(Long hospitalId) {
+        // 医院名称不可重复
+        LambdaQueryWrapper<HospitalDepartment> lqw = new LambdaQueryWrapper<HospitalDepartment>()
+            .eq(HospitalDepartment::getHospitalId, hospitalId);
+
+        return baseMapper.selectVoList(lqw);
+    }
+
 }