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