cjl
2023-12-14 6992aaf0587c09f7c511c1afd12e1519d91363d3
screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java
@@ -3,32 +3,45 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.moral.api.config.Interceptor.UserHelper;
import com.moral.api.config.mybatis.MybatisPlusConfig;
import com.moral.api.entity.*;
import com.moral.api.mapper.DeviceMapper;
import com.moral.api.mapper.HistoryFiveMinutelyMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.api.mapper.HistoryHourlyMapper;
import com.moral.api.pojo.dto.Wind.WindData;
import com.moral.api.pojo.dto.historyFiveMinutely.DeviceAndFiveMinuteDataDTO;
import com.moral.api.pojo.enums.SysDictTypeEnum;
import com.moral.api.pojo.ext.wind.WindListExt;
import com.moral.api.pojo.form.device.MonitorPointQueryForm;
import com.moral.api.pojo.form.historyFiveMinutely.QueryDeviceAndFiveMinuteDataForm;
import com.moral.api.pojo.vo.historyFiveMinutely.QueryFiveDataByMacVO;
import com.moral.api.pojo.vo.user.QxUser;
import com.moral.api.service.DeviceService;
import com.moral.api.service.HistoryFiveMinutelyService;
import com.moral.api.service.MonitorPointService;
import com.moral.api.service.SysDictTypeService;
import com.moral.api.utils.UnitConvertUtils;
import com.moral.constant.Constants;
import com.moral.constant.RedisConstants;
import com.moral.constant.SeparateTableType;
import com.moral.util.DateUtils;
import com.moral.util.MybatisPLUSUtils;
import com.moral.util.RegionCodeUtils;
import io.lettuce.core.GeoCoordinates;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
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.text.DecimalFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
 * <p>
