diff --git a/ruoyi-admin/src/main/java/org/dromara/web/config/CommonYmlConfig.java b/ruoyi-admin/src/main/java/org/dromara/web/config/CommonYmlConfig.java index b2896b196..f18648780 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/config/CommonYmlConfig.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/config/CommonYmlConfig.java @@ -16,10 +16,12 @@ public class CommonYmlConfig { public static String URL_IOT_SERVER_ATTRIBUTE = "服务器属性"; public static String URL_IOT_TELEMETRY = "遥测"; public static String URL_IOT_OPERATE = "操作控制"; + public static String URL_IOT_BASEURL = "ip端口"; public String serverAttribute = ""; public String telemetry = ""; public String operate = ""; + public String baseurl = ""; @Value("${iot.url.serverAttribute}") public String setServerAttribute(String serverAttribute) { @@ -35,4 +37,9 @@ public class CommonYmlConfig { public String setOperate(String operate) { return URL_IOT_OPERATE = operate; } + + @Value("${iot.baseurl}") + public String setBase(String baseurl) { + return URL_IOT_BASEURL = baseurl; + } } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqDeviceController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqDeviceController.java index b54e760c1..e1b1038ae 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqDeviceController.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqDeviceController.java @@ -18,8 +18,12 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; + /** - * app首页 + * app 设备业务 * * @author Lion Li * @date 2024-07-14 @@ -70,12 +74,10 @@ public class EqDeviceController extends BaseController { * @param bo * @return */ - @GetMapping("/getDeviceStatus") - public R getDeviceStatus(EqAppHomeBo bo){ - EqEquipmentStatusVo result = new EqEquipmentStatusVo(); - - - return R.ok(result); + @GetMapping("/getDeviceMsg") + public R getDeviceMsg(EqAppHomeBo bo){ + if (bo.getEquipmentCode() == null) throw new ServiceException("设备编码不能为空"); + return R.ok(eqEquipmentService.getDeviceMsg(bo)); } @@ -98,6 +100,23 @@ public class EqDeviceController extends BaseController { */ @GetMapping("/saveDeviceLogs") public void saveDeviceLogs(EqEquipmentLogBo eqEquipmentLogBo){ + Date createTime = eqEquipmentLogBo.getCreateTime(); + if (createTime == null) { + createTime = new Date(); + eqEquipmentLogBo.setCreateTime(createTime); + } + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + // 格式化当前时间 + String formattedDate = dateFormat.format(createTime); + String[] timeStr = formattedDate.split(" "); + eqEquipmentLogBo.setCreatedYearDay(timeStr[0]);//年月日 + eqEquipmentLogBo.setCreatedHourSecond(timeStr[1]);//时分秒 + //星期 + Calendar calendar = Calendar.getInstance(); + calendar.setTime(createTime); + int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); + eqEquipmentLogBo.setDayOfWeek(dayOfWeek - 1);// Calendar类中星期日为1,星期一为2,依此类推 + logService.insertByBo(eqEquipmentLogBo); } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqHomeController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqHomeController.java index ef62889e1..b222d7db2 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqHomeController.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqHomeController.java @@ -23,7 +23,7 @@ import java.util.Collections; import java.util.List; /** - * app首页 + * app通用业务 * * @author Lion Li * @date 2024-07-14 diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqTextController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqTextController.java index 8bdb0c5f2..ca7fc3552 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqTextController.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqTextController.java @@ -27,7 +27,7 @@ import java.util.Collections; import java.util.List; /** - * 固定文本获取 + * app 固定文本获取 * * @author zzc * @date 2024-07-14 diff --git a/ruoyi-admin/src/main/java/org/dromara/web/device/DeviceMsg.java b/ruoyi-admin/src/main/java/org/dromara/web/device/DeviceMsg.java deleted file mode 100644 index 1025e913d..000000000 --- a/ruoyi-admin/src/main/java/org/dromara/web/device/DeviceMsg.java +++ /dev/null @@ -1,65 +0,0 @@ -package org.dromara.web.device; - -/** - * @ClassName : DeviceMsg - * @Author : ZZC - * @Date : 2024/7/25 0:44 - * @Description : 设备信息 - **/ -public class DeviceMsg { - //属性上报 todo 该属性上报 无需解析指令 需要调用api 当前需要创建属性用来装载 - //自动关门功能开关 AT+ECTPP=GarageDoorLightControl,AutomaticDoorClosingSwitch,0,false,{},b2 - //自动关门功能开关 AT+ECTPP=GarageDoorLightControl,AutomaticDoorClosingSwitch,0,true,{},a7 - //延时自动关门的延时时长 AT+ECTPP=GarageDoorLightControl,AutomaticDoorClosingTime,1,1,{},98 - //运行次数开关 AT+ECTPP=GarageDoorLightControl,DoorRunningTimesSwitch,0,true,{},ae - //运行次数开关 AT+ECTPP=GarageDoorLightControl,DoorRunningTimesSwitch,0,false,{},2e - //倒计时剩余时间 AT+ECTPP=GarageDoorLightControl,ResidualCountDown,1,180 - //运行次数 AT+ECTPP=GarageDoorLightControl,DoorRunningTimes,1,0 - //车库门异常状态:无异常 AT+ECTPP=GarageDoorLightControl,GarageException,3,none,{} - //车库门异常状态:电机运行故障 AT+ECTPP=GarageDoorLightControl,GarageException,3,motorRunException,{} - //倒计时设置时间 AT+ECTPP=GarageDoorLightControl,CountDownConfig,1,188 - //照明灯开关 AT+ECTPP=GarageDoorLightControl,LightSwitch,0,false,{},4d - //照明灯开关 AT+ECTPP=GarageDoorLightControl,LightSwitch,0,true,{},98 - //提醒关门时间设置 AT+ECTPP=CustomGarageDoor,RemindCloseDoorConfig,1,1,{},ee - //提醒关门功能开关 AT+ECTPP=CustomGarageDoor,RemindCloseDoorSwitch,0,true,{},7c - //提醒关门功能开关 AT+ECTPP=CustomGarageDoor,RemindCloseDoorSwitch,0,false,{},c5 - //半开门高度设置 AT+ECTPP=CustomGarageDoor,PartOpenConfig,1,10,{},aa - //半开门功能开关:关 AT+ECTPP=CustomGarageDoor,PartOpenSwitch,0,false,{},f9 - //半开门功能开关:开 AT+ECTPP=CustomGarageDoor,PartOpenSwitch,0,true,{},52 - //开合度百分比 AT+ECTPP=CustomGarageDoor,OpenPercentage,1,50 - //门体运行状态:停止中 AT+ECTPP=CustomGarageDoor,WorkState,3,stop,{} - //门体运行状态:关闭中 AT+ECTPP=CustomGarageDoor,WorkState,3,closing,{} - //门体运行状态:开启中 AT+ECTPP=CustomGarageDoor,WorkState,3,openning,{} - //是否已经校准行程 AT+ECTPP=GarageDoor,RouteCorrectStatus,0,true - //遇阻回弹的阻力设置 AT+ECTPP=GarageDoor,BounceSensitivity,1,3 - //红外感应开关开启 AT+ECTPP=GarageDoor,IRSwitch,0,true,{},52 - - - ////枚举型属性枚举值 - //车库门异常状态 AT+ECTPP=GarageDoorLightControl,GarageException, = {"3,none"}; //车库门异常状态//无故障 - // = {"3,irException"}; //车库门异常状态//红外故障 - // = {"3,motorRunException"}; //车库门异常状态//电机运转故障 - // = {"3,motorMaintainException"}; //车库门异常状态//电机维护故障 - // = {"3,deviceException"}; //车库门异常状态//设备故障 - // - //门体开合状态 AT+ECTPP=CustomGarageDoor,WorkState, = {"3,stop"}; //车库门工作状态//车库门停止中 - // = {"3,closing"}; //车库门工作状态//车库门正在关闭 - // = {"3,openning"}; //车库门工作状态//车库门正在开启 - - - //事件上报 - //烟雾报警 AT+ECTEP=GarageDoorLightControl,SmokeAlarm,{} - //红外触发报警 AT+ECTEP=GarageDoorLightControl,InfraredTrig,{} - //电机运行报警 AT+ECTEP=GarageDoorLightControl,MotorAbnormal,{} - //电机维修报警 AT+ECTEP=GarageDoorLightControl,MotorMaintenance,{} - //非APP开门提醒 AT+ECTEP=GarageDoorLightControl,NonAppOpen,{} - //非APP关门提醒 AT+ECTEP=GarageDoorLightControl,NonAppClose,{} - //关门故障报警 AT+ECTEP=GarageDoorLightControl,CloseFault,{} - //开门故障报警 AT+ECTEP=GarageDoorLightControl,OpenFault,{} - //开门运行提醒 AT+ECTEP=GarageDoorLightControl,OpenGarage,{} - //关门运行提醒 AT+ECTEP=GarageDoorLightControl,CloseGarage,{} - //忘记关门提醒 AT+ECTEP=GarageDoorLightControl,CloseDoorRemind,{} - //门体手动开启提醒 AT+ECTEP=GarageDoorLightControl,OpenManual,{} - //半开门运行提醒 AT+ECTEP=GarageDoorLightControl,PartOpenGarage,{} - //门体停止运行提醒 AT+ECTEP=GarageDoorLightControl,StopGarage,{} -} diff --git a/ruoyi-admin/src/main/java/org/dromara/web/device/DeviceMsgDto.java b/ruoyi-admin/src/main/java/org/dromara/web/device/DeviceMsgDto.java new file mode 100644 index 000000000..8497fdf98 --- /dev/null +++ b/ruoyi-admin/src/main/java/org/dromara/web/device/DeviceMsgDto.java @@ -0,0 +1,191 @@ +package org.dromara.web.device; + +import lombok.Data; + +/** + * @ClassName : DeviceMsgDto + * @Author : ZZC + * @Date : 2024/7/25 0:44 + * @Description : 设备信息 + **/ +@Data +public class DeviceMsgDto { + //属性上报 todo 该属性上报 无需解析指令 需要调用api 当前需要创建属性用来装载 + //自动关门功能开关 AT+ECTPP=GarageDoorLightControl,AutomaticDoorClosingSwitch,0,false,{},b2 + //自动关门功能开关 AT+ECTPP=GarageDoorLightControl,AutomaticDoorClosingSwitch,0,true,{},a7 + //延时自动关门的延时时长 AT+ECTPP=GarageDoorLightControl,AutomaticDoorClosingTime,1,1,{},98 + //运行次数开关 AT+ECTPP=GarageDoorLightControl,DoorRunningTimesSwitch,0,true,{},ae + //运行次数开关 AT+ECTPP=GarageDoorLightControl,DoorRunningTimesSwitch,0,false,{},2e + //倒计时剩余时间 AT+ECTPP=GarageDoorLightControl,ResidualCountDown,1,180 + //运行次数 AT+ECTPP=GarageDoorLightControl,DoorRunningTimes,1,0 + //车库门异常状态:无异常 AT+ECTPP=GarageDoorLightControl,GarageException,3,none,{} + //车库门异常状态:运行故障 AT+ECTPP=GarageDoorLightControl,GarageException,3,motorRunException,{} + //倒计时设置时间 AT+ECTPP=GarageDoorLightControl,CountDownConfig,1,188 + //照明灯开关 AT+ECTPP=GarageDoorLightControl,LightSwitch,0,false,{},4d + //照明灯开关 AT+ECTPP=GarageDoorLightControl,LightSwitch,0,true,{},98 + //提醒关门时间设置 AT+ECTPP=CustomGarageDoor,RemindCloseDoorConfig,1,1,{},ee + //提醒关门功能开关 AT+ECTPP=CustomGarageDoor,RemindCloseDoorSwitch,0,true,{},7c + //提醒关门功能开关 AT+ECTPP=CustomGarageDoor,RemindCloseDoorSwitch,0,false,{},c5 + //半开门高度设置 AT+ECTPP=CustomGarageDoor,PartOpenConfig,1,10,{},aa + //半开门功能开关:关 AT+ECTPP=CustomGarageDoor,PartOpenSwitch,0,false,{},f9 + //半开门功能开关:开 AT+ECTPP=CustomGarageDoor,PartOpenSwitch,0,true,{},52 + //开合度百分比 AT+ECTPP=CustomGarageDoor,OpenPercentage,1,50 + //门体运行状态:停止中 AT+ECTPP=CustomGarageDoor,WorkState,3,stop,{} + //门体运行状态:关闭中 AT+ECTPP=CustomGarageDoor,WorkState,3,closing,{} + //门体运行状态:开启中 AT+ECTPP=CustomGarageDoor,WorkState,3,openning,{} + //是否已经校准行程 AT+ECTPP=GarageDoor,RouteCorrectStatus,0,true + //遇阻回弹的阻力设置 AT+ECTPP=GarageDoor,BounceSensitivity,1,3 + //红外感应开关开启 AT+ECTPP=GarageDoor,IRSwitch,0,true,{},52 + + + ////枚举型属性枚举值 + //车库门异常状态 AT+ECTPP=GarageDoorLightControl,GarageException, + // = {"3,none"}; //车库门异常状态//无故障 + // = {"3,irException"}; //车库门异常状态//红外故障 + // = {"3,motorRunException"}; //车库门异常状态//电机运转故障 + // = {"3,motorMaintainException"}; //车库门异常状态//电机维护故障 + // = {"3,deviceException"}; //车库门异常状态//设备故障 + // + //门体开合状态 AT+ECTPP=CustomGarageDoor,WorkState, + // = {"3,stop"}; //车库门工作状态//车库门停止中 + // = {"3,closing"}; //车库门工作状态//车库门正在关闭 + // = {"3,openning"}; //车库门工作状态//车库门正在开启 + + + //事件上报 + //烟雾报警 AT+ECTEP=GarageDoorLightControl,SmokeAlarm,{} + //红外触发报警 AT+ECTEP=GarageDoorLightControl,InfraredTrig,{} + //电机运行报警 AT+ECTEP=GarageDoorLightControl,MotorAbnormal,{} + //电机维修报警 AT+ECTEP=GarageDoorLightControl,MotorMaintenance,{} + //非APP开门提醒 AT+ECTEP=GarageDoorLightControl,NonAppOpen,{} + //非APP关门提醒 AT+ECTEP=GarageDoorLightControl,NonAppClose,{} + //关门故障报警 AT+ECTEP=GarageDoorLightControl,CloseFault,{} + //开门故障报警 AT+ECTEP=GarageDoorLightControl,OpenFault,{} + //开门运行提醒 AT+ECTEP=GarageDoorLightControl,OpenGarage,{} + //关门运行提醒 AT+ECTEP=GarageDoorLightControl,CloseGarage,{} + //忘记关门提醒 AT+ECTEP=GarageDoorLightControl,CloseDoorRemind,{} + //门体手动开启提醒 AT+ECTEP=GarageDoorLightControl,OpenManual,{} + //半开门运行提醒 AT+ECTEP=GarageDoorLightControl,PartOpenGarage,{} + //门体停止运行提醒 AT+ECTEP=GarageDoorLightControl,StopGarage,{} + + //属性上报 + + + /** + * //自动关门功能开关 关 false + * //自动关门功能开关 开 true + */ + private Boolean AutomaticDoorClosingSwitch; + + /** + * //延时自动关门的延时时长 + */ + private Integer AutomaticDoorClosingTime; + + /** + * //运行次数开关 关 false + * //运行次数开关 开 true + */ + private Integer DoorRunningTimesSwitch; + + /** + * //倒计时剩余时间 + */ + private Integer ResidualCountDown; + + /** + * //运行次数 + */ + private Integer DoorRunningTimes; + + /** + 车库门异常状态: + 10.无异常 none + 11.红外故障 irException + 12.电机运转故障 motorRunException + 13.电机维护故障 motorMaintainException + 14.设备故障 deviceException + */ + private String GarageException; + + /** + * //倒计时设置时间 + */ + private Integer CountDownConfig; + + /** + * //照明灯开关 关 false + * //照明灯开关 开 true + */ + private Boolean LightSwitch; + + /** + * //提醒关门时间设置 + */ + private Integer RemindCloseDoorConfig; + + /** + * //提醒关门功能开关 关 false + * //提醒关门功能开关 开 true + */ + private Boolean RemindCloseDoorSwitch; + + /** + * //半开门高度设置 + */ + private Integer PartOpenConfig; + + /** + * //半开门功能开关:关 false + * //半开门功能开关:开 true + */ + private Boolean PartOpenSwitch; + + /** + * //开合度百分比 + */ + private Integer OpenPercentage; + + /** + * //门体运行状态: + * 0.停止中 stop + * 1.关闭中 closing + * 2.开启中 openning + */ + private String WorkState; + + /** + * //是否已经校准行程 + */ + private Boolean RouteCorrectStatus; + + /** + * //遇阻回弹的阻力设置 + */ + private Integer BounceSensitivity; + + /** + * //红外感应开关开启关闭 + */ + private Boolean IRSwitch; + + /** + * 事件上报 + * 101.烟雾报警 + * 102.红外触发报警 + * 103.电机运行报警 + * 104.电机维修报警 + * 105.非APP开门提醒 + * 106.非APP关门提醒 + * 107.关门故障报警 + * 108.开门故障报警 + * 109.开门运行提醒 + * 110.关门运行提醒 + * 111.忘记关门提醒 + * 112.门体手动开启提醒 + * 113.半开门运行提醒 + * 114.门体停止运行提醒 + */ + private Integer warningStatus; +} + diff --git a/ruoyi-admin/src/main/java/org/dromara/web/device/DeviceServerMsgDto.java b/ruoyi-admin/src/main/java/org/dromara/web/device/DeviceServerMsgDto.java new file mode 100644 index 000000000..16c8ff61f --- /dev/null +++ b/ruoyi-admin/src/main/java/org/dromara/web/device/DeviceServerMsgDto.java @@ -0,0 +1,15 @@ +package org.dromara.web.device; + +import lombok.Data; + +/** + * @ClassName : DeviceMsgDto + * @Author : ZZC + * @Date : 2024/7/25 0:44 + * @Description : 设备信息 + **/ +@Data +public class DeviceServerMsgDto { + private Boolean lineStatus; +} + diff --git a/ruoyi-admin/src/main/java/org/dromara/web/domain/EqEquipmentLog.java b/ruoyi-admin/src/main/java/org/dromara/web/domain/EqEquipmentLog.java index 2f732a8b6..75212034c 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/domain/EqEquipmentLog.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/domain/EqEquipmentLog.java @@ -62,12 +62,12 @@ public class EqEquipmentLog extends BaseEntity { /** * 年月日 */ - private Date createdYearDay; + private String createdYearDay; /** * 时分秒 */ - private Date createdHourSecond; + private String createdHourSecond; /** * 星期几 diff --git a/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqEquipmentLogBo.java b/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqEquipmentLogBo.java index b209b1dc7..9f46ad8ee 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqEquipmentLogBo.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqEquipmentLogBo.java @@ -48,18 +48,49 @@ public class EqEquipmentLogBo extends BaseEntity { /** * 状态 + * 0.停止中 stop + * 1.关闭中 closing + * 2.开启中 openning + * + * 10.无异常 none + * 11.红外故障 irException + * 12.电机运转故障 motorRunException + * 13.电机维护故障 motorMaintainException + * 14.设备故障 deviceException + * + * 101.烟雾报警 + * 102.红外触发报警 + * 103.电机运行报警 + * 104.电机维修报警 + * 105.非APP开门提醒 + * 106.非APP关门提醒 + * 107.关门故障报警 + * 108.开门故障报警 + * 109.开门运行提醒 + * 110.关门运行提醒 + * 111.忘记关门提醒 + * 112.门体手动开启提醒 + * 113.半开门运行提醒 + * 114.门体停止运行提醒 */ @NotNull(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class }) private Integer status; /** * 故障状态 + * 10.无异常 none + * 11.红外故障 irException + * 12.电机运转故障 motorRunException + * 13.电机维护故障 motorMaintainException + * 14.设备故障 deviceException */ @NotNull(message = "故障状态不能为空", groups = { AddGroup.class, EditGroup.class }) private Integer faultStatus; /** * 离线状态 + * 1.在线 + * 0.离线 */ @NotNull(message = "离线状态不能为空", groups = { AddGroup.class, EditGroup.class }) private Integer lineStatus; @@ -68,16 +99,23 @@ public class EqEquipmentLogBo extends BaseEntity { * 年月日 */ @NotNull(message = "年月日不能为空", groups = { AddGroup.class, EditGroup.class }) - private Date createdYearDay; + private String createdYearDay; /** * 时分秒 */ @NotNull(message = "时分秒不能为空", groups = { AddGroup.class, EditGroup.class }) - private Date createdHourSecond; + private String createdHourSecond; /** * 星期几 + * 0."星期日", + * 1."星期一", + * 2."星期二", + * 3."星期三", + * 4."星期四", + * 5."星期五", + * 6."星期六" */ @NotNull(message = "星期几不能为空", groups = { AddGroup.class, EditGroup.class }) private Integer dayOfWeek; diff --git a/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/EqEquipmentLogVo.java b/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/EqEquipmentLogVo.java index dd8bf1e42..fd5281d1d 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/EqEquipmentLogVo.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/EqEquipmentLogVo.java @@ -79,13 +79,13 @@ public class EqEquipmentLogVo implements Serializable { * 年月日 */ @ExcelProperty(value = "年月日") - private Date createdYearDay; + private String createdYearDay; /** * 时分秒 */ @ExcelProperty(value = "时分秒") - private Date createdHourSecond; + private String createdHourSecond; /** * 星期几 diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/IEqEquipmentService.java b/ruoyi-admin/src/main/java/org/dromara/web/service/IEqEquipmentService.java index 40dcaac4a..091357aa3 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/IEqEquipmentService.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/IEqEquipmentService.java @@ -3,6 +3,7 @@ package org.dromara.web.service; import org.dromara.web.domain.bo.EqAppHomeBo; import org.dromara.web.domain.bo.EqDeviceCmdBo; import org.dromara.web.domain.bo.EqDeviceSetBo; +import org.dromara.web.domain.vo.EqEquipmentStatusVo; import org.dromara.web.domain.vo.EqEquipmentVo; import org.dromara.web.domain.bo.EqEquipmentBo; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -73,4 +74,10 @@ public interface IEqEquipmentService { String setting(EqDeviceSetBo bo); + /** + * 获取设备信息 + * @param bo + * @return + */ + EqEquipmentStatusVo getDeviceMsg(EqAppHomeBo bo); } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentServiceImpl.java b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentServiceImpl.java index 21dd0e8b2..631022ed9 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentServiceImpl.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentServiceImpl.java @@ -1,7 +1,9 @@ package org.dromara.web.service.impl; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -11,11 +13,11 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.dromara.web.config.CommonYmlConfig; -import org.dromara.web.device.DeviceCtlCmd; -import org.dromara.web.device.DeviceCtlDto; -import org.dromara.web.device.DeviceSetCmd; +import org.dromara.web.device.*; +import org.dromara.web.domain.bo.EqAppHomeBo; import org.dromara.web.domain.bo.EqDeviceCmdBo; import org.dromara.web.domain.bo.EqDeviceSetBo; +import org.dromara.web.domain.vo.EqEquipmentStatusVo; import org.springframework.stereotype.Service; import org.dromara.web.domain.bo.EqEquipmentBo; import org.dromara.web.domain.vo.EqEquipmentVo; @@ -160,7 +162,7 @@ public class EqEquipmentServiceImpl implements IEqEquipmentService { return "指令类型错误"; } //增加操作次数 更新到设备表中 - return httpCtlPostSend(cmd); + return httpCtlPostSend(bo.getEquipmentCode(),cmd); } @Override @@ -190,18 +192,72 @@ public class EqEquipmentServiceImpl implements IEqEquipmentService { cmd = cmd.replace(DeviceSetCmd.MODEL,bo.getOperateValue()+""); } //增加操作次数 更新到设备表中 - return httpCtlPostSend(cmd); + return httpCtlPostSend(bo.getEquipmentCode(),cmd); + } + + @Override + public EqEquipmentStatusVo getDeviceMsg(EqAppHomeBo bo) { + EqEquipmentStatusVo result = new EqEquipmentStatusVo(); + result.setEquipmentId(bo.getEquipmentId()); + result.setEquipmentCode(bo.getEquipmentCode()); + + //获取服务属性状态 + String serverMsg = httpServerGetSend(bo.getEquipmentCode()); + DeviceServerMsgDto serverMsgDto = JSONObject.parseObject(serverMsg, DeviceServerMsgDto.class); + if (!serverMsgDto.getLineStatus()){ + result.setLineStatus(0);//离线 + return result; + } + //获取遥测数据 + String telemetryMsg = httpTelemetryGetSend(bo.getEquipmentCode()); + DeviceMsgDto deviceMsgDto = JSONObject.parseObject(telemetryMsg, DeviceMsgDto.class); + BeanUtil.copyProperties(deviceMsgDto,result,true); + return result; } - private String httpCtlPostSend(String cmd){ + /** + * 设备控制指令 + * @param deviceCode + * @param cmd + * @return + */ + private String httpCtlPostSend(String deviceCode,String cmd){ DeviceCtlDto dto = new DeviceCtlDto(); // dto.setMethod();//todo 方法 DeviceCtlDto.Params params = dto.getParams(); params.setCommand(cmd); dto.setParams(params); // todo 登录相关 token - return HttpUtil.post(CommonYmlConfig.URL_IOT_OPERATE, JSON.toJSONString(dto)); + String url = CommonYmlConfig.URL_IOT_BASEURL+CommonYmlConfig.URL_IOT_OPERATE; + url = url.replace("{deviceId}",deviceCode) ; + return HttpUtil.post(url, JSON.toJSONString(dto)); + } + + /** + * 获取设备信息 + * @param deviceCode + * @return + */ + private String httpTelemetryGetSend(String deviceCode){ + String url = CommonYmlConfig.URL_IOT_BASEURL+CommonYmlConfig.URL_IOT_TELEMETRY; + url = url.replace("{entityType}","DEVICE") ; + url = url.replace("{entityId}",deviceCode) ; + // todo 登录相关 token + return HttpUtil.get(url); + } + + /** + * 获取服务端属性信息 + * @param deviceCode + * @return + */ + private String httpServerGetSend(String deviceCode){ + String url = CommonYmlConfig.URL_IOT_BASEURL+CommonYmlConfig.URL_IOT_SERVER_ATTRIBUTE; + url = url.replace("{entityType}","DEVICE") ; + url = url.replace("{entityId}",deviceCode) ; + // todo 登录相关 token + return HttpUtil.get(url); } } diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index 6477ba4a3..b59624712 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -258,7 +258,8 @@ justauth: redirect-uri: ${justauth.address}/social-callback?source=gitlab iot: + baseurl: http://127.0.0.1:4523/m1/4875377-0-default url: - serverAttribute: https://www.baidu.com - telemetry: https://www.baidu.com - operate: https://www.baidu.com + serverAttribute: /api/plugins/telemetry/{entityType}/{entityId}/values/attributes + telemetry: /api/plugins/telemetry/{entityType}/{entityId}/values/timeseries + operate: /api/plugins/rpc/oneway/{deviceId}