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") @ApiOperation(value = "查询天气-周", notes = "查询天气-周", httpMethod = "POST")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "cityid", value = "市区编码", paramType = "body", required = false, dataType = "String"), @ApiImplicitParam(name = "cityid", value = "市区编码", paramType = "body", required = false, dataType = "String"),
@ApiImplicitParam(name = "areaId", value = "行政区域县区Id", paramType = "body", required = false, dataType = "String"),
}) })
@PostMapping(value = "/getWeatherData") @PostMapping(value = "/getWeatherData")
public Result<String> getWeatherData(@RequestBody Map<String, Object> map) { 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") @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.zhgd.xmgl.modules.environment.entity.AirQualityAnalysis;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.zhgd.xmgl.modules.environment.entity.vo.AirQualityStatisticsVo; 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.List;
import java.util.Map; import java.util.Map;
@ -23,7 +21,7 @@ public interface IAirQualityAnalysisService extends IService<AirQualityAnalysis>
void deleteProjectAirQualityAnalysis(String projectSn); void deleteProjectAirQualityAnalysis(String projectSn);
String getWeatherData(String cityid); String getWeatherData(Map<String, Object> map);
Object getWeatherLiveData(String cityid); Object getWeatherLiveData(String cityid);
} }

View File

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

View File

@ -161,7 +161,6 @@ public class SewageDataServiceImpl extends ServiceImpl<SewageDataMapper, SewageD
} }
private void setAlarmStatus(SewageData sewageData, List<SewageAlarm> sewageAlarms) { 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> 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)); 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); sewageData.setWaterLevelStatus(0);
} }
}
} }
private void insertAlarmIfLe(Double data, Double threshold, SewageDev dev, String c, Integer alarmType, SewageData sd, Integer sewageType) { 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; package com.zhgd.xmgl.modules.smartgrout.controller;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zhgd.jeecg.common.api.vo.Result; import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.xmgl.base.entity.vo.FlexibleBigScreenVo; import com.zhgd.xmgl.base.entity.vo.FlexibleBigScreenVo;
@ -17,12 +19,16 @@ import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.MapUtils; import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore; import springfox.documentation.annotations.ApiIgnore;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; 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 = "告警时间") @ApiModelProperty(value = "告警时间")
private java.util.Date alarmTime; private java.util.Date alarmTime;
/** /**
* 设备状态0:报警恢复1:报警 * 设备状态 0报警恢复1表示报警 2表示心跳
*/ */
@Excel(name = "设备状态0:报警恢复1:报警", width = 15) @Excel(name = "设备状态 0报警恢复1表示报警 2表示心跳", width = 15)
@ApiModelProperty(value = "设备状态0:报警恢复1:报警") @ApiModelProperty(value = "设备状态 0报警恢复1表示报警 2表示心跳")
private java.lang.Integer deviceStatus; private java.lang.Integer deviceStatus;
@ApiModelProperty(value = "警情状态内容布防、撤防、SOS、盗警、交流电故障等") @ApiModelProperty(value = "警情状态内容布防、撤防、SOS、盗警、交流电故障等")
private java.lang.String alarmDetailStatus; private java.lang.String alarmDetailStatus;

View File

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

View File

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