jinpengyong
2021-08-26 3be7bd55ff0a4ab2ed25b46cdfd1dede92300ea3
kafa数据从redis获取型号,当前组织下走航车设备列表
5 files added
16 files modified
377 ■■■■■ changed files
screen-api/src/main/java/com/moral/api/controller/LoginController.java 6 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/controller/MenuController.java 12 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/controller/SpecialDeviceController.java 10 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/entity/SpecialDeviceHistory.java 83 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/mapper/SpecialDeviceHistoryMapper.java 16 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/SpecialDeviceHistoryService.java 16 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/SpecialDeviceService.java 3 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/UserService.java 4 ●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/impl/GroupMenuServiceImpl.java 7 ●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/impl/GroupServiceImpl.java 28 ●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceHistoryServiceImpl.java 20 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java 45 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/impl/UserGroupServiceImpl.java 13 ●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/impl/UserLogServiceImpl.java 9 ●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java 26 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/utils/OperationLogUtils.java 9 ●●●●● patch | view | raw | blame | history
screen-api/src/main/resources/mapper/SpecialDeviceHistoryMapper.xml 19 ●●●●● patch | view | raw | blame | history
screen-common/src/main/java/com/moral/constant/Constants.java 9 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java 14 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java 12 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/HistoryMinutelyServiceImpl.java 16 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/controller/LoginController.java
@@ -7,7 +7,6 @@
import lombok.extern.slf4j.Slf4j;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
@@ -61,9 +60,8 @@
            @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
    })
    @RequestMapping(value = "getUserInfo", method = RequestMethod.POST)
    public ResultMessage getUserInfo(HttpServletRequest request) {
        String token = request.getHeader("token");
        Map<String, Object> result = userService.getUserInfo(token);
    public ResultMessage getUserInfo() {
        Map<String, Object> result = userService.getCurrentUserInfo();
        return ResultMessage.ok(result);
    }
screen-api/src/main/java/com/moral/api/controller/MenuController.java
@@ -9,8 +9,6 @@
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -55,9 +53,8 @@
            @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String"),
    })
    @RequestMapping(value = "menu-list", method = RequestMethod.POST)
    public ResultMessage selectMenus(HttpServletRequest request) {
        String token = request.getHeader("token");
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
    public ResultMessage selectMenus() {
        Map<String, Object> currentUserInfo = (Map<String, Object>)TokenUtils.getUserInfo();
        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
        List<Menu> menus = menuService.getMenuList((Integer) orgInfo.get("id"));
        return ResultMessage.ok(menus);
@@ -68,9 +65,8 @@
            @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String"),
    })
    @RequestMapping(value = "select", method = RequestMethod.GET)
    public ResultMessage select(HttpServletRequest request) {
        String token = request.getHeader("token");
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
    public ResultMessage select() {
        Map<String, Object> currentUserInfo = (Map<String, Object>)TokenUtils.getUserInfo();
        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
        Map<String, Object> result = menuService.selectMenusByOrgId((Integer) orgInfo.get("id"));
        return ResultMessage.ok(result);
screen-api/src/main/java/com/moral/api/controller/SpecialDeviceController.java
@@ -33,6 +33,16 @@
    private SpecialDeviceService specialDeviceService;
    /**
     * @return 返回请求成功后的对象信息
     */
    @GetMapping("getCarsByOrg")
    @ApiOperation(value = "获取当前组织下所有走航车列表", notes = "走航车轨迹")
    public ResultMessage getCarsInfo() {
        List<Map<String, Object>> response = specialDeviceService.getCarsInfo();
        return ResultMessage.ok(response);
    }
    /**
     * @param request 请求信息
     * @return 返回请求成功后的对象信息
     */
screen-api/src/main/java/com/moral/api/entity/SpecialDeviceHistory.java
New file
@@ -0,0 +1,83 @@
package com.moral.api.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * <p>
 *
 * </p>
 *
 * @author moral
 * @since 2021-08-26
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class SpecialDeviceHistory extends Model<SpecialDeviceHistory> {
    private static final long serialVersionUID = 1L;
    /**
     * id
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 设备名称
     */
    private String name;
    /**
     * 设备mac号
     */
    private String mac;
    /**
     * 维护人id,多个逗号隔开,来源于manage_account
     */
    private String operateIds;
    /**
     * 所属组织id
     */
    private Integer organizationId;
    /**
     * 所属型号id
     */
    private Integer deviceVersionId;
    /**
     * 特殊设备类型,与字典表关联
     */
    private String specialType;
    /**
     * 创建时间
     */
    private Date createTime;
    /**
     * 更新时间
     */
    private Date updateTime;
    /**
     * 逻辑删除,0:不删除;1:删除
     */
    private String isDelete;
    @Override
    protected Serializable pkVal() {
        return this.id;
    }
}
screen-api/src/main/java/com/moral/api/mapper/SpecialDeviceHistoryMapper.java
New file
@@ -0,0 +1,16 @@
package com.moral.api.mapper;
import com.moral.api.entity.SpecialDeviceHistory;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author moral
 * @since 2021-08-26
 */
public interface SpecialDeviceHistoryMapper extends BaseMapper<SpecialDeviceHistory> {
}
screen-api/src/main/java/com/moral/api/service/SpecialDeviceHistoryService.java
New file
@@ -0,0 +1,16 @@
package com.moral.api.service;
import com.moral.api.entity.SpecialDeviceHistory;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 *  服务类
 * </p>
 *
 * @author moral
 * @since 2021-08-26
 */
public interface SpecialDeviceHistoryService extends IService<SpecialDeviceHistory> {
}
screen-api/src/main/java/com/moral/api/service/SpecialDeviceService.java
@@ -16,6 +16,9 @@
 */
public interface SpecialDeviceService extends IService<SpecialDevice> {
    //获取该组织下所有走航车设备列表
    List<Map<String, Object>> getCarsInfo();
    //走航车轨迹
    List<Map<String, Object>> carTrajectory(Map<String, Object> params);
screen-api/src/main/java/com/moral/api/service/UserService.java
@@ -23,8 +23,8 @@
    //登陆
    Map<String, Object> login(Map<String, Object> parameters);
    //根据token获取用户信息
    Map<String,Object> getUserInfo(String token);
    //获取当前用户信息
    Map<String,Object> getCurrentUserInfo();
    //获取菜单
    Map<String, Object> getMenus(Map<String, Object> parameters);
screen-api/src/main/java/com/moral/api/service/impl/GroupMenuServiceImpl.java
@@ -52,12 +52,9 @@
    @Override
    @Transactional
    public void allotMenus(Map<String, Object> parameters) {
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        String token = request.getHeader("token");
        Integer groupId = Integer.parseInt(parameters.get("groupId").toString());
        List<Integer> menuIds = (ArrayList) parameters.get("menuIds");
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfo();
        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
        UpdateWrapper<GroupMenu> deleteWrapper = new UpdateWrapper<>();
        deleteWrapper.eq("group_id", groupId).eq("channel_key", Constants.WEB_CHANNEL);
@@ -78,7 +75,7 @@
        //日志
        String groupName = groupMapper.selectById((Integer) parameters.get("groupId")).getGroupName();
        String content = "给组:" + groupName + "分配了菜单:" + menus;
        operationLogUtils.insertLog(request, content, Constants.UPDATE_OPERATE_TYPE);
        operationLogUtils.insertLog(content, Constants.UPDATE_OPERATE_TYPE);
    }
    @Override
screen-api/src/main/java/com/moral/api/service/impl/GroupServiceImpl.java
@@ -2,9 +2,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -25,10 +23,6 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
/**
 * <p>
@@ -55,11 +49,8 @@
    @Override
    public Map<String, Object> addGroup(Group group) {
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        String token = request.getHeader("token");
        Map<String, Object> result = new HashMap<>();
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfo();
        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
        Integer orgId = (Integer) orgInfo.get("id");
        QueryWrapper<Group> queryWrapper = new QueryWrapper<>();
@@ -76,7 +67,7 @@
        //日志
        String content = "添加了组:" + group.getGroupName();
        operationLogUtils.insertLog(request, content, Constants.INSERT_OPERATE_TYPE);
        operationLogUtils.insertLog(content, Constants.INSERT_OPERATE_TYPE);
        return result;
    }
@@ -95,19 +86,15 @@
        deleteUserGroupWrapper.eq("group_id", id);
        userGroupMapper.delete(deleteUserGroupWrapper);
        //日志
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        String content = "删除了组:" + groupMapper.selectById(id).getGroupName();
        operationLogUtils.insertLog(request, content, Constants.DELETE_OPERATE_TYPE);
        operationLogUtils.insertLog(content, Constants.DELETE_OPERATE_TYPE);
    }
    @Override
    public Map<String, Object> updateGroup(Group group) {
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        String token = request.getHeader("token");
        String before = groupMapper.selectById(group.getId()).getGroupName();
        Map<String, Object> result = new HashMap<>();
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfo();
        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
        Integer orgId = (Integer) orgInfo.get("id");
        QueryWrapper<Group> queryWrapper = new QueryWrapper<>();
@@ -124,16 +111,13 @@
        groupMapper.updateById(group);
        //日志
        String content = "修改了组:" + before + "=>" + group.getGroupName();
        operationLogUtils.insertLog(request, content, Constants.UPDATE_OPERATE_TYPE);
        operationLogUtils.insertLog(content, Constants.UPDATE_OPERATE_TYPE);
        return result;
    }
    @Override
    public Page<Group> selectGroups(Map<String, Object> parameters) {
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        String token = request.getHeader("token");
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfo();
        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
        Integer orgId = (Integer) orgInfo.get("id");
        QueryWrapper<Group> queryWrapper = new QueryWrapper<>();
screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceHistoryServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.moral.api.service.impl;
import com.moral.api.entity.SpecialDeviceHistory;
import com.moral.api.mapper.SpecialDeviceHistoryMapper;
import com.moral.api.service.SpecialDeviceHistoryService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author moral
 * @since 2021-08-26
 */
@Service
public class SpecialDeviceHistoryServiceImpl extends ServiceImpl<SpecialDeviceHistoryMapper, SpecialDeviceHistory> implements SpecialDeviceHistoryService {
}
screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java
@@ -2,33 +2,24 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.moral.api.entity.HistorySecondSpecial;
import com.moral.api.entity.Sensor;
import com.moral.api.entity.SpecialDevice;
import com.moral.api.entity.SysDictData;
import com.moral.api.entity.SpecialDeviceHistory;
import com.moral.api.mapper.HistorySecondSpecialMapper;
import com.moral.api.mapper.SpecialDeviceMapper;
import com.moral.api.service.HistorySecondSpecialService;
import com.moral.api.service.SensorService;
import com.moral.api.service.SpecialDeviceHistoryService;
import com.moral.api.service.SpecialDeviceService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.api.service.SysDictDataService;
import com.moral.constant.Constants;
import com.moral.constant.RedisConstants;
import com.moral.util.DateUtils;
import com.moral.util.GeodesyUtils;
import com.moral.util.TokenUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * <p>
@@ -45,29 +36,27 @@
    private HistorySecondSpecialMapper historySecondSpecialMapper;
    @Autowired
    private SensorService sensorService;
    @Autowired
    private SysDictDataService sysDictDataService;
    @Autowired
    private RedisTemplate redisTemplate;
    private SpecialDeviceHistoryService specialDeviceHistoryService;
    private final static Double dis = 50d;
    @Override
    public List<Map<String, Object>> getCarsInfo() {
        //获取当前用户信息
        Map<String, Object> userInfo = (Map<String, Object>) TokenUtils.getUserInfo();
        Map<String, Object> orgInfo = (Map<String, Object>) userInfo.get("organization");
        Integer orgId = (Integer) orgInfo.get("id");
        QueryWrapper<SpecialDeviceHistory> queryWrapper = new QueryWrapper<>();
        queryWrapper.select("mac", "name")
                .eq("organization_id", orgId)
                .eq("special_type", Constants.SPECIAL_DEVICE_CAR)
                .eq("is_delete", Constants.NOT_DELETE);
        return specialDeviceHistoryService.listMaps(queryWrapper);
    }
    @Override
    public List<Map<String, Object>> carTrajectory(Map<String, Object> params) {
        params.put("dateFormat", "%Y-%m-%d %H:%i:%s");
        //查询传感器单位
        /*QueryWrapper<Sensor> queryWrapper = new QueryWrapper<>();
        queryWrapper.select("default_unit_key").eq("code", sensorCode);
        String defaultUnitKey = sensorService.getOne(queryWrapper).getDefaultUnitKey();
        QueryWrapper<SysDictData> sysDictDataQueryWrapper = new QueryWrapper<>();
        sysDictDataQueryWrapper.select("dataValue").eq("dict_type_id", 14).eq("dataKey", defaultUnitKey);
        String sensorUnit = sysDictDataService.getOne(sysDictDataQueryWrapper).getDataValue();
        params.put("sensorUnit", sensorUnit);*/
        Map<String, Object> userInfo = (Map<String, Object>) TokenUtils.getUserInfo();
        Map<String, Object> orgInfo = (Map<String, Object>) userInfo.get("organization");
        Integer orgId = (Integer) orgInfo.get("id");
screen-api/src/main/java/com/moral/api/service/impl/UserGroupServiceImpl.java
@@ -1,9 +1,6 @@
package com.moral.api.service.impl;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.moral.api.entity.UserGroup;
@@ -20,10 +17,6 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
/**
 * <p>
@@ -51,11 +44,9 @@
    @Override
    @Transactional
    public void allotGroups(Map<String, Object> parameters) {
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        String token = request.getHeader("token");
        Object o = parameters.get("groupId");
        Integer userId = Integer.parseInt(parameters.get("userId").toString());
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfo();
        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
        UpdateWrapper<UserGroup> deleteWrapper = new UpdateWrapper<>();
@@ -74,7 +65,7 @@
            //日志
            String account = userMapper.selectById((Integer) parameters.get("userId")).getAccount();
            String content = "给用户:" + account + "分配了组:" + groupName;
            operationLogUtils.insertLog(request, content, Constants.UPDATE_OPERATE_TYPE);
            operationLogUtils.insertLog(content, Constants.UPDATE_OPERATE_TYPE);
        }
    }
}
screen-api/src/main/java/com/moral/api/service/impl/UserLogServiceImpl.java
@@ -10,14 +10,9 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import javax.servlet.http.HttpServletRequest;
/**
 * <p>
@@ -35,9 +30,7 @@
    @Override
    public Page<UserLog> selectLogs(Map<String, Object> parameters) {
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        String token = request.getHeader("token");
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfo();
        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
        Object orgId = orgInfo.get("id");
        QueryWrapper<UserLog> queryWrapper = new QueryWrapper<>();
screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
@@ -175,8 +175,8 @@
    }
    @Override
    public Map<String, Object> getUserInfo(String token) {
        Map<String, Object> userInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
    public Map<String, Object> getCurrentUserInfo() {
        Map<String, Object> userInfo = (Map<String, Object>) TokenUtils.getUserInfo();
        return userInfo;
    }
@@ -240,11 +240,9 @@
    @Override
    @Transactional
    public Map<String, Object> addUser(User user) {
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        String token = request.getHeader("token");
        Map<String, Object> result = new HashMap<>();
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfo();
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("account", user.getAccount()).eq("is_delete", Constants.NOT_DELETE);
@@ -306,7 +304,7 @@
        userMapper.insert(user);
        //日志
        String content = "添加了用户:" + user.getAccount();
        operationLogUtils.insertLog(request, content, Constants.INSERT_OPERATE_TYPE);
        operationLogUtils.insertLog(content, Constants.INSERT_OPERATE_TYPE);
        return result;
    }
@@ -328,21 +326,17 @@
            TokenUtils.destoryToken(userId.toString(), token);
        }
        //日志
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        String content = "删除了用户:" + user.getAccount();
        operationLogUtils.insertLog(request, content, Constants.DELETE_OPERATE_TYPE);
        operationLogUtils.insertLog(content, Constants.DELETE_OPERATE_TYPE);
    }
    @Override
    @Transactional
    public Map<String, Object> updateUser(User user) {
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        String token = request.getHeader("token");
        Map<String, Object> result = new HashMap<>();
        //更新的属性
        Map<String, Object> update = JSONObject.parseObject(JSON.toJSONString(user), Map.class);
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfo();
        User beforeUser = userMapper.selectById(user.getId());
        Map<String, Object> before = JSONObject.parseObject(JSON.toJSONString(beforeUser), Map.class);
        /*String account = beforeUser.getAccount();
@@ -423,16 +417,14 @@
                content.append(key).append(":").append(beforeValue).append("=>").append(afterValue).append(";");
            }
        }
        operationLogUtils.insertLog(request, content.toString(), Constants.UPDATE_OPERATE_TYPE);
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        operationLogUtils.insertLog(content.toString(), Constants.UPDATE_OPERATE_TYPE);
        return result;
    }
    @Override
    public Page<User> selectUsers(Map<String, Object> parameters) {
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        String token = request.getHeader("token");
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfo();
        Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("organization_id", orgInfo.get("id"))
screen-api/src/main/java/com/moral/api/utils/OperationLogUtils.java
@@ -3,12 +3,15 @@
import lombok.extern.slf4j.Slf4j;
import java.util.Map;
import java.util.Objects;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import com.moral.api.entity.UserLog;
import com.moral.api.service.UserLogService;
@@ -23,9 +26,9 @@
    private UserLogService userLogService;
    @Transactional
    public void insertLog(HttpServletRequest request, String content, String type) {
        String token = request.getHeader("token");
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
    public void insertLog(String content, String type) {
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfo();
        UserLog userLog = new UserLog();
        userLog.setType(type);
        userLog.setIp(WebUtils.getIpAddr(request));
screen-api/src/main/resources/mapper/SpecialDeviceHistoryMapper.xml
New file
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.moral.api.mapper.SpecialDeviceHistoryMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.moral.api.entity.SpecialDeviceHistory">
        <id column="id" property="id"/>
        <result column="name" property="name"/>
        <result column="mac" property="mac"/>
        <result column="operate_ids" property="operateIds"/>
        <result column="organization_id" property="organizationId"/>
        <result column="device_version_id" property="deviceVersionId"/>
        <result column="special_type" property="specialType"/>
        <result column="create_time" property="createTime"/>
        <result column="update_time" property="updateTime"/>
        <result column="is_delete" property="isDelete"/>
    </resultMap>
</mapper>
screen-common/src/main/java/com/moral/constant/Constants.java
@@ -209,5 +209,14 @@
     * */
    public static final String SENSOR_CODE_SPECIAL_BATCH = "a00000";
    /*
     * 字典表走航车设备类型
     * */
    public static final String SPECIAL_DEVICE_CAR = "0";
    /*
     * 字典表无人机设备类型
     * */
    public static final String SPECIAL_DEVICE_UAV = "1";
}
screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java
@@ -51,8 +51,7 @@
            Map<String, Object> data = JSON.parseObject(msg, Map.class);
            Object mac = data.get("mac");
            Object time = data.get("DataTime");
            Object ver = data.get("ver");
            if (ObjectUtils.isEmpty(ver) || ObjectUtils.isEmpty(time) || ObjectUtils.isEmpty(mac)) {
            if (ObjectUtils.isEmpty(time) || ObjectUtils.isEmpty(mac)) {
                log.warn("some properties is null, param{}", msg);
                ack.acknowledge();
                return;
@@ -91,8 +90,7 @@
            Map<String, Object> data = JSON.parseObject(msg, Map.class);
            Object mac = data.get("mac");
            Object time = data.get("DataTime");
            Object ver = data.get("ver");
            if (ObjectUtils.isEmpty(ver) || ObjectUtils.isEmpty(time) || ObjectUtils.isEmpty(mac)) {
            if (ObjectUtils.isEmpty(time) || ObjectUtils.isEmpty(mac)) {
                log.warn("some properties is null, param{}", msg);
                ack.acknowledge();
                return;
@@ -131,15 +129,13 @@
            Map<String, Object> data = JSON.parseObject(msg, Map.class);
            Object mac = data.get("mac");
            Object time = data.get("DataTime");
            Object ver = data.get("ver");
            if (ObjectUtils.isEmpty(ver) || ObjectUtils.isEmpty(time) || ObjectUtils.isEmpty(mac)) {
            if (ObjectUtils.isEmpty(time) || ObjectUtils.isEmpty(mac)) {
                log.warn("some properties is null, param{}", msg);
                return;
            }
            //数据过滤
            data.remove("time");
            data.remove("entryTime");
            data.remove("ver");
            //数据校准
            data = deviceService.adjustDeviceData(data);
@@ -160,8 +156,7 @@
            Map<String, Object> data = JSON.parseObject(msg, Map.class);
            Object mac = data.get("mac");
            Object time = data.get("DataTime");
            Object ver = data.get("ver");
            if (ObjectUtils.isEmpty(ver) || ObjectUtils.isEmpty(time) || ObjectUtils.isEmpty(mac)) {
            if (ObjectUtils.isEmpty(time) || ObjectUtils.isEmpty(mac)) {
                log.warn("some properties is null, param{}", msg);
                ack.acknowledge();
                return;
@@ -170,7 +165,6 @@
            //数据过滤
            data.remove("time");
            data.remove("entryTime");
            data.remove("ver");
            historySecondSpecialService.insertHistorySecond(data);
            ack.acknowledge();
screen-manage/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java
@@ -7,9 +7,11 @@
import com.moral.api.service.HistoryHourlyService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.constant.Constants;
import com.moral.constant.RedisConstants;
import com.moral.util.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -34,13 +36,19 @@
    @Autowired
    private DeviceService deviceService;
    @Autowired
    private RedisTemplate redisTemplate;
    @Override
    @Transactional
    public void insertHistoryHourly(Map<String, Object> data) {
        Integer version = (Integer) data.remove("ver");
        Map<String, Object> dataAdjust = new HashMap<>(data);
        String mac = data.remove("mac").toString();
        //根据mac获取型号
        Map<String, Object> deviceInfo = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstants.DEVICE, mac);
        Map<String, Object> versionInfo = (Map<String, Object>) deviceInfo.get("version");
        Integer version = (Integer) versionInfo.get("id");
        Map<String, Object> dataAdjust = new HashMap<>(data);
        Date time = DateUtils.getDate((String) data.remove("DataTime"), DateUtils.yyyyMMddHHmmss_EN);
        Map<String, Object> result = new HashMap<>();
screen-manage/src/main/java/com/moral/api/service/impl/HistoryMinutelyServiceImpl.java
@@ -1,6 +1,7 @@
package com.moral.api.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -13,6 +14,7 @@
import com.moral.api.service.DeviceService;
import com.moral.api.service.HistoryMinutelyService;
import com.moral.constant.Constants;
import com.moral.constant.RedisConstants;
import com.moral.util.DateUtils;
@Service
@@ -24,18 +26,22 @@
    @Autowired
    private DeviceService deviceService;
    @Autowired
    private RedisTemplate redisTemplate;
    @Override
    @Transactional
    public void insertHistoryMinutely(Map<String, Object> data) {
        Map<String, Object> result = new HashMap<>();
        Object ver = data.remove("ver");
        Map<String, Object> dataAdjust = new HashMap<>(data);
        Object mac = data.remove("mac");
        String mac = data.remove("mac").toString();
        //根据mac获取型号
        Map<String, Object> deviceInfo = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstants.DEVICE, mac);
        Map<String, Object> versionInfo = (Map<String, Object>) deviceInfo.get("version");
        Integer version = (Integer) versionInfo.get("id");
        result.put("mac", mac);
        result.put("version", ver);
        result.put("version", version);
        Date time = DateUtils.getDate((String) data.remove("DataTime"), DateUtils.yyyyMMddHHmmss_EN);
        result.put("time", time);