雨量大屏接口

This commit is contained in:
guoshengxiong 2024-06-29 16:13:03 +08:00
parent 4aad451bed
commit 3587197e44
12 changed files with 347 additions and 56 deletions

View File

@ -0,0 +1,109 @@
package com.zhgd.xmgl.modules.environment.controller;
import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.xmgl.modules.environment.entity.AirQualityAnalysis;
import com.zhgd.xmgl.modules.environment.entity.RainRecord;
import com.zhgd.xmgl.modules.environment.entity.vo.AirQualityStatisticsVo;
import com.zhgd.xmgl.modules.environment.entity.vo.RainAlarmCountTotalVo;
import com.zhgd.xmgl.modules.environment.service.IAirQualityAnalysisService;
import com.zhgd.xmgl.modules.environment.service.IRainAlarmService;
import com.zhgd.xmgl.modules.environment.service.IRainDevService;
import com.zhgd.xmgl.modules.environment.service.IRainRecordService;
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.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/xmgl/rainBigScreen")
@Slf4j
@Api(tags = "雨量监测大屏相关Api")
public class RainBigScreenController {
@Autowired
private IRainRecordService rainRecordService;
@Autowired
private IRainDevService rainDevService;
@Autowired
private IRainAlarmService rainAlarmService;
@Autowired
private IAirQualityAnalysisService airQualityAnalysisService;
/**
* 通过id查询
*
* @param
* @return
*/
@ApiOperation(value = "查询当天空气质量", notes = "查询当天空气质量", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "body", required = true, dataType = "String"),
})
@PostMapping(value = "/getCurrentDayAirQuality")
public Result<AirQualityAnalysis> getCurrentDayAirQuality(@RequestBody Map<String, Object> map) {
AirQualityAnalysis airQualityAnalysis = airQualityAnalysisService.getCurrentDayAirQuality(map);
return Result.success(airQualityAnalysis);
}
@ApiOperation(value = "当天空气质量统计", notes = "当天空气质量统计", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "body", required = true, dataType = "String"),
@ApiImplicitParam(name = "type", value = "类型1最近30天2最近一年", paramType = "body", required = true, dataType = "String"),
})
@PostMapping(value = "/getAirQualityStatistics")
public Result<List<AirQualityStatisticsVo>> getAirQualityStatistics(@RequestBody Map<String, Object> map) {
List<AirQualityStatisticsVo> list = airQualityAnalysisService.getAirQualityStatistics(map);
return Result.success(list);
}
@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(map));
}
@ApiOperation(value = "查询今日每小时趋势图", notes = "查询今日每小时趋势图", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String"),
@ApiImplicitParam(name = "devSn", value = "设备sn", paramType = "body", required = true, dataType = "String"),
})
@PostMapping(value = "/queryTodayTrendGroupByHour")
public Result<List<RainRecord>> queryTodayTrendGroupByHour(@ApiIgnore @RequestBody Map<String, Object> param) {
return Result.success(rainRecordService.queryTodayTrendGroupByHour(param));
}
@ApiOperation(value = "查询最新一条实时数据", notes = "查询最新一条实时数据", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "body", required = true, dataType = "String"),
@ApiImplicitParam(name = "devSn", value = "设备sn", paramType = "body", required = true, dataType = "String"),
})
@PostMapping(value = "/getRealTimeRainRecord")
public Result<RainRecord> getRealTimeRainRecord(@RequestBody Map<String, Object> map) {
return Result.success(rainRecordService.getRealTimeRainRecord(map));
}
@ApiOperation(value = "报警汇总统计", notes = "报警汇总统计")
@ApiImplicitParams({
@ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String"),
@ApiImplicitParam(name = "selectType", value = "查询条件1查询当天", paramType = "body", required = false, dataType = "String"),
})
@PostMapping("/selectRainAlarmCountTotal")
public Result<RainAlarmCountTotalVo> selectRainAlarmCountTotal(@RequestBody Map<String, Object> map) {
return Result.success(rainAlarmService.selectRainAlarmCountTotal(map));
}
}

