医院
This commit is contained in:
@@ -1,4 +1,28 @@
|
|||||||
package com.gis.xian.controller;
|
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{
|
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 com.gis.xian.entity.XianHospitals;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author wzy
|
* @author wzy
|
||||||
* @description 针对表【xian_hospitals(医院医疗机构)】的数据库操作Mapper
|
* @description 针对表【xian_hospitals(医院医疗机构)】的数据库操作Mapper
|
||||||
@@ -9,7 +11,18 @@ import com.gis.xian.entity.XianHospitals;
|
|||||||
* @Entity com.gis.xian.entity.XianHospitals
|
* @Entity com.gis.xian.entity.XianHospitals
|
||||||
*/
|
*/
|
||||||
public interface XianHospitalsMapper {
|
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;
|
package com.gis.xian.service;
|
||||||
|
|
||||||
|
import com.gis.xian.vo.XianHospitalsBasePointVo;
|
||||||
|
import com.gis.xian.vo.XianHospitalsPointDetailVo;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public interface XianHospitalsService {
|
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;
|
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 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 {
|
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.alibaba.fastjson2.JSON;
|
||||||
import com.gis.xian.enums.DisasterTypeEnum;
|
import com.gis.xian.enums.DisasterTypeEnum;
|
||||||
import com.gis.xian.mapper.XianHiddenDangerSpotsMapper;
|
import com.gis.xian.mapper.XianHiddenDangerSpotsMapper;
|
||||||
|
import com.gis.xian.mapper.XianHospitalsMapper;
|
||||||
import com.gis.xian.mapper.XianRiskSpotsMapper;
|
import com.gis.xian.mapper.XianRiskSpotsMapper;
|
||||||
import com.gis.xian.vo.XianHiddenDangerSpotsBasePointVo;
|
import com.gis.xian.vo.XianHiddenDangerSpotsBasePointVo;
|
||||||
|
import com.gis.xian.vo.XianHospitalsBasePointVo;
|
||||||
import com.gis.xian.vo.XianRiskSpotsBasePointVo;
|
import com.gis.xian.vo.XianRiskSpotsBasePointVo;
|
||||||
import jakarta.annotation.PostConstruct;
|
import jakarta.annotation.PostConstruct;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
@@ -27,6 +29,9 @@ public class InitializeData {
|
|||||||
@Resource
|
@Resource
|
||||||
private XianRiskSpotsMapper xianRiskSpotsMapper;
|
private XianRiskSpotsMapper xianRiskSpotsMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private XianHospitalsMapper xianHospitalsMapper;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
RedisTemplate<String, Object> redisTemplate;
|
RedisTemplate<String, Object> redisTemplate;
|
||||||
|
|
||||||
@@ -39,6 +44,9 @@ public class InitializeData {
|
|||||||
@Value("${init.data.base-points.risk}")
|
@Value("${init.data.base-points.risk}")
|
||||||
private String riskBasePointsKey;
|
private String riskBasePointsKey;
|
||||||
|
|
||||||
|
@Value("${init.data.base-points.hospitals}")
|
||||||
|
private String hospitalsBasePointsKey;
|
||||||
|
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
@Async("xianPool")
|
@Async("xianPool")
|
||||||
public void init() {
|
public void init() {
|
||||||
@@ -62,6 +70,13 @@ public class InitializeData {
|
|||||||
xianRiskSpotsMapper.getBasePoints())
|
xianRiskSpotsMapper.getBasePoints())
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// 加载医院基本信息写入redis
|
||||||
|
redisTemplate.opsForValue().set(hospitalsBasePointsKey, JSON.toJSONString(
|
||||||
|
XianHospitalsBasePointVo.entity2Vo(
|
||||||
|
xianHospitalsMapper.getBasePoints())
|
||||||
|
)
|
||||||
|
);
|
||||||
log.info("初始化数据完成");
|
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" />
|
<result property="isDelete" column="is_delete" />
|
||||||
</resultMap>
|
</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>
|
</mapper>
|
||||||
|
|||||||
@@ -14,3 +14,4 @@ init:
|
|||||||
rainstorm: 'xian:init:data:base-points:hidden-danger:rainstorm'
|
rainstorm: 'xian:init:data:base-points:hidden-danger:rainstorm'
|
||||||
earthquake: 'xian:init:data:base-points:hidden-danger:earthquake'
|
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