diff --git a/src/main/java/com/zhgd/xmgl/modules/environment/controller/RainAlarmController.java b/src/main/java/com/zhgd/xmgl/modules/environment/controller/RainAlarmController.java new file mode 100644 index 000000000..e8aa5236c --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/environment/controller/RainAlarmController.java @@ -0,0 +1,120 @@ +package com.zhgd.xmgl.modules.environment.controller; + +import com.zhgd.xmgl.modules.environment.entity.RainAlarm; +import com.zhgd.xmgl.modules.environment.service.IRainAlarmService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiImplicitParams; + +import java.util.HashMap; + +import springfox.documentation.annotations.ApiIgnore; + +import java.util.List; + +import com.zhgd.jeecg.common.api.vo.Result; +import org.apache.commons.collections.MapUtils; + +import org.simpleframework.xml.core.Validate; +import com.baomidou.mybatisplus.core.metadata.IPage; +import lombok.extern.slf4j.Slf4j; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + + +/** + * @Title: Controller + * @Description: 雨量监测报警记录 + * @author: pds + * @date: 2024-06-24 + * @version: V1.0 + */ +@RestController +@RequestMapping("/xmgl/rainAlarm") +@Slf4j +@Api(tags = "雨量监测报警记录相关Api") +public class RainAlarmController { + @Autowired + private IRainAlarmService rainAlarmService; + + /** + * 分页列表查询 + * + * @return + */ + @ApiOperation(value = "分页列表查询雨量监测报警记录信息", notes = "分页列表查询雨量监测报警记录信息", httpMethod = "GET") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNo", value = "第几页", paramType = "query", required = true, dataType = "Integer"), + @ApiImplicitParam(name = "pageSize", value = "每页显示条数", paramType = "query", required = true, dataType = "Integer"), + }) + @GetMapping(value = "/page") + public Result> queryPageList(@ApiIgnore @RequestParam HashMap param) { + return Result.success(rainAlarmService.queryPageList(param)); + } + + /** + * 列表查询 + * + * @return + */ + @ApiOperation(value = "列表查询雨量监测报警记录信息", notes = "列表查询雨量监测报警记录信息", httpMethod = "GET") + @GetMapping(value = "/list") + public Result> queryList(@ApiIgnore @RequestParam HashMap param) { + return Result.success(rainAlarmService.queryList(param)); + } + + /** + * 添加 + * + * @param rainAlarm + * @return + */ + @ApiOperation(value = "添加雨量监测报警记录信息", notes = "添加雨量监测报警记录信息", httpMethod = "POST") + @PostMapping(value = "/add") + public Result add(@RequestBody @Validate RainAlarm rainAlarm) { + rainAlarmService.add(rainAlarm); + return Result.ok(); + } + + /** + * 编辑 + * + * @param rainAlarm + * @return + */ + @ApiOperation(value = "编辑雨量监测报警记录信息", notes = "编辑雨量监测报警记录信息", httpMethod = "POST") + @PostMapping(value = "/edit") + public Result edit(@RequestBody RainAlarm rainAlarm) { + rainAlarmService.edit(rainAlarm); + return Result.ok(); + } + + /** + * 通过id删除 + * + * @return + */ + @ApiOperation(value = "删除雨量监测报警记录信息", notes = "删除雨量监测报警记录信息", httpMethod = "POST") + @ApiImplicitParam(name = "id", value = "雨量监测报警记录ID", paramType = "body", required = true, dataType = "String", example = "{\"id\":\"1\"}") + @PostMapping(value = "/delete") + public Result delete(@ApiIgnore @RequestBody HashMap map) { + rainAlarmService.delete(MapUtils.getString(map, "id")); + return Result.ok(); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @ApiOperation(value = "通过id查询雨量监测报警记录信息", notes = "通过id查询雨量监测报警记录信息", httpMethod = "GET") + @ApiImplicitParam(name = "id", value = "雨量监测报警记录ID", paramType = "query", required = true, dataType = "Integer") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name = "id", required = true) String id) { + return Result.success(rainAlarmService.queryById(id)); + } + +} diff --git a/src/main/java/com/zhgd/xmgl/modules/environment/controller/RainDevController.java b/src/main/java/com/zhgd/xmgl/modules/environment/controller/RainDevController.java new file mode 100644 index 000000000..c13c32672 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/environment/controller/RainDevController.java @@ -0,0 +1,120 @@ +package com.zhgd.xmgl.modules.environment.controller; + +import com.zhgd.xmgl.modules.environment.entity.RainDev; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiImplicitParams; + +import java.util.HashMap; + +import springfox.documentation.annotations.ApiIgnore; + +import java.util.List; + +import com.zhgd.jeecg.common.api.vo.Result; +import org.apache.commons.collections.MapUtils; +import com.zhgd.xmgl.modules.environment.service.IRainDevService; + +import org.simpleframework.xml.core.Validate; +import com.baomidou.mybatisplus.core.metadata.IPage; +import lombok.extern.slf4j.Slf4j; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + + +/** + * @Title: Controller + * @Description: 雨量监测设备 + * @author: pds + * @date: 2024-06-24 + * @version: V1.0 + */ +@RestController +@RequestMapping("/xmgl/rainDev") +@Slf4j +@Api(tags = "雨量监测设备相关Api") +public class RainDevController { + @Autowired + private IRainDevService rainDevService; + + /** + * 分页列表查询 + * + * @return + */ + @ApiOperation(value = "分页列表查询雨量监测设备信息", notes = "分页列表查询雨量监测设备信息", httpMethod = "GET") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNo", value = "第几页", paramType = "query", required = true, dataType = "Integer"), + @ApiImplicitParam(name = "pageSize", value = "每页显示条数", paramType = "query", required = true, dataType = "Integer"), + }) + @GetMapping(value = "/page") + public Result> queryPageList(@ApiIgnore @RequestParam HashMap param) { + return Result.success(rainDevService.queryPageList(param)); + } + + /** + * 列表查询 + * + * @return + */ + @ApiOperation(value = "列表查询雨量监测设备信息", notes = "列表查询雨量监测设备信息", httpMethod = "GET") + @GetMapping(value = "/list") + public Result> queryList(@ApiIgnore @RequestParam HashMap param) { + return Result.success(rainDevService.queryList(param)); + } + + /** + * 添加 + * + * @param rainDev + * @return + */ + @ApiOperation(value = "添加雨量监测设备信息", notes = "添加雨量监测设备信息", httpMethod = "POST") + @PostMapping(value = "/add") + public Result add(@RequestBody @Validate RainDev rainDev) { + rainDevService.add(rainDev); + return Result.ok(); + } + + /** + * 编辑 + * + * @param rainDev + * @return + */ + @ApiOperation(value = "编辑雨量监测设备信息", notes = "编辑雨量监测设备信息", httpMethod = "POST") + @PostMapping(value = "/edit") + public Result edit(@RequestBody RainDev rainDev) { + rainDevService.edit(rainDev); + return Result.ok(); + } + + /** + * 通过id删除 + * + * @return + */ + @ApiOperation(value = "删除雨量监测设备信息", notes = "删除雨量监测设备信息", httpMethod = "POST") + @ApiImplicitParam(name = "id", value = "雨量监测设备ID", paramType = "body", required = true, dataType = "String", example = "{\"id\":\"1\"}") + @PostMapping(value = "/delete") + public Result delete(@ApiIgnore @RequestBody HashMap map) { + rainDevService.delete(MapUtils.getString(map, "id")); + return Result.ok(); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @ApiOperation(value = "通过id查询雨量监测设备信息", notes = "通过id查询雨量监测设备信息", httpMethod = "GET") + @ApiImplicitParam(name = "id", value = "雨量监测设备ID", paramType = "query", required = true, dataType = "Integer") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name = "id", required = true) String id) { + return Result.success(rainDevService.queryById(id)); + } + +} diff --git a/src/main/java/com/zhgd/xmgl/modules/environment/controller/RainRecordController.java b/src/main/java/com/zhgd/xmgl/modules/environment/controller/RainRecordController.java new file mode 100644 index 000000000..e9e52b5e9 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/environment/controller/RainRecordController.java @@ -0,0 +1,120 @@ +package com.zhgd.xmgl.modules.environment.controller; + +import com.zhgd.xmgl.modules.environment.entity.RainRecord; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiImplicitParams; + +import java.util.HashMap; + +import springfox.documentation.annotations.ApiIgnore; + +import java.util.List; + +import com.zhgd.jeecg.common.api.vo.Result; +import org.apache.commons.collections.MapUtils; +import com.zhgd.xmgl.modules.environment.service.IRainRecordService; + +import org.simpleframework.xml.core.Validate; +import com.baomidou.mybatisplus.core.metadata.IPage; +import lombok.extern.slf4j.Slf4j; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + + +/** + * @Title: Controller + * @Description: 雨量监测记录 + * @author: pds + * @date: 2024-06-24 + * @version: V1.0 + */ +@RestController +@RequestMapping("/xmgl/rainRecord") +@Slf4j +@Api(tags = "雨量监测记录相关Api") +public class RainRecordController { + @Autowired + private IRainRecordService rainRecordService; + + /** + * 分页列表查询 + * + * @return + */ + @ApiOperation(value = "分页列表查询雨量监测记录信息", notes = "分页列表查询雨量监测记录信息", httpMethod = "GET") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNo", value = "第几页", paramType = "query", required = true, dataType = "Integer"), + @ApiImplicitParam(name = "pageSize", value = "每页显示条数", paramType = "query", required = true, dataType = "Integer"), + }) + @GetMapping(value = "/page") + public Result> queryPageList(@ApiIgnore @RequestParam HashMap param) { + return Result.success(rainRecordService.queryPageList(param)); + } + + /** + * 列表查询 + * + * @return + */ + @ApiOperation(value = "列表查询雨量监测记录信息", notes = "列表查询雨量监测记录信息", httpMethod = "GET") + @GetMapping(value = "/list") + public Result> queryList(@ApiIgnore @RequestParam HashMap param) { + return Result.success(rainRecordService.queryList(param)); + } + + /** + * 添加 + * + * @param rainRecord + * @return + */ + @ApiOperation(value = "添加雨量监测记录信息", notes = "添加雨量监测记录信息", httpMethod = "POST") + @PostMapping(value = "/add") + public Result add(@RequestBody @Validate RainRecord rainRecord) { + rainRecordService.add(rainRecord); + return Result.ok(); + } + + /** + * 编辑 + * + * @param rainRecord + * @return + */ + @ApiOperation(value = "编辑雨量监测记录信息", notes = "编辑雨量监测记录信息", httpMethod = "POST") + @PostMapping(value = "/edit") + public Result edit(@RequestBody RainRecord rainRecord) { + rainRecordService.edit(rainRecord); + return Result.ok(); + } + + /** + * 通过id删除 + * + * @return + */ + @ApiOperation(value = "删除雨量监测记录信息", notes = "删除雨量监测记录信息", httpMethod = "POST") + @ApiImplicitParam(name = "id", value = "雨量监测记录ID", paramType = "body", required = true, dataType = "String", example = "{\"id\":\"1\"}") + @PostMapping(value = "/delete") + public Result delete(@ApiIgnore @RequestBody HashMap map) { + rainRecordService.delete(MapUtils.getString(map, "id")); + return Result.ok(); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @ApiOperation(value = "通过id查询雨量监测记录信息", notes = "通过id查询雨量监测记录信息", httpMethod = "GET") + @ApiImplicitParam(name = "id", value = "雨量监测记录ID", paramType = "query", required = true, dataType = "Integer") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name = "id", required = true) String id) { + return Result.success(rainRecordService.queryById(id)); + } + +} diff --git a/src/main/java/com/zhgd/xmgl/modules/environment/entity/RainAlarm.java b/src/main/java/com/zhgd/xmgl/modules/environment/entity/RainAlarm.java new file mode 100644 index 000000000..a3baa3199 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/environment/entity/RainAlarm.java @@ -0,0 +1,70 @@ +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.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; + +/** + * @Description: 雨量监测报警记录 + * @author: pds + * @date: 2024-06-24 + * @version: V1.0 + */ +@Data +@TableName("rain_alarm") +@ApiModel(value = "RainAlarm实体类", description = "RainAlarm") +public class RainAlarm implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "id") + private java.lang.Long id; + /** + * 报警内容 + */ + @Excel(name = "报警内容", width = 15) + @ApiModelProperty(value = "报警内容") + private java.lang.String alarmContent; + /** + * 报警值 + */ + @Excel(name = "报警值", width = 15) + @ApiModelProperty(value = "报警值") + private java.lang.Double alarmVal; + /** + * 所属项目SN + */ + @Excel(name = "所属项目SN", width = 15) + @ApiModelProperty(value = "所属项目SN") + private java.lang.String projectSn; + @ApiModelProperty(value = "报警时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private java.util.Date alarmTime; + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private java.util.Date createDate; + /** + * 更新时间 + */ + @ApiModelProperty(value = "更新时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private java.util.Date updateDate; +} diff --git a/src/main/java/com/zhgd/xmgl/modules/environment/entity/RainDev.java b/src/main/java/com/zhgd/xmgl/modules/environment/entity/RainDev.java new file mode 100644 index 000000000..851a7f29c --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/environment/entity/RainDev.java @@ -0,0 +1,86 @@ +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.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; + +/** + * @Description: 雨量监测设备 + * @author: pds + * @date: 2024-06-24 + * @version: V1.0 + */ +@Data +@TableName("rain_dev") +@ApiModel(value = "RainDev实体类", description = "RainDev") +public class RainDev implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "id") + private java.lang.Long id; + /** + * 设备SN + */ + @Excel(name = "设备SN", width = 15) + @ApiModelProperty(value = "设备SN") + private java.lang.String devSn; + /** + * 设备名字 + */ + @Excel(name = "设备名字", width = 15) + @ApiModelProperty(value = "设备名字") + private java.lang.String devName; + /** + * 项目sn + */ + @Excel(name = "项目sn", width = 15) + @ApiModelProperty(value = "项目sn") + private java.lang.String projectSn; + /** + * 设备所在经度 + */ + @Excel(name = "设备所在经度", width = 15) + @ApiModelProperty(value = "设备所在经度") + private java.lang.String lng; + /** + * 设备所在纬度 + */ + @Excel(name = "设备所在纬度", width = 15) + @ApiModelProperty(value = "设备所在纬度") + private java.lang.String lat; + /** + * 报警推送人,多个逗号分割 + */ + @Excel(name = "报警推送人,多个逗号分割", width = 15) + @ApiModelProperty(value = "报警推送人,多个逗号分割") + private java.lang.String alarmPushWorkerId; + /** + * 在线状态(0.离线 1.在线) + */ + @Excel(name = "在线状态(0.离线 1.在线)", width = 15) + @ApiModelProperty(value = "在线状态(0.离线 1.在线)") + private java.lang.Integer online; + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间") + private java.util.Date createDate; + /** + * 更新时间 + */ + @ApiModelProperty(value = "更新时间") + private java.util.Date updateDate; +} diff --git a/src/main/java/com/zhgd/xmgl/modules/environment/entity/RainRecord.java b/src/main/java/com/zhgd/xmgl/modules/environment/entity/RainRecord.java new file mode 100644 index 000000000..f593ee8e3 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/environment/entity/RainRecord.java @@ -0,0 +1,124 @@ +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.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; + +/** + * @Description: 雨量监测记录 + * @author: pds + * @date: 2024-06-24 + * @version: V1.0 + */ +@Data +@TableName("rain_record") +@ApiModel(value = "RainRecord实体类", description = "RainRecord") +public class RainRecord implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "id") + private java.lang.Long id; + /** + * 风力/级 + */ + @Excel(name = "风力/级", width = 15) + @ApiModelProperty(value = "风力/级") + private java.lang.Double windForce; + /** + * 风速m/s + */ + @Excel(name = "风速m/s", width = 15) + @ApiModelProperty(value = "风速m/s") + private java.lang.Double windSpeed; + /** + * 风向 + */ + @Excel(name = "风向", width = 15) + @ApiModelProperty(value = "风向") + private java.lang.String windDirection; + /** + * 累计雨量mm + */ + @Excel(name = "累计雨量mm", width = 15) + @ApiModelProperty(value = "累计雨量mm") + private java.lang.Double accumulatedRainfall; + /** + * 瞬时雨量mm + */ + @Excel(name = "瞬时雨量mm", width = 15) + @ApiModelProperty(value = "瞬时雨量mm") + private java.lang.Double instantaneousRainfall; + /** + * 当前雨量(今日雨量)mm + */ + @Excel(name = "当前雨量(今日雨量)mm", width = 15) + @ApiModelProperty(value = "当前雨量(今日雨量)mm") + private java.lang.Double currentRainfall; + /** + * 日雨量(昨日雨量)mm + */ + @Excel(name = "日雨量(昨日雨量)mm", width = 15) + @ApiModelProperty(value = "日雨量(昨日雨量)mm") + private java.lang.Double dailyRainfall; + /** + * 空气温度℃ + */ + @Excel(name = "空气温度℃", width = 15) + @ApiModelProperty(value = "空气温度℃") + private java.lang.Double airTemperature; + /** + * 空气湿度% + */ + @Excel(name = "空气湿度%", width = 15) + @ApiModelProperty(value = "空气湿度%") + private java.lang.Double airHumidity; + /** + * 大气压Kpa + */ + @Excel(name = "大气压Kpa", width = 15) + @ApiModelProperty(value = "大气压Kpa") + private java.lang.Double atmosphericPressure; + /** + * 设备SN + */ + @Excel(name = "设备SN", width = 15) + @ApiModelProperty(value = "设备SN") + private java.lang.String devSn; + /** + * 所属项目SN + */ + @Excel(name = "所属项目SN", width = 15) + @ApiModelProperty(value = "所属项目SN") + private java.lang.String projectSn; + @ApiModelProperty(value = "记录时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private java.util.Date recordTime; + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private java.util.Date createDate; + /** + * 更新时间 + */ + @ApiModelProperty(value = "更新时间") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private java.util.Date updateDate; +} diff --git a/src/main/java/com/zhgd/xmgl/modules/environment/mapper/RainAlarmMapper.java b/src/main/java/com/zhgd/xmgl/modules/environment/mapper/RainAlarmMapper.java new file mode 100644 index 000000000..40bdb9a1e --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/environment/mapper/RainAlarmMapper.java @@ -0,0 +1,16 @@ +package com.zhgd.xmgl.modules.environment.mapper; + +import org.apache.ibatis.annotations.Mapper; +import com.zhgd.xmgl.modules.environment.entity.RainAlarm; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 雨量监测报警记录 + * @author: pds + * @date: 2024-06-24 + * @version: V1.0 + */ +@Mapper +public interface RainAlarmMapper extends BaseMapper { + +} diff --git a/src/main/java/com/zhgd/xmgl/modules/environment/mapper/RainDevMapper.java b/src/main/java/com/zhgd/xmgl/modules/environment/mapper/RainDevMapper.java new file mode 100644 index 000000000..798e977b7 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/environment/mapper/RainDevMapper.java @@ -0,0 +1,16 @@ +package com.zhgd.xmgl.modules.environment.mapper; + +import com.zhgd.xmgl.modules.environment.entity.RainDev; +import org.apache.ibatis.annotations.Mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 雨量监测设备 + * @author: pds + * @date: 2024-06-24 + * @version: V1.0 + */ +@Mapper +public interface RainDevMapper extends BaseMapper { + +} diff --git a/src/main/java/com/zhgd/xmgl/modules/environment/mapper/RainRecordMapper.java b/src/main/java/com/zhgd/xmgl/modules/environment/mapper/RainRecordMapper.java new file mode 100644 index 000000000..a9e15aed1 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/environment/mapper/RainRecordMapper.java @@ -0,0 +1,16 @@ +package com.zhgd.xmgl.modules.environment.mapper; + +import org.apache.ibatis.annotations.Mapper; +import com.zhgd.xmgl.modules.environment.entity.RainRecord; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 雨量监测记录 + * @author: pds + * @date: 2024-06-24 + * @version: V1.0 + */ +@Mapper +public interface RainRecordMapper extends BaseMapper { + +} diff --git a/src/main/java/com/zhgd/xmgl/modules/environment/mapper/xml/RainAlarmMapper.xml b/src/main/java/com/zhgd/xmgl/modules/environment/mapper/xml/RainAlarmMapper.xml new file mode 100644 index 000000000..b2658eedf --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/environment/mapper/xml/RainAlarmMapper.xml @@ -0,0 +1,4 @@ + + + + diff --git a/src/main/java/com/zhgd/xmgl/modules/environment/mapper/xml/RainDevMapper.xml b/src/main/java/com/zhgd/xmgl/modules/environment/mapper/xml/RainDevMapper.xml new file mode 100644 index 000000000..ece96cd55 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/environment/mapper/xml/RainDevMapper.xml @@ -0,0 +1,4 @@ + + + + diff --git a/src/main/java/com/zhgd/xmgl/modules/environment/mapper/xml/RainRecordMapper.xml b/src/main/java/com/zhgd/xmgl/modules/environment/mapper/xml/RainRecordMapper.xml new file mode 100644 index 000000000..cd7f63262 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/environment/mapper/xml/RainRecordMapper.xml @@ -0,0 +1,4 @@ + + + + diff --git a/src/main/java/com/zhgd/xmgl/modules/environment/service/IRainAlarmService.java b/src/main/java/com/zhgd/xmgl/modules/environment/service/IRainAlarmService.java new file mode 100644 index 000000000..c803a3859 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/environment/service/IRainAlarmService.java @@ -0,0 +1,30 @@ +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 java.util.HashMap; +import java.util.List; + +/** + * @Description: 雨量监测报警记录 + * @author: pds + * @date: 2024-06-24 + * @version: V1.0 + */ +public interface IRainAlarmService extends IService { + + IPage queryPageList(HashMap param); + + List queryList(HashMap param); + + void add(RainAlarm rainAlarm); + + void edit(RainAlarm rainAlarm); + + void delete(String id); + + RainAlarm queryById(String id); + +} diff --git a/src/main/java/com/zhgd/xmgl/modules/environment/service/IRainDevService.java b/src/main/java/com/zhgd/xmgl/modules/environment/service/IRainDevService.java new file mode 100644 index 000000000..3cbe0c98b --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/environment/service/IRainDevService.java @@ -0,0 +1,30 @@ +package com.zhgd.xmgl.modules.environment.service; + +import com.zhgd.xmgl.modules.environment.entity.RainDev; +import com.baomidou.mybatisplus.extension.service.IService; +import com.baomidou.mybatisplus.core.metadata.IPage; + +import java.util.HashMap; +import java.util.List; + +/** + * @Description: 雨量监测设备 + * @author: pds + * @date: 2024-06-24 + * @version: V1.0 + */ +public interface IRainDevService extends IService { + + IPage queryPageList(HashMap param); + + List queryList(HashMap param); + + void add(RainDev rainDev); + + void edit(RainDev rainDev); + + void delete(String id); + + RainDev queryById(String id); + +} diff --git a/src/main/java/com/zhgd/xmgl/modules/environment/service/IRainRecordService.java b/src/main/java/com/zhgd/xmgl/modules/environment/service/IRainRecordService.java new file mode 100644 index 000000000..3535da695 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/environment/service/IRainRecordService.java @@ -0,0 +1,30 @@ +package com.zhgd.xmgl.modules.environment.service; + +import com.zhgd.xmgl.modules.environment.entity.RainRecord; +import com.baomidou.mybatisplus.extension.service.IService; +import com.baomidou.mybatisplus.core.metadata.IPage; + +import java.util.HashMap; +import java.util.List; + +/** + * @Description: 雨量监测记录 + * @author: pds + * @date: 2024-06-24 + * @version: V1.0 + */ +public interface IRainRecordService extends IService { + + IPage queryPageList(HashMap param); + + List queryList(HashMap param); + + void add(RainRecord rainRecord); + + void edit(RainRecord rainRecord); + + void delete(String id); + + RainRecord queryById(String id); + +} diff --git a/src/main/java/com/zhgd/xmgl/modules/environment/service/impl/RainAlarmServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/environment/service/impl/RainAlarmServiceImpl.java new file mode 100644 index 000000000..f98f8ed9d --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/environment/service/impl/RainAlarmServiceImpl.java @@ -0,0 +1,93 @@ +package com.zhgd.xmgl.modules.environment.service.impl; + +import com.zhgd.jeecg.common.execption.OpenAlertException; +import com.zhgd.xmgl.modules.environment.mapper.RainAlarmMapper; +import com.zhgd.xmgl.modules.environment.service.IRainAlarmService; +import com.zhgd.xmgl.modules.environment.entity.RainAlarm; +import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zhgd.jeecg.common.system.query.QueryGenerator; +import com.zhgd.xmgl.util.PageUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import java.util.HashMap; +import java.util.List; + +import com.zhgd.xmgl.util.RefUtil; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description: 雨量监测报警记录 + * @author: pds + * @date: 2024-06-24 + * @version: V1.0 + */ +@Service +@Transactional(rollbackFor = Exception.class) +public class RainAlarmServiceImpl extends ServiceImpl implements IRainAlarmService { + @Autowired + private RainAlarmMapper rainAlarmMapper; + + @Override + public IPage queryPageList(HashMap param) { + QueryWrapper queryWrapper = getQueryWrapper(param); + Page page = PageUtil.getPage(param); + IPage pageList = this.page(page, queryWrapper); + pageList.setRecords(dealList(pageList.getRecords())); + return pageList; + } + + @Override + public List queryList(HashMap param) { + QueryWrapper queryWrapper = getQueryWrapper(param); + return dealList(this.list(queryWrapper)); + } + + private QueryWrapper getQueryWrapper(HashMap param) { + String alias = ""; + QueryWrapper queryWrapper = QueryGenerator.initPageQueryWrapper(RainAlarm.class, param, alias); + queryWrapper.orderByDesc(alias + RefUtil.fieldNameUlc(RainAlarm::getId)); + return queryWrapper; + } + + private List dealList(List list) { + return list; + } + + @Override + public void add(RainAlarm rainAlarm) { + rainAlarm.setId(null); + baseMapper.insert(rainAlarm); + } + + @Override + public void edit(RainAlarm rainAlarm) { + RainAlarm oldRainAlarm = baseMapper.selectById(rainAlarm.getId()); + if (oldRainAlarm == null) { + throw new OpenAlertException("未找到对应实体"); + } + baseMapper.updateById(rainAlarm); + } + + @Override + public void delete(String id) { + RainAlarm rainAlarm = baseMapper.selectById(id); + if (rainAlarm == null) { + throw new OpenAlertException("未找到对应实体"); + } + baseMapper.deleteById(id); + } + + @Override + public RainAlarm queryById(String id) { + RainAlarm entity = getById(id); + if (entity == null) { + throw new OpenAlertException("未找到对应实体"); + } + return entity; + } + +} diff --git a/src/main/java/com/zhgd/xmgl/modules/environment/service/impl/RainDevServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/environment/service/impl/RainDevServiceImpl.java new file mode 100644 index 000000000..89c116171 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/environment/service/impl/RainDevServiceImpl.java @@ -0,0 +1,93 @@ +package com.zhgd.xmgl.modules.environment.service.impl; + +import com.zhgd.jeecg.common.execption.OpenAlertException; +import com.zhgd.xmgl.modules.environment.entity.RainDev; +import com.zhgd.xmgl.modules.environment.mapper.RainDevMapper; +import com.zhgd.xmgl.modules.environment.service.IRainDevService; +import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zhgd.jeecg.common.system.query.QueryGenerator; +import com.zhgd.xmgl.util.PageUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import java.util.HashMap; +import java.util.List; + +import com.zhgd.xmgl.util.RefUtil; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description: 雨量监测设备 + * @author: pds + * @date: 2024-06-24 + * @version: V1.0 + */ +@Service +@Transactional(rollbackFor = Exception.class) +public class RainDevServiceImpl extends ServiceImpl implements IRainDevService { + @Autowired + private RainDevMapper rainDevMapper; + + @Override + public IPage queryPageList(HashMap param) { + QueryWrapper queryWrapper = getQueryWrapper(param); + Page page = PageUtil.getPage(param); + IPage pageList = this.page(page, queryWrapper); + pageList.setRecords(dealList(pageList.getRecords())); + return pageList; + } + + @Override + public List queryList(HashMap param) { + QueryWrapper queryWrapper = getQueryWrapper(param); + return dealList(this.list(queryWrapper)); + } + + private QueryWrapper getQueryWrapper(HashMap param) { + String alias = ""; + QueryWrapper queryWrapper = QueryGenerator.initPageQueryWrapper(RainDev.class, param, alias); + queryWrapper.orderByDesc(alias + RefUtil.fieldNameUlc(RainDev::getId)); + return queryWrapper; + } + + private List dealList(List list) { + return list; + } + + @Override + public void add(RainDev rainDev) { + rainDev.setId(null); + baseMapper.insert(rainDev); + } + + @Override + public void edit(RainDev rainDev) { + RainDev oldRainDev = baseMapper.selectById(rainDev.getId()); + if (oldRainDev == null) { + throw new OpenAlertException("未找到对应实体"); + } + baseMapper.updateById(rainDev); + } + + @Override + public void delete(String id) { + RainDev rainDev = baseMapper.selectById(id); + if (rainDev == null) { + throw new OpenAlertException("未找到对应实体"); + } + baseMapper.deleteById(id); + } + + @Override + public RainDev queryById(String id) { + RainDev entity = getById(id); + if (entity == null) { + throw new OpenAlertException("未找到对应实体"); + } + return entity; + } + +} diff --git a/src/main/java/com/zhgd/xmgl/modules/environment/service/impl/RainRecordServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/environment/service/impl/RainRecordServiceImpl.java new file mode 100644 index 000000000..60b0b4cd0 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/environment/service/impl/RainRecordServiceImpl.java @@ -0,0 +1,93 @@ +package com.zhgd.xmgl.modules.environment.service.impl; + +import com.zhgd.jeecg.common.execption.OpenAlertException; +import com.zhgd.xmgl.modules.environment.entity.RainRecord; +import com.zhgd.xmgl.modules.environment.mapper.RainRecordMapper; +import com.zhgd.xmgl.modules.environment.service.IRainRecordService; +import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zhgd.jeecg.common.system.query.QueryGenerator; +import com.zhgd.xmgl.util.PageUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import java.util.HashMap; +import java.util.List; + +import com.zhgd.xmgl.util.RefUtil; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description: 雨量监测记录 + * @author: pds + * @date: 2024-06-24 + * @version: V1.0 + */ +@Service +@Transactional(rollbackFor = Exception.class) +public class RainRecordServiceImpl extends ServiceImpl implements IRainRecordService { + @Autowired + private RainRecordMapper rainRecordMapper; + + @Override + public IPage queryPageList(HashMap param) { + QueryWrapper queryWrapper = getQueryWrapper(param); + Page page = PageUtil.getPage(param); + IPage pageList = this.page(page, queryWrapper); + pageList.setRecords(dealList(pageList.getRecords())); + return pageList; + } + + @Override + public List queryList(HashMap param) { + QueryWrapper queryWrapper = getQueryWrapper(param); + return dealList(this.list(queryWrapper)); + } + + private QueryWrapper getQueryWrapper(HashMap param) { + String alias = ""; + QueryWrapper queryWrapper = QueryGenerator.initPageQueryWrapper(RainRecord.class, param, alias); + queryWrapper.orderByDesc(alias + RefUtil.fieldNameUlc(RainRecord::getId)); + return queryWrapper; + } + + private List dealList(List list) { + return list; + } + + @Override + public void add(RainRecord rainRecord) { + rainRecord.setId(null); + baseMapper.insert(rainRecord); + } + + @Override + public void edit(RainRecord rainRecord) { + RainRecord oldRainRecord = baseMapper.selectById(rainRecord.getId()); + if (oldRainRecord == null) { + throw new OpenAlertException("未找到对应实体"); + } + baseMapper.updateById(rainRecord); + } + + @Override + public void delete(String id) { + RainRecord rainRecord = baseMapper.selectById(id); + if (rainRecord == null) { + throw new OpenAlertException("未找到对应实体"); + } + baseMapper.deleteById(id); + } + + @Override + public RainRecord queryById(String id) { + RainRecord entity = getById(id); + if (entity == null) { + throw new OpenAlertException("未找到对应实体"); + } + return entity; + } + +} diff --git a/src/main/java/com/zhgd/xmgl/task/RainTask.java b/src/main/java/com/zhgd/xmgl/task/RainTask.java new file mode 100644 index 000000000..380550f05 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/task/RainTask.java @@ -0,0 +1,237 @@ +package com.zhgd.xmgl.task; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zhgd.redis.lock.RedisRepository; +import com.zhgd.xmgl.modules.project.entity.Project; +import com.zhgd.xmgl.modules.project.mapper.ProjectMapper; +import com.zhgd.xmgl.modules.environment.entity.RainAlarm; +import com.zhgd.xmgl.modules.environment.entity.RainDev; +import com.zhgd.xmgl.modules.environment.entity.RainRecord; +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 com.zhgd.xmgl.util.RenZhiUtil; +import lombok.extern.slf4j.Slf4j; +import net.javacrumbs.shedlock.core.SchedulerLock; +import org.jetbrains.annotations.Nullable; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +@Slf4j +@RestController +@RequestMapping("xmgl/task") +public class RainTask { + public static final String REDIS_RAIN_ALARM_TASK_START_TIME = "getRainAlarmTaskStartTime"; + @Resource + @Lazy + private IRainRecordService rainRecordService; + @Resource + @Lazy + private IRainAlarmService rainAlarmService; + @Resource + @Lazy + private IRainDevService rainDevService; + @Lazy + @Autowired + private ProjectMapper projectMapper; + @Lazy + @Autowired + private RedisRepository redisRepository; + + /** + * 获取实时数据 + */ + @Scheduled(cron = "0 */2 * * * ?") + @SchedulerLock(name = "getRainRecordTask", lockAtMostFor = 1000 * 60, lockAtLeastFor = 1000 * 60) + @RequestMapping("getRainRecordTask") + public void getRainRecordTask() { + List projectList = projectMapper.selectList(new LambdaQueryWrapper() + .ne(Project::getJnrzckAccount, "") + .ne(Project::getJnrzckPw, "") + ); + for (Project project : projectList) { + try { + saveAllRecord(project); + } catch (Exception e) { + log.error("", e); + } + } + } + + private void saveAllRecord(Project project) { + List devs = rainDevService.list(new LambdaQueryWrapper().eq(RainDev::getProjectSn, project.getProjectSn())); + if (CollUtil.isEmpty(devs)) { + return; + } + Map devSnMap = devs.stream().collect(Collectors.toMap(RainDev::getDevSn, Function.identity())); + JSONArray datas = RenZhiUtil.getRealTimeDataByDeviceAddr(StrUtil.join(",", devs.stream().map(RainDev::getDevSn).collect(Collectors.toList())), project.getJnrzckAccount(), project.getJnrzckPw()); + if (CollUtil.isEmpty(datas)) { + log.info("获取实时数据为空,项目名称:{}", project.getProjectName()); + return; + } + List records = new ArrayList<>(); + for (int i = 0; i < datas.size(); i++) { + JSONObject dataJo = datas.getJSONObject(i); + JSONArray dataItemJa = dataJo.getJSONArray("dataItem"); + String deviceAddr = dataJo.getString("deviceAddr"); + RainRecord record = new RainRecord(); + for (int j = 0; j < dataItemJa.size(); j++) { + JSONObject itemJo = dataItemJa.getJSONObject(j); + Integer nodeId = itemJo.getInteger("nodeId"); + JSONArray registerItemJa = itemJo.getJSONArray("registerItem"); + if (nodeId == 1) { + //风力、风速 + record.setWindForce(getDouble(registerItemJa, 0)); + record.setWindSpeed(getDouble(registerItemJa, 1)); + } else if (nodeId == 2) { + record.setWindDirection(getString(registerItemJa, 0)); + } else if (nodeId == 20) { + record.setAccumulatedRainfall(getDouble(registerItemJa, 0)); + } else if (nodeId == 21) { + record.setInstantaneousRainfall(getDouble(registerItemJa, 0)); + record.setCurrentRainfall(getDouble(registerItemJa, 1)); + } else if (nodeId == 22) { + record.setDailyRainfall(getDouble(registerItemJa, 0)); + } else if (nodeId == 11) { + record.setAirTemperature(getDouble(registerItemJa, 0)); + record.setAirHumidity(getDouble(registerItemJa, 1)); + } else if (nodeId == 14) { + record.setAtmosphericPressure(getDouble(registerItemJa, 0)); + } + } + record.setRecordTime(new Date(dataJo.getLong("timeStamp"))); + record.setDevSn(deviceAddr); + record.setProjectSn(devSnMap.get(deviceAddr).getProjectSn()); + records.add(record); + } + rainRecordService.saveBatch(records); + } + + private String getString(JSONArray registerItemJa, int index) { + return Optional.ofNullable(registerItemJa.getJSONObject(index)).map(o -> o.getString("data")).orElse(null); + } + + @Nullable + private Double getDouble(JSONArray registerItemJa, int index) { + return Optional.ofNullable(registerItemJa.getJSONObject(index)).map(o -> o.getDouble("data")).orElse(null); + } + + /** + * 获取报警数据 + */ + @Scheduled(cron = "0 */6 * * * ?") + @SchedulerLock(name = "getRainAlarmTask", lockAtMostFor = 1000 * 60 * 5, lockAtLeastFor = 1000 * 60 * 3) + @RequestMapping("getRainAlarmTask") + public void getRainAlarmTask() { + List projectList = projectMapper.selectList(new LambdaQueryWrapper() + .ne(Project::getJnrzckAccount, "") + .ne(Project::getJnrzckPw, "") + ); + String start; + Object o = redisRepository.get(REDIS_RAIN_ALARM_TASK_START_TIME); + if (o != null) { + start = o.toString(); + } else { + start = DateUtil.format(DateUtil.offsetMinute(new Date(), -5), "yyyy-MM-dd HH:mm"); + } + String end = DateUtil.format(new Date(), "yyyy-MM-dd HH:mm"); + redisRepository.set(REDIS_RAIN_ALARM_TASK_START_TIME, end); + for (Project project : projectList) { + try { + saveAllAlarm(project, start, end); + } catch (Exception e) { + log.error("", e); + } + } + + } + + private void saveAllAlarm(Project project, String start, String end) { + List devs = rainDevService.list(new LambdaQueryWrapper().eq(RainDev::getProjectSn, project.getProjectSn())); + if (CollUtil.isEmpty(devs)) { + return; + } + Map devSnMap = devs.stream().collect(Collectors.toMap(RainDev::getDevSn, Function.identity())); + ArrayList alarms = new ArrayList<>(); + String token = RenZhiUtil.getToken(project.getJnrzckAccount(), project.getJnrzckPw()); + for (RainDev dev : devs) { + for (Integer nodeId : Arrays.asList(1, 2, 20, 21, 22, 11, 14)) { + JSONArray dataJa = RenZhiUtil.getAlarmRecordList(dev.getDevSn(), token, nodeId, start, end); + try { + Thread.sleep(200); + } catch (InterruptedException e) { + e.printStackTrace(); + } + if (CollUtil.isEmpty(dataJa)) { + continue; + } + for (int j = 0; j < dataJa.size(); j++) { + JSONObject jo = dataJa.getJSONObject(j); + RainAlarm alarm = new RainAlarm(); + alarm.setAlarmContent(getAlarmContent(jo)); + alarm.setAlarmVal(jo.getDouble("dataValue")); + alarm.setProjectSn(dev.getProjectSn()); + alarm.setAlarmTime(new Date(jo.getLong("recordTime"))); + alarms.add(alarm); + } + } + } + rainAlarmService.saveBatch(alarms); + } + + private String getAlarmContent(JSONObject jo) { + /* + alarmLevel int 报警级别: + 25 + 1: 报警(超报警上限) + 2: 预警(超预警上限) + 3: 预警(超预警下限) + 4:报警(超报警下限) + -1: 离线报警 + -2:遥调(开关量)报警 + dataValue Double 报警值 + alarmRange String 报警限值 + */ + String factorName = jo.getString("factorName"); + Integer alarmLevel = jo.getInteger("alarmLevel"); + if (Objects.equals(alarmLevel, 1) || Objects.equals(alarmLevel, 2) || Objects.equals(alarmLevel, 3) || Objects.equals(alarmLevel, 4)) { + return StrUtil.format("{} {},报警值:{},报警限值:{}", factorName, getAlarmLevelStr(alarmLevel), jo.getDouble("dataValue"), jo.getString("alarmRange")); + } else { + return StrUtil.format("{} {},报警值:{}", factorName, getAlarmLevelStr(alarmLevel), jo.getString("dataValue")); + } + } + + private String getAlarmLevelStr(Integer alarmLevel) { + String s = ""; + switch (alarmLevel) { + case 1: + s = "报警(超报警上限)"; + case 2: + s = "预警(超预警上限)"; + case 3: + s = "预警(超预警下限)"; + case 4: + s = "报警(超报警下限)"; + case -1: + s = "离线报警"; + case -2: + s = "遥调(开关量)报警"; + } + return s; + } + + +} diff --git a/src/main/java/com/zhgd/xmgl/util/RenZhiUtil.java b/src/main/java/com/zhgd/xmgl/util/RenZhiUtil.java new file mode 100644 index 000000000..d679b4d70 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/util/RenZhiUtil.java @@ -0,0 +1,83 @@ +package com.zhgd.xmgl.util; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class RenZhiUtil { + public static final String host = "http://www.0531yun.com"; + + /** + * 根据设备地址查询实时数据 + * + * @param devSns + * @param jnrzckAccount + * @param jnrzckPw + * @return + */ + public static JSONArray getRealTimeDataByDeviceAddr(String devSns, String jnrzckAccount, String jnrzckPw) { + String token = getToken(jnrzckAccount, jnrzckPw); + String url = StrUtil.format("{}/api/data/getRealTimeDataByDeviceAddr?deviceAddrs={}", host, devSns); + log.info("url:{},authorization:{}", url, token); + String rsp = HttpRequest.get(url) + .header("authorization", token) + .timeout(5000)//超时,毫秒 + .execute().body(); + JSONObject rspJo = JSONObject.parseObject(rsp); + log.info("rs:{}", rspJo.toJSONString()); + try { + return rspJo.getJSONArray("data"); + } catch (Exception e) { + throw new RuntimeException("根据设备地址查询实时数据失败:", e); + } + } + + /** + * 获取报警数据列表 + * + * @param devSn + * @param nodeId + * @return + */ + public static JSONArray getAlarmRecordList(String devSn, String token, Integer nodeId, String startTime, String endTime) { + String url = StrUtil.format("{}/api/data/alarmRecordList?deviceAddr={}&nodeId={}&startTime={}&endTime={}", host, devSn, nodeId, startTime, endTime); + log.info("url:{},authorization:{}", url, token); + String rsp = HttpRequest.get(url) + .header("authorization", token) + .timeout(5000)//超时,毫秒 + .execute().body(); + JSONObject rspJo = JSONObject.parseObject(rsp); + log.info("rs:{}", rspJo.toJSONString()); + try { + return rspJo.getJSONArray("data"); + } catch (Exception e) { + throw new RuntimeException("获取报警数据列表失败:", e); + } + } + + /** + * 根据用户名和密码获取 token + * + * @param jnrzckAccount + * @param jnrzckPw + * @return + */ + public static String getToken(String jnrzckAccount, String jnrzckPw) { + String url = StrUtil.format("{}/api/getToken?loginName={}&password={}", host, jnrzckAccount, jnrzckPw); + log.info("url:{}", url); + String rsp = HttpUtil.get(url); + JSONObject rspJo = JSONObject.parseObject(rsp); + log.info("rs:{}", rspJo.toJSONString()); + try { + return rspJo.getJSONObject("data").getString("token"); + } catch (Exception e) { + throw new RuntimeException("获取token失败:", e); + } + } + + +}