From 866ad48e6cb4f108afff157b48fcc7eeadbebdf6 Mon Sep 17 00:00:00 2001
From: tjx <t2856754968@163.com>
Date: 星期四, 04 十二月 2025 10:36:54 +0800
Subject: [PATCH] 1 feat: 添加 QA 消息推送功能并优化消息发送逻辑 3 - 为 MesQaDingtalkService 添加了巡检和入库检消息发送功能 4 - 在 MesQaDingtalkController 中新增统一消息发送接口 5 - 优化了消息格式并添加了 ID 判空处理 6 - 实现了根据 qaType 动态调用不同消息发送方法
---
src/main/java/com/gs/dingtalk/service/impl/MesQaDingtalkServiceImpl.java | 149 +++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 143 insertions(+), 6 deletions(-)
diff --git a/src/main/java/com/gs/dingtalk/service/impl/MesQaDingtalkServiceImpl.java b/src/main/java/com/gs/dingtalk/service/impl/MesQaDingtalkServiceImpl.java
index d388f14..5ca2b38 100644
--- a/src/main/java/com/gs/dingtalk/service/impl/MesQaDingtalkServiceImpl.java
+++ b/src/main/java/com/gs/dingtalk/service/impl/MesQaDingtalkServiceImpl.java
@@ -5,11 +5,11 @@
import com.gs.dingtalk.dto.DingTalkMessage;
import com.gs.dingtalk.dto.QaMsgDto;
import com.gs.dingtalk.entity.MesQaDingtalk;
+import com.gs.dingtalk.entity.QaRkj;
import com.gs.dingtalk.entity.QaSj;
-import com.gs.dingtalk.service.MesQaDingtalkService;
+import com.gs.dingtalk.entity.QaXj;
+import com.gs.dingtalk.service.*;
import com.gs.dingtalk.mapper.MesQaDingtalkMapper;
-import com.gs.dingtalk.service.QaSjService;
-import com.gs.dingtalk.service.SimpleExample;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -30,13 +30,22 @@
public class MesQaDingtalkServiceImpl extends ServiceImpl<MesQaDingtalkMapper, MesQaDingtalk>
implements MesQaDingtalkService {
-
private final SimpleExample simpleExample;
private final QaSjService qaSjService;
+ private final QaXjService qaXjService;
+
+ private final QaRkjService qaRkjService;
+
@Override
public void sendQaMsgSJ(QaMsgDto dto) {
+ // 瀵筪to.getId()杩涜鍒ょ┖澶勭悊
+ if (dto.getId() == null) {
+ log.warn("妫�楠孖D涓虹┖锛屾棤娉曞彂閫佹秷鎭�");
+ return;
+ }
+
LambdaQueryWrapper<MesQaDingtalk> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(MesQaDingtalk::getLineName, dto.getLineName())
@@ -52,7 +61,7 @@
}
LambdaQueryWrapper<QaSj> qaSjQueryWrapper = new LambdaQueryWrapper<>();
- qaSjQueryWrapper.eq(QaSj::getBillNo, dto.getBillNo());
+ qaSjQueryWrapper.eq(QaSj::getId, dto.getId());
QaSj qaSj = qaSjService.getOne(qaSjQueryWrapper, false);
if (qaSj == null) {
@@ -60,10 +69,138 @@
return;
}
- String message = String.format("棣栦欢[妫�楠屽崟鍙�:%s, 鐗╂枡缂栫爜:%s, 鐗╂枡鍚嶇О:%s, 杞﹂棿:%s, 绾夸綋:%s, 宸ュ崟鍙�:%s, 妫�楠岀粨鏋�:%s]锛岃杩涜鍚庣画鎿嶄綔",
+ String message = String.format("棣栦欢妫�楠屽崟鍙�:%s, 鐗╂枡:%s-%s, 杞﹂棿:%s绾夸綋:%s, 宸ュ崟:%s, 缁撴灉:%s, 璇疯繘琛屽悗缁鐞�",
qaSj.getBillNo(), qaSj.getItemNo(), qaSj.getItemName(), qaSj.getWorkshopName(),
qaSj.getLineName(), qaSj.getDaa001(), qaSj.getJyjg());
+ List<String> sidList = list.stream()
+ .map(MesQaDingtalk::getTelephone)
+ .collect(Collectors.toList());
+
+ List<String> userIdList = getDingtalkUserIdListByPhones(sidList);
+
+ if (userIdList == null || userIdList.isEmpty()) {
+ log.warn("娌℃湁鏈夋晥鐨勯拤閽夌敤鎴稩D");
+ return;
+ }
+
+ String userIdListStr = String.join(",", userIdList);
+
+
+ DingTalkMessage dingTalkMessage = null;
+ try {
+ dingTalkMessage = simpleExample.sendMessage(userIdListStr, message);
+ } catch (Exception e) {
+ throw new RuntimeException("鍙戦�侀拤閽夋秷鎭け璐�", e);
+ }
+
+ if (dingTalkMessage != null && dingTalkMessage.getErrcode() == 0) {
+ System.out.println("鍙戦�佹垚鍔�");
+ } else {
+ System.out.println("鍙戦�佸け璐�");
+ }
+ }
+
+ @Override
+ public void sendQaMsgXJ(QaMsgDto dto) {
+ // 瀵筪to.getId()杩涜鍒ょ┖澶勭悊
+ if (dto.getId() == null) {
+ log.warn("宸℃ID涓虹┖锛屾棤娉曞彂閫佹秷鎭�");
+ return;
+ }
+
+ LambdaQueryWrapper<MesQaDingtalk> wrapper = new LambdaQueryWrapper<>();
+
+ wrapper.eq(MesQaDingtalk::getLineName, dto.getLineName())
+ .eq(MesQaDingtalk::getDepartmentname, dto.getWorkshopName())
+ .eq(MesQaDingtalk::getQaType, dto.getQaType());
+
+ //鑾峰彇鍒扮敤鎴穒d锛屽綋鐢ㄦ埛娌℃湁id鏃堕噸鏂拌幏鍙栧苟鏇存柊MesQaDingtalk琛�
+ List<MesQaDingtalk> list = list(wrapper);
+
+ if (list.isEmpty()) {
+ // 濡傛灉娌℃湁鎵惧埌瀵瑰簲鐨勭敤鎴凤紝鐩存帴杩斿洖
+ return;
+ }
+
+ LambdaQueryWrapper<QaXj> qaXjQueryWrapper = new LambdaQueryWrapper<>();
+ qaXjQueryWrapper.eq(QaXj::getId, dto.getId());
+ QaXj qaXj = qaXjService.getOne(qaXjQueryWrapper, false);
+
+ if (qaXj == null) {
+ // 濡傛灉娌℃湁鎵惧埌瀵瑰簲鐨勫贰妫�淇℃伅锛岀洿鎺ヨ繑鍥�
+ return;
+ }
+
+ String message = String.format("宸℃鍗曞彿:%s, 鐗╂枡:%s-%s, 杞﹂棿:%s绾夸綋:%s, 宸ュ崟:%s, 缁撴灉:%s, 璇疯繘琛屽悗缁鐞�",
+ qaXj.getReleaseNo(), qaXj.getItemNo(), qaXj.getItemName(), qaXj.getDepartmentname(),
+ qaXj.getLineName(), qaXj.getDaa001(), qaXj.getFcheckResu());
+
+ // 鎶奓ist<MesQaDingtalk>涓殑userId浣跨敤,鎷兼帴璧锋潵鍙樻垚userIdList杩欎釜鍙橀噺
+
+ List<String> sidList = list.stream()
+ .map(MesQaDingtalk::getTelephone)
+ .collect(Collectors.toList());
+
+ List<String> userIdList = getDingtalkUserIdListByPhones(sidList);
+
+ if (userIdList == null || userIdList.isEmpty()) {
+ log.warn("娌℃湁鏈夋晥鐨勯拤閽夌敤鎴稩D");
+ return;
+ }
+
+ String userIdListStr = String.join(",", userIdList);
+
+
+ DingTalkMessage dingTalkMessage = null;
+ try {
+ dingTalkMessage = simpleExample.sendMessage(userIdListStr, message);
+ } catch (Exception e) {
+ throw new RuntimeException("鍙戦�侀拤閽夋秷鎭け璐�", e);
+ }
+
+ if (dingTalkMessage != null && dingTalkMessage.getErrcode() == 0) {
+ System.out.println("鍙戦�佹垚鍔�");
+ } else {
+ System.out.println("鍙戦�佸け璐�");
+ }
+ }
+
+ @Override
+ public void sendQaMsgRKJ(QaMsgDto dto) {
+ // 瀵筪to.getId()杩涜鍒ょ┖澶勭悊
+ if (dto.getId() == null) {
+ log.warn("鍏ュ簱妫�ID涓虹┖锛屾棤娉曞彂閫佹秷鎭�");
+ return;
+ }
+
+ LambdaQueryWrapper<MesQaDingtalk> wrapper = new LambdaQueryWrapper<>();
+
+ wrapper.eq(MesQaDingtalk::getLineName, dto.getLineName())
+ .eq(MesQaDingtalk::getDepartmentname, dto.getWorkshopName())
+ .eq(MesQaDingtalk::getQaType, dto.getQaType());
+
+ //鑾峰彇鍒扮敤鎴穒d锛屽綋鐢ㄦ埛娌℃湁id鏃堕噸鏂拌幏鍙栧苟鏇存柊MesQaDingtalk琛�
+ List<MesQaDingtalk> list = list(wrapper);
+
+ if (list.isEmpty()) {
+ // 濡傛灉娌℃湁鎵惧埌瀵瑰簲鐨勭敤鎴凤紝鐩存帴杩斿洖
+ return;
+ }
+
+ LambdaQueryWrapper<QaRkj> qaRkjQueryWrapper = new LambdaQueryWrapper<>();
+ qaRkjQueryWrapper.eq(QaRkj::getId, dto.getId());
+ QaRkj qaRkj = qaRkjService.getOne(qaRkjQueryWrapper, false);
+
+ if (qaRkj == null) {
+ // 濡傛灉娌℃湁鎵惧埌瀵瑰簲鐨勫叆搴撴淇℃伅锛岀洿鎺ヨ繑鍥�
+ return;
+ }
+
+ String message = String.format("鍏ュ簱妫�鍗曞彿:%s, 鐗╂枡:%s-%s, 杞﹂棿:%s绾夸綋:%s, 宸ュ崟:%s, 缁撴灉:%s, 璇疯繘琛屽悗缁鐞�",
+ qaRkj.getReleaseNo(), qaRkj.getItemNo(), qaRkj.getItemName(), qaRkj.getDepartmentname(),
+ qaRkj.getDaa020(), qaRkj.getDaa001(), qaRkj.getFcheckResu());
+
// 鎶奓ist<MesQaDingtalk>涓殑userId浣跨敤,鎷兼帴璧锋潵鍙樻垚userIdList杩欎釜鍙橀噺
List<String> sidList = list.stream()
--
Gitblit v1.9.3