医院
This commit is contained in:
@@ -1,4 +1,28 @@
|
||||
package com.gis.xian.controller;
|
||||
|
||||
import com.gis.xian.domain.ApiResponse;
|
||||
import com.gis.xian.vo.XianHospitalsBasePointVo;
|
||||
import com.gis.xian.vo.XianHospitalsPointDetailVo;
|
||||
import com.gis.xian.service.XianHospitalsService;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/hospitals")
|
||||
public class XianHospitalsController extends BaseController{
|
||||
|
||||
@Resource
|
||||
private XianHospitalsService xianHospitalsService;
|
||||
|
||||
@GetMapping("/base-points")
|
||||
public ApiResponse<List<XianHospitalsBasePointVo>> getBasePoints() {
|
||||
return ApiResponse.ok(xianHospitalsService.getBasePoints());
|
||||
}
|
||||
|
||||
@GetMapping("/point-detail/{id}")
|
||||
public ApiResponse<XianHospitalsPointDetailVo> getPointDetailById(@PathVariable String id) {
|
||||
return ApiResponse.ok(xianHospitalsService.getPointDetailById(Long.parseLong(id)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,8 @@ package com.gis.xian.mapper;
|
||||
|
||||
import com.gis.xian.entity.XianHospitals;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author wzy
|
||||
* @description 针对表【xian_hospitals(医院医疗机构)】的数据库操作Mapper
|
||||
@@ -9,7 +11,18 @@ import com.gis.xian.entity.XianHospitals;
|
||||
* @Entity com.gis.xian.entity.XianHospitals
|
||||
*/
|
||||
public interface XianHospitalsMapper {
|
||||
/**
|
||||
* 获取所有医院基础点
|
||||
* @return 基础点列表
|
||||
*/
|
||||
List<XianHospitals> getBasePoints();
|
||||
|
||||
/**
|
||||
* 根据id获取医院详情
|
||||
* @param id 医院id
|
||||
* @return 医院详情
|
||||
*/
|
||||
XianHospitals getPointDetailById(Long id);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,22 @@
|
||||
package com.gis.xian.service;
|
||||
|
||||
import com.gis.xian.vo.XianHospitalsBasePointVo;
|
||||
import com.gis.xian.vo.XianHospitalsPointDetailVo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface XianHospitalsService {
|
||||
|
||||
/**
|
||||
* 获取所有医院基础点
|
||||
* @return 基础点列表
|
||||
*/
|
||||
List<XianHospitalsBasePointVo> getBasePoints();
|
||||
|
||||
/**
|
||||
* 根据id获取医院详情
|
||||
* @param id 医院id
|
||||
* @return 医院详情
|
||||
*/
|
||||
XianHospitalsPointDetailVo getPointDetailById(Long id);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,46 @@
|
||||
package com.gis.xian.service.impl;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.gis.xian.entity.XianHospitals;
|
||||
import com.gis.xian.vo.XianHospitalsBasePointVo;
|
||||
import com.gis.xian.vo.XianHospitalsPointDetailVo;
|
||||
import com.gis.xian.mapper.XianHospitalsMapper;
|
||||
import com.gis.xian.service.XianHospitalsService;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class IXianHospitalsServiceImpl implements XianHospitalsService {
|
||||
|
||||
@Resource
|
||||
private RedisTemplate<String, Object> redisTemplate;
|
||||
|
||||
@Resource
|
||||
private XianHospitalsMapper xianHospitalsMapper;
|
||||
|
||||
@Value("${init.data.base-points.hospitals}")
|
||||
private String hospitalsBasePointsKey;
|
||||
|
||||
@Override
|
||||
public List<XianHospitalsBasePointVo> getBasePoints() {
|
||||
// 从redis中读取基础点信息
|
||||
Object data = redisTemplate.opsForValue().get(hospitalsBasePointsKey);
|
||||
|
||||
if (data == null) {
|
||||
List<XianHospitalsBasePointVo> basePoints = XianHospitalsBasePointVo.entity2Vo(xianHospitalsMapper.getBasePoints());
|
||||
redisTemplate.opsForValue().set(hospitalsBasePointsKey, JSON.toJSONString(basePoints));
|
||||
return basePoints;
|
||||
}
|
||||
|
||||
return JSON.parseArray(data.toString(), XianHospitalsBasePointVo.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public XianHospitalsPointDetailVo getPointDetailById(Long id) {
|
||||
return XianHospitalsPointDetailVo.entity2Vo(xianHospitalsMapper.getPointDetailById(id));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,8 +3,10 @@ package com.gis.xian.task;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.gis.xian.enums.DisasterTypeEnum;
|
||||
import com.gis.xian.mapper.XianHiddenDangerSpotsMapper;
|
||||
import com.gis.xian.mapper.XianHospitalsMapper;
|
||||
import com.gis.xian.mapper.XianRiskSpotsMapper;
|
||||
import com.gis.xian.vo.XianHiddenDangerSpotsBasePointVo;
|
||||
import com.gis.xian.vo.XianHospitalsBasePointVo;
|
||||
import com.gis.xian.vo.XianRiskSpotsBasePointVo;
|
||||
import jakarta.annotation.PostConstruct;
|
||||
import jakarta.annotation.Resource;
|
||||
@@ -27,6 +29,9 @@ public class InitializeData {
|
||||
@Resource
|
||||
private XianRiskSpotsMapper xianRiskSpotsMapper;
|
||||
|
||||
@Resource
|
||||
private XianHospitalsMapper xianHospitalsMapper;
|
||||
|
||||
@Resource
|
||||
RedisTemplate<String, Object> redisTemplate;
|
||||
|
||||
@@ -39,6 +44,9 @@ public class InitializeData {
|
||||
@Value("${init.data.base-points.risk}")
|
||||
private String riskBasePointsKey;
|
||||
|
||||
@Value("${init.data.base-points.hospitals}")
|
||||
private String hospitalsBasePointsKey;
|
||||
|
||||
@PostConstruct
|
||||
@Async("xianPool")
|
||||
public void init() {
|
||||
@@ -62,6 +70,13 @@ public class InitializeData {
|
||||
xianRiskSpotsMapper.getBasePoints())
|
||||
)
|
||||
);
|
||||
|
||||
// 加载医院基本信息写入redis
|
||||
redisTemplate.opsForValue().set(hospitalsBasePointsKey, JSON.toJSONString(
|
||||
XianHospitalsBasePointVo.entity2Vo(
|
||||
xianHospitalsMapper.getBasePoints())
|
||||
)
|
||||
);
|
||||
log.info("初始化数据完成");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
package com.gis.xian.vo;
|
||||
|
||||
import com.gis.xian.entity.XianHospitals;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 医院-基本点信息
|
||||
* @TableName xian_hospitals
|
||||
*/
|
||||
@Data
|
||||
public class XianHospitalsBasePointVo {
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 经度
|
||||
*/
|
||||
private Double lon;
|
||||
|
||||
/**
|
||||
* 纬度
|
||||
*/
|
||||
private Double lat;
|
||||
|
||||
public static XianHospitalsBasePointVo entity2Vo(XianHospitals entity) {
|
||||
XianHospitalsBasePointVo vo = new XianHospitalsBasePointVo();
|
||||
vo.setId(entity.getId());
|
||||
vo.setLon(entity.getLon() != null ? entity.getLon().doubleValue() : null);
|
||||
vo.setLat(entity.getLat() != null ? entity.getLat().doubleValue() : null);
|
||||
return vo;
|
||||
}
|
||||
|
||||
public static List<XianHospitalsBasePointVo> entity2Vo(List<XianHospitals> entityList) {
|
||||
List<XianHospitalsBasePointVo> voList = new ArrayList<>();
|
||||
for (XianHospitals entity : entityList) {
|
||||
voList.add(entity2Vo(entity));
|
||||
}
|
||||
return voList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
XianHospitalsBasePointVo that = (XianHospitalsBasePointVo) o;
|
||||
return Objects.equals(id, that.id) && Objects.equals(lon, that.lon) && Objects.equals(lat, that.lat);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id, lon, lat);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,99 @@
|
||||
package com.gis.xian.vo;
|
||||
|
||||
import com.gis.xian.entity.XianHospitals;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 医院-详细信息
|
||||
* @TableName xian_hospitals
|
||||
*/
|
||||
@Data
|
||||
public class XianHospitalsPointDetailVo {
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 医院名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 医院等级
|
||||
*/
|
||||
private String level;
|
||||
|
||||
/**
|
||||
* 详细地址
|
||||
*/
|
||||
private String address;
|
||||
|
||||
/**
|
||||
* 经度
|
||||
*/
|
||||
private Double lon;
|
||||
|
||||
/**
|
||||
* 纬度
|
||||
*/
|
||||
private Double lat;
|
||||
|
||||
/**
|
||||
* 年度总诊疗人数
|
||||
*/
|
||||
private Integer sumPeople;
|
||||
|
||||
/**
|
||||
* 单位负责人
|
||||
*/
|
||||
private String unitHead;
|
||||
|
||||
/**
|
||||
* 联系电话
|
||||
*/
|
||||
private String telephone;
|
||||
|
||||
public static XianHospitalsPointDetailVo entity2Vo(XianHospitals entity) {
|
||||
XianHospitalsPointDetailVo vo = new XianHospitalsPointDetailVo();
|
||||
vo.setId(entity.getId());
|
||||
vo.setName(entity.getName());
|
||||
vo.setLevel(entity.getLevel());
|
||||
vo.setAddress(entity.getAddress());
|
||||
vo.setLon(entity.getLon() != null ? entity.getLon().doubleValue() : null);
|
||||
vo.setLat(entity.getLat() != null ? entity.getLat().doubleValue() : null);
|
||||
vo.setSumPeople(entity.getSumPeople());
|
||||
vo.setUnitHead(entity.getUnitHead());
|
||||
vo.setTelephone(entity.getTelephone());
|
||||
return vo;
|
||||
}
|
||||
|
||||
public static List<XianHospitalsPointDetailVo> entity2Vo(List<XianHospitals> entityList) {
|
||||
List<XianHospitalsPointDetailVo> voList = new ArrayList<>();
|
||||
for (XianHospitals entity : entityList) {
|
||||
voList.add(entity2Vo(entity));
|
||||
}
|
||||
return voList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
XianHospitalsPointDetailVo that = (XianHospitalsPointDetailVo) o;
|
||||
return Objects.equals(id, that.id) && Objects.equals(name, that.name)
|
||||
&& Objects.equals(level, that.level) && Objects.equals(address, that.address)
|
||||
&& Objects.equals(lon, that.lon) && Objects.equals(lat, that.lat)
|
||||
&& Objects.equals(sumPeople, that.sumPeople) && Objects.equals(unitHead, that.unitHead)
|
||||
&& Objects.equals(telephone, that.telephone);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id, name, level, address, lon, lat, sumPeople, unitHead, telephone);
|
||||
}
|
||||
}
|
||||
@@ -70,5 +70,19 @@
|
||||
<result property="isDelete" column="is_delete" />
|
||||
</resultMap>
|
||||
|
||||
<!-- 获取所有医院基础点 -->
|
||||
<select id="getBasePoints" resultMap="BaseResultMap">
|
||||
SELECT id, lon, lat FROM xian_hospitals
|
||||
<where>
|
||||
is_delete = 0
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<!-- 根据id获取医院详情 -->
|
||||
<select id="getPointDetailById" resultMap="BaseResultMap">
|
||||
SELECT id, name, level, address, lon, lat, sum_people, unit_head, telephone FROM xian_hospitals
|
||||
<where>
|
||||
id = #{id} AND is_delete = 0
|
||||
</where>
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -13,4 +13,5 @@ init:
|
||||
hidden-danger:
|
||||
rainstorm: 'xian:init:data:base-points:hidden-danger:rainstorm'
|
||||
earthquake: 'xian:init:data:base-points:hidden-danger:earthquake'
|
||||
risk: 'xian:init:data:base-points:risk'
|
||||
risk: 'xian:init:data:base-points:risk'
|
||||
hospitals: 'xian:init:data:base-points:hospitals'
|
||||
Reference in New Issue
Block a user