View File

@ -1,18 +1,17 @@
package com.zhgd.xmgl.modules.environment.entity;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
/**
* @Description: 雨量监测报警记录
@ -74,7 +73,8 @@ public class RainAlarm implements Serializable {
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private java.util.Date updateDate;
@ApiModelProperty(value = "报警类型ParamEnum.RainAlarmTypeEnum")
private Integer alarmType;
@TableField(exist = false)
@ApiModelProperty(value = "设备名字")
private java.lang.String devName;

View File

@ -125,4 +125,7 @@ public class RainRecord implements Serializable {
@TableField(exist = false)
@ApiModelProperty(value = "设备名字")
private java.lang.String devName;
@TableField(exist = false)
@ApiModelProperty(value = "时间")
private java.lang.String time;
}

View File

@ -0,0 +1,63 @@
package com.zhgd.xmgl.modules.environment.entity.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class RainAlarmCountTotalVo {
/**
* 总数
*/
@ApiModelProperty(value = "总数")
private java.lang.Integer totalAlarm;
/**
* 风力/级数量
*/
@ApiModelProperty(value = "风力/级数量")
private java.lang.Integer windForceNum;
/**
* 风速m/s数量
*/
@ApiModelProperty(value = "风速m/s数量")
private java.lang.Integer windSpeedNum;
/**
* 风向数量
*/
@ApiModelProperty(value = "风向数量")
private java.lang.Integer windDirectionNum;
/**
* 累计雨量mm数量
*/
@ApiModelProperty(value = "累计雨量mm数量")
private java.lang.Integer accumulatedRainfallNum;
/**
* 瞬时雨量mm数量
*/
@ApiModelProperty(value = "瞬时雨量mm数量")
private java.lang.Integer instantaneousRainfallNum;
/**
* 当前雨量今日雨量mm数量
*/
@ApiModelProperty(value = "当前雨量今日雨量mm数量")
private java.lang.Integer currentRainfallNum;
/**
* 日雨量昨日雨量mm数量
*/
@ApiModelProperty(value = "日雨量昨日雨量mm数量")
private java.lang.Integer dailyRainfallNum;
/**
* 空气温度数量
*/
@ApiModelProperty(value = "空气温度℃数量")
private java.lang.Integer airTemperatureNum;
/**
* 空气湿度%数量
*/
@ApiModelProperty(value = "空气湿度%数量")
private java.lang.Integer airHumidityNum;
/**
* 大气压Kpa数量
*/
@ApiModelProperty(value = "大气压Kpa数量")
private java.lang.Integer atmosphericPressureNum;
}

View File

@ -4,12 +4,14 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhgd.xmgl.modules.environment.entity.vo.RainAlarmCountTotalVo;
import org.apache.ibatis.annotations.Mapper;
import com.zhgd.xmgl.modules.environment.entity.RainAlarm;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* @Description: 雨量监测报警记录
@ -23,4 +25,6 @@ public interface RainAlarmMapper extends BaseMapper<RainAlarm> {
IPage<RainAlarm> queryList(Page<RainAlarm> page, @Param(Constants.WRAPPER) QueryWrapper<RainAlarm> queryWrapper);
List<RainAlarm> queryList(@Param(Constants.WRAPPER) QueryWrapper<RainAlarm> queryWrapper);
RainAlarmCountTotalVo selectRainAlarmCountTotal(Map<String, Object> map);
}

View File

@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* @Description: 雨量监测记录
@ -23,4 +24,6 @@ public interface RainRecordMapper extends BaseMapper<RainRecord> {
IPage<RainRecord> queryList(Page<RainRecord> page, @Param(Constants.WRAPPER) QueryWrapper<RainRecord> queryWrapper);
List<RainRecord> queryList(@Param(Constants.WRAPPER) QueryWrapper<RainRecord> queryWrapper);
List<RainRecord> queryTodayTrendGroupByHour(Map<String, Object> param);
}

