refactor(autocall):优化任务和人员相关功能

- 修改 AICCCallRespDetail 中的 isComplete 字段为 isCompleted
- 移除 AICCHelper 中的 API 响应日志输出
- 新增按预警 ID 获取人员信息的功能
-优化人员列表查询逻辑,支持按级别排序
- 修复任务状态更新和标签设置的问题
-优化拨号备注和标签处理逻辑
master
李一帆 2025-08-12 09:20:50 +08:00
parent fc1f4e7383
commit 36c8945201
6 changed files with 81 additions and 47 deletions

View File

@ -163,8 +163,13 @@ public class AutoCallController {
}
}
@GetMapping("/newPerson")
public ResultJson newPerson(@RequestParam("taskId") Integer taskId) {
@GetMapping("/newPersonByWarn")
public ResultJson newPersonByWarn(@RequestParam("warnId") Integer warnId) {
return ResultJson.ok(autoCallTaskService2.getPersonByWarnId(warnId));
}
@GetMapping("/newPersonByTask")
public ResultJson newPersonByTask(@RequestParam("taskId") Integer taskId) {
AutoCallTask task = autoCallTaskService2.getTaskMapper().selectById(taskId);
return ResultJson.ok(autoCallTaskService2.newPerson(task));
}

View File

@ -36,7 +36,7 @@ public class AICCCallRespDetail {
private Integer status; //0进行中 2结束 4暂停
private Integer totalCount;
private Integer sendCount;
private boolean isComplete;
private boolean isCompleted;
private RawVarListMap rawVarListMap;
private List<Tag> tags;

View File

@ -125,7 +125,8 @@ public class WarningResponder extends Model<WarningResponder> implements Seriali
//18607251280 熊胜
//18507191276 李陶
//18607251169 王锐
a.setPhone("18607181767");
//杨喆 18872619396 15327337261
a.setPhone("15327337261");
a.encryptPhone();
System.out.println(a.salt);
System.out.println(a.phone);

View File

@ -59,8 +59,6 @@ public class AutoCallTaskService2 {
List<AutoCallTask> taskList;
AutoCallTask task;
warn = qxWarningMapper.selectOne(
new QueryWrapper<QXWarning>()
.orderByDesc("WARNID")
@ -75,22 +73,22 @@ public class AutoCallTaskService2 {
task.setWarnCnnm("钟祥 ");
taskMapper.insert(task);
generatePerson(task);
warn = qxWarningMapper.selectOne(
new QueryWrapper<QXWarning>()
.orderByDesc("WARNID")
.last("limit 1")
);
warn.setCtnm("荆州市");
warn.setCnnm("张湾 ");
taskList = newTask(warn);
task = taskList.get(0);
task.setStatus(0);
task.setCreateTm(new Date());
task.setWarnCnnm("张湾 ");
taskMapper.insert(task);
generatePerson(task);
//
// warn = qxWarningMapper.selectOne(
// new QueryWrapper<QXWarning>()
// .orderByDesc("WARNID")
// .last("limit 1")
// );
// warn.setCtnm("荆州市");
// warn.setCnnm("张湾 ");
// taskList = newTask(warn);
// task = taskList.get(0);
// task.setStatus(0);
// task.setCreateTm(new Date());
// task.setWarnCnnm("张湾 ");
// taskMapper.insert(task);
// generatePerson(task);
//
warn = qxWarningMapper.selectOne(
new QueryWrapper<QXWarning>()
.orderByDesc("WARNID")
@ -126,6 +124,7 @@ public class AutoCallTaskService2 {
// .orderByDesc("WARNID")
// .last("limit 1")
// );
// warn.setCtnm("荆州市");
// warn.setCnnm("英山 ");
// taskList = newTask(warn);
@ -150,7 +149,7 @@ public class AutoCallTaskService2 {
// task.setWarnCnnm("应城 ");
// taskMapper.insert(task);
// generatePerson(task);
//
// warn = qxWarningMapper.selectOne(
// new QueryWrapper<QXWarning>()
// .orderByDesc("WARNID")
@ -165,7 +164,7 @@ public class AutoCallTaskService2 {
// task.setWarnCnnm("阳新 ");
// taskMapper.insert(task);
// generatePerson(task);
//
// warn = qxWarningMapper.selectOne(
// new QueryWrapper<QXWarning>()
// .orderByDesc("WARNID")
@ -272,20 +271,20 @@ public class AutoCallTaskService2 {
taskMapper.insert(task);
generatePerson(task);
warn = qxWarningMapper.selectOne(
new QueryWrapper<QXWarning>()
.orderByDesc("WARNID")
.last("limit 1")
);
warn.setCtnm("荆州市");
warn.setCnnm("秭归 ");
taskList = newTask(warn);
task = taskList.get(0);
task.setStatus(0);
task.setCreateTm(new Date());
task.setWarnCnnm("秭归 ");
taskMapper.insert(task);
generatePerson(task);
// warn = qxWarningMapper.selectOne(
// new QueryWrapper<QXWarning>()
// .orderByDesc("WARNID")
// .last("limit 1")
// );
// warn.setCtnm("荆州市");
// warn.setCnnm("秭归 ");
// taskList = newTask(warn);
// task = taskList.get(0);
// task.setStatus(0);
// task.setCreateTm(new Date());
// task.setWarnCnnm("秭归 ");
// taskMapper.insert(task);
// generatePerson(task);
// warn = qxWarningMapper.selectOne(
// new QueryWrapper<QXWarning>()
@ -356,6 +355,32 @@ public class AutoCallTaskService2 {
}
}
public List<AutoCallPerson> getPersonByWarnId(Integer warnId) {
QXWarning warn = qxWarningMapper.selectOne(
new QueryWrapper<QXWarning>()
.eq("warnid", warnId)
.last("limit 1")
);
List<Integer> warnLevels = mapWarnSignalLevel(warn.getWarnSignalLevel());
String cnnm = warn.getCnnm();
List<WarningResponder> wrList = warningResponderMapper.listByCnnmAndLevelOrderByLevelAsc(cnnm, warnLevels);
doSomethingWith(cnnm, wrList);
wrList.sort(Comparator.comparingInt(WarningResponder::getLevel));
List<AutoCallPerson> personList = new ArrayList<>();
for (WarningResponder wr : wrList) {
Integer wrLevel = wr.getLevel();
wr.decryptPhone();
AutoCallPerson person = new AutoCallPerson();
person.setUploadCustName(wr.getName());
person.setLevel(wrLevel);
person.setPosition(wr.getPosition());
person.setUploadNumber(wr.getPhone());
personList.add(person);
}
return personList;
}
private List<AutoCallTask> newTask(QXWarning warn) {
String cnnmStr = warn.getCnnm();
Integer warnId = warn.getWarnid();
@ -402,6 +427,7 @@ public class AutoCallTaskService2 {
List<AutoCallPerson> personList = newPerson(task);
if (personList.size() == 0) {
task.setRemark("未找到责任人");
task.setTag("未找到责任人");
task.setStatus(AutoCallTask.STATUS_CANCELLED);
task.setErrorCode(AutoCallTask.ERRCODE_NO_PERSON);
taskMapper.updateById(task);
@ -448,7 +474,7 @@ public class AutoCallTaskService2 {
return ret;
}
private static final String[] excludeNames = new String[]{"高新", "开发", "自治", "技术", "旅游", "管理", "工业", "产业", "示范"};
private static final String[] excludeNames = new String[]{"高新", "开发", "技术", "旅游", "管理", "工业", "产业", "示范"};
private static void doSomethingWith(String cnmm, List<WarningResponder> wrList) {
//预警包含高新等字符,可跳出
@ -513,7 +539,7 @@ public class AutoCallTaskService2 {
task.getWarnLevel() +
"预警信号:" +
task.getWarnContent() +
"相关信息以短信发送给您。"
"相关信息以短信发送给您。"
);
person.setSmsContent(
"我是省防办智能外呼系统," +
@ -620,7 +646,7 @@ public class AutoCallTaskService2 {
detail.getResult().getData() == null ||
detail.getResult().getData().getRecords() == null ||
detail.getResult().getData().getRecords().isEmpty() ||
!detail.getResult().getData().getRecords().get(0).isComplete()
!detail.getResult().getData().getRecords().get(0).isCompleted()
) {
return null; //tags为空代表联通平台还未或正在呼叫还没有结果信息应继续刷接口
}
@ -630,14 +656,17 @@ public class AutoCallTaskService2 {
String dialRemark = record.getRemark();
AICCCallRespDetail.RawVarListMap rawVarListMap = record.getRawVarListMap();
//已产生结果信息
person.setIsComplete(record.isComplete() ? 1 : 0);
person.setIsComplete(record.isCompleted() ? 1 : 0);
person.setDetailRemark(dialRemark);
person.setDetailTalkTimes(record.getTalkTimes());
person.setDetailSipTermCause(rawVarListMap.getSipTermCause());
fillTimeData(person, record);
//话术部分
String tag = record.getTags().get(record.getTags().size() - 1).getTagName();
person.setTag(tag);
String tag = null;
if (record.getTags() != null && record.getTags().size() > 0) {
tag = record.getTags().get(record.getTags().size() - 1).getTagName();
person.setTag(tag);
}
//再判断状态
// if ("接通".equals(dialRemark)) {

View File

@ -163,7 +163,6 @@ public class AICCHelper {
Map<String, String> headers = new HashMap<>();
headers.put("X-Access-Token", token);
String resp = httpHelper.postJsonString("https://aicc.cuopen.net:9801/aicc-api/ssb/callout/thirdParty/task/getTaskCallDetail", request.toJSONString(),headers);
log.info("apiGetTaskCallDetail: {}", resp);
TypeReference<AICCCallRespWrapper<AICCCallRespDetail>> type = new TypeReference<AICCCallRespWrapper<AICCCallRespDetail>>() {
};
AICCCallRespWrapper<AICCCallRespDetail> aICCCallRespWrapper = null;

View File

@ -101,8 +101,8 @@
select * from ADDRESS_BOOK_OLD A
where 1=1
<if test="cnnm != null and cnnm != '' ">
<!-- and A.CNNM like CONCAT('%',#{cnnm},'%')-->
and A.CNNM = #{cnnm}
and A.CNNM like CONCAT('%',#{cnnm},'%')
<!-- and A.CNNM = #{cnnm}-->
</if>
and level in
<foreach collection="levels" item="item" index="index" open="(" separator="," close=")">