From 6cd799bfdb9538b4160afcfdba666ac5880559cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A3=B7=E5=8F=B6?= <14103883+leaf-phos@user.noreply.gitee.com> Date: Mon, 16 Dec 2024 21:36:17 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=B3=BB=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/common/constant/IotConstants.java | 5 ++++ .../ruoyi/iot/constants/ReceiveConstants.java | 3 +++ .../com/ruoyi/iot/domain/IotDeviceInfo.java | 3 ++- .../com/ruoyi/iot/service/IotService.java | 5 ++++ .../iot/service/impl/IotConverterImpl.java | 3 +++ .../iot/service/impl/IotServiceImpl.java | 24 +++++++++++++++++++ .../com/ruoyi/ss/device/domain/Device.java | 3 +++ .../ruoyi/ss/device/mapper/DeviceMapper.xml | 4 ++++ .../ss/device/service/DeviceService.java | 4 ++++ .../service/impl/DeviceServiceImpl.java | 13 ++++++++++ .../controller/app/AppDeviceController.java | 7 ++++++ 11 files changed, 73 insertions(+), 1 deletion(-) diff --git a/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/constant/IotConstants.java b/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/constant/IotConstants.java index 203d7f51..36890803 100644 --- a/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/constant/IotConstants.java +++ b/smart-switch-ruoyi/smart-switch-common/src/main/java/com/ruoyi/common/constant/IotConstants.java @@ -96,6 +96,11 @@ public class IotConstants { */ public static final String COMMAND_SET_TOTAL_ELE = "pow_set"; + /** + * 命令 设置电压系数 + */ + public static final String COMMAND_SET_VXS = "v_xs"; + /**----------------------------命令end----------------------------*/ } diff --git a/smart-switch-service/src/main/java/com/ruoyi/iot/constants/ReceiveConstants.java b/smart-switch-service/src/main/java/com/ruoyi/iot/constants/ReceiveConstants.java index 0e2ad21c..80b370ab 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/iot/constants/ReceiveConstants.java +++ b/smart-switch-service/src/main/java/com/ruoyi/iot/constants/ReceiveConstants.java @@ -35,4 +35,7 @@ public class ReceiveConstants { // 数据点ID:VER 版本号 public static final String DS_VER = "VER"; + + // 数据点ID:VXS 电压系数 + public static final String DS_VXS = "VXS"; } diff --git a/smart-switch-service/src/main/java/com/ruoyi/iot/domain/IotDeviceInfo.java b/smart-switch-service/src/main/java/com/ruoyi/iot/domain/IotDeviceInfo.java index 31ecea1e..8563a478 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/iot/domain/IotDeviceInfo.java +++ b/smart-switch-service/src/main/java/com/ruoyi/iot/domain/IotDeviceInfo.java @@ -32,6 +32,7 @@ public class IotDeviceInfo { private String model; // 型号 private String wifi; // WIFI private String version; // 版本号 + private BigDecimal vxs; // 电压系数 public static IotDeviceInfo newDefaultInstance() { return IotDeviceInfo.builder() @@ -45,7 +46,7 @@ public class IotDeviceInfo { .time(BigDecimal.ZERO) .model(null) .version(null) + .vxs(BigDecimal.ONE) .build(); } - } diff --git a/smart-switch-service/src/main/java/com/ruoyi/iot/service/IotService.java b/smart-switch-service/src/main/java/com/ruoyi/iot/service/IotService.java index 9a2f6cfa..6535b608 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/iot/service/IotService.java +++ b/smart-switch-service/src/main/java/com/ruoyi/iot/service/IotService.java @@ -6,6 +6,7 @@ import com.ruoyi.iot.domain.IotDeviceInfo; import com.ruoyi.iot.domain.response.CommandResponse; import com.ruoyi.iot.interfaces.IotDevice; import com.ruoyi.ss.device.domain.enums.DeviceOnlineStatus; +import com.ruoyi.ss.device.domain.vo.DeviceVO; import java.math.BigDecimal; import java.util.List; @@ -125,4 +126,8 @@ public interface IotService { */ HistoryDeviceData getHistoryDataPoint(String deviceName, String productId); + /** + * 设置电压系数 + */ + CommandResponse setVxs(DeviceVO device, BigDecimal vxs, String reason); } diff --git a/smart-switch-service/src/main/java/com/ruoyi/iot/service/impl/IotConverterImpl.java b/smart-switch-service/src/main/java/com/ruoyi/iot/service/impl/IotConverterImpl.java index f73a65ec..bf9d04ab 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/iot/service/impl/IotConverterImpl.java +++ b/smart-switch-service/src/main/java/com/ruoyi/iot/service/impl/IotConverterImpl.java @@ -99,6 +99,9 @@ public class IotConverterImpl implements IotConverter { case ReceiveConstants.DS_VER: device.setVersion(value); break; + case ReceiveConstants.DS_VXS: + device.setVxs(NumberUtils.nonNullDecimal(value, BigDecimal.ZERO)); + break; default: break; } diff --git a/smart-switch-service/src/main/java/com/ruoyi/iot/service/impl/IotServiceImpl.java b/smart-switch-service/src/main/java/com/ruoyi/iot/service/impl/IotServiceImpl.java index ada35f82..45cb4c08 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/iot/service/impl/IotServiceImpl.java +++ b/smart-switch-service/src/main/java/com/ruoyi/iot/service/impl/IotServiceImpl.java @@ -23,6 +23,7 @@ import com.ruoyi.iot.service.IotConverter; import com.ruoyi.iot.service.IotService; import com.ruoyi.ss.commandLog.service.ICommandLogService; import com.ruoyi.ss.device.domain.enums.DeviceOnlineStatus; +import com.ruoyi.ss.device.domain.vo.DeviceVO; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -207,6 +208,29 @@ public class IotServiceImpl implements IotService { return response.getData(); } + @Override + public CommandResponse setVxs(DeviceVO device, BigDecimal vxs, String reason) { + ServiceUtil.assertion(device == null || vxs == null, "设备或参数为空"); + + CommandResponse res = null; + if (StringUtils.hasText(device.iotMac1())) { + res = this.setVxs(device.iotMac1(), vxs, device.getProductId(), reason); + } + if ((res == null || !res.isSuccess()) && StringUtils.hasText(device.iotMac2())) { + res = this.setVxs(device.iotMac2(), vxs, device.getProductId(), reason); + } + + return res; + } + + private CommandResponse setVxs(String deviceName, BigDecimal vxs, String productId, String reason) { + if (StringUtils.isBlank(deviceName) || vxs == null || productId == null) { + return null; + } + String command = IotConstants.COMMAND_SET_VXS + vxs + IotConstants.COMMAND_SEPARATOR; + return sendCommand(deviceName, command, productId, reason); + } + // 获取当前设备数据点信息 public List getCurrentDataPoint(List deviceNames, String productId) { String param = "device_name=" + String.join(",", deviceNames) + "&product_id=" + productId; diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/device/domain/Device.java b/smart-switch-service/src/main/java/com/ruoyi/ss/device/domain/Device.java index bdf6255e..8b540a51 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/device/domain/Device.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/device/domain/Device.java @@ -256,4 +256,7 @@ public class Device extends BaseEntity @Excel(name = "最后一次设置总电量初始读数的时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty("最后一次设置总电量初始读数的时间") private LocalDateTime lastInitReading; + + @ApiModelProperty("电压系数") + private BigDecimal vxs; } diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/device/mapper/DeviceMapper.xml b/smart-switch-service/src/main/java/com/ruoyi/ss/device/mapper/DeviceMapper.xml index 890eed7e..5a5aba1e 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/device/mapper/DeviceMapper.xml +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/device/mapper/DeviceMapper.xml @@ -68,6 +68,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sd.version, sd.expire_ele, sd.last_init_reading, + sd.vxs, sm.model_name as model, sm.picture as picture, sm.tags as model_tags, @@ -394,6 +395,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" version, expire_ele, last_init_reading, + vxs, #{storeId}, @@ -448,6 +450,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{version}, #{expireEle}, #{lastInitReading}, + #{vxs}, @@ -533,6 +536,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" version = #{version}, expire_ele = #{expireEle}, last_init_reading = #{lastInitReading}, + vxs = #{vxs}, where device_id = #{deviceId} diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/DeviceService.java b/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/DeviceService.java index e3f10511..6e9c0320 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/DeviceService.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/DeviceService.java @@ -389,4 +389,8 @@ public interface DeviceService */ int initTotalEle(Long deviceId); + /** + * 修改电压系数 + */ + int updateVxs(Long deviceId, BigDecimal vxs, String reason); } diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/impl/DeviceServiceImpl.java b/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/impl/DeviceServiceImpl.java index 9459f594..9c25a2ce 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/impl/DeviceServiceImpl.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/device/service/impl/DeviceServiceImpl.java @@ -967,6 +967,7 @@ public class DeviceServiceImpl implements DeviceService device.setVoltage(deviceInfo.getV()); device.setElectricity(deviceInfo.getA()); device.setVersion(deviceInfo.getVersion()); + device.setVxs(deviceInfo.getVxs()); // 总用电量 if (deviceInfo.getW() != null) { @@ -1240,6 +1241,18 @@ public class DeviceServiceImpl implements DeviceService return deviceMapper.initTotalEle(deviceId); } + @Override + public int updateVxs(Long deviceId, BigDecimal vxs, String reason) { + if (deviceId == null || vxs == null) { + return 0; + } + DeviceVO device = this.selectById(deviceId); + ServiceUtil.assertion(device == null, "设备不存在"); + + CommandResponse res = iotService.setVxs(device, vxs, reason); + return res != null && res.isSuccess() ? 1 : 0; + } + /** * 设备是否已经被绑定 * diff --git a/smart-switch-web/src/main/java/com/ruoyi/web/controller/app/AppDeviceController.java b/smart-switch-web/src/main/java/com/ruoyi/web/controller/app/AppDeviceController.java index 1a95ab99..44a6ba98 100644 --- a/smart-switch-web/src/main/java/com/ruoyi/web/controller/app/AppDeviceController.java +++ b/smart-switch-web/src/main/java/com/ruoyi/web/controller/app/AppDeviceController.java @@ -299,6 +299,13 @@ public class AppDeviceController extends BaseController { return toAjax(smDeviceService.switchDevice(deviceId, open, "小程序管理员开关设备")); } + @ApiOperation("管理员修改设备电压系数") + @DeviceAdminRequired + @PutMapping("/admin/{deviceId}/vxs") + public AjaxResult getExistMac(@PathVariable @ApiParam("设备ID") Long deviceId, @RequestParam @ApiParam("电压系数") BigDecimal vxs) { + return toAjax(smDeviceService.updateVxs(deviceId, vxs, "小程序管理员修改设备电压系数")); + } + @ApiOperation("获取正在使用中的设备列表") @GetMapping("/usingDevice") @JsonView(JsonViewProfile.App.class)