|
@ -1220,9 +1220,11 @@ public class SynergyManageService extends BaseJpaService {
|
|
}
|
|
}
|
|
|
|
|
|
public Map<String,Object> customerIndex(String userCode){
|
|
public Map<String,Object> customerIndex(String userCode){
|
|
Map<String,Object> map = new HashMap<>();
|
|
|
|
String today = DateUtil.dateToStrShort(new Date());
|
|
String today = DateUtil.dateToStrShort(new Date());
|
|
String callSql ="SELECT * FROM manage_call_record WHERE user_code='"+userCode+"' and create_time>='"+today+" 00:00:00' and create_time<='"+today+" 23:59:59'";
|
|
|
|
|
|
String startTime=today+" 00:00:00";
|
|
|
|
String endTime = today+" 23:59:59";
|
|
|
|
Map<String,Object> map = new HashMap<>();
|
|
|
|
String callSql ="SELECT * FROM manage_call_record WHERE user_code='"+userCode+"' and create_time>='"+startTime+"' and create_time<='"+endTime+"'";
|
|
//--------------今日外呼量-----------------//
|
|
//--------------今日外呼量-----------------//
|
|
List<CallRecord> waihudList = jdbcTemplate.query(callSql+" and type=2",new BeanPropertyRowMapper<>(CallRecord.class));
|
|
List<CallRecord> waihudList = jdbcTemplate.query(callSql+" and type=2",new BeanPropertyRowMapper<>(CallRecord.class));
|
|
int customerNoCount = 0;
|
|
int customerNoCount = 0;
|
|
@ -1240,10 +1242,36 @@ public class SynergyManageService extends BaseJpaService {
|
|
map.put("waihuCustomerNoCount",customerNoCount);
|
|
map.put("waihuCustomerNoCount",customerNoCount);
|
|
|
|
|
|
//--------------今日在线时长-----------------//
|
|
//--------------今日在线时长-----------------//
|
|
String startTime=today+" 00:00:00";
|
|
|
|
String endTime = today+" 23:59:59";
|
|
|
|
|
|
|
|
List<ManageCustomerOnlineRecordDO> manageCustomerOnlineRecordDOList = manageCustomerOnlineRecordDao.findByCustomerCodeToday(userCode,startTime,endTime);
|
|
List<ManageCustomerOnlineRecordDO> manageCustomerOnlineRecordDOList = manageCustomerOnlineRecordDao.findByCustomerCodeToday(userCode,startTime,endTime);
|
|
String onLineTime = manageCustomerOnlineRecordDOList.get(0).getTotalOnlineTime();
|
|
|
|
|
|
//如果最新一条是离线则直接获取总在线时长就是在线时间,
|
|
|
|
// 如果最新一条是在线,则用当前时间减去上一条登录时间加上之前的在线时长为总的在线时长
|
|
|
|
int status = manageCustomerOnlineRecordDOList.get(0).getStatus();
|
|
|
|
String onLineTime = "";
|
|
|
|
//离线status==2
|
|
|
|
if (status==2){
|
|
|
|
onLineTime=manageCustomerOnlineRecordDOList.get(0).getTotalOnlineTime();
|
|
|
|
}
|
|
|
|
//在线status==1
|
|
|
|
if (status==1){
|
|
|
|
//只有一条在线的数据,用当前时间减去数据创建时间
|
|
|
|
long onlineDate = 0L;
|
|
|
|
Date now = new Date();
|
|
|
|
onlineDate = now.getTime()-manageCustomerOnlineRecordDOList.get(0).getCreateTime().getTime();
|
|
|
|
//多条数据,要加上上一次记录的在线时长
|
|
|
|
if(manageCustomerOnlineRecordDOList.size()>1){
|
|
|
|
int notOnlineCount=0;
|
|
|
|
String lastOnlineTime ="";
|
|
|
|
for (ManageCustomerOnlineRecordDO m : manageCustomerOnlineRecordDOList){
|
|
|
|
if (m.getStatus()==2 && notOnlineCount<1){
|
|
|
|
notOnlineCount++;
|
|
|
|
lastOnlineTime = m.getTotalOnlineTime();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
for (ManageCustomerOnlineRecordDO customerOnlineRecordDO : manageCustomerOnlineRecordDOList){
|
|
for (ManageCustomerOnlineRecordDO customerOnlineRecordDO : manageCustomerOnlineRecordDOList){
|
|
|
|
|
|
}
|
|
}
|
|
@ -1256,8 +1284,41 @@ public class SynergyManageService extends BaseJpaService {
|
|
map.put("jieruAvgTalkTime",getAvgTime(jieruTotalSecond,jieruList.size()));
|
|
map.put("jieruAvgTalkTime",getAvgTime(jieruTotalSecond,jieruList.size()));
|
|
map.put("jieruCount",jieruList.size());
|
|
map.put("jieruCount",jieruList.size());
|
|
|
|
|
|
//--------------今日协同任务外呼数-----------------//
|
|
|
|
|
|
|
|
|
|
//--------------今日协同任务完成数-----------------//
|
|
|
|
String wanchenSql="SELECT" +
|
|
|
|
" count(*) as wanchengCount" +
|
|
|
|
" FROM" +
|
|
|
|
" `manage_synergy_workorder_servicer`" +
|
|
|
|
" WHERE" +
|
|
|
|
" executor_code = '"+userCode+"'" +
|
|
|
|
" AND executor_type = 2" +
|
|
|
|
" AND `status`=3" +
|
|
|
|
" AND complete_time >='"+startTime+"'" +
|
|
|
|
" AND complete_time<='"+endTime+"'";
|
|
|
|
Map<String,Object> wanchenMap = jdbcTemplate.queryForMap(wanchenSql);
|
|
|
|
String weiwanchenSql ="SELECT" +
|
|
|
|
" COUNT(*) AS weiwanchengCount" +
|
|
|
|
" FROM" +
|
|
|
|
" `manage_synergy_workorder_servicer`" +
|
|
|
|
" WHERE" +
|
|
|
|
" executor_code = '"+userCode+"'" +
|
|
|
|
" AND executor_type = 2" +
|
|
|
|
" AND `status`<3";
|
|
|
|
Map<String,Object> weiwanchenMap = jdbcTemplate.queryForMap(wanchenSql);
|
|
|
|
String fasongSql="SELECT" +
|
|
|
|
" COUNT(*) AS fasongCount" +
|
|
|
|
" FROM" +
|
|
|
|
" manage_synergy_workorder" +
|
|
|
|
" WHERE" +
|
|
|
|
" create_user = '"+userCode+"'" +
|
|
|
|
" AND create_user_type = 2" +
|
|
|
|
" AND del = 1" +
|
|
|
|
" AND create_time>='"+startTime+"'" +
|
|
|
|
" AND create_time<='"+endTime+"'";
|
|
|
|
Map<String,Object> fasongMap = jdbcTemplate.queryForMap(fasongSql);
|
|
|
|
map.putAll(wanchenMap);
|
|
|
|
map.putAll(weiwanchenMap);
|
|
|
|
map.putAll(fasongMap);
|
|
return map;
|
|
return map;
|
|
|
|
|
|
}
|
|
}
|
|
@ -1344,11 +1405,14 @@ public class SynergyManageService extends BaseJpaService {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
public Map<String,Object> adminIndex(String userCode){
|
|
|
|
|
|
public Map<String,Object> adminIndex(){
|
|
List<User> userList = userDao.findByType(4);
|
|
List<User> userList = userDao.findByType(4);
|
|
|
|
|
|
Map<String,Object> map = new HashMap<>();
|
|
Map<String,Object> map = new HashMap<>();
|
|
String today = DateUtil.dateToStrShort(new Date());
|
|
String today = DateUtil.dateToStrShort(new Date());
|
|
|
|
String startTime=today+" 00:00:00";
|
|
|
|
String endTime = today+" 23:59:59";
|
|
|
|
|
|
String callSql ="SELECT" +
|
|
String callSql ="SELECT" +
|
|
" r.*" +
|
|
" r.*" +
|
|
" FROM" +
|
|
" FROM" +
|
|
@ -1356,36 +1420,173 @@ public class SynergyManageService extends BaseJpaService {
|
|
" LEFT JOIN wlyy_user u ON r.user_code = u.`code`" +
|
|
" LEFT JOIN wlyy_user u ON r.user_code = u.`code`" +
|
|
" WHERE" +
|
|
" WHERE" +
|
|
" u.type = 4" +
|
|
" u.type = 4" +
|
|
" AND r.create_time >= '"+today+" 00:00:00'" +
|
|
|
|
" AND r.create_time <= '"+today+" 23:59:59'";
|
|
|
|
//--------------今日外呼量-----------------//
|
|
|
|
List<CallRecord> waihudList = jdbcTemplate.query(callSql+" and r.type=2",new BeanPropertyRowMapper<>(CallRecord.class));
|
|
|
|
//求总时长
|
|
|
|
int seconds = totalTaklTime(waihudList);
|
|
|
|
//求平均时长
|
|
|
|
map.put("waihuAvgTalkTime",getAvgTime(seconds,waihudList.size()));
|
|
|
|
map.put("waihuCount",waihudList.size());
|
|
|
|
|
|
" AND r.create_time >= '"+startTime+"'" +
|
|
|
|
" AND r.create_time <= '"+endTime+"'";
|
|
|
|
|
|
//--------------今日在线时长-----------------//
|
|
|
|
|
|
//正在咨询人数
|
|
|
|
|
|
|
|
//当前客服人数
|
|
|
|
map.put("onlineNowCount",userList.size());
|
|
|
|
|
|
|
|
//今日会话总量 今日平均会话时长
|
|
|
|
List<CallRecord> allCallRecordList = jdbcTemplate.query(callSql+" and r.answer_status=1",new BeanPropertyRowMapper<>(CallRecord.class));
|
|
|
|
map.put("allCallCount",allCallRecordList.size());
|
|
|
|
int totalSeconds = totalTaklTime(allCallRecordList);
|
|
|
|
map.put("allAvgTaklTime",getAvgTime(totalSeconds,allCallRecordList.size()));
|
|
|
|
|
|
|
|
//今日外呼量 今日平均会话时长
|
|
|
|
List<CallRecord> waihuCallRecordList = jdbcTemplate.query(callSql+" and r.answer_status=1 and r.type=2 and ",new BeanPropertyRowMapper<>(CallRecord.class));
|
|
|
|
map.put("waihuCallCount",waihuCallRecordList.size());
|
|
|
|
int waihuTotalSeconds = totalTaklTime(waihuCallRecordList);
|
|
|
|
map.put("waihuAvgTaklTime",getAvgTime(waihuTotalSeconds,waihuCallRecordList.size()));
|
|
|
|
|
|
|
|
//--------------今日协同任务外呼数-----------------//
|
|
|
|
String wanchenSql="SELECT" +
|
|
|
|
" count(*) AS wanchengCount" +
|
|
|
|
" FROM" +
|
|
|
|
" `manage_synergy_workorder_servicer` s" +
|
|
|
|
" LEFT JOIN wlyy_user u ON s.executor_code = u.`code`" +
|
|
|
|
" WHERE" +
|
|
|
|
" s.executor_type = 2" +
|
|
|
|
" AND s.`status` = 3" +
|
|
|
|
" AND s.complete_time >= '"+startTime+"'" +
|
|
|
|
" AND s.complete_time <= '"+endTime+"'";
|
|
|
|
Map<String,Object> wanchenMap = jdbcTemplate.queryForMap(wanchenSql);
|
|
|
|
String weiwanchenSql ="SELECT" +
|
|
|
|
" COUNT(*) AS weiwanchengCount" +
|
|
|
|
" FROM" +
|
|
|
|
" `manage_synergy_workorder_servicer` s" +
|
|
|
|
"LEFT JOIN wlyy_user u ON s.executor_code = u.`code`" +
|
|
|
|
" WHERE" +
|
|
|
|
" executor_type = 2" +
|
|
|
|
" AND `status`<3";
|
|
|
|
Map<String,Object> weiwanchenMap = jdbcTemplate.queryForMap(wanchenSql);
|
|
|
|
String fasongSql="SELECT" +
|
|
|
|
" COUNT(*) AS fasongCount" +
|
|
|
|
" FROM" +
|
|
|
|
" (" +
|
|
|
|
" SELECT" +
|
|
|
|
" s.*, w.create_user," +
|
|
|
|
" w.create_user_name" +
|
|
|
|
" FROM" +
|
|
|
|
" manage_synergy_workorder_servicer s" +
|
|
|
|
" LEFT JOIN manage_synergy_workorder w ON s.workorder_code = w.`code`" +
|
|
|
|
" WHERE" +
|
|
|
|
" w.create_user_type = 2" +
|
|
|
|
" AND w.del = 1" +
|
|
|
|
" AND w.create_time >= '"+startTime+"'" +
|
|
|
|
" AND w.create_time <= '"+endTime+"'" +
|
|
|
|
" ) a" +
|
|
|
|
" LEFT JOIN wlyy_user u ON a.create_user = u.`code`";
|
|
|
|
Map<String,Object> fasongMap = jdbcTemplate.queryForMap(fasongSql);
|
|
|
|
map.putAll(wanchenMap);
|
|
|
|
map.putAll(weiwanchenMap);
|
|
|
|
map.putAll(fasongMap);
|
|
|
|
return map;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public void intervalOnLine(){
|
|
|
|
String today = DateUtil.dateToStrShort(new Date());
|
|
String startTime=today+" 00:00:00";
|
|
String startTime=today+" 00:00:00";
|
|
String endTime = today+" 23:59:59";
|
|
String endTime = today+" 23:59:59";
|
|
List<ManageCustomerOnlineRecordDO> manageCustomerOnlineRecordDOList = manageCustomerOnlineRecordDao.findByCustomerCodeToday(userCode,startTime,endTime);
|
|
|
|
String onLineTime = manageCustomerOnlineRecordDOList.get(0).getTotalOnlineTime();
|
|
|
|
for (ManageCustomerOnlineRecordDO customerOnlineRecordDO : manageCustomerOnlineRecordDOList){
|
|
|
|
|
|
String allSql="SELECT " +
|
|
|
|
" HOUR (r.create_time) AS HOUR, " +
|
|
|
|
" count(*) AS Count " +
|
|
|
|
" FROM " +
|
|
|
|
" manage_call_record r " +
|
|
|
|
" LEFT JOIN wlyy_user u ON r.user_code = u.`code` " +
|
|
|
|
" WHERE " +
|
|
|
|
" r.create_time BETWEEN '"+startTime+"' " +
|
|
|
|
" AND '"+endTime+"' " +
|
|
|
|
" AND r.answer_status = 1 " +
|
|
|
|
" GROUP BY " +
|
|
|
|
" HOUR (r.create_time) " +
|
|
|
|
" ORDER BY " +
|
|
|
|
" HOUR (r.create_time)";
|
|
|
|
List<Map<String,Object>> allList = jdbcTemplate.queryForList(allSql);
|
|
|
|
String jieruSql ="SELECT " +
|
|
|
|
" HOUR (r.create_time) AS HOUR, " +
|
|
|
|
" count(*) AS Count " +
|
|
|
|
" FROM " +
|
|
|
|
" manage_call_record r " +
|
|
|
|
" LEFT JOIN wlyy_user u ON r.user_code = u.`code` " +
|
|
|
|
" WHERE " +
|
|
|
|
" r.create_time BETWEEN '"+startTime+"' " +
|
|
|
|
" AND '"+endTime+"' " +
|
|
|
|
" AND r.answer_status = 1 " +
|
|
|
|
" AND r.type = 1 " +
|
|
|
|
" GROUP BY " +
|
|
|
|
" HOUR (r.create_time) " +
|
|
|
|
" ORDER BY " +
|
|
|
|
" HOUR (r.create_time)";
|
|
|
|
List<Map<String,Object>> jieruList = jdbcTemplate.queryForList(allSql);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------今日接入量-----------------//
|
|
|
|
List<CallRecord> jieruList = jdbcTemplate.query(callSql+" and r.type=1",new BeanPropertyRowMapper<>(CallRecord.class));
|
|
|
|
//求总时长
|
|
|
|
int jieruTotalSecond = totalTaklTime(jieruList);
|
|
|
|
//求平均时长
|
|
|
|
map.put("jieruAvgTalkTime",getAvgTime(jieruTotalSecond,jieruList.size()));
|
|
|
|
map.put("jieruCount",jieruList.size());
|
|
|
|
|
|
}
|
|
|
|
|
|
//--------------今日协同任务外呼数-----------------//
|
|
|
|
|
|
public void TodayCustomerActivy(){
|
|
|
|
List<Map<String,Object>> resultList = new ArrayList<>();
|
|
|
|
String today = DateUtil.dateToStrShort(new Date());
|
|
|
|
String startTime=today+" 00:00:00";
|
|
|
|
String endTime = today+" 23:59:59";
|
|
|
|
String sql="SELECT" +
|
|
|
|
" u.`code`"+
|
|
|
|
" u.`name`," +
|
|
|
|
" u.`online`," +
|
|
|
|
" r.type" +
|
|
|
|
" FROM" +
|
|
|
|
" wlyy_user u" +
|
|
|
|
" LEFT JOIN manage_call_record r ON u.`code` = r.user_code" +
|
|
|
|
" WHERE" +
|
|
|
|
" u.type = 4" +
|
|
|
|
" AND r.create_time>='"+startTime+"'" +
|
|
|
|
" AND r.create_time<='"+endTime+"'" +
|
|
|
|
" AND r.answer_status=1";
|
|
|
|
List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
|
|
|
|
Map<String,Object> toMap = new HashMap<>();
|
|
|
|
Map<String,Object> jieruMap = new HashMap<>();
|
|
|
|
Map<String,Object> waihuMap = new HashMap<>();
|
|
|
|
for (Map<String,Object> map : list){
|
|
|
|
Map<String,Object> allMap = new HashMap<>();
|
|
|
|
String userCode = String.valueOf(map.get("code"));
|
|
|
|
if (!toMap.containsKey(userCode)){
|
|
|
|
map.put("jieruCount",0);
|
|
|
|
map.put("waihuCount",0);
|
|
|
|
toMap.put(userCode,map);
|
|
|
|
}else {
|
|
|
|
|
|
|
|
}
|
|
|
|
//接入量
|
|
|
|
if ("1".equals(String.valueOf(map.get("type")))){
|
|
|
|
int jieruCount = Integer.valueOf(String.valueOf(allMap.get("jieruCount")));
|
|
|
|
jieruCount++;
|
|
|
|
jieruMap.put(userCode,jieruCount);
|
|
|
|
}
|
|
|
|
|
|
|
|
/*//接入量
|
|
|
|
if ("1".equals(String.valueOf(map.get("type")))){
|
|
|
|
if (jieruMap.containsKey(userCode)){
|
|
|
|
int jieruCount = Integer.valueOf(String.valueOf(jieruMap.get(userCode)));
|
|
|
|
jieruCount++;
|
|
|
|
jieruMap.put(userCode,jieruCount);
|
|
|
|
}else {
|
|
|
|
jieruMap.put(userCode,1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//外呼量
|
|
|
|
if ("2".equals(String.valueOf(map.get("type")))){
|
|
|
|
if (waihuMap.containsKey(userCode)){
|
|
|
|
int waihuCount = Integer.valueOf(String.valueOf(waihuMap.get(userCode)));
|
|
|
|
waihuCount++;
|
|
|
|
waihuMap.put(userCode,waihuCount);
|
|
|
|
}else {
|
|
|
|
waihuMap.put(userCode,1);
|
|
|
|
}
|
|
|
|
}*/
|
|
|
|
}
|
|
|
|
|
|
return map;
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|