fix mqtt http

plp
chenshuichuan 2 years ago
parent 13e6ec043f
commit 86ac28ec4f

@ -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<Long> createMqttRecord(@Valid @RequestBody MqttRecordSaveReqVO createReqVO) {
return success(mqttRecordService.createMqttRecord(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新数采记录")
public CommonResult<Boolean> updateMqttRecord(@Valid @RequestBody MqttRecordSaveReqVO updateReqVO) {
mqttRecordService.updateMqttRecord(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除数采记录")
@Parameter(name = "id", description = "编号", required = true)
public CommonResult<Boolean> 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<MqttRecordRespVO> getMqttRecord(@RequestParam("id") Long id) {
MqttRecordDO mqttRecord = mqttRecordService.getMqttRecord(id);
return success(BeanUtils.toBean(mqttRecord, MqttRecordRespVO.class));
}
}

@ -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;
}

@ -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<String,IoData> deviceData;
protected LocalDateTime deviceDataTime;
}

@ -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<String, Object> param){
try {
MqttData data = JSON.parseObject(JSON.toJSONString(param), MqttData.class);
return data;
}catch (Exception e){
e.printStackTrace();
}
return null;
}
}

@ -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 = "设备编码")

@ -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();
}
}

@ -44,5 +44,9 @@ public class DefaultEmqProperties {
*
*/
private Integer keepAlive;
/**
*
*/
private Boolean isEnable;
}

@ -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<ApplicationReadyEvent> {
@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();

@ -84,5 +84,10 @@
<artifactId>yudao-spring-boot-starter-excel</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-module-iot-biz</artifactId>
<version>${revision}</version>
</dependency>
</dependencies>
</project>

@ -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<Boolean> createMap(@RequestBody Map<String, Object> 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);
}
}

@ -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 #密码

Loading…
Cancel
Save