From 86ac28ec4f446e75e25b3a77410a85fe0185ccbd Mon Sep 17 00:00:00 2001 From: chenshuichuan <1154693969@qq.com> Date: Tue, 25 Jun 2024 10:05:41 +0800 Subject: [PATCH] fix mqtt http --- .../mqttrecord/MqttServerController.java | 59 ------------------- .../admin/mqttrecord/vo/IoData.java | 17 ++++++ .../admin/mqttrecord/vo/MqttData.java | 20 +++++++ .../admin/mqttrecord/vo/MqttDataUtils.java | 27 +++++++++ .../mqttrecord/vo/MqttRecordSaveReqVO.java | 4 -- .../mqtt/config/DefaultEmqConfig.java | 3 + .../mqtt/config/DefaultEmqProperties.java | 4 ++ .../mqtt/config/DefaultMqttStarter.java | 7 ++- yudao-module-mes/yudao-module-mes-biz/pom.xml | 5 ++ .../admin/mqtt/MqttServerController.java | 45 ++++++++++++++ .../src/main/resources/application.yaml | 3 +- 11 files changed, 129 insertions(+), 65 deletions(-) delete mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttrecord/MqttServerController.java create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttrecord/vo/IoData.java create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttrecord/vo/MqttData.java create mode 100644 yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttrecord/vo/MqttDataUtils.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mqtt/MqttServerController.java diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttrecord/MqttServerController.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttrecord/MqttServerController.java deleted file mode 100644 index c50c7acf23..0000000000 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttrecord/MqttServerController.java +++ /dev/null @@ -1,59 +0,0 @@ -package cn.iocoder.yudao.module.iot.controller.admin.mqttrecord; - -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.iot.controller.admin.mqttrecord.vo.MqttRecordRespVO; -import cn.iocoder.yudao.module.iot.controller.admin.mqttrecord.vo.MqttRecordSaveReqVO; -import cn.iocoder.yudao.module.iot.dal.dataobject.mqttrecord.MqttRecordDO; -import cn.iocoder.yudao.module.iot.service.mqttrecord.MqttRecordService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; -import javax.validation.Valid; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; - -@Tag(name = "管理后台 - 数采记录") -@RestController -@RequestMapping("/iot/mqtt-server") -@Validated -public class MqttServerController { - - @Resource - private MqttRecordService mqttRecordService; - - @PostMapping("/create") - @Operation(summary = "创建数采记录") - public CommonResult createMqttRecord(@Valid @RequestBody MqttRecordSaveReqVO createReqVO) { - return success(mqttRecordService.createMqttRecord(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新数采记录") - public CommonResult updateMqttRecord(@Valid @RequestBody MqttRecordSaveReqVO updateReqVO) { - mqttRecordService.updateMqttRecord(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除数采记录") - @Parameter(name = "id", description = "编号", required = true) - public CommonResult deleteMqttRecord(@RequestParam("id") Long id) { - mqttRecordService.deleteMqttRecord(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得数采记录") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - public CommonResult getMqttRecord(@RequestParam("id") Long id) { - MqttRecordDO mqttRecord = mqttRecordService.getMqttRecord(id); - return success(BeanUtils.toBean(mqttRecord, MqttRecordRespVO.class)); - } - - -} \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttrecord/vo/IoData.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttrecord/vo/IoData.java new file mode 100644 index 0000000000..52246f7e0b --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttrecord/vo/IoData.java @@ -0,0 +1,17 @@ +package cn.iocoder.yudao.module.iot.controller.admin.mqttrecord.vo; + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.lang.Nullable; + + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class IoData { + @Nullable + private String u; + private String v; +} diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttrecord/vo/MqttData.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttrecord/vo/MqttData.java new file mode 100644 index 0000000000..2f45040c9d --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttrecord/vo/MqttData.java @@ -0,0 +1,20 @@ +package cn.iocoder.yudao.module.iot.controller.admin.mqttrecord.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; +import java.util.Map; + +// 同一的数据格式 +@Data +@AllArgsConstructor +@NoArgsConstructor +public class MqttData { + protected String deviceID; + protected String gatewayID; + protected Map deviceData; + protected LocalDateTime deviceDataTime; + +} diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttrecord/vo/MqttDataUtils.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttrecord/vo/MqttDataUtils.java new file mode 100644 index 0000000000..78b19320e8 --- /dev/null +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttrecord/vo/MqttDataUtils.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.iot.controller.admin.mqttrecord.vo; + +import com.alibaba.fastjson.JSON; + +import java.util.Map; + +public class MqttDataUtils { + + public static MqttData parse(String entity){ + try { + MqttData data = JSON.parseObject(entity, MqttData.class); + return data; + }catch (Exception e){ + e.printStackTrace(); + } + return null; + } + public static MqttData parseMap(Map param){ + try { + MqttData data = JSON.parseObject(JSON.toJSONString(param), MqttData.class); + return data; + }catch (Exception e){ + e.printStackTrace(); + } + return null; + } +} diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttrecord/vo/MqttRecordSaveReqVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttrecord/vo/MqttRecordSaveReqVO.java index 05f8bf86d5..3f45d61e45 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttrecord/vo/MqttRecordSaveReqVO.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttrecord/vo/MqttRecordSaveReqVO.java @@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.iot.controller.admin.mqttrecord.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import javax.validation.constraints.NotNull; import java.time.LocalDateTime; @Schema(description = "管理后台 - 数采记录新增/修改 Request VO") @@ -14,14 +13,12 @@ public class MqttRecordSaveReqVO { private Long id; @Schema(description = "机台ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "3561") - @NotNull(message = "机台ID不能为空") private Long machineId; @Schema(description = "机台", example = "赵六") private String machineName; @Schema(description = "采集时间", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "采集时间不能为空") private LocalDateTime deviceDataTime; @Schema(description = "采集时间sss") private Long deviceDataTimeLong; @@ -30,7 +27,6 @@ public class MqttRecordSaveReqVO { private String deviceData; @Schema(description = "设备id", requiredMode = Schema.RequiredMode.REQUIRED, example = "31306") - @NotNull(message = "设备id不能为空") private Long deviceId; @Schema(description = "设备编码") diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/mqtt/config/DefaultEmqConfig.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/mqtt/config/DefaultEmqConfig.java index e134ed7b63..0bbdc758ec 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/mqtt/config/DefaultEmqConfig.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/mqtt/config/DefaultEmqConfig.java @@ -93,4 +93,7 @@ public class DefaultEmqConfig { mqttClient.setCallback(new MqttCallbackImpl(defaultBizTopicSet.getTopicMap(), mqttClient, options)); return mqttClient; } + public static Boolean isEnable(DefaultEmqProperties emqProperties){ + return emqProperties.getIsEnable(); + } } diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/mqtt/config/DefaultEmqProperties.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/mqtt/config/DefaultEmqProperties.java index a80f59e1a1..29fdf97603 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/mqtt/config/DefaultEmqProperties.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/mqtt/config/DefaultEmqProperties.java @@ -44,5 +44,9 @@ public class DefaultEmqProperties { * 心跳间隔 */ private Integer keepAlive; + /** + * 是否启用 + */ + private Boolean isEnable; } diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/mqtt/config/DefaultMqttStarter.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/mqtt/config/DefaultMqttStarter.java index 415a3b519d..3e5c980bc8 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/mqtt/config/DefaultMqttStarter.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/framework/mqtt/config/DefaultMqttStarter.java @@ -6,6 +6,7 @@ import org.eclipse.paho.client.mqttv3.MqttClient; import org.eclipse.paho.client.mqttv3.MqttConnectOptions; import org.eclipse.paho.client.mqttv3.MqttException; import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.ApplicationListener; import org.springframework.stereotype.Component; @@ -13,19 +14,23 @@ import javax.annotation.Resource; @Component @Slf4j +@EnableConfigurationProperties(DefaultEmqProperties.class) public class DefaultMqttStarter implements ApplicationListener { @Resource private MqttConnectOptions options; @Resource private MqttClient mqttClient; + @Resource + private DefaultEmqProperties defaultEmqProperties; @SneakyThrows @Override public void onApplicationEvent(ApplicationReadyEvent applicationReadyEvent) { // catch异常,不然连不上emqx项目就跑不起来 try { - mqttClient.connect(options); + if(defaultEmqProperties.getIsEnable()) + mqttClient.connect(options); } catch (MqttException e) { e.getMessage(); e.printStackTrace(); diff --git a/yudao-module-mes/yudao-module-mes-biz/pom.xml b/yudao-module-mes/yudao-module-mes-biz/pom.xml index c3cef72592..814c98bf19 100644 --- a/yudao-module-mes/yudao-module-mes-biz/pom.xml +++ b/yudao-module-mes/yudao-module-mes-biz/pom.xml @@ -84,5 +84,10 @@ yudao-spring-boot-starter-excel + + cn.iocoder.boot + yudao-module-iot-biz + ${revision} + diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mqtt/MqttServerController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mqtt/MqttServerController.java new file mode 100644 index 0000000000..0d41de197e --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mqtt/MqttServerController.java @@ -0,0 +1,45 @@ +package cn.iocoder.yudao.module.mes.controller.admin.mqtt; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.module.iot.controller.admin.mqttrecord.vo.MqttData; +import cn.iocoder.yudao.module.iot.controller.admin.mqttrecord.vo.MqttDataUtils; +import cn.iocoder.yudao.module.iot.controller.admin.mqttrecord.vo.MqttRecordSaveReqVO; +import cn.iocoder.yudao.module.iot.service.mqttrecord.MqttRecordService; +import com.alibaba.fastjson.JSON; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - 数采记录") +@RestController +@RequestMapping("/iot/mqtt-server") +@Validated +public class MqttServerController { + + @Resource + private MqttRecordService mqttRecordService; + + @PostMapping("/createMap") + @Operation(summary = "创建数采记录") + public CommonResult createMap(@RequestBody Map param) { + MqttData mqttData = MqttDataUtils.parseMap(param); + if(mqttData!=null){ + MqttRecordSaveReqVO createReqVO = new MqttRecordSaveReqVO(); + createReqVO.setDeviceCode(mqttData.getDeviceID()); + createReqVO.setGatewayCode(mqttData.getGatewayID()); + createReqVO.setDeviceDataTime(mqttData.getDeviceDataTime()); + createReqVO.setDeviceData(JSON.toJSONString(param)); + mqttRecordService.createMqttRecord(createReqVO); + } + return success(true); + } +} \ No newline at end of file diff --git a/yudao-server/src/main/resources/application.yaml b/yudao-server/src/main/resources/application.yaml index dcbd02809e..30a49496f3 100644 --- a/yudao-server/src/main/resources/application.yaml +++ b/yudao-server/src/main/resources/application.yaml @@ -271,7 +271,8 @@ jeecg: #tcp://47.112.167.85:1883 tcp://47.106.185.127:1883 emqx: - broker: tcp://47.106.185.127:1883 #broker地址47.112.167.85 + isEnable: true + broker: tcp://localhost:1883 #broker地址47.112.167.85 clientId: emqx-9521 userName: admin #授权账号 一定要授权的 password: public123 #密码