Просмотр исходного кода

医院以及科室代码初始化

baifucheng месяцев назад: 3
Родитель
Сommit
3cb97a3dfd
18 измененных файлов с 1565 добавлено и 0 удалено
  1. 125 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/info/HospitalController.java
  2. 117 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/info/HospitalDepartmentController.java
  3. 119 0
      ruoyi-info/src/main/java/com/ruoyi/info/hospital/domain/Hospital.java
  4. 51 0
      ruoyi-info/src/main/java/com/ruoyi/info/hospital/domain/HospitalDepartment.java
  5. 178 0
      ruoyi-info/src/main/java/com/ruoyi/info/hospital/domain/bo/HospitalBo.java
  6. 60 0
      ruoyi-info/src/main/java/com/ruoyi/info/hospital/domain/bo/HospitalDepartmentBo.java
  7. 62 0
      ruoyi-info/src/main/java/com/ruoyi/info/hospital/domain/vo/HospitalDepartmentVo.java
  8. 181 0
      ruoyi-info/src/main/java/com/ruoyi/info/hospital/domain/vo/HospitalVo.java
  9. 53 0
      ruoyi-info/src/main/java/com/ruoyi/info/hospital/exception/HospitalDepartmentExceptionEnum.java
  10. 53 0
      ruoyi-info/src/main/java/com/ruoyi/info/hospital/exception/HospitalExceptionEnum.java
  11. 15 0
      ruoyi-info/src/main/java/com/ruoyi/info/hospital/mapper/HospitalDepartmentMapper.java
  12. 15 0
      ruoyi-info/src/main/java/com/ruoyi/info/hospital/mapper/HospitalMapper.java
  13. 77 0
      ruoyi-info/src/main/java/com/ruoyi/info/hospital/service/IHospitalDepartmentService.java
  14. 77 0
      ruoyi-info/src/main/java/com/ruoyi/info/hospital/service/IHospitalService.java
  15. 153 0
      ruoyi-info/src/main/java/com/ruoyi/info/hospital/service/impl/HospitalDepartmentServiceImpl.java
  16. 170 0
      ruoyi-info/src/main/java/com/ruoyi/info/hospital/service/impl/HospitalServiceImpl.java
  17. 21 0
      ruoyi-info/src/main/resources/mapper/HospitalDepartmentMapper.xml
  18. 38 0
      ruoyi-info/src/main/resources/mapper/HospitalMapper.xml

+ 125 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/info/HospitalController.java