View File

@ -7,4 +7,24 @@
join rain_dev rd on rd.dev_sn = t.dev_sn
${ew.customSqlSegment}
</select>
<select id="selectRainAlarmCountTotal"
resultType="com.zhgd.xmgl.modules.environment.entity.vo.RainAlarmCountTotalVo">
SELECT COUNT(1) totalAlarm,
IFNULL(SUM((CASE WHEN w1.alarm_type = 1 THEN 1 ELSE 0 END)), 0) windForceNum,
IFNULL(SUM((CASE WHEN w1.alarm_type = 2 THEN 1 ELSE 0 END)), 0) windSpeedNum,
IFNULL(SUM((CASE WHEN w1.alarm_type = 3 THEN 1 ELSE 0 END)), 0) windDirectionNum,
IFNULL(SUM((CASE WHEN w1.alarm_type = 4 THEN 1 ELSE 0 END)), 0) accumulatedRainfallNum,
IFNULL(SUM((CASE WHEN w1.alarm_type = 5 THEN 1 ELSE 0 END)), 0) instantaneousRainfallNum,
IFNULL(SUM((CASE WHEN w1.alarm_type = 6 THEN 1 ELSE 0 END)), 0) currentRainfallNum,
IFNULL(SUM((CASE WHEN w1.alarm_type = 7 THEN 1 ELSE 0 END)), 0) dailyRainfallNum,
IFNULL(SUM((CASE WHEN w1.alarm_type = 8 THEN 1 ELSE 0 END)), 0) airTemperatureNum,
IFNULL(SUM((CASE WHEN w1.alarm_type = 9 THEN 1 ELSE 0 END)), 0) airHumidityNum,
IFNULL(SUM((CASE WHEN w1.alarm_type = 10 THEN 1 ELSE 0 END)), 0) atmosphericPressureNum
from rain_alarm w1
where w1.project_sn = #{projectSn}
<if test="selectType == '1'.toString()">
AND w1.alarm_time &gt;= CONCAT(DATE_FORMAT(now(), '%Y-%m-%d'), ' 00:00:00')
</if>
</select>
</mapper>

View File

@ -7,4 +7,31 @@
join rain_dev rd on rd.dev_sn = t.dev_sn
${ew.customSqlSegment}
</select>
<select id="queryTodayTrendGroupByHour" resultType="com.zhgd.xmgl.modules.environment.entity.RainRecord">
SELECT
id,
project_sn,
dev_sn,
date_format(record_time,'%H:00') time,
avg(wind_force) wind_force,
avg(wind_speed) wind_speed,
avg(wind_direction) wind_direction,
avg(accumulated_rainfall) accumulated_rainfall,
avg(instantaneous_rainfall) instantaneous_rainfall,
avg(current_rainfall) current_rainfall,
avg(daily_rainfall) daily_rainfall,
avg(air_temperature) air_temperature,
avg(air_humidity) air_humidity,
avg(atmospheric_pressure) atmospheric_pressure
FROM
rain_record
WHERE
project_sn = #{projectSn}
<if test="dev_sn != null and dev_sn != ''">
and dev_sn = #{dev_sn}
</if>
and record_time >= CURRENT_DATE
group by time
</select>
</mapper>

View File

@ -3,9 +3,11 @@ package com.zhgd.xmgl.modules.environment.service;
import com.zhgd.xmgl.modules.environment.entity.RainAlarm;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zhgd.xmgl.modules.environment.entity.vo.RainAlarmCountTotalVo;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Description: 雨量监测报警记录
@ -27,4 +29,5 @@ public interface IRainAlarmService extends IService<RainAlarm> {
RainAlarm queryById(String id);
RainAlarmCountTotalVo selectRainAlarmCountTotal(Map<String, Object> map);
}

