同步AED数据
This commit is contained in:
+6
@@ -326,4 +326,10 @@ public class AedEquipmentMangerController extends JeecgController<AedEquipmentMa
|
||||
return Result.ok(aedEquipmentMangerService.selectAedAllBack());
|
||||
}
|
||||
|
||||
@GetMapping("/syncAnYanAedData")
|
||||
public Result<String> syncAnYanAedData() {
|
||||
aedEquipmentMangerService.syncAnYanAedData();
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+5
@@ -132,4 +132,9 @@ public interface IAedEquipmentMangerService extends IService<AedEquipmentManger>
|
||||
SrcInfo getSrc();
|
||||
|
||||
List<AedEquipmentManger> selectAedAllBack();
|
||||
|
||||
/**
|
||||
* 从安眼系统同步更新AED数据
|
||||
*/
|
||||
void syncAnYanAedData();
|
||||
}
|
||||
|
||||
+68
-1
@@ -10,7 +10,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.renkang.emergency.aed.entity.AedLocationEquipment;
|
||||
import com.renkang.anyan.client.AnYanClient;
|
||||
import com.renkang.anyan.model.vo.AnYanAedInfo;
|
||||
import com.renkang.emergency.aed.manage.AedCacheNewManager;
|
||||
import com.renkang.emergency.aed.manage.AedManagerNew;
|
||||
import com.renkang.emergency.aed.mapper.AedEquipmentMangerMapper;
|
||||
@@ -27,6 +28,7 @@ import com.renkang.emergency.aed.vo.res.manager.AedGeo;
|
||||
import com.renkang.emergency.bean.response.SrcInfo;
|
||||
import com.renkang.emergency.entity.AedEquipmentManger;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.jeecg.bean.response.DepartEasyVO;
|
||||
import org.jeecg.common.system.api.ISysBaseAPI;
|
||||
import org.jeecg.common.system.util.DictUtil;
|
||||
import org.jeecg.common.system.vo.DictModel;
|
||||
@@ -50,6 +52,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -93,6 +96,8 @@ public class AedEquipmentMangerServiceImpl extends ServiceImpl<AedEquipmentMange
|
||||
private DictUtil dictUtil;
|
||||
@Autowired
|
||||
private GlobalManager globalManager;
|
||||
@Autowired
|
||||
private AnYanClient anYanClient;
|
||||
|
||||
@Override
|
||||
public IPage<AEDManagerPageRes> queryManagerPageList(Integer pageNo, Integer pageSize, String name, Integer type, String orgCode, String mfrs, String model, String hostSerialNum) {
|
||||
@@ -580,4 +585,66 @@ public class AedEquipmentMangerServiceImpl extends ServiceImpl<AedEquipmentMange
|
||||
public List<AedEquipmentManger> selectAedAllBack() {
|
||||
return list();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void syncAnYanAedData() {
|
||||
//通过安眼接口查询AED数据 ps:重要说明 ,此更新接口是完全以安眼接口返回的AED数据为基准,本系统自行维护或者修改的数据都会被覆盖掉(安眼有的数据才会被覆盖)
|
||||
List<AnYanAedInfo> anYanAedInfos = anYanClient.queryAnYanAedInfo();
|
||||
if(ObjectUtil.isNotEmpty(anYanAedInfos)){
|
||||
LambdaQueryWrapper<AedEquipmentManger> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(AedEquipmentManger::getPublishFlag, 1); //只处理已布点的数据
|
||||
List<AedEquipmentManger> equipmentMangerList = list(wrapper);
|
||||
List<AedEquipmentManger> saveOrUpdateBatchList = new ArrayList<>();
|
||||
//通过安眼平台返回的单位名称去反查本系统的orgCode
|
||||
Map<String, List<DepartEasyVO>> orgMap = sysBaseAPI.queryDeptByName( anYanAedInfos.stream().map(AnYanAedInfo::getThirdOfficeName).collect(Collectors.toSet()));
|
||||
for (AnYanAedInfo anYanAedInfo : anYanAedInfos) {
|
||||
try {
|
||||
AedEquipmentManger equipmentManger = equipmentMangerList.stream().filter(re -> anYanAedInfo.getId().equals(re.getAyId())).findFirst().orElse(new AedEquipmentManger());
|
||||
equipmentManger.setName("自动体外除颤仪");
|
||||
equipmentManger.setPublishFlag(0);
|
||||
if(StrUtil.isNotEmpty(anYanAedInfo.getLat()) && StrUtil.isNotEmpty(anYanAedInfo.getLon())){
|
||||
equipmentManger.setGeoCollectType(1);
|
||||
equipmentManger.setPublishFlag(1);
|
||||
BigDecimal lon = BigDecimal.valueOf(Double.parseDouble(anYanAedInfo.getLon())).setScale(6, RoundingMode.HALF_UP);
|
||||
BigDecimal lat = BigDecimal.valueOf(Double.parseDouble(anYanAedInfo.getLat())).setScale(6, RoundingMode.HALF_UP);
|
||||
equipmentManger.setLongitude(lon);
|
||||
equipmentManger.setLatitude(lat);
|
||||
equipmentManger.setInstallTime(anYanAedInfo.getCreateDate());
|
||||
}
|
||||
//处理所属部门
|
||||
List<DepartEasyVO> departEasyVOS = orgMap.get(anYanAedInfo.getThirdOfficeName());
|
||||
if(ObjectUtil.isNotEmpty(departEasyVOS)){
|
||||
String orgCode = departEasyVOS.stream()
|
||||
.filter(de -> anYanAedInfo.getSecondOfficeName().equals(de.getParentName()))
|
||||
.map(DepartEasyVO::getOrgCode)
|
||||
.findFirst().orElse("");
|
||||
equipmentManger.setDepartCode(orgCode);
|
||||
}
|
||||
equipmentManger.setInstallAddress(anYanAedInfo.getProvidePlace());
|
||||
equipmentManger.setManageUserMobile(anYanAedInfo.getTel());
|
||||
equipmentManger.setUpdateTime(new Date());
|
||||
saveOrUpdate(equipmentManger); //更新信息
|
||||
saveOrUpdateBatchList.add(equipmentManger);
|
||||
aedCacheNewManager.deleteCache(equipmentManger.getId()); //删除缓存
|
||||
aedUtils.removeGeo(equipmentManger.getId()); //删除位置信息
|
||||
if(equipmentManger.getPublishFlag() == 1){
|
||||
//添加位置信息
|
||||
aedUtils.addGeo(equipmentManger.getLongitude().doubleValue(), equipmentManger.getLatitude().doubleValue(), equipmentManger.getId());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
//处理需要删除的数据(本次接口没查到的直接删除 , 以安眼接口返回为准)
|
||||
List<String> anYanAedIds = saveOrUpdateBatchList.stream().map(AedEquipmentManger::getAyId).collect(Collectors.toList());
|
||||
List<AedEquipmentManger> deleteList = equipmentMangerList.stream().filter(hos -> !anYanAedIds.contains(hos.getAyId())).collect(Collectors.toList());
|
||||
if(ObjectUtil.isNotEmpty(deleteList)){
|
||||
for(AedEquipmentManger manger : deleteList){
|
||||
removeById(manger);
|
||||
aedCacheNewManager.deleteCache(manger.getId());
|
||||
aedUtils.removeGeo(manger.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+16
-1
@@ -1,5 +1,6 @@
|
||||
package com.renkang.emergency.largeScreen.task;
|
||||
package com.renkang.emergency.task;
|
||||
|
||||
import com.renkang.emergency.aed.service.IAedEquipmentMangerService;
|
||||
import com.renkang.emergency.largeScreen.service.ILargeScreenService;
|
||||
import com.xxl.job.core.biz.model.ReturnT;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
@@ -12,6 +13,7 @@ import org.springframework.stereotype.Component;
|
||||
@RequiredArgsConstructor
|
||||
public class LargeScreenJob {
|
||||
private final ILargeScreenService largeScreenService;
|
||||
private final IAedEquipmentMangerService aedEquipmentMangerService;
|
||||
|
||||
/**
|
||||
* 同步安眼系统数据,缓存redis
|
||||
@@ -41,4 +43,17 @@ public class LargeScreenJob {
|
||||
return ReturnT.FAIL;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 同步安眼系统中的油aed数据
|
||||
*/
|
||||
@XxlJob(value = "syncAnYanAedData")
|
||||
public ReturnT<String> syncAnYanAedData() {
|
||||
try {
|
||||
aedEquipmentMangerService.syncAnYanAedData();
|
||||
return ReturnT.SUCCESS;
|
||||
} catch (Exception e) {
|
||||
return ReturnT.FAIL;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user