| | |
| | | } |
| | | |
| | | /** |
| | | * 根据条件自动创建外呼任务--指定区域呼叫 |
| | | * @param params |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<String> createOutCallTaskJobHandlerByArea(Map<String, Object> params) { |
| | | // 常规任务,每天上午11点打150人,下午2点打11点未接人员,下午5点打下午2点未接通人员 |
| | | String redisOneKey = bladeRedis.get(CallConstant.call_task_key); |
| | | if (null==redisOneKey){ |
| | | List<String> stringList = everydayCallByArea(params); |
| | | // 取出数据进行设置 taskId |
| | | bladeRedis.setEx(CallConstant.call_task_key,stringList.get(1)+","+1,6*60*60L); |
| | | // 异步保存日常关联呼叫任务信息 |
| | | asyncCallService.saveDailyCallTask(stringList.get(1),1); |
| | | // 响应 |
| | | return stringList; |
| | | }else { |
| | | return createEverydayAfter(redisOneKey); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 日常外呼任务未接通的继续拨打 |
| | | * @param redisOneKey 取值为上一次外呼的任务id |
| | | * @return |
| | |
| | | } |
| | | |
| | | /** |
| | | * 日常外呼任务创建--按区域 |
| | | * @param params |
| | | * @return |
| | | */ |
| | | private List<String> everydayCallByArea(Map<String, Object> params) { |
| | | // 按区域查询需要呼叫的人员信息 |
| | | List<Scene> totalList = callTaskMapper.getCallListByArea(); |
| | | // 取出随机的150人 |
| | | Set<Scene> taskRandomList = new HashSet<>(); |
| | | Integer personNumber = 150; |
| | | Random random = new Random(); |
| | | for (int i = 0; i < totalList.size(); i++) { |
| | | // 获取随机数作为下标索引 |
| | | int num = random.nextInt(totalList.size()); |
| | | // 保存到 hashSet ,保证唯一 |
| | | taskRandomList.add(totalList.get(num)); |
| | | // 数量达到预期设定退出循环 |
| | | if (taskRandomList.size() == personNumber) { |
| | | break; |
| | | } |
| | | } |
| | | //4. 传入调度时间和随机得到的人员信息进行任务的创建并返回 |
| | | params.put("list",setForListMap(taskRandomList)); |
| | | // 调度时间处理 |
| | | params.put("taskScheduleTime",new SimpleDateFormat("yyyy-MM-dd").format(new Date())+ " " +params.get("taskScheduleTime") + ":00"); |
| | | // 创建任务并返回结果 |
| | | return createTask(params); |
| | | } |
| | | |
| | | /** |
| | | * 日常外呼任务创建 |
| | | * @param params |
| | | * @return |