View File

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Description: 雨量监测记录
@ -27,4 +28,7 @@ public interface IRainRecordService extends IService<RainRecord> {
RainRecord queryById(String id);
List<RainRecord> queryTodayTrendGroupByHour(Map<String, Object> param);
RainRecord getRealTimeRainRecord(Map<String, Object> map);
}

View File

@ -3,6 +3,7 @@ package com.zhgd.xmgl.modules.environment.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zhgd.jeecg.common.execption.OpenAlertException;
import com.zhgd.xmgl.modules.environment.entity.RainDev;
import com.zhgd.xmgl.modules.environment.entity.vo.RainAlarmCountTotalVo;
import com.zhgd.xmgl.modules.environment.mapper.RainAlarmMapper;
import com.zhgd.xmgl.modules.environment.mapper.RainDevMapper;
import com.zhgd.xmgl.modules.environment.service.IRainAlarmService;
@ -17,6 +18,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.zhgd.xmgl.util.RefUtil;
import org.springframework.transaction.annotation.Transactional;
@ -101,4 +103,9 @@ public class RainAlarmServiceImpl extends ServiceImpl<RainAlarmMapper, RainAlarm
return entity;
}
@Override
public RainAlarmCountTotalVo selectRainAlarmCountTotal(Map<String, Object> map) {
return baseMapper.selectRainAlarmCountTotal(map);
}
}

View File

@ -1,12 +1,17 @@
package com.zhgd.xmgl.modules.environment.service.impl;
import java.util.Date;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zhgd.jeecg.common.execption.OpenAlertException;
import com.zhgd.xmgl.modules.environment.entity.RainRecord;
import com.zhgd.xmgl.modules.environment.entity.RainDev;
import com.zhgd.xmgl.modules.environment.entity.RainRecord;
import com.zhgd.xmgl.modules.environment.mapper.RainDevMapper;
import com.zhgd.xmgl.modules.environment.mapper.RainRecordMapper;
import com.zhgd.xmgl.modules.environment.service.IRainRecordService;
import com.zhgd.xmgl.util.DateUtils;
import org.apache.commons.collections.MapUtils;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -17,6 +22,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
import com.zhgd.xmgl.util.RefUtil;
import org.springframework.transaction.annotation.Transactional;
@ -101,4 +109,44 @@ public class RainRecordServiceImpl extends ServiceImpl<RainRecordMapper, RainRec
return entity;
}
@Override
public List<RainRecord> queryTodayTrendGroupByHour(Map<String, Object> param) {
List<RainRecord> list = baseMapper.queryTodayTrendGroupByHour(param);
fillData(list);
return list;
}
@Override
public RainRecord getRealTimeRainRecord(Map<String, Object> map) {
String devSn = MapUtils.getString(map, "devSn");
String projectSn = MapUtils.getString(map, "projectSn");
return rainRecordMapper.selectOne(new LambdaQueryWrapper<RainRecord>()
.eq(StrUtil.isNotBlank(devSn), RainRecord::getDevSn, devSn)
.eq(StrUtil.isNotBlank(projectSn), RainRecord::getProjectSn, projectSn)
.last("order by record_time desc limit 1")
);
}
private void fillData(List<RainRecord> list) {
Map<String, RainRecord> dataMap = list.stream().collect(Collectors.toMap(RainRecord::getTime, Function.identity()));
list.clear();
for (String hour : DateUtils.getDateTimeStrList(100, "HH:mm")) {
RainRecord dnd = dataMap.get(hour);
if (dnd == null) {
dnd = new RainRecord();
dnd.setWindForce(0.0D);
dnd.setWindSpeed(0.0D);
dnd.setAccumulatedRainfall(0.0D);
dnd.setInstantaneousRainfall(0.0D);
dnd.setCurrentRainfall(0.0D);
dnd.setDailyRainfall(0.0D);
dnd.setAirTemperature(0.0D);
dnd.setAirHumidity(0.0D);
dnd.setAtmosphericPressure(0.0D);
dnd.setTime(hour);
}
list.add(dnd);
}
}
}