zhongrj
2023-06-19 b18ef6541657a371aefaf6e155489724f4761c9d
外呼未接通短信通知修改
3 files modified
87 ■■■■ changed files
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/mapper/CallTaskMapper.java 15 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/mapper/CallTaskMapper.xml 26 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/service/impl/CallServiceImpl.java 46 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/mapper/CallTaskMapper.java
@@ -105,4 +105,19 @@
     */
    @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);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/mapper/CallTaskMapper.xml
@@ -315,9 +315,33 @@
        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') &lt;= #{params.startTime}
        and date_format(gmt_create,'%Y-%m-%d') &lt; #{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') &lt; #{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') &lt; #{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>
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/service/impl/CallServiceImpl.java
@@ -360,22 +360,48 @@
     */
    @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;
    }
    /**