|
|
@@ -1,22 +1,23 @@
|
|
|
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.iot.common.constant.cmd.CmdDef;
|
|
|
import com.yunfeiyun.agmp.iot.common.constant.devicetype.IotDeviceDictEnum;
|
|
|
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.IotDevice;
|
|
|
import com.yunfeiyun.agmp.iot.common.enums.IotDeviceStatusTypeEnum;
|
|
|
+import com.yunfeiyun.agmp.iot.common.model.cmd.CmdModel;
|
|
|
import com.yunfeiyun.agmp.iots.core.manager.MqttManager;
|
|
|
import com.yunfeiyun.agmp.iots.device.common.DeviceAbstractImpl;
|
|
|
+import com.yunfeiyun.agmp.iots.device.domain.cbd.YfCbdReqMsg;
|
|
|
import com.yunfeiyun.agmp.iots.device.service.IIotYfXycbIIIdataService;
|
|
|
import com.yunfeiyun.agmp.iots.device.service.IYfXycbIIIDevice;
|
|
|
-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.eclipse.paho.client.mqttv3.MqttException;
|
|
|
@@ -53,6 +54,9 @@ public class YfXycbIIIDeviceImpl extends DeviceAbstractImpl implements IYfXycbII
|
|
|
@Autowired
|
|
|
private IotDeviceAddressService iotDeviceAddressService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IIotCmdlogService iIotCmdlogService;
|
|
|
+
|
|
|
/**
|
|
|
* 根据topic、设备发来的消息,查询对应设备实体
|
|
|
*
|
|
|
@@ -213,6 +217,81 @@ public class YfXycbIIIDeviceImpl extends DeviceAbstractImpl implements IYfXycbII
|
|
|
log.info("[{}] 下发刷新指令,检测设备是否真离线: {}", tag, oldIotDevice);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 宁录性诱不能控制设备
|
|
|
+ *
|
|
|
+ * @param cmdModel
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Object sendCmd(CmdModel cmdModel) throws Exception {
|
|
|
+ log.info("【性诱测报III】收到指令 任务 cmdModel={}", cmdModel);
|
|
|
+
|
|
|
+ // 获取执行的指令
|
|
|
+ CmdModel.Cmd cmdDistribution = cmdModel.getCmdDistribution();
|
|
|
+ // 获取执行的方法 ,方法可以通过反射获取执行,也可以临时case 匹配
|
|
|
+ String methodName = cmdModel.getCmdDistribution().getFunc();
|
|
|
+
|
|
|
+ String mqttMsgContent = "";
|
|
|
+ String clogSendresult = "发送指令成功";
|
|
|
+
|
|
|
+ switch (methodName) {
|
|
|
+ case CmdDef.YfCbdCmdDef.CMD_REQ_DATA:
|
|
|
+ mqttMsgContent = JSON.toJSON(new YfCbdReqMsg()).toString();
|
|
|
+ log.info("【性诱III】发送指令【reqData】 mqttMsgContent={}", mqttMsgContent);
|
|
|
+ break;
|
|
|
+ case CmdDef.YfCbdCmdDef.CMD_CONFIG:
|
|
|
+ JSONObject jobjParam = cmdDistribution.getJsons();
|
|
|
+
|
|
|
+ JSONObject params = new JSONObject();
|
|
|
+ params.put("cmd", "paramconf");
|
|
|
+
|
|
|
+ JSONObject paramconfParams = new JSONObject();
|
|
|
+
|
|
|
+ JSONObject work_tim = new JSONObject();
|
|
|
+ work_tim.put("timctrl", jobjParam.get("timctrl"));
|
|
|
+ work_tim.put("st", jobjParam.get("st"));
|
|
|
+ work_tim.put("et", jobjParam.get("et"));
|
|
|
+
|
|
|
+ JSONObject data_tim = new JSONObject();
|
|
|
+ data_tim.put("dat_f", jobjParam.get("dat_f"));
|
|
|
+
|
|
|
+ JSONObject power = new JSONObject();
|
|
|
+ power.put("ds", jobjParam.get("ds"));
|
|
|
+
|
|
|
+ JSONObject clt_tim = new JSONObject();
|
|
|
+ clt_tim.put("clt_t", jobjParam.get("clt_t"));
|
|
|
+
|
|
|
+
|
|
|
+ paramconfParams.put("work_tim", work_tim);
|
|
|
+ paramconfParams.put("data_tim", data_tim);
|
|
|
+ paramconfParams.put("power", power);
|
|
|
+ paramconfParams.put("clt_tim", clt_tim);
|
|
|
+
|
|
|
+ params.put("ext", paramconfParams);
|
|
|
+ mqttMsgContent = params.toString();
|
|
|
+ log.info("【性诱III】发送指令【config】 mqttMsgContent={}", mqttMsgContent);
|
|
|
+ break;
|
|
|
+ case CmdDef.YfCbdCmdDef.CMD_REFRESH: {
|
|
|
+ mqttMsgContent = JSONUtils.toJSONString(cmdDistribution.getJsons());
|
|
|
+ log.info("【性诱III】发送指令【refresh】 mqttMsgContent={}", mqttMsgContent);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(StringUtils.isNotEmpty(mqttMsgContent)){
|
|
|
+ IotDevice iotDevice= iIotDeviceService.selectIotDeviceByDevBid(cmdModel.getIotDevice().getDevBid());
|
|
|
+ publish(iotDevice, mqttMsgContent);
|
|
|
+ }
|
|
|
+
|
|
|
+ cmdModel.setClogSendresult(clogSendresult);
|
|
|
+ cmdModel.setClogDesc(mqttMsgContent);
|
|
|
+
|
|
|
+ iIotCmdlogService.insertSuccessCmdlog(cmdModel);
|
|
|
+ //返回值待定
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 接收上报数据
|