bug修复

This commit is contained in:
guo 2024-02-02 16:01:20 +08:00
parent 603b368a04
commit b30d722d85
8 changed files with 57 additions and 30 deletions

View File

@ -94,10 +94,11 @@ public class AirQualityAnalysisController {
@ApiOperation(value = "查询天气-周", notes = "查询天气-周", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "cityid", value = "市区编码", paramType = "body", required = false, dataType = "String"),
@ApiImplicitParam(name = "areaId", value = "行政区域县区Id", paramType = "body", required = false, dataType = "String"),
})
@PostMapping(value = "/getWeatherData")
public Result<String> getWeatherData(@RequestBody Map<String, Object> map) {
return Result.success(airQualityAnalysisService.getWeatherData(MapUtils.getString(map, "cityid")));
return Result.success(airQualityAnalysisService.getWeatherData(map));
}
@ApiOperation(value = "查询天气实况", notes = "查询天气实况", httpMethod = "POST")

View File

@ -3,9 +3,7 @@ package com.zhgd.xmgl.modules.environment.service;
import com.zhgd.xmgl.modules.environment.entity.AirQualityAnalysis;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhgd.xmgl.modules.environment.entity.vo.AirQualityStatisticsVo;
import com.gexin.fastjson.JSONObject;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -23,7 +21,7 @@ public interface IAirQualityAnalysisService extends IService<AirQualityAnalysis>
void deleteProjectAirQualityAnalysis(String projectSn);
String getWeatherData(String cityid);
String getWeatherData(Map<String, Object> map);
Object getWeatherLiveData(String cityid);
}

View File

