skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/intelligentCall/constant/CallConstant.java
@@ -41,4 +41,9 @@ */ public static final String taskDetailUrl = "/api/task/callDetail.json"; /** * key */ public static final String call_task_key = "blade:sm:call"; } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/mapper/CallTaskMapper.java
@@ -152,4 +152,12 @@ @Param("list") List<String> list, @Param("callTaskStatistic") CallTaskStatistic callTaskStatistic, @Param("day") Map<String, Object> day); /** * 通过 taskId 查询未呼叫人员(mysql) * @param taskId * @return */ @DS("znwh") List<Scene> getCallNotConnectListByTaskId(@Param("taskId") String taskId); } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/mapper/CallTaskMapper.xml
@@ -444,4 +444,16 @@ </if> </select> <!--通过 taskId 查询未呼叫人员(mysql)--> <select id="getCallNotConnectListByTaskId" resultType="cn.gistack.sm.intelligentCall.entity.Scene"> select ctc.callee_number as phone,ctc.callee_number as userId, TRIM(BOTH '"' FROM JSON_EXTRACT(ctc.call_task_callee_content,'$."$水库编码$"')) as waterCode, TRIM(BOTH '"' FROM JSON_EXTRACT(ctc.call_task_callee_content,'$."$水库名称$"')) as waterName, TRIM(BOTH '"' FROM JSON_EXTRACT(ctc.call_task_callee_content,'$."$用户名$"')) as username from call_task_callee ctc join call_task_result ctr on ctc.call_id = ctr.call_id and ctc.call_status = 4 and ctr.call_result!='200000' and ctc.task_id = #{taskId} </select> </mapper> skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/service/impl/CallServiceImpl.java
@@ -19,11 +19,11 @@ import org.apache.commons.lang3.RandomUtils; import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.NotNull; import org.springblade.core.redis.cache.BladeRedis; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.*; import org.springframework.stereotype.Service; import org.springframework.util.DigestUtils; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; @@ -50,6 +50,9 @@ @Autowired private RestTemplate restTemplate; @Autowired private BladeRedis bladeRedis; // @Value("${dial.task.url}") private String url = CallConstant.HOST; @@ -538,6 +541,63 @@ */ @Override public List<String> createCallTaskByParam(Map<String, Object> params) { // 常规任务,每天上午11点打150人,下午2点打11点未接人员,下午5点打下午2点未接通人员 String redisOneKey = bladeRedis.get(CallConstant.call_task_key); if (null==redisOneKey){ List<String> stringList = everydayCall(params); // 取出数据进行设置 taskId bladeRedis.setEx(CallConstant.call_task_key,stringList.get(1)+","+1,6*60*60L); // 响应 return stringList; }else { return createEverydayAfter(redisOneKey); } } /** * 日常外呼任务未接通的继续拨打 * @param redisOneKey 取值为上一次外呼的任务id * @return */ private List<String> createEverydayAfter(String redisOneKey) { // redisOneKey = "2216,1"; String[] split = redisOneKey.split(","); String taskId = split[0]; String type = split[1]; List<String> stringList = new ArrayList<>(); Map<String, Object> params = new HashMap<>(); // 通过 taskId 查询未呼叫人员(mysql) List<Scene> list = callTaskMapper.getCallNotConnectListByTaskId(taskId); if (list.size()>0){ Set<Scene> scenes = new HashSet<>(list); // 传入调度时间和随机得到的人员信息进行任务的创建并返回 params.put("list",setForListMap(scenes)); // 调度时间处理 params.put("taskScheduleTime",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); // 创建任务 stringList = createTask(params); // 判断是否发送短信 if (type.equals("1")){ // 取出数据进行设置 taskId bladeRedis.setEx(CallConstant.call_task_key,stringList.get(1)+","+2,6*60*60L); } // 判断是否发送短信 if (type.equals("2")){ // 新增一个参数代表需要发短信 stringList.add("3"); } } // 返回 return stringList; } /** * 日常外呼任务创建 * @param params * @return */ private List<String> everydayCall(Map<String, Object> params) { // 自动创建任务的 4个条件 1:呼叫人数 2:调度时间 3:是否超汛限 4:多少天内呼叫过的不呼叫(天数) //1. 调用中台接口查询出所有需要发任务的水库巡查责任人相关信息(该处需要将是否超汛限条件传入) JSONArray jsonArray = getZtWaterMangerData(params); skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/AlarmXxlJob.java
@@ -107,7 +107,7 @@ * @return * @throws Exception */ @XxlJob("waterFirstOverHandle_test_0703") @XxlJob("waterFirstOverHandle") public ReturnT<String> waterFirstOverHandle(String param){ XxlJobLogger.log("开始执行任务..."); // 创建外呼任务 skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/OutCallXxlJob.java
@@ -45,10 +45,26 @@ List<String> result = outCallClient.createOutCallTaskJobHandler(isOver,taskScheduleTime,personNumber, day); XxlJobLogger.log("任务响应结果..." + result); // 创建外呼短信发送任务记录 Boolean flag = createCallSmsNoticeTask(result); Boolean flag = createCallSmsNoticeTaskByEvery(result); XxlJobLogger.log("外呼短信通知任务创建结果:" + flag); XxlJobLogger.log("结束自动创建任务..."); return ReturnT.SUCCESS; } /** * 创建外呼短信发送任务记录--日常定时任务 * @param result */ private Boolean createCallSmsNoticeTaskByEvery(List<String> result) { Boolean flag = false; if (null != result && result.size()>3) { if (result.get(2).equals("true")) { // 获取任务id String taskId = result.get(1); flag = outCallClient.createCallSmsNoticeTask(taskId); } } return flag; } /** @@ -94,7 +110,7 @@ * @return * @throws Exception */ @XxlJob("testOutCall_0628") @XxlJob("testOutCall_0703") public ReturnT<String> testOutCall(String param){ XxlJobLogger.log("开始执行任务..."); JSONObject jsonParam = JSON.parseObject(param); @@ -103,8 +119,8 @@ // String personNumber = jsonParam.getString("personNumber"); // String day = jsonParam.getString("day"); // 创建外呼任务 Object result = outCallClient.testOutCall("","","", ""); XxlJobLogger.log("任务响应结果:" + result); // Object result = outCallClient.createOutCallTaskJobHandler("","","", ""); // XxlJobLogger.log("任务响应结果:" + result); XxlJobLogger.log("结束自动创建任务..."); return ReturnT.SUCCESS; }