kaiyu
2021-09-14 0aed1c0e6a91207c15fa34f49a7dfa9b6e2b64c5
screen-api
实时界面对数据进行保留小数位并且取整
6 files added
18 files modified
565 ■■■■ changed files
screen-api/src/main/java/com/moral/api/controller/CruiserController.java 18 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/entity/HistoryHourly.java 47 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/entity/HistorySecondCruiser.java 55 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java 5 ●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/mapper/HistorySecondCruiserMapper.java 21 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/HistorySecondCruiserService.java 16 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/SpecialDeviceService.java 11 ●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/impl/HistorySecondCruiserServiceImpl.java 20 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/impl/HistorySecondUavServiceImpl.java 2 ●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java 37 ●●●●● patch | view | raw | blame | history
screen-api/src/main/resources/mapper/HistorySecondCruiserMapper.xml 23 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/controller/DeviceController.java 3 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/controller/GovMonitorPoionController.java 65 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/controller/TestController.java 57 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/entity/Device.java 5 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/entity/GovMonitorPoint.java 1 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/entity/SpecialDevice.java 5 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/entity/SpecialDeviceHistory.java 5 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/pojo/vo/device/DeviceVO.java 6 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/GovMonitorPointService.java 4 ●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java 11 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/GovMonitorPointServiceImpl.java 119 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java 18 ●●●●● patch | view | raw | blame | history
screen-manage/src/main/resources/mapper/DeviceMapper.xml 11 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/controller/CruiserController.java
@@ -43,6 +43,24 @@
    }
    /**
     * @param mac 设备mac
     * @return 返回请求成功后的对象信息
     */
    @GetMapping("getDates")
    @ApiOperation(value = "获取有走航数据的日期", notes = "获取有走航数据的日期")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String"),
            @ApiImplicitParam(name = "mac", value = "设备mac", required = true, paramType = "query", dataType = "String")
    })
    public ResultMessage getDates(String mac) {
        if (ObjectUtils.isEmpty(mac)) {
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        }
        List<String> response = specialDeviceService.getDatesByMac(mac);
        return ResultMessage.ok(response);
    }
    /**
     * @param request 请求信息
     * @return 返回请求成功后的对象信息
     */
screen-api/src/main/java/com/moral/api/entity/HistoryHourly.java
New file
@@ -0,0 +1,47 @@
package com.moral.api.entity;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
 * @ClassName HistoryHourly
 * @Description TODO
 * @Author 陈凯裕
 * @Date 2021/9/14 8:53
 * @Version TODO
 **/
@Data
public class HistoryHourly extends Model<HistoryHourly> {
    private static final long serialVersionUID = 1L;
    /**
     * 设备mac
     */
    private String mac;
    /**
     * 时间
     */
    private Date time;
    /**
     * 数据
     */
    private String value;
    /*
    * 版本号
    * */
    private Integer version;
    @Override
    protected Serializable pkVal() {
        return null;
    }
}
screen-api/src/main/java/com/moral/api/entity/HistorySecondCruiser.java
New file
@@ -0,0 +1,55 @@
package com.moral.api.entity;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * <p>
 * 走航车秒数据表
 * </p>
 *
 * @author moral
 * @since 2021-09-13
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class HistorySecondCruiser extends Model<HistorySecondCruiser> {
    private static final long serialVersionUID = 1L;
    /**
     * 设备mac
     */
    private String mac;
    /**
     * 数据时间
     */
    private Date time;
    /**
     * 数据
     */
    private String value;
    /**
     * 此数据所属组织id
     */
    private Integer organizationId;
    /**
     * 数据批次
     */
    private Date batch;
    @Override
    protected Serializable pkVal() {
        return null;
    }
}
screen-api/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java
@@ -1,5 +1,8 @@
package com.moral.api.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.moral.api.entity.HistoryHourly;
import java.util.Map;
/**
@@ -10,7 +13,7 @@
 * @author moral
 * @since 2021-07-14
 */
