|
@@ -1,10 +1,10 @@
|
|
|
package com.care.outcall.schedule;
|
|
|
|
|
|
|
|
|
-import com.care.outcall.entity.Bill;
|
|
|
+import com.care.outcall.entity.KoalaOlderDto;
|
|
|
+import com.care.outcall.entity.KoalaOutCallBill;
|
|
|
import com.care.outcall.entity.KoalaLogDomain;
|
|
|
-import com.care.outcall.entity.KoalaTaskDto;
|
|
|
-import com.care.outcall.mapper.KoalaLoggerDao;
|
|
|
+import com.care.outcall.mapper.KoalaOutCallDao;
|
|
|
import com.care.util.CommonConfUtil;
|
|
|
import com.care.util.DateUtils;
|
|
|
import org.apache.logging.log4j.LogManager;
|
|
@@ -23,11 +23,11 @@ import java.util.*;
|
|
|
**/
|
|
|
@Configuration
|
|
|
@EnableScheduling
|
|
|
-public class CcKoalaPhoneBillSchuding {
|
|
|
- private static final Logger logger = LogManager.getLogger(CcKoalaPhoneBillSchuding.class);
|
|
|
+public class KoalaOutCallBillSchuding {
|
|
|
+ private static final Logger logger = LogManager.getLogger(KoalaOutCallBillSchuding.class);
|
|
|
|
|
|
@Autowired
|
|
|
- private KoalaLoggerDao koalaLoggerDao;
|
|
|
+ private KoalaOutCallDao koalaOutCallDao;
|
|
|
|
|
|
|
|
|
/**
|
|
@@ -48,7 +48,7 @@ public class CcKoalaPhoneBillSchuding {
|
|
|
public void updateComputeTrafficToFinish() {
|
|
|
try {
|
|
|
//大于两天的话单日志默认已计算
|
|
|
- koalaLoggerDao.updateComputeTrafficToFinish();
|
|
|
+ koalaOutCallDao.updateComputeTrafficToFinish();
|
|
|
} catch (Exception e) {
|
|
|
e.getMessage();
|
|
|
}
|
|
@@ -65,7 +65,7 @@ public class CcKoalaPhoneBillSchuding {
|
|
|
List<Map<String, String>> idList = new ArrayList<>();
|
|
|
List<String> makeCallIds = new ArrayList<>();
|
|
|
//获取所有未计算的话单
|
|
|
- List<KoalaLogDomain> logList = koalaLoggerDao.getAllBillInfo();
|
|
|
+ List<KoalaLogDomain> logList = koalaOutCallDao.getAllBillInfo();
|
|
|
//重新构建话单日志结构
|
|
|
reBuildBill(map, logList);
|
|
|
|
|
@@ -76,46 +76,44 @@ public class CcKoalaPhoneBillSchuding {
|
|
|
//描述事件的生存周期:1.坐席振铃,2.坐席接通,3.客户振铃,4.客户接通,5.坐席挂断,6.客户挂断,7.未接通
|
|
|
if (logDomains.size() > 2) {
|
|
|
//构建大有话单 关于成功话单部分
|
|
|
- Bill bill = buildDataUBill(sid, logDomains, makeCallIds);
|
|
|
- if (bill == null) {
|
|
|
+ KoalaOutCallBill koalaOutCallBill = buildDataUBill(sid, logDomains, makeCallIds);
|
|
|
+ if (koalaOutCallBill == null) {
|
|
|
continue;
|
|
|
}
|
|
|
- if (StringUtils.isEmpty(bill.getOutCallRadioStatus())) {
|
|
|
- bill.setOutCallRadioStatus("1");
|
|
|
+ if (StringUtils.isEmpty(koalaOutCallBill.getOutCallRadioStatus())) {
|
|
|
+ koalaOutCallBill.setOutCallRadioStatus("1");
|
|
|
}
|
|
|
- bill.setCallResultStatus("1");
|
|
|
- bill.setListenType("2");//默认设置为sip接听,后期会变
|
|
|
+ koalaOutCallBill.setCallResultStatus("1");
|
|
|
//判断话单表是否已存在该数据,不存在则新增,存在则更新状态
|
|
|
- int count = koalaLoggerDao.checkSession(bill.getSessionId());
|
|
|
+ int count = koalaOutCallDao.checkSession(koalaOutCallBill.getSessionId());
|
|
|
if (count == 0) {
|
|
|
//不存在则新增
|
|
|
try {
|
|
|
- koalaLoggerDao.addBill(bill);
|
|
|
+ koalaOutCallDao.addBill(koalaOutCallBill);
|
|
|
} catch (Exception e) {
|
|
|
logger.error("生成考拉话单异常,信息为:" + e.getMessage());
|
|
|
}
|
|
|
} else {
|
|
|
- koalaLoggerDao.updatePhoneBillBySessionIdNew(bill);
|
|
|
+ koalaOutCallDao.updatePhoneBillBySessionIdNew(koalaOutCallBill);
|
|
|
}
|
|
|
Map<String, String> idMap = new HashMap<>();
|
|
|
idMap.put("id", sid);
|
|
|
idList.add(idMap);
|
|
|
} else if (logDomains.size() >= 1 && logDomains.size() <= 2) {
|
|
|
//构建大有话单 关于未接通的话单部分
|
|
|
- Bill bill = buildDataUBill(sid, logDomains, makeCallIds);
|
|
|
- if (bill == null) {
|
|
|
+ KoalaOutCallBill koalaOutCallBill = buildDataUBill(sid, logDomains, makeCallIds);
|
|
|
+ if (koalaOutCallBill == null) {
|
|
|
continue;
|
|
|
}
|
|
|
- bill.setOrigOutCallStatus("2");
|
|
|
- bill.setOutCallRadioStatus("2");
|
|
|
- bill.setOutCallStatus("2");
|
|
|
- bill.setListenType("2");//默认设置为sip接听,后期会变
|
|
|
+ koalaOutCallBill.setOrigOutCallStatus("2");
|
|
|
+ koalaOutCallBill.setOutCallRadioStatus("2");
|
|
|
+ koalaOutCallBill.setOutCallStatus("2");
|
|
|
|
|
|
- int count = koalaLoggerDao.checkSession(bill.getSessionId());
|
|
|
+ int count = koalaOutCallDao.checkSession(koalaOutCallBill.getSessionId());
|
|
|
if (count == 0) {
|
|
|
- koalaLoggerDao.addBill(bill);
|
|
|
+ koalaOutCallDao.addBill(koalaOutCallBill);
|
|
|
} else {
|
|
|
- koalaLoggerDao.updatePhoneBillBySessionIdNew(bill);
|
|
|
+ koalaOutCallDao.updatePhoneBillBySessionIdNew(koalaOutCallBill);
|
|
|
}
|
|
|
Map<String, String> idMap = new HashMap<>();
|
|
|
idMap.put("id", sid);
|
|
@@ -123,17 +121,17 @@ public class CcKoalaPhoneBillSchuding {
|
|
|
}
|
|
|
}
|
|
|
if (!idList.isEmpty()) {
|
|
|
- koalaLoggerDao.updateComputeTraffic(idList);
|
|
|
+ koalaOutCallDao.updateComputeTraffic(idList);
|
|
|
}
|
|
|
if (!makeCallIds.isEmpty()) {
|
|
|
- koalaLoggerDao.updateMakeCallStatus(makeCallIds);
|
|
|
+ koalaOutCallDao.updateMakeCallStatus(makeCallIds);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//构建大有话单
|
|
|
- private synchronized Bill buildDataUBill(String sessionId, List<KoalaLogDomain> logDomains, List<String> idList) {
|
|
|
+ private synchronized KoalaOutCallBill buildDataUBill(String sessionId, List<KoalaLogDomain> logDomains, List<String> idList) {
|
|
|
try {
|
|
|
- Bill bill = new Bill();
|
|
|
+ KoalaOutCallBill koalaOutCallBill = new KoalaOutCallBill();
|
|
|
//离外呼最近的事件时间
|
|
|
String receiveTime = "";
|
|
|
//通话计费开始时间
|
|
@@ -152,8 +150,8 @@ public class CcKoalaPhoneBillSchuding {
|
|
|
String tenantId = "";
|
|
|
//被叫号码
|
|
|
String calledNumber = "";
|
|
|
- //任务id
|
|
|
- String taskId = "";
|
|
|
+ //老人id
|
|
|
+ String olderId = "";
|
|
|
//开始外呼时间,用于记录无人接听的时候的开始时间
|
|
|
String unReceivedCallStartTime = "";
|
|
|
boolean callFlag = false;
|
|
@@ -166,7 +164,7 @@ public class CcKoalaPhoneBillSchuding {
|
|
|
for (KoalaLogDomain logDomain : logDomains) {
|
|
|
tenantId = logDomain.getTenantId();
|
|
|
calledNumber = logDomain.getCalledNumber();
|
|
|
- taskId = logDomain.getTaskId();
|
|
|
+ olderId = logDomain.getOlderId();
|
|
|
break;
|
|
|
}
|
|
|
for (KoalaLogDomain logDomain : logDomains) {
|
|
@@ -212,10 +210,6 @@ public class CcKoalaPhoneBillSchuding {
|
|
|
if (!unCalledFlag) {
|
|
|
callStartTime = unReceivedCallStartTime;
|
|
|
}
|
|
|
- if (isCalledFlag) {
|
|
|
- //更新流水号表已拨打状态
|
|
|
- koalaLoggerDao.updateIsCallStatusByTaskId(taskId, calledNumber);
|
|
|
- }
|
|
|
|
|
|
//表示是正常的话单数据,有录音文件(考拉接通即产生录音)
|
|
|
String creationTime = dialingTime.replaceAll("-", "").replaceAll(":", "").replaceAll(" ", "");
|
|
@@ -225,51 +219,47 @@ public class CcKoalaPhoneBillSchuding {
|
|
|
//构建考拉外呼录音文件路径
|
|
|
String audioUrl = audioUri + "/" + tenantId + "/" + audioCreateTime + "/" + sessionId + "_" + calledNumber + ".mp3";
|
|
|
//根据 sessionId 获取 sessionId 对应的流水号,和电信任务的具体信息
|
|
|
- List<KoalaTaskDto> koalaTaskDtoList = koalaLoggerDao.getTaskInfoBySessionId(sessionId);
|
|
|
- if (koalaTaskDtoList == null || koalaTaskDtoList.isEmpty()) {
|
|
|
+ List<KoalaOlderDto> koalaOlderDtoList = koalaOutCallDao.getOlderInfoBySessionId(sessionId);
|
|
|
+ if (koalaOlderDtoList == null || koalaOlderDtoList.isEmpty()) {
|
|
|
logger.info("没有找到 sessionId={} 对应信息的流水号信息", sessionId);
|
|
|
return null;
|
|
|
}
|
|
|
- KoalaTaskDto koalaTaskDto = getNewOne(koalaTaskDtoList);
|
|
|
+ KoalaOlderDto koalaOlderDto = getNewOne(koalaOlderDtoList);
|
|
|
|
|
|
- bill.setTelecomTaskId(koalaTaskDto.getDyTaskId());
|
|
|
//新增,内容----
|
|
|
//屏蔽内容 ----
|
|
|
KoalaLogDomain logDomain = logDomains.get(0);
|
|
|
//该会话的坐席号
|
|
|
String agentId = logDomain.getAgentId();
|
|
|
//该会话的企业id
|
|
|
- bill.setClientFlowNo(koalaTaskDto.getDyFlowNo());
|
|
|
- bill.setCallStartTime(callStartTime);
|
|
|
- bill.setOutCallStatus("1");
|
|
|
- bill.setOrigOutCallStatus("1");
|
|
|
- bill.setCallResultStatus(callResultStatus);
|
|
|
- bill.setCallEndTime(callEndTime);
|
|
|
- bill.setAudioUrl(audioUrl);
|
|
|
- bill.setOutCallRadioStatus("2");//录件获取状态。1未获取,2已获取
|
|
|
- bill.setBatchId(koalaTaskDto.getDyTaskNo());
|
|
|
- bill.setTeleTaskName(koalaTaskDto.getDyTaskName());
|
|
|
- bill.setSessionId(sessionId);
|
|
|
- bill.setTeleAgentId(agentId);
|
|
|
+ koalaOutCallBill.setClientFlowNo(koalaOlderDto.getDyFlowNo());
|
|
|
+ koalaOutCallBill.setCallStartTime(callStartTime);
|
|
|
+ koalaOutCallBill.setOutCallStatus("1");
|
|
|
+ koalaOutCallBill.setOrigOutCallStatus("1");
|
|
|
+ koalaOutCallBill.setCallResultStatus(callResultStatus);
|
|
|
+ koalaOutCallBill.setCallEndTime(callEndTime);
|
|
|
+ koalaOutCallBill.setAudioUrl(audioUrl);
|
|
|
+ koalaOutCallBill.setOutCallRadioStatus("2");//录件获取状态。1未获取,2已获取
|
|
|
+ koalaOutCallBill.setBatchId(koalaOlderDto.getOlderId());
|
|
|
+ koalaOutCallBill.setSessionId(sessionId);
|
|
|
+ koalaOutCallBill.setTeleAgentId(agentId);
|
|
|
//大有
|
|
|
- bill.setClientAlertStartTime(clientAlterTime);
|
|
|
+ koalaOutCallBill.setClientAlertStartTime(clientAlterTime);
|
|
|
if (callFlag && !unCalledFlag) {
|
|
|
- bill.setCallDuration("0");
|
|
|
+ koalaOutCallBill.setCallDuration("0");
|
|
|
} else {
|
|
|
try {
|
|
|
long callDuration = DateUtils.compute_yyyy_MM_ddHHmmssTime(callStartTime, callEndTime);
|
|
|
- bill.setCallDuration(String.valueOf(callDuration));
|
|
|
+ koalaOutCallBill.setCallDuration(String.valueOf(callDuration));
|
|
|
} catch (Exception e) {
|
|
|
logger.error("时间处理异常,异常信息为==>" + e.getMessage());
|
|
|
- bill.setCallDuration("0");
|
|
|
+ koalaOutCallBill.setCallDuration("0");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- bill.setCallResultType("1");//呼出
|
|
|
- bill.setHangupType(hangupType);
|
|
|
- bill.setChannelFlag(6);
|
|
|
- bill.setEnterpriseNo(koalaTaskDto.getEnterpriseNo());
|
|
|
- return bill;
|
|
|
+ koalaOutCallBill.setHangupType(hangupType);
|
|
|
+ koalaOutCallBill.setEnterpriseNo(koalaOlderDto.getEnterpriseNo());
|
|
|
+ return koalaOutCallBill;
|
|
|
} catch (Exception e) {
|
|
|
logger.error("计算话单失败,失败原因={}", e.getMessage());
|
|
|
//e.printStackTrace();
|
|
@@ -329,21 +319,14 @@ public class CcKoalaPhoneBillSchuding {
|
|
|
noRepeatSetMap.clear();
|
|
|
}
|
|
|
|
|
|
- private KoalaTaskDto getNewOne(List<KoalaTaskDto> koalaTaskDtoList) {
|
|
|
- koalaTaskDtoList.sort(new Comparator<KoalaTaskDto>() {
|
|
|
+ private KoalaOlderDto getNewOne(List<KoalaOlderDto> koalaOlderDtoList) {
|
|
|
+ koalaOlderDtoList.sort(new Comparator<KoalaOlderDto>() {
|
|
|
@Override
|
|
|
- public int compare(KoalaTaskDto o1, KoalaTaskDto o2) {
|
|
|
+ public int compare(KoalaOlderDto o1, KoalaOlderDto o2) {
|
|
|
return Integer.valueOf(String.valueOf(Long.parseLong(o2.getCreateTime()) - Long.parseLong(o1.getCreateTime())));
|
|
|
}
|
|
|
});
|
|
|
- return koalaTaskDtoList.get(0);
|
|
|
+ return koalaOlderDtoList.get(0);
|
|
|
}
|
|
|
|
|
|
- public static void main(String[] args) {
|
|
|
- double a = 1000000000.22;
|
|
|
- float b = 10.22f;
|
|
|
- String s = "1";
|
|
|
- s = s + 1;
|
|
|
- s += 1;
|
|
|
- }
|
|
|
}
|