zhongrj
2023-07-31 307f0f4713a87dabb0031a7bb9a2d7a9e0726cfc
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/service/impl/CallServiceImpl.java
@@ -97,7 +97,7 @@
      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();
      }
@@ -637,6 +637,28 @@
   }
   /**
    * 根据条件自动创建外呼任务--一直未接通,一直未呼叫的水库
    * @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
@@ -676,6 +698,36 @@
      }
      // 返回
      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);
   }
   /**
@@ -838,7 +890,7 @@
   }
   /**
    * 将 jsonArray 取出手机号得到新的集合
    * 将 jsonArray 取出手机号得到新的集合--超汛限场景
    * @param jsonArray
    * @return
    */