XXXServicelmpl.java
@Override
public void getEquipmentLocation(Long currentPage, Long size){
boolean loop = true;
List<AppStatisticalSettingEquipmentAddressRespVO> equipmentList = new ArrayList<>();
while (loop){
Page<EquipmentDO> page = new Page<>(currentPage, size);
QueryWrapper<EquipmentDO> queryWrapperX = new QueryWrapper<EquipmentDO>().select("id,lat,lng");
IPage<EquipmentDO> iPage = equipmentMapper.selectPage(page, queryWrapperX);
if(iPage.getRecords().size() > 0){
iPage.getRecords().forEach((item) -> {
if(item.getLat() > 0 && item.getLng() > 0)
{
AppStatisticalSettingEquipmentAddressRespVO equipmentAddressRespVO = new AppStatisticalSettingEquipmentAddressRespVO();
try {
URL url = new URL("https://api.map.baidu.com/reverse_geocoding/v3/?ak=RVbvVtpBxRgkvDGS6Wej2G3nb0ejOxGk&output=json&coordtype=wgs84ll&location=" + item.getLat() + "," + item.getLng());
HttpURLConnection ucon = (HttpURLConnection) url.openConnection();
ucon.connect();
InputStream in = ucon.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8));
String str = reader.readLine();
JSONObject jsonObj = JSON.parseObject(str);
JSONObject address = jsonObj.getJSONObject("result").getJSONObject("addressComponent");
if(address != null)
{
equipmentAddressRespVO.setEquipmentId(item.getId());
equipmentAddressRespVO.setProvince(address.getString("province"));
equipmentAddressRespVO.setCity(address.getString("city"));
equipmentAddressRespVO.setDistrict(address.getString("district"));
equipmentList.add(equipmentAddressRespVO);
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
});
loop = false;
currentPage += 1;
}else{
loop = false;
}
}
// 生成批量数据
equipmentMapper.updateBatchDifferentFields(equipmentList);
}
XXXMapper.java
void updateBatchDifferentFields(@Param("list") List<AppStatisticalSettingEquipmentAddressRespVO> equipmentList);
XXXMapper.xml
<update id="updateBatchDifferentFields">
<foreach collection="list" item="item" index="index" open="" close="" separator=";">
update nlm_equipment
<set>
province=#{item.province},
city=#{item.city},
district=#{item.district}
</set>
where id = ${item.equipmentId}
</foreach>
</update>