新增pad端接口:温湿度计-设备信息查询、抄表、报修、抄表日志查询、告警日志查询

This commit is contained in:
1378012178@qq.com 2025-10-24 09:20:56 +08:00
parent 3a4a80af87
commit 22d2b8ed8d
9 changed files with 346 additions and 32 deletions

View File

@ -13,6 +13,9 @@ import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
/**
* 电表水表日志
*/
@RestController
@RequestMapping("/api/iot/requestLog")
public class IotApiRequestLogApi {

View File

@ -11,6 +11,9 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
/**
* 智能电表
*/
@RestController
@RequestMapping("/api/iot/electricityMeter")
public class ElectricityMeterApi {

View File

@ -0,0 +1,106 @@
package com.nu.modules.pad.iot.humiddevice.api;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nu.entity.HumidAlarmEntity;
import com.nu.entity.HumidDeviceEntity;
import com.nu.modules.humiddevice.api.IHumidAlarmApi;
import com.nu.modules.humiddevice.api.IHumidDeviceApi;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
/**
* 温湿度计
*/
@RestController
@RequestMapping("/api/iot/humidDevice")
public class HumidDeviceApi {
@Autowired
private IHumidDeviceApi humidDeviceApi;
@Autowired
private IHumidAlarmApi humidAlarmApi;
/**
* 分页列表查询
*
* @param humidDeviceEntity
* @param pageNo
* @param pageSize
* @param req
* @return
*/
@GetMapping(value = "/list")
public Result<IPage<HumidDeviceEntity>> queryPageList(HumidDeviceEntity humidDeviceEntity,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) {
return Result.ok(humidDeviceApi.list(humidDeviceEntity, pageNo, pageSize, req));
}
/**
* 抄表
*
* @param humidDeviceEntity
* @return
*/
@GetMapping(value = "/updateDeviceRealTime")
public Result<String> updateDeviceRealTime(HumidDeviceEntity humidDeviceEntity) {
String result = humidDeviceApi.updateDeviceRealTime(humidDeviceEntity);
if (!result.equals("")) {
return Result.error("抄表失败:" + result);
}
return Result.OK("抄表成功");
}
/**
* 报修
*/
@AutoLog(value = "设备报修")
@ApiOperation(value = "设备报修", notes = "设备报修")
@RequestMapping(value = "/baoxiu", method = {RequestMethod.PUT, RequestMethod.POST})
public Result<String> baoxiu(@RequestBody HumidDeviceEntity humidDeviceEntity) {
humidDeviceApi.baoxiu(humidDeviceEntity);
return Result.OK("操作成功!");
}
/**
* 抄表日志
*
* @param humidDeviceEntity
* @param pageNo
* @param pageSize
* @param req
* @return
*/
@GetMapping(value = "/logList")
public Result<IPage<HumidDeviceEntity>> queryLogPageList(HumidDeviceEntity humidDeviceEntity,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) {
return Result.ok(humidDeviceApi.queryLogPageList(humidDeviceEntity, pageNo, pageSize, req));
}
/**
* 警告日志
*
* @param humidAlarmEntity
* @param pageNo
* @param pageSize
* @param req
* @return
*/
@GetMapping(value = "/jglist")
public Result<IPage<HumidAlarmEntity>> queryPageList(HumidAlarmEntity humidAlarmEntity,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) {
return Result.OK(humidAlarmApi.list(humidAlarmEntity, pageNo, pageSize, req));
}
}

View File

@ -11,6 +11,9 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
/**
* 智能水表
*/
@RestController
@RequestMapping("/api/iot/water")
public class WaterApi {

View File

@ -0,0 +1,78 @@
package com.nu.entity;
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 io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import java.io.Serializable;
import java.util.Date;
/**
* <p>Class:易维联-温湿度计告警Entity
* <p>功能描述:功能描述
*/
@Data
@TableName("nu_iot_yiweilian_humid_alarm")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="nu_iot_yiweilian_humid_alarm对象", description="易维联-温湿设备告警")
public class HumidAlarmEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "主键")
private Integer id;
@Excel(name = "设备SN号", width = 15)
@ApiModelProperty(value = "设备SN号")
private String sn;
@Excel(name = "告警ID", width = 15)
@ApiModelProperty(value = "告警ID")
private String alarmId;
@Excel(name = "告警状态ID", width = 15)
@ApiModelProperty(value = "告警状态ID")
private String wrId;
@Excel(name = "告警数据", width = 15)
@ApiModelProperty(value = "告警数据")
private String wrData;
@Excel(name = "告警内容", width = 15)
@ApiModelProperty(value = "告警内容")
private String wrContent;
@Excel(name = "告警记录时间", width = 15)
@ApiModelProperty(value = "告警记录时间")
private String wrDate;
@Excel(name = "清除告警ID", width = 15)
@ApiModelProperty(value = "清除告警ID")
private String clearAlarmId;
@Excel(name = "清除告警状态ID", width = 15)
@ApiModelProperty(value = "清除告警状态ID")
private String clearId;
@Excel(name = "清除告警数据", width = 15)
@ApiModelProperty(value = "清除告警数据")
private String clearData;
@Excel(name = "清除告警内容", width = 15)
@ApiModelProperty(value = "清除告警内容")
private String clearContent;
@Excel(name = "清除告警记录时间", width = 15)
@ApiModelProperty(value = "清除告警记录时间")
private String clearDate;
@Excel(name = "状态", width = 15)
@ApiModelProperty(value = "状态")
private String status; //状态 0告警 1清除
@TableField(exist = false)
private Date alarmStartTime;
@TableField(exist = false)
private Date alarmEndTime;
@TableField(exist = false)
private Date clearStartTime;
@TableField(exist = false)
private Date clearEndTime;
}