@@ -53,15 +66,32 @@
    HistoryHourlyMapper historyHourlyMapper;
    @Autowired
    DeviceService deviceService;
    @Autowired
    DeviceMapper deviceMapper;
    @Autowired
    private SysDictTypeService sysDictTypeService;
    @Override
    public List<DeviceAndFiveMinuteDataDTO> queryDeviceAndFiveMinuteData(QueryDeviceAndFiveMinuteDataForm form) {
    public List<Map<String, Object>> queryDeviceAndFiveMinuteData(QueryDeviceAndFiveMinuteDataForm form) {
        //取参
        String times = DateUtils.dateToDateString(new Date(),DateUtils.yyyyMM_EN);
        Integer organizationId = form.getOrganizationId();
        Integer regionCode = form.getRegionCode();
        String sensorCode = form.getSensorCode();
        String type = "$."+ sensorCode;
        String region = null;
        String endHourlyTime = null;
        if (regionCode != null && organizationId!=24) {
            region = RegionCodeUtils.regionCodeConvertToName(regionCode);
        }
        if (form.getChooseTime().equals("true")) {
            endHourlyTime = form.getTime();
            Date time = DateUtils.convertDate(endHourlyTime);
            times = DateUtils.dateToDateString(time,DateUtils.yyyyMM_EN);
        }
        List<Map<String, Object>> listAll = deviceMapper.deviceList(organizationId,regionCode,region,type,sensorCode,times,endHourlyTime);
        //查询组织在对应地区下的站点以及设备
        List<MonitorPoint> monitorPoints = monitorPointService.queryByOrgIdAndRegionCode(new MonitorPointQueryForm(organizationId, regionCode));
        /*List<MonitorPoint> monitorPoints = monitorPointService.queryByOrgIdAndRegionCode(new MonitorPointQueryForm(organizationId, regionCode));
        List<Device> devices = new ArrayList<>();
        for (MonitorPoint monitorPoint : monitorPoints) {
            List<Device> monitorPointDevices = monitorPoint.getDevices();
@@ -73,8 +103,9 @@
                }
            }
        }
        }*/
        //查询所有设备对应的数据
        /*List<Device> devices = new ArrayList<>();
        List<DeviceAndFiveMinuteDataDTO> dtos = new ArrayList<>();
        if (form.getChooseTime().equals("true")) {
            String time = form.getTime();
@@ -96,10 +127,12 @@
            }
            return dtos;
        }
        //List<Map<String, Object>> sensorValuess = (List<Map<String, Object>>) redisTemplate.opsForValue().multiGet(Arrays.asList("data_five_minutes:p5dnd7a0245400","data_five_minutes:p5dnd7a0245412"));
        for (Device device : devices) {
            DeviceAndFiveMinuteDataDTO dto = new DeviceAndFiveMinuteDataDTO();
            String mac = device.getMac();
            Map<String, Object> sensorValues = queryLastDataByMac(mac);
            String dbDataStr = JSON.toJSONString(sensorValues);
            sensorValues = JSON.parseObject(dbDataStr, HashMap.class);
            Map<String, Object> sensorValue = new HashMap<>();
@@ -110,8 +143,8 @@
            dto.setDevice(device);
            dto.setSensorValue(sensorValue);
            dtos.add(dto);
        }
        return dtos;
        }*/
        return listAll;
    }
    @Override
@@ -121,14 +154,12 @@
        //如果没有数据从数据库查询
        if (sensorValues != null)
            return sensorValues;
        QueryWrapper<HistoryFiveMinutely> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("mac", mac);
        queryWrapper.orderByDesc("time");
        queryWrapper.last("limit 0,1");
        Map<String, Object> mapParams = new HashMap<>();
        mapParams.put("mac",mac);
        //获取当月的表名
        Date date = new Date();
        List<String> tableNames = MybatisPLUSUtils.getTableNamesByWrapper(date, date, SeparateTableType.MONTH);
        List<HistoryFiveMinutely> datas = multiTableQuery(queryWrapper, tableNames);
        List<HistoryFiveMinutely> datas = multiTableQuery(mapParams, tableNames);
        if (ObjectUtils.isEmpty(datas))
            return null;
        HistoryFiveMinutely historyFiveMinutely = datas.get(0);
@@ -158,9 +189,23 @@
            //风场数据
            windData = historyFiveMinutelyMapper.getAreaWindData(params);
        }
        return getWindData(windData);
        return getWindData(windData,params);
    }
    @Override
    public List<Object> getAreaWindDataCenter(Map<String, Object> params) {
//        String timeUnits = DateUtils.dateToDateString(new Date(), DateUtils.yyyyMM_EN);
//        params.put("timeUnits", timeUnits);
//        //风场数据
//        List<WindData> windData = historyFiveMinutelyMapper.getAreaWindData(params);
//        return getWindData(windData);
        params.put("timeUnits","202311");
        params.put("time","2023-11-05 09:00");
        params.put("macs",Arrays.asList("p5dnd7a0245472","p5dnd7a0245400","p5dnd7a0245385","p5dnd7a0245374"));
        List<WindData> windData = historyHourlyMapper.getArea(params);
        params.put("perdlen",50);
        return getWindData(windData,params);
    }
    //获取五分钟弹窗数据
    @Override
@@ -181,6 +226,9 @@
            datas.put("dataTime", time);
        } else {
            datas = queryLastDataByMac(mac);
            if (ObjectUtils.isEmpty(datas)){
                return null;
            }
        }
        //构建返回对象
        Map<String, Object> result = new HashMap<>();
@@ -202,7 +250,12 @@
                data = data + " " + sensor.getShowUnit();
                result.put(sensor.getCode(), data);
            } else {
                result.put(sensor.getCode(), "-");
                if (sensor.getCode().equals("a01008") ||sensor.getCode().equals("a01007")){
                    result.put(sensor.getCode(), "-");
                }else {
                    result.put(sensor.getCode(), "0"+" "+sensor.getShowUnit());
                }
            }
        }
        //添加设备名称
