设备双MAC在线状态
This commit is contained in:
parent
334420cbe5
commit
903884cecb
|
@ -91,6 +91,11 @@ public class IotConstants {
|
||||||
*/
|
*/
|
||||||
public static final String COMMAND_SET_VOICE = "dj_set";
|
public static final String COMMAND_SET_VOICE = "dj_set";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 命令 设置总用电量
|
||||||
|
*/
|
||||||
|
public static final String COMMAND_SET_TOTAL_ELE = "";
|
||||||
|
|
||||||
/**----------------------------命令end----------------------------*/
|
/**----------------------------命令end----------------------------*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ import com.ruoyi.iot.domain.IotDeviceInfo;
|
||||||
import com.ruoyi.iot.domain.response.CommandResponse;
|
import com.ruoyi.iot.domain.response.CommandResponse;
|
||||||
import com.ruoyi.iot.interfaces.IotDevice;
|
import com.ruoyi.iot.interfaces.IotDevice;
|
||||||
import com.ruoyi.ss.device.domain.enums.DeviceOnlineStatus;
|
import com.ruoyi.ss.device.domain.enums.DeviceOnlineStatus;
|
||||||
|
import com.ruoyi.ss.device.domain.vo.DeviceVO;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -153,4 +154,19 @@ public interface IotService {
|
||||||
boolean setVoice(IotDevice device, long seconds);
|
boolean setVoice(IotDevice device, long seconds);
|
||||||
|
|
||||||
boolean setVoice(String mac, String productId, long seconds);
|
boolean setVoice(String mac, String productId, long seconds);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置总用电量
|
||||||
|
* @param device 设备
|
||||||
|
* @param totalEle 总用电量(度)
|
||||||
|
*/
|
||||||
|
boolean setTotalEle(IotDevice device, BigDecimal totalEle);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置总用电量
|
||||||
|
* @param deviceName 设备MAC
|
||||||
|
* @param productId 产品ID
|
||||||
|
* @param totalEle 总用电量(度)
|
||||||
|
*/
|
||||||
|
boolean setTotalEle(String deviceName, String productId, BigDecimal totalEle);
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,7 +65,7 @@ public class IotServiceImpl implements IotService {
|
||||||
// 查询OneNet设备在线状态
|
// 查询OneNet设备在线状态
|
||||||
@Override
|
@Override
|
||||||
public DeviceOnlineStatus getOnlineStatus(String deviceName, String productId) {
|
public DeviceOnlineStatus getOnlineStatus(String deviceName, String productId) {
|
||||||
if (StringUtils.isBlank(deviceName)) {
|
if (StringUtils.isAnyBlank(deviceName, productId)) {
|
||||||
return DeviceOnlineStatus.OFFLINE;
|
return DeviceOnlineStatus.OFFLINE;
|
||||||
}
|
}
|
||||||
// CommandResponse response = sendCommand(deviceName, "111");
|
// CommandResponse response = sendCommand(deviceName, "111");
|
||||||
|
@ -476,5 +476,33 @@ public class IotServiceImpl implements IotService {
|
||||||
return res.isSuccess();
|
return res.isSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean setTotalEle(IotDevice device, BigDecimal totalEle) {
|
||||||
|
if (device == null || totalEle.compareTo(BigDecimal.ZERO) < 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
boolean res = this.setTotalEle(device.iotMac1(), device.getProductId(), totalEle);
|
||||||
|
ServiceUtil.assertion(!res, "设备MAC1设置总电量失败");
|
||||||
|
return res;
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.warn("设备MAC1设置总电量失败: {}", e.getMessage());
|
||||||
|
return this.setTotalEle(device.iotMac2(), device.getProductId(), totalEle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean setTotalEle(String deviceName, String productId, BigDecimal totalEle) {
|
||||||
|
if (StringUtils.isAnyBlank(deviceName, productId)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (totalEle.compareTo(BigDecimal.ZERO) < 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
CommandResponse res = this.sendCommand(deviceName, IotConstants.COMMAND_SET_TOTAL_ELE + totalEle + IotConstants.COMMAND_SEPARATOR, productId);
|
||||||
|
return res != null && res.isSuccess();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -131,9 +131,9 @@ public class SmBalancePeriodServiceImpl implements ISmBalancePeriodService
|
||||||
dto.setCreateDate(now);
|
dto.setCreateDate(now);
|
||||||
dto.setHour(now.getHours());
|
dto.setHour(now.getHours());
|
||||||
dto.setGroupBy(TransactionBillGroupBy.create_hour.name());
|
dto.setGroupBy(TransactionBillGroupBy.create_hour.name());
|
||||||
dto.setStatus(TransactionBillStatus.SUCCESS.getStatus());
|
dto.setStatusList(TransactionBillStatus.payedOrder());
|
||||||
List<BillCountVo> billCount = transactionBillMapper.selectCount(dto);
|
List<BillCountVo> billCount = transactionBillMapper.selectCount(dto);
|
||||||
data.setRecharge(CollectionUtils.isEmpty(billCount) ? BigDecimal.ZERO : billCount.get(0).getRecharge());
|
data.setRecharge(CollectionUtils.isEmpty(billCount) ? BigDecimal.ZERO : billCount.get(0).getRechargeAmount());
|
||||||
|
|
||||||
data.setCreateTime(now);
|
data.setCreateTime(now);
|
||||||
smBalancePeriodMapper.insertSmBalancePeriod(data);
|
smBalancePeriodMapper.insertSmBalancePeriod(data);
|
||||||
|
|
|
@ -88,6 +88,16 @@ public class Device extends BaseEntity
|
||||||
@JsonView(JsonViewProfile.App.class)
|
@JsonView(JsonViewProfile.App.class)
|
||||||
private String onlineStatus;
|
private String onlineStatus;
|
||||||
|
|
||||||
|
@Excel(name = "在线状态1:0-不在线;1-在线")
|
||||||
|
@ApiModelProperty("在线状态1:0-不在线;1-在线")
|
||||||
|
@JsonView(JsonViewProfile.App.class)
|
||||||
|
private String onlineStatus1;
|
||||||
|
|
||||||
|
@Excel(name = "在线状态2:0-不在线;1-在线")
|
||||||
|
@ApiModelProperty("在线状态2:0-不在线;1-在线")
|
||||||
|
@JsonView(JsonViewProfile.App.class)
|
||||||
|
private String onlineStatus2;
|
||||||
|
|
||||||
/** 状态 */
|
/** 状态 */
|
||||||
@Excel(name = "状态")
|
@Excel(name = "状态")
|
||||||
@ApiModelProperty("状态")
|
@ApiModelProperty("状态")
|
||||||
|
|
|
@ -28,6 +28,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
)
|
)
|
||||||
</if>
|
</if>
|
||||||
<if test="onlineStatus != null and onlineStatus != ''"> and sd.online_status = #{onlineStatus}</if>
|
<if test="onlineStatus != null and onlineStatus != ''"> and sd.online_status = #{onlineStatus}</if>
|
||||||
|
<if test="onlineStatus1 != null and onlineStatus1 != ''"> and sd.online_status1 = #{onlineStatus1}</if>
|
||||||
|
<if test="onlineStatus2 != null and onlineStatus2 != ''"> and sd.online_status2 = #{onlineStatus2}</if>
|
||||||
<if test="status != null and status != ''"> and sd.status = #{status}</if>
|
<if test="status != null and status != ''"> and sd.status = #{status}</if>
|
||||||
<if test="userName != null and userName != ''"> and su.user_name like concat('%', #{userName}, '%')</if>
|
<if test="userName != null and userName != ''"> and su.user_name like concat('%', #{userName}, '%')</if>
|
||||||
<if test="nickName != null and nickName != ''"> and sd.nick_name like concat('%', #{nickName}, '%')</if>
|
<if test="nickName != null and nickName != ''"> and sd.nick_name like concat('%', #{nickName}, '%')</if>
|
||||||
|
@ -109,6 +111,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
sd.activation_time,
|
sd.activation_time,
|
||||||
sd.total_electri_quantity,
|
sd.total_electri_quantity,
|
||||||
sd.online_status,
|
sd.online_status,
|
||||||
|
sd.online_status1,
|
||||||
|
sd.online_status2,
|
||||||
sd.status,
|
sd.status,
|
||||||
sd.real_time_power,
|
sd.real_time_power,
|
||||||
sd.electricity,
|
sd.electricity,
|
||||||
|
@ -329,6 +333,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<if test="serviceMode != null">service_mode,</if>
|
<if test="serviceMode != null">service_mode,</if>
|
||||||
<if test="monthFee != null">month_fee,</if>
|
<if test="monthFee != null">month_fee,</if>
|
||||||
<if test="lastRecoverTime != null">last_recover_time,</if>
|
<if test="lastRecoverTime != null">last_recover_time,</if>
|
||||||
|
<if test="onlineStatus1 != null">online_status1,</if>
|
||||||
|
<if test="onlineStatus2 != null">online_status2,</if>
|
||||||
</trim>
|
</trim>
|
||||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
<if test="storeId != null">#{storeId},</if>
|
<if test="storeId != null">#{storeId},</if>
|
||||||
|
@ -378,6 +384,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<if test="serviceMode != null">#{serviceMode},</if>
|
<if test="serviceMode != null">#{serviceMode},</if>
|
||||||
<if test="monthFee != null">#{monthFee},</if>
|
<if test="monthFee != null">#{monthFee},</if>
|
||||||
<if test="lastRecoverTime != null">#{lastRecoverTime},</if>
|
<if test="lastRecoverTime != null">#{lastRecoverTime},</if>
|
||||||
|
<if test="onlineStatus1 != null">#{onlineStatus1},</if>
|
||||||
|
<if test="onlineStatus2 != null">#{onlineStatus2},</if>
|
||||||
</trim>
|
</trim>
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
|
@ -448,6 +456,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<if test="serviceMode != null">service_mode = #{serviceMode},</if>
|
<if test="serviceMode != null">service_mode = #{serviceMode},</if>
|
||||||
<if test="monthFee != null">month_fee = #{monthFee},</if>
|
<if test="monthFee != null">month_fee = #{monthFee},</if>
|
||||||
<if test="lastRecoverTime != null">last_recover_time = #{lastRecoverTime},</if>
|
<if test="lastRecoverTime != null">last_recover_time = #{lastRecoverTime},</if>
|
||||||
|
<if test="onlineStatus1 != null">online_status1 = #{onlineStatus1},</if>
|
||||||
|
<if test="onlineStatus2 != null">online_status2 = #{onlineStatus2},</if>
|
||||||
</trim>
|
</trim>
|
||||||
where device_id = #{deviceId}
|
where device_id = #{deviceId}
|
||||||
</update>
|
</update>
|
||||||
|
|
|
@ -879,13 +879,26 @@ public class DeviceServiceImpl implements DeviceService
|
||||||
device.setDeviceId(device.getDeviceId());
|
device.setDeviceId(device.getDeviceId());
|
||||||
if (deviceInfo != null) {
|
if (deviceInfo != null) {
|
||||||
device.setLastPullTime(deviceInfo.getAt());
|
device.setLastPullTime(deviceInfo.getAt());
|
||||||
device.setTotalElectriQuantity(deviceInfo.getW());
|
|
||||||
device.setPowerStatus(deviceInfo.getS());
|
device.setPowerStatus(deviceInfo.getS());
|
||||||
device.setRemainTime(deviceInfo.getTime());
|
device.setRemainTime(deviceInfo.getTime());
|
||||||
device.setRealTimePower(deviceInfo.getP());
|
device.setRealTimePower(deviceInfo.getP());
|
||||||
device.setVoltage(deviceInfo.getV());
|
device.setVoltage(deviceInfo.getV());
|
||||||
device.setElectricity(deviceInfo.getA());
|
device.setElectricity(deviceInfo.getA());
|
||||||
|
|
||||||
|
// 总用电量
|
||||||
|
if (deviceInfo.getW() != null) {
|
||||||
|
// 若有数据点中的值大于数据库中的值,则更新
|
||||||
|
if (deviceInfo.getW().compareTo(device.getTotalElectriQuantity()) >= 0) {
|
||||||
|
device.setTotalElectriQuantity(deviceInfo.getW());
|
||||||
|
}
|
||||||
|
// TODO 若数据点小于数据库中的值,则发命令恢复物联网设备的总用电量
|
||||||
|
else {
|
||||||
|
// scheduledExecutorService.schedule(() -> {
|
||||||
|
// iotService.setTotalEle(device, device.getTotalElectriQuantity());
|
||||||
|
// }, 0, TimeUnit.SECONDS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 是否有WIFI
|
// 是否有WIFI
|
||||||
if (ModelTag.hasTag(device.getModelTags(), ModelTag.WIFI)) {
|
if (ModelTag.hasTag(device.getModelTags(), ModelTag.WIFI)) {
|
||||||
device.setWifi(deviceInfo.getWifi());
|
device.setWifi(deviceInfo.getWifi());
|
||||||
|
@ -913,10 +926,15 @@ public class DeviceServiceImpl implements DeviceService
|
||||||
}
|
}
|
||||||
|
|
||||||
// 是否在线
|
// 是否在线
|
||||||
String onlineStatus = iotService.getOnlineStatus(device).getStatus();
|
String onlineStatus1 = iotService.getOnlineStatus(device.getMac(), device.getProductId()).getStatus();
|
||||||
device.setOnlineStatus(onlineStatus);
|
String onlineStatus2 = iotService.getOnlineStatus(device.getMac2(), device.getProductId()).getStatus();
|
||||||
if (DeviceOnlineStatus.ONLINE.getStatus().equals(onlineStatus)) {
|
device.setOnlineStatus1(onlineStatus1);
|
||||||
|
device.setOnlineStatus2(onlineStatus2);
|
||||||
|
if (DeviceOnlineStatus.ONLINE.getStatus().equals(onlineStatus1) || DeviceOnlineStatus.ONLINE.getStatus().equals(onlineStatus2)) {
|
||||||
|
device.setOnlineStatus(DeviceOnlineStatus.ONLINE.getStatus());
|
||||||
device.setLastOnlineTime(now);
|
device.setLastOnlineTime(now);
|
||||||
|
} else {
|
||||||
|
device.setOnlineStatus(DeviceOnlineStatus.OFFLINE.getStatus());
|
||||||
}
|
}
|
||||||
|
|
||||||
this.updateIotInfo(device);
|
this.updateIotInfo(device);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user