From e9fada7bbd67ee3f878812a477f9e6b02e9e8e5c Mon Sep 17 00:00:00 2001 From: wanghao Date: Fri, 19 Sep 2025 16:26:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E9=9C=80=E6=B1=82=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../anyan/model/vo/CareUserListVo.java | 3 + .../bean/request/EmergencySocket.java | 9 + .../emergency/entity/TblBaseHospitalVo.java | 26 +++ .../emergency/entity/vo/LoveTrendVO.java | 58 ----- .../api/service/impl/LargeScreenImpl.java | 11 + .../emergency/controller/XjAedController.java | 2 +- .../controller/LargeScreenNewController.java | 19 +- .../service/ILargeScreenDataService.java | 7 +- .../impl/LargeScreenDataServiceImpl.java | 203 ++++++++++++++++-- .../emergency/service/IXjAedService.java | 2 + .../impl/TblAmbulanceGpsServiceImpl.java | 2 +- .../service/impl/XjAedServiceImpl.java | 13 ++ .../main/resources/tempData/guanaiList.json | 47 ++-- .../mapper/xml/HealthUserEmployeeExMapper.xml | 15 +- 14 files changed, 308 insertions(+), 109 deletions(-) delete mode 100644 health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/entity/vo/LoveTrendVO.java diff --git a/functional-modules/xj-anyan-api/src/main/java/com/renkang/anyan/model/vo/CareUserListVo.java b/functional-modules/xj-anyan-api/src/main/java/com/renkang/anyan/model/vo/CareUserListVo.java index 965dfa5..3d29d25 100644 --- a/functional-modules/xj-anyan-api/src/main/java/com/renkang/anyan/model/vo/CareUserListVo.java +++ b/functional-modules/xj-anyan-api/src/main/java/com/renkang/anyan/model/vo/CareUserListVo.java @@ -137,4 +137,7 @@ public class CareUserListVo { @Schema(title = "同型半胱氨酸当前监测值") private String homocysteineCurrent; + + @Schema(title = "关爱联络员姓名") + private String careLiaisonName; } diff --git a/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/bean/request/EmergencySocket.java b/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/bean/request/EmergencySocket.java index 948b84a..3f5f269 100644 --- a/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/bean/request/EmergencySocket.java +++ b/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/bean/request/EmergencySocket.java @@ -33,4 +33,13 @@ public class EmergencySocket { private String queue; private String noticeId; + @Schema(title = "关爱联络员姓名") + private String careLiaisonName; + @Schema(title = "关爱联络员电话") + private String careLiaisonPhone; + @Schema(title = "急救人员姓名") + private String lifeguardName; + @Schema(title = "急救人员电话") + private String lifeguardPhone; + } diff --git a/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/entity/TblBaseHospitalVo.java b/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/entity/TblBaseHospitalVo.java index 8fdde7a..6082052 100644 --- a/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/entity/TblBaseHospitalVo.java +++ b/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/entity/TblBaseHospitalVo.java @@ -23,10 +23,36 @@ public class TblBaseHospitalVo { private String type; @Schema(title = "中心医疗点标识") private boolean centerResource=false; + @Schema(title = "管理员/联系人姓名") + private String manageName; + @Schema(title = "管理员/联系人电话") + private String managePhone; + @Schema(title = "地址") + private String address; private String ambulance; private String docNum; private String nurseNum; private String expertNum; private String distance; + + public TblBaseHospitalVo() {} + + public TblBaseHospitalVo(Resource resource){ + this.id = resource.getId(); + this.name = resource.getName(); + this.lat = resource.getLatitude(); + this.lon = resource.getLongitude(); + this.type = resource.getType(); + this.address = resource.getAddress(); + } + + public TblBaseHospitalVo(XjAed xjAed){ + this.id = xjAed.getId(); + this.name = xjAed.getName(); + this.lat = xjAed.getLatitude(); + this.lon = xjAed.getLongitude(); + this.type = "4"; + this.address = xjAed.getAddress(); + } } diff --git a/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/entity/vo/LoveTrendVO.java b/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/entity/vo/LoveTrendVO.java deleted file mode 100644 index 8da682c..0000000 --- a/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/entity/vo/LoveTrendVO.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.renkang.emergency.entity.vo; - -import lombok.Data; - -import java.math.BigDecimal; - -@Data -public class LoveTrendVO { - private String id; - private String empId; - private String treatPlanResponse; - private String dietSuggestionResponse; - private String sportGuideResponse; - private String lifeManageResponse; - private String createDate; - private String updateDate; - private String createBy; - private String updateBy; - private String delFlag; - private String dataLevel; - private String negativeList; - private Integer flagFat; - private BigDecimal bmi; - private BigDecimal height; - private BigDecimal weight; - private BigDecimal bmiCurrent; - private String hypertension; - private String systolicPressureAvg; - private String systolicPressureTarget; - private String systolicPressureCurrent; - private String diastolicPressureAvg; - private String diastolicPressureTarget; - private String diastolicPressureCurrent; - private String diabetes; - private String glu; - private String bloodSugarTarget; - private String bloodSugarCurrent; - private String ldl; - private String ldlTarget; - private String ldlCurrent; - private String tc; - private String tcTarget; - private String tcCurrent; - private String tg; - private String tgTarget; - private String tgCurrent; - private String uricAcid; - private String uricAcidTarget; - private String uricAcidCurrent; - private String homocysteine; - private String homocysteineTarget; - private String homocysteineCurrent; - private String workUnit; - private String workUnitId; - private Integer age; - private String sex; - private String name; -} diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/api/service/impl/LargeScreenImpl.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/api/service/impl/LargeScreenImpl.java index e8c267b..f4c4247 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/api/service/impl/LargeScreenImpl.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/api/service/impl/LargeScreenImpl.java @@ -29,6 +29,7 @@ import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.system.vo.LoginUserNew; import org.jeecg.global.GlobalUtils; import org.jeecg.modules.manager.ISysCache; +import org.jeecg.modules.system.entity.HealthUserEmployeeEx; import org.jeecg.modules.system.entity.SysDepart; import org.jeecg.modules.system.entity.SysUser; import org.springframework.stereotype.Service; @@ -226,12 +227,22 @@ public class LargeScreenImpl { */ private void setPushMsg(EmergencySocket socket, EmergencyCenter center, Double longitude, Double latitude) { LoginUser sysUser = GlobalUtils.getLoginUser(); + ListUser listUser = new ListUser(); + listUser.setUserIds(Collections.singletonList(sysUser.getId())); + List exList = sysBaseAPI.listEmployeeUserByIds(listUser); socket.setPopType(1); socket.setUserId(sysUser.getId()); socket.setRealName(sysUser.getRealname()); socket.setAge(sysUser.getAge()); socket.setSex(sysUser.getSex()); socket.setPhone(sysUser.getPhone()); + if (CollUtil.isNotEmpty(exList) && !exList.isEmpty()) { + HealthUserEmployeeEx ex = exList.get(0); + socket.setCareLiaisonName(ex.getCareLiaisonName()); + socket.setCareLiaisonPhone(ex.getCareLiaisonPhone()); + socket.setLifeguardName(ex.getLifeguardName()); + socket.setLifeguardPhone(ex.getLifeguardPhone()); + } this.setDepartmentInfo(socket, sysUser.getOrgCode()); // 获取所有资源 List allList = tblAmbulanceGpsService.getAllList(String.valueOf(center.getLatitude()), String.valueOf(center.getLongitude()), null, null); diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/controller/XjAedController.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/controller/XjAedController.java index 2a90945..d38cb06 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/controller/XjAedController.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/controller/XjAedController.java @@ -20,6 +20,6 @@ public class XjAedController extends JeecgController { */ @GetMapping("dataInit") public void aedDataInit() { - xjAedService.aedDataInit(); + xjAedService.aedDataUtil(); } } diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/controller/LargeScreenNewController.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/controller/LargeScreenNewController.java index ffea4b8..c065f35 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/controller/LargeScreenNewController.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/controller/LargeScreenNewController.java @@ -5,9 +5,9 @@ import com.renkang.anyan.model.dto.HealthRoomDTO; import com.renkang.anyan.model.dto.HealthSignListParam; import com.renkang.anyan.model.dto.MedicalAbnormalDTO; import com.renkang.anyan.model.vo.*; +import com.renkang.emergency.entity.TblBaseHospitalVo; import com.renkang.emergency.entity.dto.*; import com.renkang.emergency.entity.vo.DataDetailVO; -import com.renkang.emergency.entity.vo.LoveTrendVO; import com.renkang.emergency.entity.vo.MedicalDataVO; import com.renkang.emergency.largeScreen.entity.dto.HealthRoomBaseDTO; import com.renkang.emergency.largeScreen.entity.dto.HealthSignDTO; @@ -233,11 +233,24 @@ public class LargeScreenNewController { * 假数据查询(关爱趋势) */ @GetMapping("loveTrend") - public Result> loveTrend(@RequestParam(name = "centerId") String centerId, + public Result> loveTrend(@RequestParam(name = "centerId") String centerId, @RequestParam(name = "name", required = false) String name, + @RequestParam(name = "orgName", required = false) String orgName, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { - return Result.ok(largeScreenDataService.loveTrend(centerId, name,pageNo,pageSize)); + return Result.ok(largeScreenDataService.loveTrend(centerId, name,orgName,pageNo,pageSize)); + } + + /** + * 获取最近的6个资源 + * @param longitude + * @param latitude + * @return + */ + @GetMapping("nearResources") + public Result> nearResources(@RequestParam(name = "longitude") String longitude, + @RequestParam(name = "latitude") String latitude){ + return Result.ok(largeScreenDataService.nearResources(longitude,latitude)); } } diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/ILargeScreenDataService.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/ILargeScreenDataService.java index cb40b77..ea3106d 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/ILargeScreenDataService.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/ILargeScreenDataService.java @@ -2,10 +2,11 @@ package com.renkang.emergency.largeScreen.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; +import com.renkang.anyan.model.vo.CareUserListVo; import com.renkang.emergency.entity.LargeScreenData; +import com.renkang.emergency.entity.TblBaseHospitalVo; import com.renkang.emergency.entity.dto.LargeScreenDataValueDTO; import com.renkang.emergency.entity.vo.DataDetailVO; -import com.renkang.emergency.entity.vo.LoveTrendVO; import com.renkang.emergency.entity.vo.MedicalDataVO; import java.util.List; @@ -30,5 +31,7 @@ public interface ILargeScreenDataService extends IService { List medicalDataDetail(String centerId); - IPage loveTrend(String centerId, String name,Integer pageNo,Integer pageSize); + IPage loveTrend(String centerId, String name, String orgName, Integer pageNo, Integer pageSize); + + List nearResources(String longitude, String latitude); } diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/impl/LargeScreenDataServiceImpl.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/impl/LargeScreenDataServiceImpl.java index e4ce4fb..c990d48 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/impl/LargeScreenDataServiceImpl.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/impl/LargeScreenDataServiceImpl.java @@ -10,23 +10,27 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.renkang.anyan.model.vo.CareUserListVo; import com.renkang.emergency.entity.LargeScreenData; +import com.renkang.emergency.entity.Resource; +import com.renkang.emergency.entity.TblBaseHospitalVo; +import com.renkang.emergency.entity.XjAed; import com.renkang.emergency.entity.dto.LargeScreenDataValueDTO; import com.renkang.emergency.entity.vo.DataDetailVO; -import com.renkang.emergency.entity.vo.LoveTrendVO; import com.renkang.emergency.entity.vo.MedicalDataVO; import com.renkang.emergency.largeScreen.mapper.LargeScreenDataMapper; import com.renkang.emergency.largeScreen.service.ILargeScreenDataService; +import com.renkang.emergency.service.IResourceService; +import com.renkang.emergency.service.IXjAedService; import lombok.RequiredArgsConstructor; +import org.jeecg.util.TypeConversionUtil; import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StreamUtils; import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -39,6 +43,9 @@ import java.util.stream.Collectors; @RequiredArgsConstructor public class LargeScreenDataServiceImpl extends ServiceImpl implements ILargeScreenDataService { + private final IResourceService resourceService; + private final IXjAedService xjAedService; + public Boolean editValue(LargeScreenDataValueDTO dto) { if (StrUtil.isEmpty(dto.getCenterId())) { return false; @@ -46,11 +53,11 @@ public class LargeScreenDataServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(LargeScreenData::getType, dto.getType()); queryWrapper.eq(LargeScreenData::getCenterId, dto.getCenterId()); - queryWrapper.eq(ObjUtil.isNotEmpty(dto.getId()),LargeScreenData::getId, dto.getId()); + queryWrapper.eq(ObjUtil.isNotEmpty(dto.getId()), LargeScreenData::getId, dto.getId()); if (CollUtil.isNotEmpty(list())) { LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(LargeScreenData::getType, dto.getType()); - updateWrapper.eq(ObjUtil.isNotEmpty(dto.getId()),LargeScreenData::getId, dto.getId()); + updateWrapper.eq(ObjUtil.isNotEmpty(dto.getId()), LargeScreenData::getId, dto.getId()); updateWrapper.set(LargeScreenData::getValue, dto.getValue()); updateWrapper.set(LargeScreenData::getStatus, dto.getStatus()); return update(updateWrapper); @@ -59,13 +66,13 @@ public class LargeScreenDataServiceImpl extends ServiceImpl list = new ArrayList<>(); switch (dto.getModule()) { case "9": // 服务详情 remove(new LambdaQueryWrapper().eq(LargeScreenData::getCenterId, dto.getCenterId()).in(LargeScreenData::getType, - Arrays.asList("gross", "alerdyreceive", "jqqz", "dbjy", "totaldeal", "totalacceptance"))); + Arrays.asList("gross", "alerdyreceive", "jqqz", "dbjy", "totaldeal", "totalacceptance"))); LargeScreenData service1 = new LargeScreenData(); service1.setType("gross"); service1.setStatus(dto.getLatestCallStatus()); @@ -242,7 +249,7 @@ public class LargeScreenDataServiceImpl extends ServiceImpl dtoList) { - remove(new LambdaQueryWrapper().in(LargeScreenData::getType,"medical","32")); + remove(new LambdaQueryWrapper().in(LargeScreenData::getType, "medical", "32")); if (CollUtil.isNotEmpty(dtoList)) { saveBatch(dtoList.stream().map(LargeScreenData::new).collect(Collectors.toList())); } @@ -387,43 +394,50 @@ public class LargeScreenDataServiceImpl extends ServiceImpl medicalDataDetail(String centerId){ + public List medicalDataDetail(String centerId) { List list = list(new LambdaQueryWrapper() - .in(LargeScreenData::getType, "medical","32").eq(LargeScreenData::getCenterId, centerId)); - if (CollUtil.isEmpty(list)){ + .in(LargeScreenData::getType, "medical", "32").eq(LargeScreenData::getCenterId, centerId)); + if (CollUtil.isEmpty(list)) { return new ArrayList<>(); } return list.stream().map(MedicalDataVO::new).collect(Collectors.toList()); } @Override - public IPage loveTrend(String centerId, String name, Integer pageNo, Integer pageSize) { + public IPage loveTrend(String centerId, String name, String orgName, Integer pageNo, Integer pageSize) { try { ClassPathResource resource = new ClassPathResource("tempData/guanaiList.json"); String jsonContent = StreamUtils.copyToString(resource.getInputStream(), StandardCharsets.UTF_8); - List loveTrendVOList = JSONUtil.toList(jsonContent, LoveTrendVO.class); + List careUserListVoList = JSONUtil.toList(jsonContent, CareUserListVo.class); - if (CollUtil.isEmpty(loveTrendVOList)) { + if (CollUtil.isEmpty(careUserListVoList)) { return new Page<>(); } // 根据 name 过滤 if (StrUtil.isNotBlank(name)) { - loveTrendVOList = loveTrendVOList.stream() + careUserListVoList = careUserListVoList.stream() .filter(vo -> vo.getName() != null && vo.getName().contains(name)) .collect(Collectors.toList()); } - int total = loveTrendVOList.size(); + // 根据 name 过滤 + if (StrUtil.isNotBlank(orgName)) { + careUserListVoList = careUserListVoList.stream() + .filter(vo -> vo.getWorkUnit() != null && vo.getWorkUnit().contains(orgName)) + .collect(Collectors.toList()); + } + + int total = careUserListVoList.size(); int[] startEnd = PageUtil.transToStartEnd(pageNo - 1, pageSize); // 确保不越界 int start = Math.min(startEnd[0], total); int end = Math.min(startEnd[1], total); - List pageList = loveTrendVOList.subList(start, end); + List pageList = careUserListVoList.subList(start, end); - Page page = new Page<>(pageNo, pageSize, total); + Page page = new Page<>(pageNo, pageSize, total); page.setRecords(pageList); return page; @@ -432,4 +446,155 @@ public class LargeScreenDataServiceImpl extends ServiceImpl(); } } + + @Override + public List nearResources(String longitude, String latitude) { + // 总资源 (6个最近点 2个医院 2个小屋 2个AED) + List list = new ArrayList<>(); + // 医院 + List hospitalList = new ArrayList<>(); + // 小屋 + List roomList = new ArrayList<>(); + // AED + List xjAedList = new ArrayList<>(); + + List resourceList = resourceService.list(new LambdaQueryWrapper() + .in(Resource::getType, Arrays.asList("1", "3")) + .isNotNull(Resource::getLongitude) + .isNotNull(Resource::getLatitude)); + if (CollUtil.isNotEmpty(resourceList)) { + // 分组 + Map> groupedResources = resourceList.stream() + .collect(Collectors.groupingBy(Resource::getType)); + + List type1Resources = groupedResources.getOrDefault("1", new ArrayList<>()); + hospitalList = type1Resources.stream() + .map(TblBaseHospitalVo::new) + .collect(Collectors.toList()); + + List type3Resources = groupedResources.getOrDefault("3", new ArrayList<>()); + roomList = type3Resources.stream() + .map(TblBaseHospitalVo::new) + .collect(Collectors.toList()); + } + + List aedList = xjAedService.list(new LambdaQueryWrapper() + .isNotNull(XjAed::getLatitude) + .isNotNull(XjAed::getLongitude)); + if (CollUtil.isNotEmpty(aedList)) { + xjAedList = aedList.stream().map(TblBaseHospitalVo::new).collect(Collectors.toList()); + } + + // 找出最近的两个点 + hospitalList = findThreeNearestHospitals(2, hospitalList, TypeConversionUtil.toDoubleOfNull(longitude), TypeConversionUtil.toDoubleOfNull(latitude)); + roomList = findThreeNearestHospitals(2, roomList, TypeConversionUtil.toDoubleOfNull(longitude), TypeConversionUtil.toDoubleOfNull(latitude)); + xjAedList = findThreeNearestHospitals(2, xjAedList, TypeConversionUtil.toDoubleOfNull(longitude), TypeConversionUtil.toDoubleOfNull(latitude)); + list.addAll(hospitalList); + list.addAll(roomList); + list.addAll(xjAedList); + // 赋值距离 + for (TblBaseHospitalVo vo : list) { + if (vo.getLat() != null && Double.parseDouble(vo.getLat().toString()) != 0.0 && vo.getLon() != null && Double.parseDouble(vo.getLon().toString()) != 0.0) { + double lat2 = Double.parseDouble(vo.getLat().toString()); + double lng2 = Double.parseDouble(vo.getLon().toString()); + double distance = getDistance(TypeConversionUtil.toDoubleOfNull(latitude), TypeConversionUtil.toDoubleOfNull(longitude), lat2, lng2); + if (distance > 1000d) { + vo.setDistance(Math.round((distance / 1000d) * 100) / 100 + "km"); + } else { + vo.setDistance(Math.round(distance * 100) / 100 + "m"); + } + } + } + return list; + } + + /** + * 获取最近的点 + * + * @param allList 所有资源 + * @param lon 经纬度 + * @param lat 经纬度 + * @return 最近的医院列表 + */ + public List findThreeNearestHospitals(int num, List allList, final Double lon, final Double lat) { + if (allList == null || allList.size() < num) { + return allList; // 如果列表中没有足够的点,则返回全部点 + } + + // 先对整个列表进行排序 + allList.sort(new Comparator() { + @Override + public int compare(TblBaseHospitalVo h1, TblBaseHospitalVo h2) { + double dist1 = distance(lat, lon, h1.getLat().doubleValue(), h1.getLon().doubleValue()); + double dist2 = distance(lat, lon, h2.getLat().doubleValue(), h2.getLon().doubleValue()); + return Double.compare(dist1, dist2); + } + }); + + // 选择最近的点 + return new ArrayList<>(allList.subList(0, num)); + } + + /** + * 计算两点之间的距离 + * + * @param lat1 经纬度1 + * @param lon1 经纬度1 + * @param lat2 经纬度2 + * @param lon2 经纬度2 + * @return 距离 + */ + private static double distance(double lat1, double lon1, double lat2, double lon2) { + // 地球半径(单位:千米) + final int R = 6371; + + double latDistance = Math.toRadians(lat2 - lat1); + double lonDistance = Math.toRadians(lon2 - lon1); + double a = Math.sin(latDistance / 2) * Math.sin(latDistance / 2) + + Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) + * Math.sin(lonDistance / 2) * Math.sin(lonDistance / 2); + double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); + // 将距离转化为米 + return R * c * 1000; + } + + private static double EARTH_RADIUS = 6378.137; + + /** + * 根据经纬度计算两点之间的距离 GetDistance:().
+ * + * @param lat1 1点的纬度 + * @param lng1 1点的经度 + * @param lat2 2点的纬度 + * @param lng2 2点的经度 + * @return 距离 单位 米 + * @author chiwei + */ + public static double getDistance(double lat1, double lng1, double lat2, double lng2) { + double radLat1 = getRadian(lat1); + double radLat2 = getRadian(lat2); + double a = radLat1 - radLat2;// 两点纬度差 + double b = getRadian(lng1) - getRadian(lng2);// 两点的经度差 + double s = 2 * Math.asin(Math.sqrt( + Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2))); + s = s * EARTH_RADIUS; + return s * 1000; + } + + /** + * 角度弧度计算公式 rad:().
+ *

+ * 360度=2π π=Math.PI + *

+ * x度 = x*π/360 弧度 + * + * @param degree + * @return + * @author chiwei + * @since JDK 1.6 + */ + private static double getRadian(double degree) { + return degree * Math.PI / 180.0; + } + } diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/IXjAedService.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/IXjAedService.java index cdd39a7..b1af208 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/IXjAedService.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/IXjAedService.java @@ -6,4 +6,6 @@ import com.renkang.emergency.entity.XjAed; public interface IXjAedService extends IService { void aedDataInit(); + + void aedDataUtil(); } diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/impl/TblAmbulanceGpsServiceImpl.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/impl/TblAmbulanceGpsServiceImpl.java index 49cb51b..c2cbfb5 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/impl/TblAmbulanceGpsServiceImpl.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/impl/TblAmbulanceGpsServiceImpl.java @@ -164,7 +164,7 @@ public class TblAmbulanceGpsServiceImpl extends ServiceImpl diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/impl/XjAedServiceImpl.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/impl/XjAedServiceImpl.java index 41ebaed..9820adc 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/impl/XjAedServiceImpl.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/impl/XjAedServiceImpl.java @@ -93,6 +93,7 @@ public class XjAedServiceImpl extends ServiceImpl implements } + /** * 获取单元格的值 */ @@ -132,4 +133,16 @@ public class XjAedServiceImpl extends ServiceImpl implements return ""; } } + + @Override + public void aedDataUtil() { + StringBuilder sb = new StringBuilder(); + String[] split = converter.run("东经E:85°02′51″" + "-" + "北纬N:45°37′34″").split("-"); + CoordinateConverter.Gps gps = CoordinateConverter.GPS84ToGCJ02( + TypeConversionUtil.toDoubleOfNull(split[0]), TypeConversionUtil.toDoubleOfNull(split[1])); + if (gps != null) { + System.out.println(gps.getLongitude()); + System.out.println(gps.getLatitude()); + } + } } diff --git a/health-emergency/health-emergency-biz/src/main/resources/tempData/guanaiList.json b/health-emergency/health-emergency-biz/src/main/resources/tempData/guanaiList.json index e2f1306..e7c5036 100644 --- a/health-emergency/health-emergency-biz/src/main/resources/tempData/guanaiList.json +++ b/health-emergency/health-emergency-biz/src/main/resources/tempData/guanaiList.json @@ -44,11 +44,12 @@ "homocysteine": 15.04, "homocysteineTarget": "13.54", "homocysteineCurrent": 0, - "workUnit": "", + "workUnit": "新疆油田储气库有限公司-机关", "workUnitId": "103074", "age": 36, "sex": "男", - "name": "连龙刚" + "name": "连龙刚", + "careLiaisonName": "刘一" }, { "id": 10641, @@ -95,11 +96,12 @@ "homocysteine": 15.04, "homocysteineTarget": "13.54", "homocysteineCurrent": 0, - "workUnit": "", + "workUnit": "新疆油田储气库有限公司-机关", "workUnitId": "103074", "age": 41, "sex": "男", - "name": "李苏望" + "name": "李苏望", + "careLiaisonName": "陈二" }, { "id": 10641, @@ -146,11 +148,12 @@ "homocysteine": 15.04, "homocysteineTarget": "13.54", "homocysteineCurrent": 0, - "workUnit": "", + "workUnit": "新疆油田储气库有限公司-机关", "workUnitId": "103074", "age": 29, "sex": "男", - "name": "王先森" + "name": "王先森", + "careLiaisonName": "张三" }, { "id": 10641, @@ -197,11 +200,12 @@ "homocysteine": 15.04, "homocysteineTarget": "13.54", "homocysteineCurrent": 0, - "workUnit": "", + "workUnit": "新疆油田储气库有限公司-机关", "workUnitId": "103074", "age": 50, "sex": "男", - "name": "阿尔麦江.买买提" + "name": "阿尔麦江.买买提", + "careLiaisonName": "李四" }, { "id": 10641, @@ -248,11 +252,12 @@ "homocysteine": 15.04, "homocysteineTarget": "13.54", "homocysteineCurrent": 0, - "workUnit": "", + "workUnit": "新疆油田储气库有限公司-机关", "workUnitId": "103074", "age": 24, "sex": "女", - "name": "古力娜扎.艾卡尔" + "name": "古力娜扎.艾卡尔", + "careLiaisonName": "王五" }, { "id": 10641, @@ -299,11 +304,12 @@ "homocysteine": 15.04, "homocysteineTarget": "13.54", "homocysteineCurrent": 0, - "workUnit": "", + "workUnit": "新疆油田储气库有限公司-机关", "workUnitId": "103074", "age": 37, "sex": "男", - "name": "梁文斌" + "name": "梁文斌", + "careLiaisonName": "赵六" }, { "id": 10641, @@ -350,11 +356,12 @@ "homocysteine": 15.04, "homocysteineTarget": "13.54", "homocysteineCurrent": 0, - "workUnit": "", + "workUnit": "新疆油田储气库有限公司-机关", "workUnitId": "103074", "age": 46, "sex": "男", - "name": "加海洋" + "name": "加海洋", + "careLiaisonName": "孙七" }, { "id": 10641, @@ -401,11 +408,11 @@ "homocysteine": 15.04, "homocysteineTarget": "13.54", "homocysteineCurrent": 0, - "workUnit": "", + "workUnit": "新疆油田储气库有限公司-机关", "workUnitId": "103074", "age": 41, "sex": "女", - "name": "朱玲玲" + "name": "周八" }, { "id": 10641, @@ -452,11 +459,11 @@ "homocysteine": 15.04, "homocysteineTarget": "13.54", "homocysteineCurrent": 0, - "workUnit": "", + "workUnit": "新疆油田储气库有限公司-机关", "workUnitId": "103074", "age": 28, "sex": "女", - "name": "张丽萍" + "name": "吴九" }, { "id": 10641, @@ -503,11 +510,11 @@ "homocysteine": 15.04, "homocysteineTarget": "13.54", "homocysteineCurrent": 0, - "workUnit": "", + "workUnit": "新疆油田储气库有限公司-机关", "workUnitId": "103074", "age": 36, "sex": "男", - "name": "定缪军" + "name": "郑十" } ] diff --git a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/HealthUserEmployeeExMapper.xml b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/HealthUserEmployeeExMapper.xml index 3e90cff..730c08f 100644 --- a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/HealthUserEmployeeExMapper.xml +++ b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/HealthUserEmployeeExMapper.xml @@ -99,11 +99,11 @@ height, weight, md_marriage_status, - care_liaison_name, - care_liaison_job, - care_liaison_phone, - lifeguard_name, - lifeguard_phone + a.care_liaison_name, + a.care_liaison_job, + a.care_liaison_phone, + a.lifeguard_name, + a.lifeguard_phone from health_user_employee_ex a left join sys_user b on a.id = b.id @@ -182,6 +182,11 @@ + + + + +