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/QaRkjService.java | 13 +
src/main/java/com/gs/dingtalk/service/QaXjService.java | 13 +
src/main/java/com/gs/dingtalk/service/impl/QaXjServiceImpl.java | 22 ++
src/main/java/com/gs/dingtalk/controller/MesQaDingtalkController.java | 85 +++++++++
src/main/java/com/gs/dingtalk/mapper/QaRkjMapper.java | 18 ++
src/main/java/com/gs/dingtalk/entity/QaRkj.java | 62 ++++++
src/main/resources/mapper/QaXjMapper.xml | 7
src/test/java/com/gs/dingtalk/MesQaDingtalkServiceTest.java | 1
src/main/java/com/gs/dingtalk/entity/QaXj.java | 62 ++++++
src/main/java/com/gs/dingtalk/service/impl/QaRkjServiceImpl.java | 22 ++
src/main/java/com/gs/dingtalk/dto/QaMsgDto.java | 2
src/main/java/com/gs/dingtalk/service/impl/MesQaDingtalkServiceImpl.java | 149 +++++++++++++++
src/main/java/com/gs/dingtalk/entity/QaSj.java | 4
src/main/resources/mapper/QaRkjMapper.xml | 7
src/main/java/com/gs/dingtalk/mapper/QaXjMapper.java | 18 ++
src/main/java/com/gs/dingtalk/service/MesQaDingtalkService.java | 4
16 files changed, 481 insertions(+), 8 deletions(-)
diff --git a/src/main/java/com/gs/dingtalk/controller/MesQaDingtalkController.java b/src/main/java/com/gs/dingtalk/controller/MesQaDingtalkController.java
new file mode 100644
index 0000000..2fdb3e7
--- /dev/null
+++ b/src/main/java/com/gs/dingtalk/controller/MesQaDingtalkController.java
@@ -0,0 +1,85 @@
+package com.gs.dingtalk.controller;
+
+import com.gs.dingtalk.config.ResultMessage;
+import com.gs.dingtalk.dto.QaMsgDto;
+import com.gs.dingtalk.service.MesQaDingtalkService;
+import com.gs.dingtalk.dto.Result;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * MES QA 閽夐拤娑堟伅鎺ㄩ�佹帶鍒跺櫒
+ */
+@RestController
+@RequestMapping("MesQaDingtalk")
+@RequiredArgsConstructor
+@CrossOrigin(origins = "*") //璺ㄥ煙璇锋眰
+public class MesQaDingtalkController {
+
+ private final MesQaDingtalkService mesQaDingtalkService;
+
+ /**
+ * 缁熶竴鍙戦�丵A娑堟伅
+ * 鏍规嵁QaMsgDto.qaType鐨勫�兼潵璋冪敤鐩稿簲鐨勬柟娉�
+ * 棣栦欢棣栨瀹屾垚 -> sendQaMsgSJ
+ * 宸℃妫�楠屽畬鎴� -> sendQaMsgXJ
+ * 鍏ュ簱妫�妫�楠屽畬鎴� -> sendQaMsgRKJ
+ */
+ @PostMapping("/sendQaMsg")
+ public ResultMessage sendQaMsg(@RequestBody QaMsgDto dto) {
+ try {
+ String qaType = dto.getQaType();
+ if ("棣栦欢棣栨瀹屾垚".equals(qaType)) {
+ mesQaDingtalkService.sendQaMsgSJ(dto);
+ } else if ("宸℃妫�楠屽畬鎴�".equals(qaType)) {
+ mesQaDingtalkService.sendQaMsgXJ(dto);
+ } else if ("鍏ュ簱妫�妫�楠屽畬鎴�".equals(qaType)) {
+ mesQaDingtalkService.sendQaMsgRKJ(dto);
+ } else {
+ return ResultMessage.error("鏈煡鐨凲A绫诲瀷: " + qaType);
+ }
+ return ResultMessage.ok();
+ } catch (Exception e) {
+ return ResultMessage.error("QA娑堟伅鍙戦�佸け璐�: " + e.getMessage());
+ }
+ }
+
+ /**
+ * 鍙戦�侀浠舵楠屾秷鎭�
+ */
+ @PostMapping("/sendQaMsgSJ")
+ public ResultMessage sendQaMsgSJ(@RequestBody QaMsgDto dto) {
+ try {
+ mesQaDingtalkService.sendQaMsgSJ(dto);
+ return ResultMessage.ok();
+ } catch (Exception e) {
+ return ResultMessage.error("棣栦欢妫�楠屾秷鎭彂閫佸け璐�: " + e.getMessage());
+ }
+ }
+
+ /**
+ * 鍙戦�佸贰妫�娑堟伅
+ */
+ @PostMapping("/sendQaMsgXJ")
+ public ResultMessage sendQaMsgXJ(@RequestBody QaMsgDto dto) {
+ try {
+ mesQaDingtalkService.sendQaMsgXJ(dto);
+ return ResultMessage.ok();
+ } catch (Exception e) {
+ return ResultMessage.error("宸℃娑堟伅鍙戦�佸け璐�: " + e.getMessage());
+ }
+ }
+
+ /**
+ * 鍙戦�佸叆搴撴娑堟伅
+ */
+ @PostMapping("/sendQaMsgRKJ")
+ public ResultMessage sendQaMsgRKJ(@RequestBody QaMsgDto dto) {
+ try {
+ mesQaDingtalkService.sendQaMsgRKJ(dto);
+ return ResultMessage.ok();
+ } catch (Exception e) {
+ return ResultMessage.error("鍏ュ簱妫�娑堟伅鍙戦�佸け璐�: " + e.getMessage());
+ }
+ }
+}
diff --git a/src/main/java/com/gs/dingtalk/dto/QaMsgDto.java b/src/main/java/com/gs/dingtalk/dto/QaMsgDto.java
index 806f691..5494b53 100644
--- a/src/main/java/com/gs/dingtalk/dto/QaMsgDto.java
+++ b/src/main/java/com/gs/dingtalk/dto/QaMsgDto.java
@@ -6,8 +6,8 @@
@Data
public class QaMsgDto {
+ private String id;
private String lineName;
private String workshopName;
private String qaType;
- private String billNo;
}
diff --git a/src/main/java/com/gs/dingtalk/entity/QaRkj.java b/src/main/java/com/gs/dingtalk/entity/QaRkj.java
new file mode 100644
index 0000000..b3bde0d
--- /dev/null
+++ b/src/main/java/com/gs/dingtalk/entity/QaRkj.java
@@ -0,0 +1,62 @@
+package com.gs.dingtalk.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import lombok.Data;
+
+/**
+ *
+ * @TableName QA_RKJ
+ */
+@TableName(value ="QA_RKJ")
+@Data
+public class QaRkj implements Serializable {
+ /**
+ * 鍗曞彿id
+ */
+ private Long id;
+
+ /**
+ * 妫�楠屽崟鍙�
+ */
+ private String releaseNo;
+
+ /**
+ * 鐗╂枡缂栫爜
+ */
+ private String itemNo;
+
+ /**
+ * 鐗╂枡鍚嶇О
+ */
+ private String itemName;
+
+ /**
+ * 绾夸綋
+ */
+ private String daa020;
+
+ /**
+ * 杞﹂棿
+ */
+ private String departmentname;
+
+ /**
+ * 鎻愪氦鏍囪瘑
+ */
+ private Long fsubmit;
+
+ /**
+ * 宸ュ崟鍙�
+ */
+ private String daa001;
+
+ /**
+ * 妫�楠岀粨鏋�
+ */
+ private String fcheckResu;
+
+ @TableField(exist = false)
+ private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/gs/dingtalk/entity/QaSj.java b/src/main/java/com/gs/dingtalk/entity/QaSj.java
index b8c3ac0..e2bc2b6 100644
--- a/src/main/java/com/gs/dingtalk/entity/QaSj.java
+++ b/src/main/java/com/gs/dingtalk/entity/QaSj.java
@@ -13,6 +13,10 @@
@Data
public class QaSj implements Serializable {
/**
+ * 妫�楠屽崟id
+ */
+ private Long id;
+ /**
* 妫�楠屽崟鍙�
*/
private String billNo;
diff --git a/src/main/java/com/gs/dingtalk/entity/QaXj.java b/src/main/java/com/gs/dingtalk/entity/QaXj.java
new file mode 100644
index 0000000..ed16059
--- /dev/null
+++ b/src/main/java/com/gs/dingtalk/entity/QaXj.java
@@ -0,0 +1,62 @@
+package com.gs.dingtalk.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import lombok.Data;
+
+/**
+ *
+ * @TableName QA_XJ
+ */
+@TableName(value ="QA_XJ")
+@Data
+public class QaXj implements Serializable {
+ /**
+ * id
+ */
+ private Long id;
+
+ /**
+ * 妫�楠屽崟鍙�
+ */
+ private String releaseNo;
+
+ /**
+ * 鐗╂枡缂栫爜
+ */
+ private String itemNo;
+
+ /**
+ * 鐗╂枡鍚嶇О
+ */
+ private String itemName;
+
+ /**
+ * 绾夸綋
+ */
+ private String lineName;
+
+ /**
+ * 杞﹂棿
+ */
+ private String departmentname;
+
+ /**
+ * 鎻愪氦鏍囪瘑
+ */
+ private Long fsubmit;
+
+ /**
+ * 宸ュ崟鍙�
+ */
+ private String daa001;
+
+ /**
+ * 妫�楠岀粨鏋�
+ */
+ private String fcheckResu;
+
+ @TableField(exist = false)
+ private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/gs/dingtalk/mapper/QaRkjMapper.java b/src/main/java/com/gs/dingtalk/mapper/QaRkjMapper.java
new file mode 100644
index 0000000..ee3de57
--- /dev/null
+++ b/src/main/java/com/gs/dingtalk/mapper/QaRkjMapper.java
@@ -0,0 +1,18 @@
+package com.gs.dingtalk.mapper;
+
+import com.gs.dingtalk.entity.QaRkj;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author Administrator
+* @description 閽堝琛ㄣ�怮A_RKJ銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-12-04 09:49:14
+* @Entity com.gs.dingtalk.entity.QaRkj
+*/
+public interface QaRkjMapper extends BaseMapper<QaRkj> {
+
+}
+
+
+
+
diff --git a/src/main/java/com/gs/dingtalk/mapper/QaXjMapper.java b/src/main/java/com/gs/dingtalk/mapper/QaXjMapper.java
new file mode 100644
index 0000000..66d4be6
--- /dev/null
+++ b/src/main/java/com/gs/dingtalk/mapper/QaXjMapper.java
@@ -0,0 +1,18 @@
+package com.gs.dingtalk.mapper;
+
+import com.gs.dingtalk.entity.QaXj;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author Administrator
+* @description 閽堝琛ㄣ�怮A_XJ銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-12-04 09:49:37
+* @Entity com.gs.dingtalk.entity.QaXj
+*/
+public interface QaXjMapper extends BaseMapper<QaXj> {
+
+}
+
+
+
+
diff --git a/src/main/java/com/gs/dingtalk/service/MesQaDingtalkService.java b/src/main/java/com/gs/dingtalk/service/MesQaDingtalkService.java
index e0ae4b6..92c451b 100644
--- a/src/main/java/com/gs/dingtalk/service/MesQaDingtalkService.java
+++ b/src/main/java/com/gs/dingtalk/service/MesQaDingtalkService.java
@@ -13,4 +13,8 @@
void sendQaMsgSJ(QaMsgDto dto);
+ void sendQaMsgXJ(QaMsgDto dto);
+
+ void sendQaMsgRKJ(QaMsgDto dto);
+
}
diff --git a/src/main/java/com/gs/dingtalk/service/QaRkjService.java b/src/main/java/com/gs/dingtalk/service/QaRkjService.java
new file mode 100644
index 0000000..4461a90
--- /dev/null
+++ b/src/main/java/com/gs/dingtalk/service/QaRkjService.java
@@ -0,0 +1,13 @@
+package com.gs.dingtalk.service;
+
+import com.gs.dingtalk.entity.QaRkj;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+* @author Administrator
+* @description 閽堝琛ㄣ�怮A_RKJ銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2025-12-04 09:49:14
+*/
+public interface QaRkjService extends IService<QaRkj> {
+
+}
diff --git a/src/main/java/com/gs/dingtalk/service/QaXjService.java b/src/main/java/com/gs/dingtalk/service/QaXjService.java
new file mode 100644
index 0000000..e671e20
--- /dev/null
+++ b/src/main/java/com/gs/dingtalk/service/QaXjService.java
@@ -0,0 +1,13 @@
+package com.gs.dingtalk.service;
+
+import com.gs.dingtalk.entity.QaXj;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+* @author Administrator
+* @description 閽堝琛ㄣ�怮A_XJ銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2025-12-04 09:49:37
+*/
+public interface QaXjService extends IService<QaXj> {
+
+}
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()
diff --git a/src/main/java/com/gs/dingtalk/service/impl/QaRkjServiceImpl.java b/src/main/java/com/gs/dingtalk/service/impl/QaRkjServiceImpl.java
new file mode 100644
index 0000000..8058c2c
--- /dev/null
+++ b/src/main/java/com/gs/dingtalk/service/impl/QaRkjServiceImpl.java
@@ -0,0 +1,22 @@
+package com.gs.dingtalk.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gs.dingtalk.entity.QaRkj;
+import com.gs.dingtalk.service.QaRkjService;
+import com.gs.dingtalk.mapper.QaRkjMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author Administrator
+* @description 閽堝琛ㄣ�怮A_RKJ銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @createDate 2025-12-04 09:49:14
+*/
+@Service
+public class QaRkjServiceImpl extends ServiceImpl<QaRkjMapper, QaRkj>
+ implements QaRkjService{
+
+}
+
+
+
+
diff --git a/src/main/java/com/gs/dingtalk/service/impl/QaXjServiceImpl.java b/src/main/java/com/gs/dingtalk/service/impl/QaXjServiceImpl.java
new file mode 100644
index 0000000..07a88d3
--- /dev/null
+++ b/src/main/java/com/gs/dingtalk/service/impl/QaXjServiceImpl.java
@@ -0,0 +1,22 @@
+package com.gs.dingtalk.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gs.dingtalk.entity.QaXj;
+import com.gs.dingtalk.service.QaXjService;
+import com.gs.dingtalk.mapper.QaXjMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author Administrator
+* @description 閽堝琛ㄣ�怮A_XJ銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @createDate 2025-12-04 09:49:37
+*/
+@Service
+public class QaXjServiceImpl extends ServiceImpl<QaXjMapper, QaXj>
+ implements QaXjService{
+
+}
+
+
+
+
diff --git a/src/main/resources/mapper/QaRkjMapper.xml b/src/main/resources/mapper/QaRkjMapper.xml
new file mode 100644
index 0000000..0de592b
--- /dev/null
+++ b/src/main/resources/mapper/QaRkjMapper.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gs.dingtalk.mapper.QaRkjMapper">
+
+</mapper>
diff --git a/src/main/resources/mapper/QaXjMapper.xml b/src/main/resources/mapper/QaXjMapper.xml
new file mode 100644
index 0000000..687fb15
--- /dev/null
+++ b/src/main/resources/mapper/QaXjMapper.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gs.dingtalk.mapper.QaXjMapper">
+
+</mapper>
diff --git a/src/test/java/com/gs/dingtalk/MesQaDingtalkServiceTest.java b/src/test/java/com/gs/dingtalk/MesQaDingtalkServiceTest.java
index 7c0f29e..e22ac9f 100644
--- a/src/test/java/com/gs/dingtalk/MesQaDingtalkServiceTest.java
+++ b/src/test/java/com/gs/dingtalk/MesQaDingtalkServiceTest.java
@@ -29,7 +29,6 @@
dto.setLineName("娉ㄥ3鍙锋満");
dto.setWorkshopName("娉ㄥ杞﹂棿");
dto.setQaType("棣栦欢棣栨瀹屾垚");
- dto.setBillNo("SJ202509150022");
mesQaDingtalkService.sendQaMsgSJ(dto);
}
--
Gitblit v1.9.3