啊鑫
2024-11-18 16bbd0a2e072bafea1dc254fbbcf86768fb3ea48
src/main/java/com/gs/dingtalk/service/impl/SendDingtalkServiceImpl.java
@@ -19,6 +19,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@@ -78,7 +79,7 @@
        List<SendDingtalk> list = list(wrapper);
        getMessage(list);
        getMessage(list, 5);
    }
    @Override
@@ -88,7 +89,7 @@
        List<SendDingtalk> list = list(wrapper);
        getMessage(list);
        getMessage(list, 30);
    }
    @Override
@@ -117,18 +118,26 @@
        });
    }
    private void getMessage(List<SendDingtalk> list) {
    private void getMessage(List<SendDingtalk> list, int Minutes) {
        List<SendMessage> sendMessageList = sendMessageService.getSendMessageList();
        sendMessageList.forEach(s -> {
            String userIdList = list.stream()
                    .filter(dingtalk -> {
                        String[] purviews = dingtalk.getPurview().split(",");
                        return Arrays.asList(purviews).contains(s.getProcNo());
                    }).map(SendDingtalk::getUserId).collect(Collectors.joining(","));
            // 获取当前时间的 LocalDateTime,忽略秒
            LocalDateTime now = LocalDateTime.now().withSecond(0).withNano(0);
            //钉钉的规则限制 给同一员工一天只能发送一条内容相同的消息通知。
            // 比较时间,判断 sendDate 是否大于当前时间五分钟
            boolean isGreaterThanFiveMinutes = s.getSendDate().plusMinutes(Minutes).isBefore(now);
            if (!isGreaterThanFiveMinutes) {
                return;
            }
            String userIdList = list.stream().filter(dingtalk -> {
                String[] purviews = dingtalk.getPurview().split(",");
                return Arrays.asList(purviews).contains(s.getProcNo());
            }).map(SendDingtalk::getUserId).collect(Collectors.joining(","));
            String message = s.getLineName() + s.getProcName() + ",请尽快处理";
            DingTalkMessage dingTalkMessage = null;