| | |
| | | LocalDateTime now = LocalDateTime.now(); |
| | | String timestamp = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss SSS")); |
| | | String transId = generateTransId(now); |
| | | String taskName = now.format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH:mm:ss")) + "智能外呼";; |
| | | String taskName = now.format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH:mm:ss")) + "智能外呼"; |
| | | if(null!= map.get("taskName") && !map.get("taskName").equals("")){ |
| | | taskName = map.get("taskName").toString(); |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * 根据条件自动创建外呼任务--一直未接通,一直未呼叫的水库 |
| | | * @param params |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<String> createCallTaskByParamByNotCall(Map<String, Object> params) { |
| | | // 常规任务,每天上午11点打150人,下午2点打11点未接人员,下午5点打下午2点未接通人员 |
| | | String redisOneKey = bladeRedis.get(CallConstant.call_task_key); |
| | | if (null==redisOneKey){ |
| | | List<String> stringList = everydayCallByNotCall(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 |
| | |
| | | } |
| | | // 返回 |
| | | return stringList; |
| | | } |
| | | |
| | | /** |
| | | * 日常外呼任务创建--从未接通和从未呼叫的水库 |
| | | * @param params |
| | | * @return |
| | | */ |
| | | private List<String> everydayCallByNotCall(Map<String, Object> params) { |
| | | // 查询从未接通和从未呼叫的水库 |
| | | List<Scene> totalList = callTaskMapper.getNotCallOrCallNotConnect(); |
| | | // 取出随机的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); |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | |
| | | /** |
| | | * 将 jsonArray 取出手机号得到新的集合 |
| | | * 将 jsonArray 取出手机号得到新的集合--超汛限场景 |
| | | * @param jsonArray |
| | | * @return |
| | | */ |