| | |
| | | String API_PREFIX = "/client"; |
| | | String CREATE_OUT_CALL_TASK_JOB_HANDLER = API_PREFIX + "/createOutCallTaskJobHandler"; |
| | | String CREATE_OUT_CALL_TASK_JOB_HANDLER_BY_NOT_CALL = API_PREFIX + "/createOutCallTaskJobHandlerByNotCall"; |
| | | String CREATE_OUT_CALL_TASK_JOB_HANDLER_BY_AREA = API_PREFIX + "/createOutCallTaskJobHandlerByArea"; |
| | | String CREATE_OUT_CALL_TASK_BY_NOT_CONNECT_JOB_HANDLER = API_PREFIX + "/createOutCallTaskByNotConnectJobHandler"; |
| | | String GET_CALL_NOT_FILL_RECORD_INFO = API_PREFIX + "/getCallNotFillRecordInfo"; |
| | | String CREATE_OUT_CALL_TASK_BY_ALARM = API_PREFIX + "/createOutCallTaskByAlarm"; |
| | |
| | | @RequestParam("taskScheduleTime") String taskScheduleTime, |
| | | @RequestParam("personNumber") String personNumber, |
| | | @RequestParam("day") String day); |
| | | |
| | | /** |
| | | * 智能外呼定时创建任务执行器--指定区域呼叫 |
| | | * @param isOver |
| | | * @param taskScheduleTime |
| | | * @param personNumber |
| | | * @param day |
| | | * @return |
| | | */ |
| | | @GetMapping(CREATE_OUT_CALL_TASK_JOB_HANDLER_BY_AREA) |
| | | List<String> createOutCallTaskJobHandlerByArea(@RequestParam("isOver") String isOver, |
| | | @RequestParam("taskScheduleTime") String taskScheduleTime, |
| | | @RequestParam("personNumber") String personNumber, |
| | | @RequestParam("day") String day); |
| | | |
| | | /** |
| | | * 测试 |
| | |
| | | */ |
| | | @PostMapping(CREATE_OUT_CALL_TASK_BY_ALARM) |
| | | List<String> createOutCallTaskByAlarm(@RequestBody Map<String, Object> map); |
| | | |
| | | } |
| | |
| | | } |
| | | |
| | | @Override |
| | | public List<String> createOutCallTaskJobHandlerByArea(String isOver, String taskScheduleTime, String personNumber, String day) { |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public String testOutCall(String isOver, String taskScheduleTime, String personNumber, String day) { |
| | | return null; |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * 智能外呼定时创建任务执行器--指定区域呼叫 |
| | | * @param isOver |
| | | * @param taskScheduleTime |
| | | * @param personNumber |
| | | * @param day |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<String> createOutCallTaskJobHandlerByArea(String isOver, String taskScheduleTime, String personNumber, String day) { |
| | | Map<String, Object> map = new HashMap<>(4); |
| | | map.put("isOver",isOver); |
| | | map.put("taskScheduleTime",taskScheduleTime); |
| | | map.put("personNumber",personNumber); |
| | | map.put("day",day); |
| | | // 创建定时任务并返回 |
| | | return callService.createOutCallTaskJobHandlerByArea(map); |
| | | } |
| | | |
| | | /** |
| | | * 测试 |
| | | * @param isOver |
| | | * @param taskScheduleTime |
| | |
| | | @DS("ztznwh") |
| | | @InterceptorIgnore(tenantLine = "true") |
| | | List<Scene> getNotCallOrCallNotConnect(); |
| | | |
| | | /** |
| | | * 按区域查询需要呼叫的人员信息 |
| | | * @return |
| | | */ |
| | | @DS("ztznwh") |
| | | @InterceptorIgnore(tenantLine = "true") |
| | | List<Scene> getCallListByArea(); |
| | | } |
| | |
| | | ) |
| | | </select> |
| | | |
| | | <!--按区域查询需要呼叫的人员信息--> |
| | | <select id="getCallListByArea" resultType="cn.gistack.sm.intelligentCall.entity.Scene"> |
| | | select |
| | | arb."guid" as waterCode, |
| | | arb."name" as waterName, |
| | | armp."user_name" as username, |
| | | armp."user_phone" as phone, |
| | | armp."user_phone" as userId |
| | | from SJZT_MD."att_res_base" arb |
| | | left join SJZT_MD."att_ad_base" aab on arb."interior_ad_guid" = aab."guid" |
| | | left join SJZT_MD."att_res_manage_person" armp on arb."guid" = armp."res_guid" and armp."type" = 5 |
| | | where 1=1 |
| | | and aab."p_ad_code" in( |
| | | '421181000000', |
| | | '421122000000', |
| | | '420116000000', |
| | | '420902000000' |
| | | ) |
| | | and armp."user_phone" is not null |
| | | and arb."eng_scal"!='中型' and arb."eng_scal"!='大(2)型' and arb."eng_scal"!='大(1)型' |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | */ |
| | | List<String> createCallTaskByParamByNotCall(Map<String, Object> params); |
| | | |
| | | |
| | | /** |
| | | * 根据条件自动创建外呼任务--指定区域呼叫 |
| | | * @param params |
| | | * @return |
| | | */ |
| | | List<String> createOutCallTaskJobHandlerByArea(Map<String, Object> params); |
| | | |
| | | /** |
| | | * 智能外呼呼叫前一天未接通人员 |
| | |
| | | } |
| | | |
| | | /** |
| | | * 根据条件自动创建外呼任务--指定区域呼叫 |
| | | * @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 |
| | |
| | | private Date reinforceTm; |
| | | |
| | | /** |
| | | * 最近一次加固开始时间 |
| | | */ |
| | | @ApiModelProperty(value = "最近一次加固开始时间") |
| | | @TableField("\"water_storage_tm\"") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date waterStorageTm; |
| | | |
| | | /** |
| | | * 填报状态(0:填写中,1:审核中,2:审核通过) |
| | | */ |
| | | @ApiModelProperty(value = "填报状态(0:填写中,1:审核中,2:审核通过) ") |
| | |
| | | if (newTbAttResBase.getCheckState()==3){ |
| | | fillName = "退回" + (null==newTbAttResBase.getCheckLog()?"":":" + newTbAttResBase.getCheckLog()); |
| | | } |
| | | // 管理员编辑 |
| | | if (newTbAttResBase.getCheckState()==4){ |
| | | fillName = "编辑"; |
| | | newTbAttResBase.setCheckState(oldAbAttResBase.getCheckState()); |
| | | } |
| | | |
| | | // 拼接 |
| | | String time = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()); |
| | |
| | | if (newTbAttResBuildInfo.getCheckState()==3){ |
| | | fillName = "退回" + (null==newTbAttResBuildInfo.getCheckLog()?"":":" + newTbAttResBuildInfo.getCheckLog()); |
| | | } |
| | | // 管理员编辑 |
| | | if (newTbAttResBuildInfo.getCheckState()==4){ |
| | | fillName = "编辑"; |
| | | newTbAttResBuildInfo.setCheckState(oldAbAttResBase.getCheckState()); |
| | | } |
| | | |
| | | // 拼接 |
| | | String time = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()); |
| | |
| | | if (newTbAttResEngBene.getCheckState()==3){ |
| | | fillName = "退回" + (null==newTbAttResEngBene.getCheckLog()?"":":" + newTbAttResEngBene.getCheckLog()); |
| | | } |
| | | // 管理员编辑 |
| | | if (newTbAttResEngBene.getCheckState()==4){ |
| | | fillName = "编辑"; |
| | | newTbAttResEngBene.setCheckState(oldAbAttResBase.getCheckState()); |
| | | } |
| | | |
| | | // 拼接 |
| | | String time = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()); |
| | |
| | | if (newTbAttResInformationProject.getCheckState()==3){ |
| | | fillName = "退回" + (null==newTbAttResInformationProject.getCheckLog()?"":":" + newTbAttResInformationProject.getCheckLog()); |
| | | } |
| | | // 管理员编辑 |
| | | if (newTbAttResInformationProject.getCheckState()==4){ |
| | | fillName = "编辑"; |
| | | newTbAttResInformationProject.setCheckState(oldAbAttResBase.getCheckState()); |
| | | } |
| | | |
| | | // 拼接 |
| | | String time = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()); |
| | |
| | | if (newTbAttResMgrSysB.getCheckState()==3){ |
| | | fillName = "退回" + (null==newTbAttResMgrSysB.getCheckLog()?"":":" + newTbAttResMgrSysB.getCheckLog()); |
| | | } |
| | | // 管理员编辑 |
| | | if (newTbAttResMgrSysB.getCheckState()==4){ |
| | | fillName = "编辑"; |
| | | newTbAttResMgrSysB.setCheckState(oldAbAttResBase.getCheckState()); |
| | | } |
| | | |
| | | // 拼接 |
| | | String time = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()); |
| | |
| | | if (newTbAttResPowerStation.getCheckState()==3){ |
| | | fillName = "退回" + (null==newTbAttResPowerStation.getCheckLog()?"":":" + newTbAttResPowerStation.getCheckLog()); |
| | | } |
| | | // 管理员编辑 |
| | | if (newTbAttResPowerStation.getCheckState()==4){ |
| | | fillName = "编辑"; |
| | | newTbAttResPowerStation.setCheckState(oldAbAttResBase.getCheckState()); |
| | | } |
| | | |
| | | // 拼接 |
| | | String time = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()); |
| | |
| | | if (newTbAttResProjectUtilize.getCheckState()==3){ |
| | | fillName = "退回" + (null==newTbAttResProjectUtilize.getCheckLog()?"":":" + newTbAttResProjectUtilize.getCheckLog()); |
| | | } |
| | | // 管理员编辑 |
| | | if (newTbAttResProjectUtilize.getCheckState()==4){ |
| | | fillName = "编辑"; |
| | | newTbAttResProjectUtilize.setCheckState(oldAbAttResBase.getCheckState()); |
| | | } |
| | | |
| | | // 拼接 |
| | | String time = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()); |
| | |
| | | if (newTbAttResRsbNorspi.getCheckState()==3){ |
| | | fillName = "退回" + (null==newTbAttResRsbNorspi.getCheckLog()?"":":" + newTbAttResRsbNorspi.getCheckLog()); |
| | | } |
| | | // 管理员编辑 |
| | | if (newTbAttResRsbNorspi.getCheckState()==4){ |
| | | fillName = "编辑"; |
| | | newTbAttResRsbNorspi.setCheckState(oldAbAttResBase.getCheckState()); |
| | | } |
| | | |
| | | // 拼接 |
| | | String time = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()); |
| | |
| | | if (newTbAttResRsbSpillway.getCheckState()==3){ |
| | | fillName = "退回" + (null==newTbAttResRsbSpillway.getCheckLog()?"":":" + newTbAttResRsbSpillway.getCheckLog()); |
| | | } |
| | | // 管理员编辑 |
| | | if (newTbAttResRsbSpillway.getCheckState()==4){ |
| | | fillName = "编辑"; |
| | | newTbAttResRsbSpillway.setCheckState(oldAbAttResBase.getCheckState()); |
| | | } |
| | | |
| | | // 拼接 |
| | | String time = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()); |
| | |
| | | if (newTbAttResRsbVerspi.getCheckState()==3){ |
| | | fillName = "退回" + (null==newTbAttResRsbVerspi.getCheckLog()?"":":" + newTbAttResRsbVerspi.getCheckLog()); |
| | | } |
| | | // 管理员编辑 |
| | | if (newTbAttResRsbVerspi.getCheckState()==4){ |
| | | fillName = "编辑"; |
| | | newTbAttResRsbVerspi.setCheckState(oldAbAttResBase.getCheckState()); |
| | | } |
| | | |
| | | // 拼接 |
| | | String time = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()); |
| | |
| | | if (newTbAttResSafetyMonitor.getCheckState()==3){ |
| | | fillName = "退回" + (null==newTbAttResSafetyMonitor.getCheckLog()?"":":" + newTbAttResSafetyMonitor.getCheckLog()); |
| | | } |
| | | if (newTbAttResSafetyMonitor.getCheckState()==4){ |
| | | fillName = "编辑"; |
| | | newTbAttResSafetyMonitor.setCheckState(oldAbAttResBase.getCheckState()); |
| | | } |
| | | |
| | | // 拼接 |
| | | String time = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()); |
| | |
| | | if (newTbAttResStagChar.getCheckState()==3){ |
| | | fillName = "退回" + (null==newTbAttResStagChar.getCheckLog()?"":":" + newTbAttResStagChar.getCheckLog()); |
| | | } |
| | | if (newTbAttResStagChar.getCheckState()==4){ |
| | | fillName = "编辑"; |
| | | newTbAttResStagChar.setCheckState(oldAbAttResBase.getCheckState()); |
| | | } |
| | | |
| | | // 拼接 |
| | | String time = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()); |
| | |
| | | if (newTbAttResWaterBlock.getCheckState()==3){ |
| | | fillName = "退回" + (null==newTbAttResWaterBlock.getCheckLog()?"":":" + newTbAttResWaterBlock.getCheckLog()); |
| | | } |
| | | if (newTbAttResWaterBlock.getCheckState()==4){ |
| | | fillName = "编辑"; |
| | | newTbAttResWaterBlock.setCheckState(oldAbAttResBase.getCheckState()); |
| | | } |
| | | |
| | | // 拼接 |
| | | String time = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()); |
| | |
| | | if (newTbAttResWaterDelivery.getCheckState()==3){ |
| | | fillName = "退回" + (null==newTbAttResWaterDelivery.getCheckLog()?"":":" + newTbAttResWaterDelivery.getCheckLog()); |
| | | } |
| | | if (newTbAttResWaterDelivery.getCheckState()==4){ |
| | | fillName = "编辑"; |
| | | newTbAttResWaterDelivery.setCheckState(oldAbAttResBase.getCheckState()); |
| | | } |
| | | |
| | | // 拼接 |
| | | String time = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 智能外呼定时创建任务执行器--指定区域呼叫 |
| | | * @param param |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @XxlJob("createOutCallTaskJobHandlerByArea") |
| | | public ReturnT<String> createOutCallTaskJobHandlerByArea(String param){ |
| | | XxlJobLogger.log("开始执行任务..."); |
| | | JSONObject jsonParam = JSON.parseObject(param); |
| | | String isOver = jsonParam.getString("isOver"); |
| | | String taskScheduleTime = jsonParam.getString("taskScheduleTime"); |
| | | String personNumber = jsonParam.getString("personNumber"); |
| | | String day = jsonParam.getString("day"); |
| | | // 创建外呼任务 |
| | | List<String> result = outCallClient.createOutCallTaskJobHandlerByArea(isOver,taskScheduleTime,personNumber, day); |
| | | XxlJobLogger.log("任务响应结果..." + result); |
| | | // 创建外呼短信发送任务记录 |
| | | Boolean flag = createCallSmsNoticeTaskByEvery(result); |
| | | XxlJobLogger.log("外呼短信通知任务创建结果:" + flag); |
| | | XxlJobLogger.log("结束自动创建任务..."); |
| | | return ReturnT.SUCCESS; |
| | | } |
| | | |
| | | /** |
| | | * 创建外呼短信发送任务记录--日常定时任务 |
| | | * @param result |
| | | */ |