diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/device/controller/DeviceController.java b/src/main/java/com/zsc/edu/gateway/modules/iot/device/controller/DeviceController.java index 07d16a6..1fd4245 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/device/controller/DeviceController.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/device/controller/DeviceController.java @@ -1,5 +1,7 @@ package com.zsc.edu.gateway.modules.iot.device.controller; +import com.alibaba.fastjson2.JSONException; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -17,8 +19,6 @@ import com.zsc.edu.gateway.modules.iot.record.entity.RecordData; import com.zsc.edu.gateway.modules.iot.record.entity.RecordDataStatusVo; import com.zsc.edu.gateway.modules.iot.record.service.RecordDataService; import lombok.AllArgsConstructor; -import org.springframework.boot.configurationprocessor.json.JSONException; -import org.springframework.boot.configurationprocessor.json.JSONObject; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; @@ -154,7 +154,7 @@ public class DeviceController { * 下发命令 */ @PostMapping("/send") - public String send(Long deviceId, String topic, Integer qos) throws JSONException { - return service.send(deviceId, topic, qos); + public String send(Long deviceId, String topic, Integer qos, @RequestBody JSONObject paras) throws JSONException { + return service.send(deviceId, topic, qos, paras); } } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/device/service/DeviceService.java b/src/main/java/com/zsc/edu/gateway/modules/iot/device/service/DeviceService.java index a2fce35..1f72b6b 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/device/service/DeviceService.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/device/service/DeviceService.java @@ -1,5 +1,7 @@ package com.zsc.edu.gateway.modules.iot.device.service; +import com.alibaba.fastjson2.JSONException; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; @@ -10,8 +12,6 @@ import com.zsc.edu.gateway.modules.iot.device.entity.Device; import com.zsc.edu.gateway.modules.iot.device.query.DeviceQuery; import com.zsc.edu.gateway.modules.iot.device.vo.DeviceStatusVo; import com.zsc.edu.gateway.modules.iot.device.vo.DeviceVo; -import org.springframework.boot.configurationprocessor.json.JSONException; -import org.springframework.boot.configurationprocessor.json.JSONObject; import java.util.List; @@ -33,5 +33,5 @@ public interface DeviceService extends IService { DeviceStatusVo status(); - String send(Long deviceId, String topic, Integer qos) throws JSONException; + String send(Long deviceId, String topic, Integer qos, JSONObject paras) throws JSONException; } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/device/service/impl/DeviceServiceImpl.java b/src/main/java/com/zsc/edu/gateway/modules/iot/device/service/impl/DeviceServiceImpl.java index bc7542e..f0d6da5 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/device/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/device/service/impl/DeviceServiceImpl.java @@ -1,6 +1,7 @@ package com.zsc.edu.gateway.modules.iot.device.service.impl; -import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson2.JSONException; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -20,19 +21,12 @@ import com.zsc.edu.gateway.modules.iot.device.vo.DeviceStatusVo; import com.zsc.edu.gateway.modules.iot.device.vo.DeviceVo; import com.zsc.edu.gateway.modules.iot.product.entity.Product; import com.zsc.edu.gateway.modules.iot.product.repo.ProductRepository; -import com.zsc.edu.gateway.modules.iot.tsl.dto.ParamDto; -import com.zsc.edu.gateway.modules.iot.tsl.entity.Param; -import com.zsc.edu.gateway.modules.iot.tsl.entity.Serve; -import com.zsc.edu.gateway.modules.iot.tsl.mapper.ParamMapper; import com.zsc.edu.gateway.modules.iot.tsl.repo.EventRepository; import com.zsc.edu.gateway.modules.iot.tsl.repo.PropertyRepository; import com.zsc.edu.gateway.modules.iot.tsl.repo.ServeRepository; -import com.zsc.edu.gateway.modules.iot.tsl.service.ServeService; import com.zsc.edu.gateway.modules.mqtt.config.MqttSender; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; -import org.springframework.boot.configurationprocessor.json.JSONException; -import org.springframework.boot.configurationprocessor.json.JSONObject; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -61,11 +55,7 @@ public class DeviceServiceImpl extends ServiceImpl imp @Resource private MqttSender mqttSender; @Resource - private ServeService serveService; - @Resource private DeviceRepository deviceRepo; - @Resource - private ParamMapper paramMapper; /** * 新建设备 */ @@ -225,40 +215,18 @@ public class DeviceServiceImpl extends ServiceImpl imp } @Override - public String send(Long deviceId, String topic, Integer qos) throws JSONException { + public String send(Long deviceId, String topic, Integer qos, JSONObject paras) throws JSONException { Device device = deviceRepo.selectOne(new LambdaQueryWrapper().eq(Device::getId, deviceId)); - Serve serve1 = serveRepo.selectOne(new LambdaQueryWrapper().eq(Serve::getProductId, device.getProductId())); - Serve serve = serveService.detail(serve1.getId()); - List params = serve.getInputs(); - params.addAll(serve.getOutputs()); - JSONObject parasJson = new JSONObject(); - for (Param param : params) { - parasJson.put(param.getIdentifier(), param.getUint()); - log.info("Param identifier: {}, uint: {}", param.getIdentifier(), param.getUint()); - } JSONObject payloadJson = new JSONObject(); payloadJson.put("mid", 641); - payloadJson.put("serviceId", serve.getId()); + payloadJson.put("serviceId", "runParamsCommand"); payloadJson.put("deviceId", device.getId()); payloadJson.put("cmd", "runParam"); - payloadJson.put("paras", parasJson); + payloadJson.put("paras", paras); payloadJson.put("msgType", "cloudReq"); String payload = payloadJson.toString(); - boolean sendSuccess = true; - try { - mqttSender.sendMsg(topic, qos, payload); - } catch (Exception e) { - log.error("发送mqtt消息失败:topic={}, qos={}, payload={}", topic, qos, payload, e); - sendSuccess = false; - } - JSONObject responseJson = new JSONObject(); - responseJson.put("mid", 641); - responseJson.put("msgType", "deviceRsp"); - responseJson.put("errcode", sendSuccess ? 0 : 1); - mqttSender.sendMsg(topic, qos, responseJson.toString()); - log.info("发送mqtt消息成功:topic={}, qos={}, payload={}", topic, qos, payload); - return responseJson.toString(); + mqttSender.sendMsg(topic, qos, payload); + return payload; } - } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/RecordDataService.java b/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/RecordDataService.java index 60b076f..53b003a 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/RecordDataService.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/RecordDataService.java @@ -1,7 +1,6 @@ package com.zsc.edu.gateway.modules.iot.record.service; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.metadata.IPage; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.extension.service.IService; import com.zsc.edu.gateway.modules.iot.record.entity.DataWarningVo; import com.zsc.edu.gateway.modules.iot.record.entity.RecordData; diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/impl/RecordDataServiceImpl.java b/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/impl/RecordDataServiceImpl.java index d886d24..a39467d 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/impl/RecordDataServiceImpl.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/impl/RecordDataServiceImpl.java @@ -1,6 +1,6 @@ package com.zsc.edu.gateway.modules.iot.record.service.impl; -import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zsc.edu.gateway.modules.iot.record.entity.DataWarningVo; @@ -55,4 +55,5 @@ public class RecordDataServiceImpl extends ServiceImpl { Serve detail(Long id); Boolean delete(Long id); + + JSONObject getServeParam(Long id); } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/ServeServiceImpl.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/ServeServiceImpl.java index b3975a0..0eb7a5e 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/ServeServiceImpl.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/ServeServiceImpl.java @@ -1,5 +1,7 @@ package com.zsc.edu.gateway.modules.iot.tsl.service.impl; +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zsc.edu.gateway.exception.ConstraintException; import com.zsc.edu.gateway.modules.iot.tsl.dto.ParamDto; @@ -89,4 +91,22 @@ public class ServeServiceImpl extends ServiceImpl implem removeById(id); return paramService.delete(id); } + + + /** + * 获取服务的输入和输出参数并转换为JSON格式 + * + * @param id 服务ID + * @return 包含输入和输出参数的JSON对象 + */ + @Override + public JSONObject getServeParam(Long id) { + Serve serve = detail(id); + List inputs = serve.getInputs(); + List outputs = serve.getOutputs(); + JSONObject result = new JSONObject(); + result.put("inputs", inputs); + result.put("outputs", outputs); + return result; + } } diff --git a/src/main/java/com/zsc/edu/gateway/modules/mqtt/config/MqttConfig.java b/src/main/java/com/zsc/edu/gateway/modules/mqtt/config/MqttConfig.java index 9d3f112..3b3dcca 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/mqtt/config/MqttConfig.java +++ b/src/main/java/com/zsc/edu/gateway/modules/mqtt/config/MqttConfig.java @@ -1,16 +1,12 @@ package com.zsc.edu.gateway.modules.mqtt.config; -import com.alibaba.fastjson.JSONObject; -import com.alibaba.fastjson.JSONPath; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.zsc.edu.gateway.modules.iot.device.vo.DeviceVo; +import com.alibaba.fastjson2.JSONObject; +import com.alibaba.fastjson2.JSONPath; import com.zsc.edu.gateway.modules.iot.record.service.RecordDataService; -import com.zsc.edu.gateway.modules.iot.record.service.impl.RecordDataServiceImpl; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.eclipse.paho.client.mqttv3.MqttConnectOptions; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.integration.annotation.ServiceActivator;