Java代码什么意思

问题遇到的现象和发生背景

代码看不懂什么意思

遇到的现象和发生背景,请写出第一个错误信息
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
@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

运行结果及详细报错内容
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

有用记得采纳,它实现了以下功能:

通过LambdaQueryWrapper语句查询所有空日期字段的SunMt对象;
对于每一个空日期字段的SunMt对象,检查其经纬度是否存在非空日期字段的SunMt对象;
如果存在,则跳过;
如果不存在,则调用initMResult方法,将结果数据批量插入到数据库中;
initMResult方法通过REST API获取指定经纬度的12个月的数据,并将其封装为SunMt对象的列表,并返回该列表

哪里不懂

img

首先,对数据库SunMt表进行一个查询,搜索dateStr为null的数据,进行一个遍历,遍历的时候也进行查询搜索,查询是否这张表里面存在相同的Lnt,Lat,DateStr,如果存在则进行下一条数据,不存在则去请求远程远程服务器的内容,并且进行数组填充,在将数据保存到数据库里面去。达到一个添加的操作