View File

@ -0,0 +1,11 @@
package com.nu.modules.humiddevice.api;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.nu.entity.HumidAlarmEntity;
import com.nu.entity.HumidDeviceEntity;
import javax.servlet.http.HttpServletRequest;
public interface IHumidAlarmApi {
IPage<HumidAlarmEntity> list(HumidAlarmEntity humidAlarmEntity, Integer pageNo, Integer pageSize, HttpServletRequest req);
}

View File

@ -0,0 +1,16 @@
package com.nu.modules.humiddevice.api;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.nu.entity.HumidDeviceEntity;
import javax.servlet.http.HttpServletRequest;
public interface IHumidDeviceApi {
IPage<HumidDeviceEntity> list(HumidDeviceEntity humidDeviceEntity, Integer pageNo, Integer pageSize, HttpServletRequest req);
String updateDeviceRealTime(HumidDeviceEntity humidDeviceEntity);
void baoxiu(HumidDeviceEntity humidDeviceEntity);
IPage<HumidDeviceEntity> queryLogPageList(HumidDeviceEntity humidDeviceEntity, Integer pageNo, Integer pageSize, HttpServletRequest req);
}

View File

@ -5,81 +5,93 @@ import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nu.entity.HumidAlarmEntity;
import com.nu.modules.humiddevice.api.IHumidAlarmApi;
import com.nu.modules.yiweilian.humid.entity.HumidAlarm;
import com.nu.modules.yiweilian.humid.mapper.HumidAlarmMapper;
import com.nu.modules.yiweilian.humid.service.IHumidAlarmService;
import com.nu.modules.yiweilian.utils.YiweilianApi;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.util.DateUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
@Service
public class HumidAlarmServiceImpl extends ServiceImpl<HumidAlarmMapper, HumidAlarm> implements IHumidAlarmService {
public class HumidAlarmServiceImpl extends ServiceImpl<HumidAlarmMapper, HumidAlarm> implements IHumidAlarmService, IHumidAlarmApi {
@Autowired
YiweilianApi yiweilianApi;
@Lazy
@Autowired
private HumidAlarmServiceImpl syncImpl;
public IPage<HumidAlarm> findPage(Page<HumidAlarm> page, HumidAlarm HumidAlarm){
return baseMapper.findPage(page,HumidAlarm);
public IPage<HumidAlarm> findPage(Page<HumidAlarm> page, HumidAlarm HumidAlarm) {
return baseMapper.findPage(page, HumidAlarm);
}
/**
* 获取告警数据
*
* @param HumidAlarm
* @return
*/
@Override
public String getAlarm(HumidAlarm HumidAlarm){
Map<String, Object> params = getParmas(0,1000,HumidAlarm);
return updateAlarm(params,HumidAlarm);
public String getAlarm(HumidAlarm HumidAlarm) {
Map<String, Object> params = getParmas(0, 1000, HumidAlarm);
return updateAlarm(params, HumidAlarm);
}
/**
* 获取接口请求参数
*
* @param page
* @param limit
* @param HumidAlarm
* @return
*/
private Map<String, Object> getParmas(int page,int limit,HumidAlarm HumidAlarm){
private Map<String, Object> getParmas(int page, int limit, HumidAlarm HumidAlarm) {
Map<String, Object> params = new HashMap<>();
params.put("rows", limit);
params.put("page", page);
params.put("type", 2);//根据时间排序 1降序 2升序 ,此字段貌似不好使
if(HumidAlarm.getSn()!=null&&!HumidAlarm.getSn().equals("")){
if (HumidAlarm.getSn() != null && !HumidAlarm.getSn().equals("")) {
params.put("sn", HumidAlarm.getSn());
}
if(HumidAlarm.getAlarmStartTime()!=null){
params.put("startTime", DateUtils.formatDate(HumidAlarm.getAlarmStartTime(),"yyyy-MM-dd HH:mm:ss"));
if (HumidAlarm.getAlarmStartTime() != null) {
params.put("startTime", DateUtils.formatDate(HumidAlarm.getAlarmStartTime(), "yyyy-MM-dd HH:mm:ss"));
}
if(HumidAlarm.getAlarmEndTime()!=null){
params.put("endTime", DateUtils.formatDate(HumidAlarm.getAlarmEndTime(),"yyyy-MM-dd HH:mm:ss"));
if (HumidAlarm.getAlarmEndTime() != null) {
params.put("endTime", DateUtils.formatDate(HumidAlarm.getAlarmEndTime(), "yyyy-MM-dd HH:mm:ss"));
}
return params;
}
/**
* 更新告警数据
*
* @param map
* @param HumidAlarm
* @return
*/
private String updateAlarm(Map<String,Object> map,HumidAlarm HumidAlarm){
private String updateAlarm(Map<String, Object> map, HumidAlarm HumidAlarm) {
String errorMsg = "";
String responseStr = yiweilianApi.getWarningData(map);
JSONObject jsonObject = new JSONObject(responseStr);
Integer responseCode = jsonObject.getInt("code");
if(responseCode.equals(0)){
if (responseCode.equals(0)) {
JSONObject dataObj = jsonObject.getJSONObject("data");
Integer count = dataObj.getInt("count");
Integer limit = dataObj.getInt("rows");
Integer page = dataObj.getInt("page");
JSONArray dataArr = dataObj.getJSONArray("dataList");
if(dataArr.size()>0){
if (dataArr.size() > 0) {
List<JSONObject> list = new ArrayList<>();
for (int i = 0; i < dataArr.size(); i++) {
list.add(dataArr.getJSONObject(i));
@ -91,10 +103,10 @@ public class HumidAlarmServiceImpl extends ServiceImpl<HumidAlarmMapper, HumidAl
});
dataArr = new JSONArray(list);
}
log.info("排序后:{}",dataArr.toString());
for(int i=0;i<dataArr.size();i++){
log.info("排序后:{}", dataArr.toString());
for (int i = 0; i < dataArr.size(); i++) {
HumidAlarm ha = new HumidAlarm();
JSONObject json = (JSONObject)dataArr.get(i);
JSONObject json = (JSONObject) dataArr.get(i);
String alarmId = json.getStr("id");
String sn = json.getStr("sn");
String wrId = json.getStr("wrId");
@ -105,18 +117,18 @@ public class HumidAlarmServiceImpl extends ServiceImpl<HumidAlarmMapper, HumidAl
ha.setAlarmId(alarmId);
ha.setSn(sn);
Integer wrIdint = Integer.parseInt(wrId);
if(wrIdint>100){
wrIdint = wrIdint -100;
ha.setWrId(""+wrIdint);
if (wrIdint > 100) {
wrIdint = wrIdint - 100;
ha.setWrId("" + wrIdint);
ha.setClearAlarmId(alarmId);
ha.setClearId(wrId);
ha.setClearData(wrData);
ha.setClearContent(wrContent);
ha.setClearDate(wrDate);
baseMapper.updateAlarm(ha);
}else{
} else {
HumidAlarm entity = baseMapper.getHumidAlarm(ha);
if(entity == null){
if (entity == null) {
ha.setWrId(wrId);
ha.setWrData(wrData);
ha.setWrContent(wrContent);
@ -125,14 +137,36 @@ public class HumidAlarmServiceImpl extends ServiceImpl<HumidAlarmMapper, HumidAl
}
}
}
if((page+1)*limit<count){
Map<String, Object> params = getParmas(page+1,limit,HumidAlarm);
errorMsg += updateAlarm(params,HumidAlarm);
if ((page + 1) * limit < count) {
Map<String, Object> params = getParmas(page + 1, limit, HumidAlarm);
errorMsg += updateAlarm(params, HumidAlarm);
}
}else{
} else {
errorMsg = jsonObject.getStr("msg");
}
return errorMsg;
}
@Override
public IPage<HumidAlarmEntity> list(HumidAlarmEntity humidAlarmEntity, Integer pageNo, Integer pageSize, HttpServletRequest req) {
HumidAlarm humidAlarm = new HumidAlarm();
BeanUtils.copyProperties(humidAlarmEntity,humidAlarm);
Page<HumidAlarm> page = new Page<HumidAlarm>(pageNo, pageSize);
IPage<HumidAlarm> pageList = syncImpl.findPage(page, humidAlarm);
List<HumidAlarmEntity> entityList = pageList.getRecords().stream()
.map(alarm -> {
HumidAlarmEntity entity = new HumidAlarmEntity();
BeanUtils.copyProperties(alarm, entity);
return entity;
})
.collect(Collectors.toList());
// 构造新的分页对象
IPage<HumidAlarmEntity> resultPage = new Page<>(pageList.getCurrent(), pageList.getSize(), pageList.getTotal());
resultPage.setRecords(entityList);
return resultPage;
}
}

View File

@ -10,6 +10,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nu.dto.IotHumidDeviceMQDto;
import com.nu.entity.HumidDeviceEntity;
import com.nu.modules.humiddevice.api.IHumidDeviceApi;
import com.nu.modules.syncLog.entity.SyncBizLog;
import com.nu.modules.syncLog.service.ISyncBizLogService;
import com.nu.modules.yiweilian.humid.entity.HumidDevice;
@ -21,20 +23,20 @@ import lombok.extern.slf4j.Slf4j;
import me.zhyd.oauth.utils.UuidUtils;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.system.vo.LoginUser;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
@Service
public class HumidDeviceServiceImpl extends ServiceImpl<HumidDeviceMapper, HumidDevice> implements IHumidDeviceService {
public class HumidDeviceServiceImpl extends ServiceImpl<HumidDeviceMapper, HumidDevice> implements IHumidDeviceService, IHumidDeviceApi {
@Autowired
YiweilianApi yiweilianApi;
@ -542,5 +544,63 @@ public class HumidDeviceServiceImpl extends ServiceImpl<HumidDeviceMapper, Humid
return true;
}
@Override
public IPage<HumidDeviceEntity> list(HumidDeviceEntity humidDeviceEntity, Integer pageNo, Integer pageSize, HttpServletRequest req) {
HumidDevice humidDevice = new HumidDevice();
BeanUtils.copyProperties(humidDeviceEntity, humidDevice);
Page<HumidDevice> page = new Page<HumidDevice>(pageNo, pageSize);
QueryWrapper<HumidDevice> queryWrapper = QueryGenerator.initQueryWrapper(humidDevice, req.getParameterMap());
IPage<HumidDevice> pageList = syncImpl.findPage(page, humidDevice);
List<HumidDeviceEntity> entityList = pageList.getRecords().stream()
.map(device -> {
HumidDeviceEntity entity = new HumidDeviceEntity();
BeanUtils.copyProperties(device, entity);
return entity;
})
.collect(Collectors.toList());
// 构造新的 IPage<HumidDeviceEntity>
IPage<HumidDeviceEntity> resultPage = new Page<>(pageList.getCurrent(), pageList.getSize(), pageList.getTotal());
resultPage.setRecords(entityList);
return resultPage;
}
@Override
public String updateDeviceRealTime(HumidDeviceEntity humidDeviceEntity) {
HumidDevice humidDevice = new HumidDevice();
BeanUtils.copyProperties(humidDeviceEntity, humidDevice);
return syncImpl.updateDeviceRealTime(humidDevice);
}
@Override
public void baoxiu(HumidDeviceEntity humidDeviceEntity) {
HumidDevice humidDevice = new HumidDevice();
BeanUtils.copyProperties(humidDeviceEntity, humidDevice);
syncImpl.baoxiu(humidDevice);
}
@Override
public IPage<HumidDeviceEntity> queryLogPageList(HumidDeviceEntity humidDeviceEntity, Integer pageNo, Integer pageSize, HttpServletRequest req) {
HumidDevice humidDevice = new HumidDevice();
BeanUtils.copyProperties(humidDeviceEntity, humidDevice);
Page<HumidDevice> page = new Page<HumidDevice>(pageNo, pageSize);
IPage<HumidDevice> pageList = syncImpl.findLogPage(page, humidDevice);
List<HumidDeviceEntity> entityList = pageList.getRecords().stream()
.map(device -> {
HumidDeviceEntity entity = new HumidDeviceEntity();
BeanUtils.copyProperties(device, entity);
return entity;
})
.collect(Collectors.toList());
// 构造返回的分页对象
IPage<HumidDeviceEntity> resultPage = new Page<>(pageList.getCurrent(), pageList.getSize(), pageList.getTotal());
resultPage.setRecords(entityList);
return resultPage;
}
}