liusheng
2024-11-22 5389773b2d1ae86daec68b00f67c3682dc907e01
smartor/src/main/java/com/smartor/service/impl/CommonTaskServiceImpl.java
@@ -44,6 +44,7 @@
    @Override
    public Integer taskSend(SendTaskVO sendTaskVO) {
        if (sendTaskVO.getTaskId() == null || sendTaskVO.getTaskType() == null)
            throw new BaseException("任务ID或者任务类型不能为空,请检查后,再进行执行");
        if (sendTaskVO.getTaskType() == 1) {
@@ -54,8 +55,9 @@
            return wjSend(sendTaskVO);
        } else if (sendTaskVO.getTaskType() == 3) {
            //宣教
            return xjSend(sendTaskVO);
        }
        log.error("走到这里了嘛");
        return null;
    }
@@ -67,8 +69,8 @@
            serviceTask.setTaskid(sendTaskVO.getTaskId());
            serviceTask.setStopState(ivrTask.getStopState() + 1);
            serviceTask.setSendState(sendTaskVO.getSendState());
            ivrTaskService.updateServiceTask(serviceTask);
            return 0;
            int i = ivrTaskService.updateServiceTask(serviceTask);
            return i;
        }
        //判断发送状态是否为空
@@ -80,12 +82,15 @@
            String content = sendMQContent(sendTaskVO, ivrTask.getTemplateid().toString(), ivrTask.getPreachform(), ivrTask.getStopState(), null);
            //立即发送
            redisCache.setCacheObject(content, content, 1, TimeUnit.SECONDS);
            //将任务状态修改成执行中
            ServiceTask serviceTask = new ServiceTask();
            serviceTask.setTaskid(ivrTask.getTaskid());
            serviceTask.setSendState(2);
            serviceTask.setSendState(2L);
            //不知为啥这样写,先将stopstate置为null
//            serviceTask.setStopState(ivrTask.getStopState());
            serviceTask.setStopState(null);
            ivrTaskService.updateServiceTask(serviceTask);
            log.error("消息发送成功");
        } else if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("1") || StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("3")) {
            //时间段发送
            ObjectMapper objectMapper = new ObjectMapper();
@@ -98,9 +103,9 @@
                    log.error("JsonProcessingException报错了:{}", e.getMessage());
                }
                for (TaskSendTimeVO taskSendTimeVO : taskSendTimeVOList) {
                    //去SendTimeslot中,获取所有的时间段
                    List<TaskSendTimeVO> list = new ArrayList<>();
                    list.add(taskSendTimeVO);
//                    //去SendTimeslot中,获取所有的时间段
//                    List<TaskSendTimeVO> list = new ArrayList<>();
//                    list.add(taskSendTimeVO);
                    //获取开始发送时间
                    String begantime = taskSendTimeVO.getBegantime();
@@ -111,19 +116,20 @@
                        Date date = sdf.parse(begantime);
                        milliseconds = date.getTime() - System.currentTimeMillis();
                        System.out.println("日期毫秒数:" + milliseconds);
                        SendTaskVO sendTaskVO1 = DtoConversionUtils.sourceToTarget(sendTaskVO, SendTaskVO.class);
                        sendTaskVO1.setSendType("1");
                        String content = sendMQContent(sendTaskVO1, ivrTask.getTemplateid().toString(), ivrTask.getPreachform(), ivrTask.getStopState(), taskSendTimeVO);
                        redisCache.setCacheObject(content, content, milliseconds / 1000, TimeUnit.SECONDS);
                    } catch (Exception e) {
                        e.printStackTrace();
                        if (milliseconds < 0) throw new BaseException("请检查任务开始时间,不能小于当前时间");
                    }
                    SendTaskVO sendTaskVO1 = DtoConversionUtils.sourceToTarget(sendTaskVO, SendTaskVO.class);
                    sendTaskVO1.setSendType("1");
                    String content = sendMQContent(sendTaskVO1, ivrTask.getTemplateid().toString(), ivrTask.getPreachform(), ivrTask.getStopState(), list);
                    redisCache.setCacheObject(content, content, milliseconds / 1000, TimeUnit.SECONDS);
                }
                //将任务状态修改成执行中
                ServiceTask serviceTask = new ServiceTask();
                serviceTask.setTaskid(ivrTask.getTaskid());
                serviceTask.setSendState(2);
                serviceTask.setSendState(2L);
                serviceTask.setStopState(null);
                ivrTaskService.updateServiceTask(serviceTask);
            }
        }