@@ -211,6 +264,64 @@
        result.put("dataTime", datas.get("dataTime"));
        //排序
        return orderSixParam(result);
    }
    @Override
    public QueryFiveDataByMacVO queryFiveDataByMac(String mac, String chooseTime, String time) {
        Map<String, Object> datas = null;
        if (chooseTime.equals("true")) {
            String timeUnits = DateUtils.stringToDateString(time, "yyyy-MM-dd HH:mm", DateUtils.yyyyMM_EN);
            String dbDataStr = historyHourlyMapper.queryLastHourlyMac(mac, time, timeUnits);
            if (dbDataStr == null) {
                return null;
            }
            datas = JSON.parseObject(dbDataStr, HashMap.class);
            datas.put("dataTime", time);
        } else {
            datas = queryLastDataByMac(mac);
            if (ObjectUtils.isEmpty(datas)){
                return null;
            }
        }
        //构建返回对象
        Map<String, Object> result = new HashMap<>();
        //创建返回因子code集合
        List<String> sensorCodes = Arrays.asList("a34004", "a34002", "a21005", "a21004", "a21026", "a05024", "a99054", "a01008", "a01007");
        //获取设备信息
        Device device = deviceService.getDeviceUnitAlramInforByMac(mac);
        //转换数据单位和名称
        for (Sensor sensor : device.getVersion().getSensors()) {
            if (!sensorCodes.contains(sensor.getCode()))
                continue;
            Object dataO = datas.get(sensor.getCode());
            if (dataO != null) {
                String data = String.valueOf(dataO);
                result.put(sensor.getCode(), data);
            } else {
                if (sensor.getCode().equals("a01008") ||sensor.getCode().equals("a01007")){
                    result.put(sensor.getCode(), "-");
                }else {
                    result.put(sensor.getCode(), "0");
                }
            }
        }
        String str = new DecimalFormat("#.######").format(Double.parseDouble(result.get("a21005").toString()));
        QueryFiveDataByMacVO queryFiveDataByMacVO = new QueryFiveDataByMacVO();
        queryFiveDataByMacVO.setName(device.getName());
        queryFiveDataByMacVO.setDataTime(datas.get("dataTime").toString());
        queryFiveDataByMacVO.setA34004(result.get("a34004").toString());
        queryFiveDataByMacVO.setA34002(result.get("a34002").toString());
        queryFiveDataByMacVO.setA21026(result.get("a21026").toString());
        queryFiveDataByMacVO.setA21004(result.get("a21004").toString());
        queryFiveDataByMacVO.setA21005(str);
        queryFiveDataByMacVO.setA05024(result.get("a05024").toString());
        queryFiveDataByMacVO.setA01008(result.get("a01008").toString());
        queryFiveDataByMacVO.setA01007(result.get("a01007").toString());
        queryFiveDataByMacVO.setA99054(result.get("a99054").toString());
        return queryFiveDataByMacVO;
    }
    //对六参以及时间进行排序
