zhaiyifei 1 год назад
Родитель
Сommit
ecf095677f

+ 2 - 2
src/main/java/com/yunfeiyun/agmp/iots/core/mqtt/DeviceTopicService.java

@@ -174,8 +174,8 @@ public class DeviceTopicService {
         String[] topicArray = {
                 IotMqttConstant.YFBzyTopic.TOPIC_BZY_REPORT_PREFIX,
                 IotMqttConstant.YFBzyTopic.TOPIC_BZY_OFFLINE_PREFIX,
-                IotMqttConstant.YFBzyTopic.TOPIC_BZY_REPORT_PREFIX_2,
-                IotMqttConstant.YFBzyTopic.TOPIC_BZY_OFFLINE_PREFIX_2,
+                IotMqttConstant.YFBzyTopic.TOPIC_BZY_L_REPORT_PREFIX,
+                IotMqttConstant.YFBzyTopic.TOPIC_BZY_L_OFFLINE_PREFIX,
                 IotMqttConstant.YFBzyTopic.TOPIC_BZY_PHOTO_PREFIX,
                 IotMqttConstant.YFBzyTopic.TOPIC_BZY_HISTORY_REPORT_PREFIX,
                 IotMqttConstant.YFBzyTopic.TOPIC_BZY_HISTORY_PHOTO_PREFIX

+ 79 - 4
src/main/java/com/yunfeiyun/agmp/iots/device/serviceImp/BzyDeviceImpl.java

@@ -1,23 +1,26 @@
 package com.yunfeiyun.agmp.iots.device.serviceImp;
 
+import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.yunfeiyun.agmp.common.utils.DateUtils;
 import com.yunfeiyun.agmp.common.utils.JSONUtils;
 import com.yunfeiyun.agmp.common.utils.StringUtils;
 import com.yunfeiyun.agmp.common.utils.reflect.ReflectUtils;
+import com.yunfeiyun.agmp.iot.common.constant.cmd.CmdDef;
 import com.yunfeiyun.agmp.iot.common.constant.devicetype.ServiceNameConst;
+import com.yunfeiyun.agmp.iot.common.constant.mqtt.IotMqttConstant;
 import com.yunfeiyun.agmp.iot.common.domain.IotBaseEntity;
 import com.yunfeiyun.agmp.iot.common.domain.IotBzydata;
 import com.yunfeiyun.agmp.iot.common.domain.IotDevice;
 import com.yunfeiyun.agmp.iot.common.enums.IotDeviceStatusTypeEnum;
+import com.yunfeiyun.agmp.iot.common.model.cmd.CmdModel;
 import com.yunfeiyun.agmp.iot.common.service.MongoService;
 import com.yunfeiyun.agmp.iots.core.manager.MqttManager;
 import com.yunfeiyun.agmp.iots.device.common.DeviceAbstractImpl;
+import com.yunfeiyun.agmp.iots.device.domain.bzy.YfBzyReqMsg;
+import com.yunfeiyun.agmp.iots.device.domain.bzy.YfBzyTakephotoMsg;
 import com.yunfeiyun.agmp.iots.device.service.IBzyDevice;
-import com.yunfeiyun.agmp.iots.service.IIotDeviceService;
-import com.yunfeiyun.agmp.iots.service.IIotDeviceconfigService;
-import com.yunfeiyun.agmp.iots.service.IIotDevicelasteddataService;
-import com.yunfeiyun.agmp.iots.service.IotDeviceAddressService;
+import com.yunfeiyun.agmp.iots.service.*;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.http.util.TextUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -57,6 +60,78 @@ public class BzyDeviceImpl extends DeviceAbstractImpl implements IBzyDevice {
     @Autowired
     private IIotDevicelasteddataService iIotDevicelasteddataService;
 
+    @Autowired
+    private IIotCmdlogService iIotCmdlogService;
+
+    @Override
+    public Object sendCmd(CmdModel cmdModel) throws Exception {
+        log.info("【孢子仪】收到指令 任务 cmdModel={}", cmdModel);
+
+        // 获取执行的指令
+        CmdModel.Cmd cmdDistribution = cmdModel.getCmdDistribution();
+        // 获取执行的方法 ,方法可以通过反射获取执行,也可以临时case 匹配
+        String methodName = cmdModel.getCmdDistribution().getFunc();
+
+        String mqttMsgContent = "";
+        String clogSendresult = "发送指令成功";
+
+        switch (methodName) {
+            // 查询状态 ok
+            case CmdDef.YfBzyCmdDef.CMD_REQ_DATA:
+                mqttMsgContent = JSON.toJSON(new YfBzyReqMsg()).toString();
+                log.info("【孢子仪】发送指令【reqData】 mqttMsgContent={}", mqttMsgContent);
+                break;
+            case CmdDef.YfBzyCmdDef.CMD_CONFIG:
+                JSONObject jobjParam = cmdDistribution.getJsons();
+                String culTime = jobjParam.getString("cul_time");
+                jobjParam.put("cul_time", Integer.parseInt(culTime));
+
+                JSONObject jsonObject = new JSONObject();
+                jsonObject.put("cmd", "paramconf");
+                jsonObject.put("ext", jobjParam);
+
+                mqttMsgContent = jsonObject.toString();
+                log.info("【孢子仪】发送指令【config】 mqttMsgContent={}", mqttMsgContent);
+                break;
+            case CmdDef.YfBzyCmdDef.CMD_TAKEPHOTO:
+                YfBzyTakephotoMsg yfBzyTakephotoMsg = new YfBzyTakephotoMsg();
+                Map<String, String> map = new HashMap<>();
+                map.put("type", "takephoto");
+                yfBzyTakephotoMsg.setExt(map);
+                mqttMsgContent = JSON.toJSON(yfBzyTakephotoMsg).toString();
+                log.info("【孢子仪】发送指令【takephoto】 mqttMsgContent={}", mqttMsgContent);
+                break;
+            case CmdDef.YfBzyCmdDef.CMD_REFRESH: {
+                mqttMsgContent = JSONUtils.toJSONString(cmdDistribution.getJsons());
+                log.info("【孢子仪】发送指令【refresh】 mqttMsgContent={}", mqttMsgContent);
+                break;
+            }
+        }
+
+
+        String[] topics = {
+                IotMqttConstant.YFBzyTopic.TOPIC_BZY_CMD_PREFIX,
+                IotMqttConstant.YFBzyTopic.TOPIC_BZY_L_CMD_PREFIX
+        };
+
+        IotDevice iotDevice = cmdModel.getIotDevice();
+        for(String t : topics){
+            String topic = t + iotDevice.getDevCode();
+            mqttManager.publishMsg(iotDevice.getDevconnBid(), topic, mqttMsgContent);
+            log.info("【CBD】发送指令完毕!connectionId:{},topic :{} mqttMsgContent: {}", iotDevice.getDevconnBid(), topic, mqttMsgContent);
+        }
+
+
+        cmdModel.setClogSendresult(clogSendresult);
+        cmdModel.setClogDesc(mqttMsgContent);
+
+        iIotCmdlogService.insertSuccessCmdlog(cmdModel);
+
+        //返回值待定
+        return true;
+    }
+
+
     public String bzyData(JSONObject ext, String cId, IotDevice iotDevice) {
         // 更新设备数据信息到数据库 mongodb
         IotBzydata iotBzydata = new IotBzydata();