@@ -131,6 +137,83 @@
    }
    public int wjSend(SendTaskVO sendTaskVO) {
        ServiceTask serviceTask1 = iServiceTaskService.selectServiceTaskByTaskid(sendTaskVO.getTaskId());
        if (sendTaskVO.getSendState() != null && sendTaskVO.getSendState() == 3 || sendTaskVO.getSendState() != null && sendTaskVO.getSendState() == 4) {
            //任务暂停或终止
            ServiceTask serviceTask = new ServiceTask();
            serviceTask.setTaskid(sendTaskVO.getTaskId());
            serviceTask.setStopState(serviceTask1.getStopState() + 1);
            serviceTask.setSendState(sendTaskVO.getSendState());
            int i = iServiceTaskService.updateServiceTask(serviceTask);
            return i;
        }
        //判断发送状态是否为空
        if (StringUtils.isEmpty(sendTaskVO.getSendType())) {
            sendTaskVO.setSendType(serviceTask1.getSendType().toString());
        }
        //判断任务是否是立即发送
        if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("2")) {
            String content = sendMQContent(sendTaskVO, serviceTask1.getTemplateid().toString(), serviceTask1.getPreachform(), serviceTask1.getStopState(), null);
            //立即发送
            redisCache.setCacheObject(content, content, 1, TimeUnit.SECONDS);
            //将任务状态修改成执行中
            ServiceTask serviceTask = new ServiceTask();
            serviceTask.setTaskid(serviceTask1.getTaskid());
            serviceTask.setSendState(2L);
            serviceTask.setStopState(null);
            iServiceTaskService.updateServiceTask(serviceTask);
        } else if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("1") || StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("3")) {
            //时间段发送
            ObjectMapper objectMapper = new ObjectMapper();
            if (StringUtils.isNotEmpty(serviceTask1.getSendTimeSlot())) {
                List<TaskSendTimeVO> taskSendTimeVOList = null;
                try {
                    taskSendTimeVOList = objectMapper.readValue(serviceTask1.getSendTimeSlot(), new TypeReference<List<TaskSendTimeVO>>() {
                    });
                } catch (JsonProcessingException e) {
                    log.error("JsonProcessingException报错了:{}", e.getMessage());
                }
                for (TaskSendTimeVO taskSendTimeVO : taskSendTimeVOList) {
                    //去SendTimeslot中,获取所有的时间段
//                    List<TaskSendTimeVO> list = new ArrayList<>();
//                    list.add(taskSendTimeVO);
                    //获取开始发送时间
                    String begantime = taskSendTimeVO.getBegantime();
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                    //记录目前到发送时间的毫秒值 (发送时间的毫秒值 - 当前时间的毫秒值)
                    Long milliseconds = 1000L;
                    try {
                        Date date = sdf.parse(begantime);
                        milliseconds = date.getTime() - System.currentTimeMillis();
                        if (milliseconds < 0) {
                            milliseconds = 1000L;
                        }
                        System.out.println("日期毫秒数:" + milliseconds);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    SendTaskVO sendTaskVO1 = DtoConversionUtils.sourceToTarget(sendTaskVO, SendTaskVO.class);
                    sendTaskVO1.setSendType("1");
                    String content = sendMQContent(sendTaskVO1, serviceTask1.getTemplateid().toString(), serviceTask1.getPreachform(), serviceTask1.getStopState(), taskSendTimeVO);
                    redisCache.setCacheObject(content, content, milliseconds / 1000, TimeUnit.SECONDS);
                }
                //将任务状态修改成执行中
                ServiceTask serviceTask = new ServiceTask();
                serviceTask.setTaskid(serviceTask1.getTaskid());
                serviceTask.setSendState(2L);
                serviceTask.setStopState(null);
                iServiceTaskService.updateServiceTask(serviceTask);
            }
        }
        return 1;
    }
    public int xjSend(SendTaskVO sendTaskVO) {
        ServiceTask serviceTask1 = iServiceTaskService.selectServiceTaskByTaskid(sendTaskVO.getTaskId());
        if (sendTaskVO.getSendState() != null && sendTaskVO.getSendState() == 3 || sendTaskVO.getSendState() != null && sendTaskVO.getSendState() == 4) {
            //任务暂停或终止
@@ -156,7 +239,9 @@
            //将任务状态修改成执行中
            ServiceTask serviceTask = new ServiceTask();
            serviceTask.setTaskid(serviceTask1.getTaskid());
            serviceTask.setSendState(2);
            serviceTask.setSendState(2L);
            serviceTask.setSendType(1L);
            serviceTask.setStopState(null);
            iServiceTaskService.updateServiceTask(serviceTask);
        } else if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("1") || StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("3")) {
            //时间段发送
@@ -171,8 +256,8 @@
                }
                for (TaskSendTimeVO taskSendTimeVO : taskSendTimeVOList) {
                    //去SendTimeslot中,获取所有的时间段
                    List<TaskSendTimeVO> list = new ArrayList<>();
                    list.add(taskSendTimeVO);
//                    List<TaskSendTimeVO> list = new ArrayList<>();
//                    list.add(taskSendTimeVO);
                    //获取开始发送时间
                    String begantime = taskSendTimeVO.getBegantime();
@@ -189,13 +274,14 @@
                    SendTaskVO sendTaskVO1 = DtoConversionUtils.sourceToTarget(sendTaskVO, SendTaskVO.class);
                    sendTaskVO1.setSendType("1");
                    String content = sendMQContent(sendTaskVO1, serviceTask1.getTemplateid().toString(), serviceTask1.getPreachform(), serviceTask1.getStopState(), list);
                    String content = sendMQContent(sendTaskVO1, serviceTask1.getTemplateid().toString(), serviceTask1.getPreachform(), serviceTask1.getStopState(), taskSendTimeVO);
                    redisCache.setCacheObject(content, content, milliseconds / 1000, TimeUnit.SECONDS);
                }
                //将任务状态修改成执行中
                ServiceTask serviceTask = new ServiceTask();
                serviceTask.setTaskid(serviceTask1.getTaskid());
                serviceTask.setSendState(2);
                serviceTask.setSendState(2L);
                serviceTask.setStopState(null);
                iServiceTaskService.updateServiceTask(serviceTask);
            }
        }
@@ -212,7 +298,7 @@
     * @param sendTimeslot
     * @return
     */
    private String sendMQContent(SendTaskVO sendTaskVO, String templateid, String preachform, Long stopState, List<TaskSendTimeVO> sendTimeslot) {
    private String sendMQContent(SendTaskVO sendTaskVO, String templateid, String preachform, Long stopState, TaskSendTimeVO sendTimeslot) {
        CommonTaskcallMQ commonTaskcallMQ = new CommonTaskcallMQ();
        commonTaskcallMQ.setTaskid(sendTaskVO.getTaskId());
        commonTaskcallMQ.setSendType(sendTaskVO.getSendType());