IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> EMQ传感器设备发送报文,到工单微服务,自动创建工单并且工单创建,自动分配给昨天工单最少的用户 -> 正文阅读

[开发测试]EMQ传感器设备发送报文,到工单微服务,自动创建工单并且工单创建,自动分配给昨天工单最少的用户

在这里插入图片描述

一、基本属性准备

1、主题注解

在这里插入图片描述

2、解析报文协议

在这里插入图片描述
在这里插入图片描述

二、自动创建维修工单

1、根据算法获取前一天维修工单最少的人,获取其用户id

其中最主要的是 为该工单分配一个 执行人,该执行人(前一天维修工单最少的人)
所以算出这个人的Id,就迎刃而解了

 /*
    * 根据区域Id获取当前区域今天工单量最少的人
    * */
    private Integer getMinCountUserId(Long regionId) {
        //获取区域内的运维人员列表
        List<UserVO> userVOList = userService.getOperators(regionId + "");

        if (CollectionUtils.isEmpty(userVOList)) {
           throw new LogicException("该区域没有运维人员");
       }
        //获取该区域用户列表
        ArrayList<Integer> userIdList = new ArrayList<>();
        for (UserVO vo : userVOList) {
            userIdList.add(vo.getUserId());
        }

        //查询当天每个维修人员的工单数量
        DateTime begin = DateUtil.beginOfDay(new Date());
        DateTime end = DateUtil.endOfDay(new Date());
        //当天运维工单
        List<TaskEntity>  taskEntityList=  taskService.getUserTask(begin,end);

        // 按用户id 对工单进行分组
        Map<Integer, List<TaskEntity>> userCount = taskEntityList.stream().collect(Collectors.groupingBy(TaskEntity::getUserId));
        //为当前用户设置工单数量
        List<UserTaskCount> userTaskCountList = userIdList.stream().map(userId -> {
            UserTaskCount userTaskCount = new UserTaskCount();
            userTaskCount.setUserId(userId);
            //拿到当前用户的工单列表
            List<TaskEntity> taskEntityListNow = userCount.get(userId);
            if (CollectionUtils.isEmpty(taskEntityListNow)) {
                userTaskCount.setCount(0);
            } else {
                userTaskCount.setCount(taskEntityListNow.size());
            }
            return userTaskCount;
        }).sorted(((o1, o2) -> o1.getCount() - o2.getCount())).limit(1).collect(Collectors.toList());

        Integer userId = userTaskCountList.get(0).getUserId();

        return userId;
    }

2、自动创建工单

 //自动进行创建工单
    @Override
    public boolean AutoSaveTask(VmStatusContract vmStatusContract) {
        TaskEntity taskEntity = new TaskEntity();
        //工单编号
        String taskCode = getId();
        taskEntity.setTaskCode(taskCode);
        //工单类型封装
        taskEntity.setTaskStatus(VMSystem.TASK_STATUS_CREATE);
        //创建类型
        taskEntity.setCreateType(VMSystem.ORDER_STATUS_CREATE);
        //售货机编号
        String innerCode = vmStatusContract.getInnerCode();
        taskEntity.setInnerCode(innerCode);
        //发起feign调用,去售货机微服务中获取售货机信息
        VmVO vmInfo = vmService.getVMInfo(innerCode);
        //获区域Id
        Long regionId = vmInfo.getRegionId();
        if (regionId==null){
            throw new LogicException("区域Id不存在");
        }
        taskEntity.setRegionId(regionId);
        //描述
        taskEntity.setDesc("自动创建");
        //封装工单类型
        taskEntity.setProductTypeId(VMSystem.TASK_TYPE_REPAIR);

        //封装地址
        String nodeAddr = vmInfo.getNodeAddr();
        taskEntity.setAddr(nodeAddr);
        //封装用户Id,该用户Id根据算法算出
        Integer userId = getMinCountUserId(regionId);

        //调用用户微服务获取用户姓名
        UserVO user = userService.getUser(userId);
        //封装用户姓名
        taskEntity.setUserName(user.getUserName());

        taskEntity.setUserId(userId);

        //创建工单
        taskService.save(taskEntity);

        return true;
    }
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-05-09 13:03:57  更:2022-05-09 13:04:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 5:06:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码