public interface HistoryHourlyMapper{
public interface HistoryHourlyMapper extends BaseMapper<HistoryHourly> {
    String selectHourlyData(Map<String,Object> params);
screen-api/src/main/java/com/moral/api/mapper/HistorySecondCruiserMapper.java
New file
@@ -0,0 +1,21 @@
package com.moral.api.mapper;
import java.util.List;
import java.util.Map;
import com.moral.api.entity.HistorySecondCruiser;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 走航车秒数据表 Mapper 接口
 * </p>
 *
 * @author moral
 * @since 2021-09-13
 */
public interface HistorySecondCruiserMapper extends BaseMapper<HistorySecondCruiser> {
    List<String> getDates(Map<String,Object> params);
}
screen-api/src/main/java/com/moral/api/service/HistorySecondCruiserService.java
New file
@@ -0,0 +1,16 @@
package com.moral.api.service;
import com.moral.api.entity.HistorySecondCruiser;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 走航车秒数据表 服务类
 * </p>
 *
 * @author moral
 * @since 2021-09-13
 */
public interface HistorySecondCruiserService extends IService<HistorySecondCruiser> {
}
screen-api/src/main/java/com/moral/api/service/SpecialDeviceService.java
@@ -31,13 +31,8 @@
            */
    SpecialDevice getSpecialDeviceMapByMac(String mac);
    /**
    * @Description: 根据mac号获取无人机对象
            * @Param: [mac]
            * @return: com.moral.api.entity.SpecialDevice
            * @Author: 陈凯裕
            * @Date: 2021/9/8
            */
    SpecialDevice getSpecialDeviceByMac(String mac);
    //获取半年内有数据的走航日期
    List<String> getDatesByMac(String mac);
}
screen-api/src/main/java/com/moral/api/service/impl/HistorySecondCruiserServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.moral.api.service.impl;
import com.moral.api.entity.HistorySecondCruiser;
import com.moral.api.mapper.HistorySecondCruiserMapper;
import com.moral.api.service.HistorySecondCruiserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 走航车秒数据表 服务实现类
 * </p>
 *
 * @author moral
 * @since 2021-09-13
 */
@Service
public class HistorySecondCruiserServiceImpl extends ServiceImpl<HistorySecondCruiserMapper, HistorySecondCruiser> implements HistorySecondCruiserService {
}
screen-api/src/main/java/com/moral/api/service/impl/HistorySecondUavServiceImpl.java
@@ -146,7 +146,7 @@
            //获取时间段与batch
            value.forEach(listValue -> {
                listValue.forEach((mKey, mValue) -> {
                    Date slotStartDate = mValue.get(0).getTime();
                    Date slotStartDate = mValue.    get(0).getTime();
                    Date slotEndDate = mValue.get(mValue.size() - 1).getTime();
                    Map<String, Object> dateMap = new HashMap<>();
                    dateMap.put("startTime", slotStartDate);
screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java
@@ -2,10 +2,9 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.moral.api.entity.HistorySecondSpecial;
import com.moral.api.entity.Organization;
import com.moral.api.entity.SpecialDevice;
import com.moral.api.entity.SpecialDeviceHistory;
import com.moral.api.mapper.HistorySecondCruiserMapper;
import com.moral.api.mapper.HistorySecondSpecialMapper;
import com.moral.api.mapper.SpecialDeviceMapper;
import com.moral.api.service.OrganizationService;
@@ -14,6 +13,7 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
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;
@@ -23,6 +23,8 @@
import org.springframework.util.ObjectUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -48,6 +50,10 @@
    @Autowired
    SpecialDeviceMapper specialDeviceMapper;
    @Autowired
    private HistorySecondCruiserMapper historySecondCruiserMapper;
    @Autowired
    RedisTemplate redisTemplate;
@@ -97,22 +103,27 @@
        return filterData(data);
    }
    @Override
    public SpecialDevice getSpecialDeviceMapByMac(String mac) {
        //从缓存中获取
        QueryWrapper<SpecialDevice> wrapper = new QueryWrapper<>();
        wrapper.eq("mac",mac);
        wrapper.eq("is_delete",Constants.NOT_DELETE);
       return specialDeviceMapper.selectOne(wrapper);
        wrapper.eq("mac", mac);
        wrapper.eq("is_delete", Constants.NOT_DELETE);
        return specialDeviceMapper.selectOne(wrapper);
    }
    @Override
    public SpecialDevice getSpecialDeviceByMac(String mac) {
        QueryWrapper<SpecialDevice> queryWrapper = new QueryWrapper();
        queryWrapper.eq("mac",mac);
        queryWrapper.eq("is_delete",Constants.NOT_DELETE);
        SpecialDevice specialDevice = specialDeviceMapper.selectOne(queryWrapper);
        return specialDevice;
    public List<String> getDatesByMac(String mac) {
        Map<String, Object> userInfo = (Map) TokenUtils.getUserInfo();
        Map<String, Object> orgInfo = (Map) userInfo.get("organization");
        Integer orgId = (Integer) orgInfo.get("id");
        Map<String, Object> params = new HashMap<>();
        params.put("orgId", orgId);
        params.put("mac", mac);
        Date start = DateUtils.addMonths(new Date(), -6);
        params.put("start", DateUtils.dateToDateString(start));
        return historySecondCruiserMapper.getDates(params);
    }
screen-api/src/main/resources/mapper/HistorySecondCruiserMapper.xml
New file
@@ -0,0 +1,23 @@
<?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.HistorySecondCruiserMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.moral.api.entity.HistorySecondCruiser">
        <result column="mac" property="mac"/>
        <result column="time" property="time"/>
        <result column="value" property="value"/>
        <result column="organization_id" property="organizationId"/>
        <result column="batch" property="batch"/>
    </resultMap>
    <select id="getDates" resultType="java.lang.String">
        SELECT DISTINCT DATE_FORMAT(`time`,'%Y-%m-%d') `time`
        FROM history_second_cruiser
        WHERE mac = #{mac}
        AND organization_id = #{orgId}
        AND `time` <![CDATA[>=]]> #{start}
        ORDER BY `time`
    </select>
</mapper>
screen-manage/src/main/java/com/moral/api/controller/DeviceController.java
@@ -6,6 +6,7 @@
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@@ -54,7 +55,7 @@
        String mac = device.getMac();
        Integer monitorPointId = device.getMonitorPointId();
        Integer versionId = device.getDeviceVersionId();
        if (name == null || mac == null || monitorPointId == null || versionId == null) {
        if (ObjectUtils.isEmpty(name) || ObjectUtils.isEmpty(mac) || ObjectUtils.isEmpty(monitorPointId) || ObjectUtils.isEmpty(versionId)) {
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        }
screen-manage/src/main/java/com/moral/api/controller/GovMonitorPoionController.java
@@ -9,12 +9,17 @@
import com.moral.constant.ResponseCodeEnum;
import com.moral.constant.ResultMessage;
import com.moral.util.WebUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
@@ -39,31 +44,31 @@
    @RequestMapping(value = "getGovMonitorPointByCondition", method = RequestMethod.GET)
    @ResponseBody
    public ResultMessage getSpecialDeviceByCondition(HttpServletRequest request) {
        Map<String,Object> parameters = WebUtils.getParametersStartingWith(request,null);
        Map<String,Object> resultMap = govMonitorPointService.getDataByCondition(parameters);
        if (!resultMap.containsKey("code")){
        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
        Map<String, Object> resultMap = govMonitorPointService.getDataByCondition(parameters);
        if (!resultMap.containsKey("code")) {
            return ResultMessage.ok(resultMap);
        }
        return ResultMessage.fail(Integer.parseInt(resultMap.get("code").toString()),resultMap.get("msg").toString());
        return ResultMessage.fail(Integer.parseInt(resultMap.get("code").toString()), resultMap.get("msg").toString());
    }
    @RequestMapping(value = "insert", method = RequestMethod.POST)
    @ResponseBody
    public ResultMessage insert(@RequestBody GovMonitorPoint govMonitorPoint){
    public ResultMessage insert(@RequestBody GovMonitorPoint govMonitorPoint) {
        String guid = govMonitorPoint.getGuid();
        String name = govMonitorPoint.getName();
        double longitude = govMonitorPoint.getLongitude();
        double latitude = govMonitorPoint.getLatitude();
        String station_level = govMonitorPoint.getStationLevel();
        if (ObjectUtils.isEmpty(guid) && ObjectUtils.isEmpty(name) && ObjectUtils.isEmpty(longitude) && ObjectUtils.isEmpty(latitude) && ObjectUtils.isEmpty(station_level)){
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        if (ObjectUtils.isEmpty(guid) && ObjectUtils.isEmpty(name) && ObjectUtils.isEmpty(longitude) && ObjectUtils.isEmpty(latitude) && ObjectUtils.isEmpty(station_level)) {
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        }
        QueryWrapper<GovMonitorPoint> wrapper_govMonitorPoint = new QueryWrapper<>();
        wrapper_govMonitorPoint.eq("is_delete",Constants.NOT_DELETE);
        wrapper_govMonitorPoint.eq("guid",guid).or().eq("name",name);
        wrapper_govMonitorPoint.eq("is_delete", Constants.NOT_DELETE);
        wrapper_govMonitorPoint.eq("guid", guid).or().eq("name", name);
        List<GovMonitorPoint> govMonitorPoints = govMonitorPointMapper.selectList(wrapper_govMonitorPoint);
        if (govMonitorPoints.size()>0){
            return ResultMessage.fail(ResponseCodeEnum.MONITOR_POINT_IS_EXIST.getCode(),ResponseCodeEnum.MONITOR_POINT_IS_EXIST.getMsg());
        if (govMonitorPoints.size() > 0) {
            return ResultMessage.fail(ResponseCodeEnum.MONITOR_POINT_IS_EXIST.getCode(), ResponseCodeEnum.MONITOR_POINT_IS_EXIST.getMsg());
        }
        govMonitorPointService.insert(govMonitorPoint);
        return ResultMessage.ok();
@@ -71,17 +76,17 @@
    @RequestMapping(value = "update", method = RequestMethod.POST)
    @ResponseBody
    public ResultMessage update(@RequestBody GovMonitorPoint govMonitorPoint){
    public ResultMessage update(@RequestBody GovMonitorPoint govMonitorPoint) {
        int id = govMonitorPoint.getId();
        if (ObjectUtils.isEmpty(id)){
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        if (ObjectUtils.isEmpty(id)) {
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        }
        QueryWrapper<GovMonitorPoint> wrapper_govMonitorPoint = new QueryWrapper<>();
        wrapper_govMonitorPoint.eq("is_delete",Constants.NOT_DELETE);
        wrapper_govMonitorPoint.eq("id",id);
        wrapper_govMonitorPoint.eq("is_delete", Constants.NOT_DELETE);
        wrapper_govMonitorPoint.eq("id", id);
        List<GovMonitorPoint> govMonitorPoints = govMonitorPointMapper.selectList(wrapper_govMonitorPoint);
        if (govMonitorPoints.size()==0){
            return ResultMessage.fail(ResponseCodeEnum.MONITOR_POINT_IS_NOT_EXIST.getCode(),ResponseCodeEnum.MONITOR_POINT_IS_NOT_EXIST.getMsg());
        if (govMonitorPoints.size() == 0) {
            return ResultMessage.fail(ResponseCodeEnum.MONITOR_POINT_IS_NOT_EXIST.getCode(), ResponseCodeEnum.MONITOR_POINT_IS_NOT_EXIST.getMsg());
        }
        govMonitorPointService.update(govMonitorPoint);
        return ResultMessage.ok();
@@ -89,19 +94,29 @@
    @RequestMapping(value = "delete", method = RequestMethod.POST)
    @ResponseBody
    public ResultMessage delete(@RequestBody Map map){
    public ResultMessage delete(@RequestBody Map map) {
        int id = Integer.parseInt(map.get("id").toString());
        if (ObjectUtils.isEmpty(id)){
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        if (ObjectUtils.isEmpty(id)) {
            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        }
        QueryWrapper<GovMonitorPoint> wrapper_govMonitorPoint = new QueryWrapper<>();
        wrapper_govMonitorPoint.eq("is_delete",Constants.NOT_DELETE);
        wrapper_govMonitorPoint.eq("id",id);
        wrapper_govMonitorPoint.eq("is_delete", Constants.NOT_DELETE);
        wrapper_govMonitorPoint.eq("id", id);
        List<GovMonitorPoint> govMonitorPoints = govMonitorPointMapper.selectList(wrapper_govMonitorPoint);
        if (govMonitorPoints.size()==0){
            return ResultMessage.fail(ResponseCodeEnum.MONITOR_POINT_IS_NOT_EXIST.getCode(),ResponseCodeEnum.MONITOR_POINT_IS_NOT_EXIST.getMsg());
        if (govMonitorPoints.size() == 0) {
            return ResultMessage.fail(ResponseCodeEnum.MONITOR_POINT_IS_NOT_EXIST.getCode(), ResponseCodeEnum.MONITOR_POINT_IS_NOT_EXIST.getMsg());
        }
        govMonitorPointService.delete(id);
        return ResultMessage.ok();
    }
    @ApiOperation(value = "获取该区域下所有国控/省控/县控站点", notes = "获取该区域下所有国控/省控/县控站点")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
    })
    @GetMapping("govMonitorPoints")
    public ResultMessage selectGovMonitorPoints(String regionCode) {
        List<Map<String, Object>> response = govMonitorPointService.selectGovMonitorPoints(regionCode);
        return ResultMessage.ok(response);
    }
}
screen-manage/src/main/java/com/moral/api/controller/TestController.java
@@ -1,11 +1,15 @@
package com.moral.api.controller;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.moral.api.entity.Sensor;
import com.moral.api.entity.SysDictData;
import com.moral.api.entity.Test;
import com.moral.api.entity.UnitConversion;
import com.moral.api.mapper.SysDictDataMapper;
import com.moral.api.service.SensorService;
import com.moral.api.service.SysDictDataService;
import com.moral.api.service.TestService;
import com.moral.api.service.impl.SensorServiceImpl;
import com.moral.api.util.CacheUtils;
@@ -24,14 +28,21 @@
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.io.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
@Slf4j
@@ -48,6 +59,7 @@
    @Autowired
    RedisTemplate redisTemplate;
    /**
     * name   姓名
@@ -79,7 +91,7 @@
    @RequestMapping(value = "search/{page}/{size}", method = RequestMethod.GET)
    public ResultMessage findBypage(@PathVariable("page") Integer page, @PathVariable("size") Integer size) {
        log.info("page is:" + page + " size is:" + size);
        //log.info("page is:" + page + " size is:" + size);
        //根据条件分页查询
        Page<Test> userPage = testService.selectByPage(null, page, size);
        //封装分页返回对象
@@ -197,6 +209,8 @@
    @Autowired
    private SensorService sensorService;
    @Autowired
    SysDictDataMapper sysDictDataMapper;
    @ApiOperation(value = "因子测试", notes = "因子测试")
    @ApiImplicitParams({
@@ -213,9 +227,44 @@
    }
    @GetMapping("test")
    public void test(){
        List<UnitConversion> range = redisTemplate.opsForList().range(RedisConstants.UNIT_CONVERSION, 0, -1);
        System.out.println(range);
    public void test() throws IOException {
        BufferedReader br = new BufferedReader(new FileReader(new File("C:\\Users\\cdl\\Desktop\\alarmLevels.json")));
        StringBuilder sb = new StringBuilder();
        String line = br.readLine();
        while (line != null) {
            sb.append(line + "\r\n");
            line = br.readLine();
        }
        Map map = JSON.parseObject(sb.toString(), Map.class);
        System.out.println(map);
        Map<String,Object> sensorMap = (Map<String, Object>) map.get("alarmLevels");
        Set<String> sets = sensorMap.keySet();
        Map<String,String> alarmLevels = new HashMap<>();
        for (String set : sets) {
            Map<String,Object> map2 = (Map<String, Object>) sensorMap.get(set);
            String increment =  map2.get("increment").toString();
            alarmLevels.put(set,increment);
        }
        alarmLevels.remove("AQI");
        Map<String,Object> resultMap = new HashMap<>();
        Map<String, String> ecodeMap = testService.getMap();
        alarmLevels.forEach((key,value)->{
            resultMap.put(ecodeMap.get(key),value);
        });
        resultMap.forEach((key,value)->{
            SysDictData sysDictData = new SysDictData();
            sysDictData.setDataKey(key);
            sysDictData.setDataValue(value.toString());
            sysDictData.setDictTypeId(25);
            sysDictDataMapper.insert(sysDictData);
        });
    }
}
screen-manage/src/main/java/com/moral/api/entity/Device.java
@@ -78,6 +78,11 @@
    private Integer organizationId;
    /**
     * 国控站/省控站/县控站标示,与gov_monitor_point中guid对应
     */
    private String guid;
    /**
     * 设备型号id
     */
    private Integer deviceVersionId;
screen-manage/src/main/java/com/moral/api/entity/GovMonitorPoint.java
@@ -4,7 +4,6 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.Date;
screen-manage/src/main/java/com/moral/api/entity/SpecialDevice.java
@@ -42,6 +42,11 @@
    private String mac;
    /**
     * 政府站点id
     */
    private String guid;
    /**
     * 维护人id,多个逗号隔开,来源于manage_account
     */
    private String operateIds;
screen-manage/src/main/java/com/moral/api/entity/SpecialDeviceHistory.java
@@ -41,6 +41,11 @@
    private String mac;
    /**
     * 政府站点id
     */
    private String guid;
    /**
     * 维护人id,多个逗号隔开,来源于manage_account
     */
    private String operateIds;
screen-manage/src/main/java/com/moral/api/pojo/vo/device/DeviceVO.java
@@ -6,6 +6,7 @@
import java.util.List;
import com.moral.api.entity.Device;
import com.moral.api.entity.GovMonitorPoint;
import com.moral.api.entity.ManageAccount;
import com.moral.api.entity.MonitorPoint;
import com.moral.api.entity.Organization;
@@ -52,6 +53,11 @@
    private MonitorPoint monitorPoint;
    /*
     * 国控站点
     * */
    private GovMonitorPoint govMonitorPoint;
    /*
     * 维护人
     * */
    private List<ManageAccount> operators;
screen-manage/src/main/java/com/moral/api/service/GovMonitorPointService.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
/**
@@ -64,4 +65,7 @@
     **/
    GovMonitorPoint selectGovMonitorPointInfoById(int id);
    //获取区域下政府站点列表
    List<Map<String, Object>> selectGovMonitorPoints(String regionCode);
}
screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
@@ -12,6 +12,7 @@
import com.moral.api.service.DeviceService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.api.service.GovMonitorPointService;
import com.moral.api.service.SysDictDataService;
import com.moral.api.util.CacheUtils;
import com.moral.api.util.AdjustDataUtils;
@@ -391,6 +392,16 @@
        mpInfo.put("provinceCode", monitorPoint.getProvinceCode());
        deviceInfo.put("monitorPoint", mpInfo);
        //国控站点
        Map<String, Object> govMpInfo = new LinkedHashMap<>();
        govMpInfo.put("guid", null);
        govMpInfo.put("name", null);
        if (device.getGovMonitorPoint() != null) {
            govMpInfo.put("guid", device.getGovMonitorPoint().getGuid());
            govMpInfo.put("name", device.getGovMonitorPoint().getName());
        }
        deviceInfo.put("govMonitorPoint", govMpInfo);
        setDeviceInfoToRedis(mac, deviceInfo);
        return deviceInfo;
    }
screen-manage/src/main/java/com/moral/api/service/impl/GovMonitorPointServiceImpl.java
@@ -15,6 +15,8 @@
import com.moral.constant.Constants;
import com.moral.constant.RedisConstants;
import com.moral.constant.ResponseCodeEnum;
import com.moral.util.RegionCodeUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
@@ -23,13 +25,13 @@
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Field;
import java.text.SimpleDateFormat;
import java.util.*;
/**
 * <p>
 *  服务实现类
 * 服务实现类
 * </p>
 *
 * @author moral
@@ -73,71 +75,71 @@
    @Override
    public Map<String, Object> getDataByCondition(Map map) {
        Map<String,Object> resultMap = new HashMap<>();
        if (!map.containsKey("current")||!map.containsKey("size")){
            resultMap.put("code",ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode());
            resultMap.put("msg",ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        Map<String, Object> resultMap = new HashMap<>();
        if (!map.containsKey("current") || !map.containsKey("size")) {
            resultMap.put("code", ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode());
            resultMap.put("msg", ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
            return resultMap;
        }
        int current = Integer.parseInt(map.get("current").toString());
        int size = Integer.parseInt(map.get("size").toString());
        Page<GovMonitorPoint> page = new Page<>(current,size);
        Page<GovMonitorPoint> page = new Page<>(current, size);
        QueryWrapper<GovMonitorPoint> wrapper_Condition = new QueryWrapper<>();
        wrapper_Condition.eq("is_delete",Constants.NOT_DELETE);
        if (!ObjectUtils.isEmpty(map.get("name"))){
            wrapper_Condition.like("name",map.get("name").toString());
        wrapper_Condition.eq("is_delete", Constants.NOT_DELETE);
        if (!ObjectUtils.isEmpty(map.get("name"))) {
            wrapper_Condition.like("name", map.get("name").toString());
        }
        if (!ObjectUtils.isEmpty(map.get("stationLevel"))){
            wrapper_Condition.like("station_level",map.get("stationLevel").toString());
        if (!ObjectUtils.isEmpty(map.get("stationLevel"))) {
            wrapper_Condition.like("station_level", map.get("stationLevel").toString());
        }
        wrapper_Condition.orderByDesc("create_time");
        Page resultPage = govMonitorPointMapper.selectPage(page,wrapper_Condition);
        Page resultPage = govMonitorPointMapper.selectPage(page, wrapper_Condition);
        int totalNumber = govMonitorPointMapper.selectCount(wrapper_Condition);
        List<GovMonitorPoint> govMonitorPoints = resultPage.getRecords();
        SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        List<Map<String,Object>> govMonitorPointList = new ArrayList<>();
        for (GovMonitorPoint govMonitorPoint:govMonitorPoints) {
            Map govMonitorPointMap = JSON.parseObject(JSON.toJSONString(govMonitorPoint),Map.class);
        List<Map<String, Object>> govMonitorPointList = new ArrayList<>();
        for (GovMonitorPoint govMonitorPoint : govMonitorPoints) {
            Map govMonitorPointMap = JSON.parseObject(JSON.toJSONString(govMonitorPoint), Map.class);
            String createTime = SDF.format(govMonitorPoint.getCreateTime());
            String updateTime = SDF.format(govMonitorPoint.getUpdateTime());
            govMonitorPointMap.put("createTime",createTime);
            govMonitorPointMap.put("updateTime",updateTime);
            govMonitorPointMap.put("createTime", createTime);
            govMonitorPointMap.put("updateTime", updateTime);
            String position = "";
            if (!ObjectUtils.isEmpty(govMonitorPoint.getProvinceCode())){
            if (!ObjectUtils.isEmpty(govMonitorPoint.getProvinceCode())) {
                QueryWrapper<SysArea> wrapper_province = new QueryWrapper<>();
                wrapper_province.eq("area_code",govMonitorPoint.getProvinceCode());
                wrapper_province.eq("area_code", govMonitorPoint.getProvinceCode());
                SysArea sysArea_provice = sysAreaMapper.selectOne(wrapper_province);
                if (!ObjectUtils.isEmpty(sysArea_provice)){
                    position = position+sysArea_provice.getAreaName();
                    if (!ObjectUtils.isEmpty(govMonitorPoint.getCityCode())){
                if (!ObjectUtils.isEmpty(sysArea_provice)) {
                    position = position + sysArea_provice.getAreaName();
                    if (!ObjectUtils.isEmpty(govMonitorPoint.getCityCode())) {
                        QueryWrapper<SysArea> wrapper_city = new QueryWrapper<>();
                        wrapper_city.eq("area_code",govMonitorPoint.getCityCode());
                        wrapper_city.eq("area_code", govMonitorPoint.getCityCode());
                        SysArea sysArea_city = sysAreaMapper.selectOne(wrapper_city);
                        if (!ObjectUtils.isEmpty(sysArea_city)){
                            position = position+"/"+sysArea_city.getAreaName();
                            if (!ObjectUtils.isEmpty(govMonitorPoint.getAreaCode())){
                        if (!ObjectUtils.isEmpty(sysArea_city)) {
                            position = position + "/" + sysArea_city.getAreaName();
                            if (!ObjectUtils.isEmpty(govMonitorPoint.getAreaCode())) {
                                QueryWrapper<SysArea> wrapper_area = new QueryWrapper<>();
                                wrapper_area.eq("area_code",govMonitorPoint.getAreaCode());
                                wrapper_area.eq("area_code", govMonitorPoint.getAreaCode());
                                SysArea sysArea_area = sysAreaMapper.selectOne(wrapper_area);
                                if (!ObjectUtils.isEmpty(sysArea_area)){
                                    position = position+"/"+sysArea_area.getAreaName();
                                if (!ObjectUtils.isEmpty(sysArea_area)) {
                                    position = position + "/" + sysArea_area.getAreaName();
                                }
                            }
                        }
                    }
                }
            }
            govMonitorPointMap.put("position",position);
            govMonitorPointMap.put("position", position);
            govMonitorPointList.add(govMonitorPointMap);
        }
        resultMap.put("govMonitorPointList",govMonitorPointList);
        resultMap.put("totalNumber",totalNumber);
        resultMap.put("current",current);
        int totalPageNumber = totalNumber/size;
        if(totalNumber%size != 0){
        resultMap.put("govMonitorPointList", govMonitorPointList);
        resultMap.put("totalNumber", totalNumber);
        resultMap.put("current", current);
        int totalPageNumber = totalNumber / size;
        if (totalNumber % size != 0) {
            totalPageNumber += 1;
        }
        resultMap.put("totalPageNumber",totalPageNumber);
        resultMap.put("totalPageNumber", totalPageNumber);
        return resultMap;
    }
@@ -146,12 +148,12 @@
    public void insert(GovMonitorPoint govMonitorPoint) {
        int count = govMonitorPointMapper.insert(govMonitorPoint);
        //数据插入redis
        setGovMonitorPointInfoToRedis(govMonitorPoint.getId().toString(),selectGovMonitorPointInfoById(govMonitorPoint.getId()));
        if (count > 0){
        setGovMonitorPointInfoToRedis(govMonitorPoint.getId().toString(), selectGovMonitorPointInfoById(govMonitorPoint.getId()));
        if (count > 0) {
            //操作日志记录
            HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
            StringBuilder content = new StringBuilder();
            content.append("添加了政府站点:").append("id:").append(govMonitorPoint.getId()+";").append(govMonitorPoint.getName()+";").append(":").append("guid:").append(govMonitorPoint.getGuid()+";");
            content.append("添加了政府站点:").append("id:").append(govMonitorPoint.getId() + ";").append(govMonitorPoint.getName() + ";").append(":").append("guid:").append(govMonitorPoint.getGuid() + ";");
            logUtils.saveOperationForManage(request, content.toString(), Constants.INSERT_OPERATE_TYPE);
        }
    }
@@ -165,36 +167,36 @@
        //删除redis
        delGovMonitorPointInfoFromRedis(id.toString());
        //更新redis
        setGovMonitorPointInfoToRedis(id.toString(),selectGovMonitorPointInfoById(id));
        setGovMonitorPointInfoToRedis(id.toString(), selectGovMonitorPointInfoById(id));
        //操作日志记录
        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
        StringBuilder content = new StringBuilder();
        content.append("修改了政府站点:").append("id:").append(govMonitorPoint.getId()+";");
        if (!ObjectUtils.isEmpty(govMonitorPoint.getGuid())){
        content.append("修改了政府站点:").append("id:").append(govMonitorPoint.getId() + ";");
        if (!ObjectUtils.isEmpty(govMonitorPoint.getGuid())) {
            content.append("guid:").append(oldGovMonitorPoint.getGuid()).append("->").append(govMonitorPoint.getGuid()).append(";");
        }
        if (!ObjectUtils.isEmpty(govMonitorPoint.getName())){
        if (!ObjectUtils.isEmpty(govMonitorPoint.getName())) {
            content.append("name:").append(oldGovMonitorPoint.getName()).append("->").append(govMonitorPoint.getName()).append(";");
        }
        if (!ObjectUtils.isEmpty(govMonitorPoint.getLongitude())){
        if (!ObjectUtils.isEmpty(govMonitorPoint.getLongitude())) {
            content.append("longitude:").append(oldGovMonitorPoint.getLongitude()).append("->").append(govMonitorPoint.getLongitude()).append(";");
        }
        if (!ObjectUtils.isEmpty(govMonitorPoint.getLatitude())){
        if (!ObjectUtils.isEmpty(govMonitorPoint.getLatitude())) {
            content.append("latitude:").append(oldGovMonitorPoint.getLatitude()).append("->").append(govMonitorPoint.getLatitude()).append(";");
        }
        if (!ObjectUtils.isEmpty(govMonitorPoint.getProvinceCode())){
        if (!ObjectUtils.isEmpty(govMonitorPoint.getProvinceCode())) {
            content.append("provinceCode:").append(oldGovMonitorPoint.getProvinceCode()).append("->").append(govMonitorPoint.getProvinceCode()).append(";");
        }
        if (!ObjectUtils.isEmpty(govMonitorPoint.getCityCode())){
        if (!ObjectUtils.isEmpty(govMonitorPoint.getCityCode())) {
            content.append("cityCode:").append(oldGovMonitorPoint.getCityCode()).append("->").append(govMonitorPoint.getCityCode()).append(";");
        }
        if (!ObjectUtils.isEmpty(govMonitorPoint.getAreaCode())){
        if (!ObjectUtils.isEmpty(govMonitorPoint.getAreaCode())) {
            content.append("areaCode:").append(oldGovMonitorPoint.getAreaCode()).append("->").append(govMonitorPoint.getAreaCode()).append(";");
        }
        if (!ObjectUtils.isEmpty(govMonitorPoint.getStationLevel())){
        if (!ObjectUtils.isEmpty(govMonitorPoint.getStationLevel())) {
            content.append("stationLevel:").append(oldGovMonitorPoint.getStationLevel()).append("->").append(govMonitorPoint.getStationLevel()).append(";");
        }
        if (!ObjectUtils.isEmpty(govMonitorPoint.getDesc())){
        if (!ObjectUtils.isEmpty(govMonitorPoint.getDesc())) {
            content.append("desc:").append(oldGovMonitorPoint).append("->").append(govMonitorPoint.getDesc()).append(";");
        }
        logUtils.saveOperationForManage(request, content.toString(), Constants.UPDATE_OPERATE_TYPE);
@@ -203,8 +205,8 @@
    @Override
    public void delete(Integer id) {
        UpdateWrapper<GovMonitorPoint> wrapper_delete = new UpdateWrapper<>();
        wrapper_delete.eq("id",id).set("is_delete",Constants.DELETE);
        govMonitorPointMapper.update(null,wrapper_delete);
        wrapper_delete.eq("id", id).set("is_delete", Constants.DELETE);
        govMonitorPointMapper.update(null, wrapper_delete);
        //删除redis
        delGovMonitorPointInfoFromRedis(id.toString());
        //操作日志记录
@@ -219,4 +221,15 @@
        GovMonitorPoint govMonitorPoint = govMonitorPointMapper.selectById(id);
        return govMonitorPoint;
    }
    @Override
    public List<Map<String, Object>> selectGovMonitorPoints(String regionCode) {
        QueryWrapper<GovMonitorPoint> queryWrapper = new QueryWrapper<>();
        queryWrapper.select("guid", "name").eq("is_delete", Constants.NOT_DELETE);
        if (!ObjectUtils.isEmpty(regionCode)) {
            String regionName = RegionCodeUtils.regionCodeConvertToName(Integer.parseInt(regionCode));
            queryWrapper.eq(regionName, regionCode);
        }
        return govMonitorPointMapper.selectMaps(queryWrapper);
    }
}
screen-manage/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java
@@ -69,6 +69,9 @@
    @Autowired(required = false)
    private VersionSensorUnitMapper versionSensorUnitMapper;
    @Autowired(required = false)
    private GovMonitorPointMapper govMonitorPointMapper;
    @Autowired
    private LogUtils logUtils;
@@ -125,6 +128,20 @@
            String updateTime = SDF.format(specialDevice.getUpdateTime());
            specialDeviceMap.put("createTime",createTime);
            specialDeviceMap.put("updateTime",updateTime);
            Map<String,Object> govMonitorPointMap = new HashMap<>();
            if (!ObjectUtils.isEmpty(specialDevice.getGuid()) && specialDevice.getGuid()!=null && !"".equals(specialDevice.getGuid())){
                String  guid = specialDevice.getGuid().toString();
                QueryWrapper<GovMonitorPoint> wapper_govMonitorPoint = new QueryWrapper<>();
                wapper_govMonitorPoint.eq("is_delete",Constants.NOT_DELETE);
                wapper_govMonitorPoint.eq("guid",guid);
                GovMonitorPoint govMonitorPoint = govMonitorPointMapper.selectOne(wapper_govMonitorPoint);
                if (!ObjectUtils.isEmpty(govMonitorPoint)){
                    govMonitorPointMap.put("id",govMonitorPoint.getId());
                    govMonitorPointMap.put("guid",govMonitorPoint.getGuid());
                    govMonitorPointMap.put("name",govMonitorPoint.getName());
                }
            }
            specialDeviceMap.put("govMonitorPoint",govMonitorPointMap);
            List<Map<String,Object>> operateList = new ArrayList<>();
            if (!ObjectUtils.isEmpty(specialDevice.getOperateIds()) && specialDevice.getOperateIds()!=null){
                String operateIds = specialDevice.getOperateIds();
@@ -471,6 +488,7 @@
        specialDeviceInfo.put("name", specialDevice.getName());
        specialDeviceInfo.put("mac", specialDevice.getMac());
        specialDeviceInfo.put("createTime", DateUtils.dateToDateString(specialDevice.getCreateTime()));
        specialDeviceInfo.put("guid", specialDevice.getGuid());
        //扩展字段
        //specialDeviceInfo.put("extend", device.getExtend());
screen-manage/src/main/resources/mapper/DeviceMapper.xml
@@ -14,6 +14,7 @@
        <result column="operate_ids" property="operateIds"/>
        <result column="monitor_point_id" property="monitorPointId"/>
        <result column="organization_id" property="organizationId"/>
        <result column="guid" property="guid"/>
        <result column="device_version_id" property="deviceVersionId"/>
        <result column="profession" property="profession"/>
        <result column="tech" property="tech"/>
@@ -52,6 +53,12 @@
            <result column="mp_area_code" property="areaCode"/>
            <result column="mp_city_code" property="cityCode"/>
            <result column="mp_province_code" property="provinceCode"/>
        </association>
        <!--国控站点-->
        <association property="govMonitorPoint" javaType="com.moral.api.entity.GovMonitorPoint">
            <result column="gmp_guid" property="guid"/>
            <result column="gmp_name" property="name"/>
        </association>
        <!--型号-->
@@ -121,6 +128,8 @@
            mp.area_code mp_area_code,
            mp.city_code mp_city_code,
            mp.province_code mp_province_code,
            gmp.guid gmp_guid,
            gmp.name gmp_name,
            ma.id operate_id,
            v.id version_id,
            v.`name` version_name,
@@ -136,6 +145,8 @@
                           ON d.organization_id = o.id
                 LEFT JOIN `monitor_point` mp
                           ON mp.id = d.monitor_point_id
                 LEFT JOIN `gov_monitor_point` gmp
                           ON gmp.guid = d.guid
                 LEFT JOIN `manage_account` ma
                           ON FIND_IN_SET
                               (