| | |
| | | import com.ruoyi.common.exception.base.BaseException; |
| | | import com.ruoyi.common.utils.DtoConversionUtils; |
| | | import com.smartor.domain.*; |
| | | import com.smartor.mapper.ServiceSubtaskMapper; |
| | | import com.smartor.service.CommonTaskService; |
| | | import com.smartor.service.IServiceTaskService; |
| | | import com.smartor.service.ISvyTaskService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.collections4.CollectionUtils; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.concurrent.TimeUnit; |
| | |
| | | public class CommonTaskServiceImpl implements CommonTaskService { |
| | | @Autowired |
| | | private IServiceTaskService ivrTaskService; |
| | | |
| | | @Autowired |
| | | private ServiceSubtaskMapper serviceSubtaskMapper; |
| | | |
| | | @Autowired |
| | | private IServiceTaskService iServiceTaskService; |
| | |
| | | //宣教 |
| | | return xjSend(sendTaskVO); |
| | | } |
| | | log.error("走到这里了嘛"); |
| | | return null; |
| | | } |
| | | |
| | |
| | | //任务暂停或终止 |
| | | ServiceTask serviceTask = new ServiceTask(); |
| | | serviceTask.setTaskid(sendTaskVO.getTaskId()); |
| | | serviceTask.setStopState(ivrTask.getStopState() + 1); |
| | | // serviceTask.setStopState(ivrTask.getStopState() + 1); |
| | | serviceTask.setSendState(sendTaskVO.getSendState()); |
| | | int i = ivrTaskService.updateServiceTask(serviceTask); |
| | | //获取到该任务所有的服务,并从队列里删除 |
| | | ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO(); |
| | | serviceSubtaskVO.setTaskid(serviceTask.getTaskid()); |
| | | serviceSubtaskVO.setSendstate(2L); |
| | | List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO); |
| | | serviceSubtaskVO.setSendstate(1L); |
| | | List<ServiceSubtask> serviceSubtaskList1 = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO); |
| | | if (CollectionUtils.isNotEmpty(serviceSubtaskList)) { |
| | | if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList.addAll(serviceSubtaskList1); |
| | | } else { |
| | | if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList = serviceSubtaskList1; |
| | | } |
| | | if (CollectionUtils.isNotEmpty(serviceSubtaskList)) { |
| | | for (ServiceSubtask serviceSubtask : serviceSubtaskList) { |
| | | log.error("sfSend需要移除的subId为:{}", serviceSubtask.getId().toString()); |
| | | serviceSubtaskMapper.deleteServiceSubtaskById(serviceSubtask.getId()); |
| | | redisCache.removeElementFromList("cache-exist", serviceSubtask.getId().toString()); |
| | | redisCache.removeElementFromList("cache-0", serviceSubtask.getId().toString()); |
| | | redisCache.removeElementFromList("cache-1", serviceSubtask.getId().toString()); |
| | | redisCache.removeElementFromList("cache-2", serviceSubtask.getId().toString()); |
| | | redisCache.removeElementFromList("cache-3", serviceSubtask.getId().toString()); |
| | | redisCache.removeElementFromList("cache-4", serviceSubtask.getId().toString()); |
| | | } |
| | | } |
| | | |
| | | return i; |
| | | } |
| | | |
| | |
| | | //判断任务是否是立即发送 |
| | | if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("2")) { |
| | | String content = sendMQContent(sendTaskVO, ivrTask.getTemplateid().toString(), ivrTask.getPreachform(), ivrTask.getStopState(), null); |
| | | //先修改状态 |
| | | updateServiceSubtask(ivrTask.getTaskid(), new Date()); |
| | | //立即发送 |
| | | redisCache.setCacheObject(content, content, 1, TimeUnit.SECONDS); |
| | | //将任务状态修改成执行中 |
| | |
| | | } catch (JsonProcessingException e) { |
| | | log.error("JsonProcessingException报错了:{}", e.getMessage()); |
| | | } |
| | | Date date = new Date(); |
| | | 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); |
| | | 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); |
| | | |
| | | //先修改状态 |
| | | updateServiceSubtask(ivrTask.getTaskid(), date); |
| | | redisCache.setCacheObject(content, content, milliseconds / 1000, TimeUnit.SECONDS); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | |
| | | //任务暂停或终止 |
| | | ServiceTask serviceTask = new ServiceTask(); |
| | | serviceTask.setTaskid(sendTaskVO.getTaskId()); |
| | | serviceTask.setStopState(serviceTask1.getStopState() + 1); |
| | | // serviceTask.setStopState(serviceTask1.getStopState() + 1); |
| | | serviceTask.setSendState(sendTaskVO.getSendState()); |
| | | int i = iServiceTaskService.updateServiceTask(serviceTask); |
| | | //获取到该任务所有的服务,并从队列里删除 |
| | | ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO(); |
| | | serviceSubtaskVO.setTaskid(serviceTask1.getTaskid()); |
| | | serviceSubtaskVO.setSendstate(2L); |
| | | List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO); |
| | | serviceSubtaskVO.setSendstate(1L); |
| | | List<ServiceSubtask> serviceSubtaskList1 = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO); |
| | | if (CollectionUtils.isNotEmpty(serviceSubtaskList)) { |
| | | if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList.addAll(serviceSubtaskList1); |
| | | } else { |
| | | if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList = serviceSubtaskList1; |
| | | } |
| | | if (CollectionUtils.isNotEmpty(serviceSubtaskList)) { |
| | | for (ServiceSubtask serviceSubtask : serviceSubtaskList) { |
| | | log.error("wjSend需要移除的subId为:{}", serviceSubtask.getId().toString()); |
| | | serviceSubtaskMapper.deleteServiceSubtaskById(serviceSubtask.getId()); |
| | | redisCache.removeElementFromList("cache-exist", serviceSubtask.getId().toString()); |
| | | redisCache.removeElementFromList("cache-0", serviceSubtask.getId().toString()); |
| | | redisCache.removeElementFromList("cache-1", serviceSubtask.getId().toString()); |
| | | redisCache.removeElementFromList("cache-2", serviceSubtask.getId().toString()); |
| | | redisCache.removeElementFromList("cache-3", serviceSubtask.getId().toString()); |
| | | redisCache.removeElementFromList("cache-4", serviceSubtask.getId().toString()); |
| | | } |
| | | } |
| | | return i; |
| | | } |
| | | |
| | |
| | | if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("2")) { |
| | | |
| | | String content = sendMQContent(sendTaskVO, serviceTask1.getTemplateid().toString(), serviceTask1.getPreachform(), serviceTask1.getStopState(), null); |
| | | //先修改状态 |
| | | updateServiceSubtask(serviceTask1.getTaskid(), new Date()); |
| | | //立即发送 |
| | | redisCache.setCacheObject(content, content, 1, TimeUnit.SECONDS); |
| | | |
| | |
| | | } catch (JsonProcessingException e) { |
| | | log.error("JsonProcessingException报错了:{}", e.getMessage()); |
| | | } |
| | | Date date = new Date(); |
| | | for (TaskSendTimeVO taskSendTimeVO : taskSendTimeVOList) { |
| | | //去SendTimeslot中,获取所有的时间段 |
| | | // List<TaskSendTimeVO> list = new ArrayList<>(); |
| | |
| | | //记录目前到发送时间的毫秒值 (发送时间的毫秒值 - 当前时间的毫秒值) |
| | | Long milliseconds = 1000L; |
| | | try { |
| | | Date date = sdf.parse(begantime); |
| | | date = sdf.parse(begantime); |
| | | milliseconds = date.getTime() - System.currentTimeMillis(); |
| | | if (milliseconds < 0) { |
| | | milliseconds = 1000L; |
| | |
| | | SendTaskVO sendTaskVO1 = DtoConversionUtils.sourceToTarget(sendTaskVO, SendTaskVO.class); |
| | | sendTaskVO1.setSendType("1"); |
| | | String content = sendMQContent(sendTaskVO1, serviceTask1.getTemplateid().toString(), serviceTask1.getPreachform(), serviceTask1.getStopState(), taskSendTimeVO); |
| | | //先修改状态 |
| | | updateServiceSubtask(serviceTask1.getTaskid(), date); |
| | | redisCache.setCacheObject(content, content, milliseconds / 1000, TimeUnit.SECONDS); |
| | | } |
| | | //将任务状态修改成执行中 |
| | |
| | | //任务暂停或终止 |
| | | ServiceTask serviceTask = new ServiceTask(); |
| | | serviceTask.setTaskid(sendTaskVO.getTaskId()); |
| | | serviceTask.setStopState(serviceTask1.getStopState() + 1); |
| | | // serviceTask.setStopState(serviceTask1.getStopState() + 1); |
| | | serviceTask.setSendState(sendTaskVO.getSendState()); |
| | | iServiceTaskService.updateServiceTask(serviceTask); |
| | | //获取到该任务所有的服务,并从队列里删除 |
| | | ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO(); |
| | | serviceSubtaskVO.setTaskid(serviceTask1.getTaskid()); |
| | | serviceSubtaskVO.setSendstate(2L); |
| | | List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO); |
| | | serviceSubtaskVO.setSendstate(1L); |
| | | List<ServiceSubtask> serviceSubtaskList1 = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO); |
| | | if (CollectionUtils.isNotEmpty(serviceSubtaskList)) { |
| | | if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList.addAll(serviceSubtaskList1); |
| | | } else { |
| | | if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList = serviceSubtaskList1; |
| | | } |
| | | if (CollectionUtils.isNotEmpty(serviceSubtaskList)) { |
| | | for (ServiceSubtask serviceSubtask : serviceSubtaskList) { |
| | | log.error("xjSend需要移除的subId为:{}", serviceSubtask.getId().toString()); |
| | | serviceSubtaskMapper.deleteServiceSubtaskById(serviceSubtask.getId()); |
| | | redisCache.removeElementFromList("cache-exist", serviceSubtask.getId().toString()); |
| | | redisCache.removeElementFromList("cache-0", serviceSubtask.getId().toString()); |
| | | redisCache.removeElementFromList("cache-1", serviceSubtask.getId().toString()); |
| | | redisCache.removeElementFromList("cache-2", serviceSubtask.getId().toString()); |
| | | redisCache.removeElementFromList("cache-3", serviceSubtask.getId().toString()); |
| | | redisCache.removeElementFromList("cache-4", serviceSubtask.getId().toString()); |
| | | } |
| | | } |
| | | |
| | | return 0; |
| | | } |
| | | |
| | |
| | | if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("2")) { |
| | | |
| | | String content = sendMQContent(sendTaskVO, serviceTask1.getLibtemplateid().toString(), serviceTask1.getPreachform(), serviceTask1.getStopState(), null); |
| | | //先修改状态 |
| | | updateServiceSubtask(serviceTask1.getTaskid(), new Date()); |
| | | //立即发送 |
| | | redisCache.setCacheObject(content, content, 1, TimeUnit.SECONDS); |
| | | |
| | |
| | | } else if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("1") || StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("3")) { |
| | | //时间段发送 |
| | | ObjectMapper objectMapper = new ObjectMapper(); |
| | | Date date = new Date(); |
| | | if (StringUtils.isNotEmpty(serviceTask1.getSendTimeSlot())) { |
| | | List<TaskSendTimeVO> taskSendTimeVOList = null; |
| | | try { |
| | |
| | | //记录目前到发送时间的毫秒值 (发送时间的毫秒值 - 当前时间的毫秒值) |
| | | Long milliseconds = 1000L; |
| | | try { |
| | | Date date = sdf.parse(begantime); |
| | | date = sdf.parse(begantime); |
| | | milliseconds = date.getTime() - System.currentTimeMillis(); |
| | | System.out.println("日期毫秒数:" + milliseconds); |
| | | } catch (Exception e) { |
| | |
| | | SendTaskVO sendTaskVO1 = DtoConversionUtils.sourceToTarget(sendTaskVO, SendTaskVO.class); |
| | | sendTaskVO1.setSendType("1"); |
| | | String content = sendMQContent(sendTaskVO1, serviceTask1.getTemplateid().toString(), serviceTask1.getPreachform(), serviceTask1.getStopState(), taskSendTimeVO); |
| | | //先修改状态 |
| | | updateServiceSubtask(serviceTask1.getTaskid(), date); |
| | | redisCache.setCacheObject(content, content, milliseconds / 1000, TimeUnit.SECONDS); |
| | | } |
| | | //将任务状态修改成执行中 |
| | |
| | | commonTaskcallMQJson = commonTaskcallMQJson.substring(1, commonTaskcallMQJson.length() - 1); |
| | | return commonTaskcallMQJson; |
| | | } |
| | | |
| | | private void updateServiceSubtask(Long taskId, Date date) { |
| | | //只要进入队列就算待发送 |
| | | ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO(); |
| | | serviceSubtaskVO.setTaskid(taskId); |
| | | serviceSubtaskVO.setSendstate(1L); |
| | | List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO); |
| | | for (ServiceSubtask serviceSubtask : serviceSubtaskList) { |
| | | serviceSubtask.setSendstate(2L); |
| | | serviceSubtask.setVisitTime(date); |
| | | serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); |
| | | } |
| | | } |
| | | } |