浏览代码

客服首页和管理员首页

zd_123 6 年之前
父节点
当前提交
9bf0ff19ab

+ 24 - 2
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/controller/synergy/customer/CustomerSynergyManageController.java

@ -467,9 +467,31 @@ public class CustomerSynergyManageController extends BaseController {
    @RequestMapping(value = "adminIndex",method = RequestMethod.GET)
    @ApiOperation(value = "管理员首页.")
    public String adminIndex(@ApiParam(name="userCode",value="客服code")@RequestParam(value ="userCode")String userCode){
    public String adminIndex(){
        try{
            return write(200,"获取成功!","data",synergyManageService.customerIndex(userCode));
            return write(200,"获取成功!","data",synergyManageService.adminIndex());
        }catch (Exception e){
            e.printStackTrace();
            return write(-1,"获取失败!");
        }
    }
    @RequestMapping(value = "intervalOnLine",method = RequestMethod.GET)
    @ApiOperation(value = "管理员首页-今日在线服务趋势")
    public String intervalOnLine(){
        try{
            return write(200,"获取成功!","data",synergyManageService.intervalOnLine());
        }catch (Exception e){
            e.printStackTrace();
            return write(-1,"获取失败!");
        }
    }
    @RequestMapping(value = "TodayCustomerActivy",method = RequestMethod.GET)
    @ApiOperation(value = "管理员首页-客服今日活动")
    public String TodayCustomerActivy(){
        try{
            return write(200,"获取成功!","data",synergyManageService.TodayCustomerActivy());
        }catch (Exception e){
            e.printStackTrace();
            return write(-1,"获取失败!");

+ 3 - 3
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/entity/synergy/ManageCustomerOnlineRecordDO.java

@ -22,7 +22,7 @@ public class ManageCustomerOnlineRecordDO extends IdEntity {
    private String jobNo;//客服工号
    private String seat;//席位
    private String phone;//客服电话
    private String totalOnlineTime;//在线总时长
    private int totalOnlineTime;//在线总时长(单位:分钟)
    @Column(name = "code")
    public String getCode() {
@ -97,11 +97,11 @@ public class ManageCustomerOnlineRecordDO extends IdEntity {
    }
    @Column(name = "total_online_time")
    public String getTotalOnlineTime() {
    public int getTotalOnlineTime() {
        return totalOnlineTime;
    }
    public void setTotalOnlineTime(String totalOnlineTime) {
    public void setTotalOnlineTime(int totalOnlineTime) {
        this.totalOnlineTime = totalOnlineTime;
    }
}

+ 130 - 78
patient-co-manage/wlyy-manage/src/main/java/com/yihu/wlyy/service/synergy/SynergyManageService.java

@ -1249,35 +1249,8 @@ public class SynergyManageService extends BaseJpaService {
        List<ManageCustomerOnlineRecordDO> manageCustomerOnlineRecordDOList = manageCustomerOnlineRecordDao.findByCustomerCodeToday(userCode,startTime,endTime);
        //如果最新一条是离线则直接获取总在线时长就是在线时间,
        // 如果最新一条是在线,则用当前时间减去上一条登录时间加上之前的在线时长为总的在线时长
        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){
        }
        Map<String,Object> lineMap = getOnlineAndNotOnlineAndNowOnline(manageCustomerOnlineRecordDOList);
        map.putAll(lineMap);
        //--------------今日接入量-----------------//
        List<CallRecord> jieruList = jdbcTemplate.query(callSql+" and type=1",new BeanPropertyRowMapper<>(CallRecord.class));
@ -1326,6 +1299,51 @@ public class SynergyManageService extends BaseJpaService {
    }
    public Map<String,Object> getOnlineAndNotOnlineAndNowOnline(List<ManageCustomerOnlineRecordDO> list){
        Map<String,Object> map = new HashMap<>();
        //如果最新一条是离线则直接获取总在线时长就是在线时间,
        // 如果最新一条是在线,则用当前时间减去上一条登录时间加上之前的在线时长为总的在线时长
        int status = list.get(list.size()-1).getStatus();
        String firstOnlineTime  = DateUtil.dateToStr(list.get(0).getCreateTime(),DateUtil.YYYY_MM_DD_HH_MM_SS);
        int totalOnlineMinute=0;
        int totalNotOnlineMinute =0;
        int toMinute = 0;
        //离线status==2
        if (status==2){
            totalOnlineMinute =list.get(list.size()-1).getTotalOnlineTime();
            long allTime = list.get(list.size()-1).getCreateTime().getTime()-list.get(0).getCreateTime().getTime();
            totalNotOnlineMinute= Integer.valueOf(String.valueOf(allTime/1000/60))-totalOnlineMinute;
        }
        //在线status==1
        if (status==1){
            //只有一条在线的数据,用当前时间减去数据创建时间
            long onlineDate = 0L;
            long allDateTime = 0L;
            int lastOnlineTime =0;
            Date now = new Date();
            onlineDate = now.getTime()-list.get(list.size()-1).getCreateTime().getTime();
            allDateTime = now.getTime()-list.get(0).getCreateTime().getTime();
            toMinute = Integer.valueOf(String.valueOf(onlineDate/1000/60));
            //多条数据,要加上上一次记录的在线时长
            if(list.size()>1){
                int notOnlineCount=0;
                for (ManageCustomerOnlineRecordDO m : list){
                    if (m.getStatus()==2 && notOnlineCount<1){
                        notOnlineCount++;
                        lastOnlineTime = m.getTotalOnlineTime();
                    }
                }
            }
            totalOnlineMinute=toMinute+lastOnlineTime;
            totalNotOnlineMinute = Integer.valueOf(String.valueOf(allDateTime/1000/60))-totalOnlineMinute;
        }
        map.put("notOnline",totalNotOnlineMinute);
        map.put("online",totalOnlineMinute);
        map.put("nowOnline",toMinute);
        map.put("firstOnlineTime",firstOnlineTime);
        return map;
    }
    /**
     * 返回总的秒数
     * @param list
@ -1434,14 +1452,24 @@ public class SynergyManageService extends BaseJpaService {
        //今日会话总量  今日平均会话时长
        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()));
        if (allCallRecordList.size()>0){
            int totalSeconds = totalTaklTime(allCallRecordList);
            map.put("allAvgTaklTime",getAvgTime(totalSeconds,allCallRecordList.size()));
        }else {
            map.put("allAvgTaklTime",0);
        }
        //今日外呼量 今日平均会话时长
        List<CallRecord> waihuCallRecordList = jdbcTemplate.query(callSql+" and r.answer_status=1 and r.type=2 and ",new BeanPropertyRowMapper<>(CallRecord.class));
        List<CallRecord> waihuCallRecordList = jdbcTemplate.query(callSql+" and r.answer_status=1 and r.type=2 ",new BeanPropertyRowMapper<>(CallRecord.class));
        map.put("waihuCallCount",waihuCallRecordList.size());
        int waihuTotalSeconds = totalTaklTime(waihuCallRecordList);
        map.put("waihuAvgTaklTime",getAvgTime(waihuTotalSeconds,waihuCallRecordList.size()));
        if (waihuCallRecordList.size()>0){
            int waihuTotalSeconds = totalTaklTime(waihuCallRecordList);
            map.put("waihuAvgTaklTime",getAvgTime(waihuTotalSeconds,waihuCallRecordList.size()));
        }else {
            map.put("waihuAvgTaklTime",0);
        }
        //--------------今日协同任务外呼数-----------------//
        String wanchenSql="SELECT" +
@ -1489,7 +1517,8 @@ public class SynergyManageService extends BaseJpaService {
    }
    public void intervalOnLine(){
    public Map<String,Object> intervalOnLine(){
        Map<String,Object> map = new HashMap<>();
        String today = DateUtil.dateToStrShort(new Date());
        String startTime=today+" 00:00:00";
        String endTime = today+" 23:59:59";
@ -1524,20 +1553,24 @@ public class SynergyManageService extends BaseJpaService {
            " ORDER BY " +
            " HOUR (r.create_time)";
        List<Map<String,Object>> jieruList = jdbcTemplate.queryForList(allSql);
        map.put("all",allList);
        map.put("jieru",jieruList);
        return  map;
    }
    public void TodayCustomerActivy(){
    public List<Map<String,Object>> 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";
        startTime="2017-11-15 00:00:00";
        endTime="2017-11-22 23:59:59";
        String sql="SELECT" +
                " u.`code`"+
                " u.`code`,"+
                " u.`name`," +
                " u.`online`," +
                " r.type" +
                " r.type," +
                " COUNT(*) as num"+
                " FROM" +
                " wlyy_user u" +
                " LEFT JOIN manage_call_record r ON u.`code` = r.user_code" +
@ -1545,51 +1578,70 @@ public class SynergyManageService extends BaseJpaService {
                " u.type = 4" +
                " AND r.create_time>='"+startTime+"'" +
                " AND r.create_time<='"+endTime+"'" +
                " AND r.answer_status=1";
                " AND r.answer_status=1"+
                " GROUP BY" +
                " u.`code`," +
                " r.type";
        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<>();
        List<Map<String,Object>> toList =  new ArrayList<>();
        for (Map<String,Object> map : list){
            Map<String,Object> allMap = new HashMap<>();
            resultList.addAll(toList);
            toList.clear();
            String userCode = String.valueOf(map.get("code"));
            if (!toMap.containsKey(userCode)){
                map.put("jieruCount",0);
                map.put("waihuCount",0);
                toMap.put(userCode,map);
            String type = String.valueOf(map.get("type"));
            if (resultList.size()==0){
                Map<String,Object> resultMap = new HashMap<>();
                resultMap.put("userCode",userCode);
                resultMap.put("userName",map.get("name"));
                resultMap.put("online",map.get("online"));
                if ("1".equals(type)){
                    resultMap.put("jieruCount",map.get("num"));
                    resultMap.put("waihuCount",0);
                }
                if ("2".equals(type)){
                    resultMap.put("jieruCount",0);
                    resultMap.put("waihuCount",map.get("num"));
                }
                toList.add(resultMap);
            }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);
                int count =0;
                for (Map<String,Object> map1 : resultList){
                    count++;
                    if(userCode.equals(String.valueOf(map1.get("userCode")))){
                        if ("1".equals(type)){
                            map1.put("jieruCount",map.get("num"));
                        }
                        if ("2".equals(type)){
                            map1.put("waihuCount",map.get("num"));
                        }
                    }
                    if (count==resultList.size() && !userCode.equals(String.valueOf(map1.get("userCode")))){
                        Map<String,Object> resultMap = new HashMap<>();
                        resultMap.put("userCode",userCode);
                        resultMap.put("userName",map.get("name"));
                        resultMap.put("online",map.get("online"));
                        if ("1".equals(type)){
                            resultMap.put("jieruCount",map.get("num"));
                            resultMap.put("waihuCount",0);
                        }
                        if ("2".equals(type)){
                            resultMap.put("jieruCount",0);
                            resultMap.put("waihuCount",map.get("num"));
                        }
                        toList.add(resultMap);
                    }
                }
            }
            //外呼量
            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);
                }
            }*/
        }
        for (Map<String,Object> reMap : resultList){
            String userCode = String.valueOf(reMap.get("userCode"));
            List<ManageCustomerOnlineRecordDO> manageCustomerOnlineRecordDOList = manageCustomerOnlineRecordDao.findByCustomerCodeToday(userCode,startTime,endTime);
            //如果最新一条是离线则直接获取总在线时长就是在线时间,
            // 如果最新一条是在线,则用当前时间减去上一条登录时间加上之前的在线时长为总的在线时长
            Map<String,Object> lineMap = getOnlineAndNotOnlineAndNowOnline(manageCustomerOnlineRecordDOList);
            reMap.putAll(lineMap);
        }
        return resultList;
    }
}