代码看不懂什么意思
@Test
public void test2() {
LambdaQueryWrapper wer = Wrappers.lambdaQuery();
wer.isNull(SunMt::getDateStr);
List sunMtList = sunMtDao.selectList(wer);
for (SunMt sunMt : sunMtList) {
//if (StrUtil.isEmpty(sunMt.getGh())) {
LambdaQueryWrapper wrapper = Wrappers.lambdaQuery();
wrapper.eq(SunMt::getLnt, sunMt.getLnt());
wrapper.eq(SunMt::getLat, sunMt.getLat());
wrapper.isNotNull(SunMt::getDateStr);
List mts = sunMtDao.selectList(wrapper);
if (CollectionUtil.isNotEmpty(mts)) {
continue;
}
List mtList = initMResult(sunMt);
sunMtDao.batchInsert(mtList);
}
}
private List initMResult(SunMt sunMt1) {
String url = "https://mdx.meteotest.ch/api_v1?key=E55FFFBD5E620AD58C8C0D06345F87F2&service=meteonorm&action=calculatestandardmonthly&lat=" + sunMt1.getLat() + "&lon=" + sunMt1.getLnt() + "&format=json";
List mtList = new ArrayList<>();
String data = RestUtils.restCallerGet(url, "");
JSONObject jsonObject = JSONObject.parseObject(data);
//System.out.println(jsonObject);
JSONObject jd = null;
if (jsonObject == null) {
return mtList;
}
List strings = Arrays.asList("2005-01-01 00:00:00",
"2005-02-01 00:00:00",
"2005-03-01 00:00:00",
"2005-04-01 00:00:00",
"2005-05-01 00:00:00",
"2005-06-01 00:00:00",
"2005-07-01 00:00:00",
"2005-08-01 00:00:00",
"2005-09-01 00:00:00",
"2005-10-01 00:00:00",
"2005-11-01 00:00:00",
"2005-12-01 00:00:00"
);
for (int i = 0; i < strings.size(); i++) {
jd = jsonObject.getJSONObject("payload").getJSONObject("meteonorm").getJSONObject("target").getJSONObject(strings.get(i));
if (jd == null) {
continue;
}
SunMt sunMt = new SunMt();
BeanUtil.copyProperties(sunMt1, sunMt);
sunMt.setId(idGeneratorWorker.nextId());
sunMt.setDateStr(strings.get(i));
sunMt.setTs(jd.getDouble("ts
有用记得采纳,它实现了以下功能:
通过LambdaQueryWrapper语句查询所有空日期字段的SunMt对象;
对于每一个空日期字段的SunMt对象,检查其经纬度是否存在非空日期字段的SunMt对象;
如果存在,则跳过;
如果不存在,则调用initMResult方法,将结果数据批量插入到数据库中;
initMResult方法通过REST API获取指定经纬度的12个月的数据,并将其封装为SunMt对象的列表,并返回该列表
哪里不懂
首先,对数据库SunMt表进行一个查询,搜索dateStr为null的数据,进行一个遍历,遍历的时候也进行查询搜索,查询是否这张表里面存在相同的Lnt,Lat,DateStr,如果存在则进行下一条数据,不存在则去请求远程远程服务器的内容,并且进行数组填充,在将数据保存到数据库里面去。达到一个添加的操作