@@ -0,0 +1,125 @@
+package com.ruoyi.web.controller.info;
+
+import java.util.Arrays;
+import java.util.List;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.info.hospital.domain.bo.HospitalBo;
+import com.ruoyi.info.hospital.domain.vo.HospitalVo;
+import com.ruoyi.info.hospital.service.IHospitalService;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.RequiredArgsConstructor;
+
+/**
+ * 医院信息Controller
+ *
+ * @author baifc
+ * @date 2025-09-20
+ */
+@Validated
+@Api(value = "医院信息控制器", tags = {"医院信息管理"})
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/info/hospital")
+public class HospitalController extends BaseController {
+
+    private final IHospitalService iHospitalService;
+
+    /**
+     * 分页查询医院信息列表
+     */
+    @ApiOperation("查询医院信息列表")
+    @SaCheckPermission("info:hospital:list")
+    @GetMapping("/page")
+    public TableDataInfo<HospitalVo> page(@Validated(QueryGroup.class) HospitalBo bo, PageQuery pageQuery) {
+        return iHospitalService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 获取医院信息详细信息
+     */
+    @ApiOperation("获取医院信息详细信息")
+    @SaCheckPermission("info:hospital:query")
+    @GetMapping("/info/{id}")
+    public R<HospitalVo> getInfo(@ApiParam("主键")
+                                                  @NotNull(message = "主键不能为空")
+                                                  @PathVariable("id") Long id) {
+        return R.ok(iHospitalService.queryById(id));
+    }
+
+    /**
+     * 新增医院信息
+     */
+    @ApiOperation("新增医院信息")
+    @SaCheckPermission("info:hospital:add")
+    @Log(title = "医院信息", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping("/add")
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody HospitalBo bo) {
+        return toAjax(iHospitalService.insertByBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 修改医院信息
+     */
+    @ApiOperation("修改医院信息")
+    @SaCheckPermission("info:hospital:edit")
+    @Log(title = "医院信息", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PostMapping("/edit")
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody HospitalBo bo) {
+        return toAjax(iHospitalService.updateByBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 删除医院信息
+     */
+    @ApiOperation("删除医院信息")
+    @SaCheckPermission("info:hospital:remove")
+    @Log(title = "医院信息", businessType = BusinessType.DELETE)
+    @PostMapping("/del/{ids}")
+    public R<Void> remove(@ApiParam("主键串")
+                                       @NotEmpty(message = "主键不能为空")
+                                       @PathVariable Long[] ids) {
+        return toAjax(iHospitalService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0);
+    }
+
+    /**
+     * 导出医院信息列表
+     */
+    @ApiOperation("导出医院信息列表")
+    @SaCheckPermission("info:hospital:export")
+    @Log(title = "医院信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(@Validated HospitalBo bo, HttpServletResponse response) {
+        List<HospitalVo> list = iHospitalService.queryList(bo);
+        ExcelUtil.exportExcel(list, "医院信息", HospitalVo.class, response);
+    }
+
+}

+ 117 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/info/HospitalDepartmentController.java

@@ -0,0 +1,117 @@
+package com.ruoyi.web.controller.info;
+
+import java.util.List;
+import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
+
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.info.hospital.domain.vo.HospitalDepartmentVo;
+import com.ruoyi.info.hospital.domain.bo.HospitalDepartmentBo;
+import com.ruoyi.info.hospital.service.IHospitalDepartmentService;
+import com.ruoyi.common.core.page.TableDataInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiParam;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 医院科室信息Controller
+ *
+ * @author baifc
+ * @date 2025-09-20
+ */
+@Validated
+@Api(value = "医院科室信息控制器", tags = {"医院科室信息管理"})
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/info/hospitalDepartment")
+public class HospitalDepartmentController extends BaseController {
+
+    private final IHospitalDepartmentService iHospitalDepartmentService;
+
+    /**
+     * 分页查询医院科室信息列表
+     */
+    @ApiOperation("查询医院科室信息列表")
+    @SaCheckPermission("info:hospitalDepartment:list")
+    @GetMapping("/page")
+    public TableDataInfo<HospitalDepartmentVo> page(@Validated(QueryGroup.class) HospitalDepartmentBo bo, PageQuery pageQuery) {
+        return iHospitalDepartmentService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 获取医院科室信息详细信息
+     */
+    @ApiOperation("获取医院科室信息详细信息")
+    @SaCheckPermission("info:hospitalDepartment:query")
+    @GetMapping("/info/{id}")
+    public R<HospitalDepartmentVo> getInfo(@ApiParam("主键")
+                                                  @NotNull(message = "主键不能为空")
+                                                  @PathVariable("id") Long id) {
+        return R.ok(iHospitalDepartmentService.queryById(id));
+    }
+
+    /**
+     * 新增医院科室信息
+     */
+    @ApiOperation("新增医院科室信息")
+    @SaCheckPermission("info:hospitalDepartment:add")
+    @Log(title = "医院科室信息", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping("/add")
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody HospitalDepartmentBo bo) {
+        return toAjax(iHospitalDepartmentService.insertByBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 修改医院科室信息
+     */
+    @ApiOperation("修改医院科室信息")
+    @SaCheckPermission("info:hospitalDepartment:edit")
+    @Log(title = "医院科室信息", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PostMapping("/edit")
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody HospitalDepartmentBo bo) {
+        return toAjax(iHospitalDepartmentService.updateByBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 删除医院科室信息
+     */
+    @ApiOperation("删除医院科室信息")
+    @SaCheckPermission("info:hospitalDepartment:remove")
+    @Log(title = "医院科室信息", businessType = BusinessType.DELETE)
+    @PostMapping("/del/{ids}")
+    public R<Void> remove(@ApiParam("主键串")
+                                       @NotEmpty(message = "主键不能为空")
+                                       @PathVariable Long[] ids) {
+        return toAjax(iHospitalDepartmentService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0);
+    }
+
+    /**
+     * 导出医院科室信息列表
+     */
+    @ApiOperation("导出医院科室信息列表")
+    @SaCheckPermission("info:hospitalDepartment:export")
+    @Log(title = "医院科室信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(@Validated HospitalDepartmentBo bo, HttpServletResponse response) {
+        List<HospitalDepartmentVo> list = iHospitalDepartmentService.queryList(bo);
+        ExcelUtil.exportExcel(list, "医院科室信息", HospitalDepartmentVo.class, response);
+    }
+
+}

+ 119 - 0
ruoyi-info/src/main/java/com/ruoyi/info/hospital/domain/Hospital.java

@@ -0,0 +1,119 @@
+package com.ruoyi.info.hospital.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 医院信息对象 tb_hospital
+ *
+ * @author baifc
+ * @date 2025-09-20
+ */
+@Data
+@TableName("tb_hospital")
+public class Hospital extends BaseEntity {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 医院ID
+     */
+    @TableId(value = "id")
+    private Long id;
+    /**
+     * 医院名称
+     */
+    private String name;
+    /**
+     * 负责人
+     */
+    private String responsiblePerson;
+    /**
+     * 联系方式
+     */
+    private String contactMobile;
+    /**
+     * 医院地址
+     */
+    private String address;
+    /**
+     * 营业状态 0-正常 1-已停业
+     */
+    private String businessStatus;
+    /**
+     * 上架状态 0-上架 1-下架
+     */
+    private String rackStatus;
+    /**
+     * 医院等级
+     */
+    private String level;
+    /**
+     * 医院标签
+     */
+    private String label;
+    /**
+     * 省id
+     */
+    private Integer provinceId;
+    /**
+     * 省名称
+     */
+    private String provinceName;
+    /**
+     * 市id
+     */
+    private Integer cityId;
+    /**
+     * 市名称
+     */
+    private String cityName;
+    /**
+     * 区域id
+     */
+    private Integer areaId;
+    /**
+     * 区域名称
+     */
+    private String areaName;
+    /**
+     * 经纬度
+     */
+    private String coordinates;
+    /**
+     * 客服电话
+     */
+    private String serviceMobile;
+    /**
+     * 医院介绍
+     */
+    private String introduction;
+    /**
+     * 医院logo_url
+     */
+    private String logoUrl;
+    /**
+     * 小程序二维码url
+     */
+    private String qrCodeUrl;
+    /**
+     * 营业时间
+     */
+    private String businessHours;
+    /**
+     * 排序序号
+     */
+    private Integer sortOrder;
+    /**
+     * 删除标识(0:未删除,2:已删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+}

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

@@ -0,0 +1,51 @@
+package com.ruoyi.info.hospital.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 医院科室信息对象 tb_hospital_department
+ *
+ * @author baifc
+ * @date 2025-09-20
+ */
+@Data
+@TableName("tb_hospital_department")
+public class HospitalDepartment extends BaseEntity {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 科室id
+     */
+    @TableId(value = "id")
+    private Long id;
+    /**
+     * 医院id
+     */
+    private String hospitalId;
+    /**
+     * 科室名称
+     */
+    private String name;
+    /**
+     * 上架状态 0-上架 1-下架
+     */
+    private String rackStatus;
+    /**
+     * 排序序号
+     */
+    private Integer sortOrder;
+    /**
+     * 删除标识(0:未删除,2:已删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+}

+ 178 - 0
ruoyi-info/src/main/java/com/ruoyi/info/hospital/domain/bo/HospitalBo.java

@@ -0,0 +1,178 @@
+package com.ruoyi.info.hospital.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 医院信息业务对象 tb_hospital
+ *
+ * @author baifc
+ * @date 2025-09-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("医院信息业务对象")
+public class HospitalBo extends BaseEntity {
+
+    /**
+     * 医院ID
+     */
+    @ApiModelProperty(value = "医院ID", required = true)
+    @NotNull(message = "医院ID不能为空", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 医院名称
+     */
+    @ApiModelProperty(value = "医院名称", required = true)
+    @NotBlank(message = "医院名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String name;
+
+    /**
+     * 负责人
+     */
+    @ApiModelProperty(value = "负责人", required = true)
+    @NotBlank(message = "负责人不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String responsiblePerson;
+
+    /**
+     * 联系方式
+     */
+    @ApiModelProperty(value = "联系方式", required = true)
+    @NotBlank(message = "联系方式不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String contactMobile;
+
+    /**
+     * 医院地址
+     */
+    @ApiModelProperty(value = "医院地址", required = true)
+    @NotBlank(message = "医院地址不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String address;
+
+    /**
+     * 营业状态 0-正常 1-已停业
+     */
+    @ApiModelProperty(value = "营业状态 0-正常 1-已停业", required = true)
+    @NotBlank(message = "营业状态不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String businessStatus;
+
+    /**
+     * 上架状态 0-上架 1-下架
+     */
+    @ApiModelProperty(value = "上架状态 0-上架 1-下架", required = true)
+    @NotBlank(message = "上架状态不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String rackStatus;
+
+    /**
+     * 医院等级
+     */
+    @ApiModelProperty(value = "医院等级", required = true)
+    @NotBlank(message = "医院等级不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String level;
+
+    /**
+     * 医院标签
+     */
+    @ApiModelProperty(value = "医院标签", required = true)
+    @NotBlank(message = "医院标签不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String label;
+
+    /**
+     * 省id
+     */
+    @ApiModelProperty(value = "省id", required = true)
+    @NotNull(message = "省id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Integer provinceId;
+
+    /**
+     * 省名称
+     */
+    @ApiModelProperty(value = "省名称", required = true)
+    @NotBlank(message = "省名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String provinceName;
+
+    /**
+     * 市id
+     */
+    @ApiModelProperty(value = "市id", required = true)
+    @NotNull(message = "市id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Integer cityId;
+
+    /**
+     * 市名称
+     */
+    @ApiModelProperty(value = "市名称", required = true)
+    @NotBlank(message = "市名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String cityName;
+
+    /**
+     * 区域id
+     */
+    @ApiModelProperty(value = "区域id", required = true)
+    @NotNull(message = "区域id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Integer areaId;
+
+    /**
+     * 区域名称
+     */
+    @ApiModelProperty(value = "区域名称", required = true)
+    @NotBlank(message = "区域名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String areaName;
+
+    /**
+     * 经纬度
+     */
+    @ApiModelProperty(value = "经纬度", required = true)
+    @NotBlank(message = "经纬度不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String coordinates;
+
+    /**
+     * 客服电话
+     */
+    @ApiModelProperty(value = "客服电话", required = true)
+    @NotBlank(message = "客服电话不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String serviceMobile;
+
+    /**
+     * 医院介绍
+     */
+    @ApiModelProperty(value = "医院介绍", required = true)
+    private String introduction;
+
+    /**
+     * 医院logo_url
+     */
+    @ApiModelProperty(value = "医院logo_url", required = true)
+    @NotBlank(message = "医院logo不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String logoUrl;
+
+    /**
+     * 小程序二维码url
+     */
+    @ApiModelProperty(value = "小程序二维码url", required = true)
+    private String qrCodeUrl;
+
+    /**
+     * 营业时间
+     */
+    @ApiModelProperty(value = "营业时间", required = true)
+    private String businessHours;
+
+    /**
+     * 排序序号
+     */
+    @ApiModelProperty(value = "排序序号", required = true)
+    @NotNull(message = "排序序号不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Integer sortOrder;
+
+
+}

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

@@ -0,0 +1,60 @@
+package com.ruoyi.info.hospital.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 医院科室信息业务对象 tb_hospital_department
+ *
+ * @author baifc
+ * @date 2025-09-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("医院科室信息业务对象")
+public class HospitalDepartmentBo extends BaseEntity {
+
+    /**
+     * 科室id
+     */
+    @ApiModelProperty(value = "科室id", required = true)
+    @NotNull(message = "科室id不能为空", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 医院id
+     */
+    @ApiModelProperty(value = "医院id", required = true)
+    @NotBlank(message = "医院id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String hospitalId;
+
+    /**
+     * 科室名称
+     */
+    @ApiModelProperty(value = "科室名称", required = true)
+    @NotBlank(message = "科室名称不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String name;
+
+    /**
+     * 上架状态 0-上架 1-下架
+     */
+    @ApiModelProperty(value = "上架状态 0-上架 1-下架", required = true)
+    @NotBlank(message = "上架状态 0-上架 1-下架不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String rackStatus;
+
+    /**
+     * 排序序号
+     */
+    @ApiModelProperty(value = "排序序号", required = true)
+    @NotNull(message = "排序序号不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Integer sortOrder;
+
+
+}

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

@@ -0,0 +1,62 @@
+package com.ruoyi.info.hospital.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+
+/**
+ * 医院科室信息视图对象 tb_hospital_department
+ *
+ * @author baifc
+ * @date 2025-09-20
+ */
+@Data
+@ApiModel("医院科室信息视图对象")
+@ExcelIgnoreUnannotated
+public class HospitalDepartmentVo {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 科室id
+     */
+    @ExcelProperty(value = "科室id")
+    @ApiModelProperty("科室id")
+    private Long id;
+
+    /**
+     * 医院id
+     */
+    @ExcelProperty(value = "医院id")
+    @ApiModelProperty("医院id")
+    private String hospitalId;
+
+    /**
+     * 科室名称
+     */
+    @ExcelProperty(value = "科室名称")
+    @ApiModelProperty("科室名称")
+    private String name;
+
+    /**
+     * 上架状态 0-上架 1-下架
+     */
+    @ExcelProperty(value = "上架状态 0-上架 1-下架")
+    @ApiModelProperty("上架状态 0-上架 1-下架")
+    private String rackStatus;
+
+    /**
+     * 排序序号
+     */
+    @ExcelProperty(value = "排序序号")
+    @ApiModelProperty("排序序号")
+    private Integer sortOrder;
+
+
+}

+ 181 - 0
ruoyi-info/src/main/java/com/ruoyi/info/hospital/domain/vo/HospitalVo.java

@@ -0,0 +1,181 @@
+package com.ruoyi.info.hospital.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+
+/**
+ * 医院信息视图对象 tb_hospital
+ *
+ * @author baifc
+ * @date 2025-09-20
+ */
+@Data
+@ApiModel("医院信息视图对象")
+@ExcelIgnoreUnannotated
+public class HospitalVo {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 医院ID
+     */
+    @ExcelProperty(value = "医院ID")
+    @ApiModelProperty("医院ID")
+    private Long id;
+
+    /**
+     * 医院名称
+     */
+    @ExcelProperty(value = "医院名称")
+    @ApiModelProperty("医院名称")
+    private String name;
+
+    /**
+     * 负责人
+     */
+    @ExcelProperty(value = "负责人")
+    @ApiModelProperty("负责人")
+    private String responsiblePerson;
+
+    /**
+     * 联系方式
+     */
+    @ExcelProperty(value = "联系方式")
+    @ApiModelProperty("联系方式")
+    private String contactMobile;
+
+    /**
+     * 医院地址
+     */
+    @ExcelProperty(value = "医院地址")
+    @ApiModelProperty("医院地址")
+    private String address;
+
+    /**
+     * 营业状态 0-正常 1-已停业
+     */
+    @ExcelProperty(value = "营业状态 0-正常 1-已停业")
+    @ApiModelProperty("营业状态 0-正常 1-已停业")
+    private String businessStatus;
+
+    /**
+     * 上架状态 0-上架 1-下架
+     */
+    @ExcelProperty(value = "上架状态 0-上架 1-下架")
+    @ApiModelProperty("上架状态 0-上架 1-下架")
+    private String rackStatus;
+
+    /**
+     * 医院等级
+     */
+    @ExcelProperty(value = "医院等级")
+    @ApiModelProperty("医院等级")
+    private String level;
+
+    /**
+     * 医院标签
+     */
+    @ExcelProperty(value = "医院标签")
+    @ApiModelProperty("医院标签")
+    private String label;
+
+    /**
+     * 省id
+     */
+    @ExcelProperty(value = "省id")
+    @ApiModelProperty("省id")
+    private Integer provinceId;
+
+    /**
+     * 省名称
+     */
+    @ExcelProperty(value = "省名称")
+    @ApiModelProperty("省名称")
+    private String provinceName;
+
+    /**
+     * 市id
+     */
+    @ExcelProperty(value = "市id")
+    @ApiModelProperty("市id")
+    private Integer cityId;
+
+    /**
+     * 市名称
+     */
+    @ExcelProperty(value = "市名称")
+    @ApiModelProperty("市名称")
+    private String cityName;
+
+    /**
+     * 区域id
+     */
+    @ExcelProperty(value = "区域id")
+    @ApiModelProperty("区域id")
+    private Integer areaId;
+
+    /**
+     * 区域名称
+     */
+    @ExcelProperty(value = "区域名称")
+    @ApiModelProperty("区域名称")
+    private String areaName;
+
+    /**
+     * 经纬度
+     */
+    @ExcelProperty(value = "经纬度")
+    @ApiModelProperty("经纬度")
+    private String coordinates;
+
+    /**
+     * 客服电话
+     */
+    @ExcelProperty(value = "客服电话")
+    @ApiModelProperty("客服电话")
+    private String serviceMobile;
+
+    /**
+     * 医院介绍
+     */
+    @ExcelProperty(value = "医院介绍")
+    @ApiModelProperty("医院介绍")
+    private String introduction;
+
+    /**
+     * 医院logo_url
+     */
+    @ExcelProperty(value = "医院logo_url")
+    @ApiModelProperty("医院logo_url")
+    private String logoUrl;
+
+    /**
+     * 小程序二维码url
+     */
+    @ExcelProperty(value = "小程序二维码url")
+    @ApiModelProperty("小程序二维码url")
+    private String qrCodeUrl;
+
+    /**
+     * 营业时间
+     */
+    @ExcelProperty(value = "营业时间")
+    @ApiModelProperty("营业时间")
+    private String businessHours;
+
+    /**
+     * 排序序号
+     */
+    @ExcelProperty(value = "排序序号")
+    @ApiModelProperty("排序序号")
+    private Integer sortOrder;
+
+
+}

+ 53 - 0
ruoyi-info/src/main/java/com/ruoyi/info/hospital/exception/HospitalDepartmentExceptionEnum.java

@@ -0,0 +1,53 @@
+package com.ruoyi.info.hospital.exception;
+
+import com.ruoyi.common.enums.IIntegerEnum;
+import java.util.Objects;
+
+
+/**
+ * 异常枚举
+ */
+public enum HospitalDepartmentExceptionEnum implements IIntegerEnum {
+
+    // TODO 注意检查错误码,保证系统内唯一
+    HospitalDepartment_IS_NOT_EXISTS(200001, "医院科室信息不存在"),
+
+    ;
+
+    private Integer code;
+
+    private String msg;
+
+    HospitalDepartmentExceptionEnum(Integer code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    @Override
+    public Integer getCode() {
+        return code;
+    }
+
+    public void setCode(Integer code) {
+        this.code = code;
+    }
+
+    @Override
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public static HospitalDepartmentExceptionEnum getByCode(int code, HospitalDepartmentExceptionEnum[] values) {
+        for (HospitalDepartmentExceptionEnum value : values) {
+            if (Objects.equals(code, value.getCode())) {
+                return value;
+            }
+        }
+        return null;
+    }
+
+}

+ 53 - 0
ruoyi-info/src/main/java/com/ruoyi/info/hospital/exception/HospitalExceptionEnum.java

@@ -0,0 +1,53 @@
+package com.ruoyi.info.hospital.exception;
+
+import com.ruoyi.common.enums.IIntegerEnum;
+import java.util.Objects;
+
+
+/**
+ * 异常枚举
+ */
+public enum HospitalExceptionEnum implements IIntegerEnum {
+
+    // TODO 注意检查错误码,保证系统内唯一
+    Hospital_IS_NOT_EXISTS(200001, "医院信息不存在"),
+
+    ;
+
+    private Integer code;
+
+    private String msg;
+
+    HospitalExceptionEnum(Integer code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    @Override
+    public Integer getCode() {
+        return code;
+    }
+
+    public void setCode(Integer code) {
+        this.code = code;
+    }
+
+    @Override
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public static HospitalExceptionEnum getByCode(int code, HospitalExceptionEnum[] values) {
+        for (HospitalExceptionEnum value : values) {
+            if (Objects.equals(code, value.getCode())) {
+                return value;
+            }
+        }
+        return null;
+    }
+
+}

+ 15 - 0
ruoyi-info/src/main/java/com/ruoyi/info/hospital/mapper/HospitalDepartmentMapper.java

@@ -0,0 +1,15 @@
+package com.ruoyi.info.hospital.mapper;
+
+import com.ruoyi.info.hospital.domain.HospitalDepartment;
+import com.ruoyi.info.hospital.domain.vo.HospitalDepartmentVo;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 医院科室信息Mapper接口
+ *
+ * @author baifc
+ * @date 2025-09-20
+ */
+public interface HospitalDepartmentMapper extends BaseMapperPlus<HospitalDepartmentMapper, HospitalDepartment, HospitalDepartmentVo> {
+
+}

+ 15 - 0
ruoyi-info/src/main/java/com/ruoyi/info/hospital/mapper/HospitalMapper.java

@@ -0,0 +1,15 @@
+package com.ruoyi.info.hospital.mapper;
+
+import com.ruoyi.info.hospital.domain.Hospital;
+import com.ruoyi.info.hospital.domain.vo.HospitalVo;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
+
+/**
+ * 医院信息Mapper接口
+ *
+ * @author baifc
+ * @date 2025-09-20
+ */
+public interface HospitalMapper extends BaseMapperPlus<HospitalMapper, Hospital, HospitalVo> {
+
+}

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

@@ -0,0 +1,77 @@
+package com.ruoyi.info.hospital.service;
+
+import com.ruoyi.info.hospital.domain.HospitalDepartment;
+import com.ruoyi.info.hospital.domain.vo.HospitalDepartmentVo;
+import com.ruoyi.info.hospital.domain.bo.HospitalDepartmentBo;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 医院科室信息Service接口
+ *
+ * @author baifc
+ * @date 2025-09-20
+ */
+public interface IHospitalDepartmentService {
+
+    /**
+     * 查询医院科室信息分页
+     *
+     * @param bo 医院科室信息
+     * @return 医院科室信息集合
+     */
+    TableDataInfo<HospitalDepartmentVo> queryPageList(HospitalDepartmentBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询医院科室信息列表
+     *
+     * @param bo 医院科室信息
+     * @return 医院科室信息集合
+     */
+    List<HospitalDepartmentVo> queryList(HospitalDepartmentBo bo);
+
+    /**
+     * 查询医院科室信息
+     *
+     * @param id 医院科室信息主键
+     * @return 医院科室信息
+     */
+    HospitalDepartmentVo queryById(Long id);
+
+    /**
+     * 详情医院科室信息
+     *
+     * @param id 医院科室信息主键
+     * @return 医院科室信息
+     */
+    HospitalDepartment loadById(Long id, Boolean tw);
+
+    /**
+     * 新增医院科室信息
+     *
+     * @param bo 医院科室信息
+     * @return 结果
+     */
+    Boolean insertByBo(HospitalDepartmentBo bo);
+
+    /**
+     * 修改医院科室信息
+     *
+     * @param bo 医院科室信息
+     * @return 结果
+     */
+    Boolean updateByBo(HospitalDepartmentBo bo);
+
+    /**
+     * 校验并批量删除医院科室信息信息
+     *
+     * @param ids 需要删除的医院科室信息主键集合
+     * @param isValid 是否校验,true-删除前校验,false-不校验
+     * @return 结果
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+}

+ 77 - 0
ruoyi-info/src/main/java/com/ruoyi/info/hospital/service/IHospitalService.java

@@ -0,0 +1,77 @@
+package com.ruoyi.info.hospital.service;
+
+import com.ruoyi.info.hospital.domain.Hospital;
+import com.ruoyi.info.hospital.domain.vo.HospitalVo;
+import com.ruoyi.info.hospital.domain.bo.HospitalBo;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 医院信息Service接口
+ *
+ * @author baifc
+ * @date 2025-09-20
+ */
+public interface IHospitalService {
+
+    /**
+     * 查询医院信息分页
+     *
+     * @param bo 医院信息
+     * @return 医院信息集合
+     */
+    TableDataInfo<HospitalVo> queryPageList(HospitalBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询医院信息列表
+     *
+     * @param bo 医院信息
+     * @return 医院信息集合
+     */
+    List<HospitalVo> queryList(HospitalBo bo);
+
+    /**
+     * 查询医院信息
+     *
+     * @param id 医院信息主键
+     * @return 医院信息
+     */
+    HospitalVo queryById(Long id);
+
+    /**
+     * 详情医院信息
+     *
+     * @param id 医院信息主键
+     * @return 医院信息
+     */
+    Hospital loadById(Long id, Boolean tw);
+
+    /**
+     * 新增医院信息
+     *
+     * @param bo 医院信息
+     * @return 结果
+     */
+    Boolean insertByBo(HospitalBo bo);
+
+    /**
+     * 修改医院信息
+     *
+     * @param bo 医院信息
+     * @return 结果
+     */
+    Boolean updateByBo(HospitalBo bo);
+
+    /**
+     * 校验并批量删除医院信息信息
+     *
+     * @param ids 需要删除的医院信息主键集合
+     * @param isValid 是否校验,true-删除前校验,false-不校验
+     * @return 结果
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+}

+ 153 - 0
ruoyi-info/src/main/java/com/ruoyi/info/hospital/service/impl/HospitalDepartmentServiceImpl.java

@@ -0,0 +1,153 @@
+package com.ruoyi.info.hospital.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.BeanCopyUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import com.ruoyi.info.hospital.domain.bo.HospitalDepartmentBo;
+import com.ruoyi.info.hospital.domain.vo.HospitalDepartmentVo;
+import com.ruoyi.info.hospital.domain.HospitalDepartment;
+import com.ruoyi.info.hospital.mapper.HospitalDepartmentMapper;
+import com.ruoyi.info.hospital.service.IHospitalDepartmentService;
+import com.ruoyi.info.hospital.exception.HospitalDepartmentExceptionEnum;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 医院科室信息Service业务层处理
+ *
+ * @author baifc
+ * @date 2025-09-20
+ */
+@RequiredArgsConstructor
+@Service
+public class HospitalDepartmentServiceImpl implements IHospitalDepartmentService {
+
+    private final HospitalDepartmentMapper baseMapper;
+
+    /**
+     * 查询医院科室信息分页
+     *
+     * @param bo 医院科室信息
+     * @return 医院科室信息
+     */
+    @Override
+    public TableDataInfo<HospitalDepartmentVo> queryPageList(HospitalDepartmentBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<HospitalDepartment> lqw = buildQueryWrapper(bo);
+        Page<HospitalDepartmentVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询医院科室信息列表
+     *
+     * @param bo 医院科室信息
+     * @return 医院科室信息
+     */
+    @Override
+    public List<HospitalDepartmentVo> queryList(HospitalDepartmentBo bo) {
+        LambdaQueryWrapper<HospitalDepartment> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    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.like(StringUtils.isNotBlank(bo.getName()), HospitalDepartment::getName, bo.getName());
+        lqw.eq(StringUtils.isNotBlank(bo.getRackStatus()), HospitalDepartment::getRackStatus, bo.getRackStatus());
+        lqw.eq(bo.getSortOrder() != null, HospitalDepartment::getSortOrder, bo.getSortOrder());
+        return lqw;
+    }
+
+    /**
+     * 查询医院科室信息
+     *
+     * @param id 医院科室信息主键
+     * @return 医院科室信息
+     */
+    @Override
+    public HospitalDepartmentVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 详情医院科室信息
+     *
+     * @param id 医院科室信息主键
+     * @return 医院科室信息
+     */
+    @Override
+    public HospitalDepartment loadById(Long id, Boolean tw){
+        HospitalDepartment info = this.baseMapper.selectById(id);
+        if(ObjectUtil.isEmpty(info) && tw){
+            throw new ServiceException(HospitalDepartmentExceptionEnum.HospitalDepartment_IS_NOT_EXISTS);
+        }
+        return info;
+    }
+
+    /**
+     * 新增医院科室信息
+     *
+     * @param bo 医院科室信息
+     * @return 结果
+     */
+    @Override
+    public Boolean insertByBo(HospitalDepartmentBo bo) {
+        HospitalDepartment add = BeanUtil.toBean(bo, HospitalDepartment.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改医院科室信息
+     *
+     * @param bo 医院科室信息
+     * @return 结果
+     */
+    @Override
+    public Boolean updateByBo(HospitalDepartmentBo bo) {
+        HospitalDepartment hospitalDepartment = baseMapper.selectById(bo.getId());
+        HospitalDepartment update = BeanCopyUtils.copy(bo, hospitalDepartment);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(HospitalDepartment entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 批量删除医院科室信息
+     *
+     * @param ids 需要删除的医院科室信息主键
+     * @return 结果
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+
+}

+ 170 - 0
ruoyi-info/src/main/java/com/ruoyi/info/hospital/service/impl/HospitalServiceImpl.java

@@ -0,0 +1,170 @@
+package com.ruoyi.info.hospital.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.BeanCopyUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import com.ruoyi.info.hospital.domain.bo.HospitalBo;
+import com.ruoyi.info.hospital.domain.vo.HospitalVo;
+import com.ruoyi.info.hospital.domain.Hospital;
+import com.ruoyi.info.hospital.exception.HospitalExceptionEnum;
+import com.ruoyi.info.hospital.mapper.HospitalMapper;
+import com.ruoyi.info.hospital.service.IHospitalService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 医院信息Service业务层处理
+ *
+ * @author baifc
+ * @date 2025-09-20
+ */
+@RequiredArgsConstructor
+@Service
+public class HospitalServiceImpl implements IHospitalService {
+
+    private final HospitalMapper baseMapper;
+
+    /**
+     * 查询医院信息分页
+     *
+     * @param bo 医院信息
+     * @return 医院信息
+     */
+    @Override
+    public TableDataInfo<HospitalVo> queryPageList(HospitalBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<Hospital> lqw = buildQueryWrapper(bo);
+        Page<HospitalVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询医院信息列表
+     *
+     * @param bo 医院信息
+     * @return 医院信息
+     */
+    @Override
+    public List<HospitalVo> queryList(HospitalBo bo) {
+        LambdaQueryWrapper<Hospital> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<Hospital> buildQueryWrapper(HospitalBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<Hospital> lqw = Wrappers.lambdaQuery();
+        lqw.like(StringUtils.isNotBlank(bo.getName()), Hospital::getName, bo.getName());
+        lqw.eq(StringUtils.isNotBlank(bo.getResponsiblePerson()), Hospital::getResponsiblePerson, bo.getResponsiblePerson());
+        lqw.eq(StringUtils.isNotBlank(bo.getContactMobile()), Hospital::getContactMobile, bo.getContactMobile());
+        lqw.eq(StringUtils.isNotBlank(bo.getAddress()), Hospital::getAddress, bo.getAddress());
+        lqw.eq(StringUtils.isNotBlank(bo.getBusinessStatus()), Hospital::getBusinessStatus, bo.getBusinessStatus());
+        lqw.eq(StringUtils.isNotBlank(bo.getRackStatus()), Hospital::getRackStatus, bo.getRackStatus());
+        lqw.eq(StringUtils.isNotBlank(bo.getLevel()), Hospital::getLevel, bo.getLevel());
+        lqw.eq(StringUtils.isNotBlank(bo.getLabel()), Hospital::getLabel, bo.getLabel());
+        lqw.eq(bo.getProvinceId() != null, Hospital::getProvinceId, bo.getProvinceId());
+        lqw.like(StringUtils.isNotBlank(bo.getProvinceName()), Hospital::getProvinceName, bo.getProvinceName());
+        lqw.eq(bo.getCityId() != null, Hospital::getCityId, bo.getCityId());
+        lqw.like(StringUtils.isNotBlank(bo.getCityName()), Hospital::getCityName, bo.getCityName());
+        lqw.eq(bo.getAreaId() != null, Hospital::getAreaId, bo.getAreaId());
+        lqw.like(StringUtils.isNotBlank(bo.getAreaName()), Hospital::getAreaName, bo.getAreaName());
+        lqw.eq(StringUtils.isNotBlank(bo.getCoordinates()), Hospital::getCoordinates, bo.getCoordinates());
+        lqw.eq(StringUtils.isNotBlank(bo.getServiceMobile()), Hospital::getServiceMobile, bo.getServiceMobile());
+        lqw.eq(StringUtils.isNotBlank(bo.getIntroduction()), Hospital::getIntroduction, bo.getIntroduction());
+        lqw.eq(StringUtils.isNotBlank(bo.getLogoUrl()), Hospital::getLogoUrl, bo.getLogoUrl());
+        lqw.eq(StringUtils.isNotBlank(bo.getQrCodeUrl()), Hospital::getQrCodeUrl, bo.getQrCodeUrl());
+        lqw.eq(StringUtils.isNotBlank(bo.getBusinessHours()), Hospital::getBusinessHours, bo.getBusinessHours());
+        lqw.eq(bo.getSortOrder() != null, Hospital::getSortOrder, bo.getSortOrder());
+        return lqw;
+    }
+
+    /**
+     * 查询医院信息
+     *
+     * @param id 医院信息主键
+     * @return 医院信息
+     */
+    @Override
+    public HospitalVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 详情医院信息
+     *
+     * @param id 医院信息主键
+     * @return 医院信息
+     */
+    @Override
+    public Hospital loadById(Long id, Boolean tw){
+        Hospital info = this.baseMapper.selectById(id);
+        if(ObjectUtil.isEmpty(info) && tw){
+            throw new ServiceException(HospitalExceptionEnum.Hospital_IS_NOT_EXISTS);
+        }
+        return info;
+    }
+
+    /**
+     * 新增医院信息
+     *
+     * @param bo 医院信息
+     * @return 结果
+     */
+    @Override
+    public Boolean insertByBo(HospitalBo bo) {
+        Hospital add = BeanUtil.toBean(bo, Hospital.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改医院信息
+     *
+     * @param bo 医院信息
+     * @return 结果
+     */
+    @Override
+    public Boolean updateByBo(HospitalBo bo) {
+        Hospital hospital = baseMapper.selectById(bo.getId());
+        Hospital update = BeanCopyUtils.copy(bo, hospital);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(Hospital entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 批量删除医院信息
+     *
+     * @param ids 需要删除的医院信息主键
+     * @return 结果
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+
+}

+ 21 - 0
ruoyi-info/src/main/resources/mapper/HospitalDepartmentMapper.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.info.hospital.mapper.HospitalDepartmentMapper">
+
+    <resultMap type="com.ruoyi.info.hospital.domain.HospitalDepartment" id="HospitalDepartmentResult">
+        <result property="id" column="id"/>
+        <result property="hospitalId" column="hospital_id"/>
+        <result property="name" column="name"/>
+        <result property="rackStatus" column="rack_status"/>
+        <result property="sortOrder" column="sort_order"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="createTime" column="create_time"/>
+        <result property="createBy" column="create_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="updateBy" column="update_by"/>
+    </resultMap>
+
+
+</mapper>

+ 38 - 0
ruoyi-info/src/main/resources/mapper/HospitalMapper.xml

@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.info.hospital.mapper.HospitalMapper">
+
+    <resultMap type="com.ruoyi.info.hospital.domain.Hospital" id="HospitalResult">
+        <result property="id" column="id"/>
+        <result property="name" column="name"/>
+        <result property="responsiblePerson" column="responsible_person"/>
+        <result property="contactMobile" column="contact_mobile"/>
+        <result property="address" column="address"/>
+        <result property="businessStatus" column="business_status"/>
+        <result property="rackStatus" column="rack_status"/>
+        <result property="level" column="level"/>
+        <result property="label" column="label"/>
+        <result property="provinceId" column="province_id"/>
+        <result property="provinceName" column="province_name"/>
+        <result property="cityId" column="city_id"/>
+        <result property="cityName" column="city_name"/>
+        <result property="areaId" column="area_id"/>
+        <result property="areaName" column="area_name"/>
+        <result property="coordinates" column="coordinates"/>
+        <result property="serviceMobile" column="service_mobile"/>
+        <result property="introduction" column="introduction"/>
+        <result property="logoUrl" column="logo_url"/>
+        <result property="qrCodeUrl" column="qr_code_url"/>
+        <result property="businessHours" column="business_hours"/>
+        <result property="sortOrder" column="sort_order"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="createTime" column="create_time"/>
+        <result property="createBy" column="create_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="updateBy" column="update_by"/>
+    </resultMap>
+
+
+</mapper>