Browse Source

新增 性诱测报获取配置,下发配置功能

zhaiyifei 1 năm trước cách đây
mục cha
commit
72105499e2

+ 83 - 4
src/main/java/com/yunfeiyun/agmp/iots/device/serviceImp/YfXycbIIIDeviceImpl.java

@@ -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;
+    }
+
 
     /**
      * 接收上报数据