kaiyu
2021-09-08 f183af46a77eb7049a15e379eece4adbb59a9738
screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java
@@ -2,26 +2,22 @@
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.util.DateUtils;
import com.moral.util.GeodesyUtils;
import com.moral.util.TokenUtils;
import org.springframework.beans.factory.annotation.Autowired;
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;
@@ -40,34 +36,50 @@
    private HistorySecondSpecialMapper historySecondSpecialMapper;
    @Autowired
    private SensorService sensorService;
    @Autowired
    private SysDictDataService sysDictDataService;
    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");
        params.put("orgId", orgId);
        //从秒数据表获取走航车数据
        List<Map<String, Object>> data = historySecondSpecialMapper.getSpecialDeviceData(params);
        if (ObjectUtils.isEmpty(data)) {
            return data;
        }
        data.removeIf(o -> {
            //经度
            double lng = Double.parseDouble(o.get(Constants.SENSOR_CODE_LON).toString());
            //纬度
            double lat = Double.parseDouble(o.get(Constants.SENSOR_CODE_LAT).toString());
            return lng < 70 || lng > 150 || lat > 60 || lat < 20;
            Map<String, Object> value = JSONObject.parseObject(o.remove("value").toString(), Map.class);
            Object flylon = value.get("flylon");
            Object flylat = value.get("flylat");
            if (ObjectUtils.isEmpty(flylon) || ObjectUtils.isEmpty(flylat)) {
                return true;
            }
            double lon = Double.parseDouble(flylon.toString());
            double lat = Double.parseDouble(flylat.toString());
            if (lon < 70 || lon > 150 || lat < 20 || lat > 60) {
                return true;
            }
            o.putAll(value);
            return false;
        });
        return filterData(data);
    }