diff --git a/db/sql/2025-12-02-xj_emergency加字段.sql b/db/sql/2025-12-02-xj_emergency加字段.sql index c138f01..9be1f54 100644 --- a/db/sql/2025-12-02-xj_emergency加字段.sql +++ b/db/sql/2025-12-02-xj_emergency加字段.sql @@ -1,5 +1,8 @@ +-- aed表加字段 ALTER TABLE `aed_equipment_manger` ADD COLUMN `geo_collect_type` tinyint NULL DEFAULT 0 COMMENT '位置数据维护方式(0-地图选点,1-手动维护)' AFTER `latitude`; + ADD COLUMN `ay_id` varchar(255) NULL COMMENT '安眼平台系统id' AFTER `name`; +-- 应急资源表加字段 ALTER TABLE `emergency_resource` ADD COLUMN `ay_id` varchar(255) NULL COMMENT '安眼平台系统id' AFTER `run_time`; \ No newline at end of file diff --git a/functional-modules/xj-anyan-api/src/main/java/com/renkang/anyan/model/dto/EmergencyContactParam.java b/functional-modules/xj-anyan-api/src/main/java/com/renkang/anyan/model/dto/EmergencyContactParam.java index ae7e607..40c2f63 100644 --- a/functional-modules/xj-anyan-api/src/main/java/com/renkang/anyan/model/dto/EmergencyContactParam.java +++ b/functional-modules/xj-anyan-api/src/main/java/com/renkang/anyan/model/dto/EmergencyContactParam.java @@ -16,6 +16,11 @@ public class EmergencyContactParam { */ @Schema(title = "身份证号") private String idNo; + /** + * 工号 + */ + @Schema(title = "工号") + private String employeeNum; /** * 数据级别 */ diff --git a/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/entity/AedEquipmentManger.java b/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/entity/AedEquipmentManger.java index f8ef564..c0e9f61 100644 --- a/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/entity/AedEquipmentManger.java +++ b/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/entity/AedEquipmentManger.java @@ -437,5 +437,10 @@ public class AedEquipmentManger implements Serializable { */ private String controlOrgName; + /** + * 对应的安眼系统的业务ID + */ + @Schema(title = "安眼id") + private String ayId; } diff --git a/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/entity/Resource.java b/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/entity/Resource.java index 95e98bc..78da788 100644 --- a/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/entity/Resource.java +++ b/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/entity/Resource.java @@ -67,6 +67,7 @@ public class Resource implements Serializable { @Excel(name = "纬度", width = 15) @Schema(title = "纬度") private BigDecimal latitude; + /** * 资源类型(1:油田医院 3:健康小屋 5:救护车) 202508xj 项目字典发生变化 , 使用字典resource_type , */ @@ -184,7 +185,9 @@ public class Resource implements Serializable { @Excel(name = "备注", width = 15) @Schema(title = "备注") private String memo; - + /** + * 对应的安眼系统的业务ID + */ @Schema(title = "安眼id") private String ayId; } 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 2a397f8..c13e1a9 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 @@ -162,6 +162,12 @@ public class LargeScreenNewController { largeScreenService.runJob(); } + @GetMapping("syncAnYanHospital") + @Operation(summary = "测试安眼数据同步任务", description = "测试安眼数据同步任务") + public void syncAnYanHospital() { + largeScreenService.syncAnYanHospital(); + } + /** * 编辑或新增 * diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/entity/vo/LargeScreenMap.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/entity/vo/LargeScreenMap.java index 06b2853..7d052a3 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/entity/vo/LargeScreenMap.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/entity/vo/LargeScreenMap.java @@ -42,7 +42,7 @@ public class LargeScreenMap { this.id = resource.getId(); this.name = resource.getName(); this.mobile = resource.getMobile(); - this.orgName = resource.getAddress(); + this.orgName = resource.getMemo(); this.type = resource.getType(); this.latitude = String.valueOf(resource.getLatitude()); this.longitude = String.valueOf(resource.getLongitude()); diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/impl/LargeScreenServiceImpl.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/impl/LargeScreenServiceImpl.java index 8e6352e..0b72c04 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/impl/LargeScreenServiceImpl.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/largeScreen/service/impl/LargeScreenServiceImpl.java @@ -42,10 +42,8 @@ import org.jeecg.util.TypeConversionUtil; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Random; +import java.math.RoundingMode; +import java.util.*; import java.util.function.Consumer; import java.util.function.Supplier; import java.util.stream.Collectors; @@ -483,52 +481,70 @@ public class LargeScreenServiceImpl extends ServiceImpl hospitalListVOList = anYanClient.hospitalList(); - if (ObjectUtil.isEmpty(hospitalListVOList)) { + if (ObjectUtil.isNotEmpty(hospitalListVOList)) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(Resource::getType, "1"); - wrapper.in(Resource::getId, hospitalListVOList.stream().map(HospitalListVO::getId).collect(Collectors.toList())); List hospitalList = resourceService.list(wrapper); List saveOrUpdateBatchList = new ArrayList<>(); for (HospitalListVO hospital : hospitalListVOList) { - Resource resource = hospitalList.stream().filter(re -> hospital.getId().equals(re.getId())).findFirst().orElse(new Resource()); + Resource resource = hospitalList.stream().filter(re -> hospital.getId().equals(re.getAyId())).findFirst().orElse(new Resource()); resource.setAddress(hospital.getAddress()); - resource.setMemo(hospital.getAlias()); //医院别名使用备注字段 - resource.setCreateTime(DateUtil.parseDate(hospital.getContractDate())); - resource.setName(hospital.getHospitalName()); - resource.setId(hospital.getId()); + resource.setMemo(hospital.getHospitalName()); //通过观察安眼返回的hospitalName字段并不是医院名称 ,而是地址 + try { + resource.setCreateTime(DateUtil.parseDate(hospital.getContractDate())); + } catch (Exception e) { + e.printStackTrace(); + } + resource.setName(hospital.getAlias()); //别名是医院名称 + resource.setAyId(hospital.getId()); + //todo 如果经纬度需要经度的转换在此处处理 resource.setLatitude(TypeConversionUtil.toBigDecimalOfNull(hospital.getLat())); resource.setLongitude(TypeConversionUtil.toBigDecimalOfNull(hospital.getLon())); resource.setType("1"); saveOrUpdateBatchList.add(resource); } resourceService.saveOrUpdateBatch(saveOrUpdateBatchList); + //处理需要删除的数据(本次接口没查到的直接删除 , 以安眼接口返回为准) + List anYanHospitalIds = saveOrUpdateBatchList.stream().map(Resource::getAyId).collect(Collectors.toList()); + List deleteList = hospitalList.stream().filter(hos -> !anYanHospitalIds.contains(hos.getAyId())).collect(Collectors.toList()); + if(ObjectUtil.isNotEmpty(deleteList)){ + resourceService.removeBatchByIds(deleteList); + } } - //更新健康小屋信息 + //更新健康小屋信息,,数据全部以安眼平台接口返回为准 List healthRoomVOList = anYanClient.healthPlaceHomList(); - if (ObjectUtil.isEmpty(healthRoomVOList)) { - List saveOrUpdateBatchList = new ArrayList<>(); + if (ObjectUtil.isNotEmpty(healthRoomVOList)) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(Resource::getType, "2"); - wrapper.in(Resource::getId, healthRoomVOList.stream().map(HealthRoomBaseVO::getId).collect(Collectors.toList())); + wrapper.eq(Resource::getType, "3"); List roomList = resourceService.list(wrapper); + List saveOrUpdateBatchList = new ArrayList<>(); for (HealthRoomBaseVO room : healthRoomVOList) { - Resource resource = roomList.stream().filter(re -> room.getId().equals(re.getId())).findFirst().orElse(new Resource()); - resource.setAddress(room.getAddress()); - resource.setCreateTime(DateUtil.parseDate(room.getBuildDate())); - resource.setName(room.getDepartName()); - resource.setId(room.getId()); - resource.setLatitude(TypeConversionUtil.toBigDecimalOfNull(room.getLat())); - resource.setLongitude(TypeConversionUtil.toBigDecimalOfNull(room.getLon())); + Resource resource = roomList.stream().filter(re -> room.getId().equals(re.getAyId())).findFirst().orElse(new Resource()); + resource.setAddress(Optional.ofNullable(room.getDepartName()).orElse("") + Optional.ofNullable(room.getAddress()).orElse("")); + resource.setUpdateTime(new Date()); + resource.setName(room.getDepartName()); //暂时使用单位名称作为名称, 就可能会有重复 + resource.setMemo(room.getDepartName()); + resource.setAyId(room.getId()); + //处理经纬度(安眼返回的数据精度过长) + if(StrUtil.isNotEmpty(room.getLat()) && StrUtil.isNotEmpty(room.getLon())){ + resource.setLatitude(TypeConversionUtil.toBigDecimalOfNull(room.getLat()).setScale(6, RoundingMode.HALF_UP)); + resource.setLongitude(TypeConversionUtil.toBigDecimalOfNull(room.getLon()).setScale(6, RoundingMode.HALF_UP)); + } resource.setJobNum(room.getJobNum()); resource.setRunTime(room.getRunTime()); - resource.setType("2"); + resource.setType("3"); saveOrUpdateBatchList.add(resource); } resourceService.saveOrUpdateBatch(saveOrUpdateBatchList); + //处理需要删除的数据(本次接口没查到的直接删除 , 以安眼接口返回为准) + List anYanRoomIds = saveOrUpdateBatchList.stream().map(Resource::getAyId).collect(Collectors.toList()); + List deleteList = roomList.stream().filter(room -> !anYanRoomIds.contains(room.getAyId())).collect(Collectors.toList()); + if(ObjectUtil.isNotEmpty(deleteList)){ + resourceService.removeBatchByIds(deleteList); + } } } } 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 f38184a..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 @@ -8,9 +8,4 @@ public interface IXjAedService extends IService { void aedDataInit(); void aedDataUtil(); - - /** - * 定时任务更新aed数据 , 数据通过安眼平台接口获取 - */ - void aedDataRefreshTask(); } 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 4ff9e64..1ddb609 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 @@ -150,15 +150,4 @@ public class XjAedServiceImpl extends ServiceImpl implements System.out.println(gps.getLatitude()); } } - - @Override - @Transactional - public void aedDataRefreshTask() { - //安眼接口查询AED数据 , 主要更新位置信息 ,目前安眼平台没有设备编码来确定AED的唯一性,安放位置使用二级单位+三级单位+具体位置标注 - List anYanAedInfos = anYanClient.queryAnYanAedInfo(); - if(ObjectUtil.isNotEmpty(anYanAedInfos)){ - //todo , 本系统做了对应功能后此处的同步方法暂不使用 - List xjAedList = baseMapper.selectList(new QueryWrapper<>()); - } - } }