Commit ac232cd34b57790a54038b88b9526cfbe007706d
1 parent
dfe1a991
Exists in
dev
钉钉通知模板修改
Showing
13 changed files
with
170 additions
and
106 deletions
Show diff stats
zr-cloud/zr-auth/src/main/resources/bootstrap.yml
@@ -90,11 +90,11 @@ spring: | @@ -90,11 +90,11 @@ spring: | ||
90 | - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} | 90 | - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} |
91 | group: zr-insight | 91 | group: zr-insight |
92 | username: nacos | 92 | username: nacos |
93 | - password: nacos | 93 | + password: 0618@Rst |
94 | namespace: develop-namespace | 94 | namespace: develop-namespace |
95 | server-addr: 172.17.56.37:8848 | 95 | server-addr: 172.17.56.37:8848 |
96 | discovery: | 96 | discovery: |
97 | group: zr-insight | 97 | group: zr-insight |
98 | username: nacos | 98 | username: nacos |
99 | - password: nacos | 99 | + password: 0618@Rst |
100 | namespace: develop-namespace | 100 | namespace: develop-namespace |
zr-cloud/zr-gateway/src/main/resources/bootstrap.yml
@@ -90,11 +90,11 @@ spring: | @@ -90,11 +90,11 @@ spring: | ||
90 | - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} | 90 | - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} |
91 | group: zr-insight | 91 | group: zr-insight |
92 | username: nacos | 92 | username: nacos |
93 | - password: nacos | 93 | + password: 0618@Rst |
94 | namespace: develop-namespace | 94 | namespace: develop-namespace |
95 | server-addr: 172.17.56.37:8848 | 95 | server-addr: 172.17.56.37:8848 |
96 | discovery: | 96 | discovery: |
97 | group: zr-insight | 97 | group: zr-insight |
98 | username: nacos | 98 | username: nacos |
99 | - password: nacos | 99 | + password: 0618@Rst |
100 | namespace: develop-namespace | 100 | namespace: develop-namespace |
zr-cloud/zr-modules/zr-codegen/src/main/resources/bootstrap.yml
@@ -102,11 +102,11 @@ spring: | @@ -102,11 +102,11 @@ spring: | ||
102 | - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} | 102 | - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} |
103 | group: zr-insight | 103 | group: zr-insight |
104 | username: nacos | 104 | username: nacos |
105 | - password: nacos | 105 | + password: 0618@Rst |
106 | namespace: develop-namespace | 106 | namespace: develop-namespace |
107 | server-addr: 172.17.56.37:8848 | 107 | server-addr: 172.17.56.37:8848 |
108 | discovery: | 108 | discovery: |
109 | group: zr-insight | 109 | group: zr-insight |
110 | username: nacos | 110 | username: nacos |
111 | - password: nacos | 111 | + password: 0618@Rst |
112 | namespace: develop-namespace | 112 | namespace: develop-namespace |
zr-cloud/zr-modules/zr-insight/src/main/resources/bootstrap.yml
@@ -112,11 +112,11 @@ spring: | @@ -112,11 +112,11 @@ spring: | ||
112 | # group: application | 112 | # group: application |
113 | group: zr-insight | 113 | group: zr-insight |
114 | username: nacos | 114 | username: nacos |
115 | - password: nacos | 115 | + password: 0618@Rst |
116 | namespace: develop-namespace | 116 | namespace: develop-namespace |
117 | server-addr: 172.17.56.37:8848 | 117 | server-addr: 172.17.56.37:8848 |
118 | discovery: | 118 | discovery: |
119 | group: zr-insight | 119 | group: zr-insight |
120 | username: nacos | 120 | username: nacos |
121 | - password: nacos | 121 | + password: 0618@Rst |
122 | namespace: develop-namespace | 122 | namespace: develop-namespace |
zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/domain/notice/McConstructionTemplate.java
@@ -11,14 +11,11 @@ public class McConstructionTemplate { | @@ -11,14 +11,11 @@ public class McConstructionTemplate { | ||
11 | this.mcConstruction = mcConstruction; | 11 | this.mcConstruction = mcConstruction; |
12 | } | 12 | } |
13 | public String getNoticemarkdown() { | 13 | public String getNoticemarkdown() { |
14 | - return "###### 市场化收费-施工通知 \n " + | ||
15 | - "村/小区:" + mcConstruction.getVlgOrCmty() + " \n " + | ||
16 | - "当前状态:" + mcConstruction.getStatusName() + " \n " + | ||
17 | - "维护操作:点击链接进入维护页面:[https://schsf.chinagasholdings.com](https://schsf.chinagasholdings.com) \n " + | ||
18 | - "---" + | ||
19 | - " \n " + | ||
20 | - "通知日期: " + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm")) + " \n " + | ||
21 | - "温馨提醒: 请按时完成维护,保障业务顺畅。 \n "; | 14 | + return "##### 市场化收费-施工通知 \n " + |
15 | + "###### 村/小区: **" + mcConstruction.getVlgOrCmty() + "** \n " + | ||
16 | + "###### 当前状态: **" + mcConstruction.getStatusName() + "** \n " + | ||
17 | + "###### 维护操作: **点击链接进入维护页面:[https://schsf.chinagasholdings.com](https://schsf.chinagasholdings.com)** \n " + | ||
18 | + "###### 通知时间: **" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm")) + "** \n"; | ||
22 | } | 19 | } |
23 | 20 | ||
24 | } | 21 | } |
zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/domain/notice/McIgnitionTemplate.java
@@ -13,15 +13,12 @@ public class McIgnitionTemplate { | @@ -13,15 +13,12 @@ public class McIgnitionTemplate { | ||
13 | } | 13 | } |
14 | 14 | ||
15 | public String getNoticemarkdown() { | 15 | public String getNoticemarkdown() { |
16 | - return "###### 市场化收费-点火通知 \n " + | ||
17 | - "用户信息:" + mcIgnition.getUserName()+"(" +mcIgnition.getUserPhone()+ ") \n " + | ||
18 | - "村/小区:" + mcIgnition.getVlgOrCmty() + " \n " + | ||
19 | - "当前状态:" + mcIgnition.getStatusName() + "(客服) \n " + | ||
20 | - "维护操作:点击链接进入维护页面:[https://schsf.chinagasholdings.com](https://schsf.chinagasholdings.com) \n " + | ||
21 | - "---" + | ||
22 | - " \n " + | ||
23 | - "通知日期: " + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm")) + " \n " + | ||
24 | - "温馨提醒: 请按时完成维护,保障业务顺畅。 \n "; | 16 | + return "##### 市场化收费-点火通知 \n " + |
17 | + "###### 用户信息: **" + mcIgnition.getUserName()+"(" +mcIgnition.getUserPhone()+ ")** \n " + | ||
18 | + "###### 村/小区: **" + mcIgnition.getVlgOrCmty() + "** \n " + | ||
19 | + "###### 当前状态: **" + mcIgnition.getStatusName() + "(客服)** \n " + | ||
20 | + "###### 维护操作: **点击链接进入维护页面:[https://schsf.chinagasholdings.com](https://schsf.chinagasholdings.com)** \n " + | ||
21 | + "###### 通知时间: **" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm")) + "** \n"; | ||
25 | } | 22 | } |
26 | 23 | ||
27 | } | 24 | } |
zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/domain/notice/McVisitTemplate.java
@@ -24,15 +24,12 @@ public class McVisitTemplate { | @@ -24,15 +24,12 @@ public class McVisitTemplate { | ||
24 | } | 24 | } |
25 | } | 25 | } |
26 | } | 26 | } |
27 | - return "###### 市场化收费通知 \n " + | ||
28 | - "工单单号: " + mcVisit.getTicketNumber() + " \n " + | ||
29 | - "工单类型:" + ticketTypeName + " \n " + | ||
30 | - "当前状态:" + mcVisit.getStatusName() + "(" + mcVisit.getStatusNodeName() + ") \n " + | ||
31 | - "维护操作:点击链接进入维护页面:[https://schsf.chinagasholdings.com](https://schsf.chinagasholdings.com) \n " + | ||
32 | - "---" + | ||
33 | - " \n " + | ||
34 | - "通知日期: " + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm")) + " \n " + | ||
35 | - "温馨提醒: 请按时完成维护,保障业务顺畅。 \n "; | 27 | + return "##### 市场化收费-拜访单 \n " + |
28 | + "###### 工单单号: **" + mcVisit.getTicketNumber() + "** \n " + | ||
29 | + "###### 工单类型: **" + ticketTypeName + "** \n " + | ||
30 | + "###### 当前状态: **" + mcVisit.getStatusName() + "(" + mcVisit.getStatusNodeName() + ")** \n " + | ||
31 | + "###### 维护操作: **点击链接进入维护页面:[https://schsf.chinagasholdings.com](https://schsf.chinagasholdings.com)** \n " + | ||
32 | + "###### 通知时间: **" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm")) + "** \n"; | ||
36 | } | 33 | } |
37 | 34 | ||
38 | } | 35 | } |
zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/impl/DingtalkServiceImpl.java
@@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSONObject; | @@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSONObject; | ||
4 | import com.chinagas.common.core.exceptions.ServiceException; | 4 | import com.chinagas.common.core.exceptions.ServiceException; |
5 | import com.chinagas.common.core.utils.StringUtils; | 5 | import com.chinagas.common.core.utils.StringUtils; |
6 | import com.chinagas.modules.schsf.constant.DingtalkConstant; | 6 | import com.chinagas.modules.schsf.constant.DingtalkConstant; |
7 | -import com.chinagas.modules.schsf.exception.OApiException; | ||
8 | import com.chinagas.modules.schsf.service.DingtalkService; | 7 | import com.chinagas.modules.schsf.service.DingtalkService; |
9 | import com.dingtalk.api.DefaultDingTalkClient; | 8 | import com.dingtalk.api.DefaultDingTalkClient; |
10 | import com.dingtalk.api.DingTalkClient; | 9 | import com.dingtalk.api.DingTalkClient; |
@@ -16,18 +15,20 @@ import com.dingtalk.open.client.api.model.corp.JsapiTicket; | @@ -16,18 +15,20 @@ import com.dingtalk.open.client.api.model.corp.JsapiTicket; | ||
16 | import com.dingtalk.open.client.api.service.corp.CorpConnectionService; | 15 | import com.dingtalk.open.client.api.service.corp.CorpConnectionService; |
17 | import com.dingtalk.open.client.api.service.corp.JsapiService; | 16 | import com.dingtalk.open.client.api.service.corp.JsapiService; |
18 | import com.taobao.api.ApiException; | 17 | import com.taobao.api.ApiException; |
18 | +import lombok.extern.slf4j.Slf4j; | ||
19 | import org.springframework.beans.factory.annotation.Autowired; | 19 | import org.springframework.beans.factory.annotation.Autowired; |
20 | import org.springframework.stereotype.Service; | 20 | import org.springframework.stereotype.Service; |
21 | 21 | ||
22 | -import java.security.MessageDigest; | ||
23 | -import java.util.Formatter; | 22 | +import java.util.ArrayList; |
24 | import java.util.List; | 23 | import java.util.List; |
25 | 24 | ||
25 | +@Slf4j | ||
26 | @Service | 26 | @Service |
27 | public class DingtalkServiceImpl implements DingtalkService { | 27 | public class DingtalkServiceImpl implements DingtalkService { |
28 | 28 | ||
29 | @Autowired | 29 | @Autowired |
30 | private DingtalkConstant dingtalkConstant; | 30 | private DingtalkConstant dingtalkConstant; |
31 | + final int MAX_USERID_LIST_SIZE = 100; | ||
31 | 32 | ||
32 | @Override | 33 | @Override |
33 | public String getAccessToken() { | 34 | public String getAccessToken() { |
@@ -69,30 +70,51 @@ public class DingtalkServiceImpl implements DingtalkService { | @@ -69,30 +70,51 @@ public class DingtalkServiceImpl implements DingtalkService { | ||
69 | 70 | ||
70 | @Override | 71 | @Override |
71 | public void sendMarketFeeNotification(List<String> userIds, String title, String markdown) { | 72 | public void sendMarketFeeNotification(List<String> userIds, String title, String markdown) { |
72 | - DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2"); | ||
73 | - OapiMessageCorpconversationAsyncsendV2Request request = new OapiMessageCorpconversationAsyncsendV2Request(); | ||
74 | - request.setAgentId(Long.valueOf(dingtalkConstant.getAgentId())); | ||
75 | - request.setUseridList(String.join(",", userIds)); | ||
76 | - request.setToAllUser(false); | ||
77 | - OapiMessageCorpconversationAsyncsendV2Request.Msg msg = new OapiMessageCorpconversationAsyncsendV2Request.Msg(); | ||
78 | - msg.setActionCard(new OapiMessageCorpconversationAsyncsendV2Request.ActionCard()); | ||
79 | - msg.getActionCard().setTitle(title); | ||
80 | - msg.getActionCard().setMarkdown(markdown); | ||
81 | - if (StringUtils.isNotEmpty(dingtalkConstant.getAppUrl())) { | ||
82 | - msg.getActionCard().setSingleTitle("点击查看"); | ||
83 | - msg.getActionCard().setSingleUrl("dingtalk://dingtalkclient/action/openapp?" + | ||
84 | - "corpid=" +dingtalkConstant.getCorpId()+ | ||
85 | - "&container_type=work_platform" + | ||
86 | - "&app_id=0_" +dingtalkConstant.getAgentId()+ | ||
87 | - "&redirect_type=jump" + | ||
88 | - "&redirect_url=" + dingtalkConstant.getAppUrl()); | ||
89 | - msg.setMsgtype("action_card"); | 73 | + log.info("钉钉通知,通知标题:{}", title); |
74 | + log.info("钉钉通知,通知内容:{}", markdown); | ||
75 | + log.info("钉钉通知,通知用户id:{},通知用户数量:{}", userIds, userIds.size()); | ||
76 | + // 分割用户ID列表为多个不超过100的子列表 | ||
77 | + List<String> userIdSubList = new ArrayList<>(); | ||
78 | + List<List<String>> splitUserIds = new ArrayList<>(); | ||
79 | + for (String userId : userIds) { | ||
80 | + userIdSubList.add(userId); | ||
81 | + if (userIdSubList.size() == MAX_USERID_LIST_SIZE) { | ||
82 | + splitUserIds.add(new ArrayList<>(userIdSubList)); | ||
83 | + userIdSubList.clear(); // 准备下一个子列表 | ||
84 | + } | ||
90 | } | 85 | } |
91 | - request.setMsg(msg); | ||
92 | - try { | ||
93 | - OapiMessageCorpconversationAsyncsendV2Response rsp = client.execute(request, getAccessToken()); | ||
94 | - } catch (ApiException e) { | ||
95 | - throw new RuntimeException(e); | 86 | + // 如果最后的子列表非空,也要加进去 |
87 | + if (!userIdSubList.isEmpty()) { | ||
88 | + splitUserIds.add(userIdSubList); | ||
89 | + } | ||
90 | + log.info("钉钉通知,将用户分组数:{}", splitUserIds.size()); | ||
91 | + for (List<String> uids : splitUserIds) { | ||
92 | + DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2"); | ||
93 | + OapiMessageCorpconversationAsyncsendV2Request request = new OapiMessageCorpconversationAsyncsendV2Request(); | ||
94 | + request.setAgentId(Long.valueOf(dingtalkConstant.getAgentId())); | ||
95 | + request.setUseridList(String.join(",", uids)); | ||
96 | + request.setToAllUser(false); | ||
97 | + OapiMessageCorpconversationAsyncsendV2Request.Msg msg = new OapiMessageCorpconversationAsyncsendV2Request.Msg(); | ||
98 | + msg.setActionCard(new OapiMessageCorpconversationAsyncsendV2Request.ActionCard()); | ||
99 | + msg.getActionCard().setTitle(title); | ||
100 | + msg.getActionCard().setMarkdown(markdown); | ||
101 | + if (StringUtils.isNotEmpty(dingtalkConstant.getAppUrl())) { | ||
102 | + msg.getActionCard().setSingleTitle("点击查看"); | ||
103 | + msg.getActionCard().setSingleUrl("dingtalk://dingtalkclient/action/openapp?" + | ||
104 | + "corpid=" + dingtalkConstant.getCorpId() + | ||
105 | + "&container_type=work_platform" + | ||
106 | + "&app_id=0_" + dingtalkConstant.getAgentId() + | ||
107 | + "&redirect_type=jump" + | ||
108 | + "&redirect_url=" + dingtalkConstant.getAppUrl()); | ||
109 | + msg.setMsgtype("action_card"); | ||
110 | + } | ||
111 | + request.setMsg(msg); | ||
112 | + try { | ||
113 | + OapiMessageCorpconversationAsyncsendV2Response rsp = client.execute(request, getAccessToken()); | ||
114 | + log.info("钉钉通知,通知结果:{}", rsp); | ||
115 | + } catch (ApiException e) { | ||
116 | + throw new RuntimeException(e); | ||
117 | + } | ||
96 | } | 118 | } |
97 | } | 119 | } |
98 | 120 |
zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/impl/McConstructionServiceImpl.java
@@ -19,6 +19,7 @@ import com.chinagas.modules.schsf.mapper.McConstructionMapper; | @@ -19,6 +19,7 @@ import com.chinagas.modules.schsf.mapper.McConstructionMapper; | ||
19 | import com.chinagas.modules.schsf.service.DingtalkService; | 19 | import com.chinagas.modules.schsf.service.DingtalkService; |
20 | import com.chinagas.modules.schsf.service.IMcConstructionService; | 20 | import com.chinagas.modules.schsf.service.IMcConstructionService; |
21 | import com.chinagas.modules.schsf.service.IMcOperationLogService; | 21 | import com.chinagas.modules.schsf.service.IMcOperationLogService; |
22 | +import lombok.extern.slf4j.Slf4j; | ||
22 | import org.springframework.beans.factory.annotation.Autowired; | 23 | import org.springframework.beans.factory.annotation.Autowired; |
23 | import org.springframework.stereotype.Service; | 24 | import org.springframework.stereotype.Service; |
24 | import org.springframework.transaction.annotation.Transactional; | 25 | import org.springframework.transaction.annotation.Transactional; |
@@ -34,6 +35,7 @@ import java.util.stream.Collectors; | @@ -34,6 +35,7 @@ import java.util.stream.Collectors; | ||
34 | * @author cw | 35 | * @author cw |
35 | * @date 2024-05-30 | 36 | * @date 2024-05-30 |
36 | */ | 37 | */ |
38 | +@Slf4j | ||
37 | @Transactional | 39 | @Transactional |
38 | @Service | 40 | @Service |
39 | public class McConstructionServiceImpl implements IMcConstructionService { | 41 | public class McConstructionServiceImpl implements IMcConstructionService { |
@@ -132,10 +134,10 @@ public class McConstructionServiceImpl implements IMcConstructionService { | @@ -132,10 +134,10 @@ public class McConstructionServiceImpl implements IMcConstructionService { | ||
132 | mcConstruction.setCompanyCode(mcBasicCmty.getCompanyCode()); | 134 | mcConstruction.setCompanyCode(mcBasicCmty.getCompanyCode()); |
133 | mcConstruction.setCompanyName(mcBasicCmty.getCompanyName()); | 135 | mcConstruction.setCompanyName(mcBasicCmty.getCompanyName()); |
134 | 136 | ||
135 | - mcConstruction.setProvince(mcBasicCmty.getProvince()==null?"":mcBasicCmty.getProvince()); | ||
136 | - mcConstruction.setCity(mcBasicCmty.getCity()==null?"":mcBasicCmty.getCity()); | ||
137 | - mcConstruction.setDistrict(mcBasicCmty.getDistrict()==null?"":mcBasicCmty.getDistrict()); | ||
138 | - mcConstruction.setStreet(mcBasicCmty.getStreet()==null?"":mcBasicCmty.getStreet()); | 137 | + mcConstruction.setProvince(mcBasicCmty.getProvince() == null ? "" : mcBasicCmty.getProvince()); |
138 | + mcConstruction.setCity(mcBasicCmty.getCity() == null ? "" : mcBasicCmty.getCity()); | ||
139 | + mcConstruction.setDistrict(mcBasicCmty.getDistrict() == null ? "" : mcBasicCmty.getDistrict()); | ||
140 | + mcConstruction.setStreet(mcBasicCmty.getStreet() == null ? "" : mcBasicCmty.getStreet()); | ||
139 | 141 | ||
140 | mcConstruction.setVlgOrCmty(mcBasicCmty.getVlgOrCmty()); | 142 | mcConstruction.setVlgOrCmty(mcBasicCmty.getVlgOrCmty()); |
141 | List<McConstruction> mcConstructions = mcConstructionMapper.selectMcConstructionByData(mcConstruction); | 143 | List<McConstruction> mcConstructions = mcConstructionMapper.selectMcConstructionByData(mcConstruction); |
@@ -166,15 +168,15 @@ public class McConstructionServiceImpl implements IMcConstructionService { | @@ -166,15 +168,15 @@ public class McConstructionServiceImpl implements IMcConstructionService { | ||
166 | if (StringUtils.isEmpty(projectTypeName)) { | 168 | if (StringUtils.isEmpty(projectTypeName)) { |
167 | return null; | 169 | return null; |
168 | } | 170 | } |
169 | - if (projectTypeName.contains("已通气项目零散开发")){ | 171 | + if (projectTypeName.contains("已通气项目零散开发")) { |
170 | return "0"; | 172 | return "0"; |
171 | - } else if (projectTypeName.contains("扫雷行动项目") && projectTypeName.contains("市政中压已覆盖")){ | 173 | + } else if (projectTypeName.contains("扫雷行动项目") && projectTypeName.contains("市政中压已覆盖")) { |
172 | return "1"; | 174 | return "1"; |
173 | - } else if (projectTypeName.contains("扫雷行动项目") && projectTypeName.contains("市政中压未覆盖")){ | 175 | + } else if (projectTypeName.contains("扫雷行动项目") && projectTypeName.contains("市政中压未覆盖")) { |
174 | return "2"; | 176 | return "2"; |
175 | - } else if (projectTypeName.contains("新增空白项目") && projectTypeName.contains("市政中压已覆盖")){ | 177 | + } else if (projectTypeName.contains("新增空白项目") && projectTypeName.contains("市政中压已覆盖")) { |
176 | return "3"; | 178 | return "3"; |
177 | - } else if (projectTypeName.contains("新增空白项目") && projectTypeName.contains("市政中压未覆盖")){ | 179 | + } else if (projectTypeName.contains("新增空白项目") && projectTypeName.contains("市政中压未覆盖")) { |
178 | return "4"; | 180 | return "4"; |
179 | } | 181 | } |
180 | return "0"; | 182 | return "0"; |
@@ -216,7 +218,7 @@ public class McConstructionServiceImpl implements IMcConstructionService { | @@ -216,7 +218,7 @@ public class McConstructionServiceImpl implements IMcConstructionService { | ||
216 | 218 | ||
217 | iMcOperationLogService.insertMcOperationLog("mc_construction", mcConstruction_param.getId(), "schsf:mcConstruction:engineering", | 219 | iMcOperationLogService.insertMcOperationLog("mc_construction", mcConstruction_param.getId(), "schsf:mcConstruction:engineering", |
218 | "工程维护", "1", null, JSON.toJSONString(mcConstruction_old), JSON.toJSONString(mcConstruction_new)); | 220 | "工程维护", "1", null, JSON.toJSONString(mcConstruction_old), JSON.toJSONString(mcConstruction_new)); |
219 | - if (i>0){ | 221 | + if (i > 0) { |
220 | this.sendNotification(mcConstruction_param.getId()); | 222 | this.sendNotification(mcConstruction_param.getId()); |
221 | } | 223 | } |
222 | return i; | 224 | return i; |
@@ -262,6 +264,7 @@ public class McConstructionServiceImpl implements IMcConstructionService { | @@ -262,6 +264,7 @@ public class McConstructionServiceImpl implements IMcConstructionService { | ||
262 | 264 | ||
263 | /** | 265 | /** |
264 | * 发送施工维护通知 | 266 | * 发送施工维护通知 |
267 | + * | ||
265 | * @param mcVisit | 268 | * @param mcVisit |
266 | */ | 269 | */ |
267 | @Override | 270 | @Override |
@@ -284,15 +287,30 @@ public class McConstructionServiceImpl implements IMcConstructionService { | @@ -284,15 +287,30 @@ public class McConstructionServiceImpl implements IMcConstructionService { | ||
284 | } | 287 | } |
285 | 288 | ||
286 | private void sendNotification(Long id) { | 289 | private void sendNotification(Long id) { |
287 | - McConstruction construction = mcConstructionMapper.selectMcConstructionById(id); | ||
288 | - if (BeanUtil.isEmpty(construction)) { | ||
289 | - throw new ServiceException("未查询到记录"); | ||
290 | - } | ||
291 | - List<NodeUsersDto> nodeUsersDtos = this.selectMcConstructionNodeUserList(construction.getId()); | ||
292 | - if (nodeUsersDtos != null && nodeUsersDtos.size()>0) { | ||
293 | - List<String> userIds = nodeUsersDtos.stream().filter(mcVisitNodeUsersDto -> StringUtils.isNotEmpty(mcVisitNodeUsersDto.getDingTalkUserId())).map(NodeUsersDto::getDingTalkUserId).collect(Collectors.toList()); | ||
294 | - dingtalkService.sendMarketFeeNotification(userIds, "市场化收费-施工维护", new McConstructionTemplate(construction).getNoticemarkdown()); | ||
295 | - } | 290 | + Thread thread = new Thread(() -> { |
291 | + log.info("钉钉通知,施工维护通知:参数id{}", id); | ||
292 | + try { | ||
293 | + McConstruction construction = mcConstructionMapper.selectMcConstructionById(id); | ||
294 | + if (BeanUtil.isEmpty(construction)) { | ||
295 | + throw new ServiceException("未查询到记录"); | ||
296 | + } | ||
297 | + log.info("钉钉通知,施工维护通知:施工参数对象{}", construction); | ||
298 | + List<NodeUsersDto> nodeUsersDtos = this.selectMcConstructionNodeUserList(construction.getId()); | ||
299 | + if (nodeUsersDtos != null && nodeUsersDtos.size() > 0) { | ||
300 | + List<String> userIds = nodeUsersDtos.stream().filter(mcVisitNodeUsersDto -> StringUtils.isNotEmpty(mcVisitNodeUsersDto.getDingTalkUserId())).map(NodeUsersDto::getDingTalkUserId).collect(Collectors.toList()); | ||
301 | + dingtalkService.sendMarketFeeNotification(userIds, "市场化收费-施工维护", new McConstructionTemplate(construction).getNoticemarkdown()); | ||
302 | + } | ||
303 | + return; | ||
304 | + } catch (Exception e) { | ||
305 | + // 异常处理 | ||
306 | + e.printStackTrace(); | ||
307 | + log.error("钉钉通知,施工维护通知:通知失败{}", e.getMessage()); | ||
308 | + } | ||
309 | + }); | ||
310 | + // 当主线程结束时,这个线程也自动结束 | ||
311 | + thread.setDaemon(true); | ||
312 | + thread.start(); | ||
313 | + log.info("钉钉通知,施工维护通知结束"); | ||
296 | } | 314 | } |
297 | 315 | ||
298 | @Override | 316 | @Override |
@@ -302,10 +320,10 @@ public class McConstructionServiceImpl implements IMcConstructionService { | @@ -302,10 +320,10 @@ public class McConstructionServiceImpl implements IMcConstructionService { | ||
302 | throw new ServiceException("未查询到记录"); | 320 | throw new ServiceException("未查询到记录"); |
303 | } | 321 | } |
304 | if (mcConstruction.getStatusCode().equals(ConstructionStatusEnums.MAINTENANCE_SG.getCode())) { | 322 | if (mcConstruction.getStatusCode().equals(ConstructionStatusEnums.MAINTENANCE_SG.getCode())) { |
305 | - //待工程维护 schsf:mcConstruction:engineering | 323 | + //待工程维护 schsf:mcConstruction:engineering |
306 | return mcConstructionMapper.selectMcConstructionNodeUserList(String.valueOf(id), "schsf:mcConstruction:engineering"); | 324 | return mcConstructionMapper.selectMcConstructionNodeUserList(String.valueOf(id), "schsf:mcConstruction:engineering"); |
307 | - }else if (mcConstruction.getStatusCode().equals(ConstructionStatusEnums.MAINTENANCE_YY.getCode())){ | ||
308 | - //待运营维护 schsf:mcConstruction:operations | 325 | + } else if (mcConstruction.getStatusCode().equals(ConstructionStatusEnums.MAINTENANCE_YY.getCode())) { |
326 | + //待运营维护 schsf:mcConstruction:operations | ||
309 | return mcConstructionMapper.selectMcConstructionNodeUserList(String.valueOf(id), "schsf:mcConstruction:operations"); | 327 | return mcConstructionMapper.selectMcConstructionNodeUserList(String.valueOf(id), "schsf:mcConstruction:operations"); |
310 | } | 328 | } |
311 | return Collections.emptyList(); | 329 | return Collections.emptyList(); |
zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/impl/McIgnitionServiceImpl.java
@@ -267,16 +267,33 @@ public class McIgnitionServiceImpl implements IMcIgnitionService { | @@ -267,16 +267,33 @@ public class McIgnitionServiceImpl implements IMcIgnitionService { | ||
267 | * @param id | 267 | * @param id |
268 | */ | 268 | */ |
269 | private void sendMcIgnitionNotification(Long id) { | 269 | private void sendMcIgnitionNotification(Long id) { |
270 | - McIgnition mcIgnition = mcIgnitionMapper.selectMcIgnitionById(id); | ||
271 | - log.info("点火维护-钉钉通知,点火信息对象:{}", mcIgnition); | ||
272 | - if (BeanUtil.isEmpty(mcIgnition)) { | ||
273 | - throw new ServiceException("未查询到记录"); | ||
274 | - } | ||
275 | - //发送通知 | ||
276 | - List<NodeUsersDto> mcVisitNodeUsersDtos = this.selectMcIgnitionNodeUserList(id); | ||
277 | - if (mcVisitNodeUsersDtos != null) { | ||
278 | - List<String> userIds = mcVisitNodeUsersDtos.stream().filter(mcVisitNodeUsersDto -> StringUtils.isNotEmpty(mcVisitNodeUsersDto.getDingTalkUserId())).map(NodeUsersDto::getDingTalkUserId).collect(Collectors.toList()); | ||
279 | - dingtalkService.sendMarketFeeNotification(userIds, "市场化收费-点火维护", new McIgnitionTemplate(mcIgnition).getNoticemarkdown()); | ||
280 | - } | 270 | + |
271 | + Thread thread = new Thread(() -> { | ||
272 | + log.info("点火维护-钉钉通知,点火信息:参数id{}", id); | ||
273 | + try { | ||
274 | + | ||
275 | + McIgnition mcIgnition = mcIgnitionMapper.selectMcIgnitionById(id); | ||
276 | + log.info("点火维护-钉钉通知,点火信息对象:{}", mcIgnition); | ||
277 | + if (BeanUtil.isEmpty(mcIgnition)) { | ||
278 | + throw new ServiceException("未查询到记录"); | ||
279 | + } | ||
280 | + //发送通知 | ||
281 | + List<NodeUsersDto> mcVisitNodeUsersDtos = this.selectMcIgnitionNodeUserList(id); | ||
282 | + if (mcVisitNodeUsersDtos != null) { | ||
283 | + List<String> userIds = mcVisitNodeUsersDtos.stream().filter(mcVisitNodeUsersDto -> StringUtils.isNotEmpty(mcVisitNodeUsersDto.getDingTalkUserId())).map(NodeUsersDto::getDingTalkUserId).collect(Collectors.toList()); | ||
284 | + dingtalkService.sendMarketFeeNotification(userIds, "市场化收费-点火维护", new McIgnitionTemplate(mcIgnition).getNoticemarkdown()); | ||
285 | + } | ||
286 | + | ||
287 | + } catch (Exception e) { | ||
288 | + // 异常处理 | ||
289 | + e.printStackTrace(); | ||
290 | + log.error("点火维护-钉钉通知,点火通知:通知失败{}", e.getMessage()); | ||
291 | + } | ||
292 | + }); | ||
293 | + // 当主线程结束时,这个线程也自动结束 | ||
294 | + thread.setDaemon(true); | ||
295 | + thread.start(); | ||
296 | + log.info("点火维护-钉钉通知,点火通知结束"); | ||
297 | + | ||
281 | } | 298 | } |
282 | } | 299 | } |
zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/impl/McVisitServiceImpl.java
@@ -632,15 +632,31 @@ public class McVisitServiceImpl implements IMcVisitService { | @@ -632,15 +632,31 @@ public class McVisitServiceImpl implements IMcVisitService { | ||
632 | * @param id | 632 | * @param id |
633 | */ | 633 | */ |
634 | private void sendMcVisitNotification(Long id) { | 634 | private void sendMcVisitNotification(Long id) { |
635 | - McVisit mcVisit = mcVisitMapper.selectMcVisitById(id); | ||
636 | - log.info("拜访工单-钉钉通知,拜访单对象信息:{}", mcVisit); | ||
637 | - if (BeanUtil.isEmpty(mcVisit)) {throw new ServiceException("未查询到记录");} | ||
638 | - //发送通知 | ||
639 | - List<NodeUsersDto> mcVisitNodeUsersDtos = this.selectStatusNodeUserList(id); | ||
640 | - if (mcVisitNodeUsersDtos != null) { | ||
641 | - List<String> userIds = mcVisitNodeUsersDtos.stream().filter(mcVisitNodeUsersDto -> StringUtils.isNotEmpty(mcVisitNodeUsersDto.getDingTalkUserId())).map(NodeUsersDto::getDingTalkUserId).collect(Collectors.toList()); | ||
642 | - dingtalkService.sendMarketFeeNotification(userIds, "市场化收费", new McVisitTemplate(mcVisit).getNoticemarkdown()); | ||
643 | - } | 635 | + Thread thread = new Thread(() -> { |
636 | + log.info("钉钉通知,拜访通知:参数id{}", id); | ||
637 | + try { | ||
638 | + McVisit mcVisit = mcVisitMapper.selectMcVisitById(id); | ||
639 | + log.info("钉钉通知,拜访通知,拜访单对象信息:{}", mcVisit); | ||
640 | + if (BeanUtil.isEmpty(mcVisit)) { | ||
641 | + throw new ServiceException("未查询到记录"); | ||
642 | + } | ||
643 | + //发送通知 | ||
644 | + List<NodeUsersDto> mcVisitNodeUsersDtos = this.selectStatusNodeUserList(id); | ||
645 | + if (mcVisitNodeUsersDtos != null) { | ||
646 | + List<String> userIds = mcVisitNodeUsersDtos.stream().filter(mcVisitNodeUsersDto -> StringUtils.isNotEmpty(mcVisitNodeUsersDto.getDingTalkUserId())).map(NodeUsersDto::getDingTalkUserId).collect(Collectors.toList()); | ||
647 | + dingtalkService.sendMarketFeeNotification(userIds, "市场化收费", new McVisitTemplate(mcVisit).getNoticemarkdown()); | ||
648 | + } | ||
649 | + | ||
650 | + } catch (Exception e) { | ||
651 | + // 异常处理 | ||
652 | + e.printStackTrace(); | ||
653 | + log.error("钉钉通知,拜访通知:通知失败{}", e.getMessage()); | ||
654 | + } | ||
655 | + }); | ||
656 | + // 当主线程结束时,这个线程也自动结束 | ||
657 | + thread.setDaemon(true); | ||
658 | + thread.start(); | ||
659 | + log.info("钉钉通知,拜访通知结束"); | ||
644 | } | 660 | } |
645 | 661 | ||
646 | } | 662 | } |
zr-cloud/zr-modules/zr-schsf/src/main/resources/bootstrap.yml
@@ -98,11 +98,11 @@ spring: | @@ -98,11 +98,11 @@ spring: | ||
98 | group: application | 98 | group: application |
99 | group: zr-insight | 99 | group: zr-insight |
100 | username: nacos | 100 | username: nacos |
101 | - password: nacos | 101 | + password: 0618@Rst |
102 | namespace: develop-namespace | 102 | namespace: develop-namespace |
103 | server-addr: 172.17.56.37:8848 | 103 | server-addr: 172.17.56.37:8848 |
104 | discovery: | 104 | discovery: |
105 | group: zr-insight | 105 | group: zr-insight |
106 | username: nacos | 106 | username: nacos |
107 | - password: nacos | 107 | + password: 0618@Rst |
108 | namespace: develop-namespace | 108 | namespace: develop-namespace |
zr-cloud/zr-modules/zr-system/src/main/resources/bootstrap.yml
@@ -96,11 +96,11 @@ spring: | @@ -96,11 +96,11 @@ spring: | ||
96 | group: application | 96 | group: application |
97 | group: zr-insight | 97 | group: zr-insight |
98 | username: nacos | 98 | username: nacos |
99 | - password: nacos | 99 | + password: 0618@Rst |
100 | namespace: develop-namespace | 100 | namespace: develop-namespace |
101 | server-addr: 172.17.56.37:8848 | 101 | server-addr: 172.17.56.37:8848 |
102 | discovery: | 102 | discovery: |
103 | group: zr-insight | 103 | group: zr-insight |
104 | username: nacos | 104 | username: nacos |
105 | - password: nacos | 105 | + password: 0618@Rst |
106 | namespace: develop-namespace | 106 | namespace: develop-namespace |