@@ -283,22 +394,38 @@
        map.put("lat", Lat * 180 / Math.PI);
        return map;
    }
    private int windDate(String ids){
        int num = 200;
        if(StringUtils.isEmpty(ids)){
            return num;
        }
        List<Integer> list = Arrays.asList(ids.split(",")).stream().map(s->Integer.parseInt(s.trim())).collect(Collectors.toList());
        LambdaQueryChainWrapper<MonitorPoint> wrapper = monitorPointService.lambdaQuery();
        wrapper.in(MonitorPoint::getId,list);
        List<MonitorPoint> resultList = wrapper.list();
        if(CollectionUtils.isEmpty(resultList)){
            return num;
        }
        List<String> integerList = resultList.stream().map(s->s.getOrganizationId().toString()).collect(Collectors.toList());
        List<SysDictData> sysDictList = sysDictTypeService.listWindAll(SysDictTypeEnum.WIND_FARM_SCOPE.value,integerList);
        if(CollectionUtils.isEmpty(sysDictList)){
            return num;
        }
        num = sysDictList.stream().mapToInt(s->Integer.parseInt(s.getDataValue())).max().getAsInt();
        return num;
    }
    public List<Object> getWindData(List<WindData> windData) {
    public List<Object> getWindData(List<WindData> windData,Map<String, Object> params) {
        List<GeoCoordinates> points = new ArrayList<>();
        int length = 2000;
        int perdlen = 200;
        Double loma = 0d;
        Double lomi = 0d;
        Double lama = 0d;
        Double lami = 0d;
        List<Double> loList = new ArrayList<>();
        List<Double> laList = new ArrayList<>();
        List<Map<String, Object>> mapList = new ArrayList<>();
        Double U;
        Double V;
        //结果集
        List<Object> list = new ArrayList<>();
        List<Map<String, Object>> mapList = new ArrayList<>();
        for (WindData data : windData) {
            //经度
            Double longitude = data.getLongitude();
@@ -327,6 +454,7 @@
            map.put("la", latitude);
            map.put("U", U);
            map.put("V", V);
            map.put("mac", data.getMac());
            mapList.add(map);
        }
@@ -347,43 +475,51 @@
        laLaMap.put("maxLa", lama);
        laLaMap.put("minLa", lami);
        //Double lo1 = lomi - length * 0.00001141;
       Double lo1 = lomi - length * 0.000001141 * 2;
        //Double lo2 = loma + length * 0.00001141;
       Double lo2 = loma + length * 0.000001141 * 2;
       Double la2 = lami - length * 0.000000899 * 2;
        //Double la2 = lami - length * 0.00000899;
        Double la1 = lama + length * 0.000000899 * 2;
        //Double la1 = lama + length * 0.00000899;
        //double dx = 0.00001141 * perdlen;
        //double dy = 0.00000899 * perdlen;
        int perdlen = Objects.nonNull(params.get("perdlen"))?Integer.parseInt(params.get("perdlen").toString()):windDate(Objects.nonNull(params.get("monitorPointList"))?params.get("monitorPointList").toString():null);
        int length = perdlen*10;
       double dx = 0.000001141 * perdlen * 2;
       double dy = 0.000000899 * perdlen * 2;
        Double lo1 = lomi - length * 0.00001141;
       //Double lo1 = lomi - length * 0.000001141 * 2;
        Double lo2 = loma + length * 0.00001141;
       //Double lo2 = loma + length * 0.000001141 * 2;
       //Double la2 = lami - length * 0.000000899 * 2;
        Double la2 = lami - length * 0.00000899;
        //Double la1 = lama + length * 0.000000899 * 2;
        Double la1 = lama + length * 0.00000899;
        double dx = 0.00001141 * perdlen;
        double dy = 0.00000899 * perdlen;
       //double dx = 0.000001141 * perdlen * 2;
       //double dy = 0.000000899 * perdlen * 2;
        int nx = (int) Math.floor((lo2 - lo1) / dx);
        int ny = (int) Math.floor((la1 - la2) / dy);
        int nums = Objects.nonNull(nx*ny)?nx*ny+100:100;
        List<Double> uList = new ArrayList<>(nums);
        List<Double> vList = new ArrayList<>(nums);
        List<Double> uList = new ArrayList<>();
        List<Double> vList = new ArrayList<>();
        for (int j = 0; j < nx * ny; j++) {
            uList.add(0.0);
            vList.add(0.0);
        }
        int x;
        int y;
        for (int i = 0; i < mapList.size(); i++) {
            Double lo = (Double) mapList.get(i).get("lo");
            Double la = (Double) mapList.get(i).get("la");
            x = (int) Math.floor((lo - lo1) / dx);
            y = Math.abs((int) Math.floor((la - la1) / dy));
            U = (Double) mapList.get(i).get("U");
            V = (Double) mapList.get(i).get("V");
            if (i == 0) {
                for (int j = 0; j < nx * ny; j++) {
                    uList.add(0.0);
                    vList.add(0.0);
                }
            }
            // 微动风场
           /* WindListExt windListExt = getWindList(mapList.get(i),loList,laList,500,50);
            if(Objects.nonNull(windListExt)&&Objects.nonNull(windListExt.getUValue()) ){
                U = windListExt.getUValue();
                V = windListExt.getVValue();
            }*/
            for (int j = 0; j < nx * ny; j++) {
                if (i == 0) {
                    if ((y >= 2 && j == (y) * nx + x)) {
@@ -421,7 +557,21 @@
                }
            }
        }
        /*WindListExt windList = getWindList(length,perdlen,params);
        for(int i =0; i< windList.getUList().size(); i++){
            Double d = windList.getUList().get(i);
            if(Objects.nonNull(d)&& (!d.equals(0d))){
                uList.set(i,d);
            }
        }
        for(int i =0; i< windList.getVList().size(); i++){
            Double d = windList.getVList().get(i);
            if(Objects.nonNull(d)&& (!d.equals(0d))){
                vList.set(i,d);
            }
        }*/
        /*//结果集
        List<Object> list = new ArrayList<>();
        String uData = "\"" + "data" + "\"" + ": " + uList;
        String vData = "\"" + "data" + "\"" + ": " + vList;
@@ -439,12 +589,181 @@
        String s1 = "[" + "{" + header1 + ", " + uData + "}" + ", " + "{" + header2 + ", " + vData + "}" + "]";
        //System.out.println(s1);
        JSONArray jsonArray = JSONArray.parseArray(s1);
        list.add(jsonArray);
        list.add(centerPoint.get("lng"));
        list.add(centerPoint.get("lat"));
        list.add(laLaMap);
        list.add(laLaMap);*/
        Map<String,Object> map = new HashMap<>();
        map.put("uList",uList);
        map.put("vList",vList);
        map.put("dx",dx);
        map.put("dy",dy);
        map.put("nx",nx);
        map.put("ny",ny);
        map.put("la1",la1);
        map.put("la2",la2);
        map.put("lo1",lo1);
        map.put("lo2",lo2);
        map.put("laLaMap",laLaMap);
        return getWindData(map,centerPoint);
    }
    private WindListExt getWindList(int length,int perdlen,Map<String, Object> params){
        params.put("time","2023-10-16 04:00");
        String time = params.get("time").toString();
        String timeUnits = DateUtils.stringToDateString(time, "yyyy-MM-dd HH:mm", DateUtils.yyyyMM_EN);
        params.put("timeUnits", timeUnits);
        List<WindData> windData = historyHourlyMapper.getArea(params);
        WindListExt windListExt = new WindListExt();
        List<String> stringList = Arrays.asList("p5dnd7a0245400","p5dnd7a0245472","p5dnd7a0245374","p5dnd7a0245385");
        List<GeoCoordinates> points = new ArrayList<>();
        Double loma = 0d;
        Double lomi = 0d;
        Double lama = 0d;
        Double lami = 0d;
        List<Double> loList = new ArrayList<>();
        List<Double> laList = new ArrayList<>();
        List<Map<String, Object>> mapList = new ArrayList<>();
        Double U = 0d;
        Double V = 0d;
        for (WindData data : windData) {
            //经度
            Double longitude = data.getLongitude();
            //纬度
            Double latitude = data.getLatitude();
            GeoCoordinates geoCoordinates = GeoCoordinates.create(longitude, latitude);
            points.add(geoCoordinates);
            loList.add(longitude);
            laList.add(latitude);
            Map<String, Object> map = new HashMap<>();
            //风向
            Double windDir = data.getWindDir();
            //风速
            Double windSpeed = data.getWindSpeed();
            if (windDir == null) {
                windDir = 0d;
                windSpeed = 0d;
            }
            double dir = (360.0 - (windDir + 180.0) * Math.PI / 180.0);
            //余弦值
            U = windSpeed * Math.cos(dir);
            //三角正弦值
            V = windSpeed * Math.sin(dir);
            if(stringList.contains(data.getMac())){
                map.put("lo", longitude);
                map.put("la", latitude);
                map.put("U", U);
                map.put("V", V);
                map.put("mac", data.getMac());
                mapList.add(map);
            }
        }
        if (loList.size() > 0) {
            loma = Collections.max(loList);
            lomi = Collections.min(loList);
        }
        if (laList.size() > 0) {
            lama = Collections.max(laList);
            lami = Collections.min(laList);
        }
        Double lo1 = lomi - length * 0.00001141;
        Double lo2 = loma + length * 0.00001141;
        Double la2 = lami - length * 0.00000899;
        Double la1 = lama + length * 0.00000899;
        double dx = 0.00001141 * perdlen;
        double dy = 0.00000899 * perdlen;
        int nx = (int) Math.floor((lo2 - lo1) / dx);
        int ny = (int) Math.floor((la1 - la2) / dy);
        int nums = Objects.nonNull(nx*ny)?nx*ny+100:100;
        List<Double> uList = new ArrayList<>(nums);
        List<Double> vList = new ArrayList<>(nums);
        for (int j = 0; j < nx * ny; j++) {
            uList.add(0.0);
            vList.add(0.0);
        }
        int x;
        int y;
        for (int i = 0; i < mapList.size(); i++) {
            Double lo = (Double) mapList.get(i).get("lo");
            Double la = (Double) mapList.get(i).get("la");
            x = (int) Math.floor((lo - lo1) / dx);
            y = Math.abs((int) Math.floor((la - la1) / dy));
            U = (Double) mapList.get(i).get("U");
            V = (Double) mapList.get(i).get("V");
            for (int j = 0; j < nx * ny; j++) {
                if (i == 0) {
                    if ((y >= 2 && j == (y) * nx + x)) {
                        int k;
                        for (k = j - 2 * nx; k <= j + 2 * nx; k = k + nx) {
                            uList.set(k, U);
                            uList.set(k - 1, U);
                            uList.set(k - 2, U);
                            uList.set(k + 1, U);
                            uList.set(k + 2, U);
                            vList.set(k, V);
                            vList.set(k - 1, V);
                            vList.set(k - 2, V);
                            vList.set(k + 1, V);
                            vList.set(k + 2, V);
                        }
                    }
                } else {
                    if (y >= 1 && j == y * nx + x) {
                        int k;
                        for (k = j - 2 * nx; k <= j + 2 * nx; ) {
                            uList.set(k - 1, U);
                            uList.set(k - 2, U);
                            uList.set(k + 1, U);
                            uList.set(k + 2, U);
                            vList.set(k - 1, V);
                            vList.set(k - 2, V);
                            vList.set(k + 1, V);
                            vList.set(k + 2, V);
                            k = k + nx;
                        }
                        uList.set(j, U);
                        vList.set(j, V);
                    }
                }
            }
        }
        windListExt.setUList(uList);
        windListExt.setVList(vList);
        return windListExt;
    }
    private List<Object> getWindData(Map<String,Object> map, Map<String, Double> centerPoint){
        List<Object> list = new ArrayList<>();
        String uData = "\"" + "data" + "\"" + ": " + map.get("uList");
        String vData = "\"" + "data" + "\"" + ": " + map.get("vList");
        String header1 = "\"" + "header" + "\"" + ": " + "{" + "\"" + "parameterUnit" + "\"" + ": " + "\"" + "m/s" + "\"" + ", " + "\"" + "parameterNumber" + "\"" + ": " + 2 +
                ", " + "\"" + "dx" + "\"" + ": " + map.get("dx") + ", " + "\"" + "dy" + "\"" + ": " + map.get("dy") +
                ", " + "\"" + "parameterNumberName" + "\"" + ": " + "\"" + "eastward_wind" + "\"" + ", " + "\"" + "la1" + "\"" + ": " + map.get("la1") + ", " + "\"" + "la2" + "\"" + ": " + map.get("la2") +
                ", " + "\"" + "parameterCategory" + "\"" + ": " + 2 + ", " + "\"" + "lo1" + "\"" + ": " + map.get("lo1") + ", " + "\"" + "lo2" + "\"" + ": " + map.get("lo2") +
                ", " + "\"" + "nx" + "\"" + ": " + map.get("nx") + ", " + "\"" + "ny" + "\"" + ": " + map.get("ny") + ", " + "\"" + "refTime" + "\"" + ": " + "\"" + "2020-07-22 23:00:00" + "\"" + "}";
        String header2 = "\"" + "header" + "\"" + ": " + "{" + "\"" + "parameterUnit" + "\"" + ": " + "\"" + "m/s" + "\"" + ", " + "\"" + "parameterNumber" + "\"" + ": " + 3 +
                ", " + "\"" + "dx" + "\"" + ": " + map.get("dx") + ", " + "\"" + "dy" + "\"" + ": " + map.get("dy") +
                ", " + "\"" + "parameterNumberName" + "\"" + ": " + "\"" + "eastward_wind" + "\"" + ", " + "\"" + "la1" + "\"" + ": " + map.get("la1") + ", " + "\"" + "la2" + "\"" + ": " + map.get("la2") +
                ", " + "\"" + "parameterCategory" + "\"" + ": " + 2 + ", " + "\"" + "lo1" + "\"" + ": " + map.get("lo1") + ", " + "\"" + "lo2" + "\"" + ": " + map.get("lo2") +
                ", " + "\"" + "nx" + "\"" + ": " + map.get("nx") + ", " + "\"" + "ny" + "\"" + ": " + map.get("ny") + ", " + "\"" + "refTime" + "\"" + ": " + "\"" + "2020-07-22 23:00:00" + "\"" + "}";
        String s1 = "[" + "{" + header1 + ", " + uData + "}" + ", " + "{" + header2 + ", " + vData + "}" + "]";
        //System.out.println(s1);
        JSONArray jsonArray = JSONArray.parseArray(s1);
        list.add(jsonArray);
        list.add(centerPoint.get("lng"));
        list.add(centerPoint.get("lat"));
        list.add(map.get("laLaMap"));
        return list;
    }
@@ -456,11 +775,12 @@
     * @Date: 2021/9/23
     */
    public List<HistoryFiveMinutely> getValueByMacAndTime(String mac, Date startDate, Date endDate) {
        QueryWrapper<HistoryFiveMinutely> wrapper = new QueryWrapper<>();
        wrapper.eq("mac", mac);
        wrapper.between("time", startDate, endDate);
        Map<String, Object> mapParams = new HashMap<>();
        mapParams.put("startDate",startDate);
        mapParams.put("endDate",endDate);
        mapParams.put("mac",mac);
        List<String> tableNames = MybatisPLUSUtils.getTableNamesByWrapper(startDate, endDate, SeparateTableType.MONTH);
        List<HistoryFiveMinutely> datas = multiTableQuery(wrapper, tableNames);
        List<HistoryFiveMinutely> datas = multiTableQueryResult(mapParams, tableNames);
        return datas;
    }
@@ -472,14 +792,22 @@
     * @Author: 陈凯裕
     * @Date: 2021/9/23
     */
    private List<HistoryFiveMinutely> multiTableQuery(QueryWrapper<HistoryFiveMinutely> wrapper, List<String> tableNames) {
    private List<HistoryFiveMinutely> multiTableQuery(Map<String, Object> params, List<String> tableNames) {
        List<HistoryFiveMinutely> result = new ArrayList<>();
        for (String tableName : tableNames) {
            MybatisPlusConfig.tableName.set(tableName);
            List<HistoryFiveMinutely> datas = historyFiveMinutelyMapper.selectList(wrapper);
            params.put("table",tableName);
            List<HistoryFiveMinutely> datas = historyFiveMinutelyMapper.listResultOne(params);
            result.addAll(datas);
        }
        MybatisPlusConfig.tableName.remove();
        return result;
    }
    private List<HistoryFiveMinutely> multiTableQueryResult(Map<String, Object> params, List<String> tableNames) {
        List<HistoryFiveMinutely> result = new ArrayList<>();
        for (String tableName : tableNames) {
            params.put("table",tableName);
            List<HistoryFiveMinutely> datas = historyFiveMinutelyMapper.listResult(params);
            result.addAll(datas);
        }
        return result;
    }
}