@ -1,11 +1,11 @@
package com.zhgd.xmgl.modules.environment.service.impl;
import com.gexin.fastjson.JSONObject;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zhgd.xmgl.modules.basicdata.entity.SystemAreas;
import com.zhgd.xmgl.modules.basicdata.entity.SystemCities;
import com.zhgd.xmgl.modules.basicdata.mapper.SystemAreasMapper;
import com.zhgd.xmgl.modules.basicdata.mapper.SystemCitiesMapper;
import com.zhgd.xmgl.modules.environment.entity.AirQualityAnalysis;
import com.zhgd.xmgl.modules.environment.entity.vo.AirQualityStatisticsVo;
@ -16,12 +16,12 @@ import com.zhgd.xmgl.modules.project.entity.Project;
import com.zhgd.xmgl.modules.project.mapper.ProjectMapper;
import com.zhgd.xmgl.util.AqiUtil;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Description: 空气质量分析
@ -39,6 +39,8 @@ public class AirQualityAnalysisServiceImpl extends ServiceImpl<AirQualityAnalysi
private DustNoiseDataMapper dustNoiseDataMapper;
@Autowired
private SystemCitiesMapper systemCitiesMapper;
@Autowired
private SystemAreasMapper systemAreasMapper;
@Override
@ -53,7 +55,7 @@ public class AirQualityAnalysisServiceImpl extends ServiceImpl<AirQualityAnalysi
value = AqiUtil.getPm25IAQI(value);
} else {
//没有数据时候查询项目所在天气的指标
value = AqiUtil.getWeatherInfo(project.getCityCode());
value = AqiUtil.getWeatherInfo(project.getAreaCode());
}
if (value != null) {
AirQualityAnalysis airQualityAnalysis = new AirQualityAnalysis();
@ -97,15 +99,28 @@ public class AirQualityAnalysisServiceImpl extends ServiceImpl<AirQualityAnalysi
}
@Override
public String getWeatherData(String cityid) {
QueryWrapper<SystemCities> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(SystemCities::getCityid, cityid);
SystemCities systemCities = systemCitiesMapper.selectOne(queryWrapper);
String weathercityid = null;
if (systemCities != null) {
weathercityid = systemCities.getWeathercityid();
public String getWeatherData(Map<String, Object> map) {
String areaId = MapUtils.getString(map, "areaId");
if (StringUtils.isNotBlank(areaId)) {
QueryWrapper<SystemAreas> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(SystemAreas::getAreaid, areaId);
SystemAreas systemCities = systemAreasMapper.selectOne(queryWrapper);
String weathercityid = null;
if (systemCities != null) {
weathercityid = systemCities.getWeathercityid();
}
return AqiUtil.getWeatherData(weathercityid);
} else {
String cityid = MapUtils.getString(map, "cityid");
QueryWrapper<SystemCities> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(SystemCities::getCityid, cityid);
SystemCities systemCities = systemCitiesMapper.selectOne(queryWrapper);
String weathercityid = null;
if (systemCities != null) {
weathercityid = systemCities.getWeathercityid();
}
return AqiUtil.getWeatherData(weathercityid);
}
return AqiUtil.getWeatherData(weathercityid);
}
@Override

View File

@ -161,7 +161,6 @@ public class SewageDataServiceImpl extends ServiceImpl<SewageDataMapper, SewageD
}
private void setAlarmStatus(SewageData sewageData, List<SewageAlarm> sewageAlarms) {
if (CollUtil.isNotEmpty(sewageAlarms)) {
Map<Integer, SewageAlarm> alarmMap = sewageAlarms.stream().filter(sewageAlarm -> Objects.equals(sewageAlarm.getAlarmType(), 2)).collect(Collectors.toMap(SewageAlarm::getSewageType, Function.identity(), (sewageAlarm, sewageAlarm2) -> sewageAlarm));
Map<Integer, SewageAlarm> warnMap = sewageAlarms.stream().filter(sewageAlarm -> Objects.equals(sewageAlarm.getAlarmType(), 1)).collect(Collectors.toMap(SewageAlarm::getSewageType, Function.identity(), (sewageAlarm, sewageAlarm2) -> sewageAlarm));
//
@ -221,7 +220,6 @@ public class SewageDataServiceImpl extends ServiceImpl<SewageDataMapper, SewageD
sewageData.setWaterLevelStatus(0);
}
}
}
private void insertAlarmIfLe(Double data, Double threshold, SewageDev dev, String c, Integer alarmType, SewageData sd, Integer sewageType) {

View File

@ -1,6 +1,8 @@
package com.zhgd.xmgl.modules.smartgrout.controller;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.xmgl.base.entity.vo.FlexibleBigScreenVo;
@ -17,12 +19,16 @@ import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**

View File

@ -53,10 +53,10 @@ public class SmokeDevAlarm implements Serializable {
@ApiModelProperty(value = "告警时间")
private java.util.Date alarmTime;
/**
* 设备状态0:报警恢复1:报警
* 设备状态 0报警恢复1表示报警 2表示心跳
*/
@Excel(name = "设备状态0:报警恢复1:报警", width = 15)
@ApiModelProperty(value = "设备状态0:报警恢复1:报警")
@Excel(name = "设备状态 0报警恢复1表示报警 2表示心跳", width = 15)
@ApiModelProperty(value = "设备状态 0报警恢复1表示报警 2表示心跳")
private java.lang.Integer deviceStatus;
@ApiModelProperty(value = "警情状态内容布防、撤防、SOS、盗警、交流电故障等")
private java.lang.String alarmDetailStatus;

View File

@ -185,7 +185,7 @@ public class ProjectTask {
value = AqiUtil.getPm25IAQI(value);
} else {
//没有数据时候查询项目所在天气的指标
value = AqiUtil.getWeatherInfo(project.getCityCode());
value = AqiUtil.getWeatherInfo(project.getAreaCode());
}
if (value != null) {
AirQualityAnalysis airQualityAnalysis = new AirQualityAnalysis();

View File

@ -1,11 +1,15 @@
package com.zhgd.xmgl.util;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.http.HttpException;
import cn.hutool.http.HttpUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.gexin.fastjson.JSON;
import com.gexin.fastjson.JSONObject;
import com.zhgd.redis.lock.RedisRepository;
import com.zhgd.xmgl.modules.basicdata.entity.SystemAreas;
import com.zhgd.xmgl.modules.basicdata.entity.SystemCities;
import com.zhgd.xmgl.modules.basicdata.mapper.SystemAreasMapper;
import com.zhgd.xmgl.modules.basicdata.mapper.SystemCitiesMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@ -31,6 +35,7 @@ import java.util.stream.Collectors;
@Component
public class AqiUtil {
private static SystemCitiesMapper systemCitiesMapper;
private static SystemAreasMapper systemAreasMapper;
private static RedisRepository redisRepository;
public static String SYSTEM_CITIES_KEY = "SYSTEM_CITIES";
public static String WEATHER_DATA = "WEATHER_DATA:";
@ -63,6 +68,11 @@ public class AqiUtil {
AqiUtil.systemCitiesMapper = systemCitiesMapper;
}
@Autowired
public void setSystemAreasMapper(SystemAreasMapper systemAreasMapper) {
AqiUtil.systemAreasMapper = systemAreasMapper;
}
@Autowired
public void setRedisRepository(RedisRepository redisRepository) {
AqiUtil.redisRepository = redisRepository;
@ -180,26 +190,25 @@ public class AqiUtil {
/**
* 根据城市查询天气
*
* @param cityCode 城市ID
* @param areaCode
* @return
*/
public static Double getWeatherInfo(String cityCode) {
List<SystemCities> systemCities = redisRepository.getOrSet(SYSTEM_CITIES_KEY, () -> systemCitiesMapper.selectList(null), 60 * 60L);
String key = WEATHER_QUALITY + cityCode;
public static Double getWeatherInfo(String areaCode) {
String key = WEATHER_QUALITY + areaCode;
Object ro = redisRepository.get(key);
if (ro != null) {
return (Double) ro;
}
Map<String, SystemCities> cityIdMap = systemCities.stream().collect(Collectors.toMap(e -> e.getCityid(), Function.identity(), (o, o2) -> o));
//空气指数
Double air = null;
try {
Map<String, Object> param = new HashMap<>();
param.put("appid", tianqiAppid);
param.put("appsecret", tianqiAppsecret);
String cityId = Optional.ofNullable(cityIdMap.get(cityCode)).map(e -> e.getWeathercityid()).orElse(null);
if (StringUtils.isNotBlank(cityId)) {
param.put("cityid", cityId);
List<SystemAreas> systemAreas = systemAreasMapper.selectList(new LambdaQueryWrapper<SystemAreas>()
.eq(SystemAreas::getAreaid, areaCode));
if (CollUtil.isNotEmpty(systemAreas)) {
param.put("cityid", systemAreas.get(0).getWeathercityid());
}
String urlString = tianqiUrl + "/free/day";
log.info("tianqi:url:{},param:{}", urlString, JSON.toJSONString(param));