String keyValue = ""; //查询是否当天为提醒日期的列表 LocalDate today = LocalDate.now(); List<Map> findRemindContentList = storageInManager.queryRemindDateUserList(today.toString()); Map<String, List<Map>> map = findRemindContentList.stream().collect(Collectors.groupingBy(a -> RequestUtil.getMapString((Map) a, "EMAIL", ""))); for (Map.Entry<String, List<Map>> tep : map.entrySet()) { try { keyValue = tep.getKey(); List<Map> remindContentList = tep.getValue(); if (StringUtils.isNotBlank(keyValue) && CollectionUtils.isNotEmpty(remindContentList)) { this.pushEmailMQ(EmailService.getRemindDocumentEmailJob(remindContentList, new String[]{keyValue})); } } catch (Exception e) { log.error("元器件入库提醒出错!,用户邮箱:" + keyValue, e); } }
时间: 2024-04-19 09:26:38 浏览: 12
这段代码主要是查询当天需要提醒的列表,并将结果按照用户的邮箱进行分组,然后将每个用户的提醒内容发送邮件进行通知。
首先,定义一个空字符串变量keyValue,用于存储用户的邮箱。
接下来,通过调用storageInManager的queryRemindDateUserList方法,传入当天日期的字符串形式,查询当天需要提醒的列表,并将结果保存在findRemindContentList变量中(假设该方法返回一个List<Map>类型的结果)。
然后,通过stream和collect方法对findRemindContentList进行分组操作,按照每个用户的邮箱进行分组,并将结果保存在map变量中。
接着,通过遍历map的entrySet,获取每个用户的邮箱和对应的提醒内容列表。
在循环中,将当前用户的邮箱赋值给keyValue变量。
然后,判断keyValue是否非空,并且判断当前用户的提醒内容列表是否非空。如果满足条件,则调用EmailService的getRemindDocumentEmailJob方法,传入提醒内容列表和一个包含当前用户邮箱的字符串数组作为参数,生成邮件任务,并通过调用this.pushEmailMQ方法将邮件任务发送到消息队列中进行异步发送。
最后,如果出现异常,记录错误日志并打印出错信息,包括用户邮箱信息。
需要注意的是,在使用这段代码时,需要保证所依赖的类和方法(如storageInManager、queryRemindDateUserList、pushEmailMQ等)已正确引入,并且确保查询结果中包含EMAIL字段。另外,还需要确保所依赖的工具类(如StringUtils、CollectionUtils)已正确引入。