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) {
        // 对dto.getId()进行判空处理
        if (dto.getId() == null) {
            log.warn("检验ID为空,无法发送消息");
            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("没有有效的钉钉用户ID");
            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) {
        // 对dto.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());
        //获取到用户id,当用户没有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());
        // 把List<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("没有有效的钉钉用户ID");
            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) {
        // 对dto.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());
        //获取到用户id,当用户没有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());
        // 把List<MesQaDingtalk>中的userId使用,拼接起来变成userIdList这个变量
        List<String> sidList = list.stream()