| | |
| | | */ |
| | | @DS("znwh") |
| | | List<Scene> getBeforeOneDayCallNotConnect(@Param("params")Map<String, Object> params); |
| | | |
| | | /** |
| | | * 查询前一天已填报的人员 |
| | | * @param map |
| | | * @return |
| | | */ |
| | | List<String> getFillRecordList(@Param("params") Map<String, Object> map); |
| | | |
| | | /** |
| | | * 查询三天都未接通的人员 |
| | | * @param map |
| | | * @return |
| | | */ |
| | | @DS("znwh") |
| | | List<String> getBeforeThreeDayCallNotConnect(@Param("params") Map<String, Object> map); |
| | | } |
| | |
| | | join ( |
| | | select call_id,callee_number,call_result from call_task_result |
| | | where date_format(gmt_create,'%Y-%m-%d') >= #{params.startTime} |
| | | and date_format(gmt_create,'%Y-%m-%d') <= #{params.startTime} |
| | | and date_format(gmt_create,'%Y-%m-%d') < #{params.endTime} |
| | | ) ctr on ctc.call_id = ctr.call_id |
| | | and ctc.call_status = 4 and ctr.call_result!='200000' |
| | | </select> |
| | | |
| | | <!--查询前一天已填报的人员-达梦--> |
| | | <select id="getFillRecordList" resultType="java.lang.String"> |
| | | select tel from sm_call_not_fill_record |
| | | where date_format(create_time,'%Y-%m-%d') >= #{params.startTime} |
| | | and date_format(create_time ,'%Y-%m-%d') < #{params.endTime} |
| | | </select> |
| | | |
| | | |
| | | <!--查询三天都未接通的人员-mysql--> |
| | | <select id="getBeforeThreeDayCallNotConnect" resultType="java.lang.String"> |
| | | select callee_number from ( |
| | | select callee_number,count(*) num from ( |
| | | select ctc.callee_number,ctr.gmt_create |
| | | from call_task_callee ctc |
| | | join ( |
| | | select call_id,callee_number,call_result,date_format(gmt_create,'%Y-%m-%d') gmt_create from call_task_result |
| | | where date_format(gmt_create,'%Y-%m-%d') >= #{params.startTime} |
| | | and date_format(gmt_create,'%Y-%m-%d') < #{params.endTime} |
| | | ) ctr on ctc.call_id = ctr.call_id |
| | | and ctc.call_status = 4 and ctr.call_result!='200000' GROUP BY ctc.callee_number,ctr.gmt_create |
| | | )a GROUP BY callee_number |
| | | )b where num=3 |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | */ |
| | | @Override |
| | | public List<String> createOutCallTaskByNotConnectJobHandler(Map<String, Object> map) { |
| | | map.put("day",3); |
| | | map.put("day",1); |
| | | map.put("isOver",""); |
| | | // 自动创建任务的 条件1:昨天外呼未接通人员 条件2:前三天如果同一个人都未接通,则不再呼叫 |
| | | // 计算开始时间,结束时间 |
| | | computationTime(map); |
| | | // 1. 查询前一天呼叫未接通人员 |
| | | List<Scene> oneDayCallNotConnectList = callTaskMapper.getBeforeOneDayCallNotConnect(map); |
| | | // 2. 查询三天都未接通的人员 |
| | | // List<Scene> threeDayCallNotConnectList = callTaskMapper.getBeforeThreeDayCallNotConnect(); |
| | | // 3. 组装数据 |
| | | if (oneDayCallNotConnectList.size()>0) { |
| | | // 2. 判断是否填报,查询前一天已填报的人员 |
| | | List<String> fillRecordList = callTaskMapper.getFillRecordList(map); |
| | | // 3. 查询三天都未接通的人员 |
| | | map.put("day", 3); |
| | | List<String> threeDayCallNotConnectList = callTaskMapper.getBeforeThreeDayCallNotConnect(map); |
| | | // 4. 组装数据,从前一天呼叫未接通里面去除已填报人员,去除连续三天未接人员 |
| | | Set<Scene> taskRandomList = callNotConnectListDataHandle(oneDayCallNotConnectList, fillRecordList, threeDayCallNotConnectList); |
| | | // 5. 传入调度时间和随机得到的人员信息进行任务的创建并返回 |
| | | map.put("list", setForListMap(taskRandomList)); |
| | | // 调度时间处理 |
| | | map.put("taskScheduleTime", new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + " " + map.get("taskScheduleTime") + ":00"); |
| | | // 创建任务并返回结果 |
| | | return createTask(map); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | // 4. 传入调度时间和随机得到的人员信息进行任务的创建并返回 |
| | | // map.put("list",setForListMap(taskRandomList)); |
| | | // 调度时间处理 |
| | | map.put("taskScheduleTime",new SimpleDateFormat("yyyy-MM-dd").format(new Date())+ " " +map.get("taskScheduleTime") + ":00"); |
| | | // 创建任务并返回结果 |
| | | return createTask(map); |
| | | /** |
| | | * 组装数据,从前一天呼叫未接通里面去除已填报人员,去除连续三天未接人员 |
| | | * @param oneDayCallNotConnectList 前一天呼叫未接通人员信息 |
| | | * @param fillRecordList 前一天已填报的人员手机号集合 |
| | | * @param threeDayCallNotConnectList 连续三天都未接通的人员手机号集合 |
| | | * @return |
| | | */ |
| | | private Set<Scene> callNotConnectListDataHandle(List<Scene> oneDayCallNotConnectList, List<String> fillRecordList, List<String> threeDayCallNotConnectList) { |
| | | // 取差集 |
| | | // 去除前一天已填报的人员手机号集合 |
| | | List<Scene> sceneList = oneDayCallNotConnectList.stream().filter(item -> !fillRecordList.contains(item.getPhone())).collect(Collectors.toList()); |
| | | // 再去除连续三天都未接通的人员手机号集合 |
| | | List<Scene> resultList = sceneList.stream().filter(item -> !threeDayCallNotConnectList.contains(item.getPhone())).collect(Collectors.toList()); |
| | | // 转set去重 |
| | | HashSet<Scene> scenes = new HashSet<>(resultList); |
| | | // 返回 |
| | | return scenes; |
| | | } |
| | | |
| | | /** |