diff --git a/core/backend/src/main/java/io/dataease/job/sechedule/strategy/impl/EmailTaskHandler.java b/core/backend/src/main/java/io/dataease/job/sechedule/strategy/impl/EmailTaskHandler.java index 84acb72a59..0297af8bf4 100644 --- a/core/backend/src/main/java/io/dataease/job/sechedule/strategy/impl/EmailTaskHandler.java +++ b/core/backend/src/main/java/io/dataease/job/sechedule/strategy/impl/EmailTaskHandler.java @@ -179,9 +179,10 @@ public class EmailTaskHandler extends TaskHandler implements Job { // 下面继续执行发送邮件的 String recipients = emailTemplateDTO.getRecipients(); String reciUsers = emailTemplateDTO.getReciUsers(); + Integer extWaitTime = emailTemplateDTO.getExtWaitTime(); List reciLists = null; if (StringUtils.isNotBlank(reciUsers)) { - String emailUsers = Arrays.stream(reciUsers.split(",")).map(userService::getUserByName).filter(tempUser -> StringUtils.isNotBlank(tempUser.getEmail())).map(SysUserEntity::getEmail).collect(Collectors.joining(",")); + String emailUsers = Arrays.stream(reciUsers.split(",")).map(userService::getUserByName).filter(tempUser -> StringUtils.isNotBlank(tempUser.getEmail()) && 1 == tempUser.getEnabled()).map(SysUserEntity::getEmail).collect(Collectors.joining(",")); if (StringUtils.isNotBlank(emailUsers)) { if (StringUtils.isNotBlank(recipients)) { recipients += "," + emailUsers; @@ -232,15 +233,14 @@ public class EmailTaskHandler extends TaskHandler implements Job { } List errorMsgs = new ArrayList<>(); - for (int i = 0; i < channels.size(); i++) { - String channel = channels.get(i); + for (String channel : channels) { switch (channel) { case "email": if (StringUtils.isNotBlank(recipients)) try { Integer panelFormat = emailTemplateDTO.getPanelFormat(); if (ObjectUtils.isEmpty(panelFormat) || panelFormat == 0) { - bytes = emailXpackService.printData(url, token, xpackPixelEntity); + bytes = emailXpackService.printData(url, token, xpackPixelEntity, extWaitTime); emailService.sendWithImageAndFiles(recipients, emailTemplateDTO.getTitle(), contentStr, bytes, files); } else { bytes = emailXpackService.printPdf(url, token, xpackPixelEntity, false, true); @@ -252,12 +252,11 @@ public class EmailTaskHandler extends TaskHandler implements Job { } break; case "wecom": - if (SpringContextUtil.getBean(AuthUserService.class).supportWecom()) { + if (SpringContextUtil.getBean(AuthUserService.class).supportWecom() && CollectionUtils.isNotEmpty(reciLists)) { List wecomUsers = new ArrayList<>(); - for (int j = 0; j < reciLists.size(); j++) { - String reci = reciLists.get(j); + for (String reci : reciLists) { SysUserEntity userBySub = userService.getUserByName(reci); - if (ObjectUtils.isEmpty(userBySub)) continue; + if (ObjectUtils.isEmpty(userBySub) || 1 != userBySub.getEnabled()) continue; Long userId = userBySub.getUserId(); SysUserAssist sysUserAssist = sysUserService.assistInfo(userId); if (ObjectUtils.isEmpty(sysUserAssist) || StringUtils.isBlank(sysUserAssist.getWecomId())) @@ -267,7 +266,7 @@ public class EmailTaskHandler extends TaskHandler implements Job { if (CollectionUtils.isNotEmpty(wecomUsers)) { WecomXpackService wecomXpackService = SpringContextUtil.getBean(WecomXpackService.class); - bytes = emailXpackService.printData(url, token, xpackPixelEntity); + bytes = emailXpackService.printData(url, token, xpackPixelEntity, extWaitTime); WecomMsgResult wecomMsgResult = wecomXpackService.pushOaMsg(wecomUsers, emailTemplateDTO.getTitle(), contentStr, bytes, files); if (wecomMsgResult.getErrcode() != 0) { errorMsgs.add("wecom: " + wecomMsgResult.getErrmsg()); @@ -277,12 +276,11 @@ public class EmailTaskHandler extends TaskHandler implements Job { } break; case "dingtalk": - if (SpringContextUtil.getBean(AuthUserService.class).supportDingtalk()) { + if (SpringContextUtil.getBean(AuthUserService.class).supportDingtalk() && CollectionUtils.isNotEmpty(reciLists)) { List dingTalkUsers = new ArrayList<>(); - for (int j = 0; j < reciLists.size(); j++) { - String reci = reciLists.get(j); + for (String reci : reciLists) { SysUserEntity userBySub = userService.getUserByName(reci); - if (ObjectUtils.isEmpty(userBySub)) continue; + if (ObjectUtils.isEmpty(userBySub) || 1 != userBySub.getEnabled()) continue; Long userId = userBySub.getUserId(); SysUserAssist sysUserAssist = sysUserService.assistInfo(userId); if (ObjectUtils.isEmpty(sysUserAssist) || StringUtils.isBlank(sysUserAssist.getDingtalkId())) @@ -292,7 +290,7 @@ public class EmailTaskHandler extends TaskHandler implements Job { if (CollectionUtils.isNotEmpty(dingTalkUsers)) { DingtalkXpackService dingtalkXpackService = SpringContextUtil.getBean(DingtalkXpackService.class); - bytes = emailXpackService.printData(url, token, xpackPixelEntity); + bytes = emailXpackService.printData(url, token, xpackPixelEntity, extWaitTime); DingtalkMsgResult dingtalkMsgResult = dingtalkXpackService.pushOaMsg(dingTalkUsers, emailTemplateDTO.getTitle(), contentStr, bytes, files); if (dingtalkMsgResult.getErrcode() != 0) { errorMsgs.add("dingtalk: " + dingtalkMsgResult.getErrmsg()); @@ -302,12 +300,11 @@ public class EmailTaskHandler extends TaskHandler implements Job { } break; case "lark": - if (SpringContextUtil.getBean(AuthUserService.class).supportLark()) { + if (SpringContextUtil.getBean(AuthUserService.class).supportLark() && CollectionUtils.isNotEmpty(reciLists)) { List larkUsers = new ArrayList<>(); - for (int j = 0; j < reciLists.size(); j++) { - String reci = reciLists.get(j); + for (String reci : reciLists) { SysUserEntity userBySub = userService.getUserByName(reci); - if (ObjectUtils.isEmpty(userBySub)) continue; + if (ObjectUtils.isEmpty(userBySub) || 1 != userBySub.getEnabled()) continue; Long userId = userBySub.getUserId(); SysUserAssist sysUserAssist = sysUserService.assistInfo(userId); if (ObjectUtils.isEmpty(sysUserAssist) || StringUtils.isBlank(sysUserAssist.getLarkId())) @@ -317,7 +314,7 @@ public class EmailTaskHandler extends TaskHandler implements Job { if (CollectionUtils.isNotEmpty(larkUsers)) { LarkXpackService larkXpackService = SpringContextUtil.getBean(LarkXpackService.class); - bytes = emailXpackService.printData(url, token, xpackPixelEntity); + bytes = emailXpackService.printData(url, token, xpackPixelEntity, extWaitTime); LarkMsgResult larkMsgResult = larkXpackService.pushOaMsg(larkUsers, emailTemplateDTO.getTitle(), contentStr, bytes, files); if (larkMsgResult.getCode() != 0) { errorMsgs.add("lark: " + larkMsgResult.getMsg()); @@ -327,12 +324,11 @@ public class EmailTaskHandler extends TaskHandler implements Job { } break; case "larksuite": - if (SpringContextUtil.getBean(AuthUserService.class).supportLarksuite()) { + if (SpringContextUtil.getBean(AuthUserService.class).supportLarksuite() && CollectionUtils.isNotEmpty(reciLists)) { List larksuiteUsers = new ArrayList<>(); - for (int j = 0; j < reciLists.size(); j++) { - String reci = reciLists.get(j); + for (String reci : reciLists) { SysUserEntity userBySub = userService.getUserByName(reci); - if (ObjectUtils.isEmpty(userBySub)) continue; + if (ObjectUtils.isEmpty(userBySub) || 1 != userBySub.getEnabled()) continue; Long userId = userBySub.getUserId(); SysUserAssist sysUserAssist = sysUserService.assistInfo(userId); if (ObjectUtils.isEmpty(sysUserAssist) || StringUtils.isBlank(sysUserAssist.getLarksuiteId())) @@ -342,7 +338,7 @@ public class EmailTaskHandler extends TaskHandler implements Job { if (CollectionUtils.isNotEmpty(larksuiteUsers)) { LarksuiteXpackService larksuiteXpackService = SpringContextUtil.getBean(LarksuiteXpackService.class); - bytes = emailXpackService.printData(url, token, xpackPixelEntity); + bytes = emailXpackService.printData(url, token, xpackPixelEntity, extWaitTime); LarksuiteMsgResult larksuiteMsgResult = larksuiteXpackService.pushOaMsg(larksuiteUsers, emailTemplateDTO.getTitle(), contentStr, bytes, files); if (larksuiteMsgResult.getCode() != 0) { errorMsgs.add("larksuite: " + larksuiteMsgResult.getMsg()); @@ -359,7 +355,7 @@ public class EmailTaskHandler extends TaskHandler implements Job { if (SpringContextUtil.getBean(AuthUserService.class).supportLark() && CollectionUtils.isNotEmpty(groupList)) { LarkXpackService larkXpackService = SpringContextUtil.getBean(LarkXpackService.class); if (ObjectUtils.isEmpty(bytes)) { - bytes = emailXpackService.printData(url, token, xpackPixelEntity); + bytes = emailXpackService.printData(url, token, xpackPixelEntity, extWaitTime); } List larkMsgResultList = larkXpackService.pushChatOaMsg(groupList, emailTemplateDTO.getTitle(), contentStr, bytes, files); larkMsgResultList.forEach(larkMsgResult -> { diff --git a/core/backend/src/main/java/io/dataease/plugins/server/XEmailTaskServer.java b/core/backend/src/main/java/io/dataease/plugins/server/XEmailTaskServer.java index ffb7f95c26..8cc904231d 100644 --- a/core/backend/src/main/java/io/dataease/plugins/server/XEmailTaskServer.java +++ b/core/backend/src/main/java/io/dataease/plugins/server/XEmailTaskServer.java @@ -207,7 +207,7 @@ public class XEmailTaskServer { String currentToken = ServletUtils.getToken(); Future future = priorityExecutor.submit(() -> { try { - return emailXpackService.print(url, currentToken, buildPixel(request.getPixel())); + return emailXpackService.print(url, currentToken, buildPixel(request.getPixel()), request.getExtWaitTime()); } catch (Exception e) { LogUtil.error(e.getMessage(), e); DEException.throwException("预览失败,请联系管理员"); @@ -247,7 +247,7 @@ public class XEmailTaskServer { try { Future future = priorityExecutor.submit(() -> { try { - return emailXpackService.print(url, token, buildPixel(request.getPixel())); + return emailXpackService.print(url, token, buildPixel(request.getPixel()), request.getExtWaitTime()); } catch (Exception e) { LogUtil.error(e.getMessage(), e); DEException.throwException("预览失败,请联系管理员"); diff --git a/core/backend/src/main/resources/db/migration/V59__1.18.14.sql b/core/backend/src/main/resources/db/migration/V59__1.18.14.sql index 226ae94e9b..0214c7b010 100644 --- a/core/backend/src/main/resources/db/migration/V59__1.18.14.sql +++ b/core/backend/src/main/resources/db/migration/V59__1.18.14.sql @@ -1 +1,9 @@ -UPDATE `sys_user` set `enabled` = 0 where `user_id` = 2; \ No newline at end of file +UPDATE `sys_user` +set `enabled` = 0 +where `user_id` = 2; + +ALTER TABLE `sys_task_email` + ADD COLUMN `groups` varchar(255) NULL COMMENT '群聊' AFTER `view_data_range`; + +ALTER TABLE `sys_task_email` + ADD COLUMN `ext_wait_time` int(0) NOT NULL DEFAULT 0 COMMENT '加载仪表板额外等待时间(s)' AFTER `groups`; \ No newline at end of file diff --git a/core/frontend/src/lang/en.js b/core/frontend/src/lang/en.js index 5f2deb1718..3483eec61a 100644 --- a/core/frontend/src/lang/en.js +++ b/core/frontend/src/lang/en.js @@ -2776,7 +2776,9 @@ export default { range_all: 'All data', execute_now: 'Execute now', fire_now_success: 'Task executing', - larkgroups: 'Lark group' + larkgroups: 'Lark group', + ext_wait_time: 'Additional waiting time for dashboard loading (unit: seconds)', + wat_time_limit: 'The additional waiting time must be between [0 - 30]' }, dynamic_time: { set_default: 'Set Default', diff --git a/core/frontend/src/lang/tw.js b/core/frontend/src/lang/tw.js index 456687487c..08e07bfbb2 100644 --- a/core/frontend/src/lang/tw.js +++ b/core/frontend/src/lang/tw.js @@ -2768,7 +2768,9 @@ export default { range_all: '全部數據', execute_now: '立即執行', fire_now_success: '任務發起成功', - larkgroups: '飛書群' + larkgroups: '飛書群', + ext_wait_time: '加載儀表板額外等待時間(單位:秒)', + wat_time_limit: '額外等待時間必須在[0 - 30]' }, dynamic_time: { set_default: '設置默認值', diff --git a/core/frontend/src/lang/zh.js b/core/frontend/src/lang/zh.js index 5a884dd553..1d7b179209 100644 --- a/core/frontend/src/lang/zh.js +++ b/core/frontend/src/lang/zh.js @@ -2769,7 +2769,9 @@ export default { range_all: '全部数据', execute_now: '立即执行', fire_now_success: '任务发起成功', - larkgroups: '飞书群' + larkgroups: '飞书群', + ext_wait_time: '加载仪表板额外等待时间(单位:秒)', + wat_time_limit: '额外等待时间必须在[0 - 30]' }, dynamic_time: { set_default: '设置默认值', diff --git a/sdk/dataease-plugin-interface/src/main/java/io/dataease/plugins/xpack/email/dto/request/XpackEmailTaskRequest.java b/sdk/dataease-plugin-interface/src/main/java/io/dataease/plugins/xpack/email/dto/request/XpackEmailTaskRequest.java index d224607b9a..324c825449 100644 --- a/sdk/dataease-plugin-interface/src/main/java/io/dataease/plugins/xpack/email/dto/request/XpackEmailTaskRequest.java +++ b/sdk/dataease-plugin-interface/src/main/java/io/dataease/plugins/xpack/email/dto/request/XpackEmailTaskRequest.java @@ -34,4 +34,6 @@ public class XpackEmailTaskRequest extends XpackTaskCreateRequest { private String viewDataRange = "view"; private String groups; + + private Integer extWaitTime = 0; } diff --git a/sdk/dataease-plugin-interface/src/main/java/io/dataease/plugins/xpack/email/dto/request/XpackEmailViewRequest.java b/sdk/dataease-plugin-interface/src/main/java/io/dataease/plugins/xpack/email/dto/request/XpackEmailViewRequest.java index a49cf59cf5..94563a9db2 100644 --- a/sdk/dataease-plugin-interface/src/main/java/io/dataease/plugins/xpack/email/dto/request/XpackEmailViewRequest.java +++ b/sdk/dataease-plugin-interface/src/main/java/io/dataease/plugins/xpack/email/dto/request/XpackEmailViewRequest.java @@ -12,5 +12,7 @@ public class XpackEmailViewRequest implements Serializable{ private String content; private String pixel; + + private Integer extWaitTime = 0; } diff --git a/sdk/dataease-plugin-interface/src/main/java/io/dataease/plugins/xpack/email/dto/response/XpackEmailTemplateDTO.java b/sdk/dataease-plugin-interface/src/main/java/io/dataease/plugins/xpack/email/dto/response/XpackEmailTemplateDTO.java index 2f5c1f188f..2b21ada273 100644 --- a/sdk/dataease-plugin-interface/src/main/java/io/dataease/plugins/xpack/email/dto/response/XpackEmailTemplateDTO.java +++ b/sdk/dataease-plugin-interface/src/main/java/io/dataease/plugins/xpack/email/dto/response/XpackEmailTemplateDTO.java @@ -37,4 +37,6 @@ public class XpackEmailTemplateDTO implements Serializable { private String groups; + private Integer extWaitTime = 0; + } diff --git a/sdk/dataease-plugin-interface/src/main/java/io/dataease/plugins/xpack/email/service/EmailXpackService.java b/sdk/dataease-plugin-interface/src/main/java/io/dataease/plugins/xpack/email/service/EmailXpackService.java index acd90f66ab..aa1006e347 100644 --- a/sdk/dataease-plugin-interface/src/main/java/io/dataease/plugins/xpack/email/service/EmailXpackService.java +++ b/sdk/dataease-plugin-interface/src/main/java/io/dataease/plugins/xpack/email/service/EmailXpackService.java @@ -40,7 +40,7 @@ public abstract class EmailXpackService extends PluginMenuService { public abstract GlobalTaskInstance instanceForm(Long instanceId); - public abstract byte[] print(String url, String token, XpackPixelEntity XpackPixelEntity) throws Exception; + public abstract byte[] print(String url, String token, XpackPixelEntity XpackPixelEntity, Integer extWaitTime) throws Exception; public abstract byte[] printPdf(String url, String token, XpackPixelEntity XpackPixelEntity, boolean showPageNo, boolean picture2pdf) throws Exception; @@ -48,7 +48,7 @@ public abstract class EmailXpackService extends PluginMenuService { public abstract XpackEmailTemplateDTO emailTemplate(Long taskId); - public abstract byte[] printData(String url, String token, XpackPixelEntity XpackPixelEntity) throws Exception; + public abstract byte[] printData(String url, String token, XpackPixelEntity XpackPixelEntity, Integer extWaitTime) throws Exception; public abstract void batchDel(List taskIds);