Преглед изворни кода

新增 杀虫灯一键清虫接口

zhaiyifei пре 1 година
родитељ
комит
d4cfcbf1e7

+ 99 - 0
src/main/java/com/yunfeiyun/agmp/iotm/device/scd/controller/IotDeviceScdController.java

@@ -1,15 +1,26 @@
 package com.yunfeiyun.agmp.iotm.device.scd.controller;
 
+import com.alibaba.fastjson2.JSONObject;
 import com.yunfeiyun.agmp.common.constant.ErrorCode;
 import com.yunfeiyun.agmp.common.core.domain.AjaxResult;
 import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
+import com.yunfeiyun.agmp.common.log.LogCore;
+import com.yunfeiyun.agmp.common.utils.DateUtils;
+import com.yunfeiyun.agmp.common.utils.StringUtils;
+import com.yunfeiyun.agmp.iot.common.constant.IotErrorCode;
 import com.yunfeiyun.agmp.iot.common.constant.devicetype.IotDeviceDictConst;
+import com.yunfeiyun.agmp.iot.common.domain.IotDevice;
+import com.yunfeiyun.agmp.iot.common.enums.IotDeviceStatusTypeEnum;
+import com.yunfeiyun.agmp.iot.common.exception.IotBizException;
 import com.yunfeiyun.agmp.iotm.common.controller.BaseController;
 import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceBaseFunReqVo;
 import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceDataListReqVo;
 import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceExportReqVo;
 import com.yunfeiyun.agmp.iotm.device.common.service.IotDeviceCommonService;
 import com.yunfeiyun.agmp.iotm.device.common.service.IotDeviceRefreshService;
+import com.yunfeiyun.agmp.iotm.device.scd.domain.IotScdClearPestDto;
+import com.yunfeiyun.agmp.iotm.device.scd.domain.IotScdConfig;
+import com.yunfeiyun.agmp.iotm.device.scd.domain.IotScdConfigEditReqVo;
 import com.yunfeiyun.agmp.iotm.web.domain.reqvo.IotDeviceListReqVo;
 import com.yunfeiyun.agmp.iotm.web.domain.resvo.IotDeviceListResVo;
 import com.yunfeiyun.agmp.iotm.web.service.IIotDeviceService;
@@ -21,7 +32,9 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 杀虫灯设备控制器
@@ -132,4 +145,90 @@ public class IotDeviceScdController extends BaseController {
         iotDeviceCommonService.func(iotDeviceBaseFunReqVo);
     }
 
+    @GetMapping("/config/info/{devBid}")
+    public AjaxResult configInfo(@PathVariable("devBid") String devBid){
+        IotDeviceDataListReqVo reqVo = new IotDeviceDataListReqVo();
+        reqVo.setDevBid(devBid);
+
+        IotDeviceBaseFunReqVo iotDeviceBaseFunReqVo = new IotDeviceBaseFunReqVo();
+        iotDeviceBaseFunReqVo.setDevBid(reqVo.getDevBid());
+        iotDeviceBaseFunReqVo.setMethodName("configInfo");
+        iotDeviceBaseFunReqVo.setParam(reqVo);
+        JSONObject jsonObject = iotDeviceCommonService.func(iotDeviceBaseFunReqVo);
+        return AjaxResult.success(jsonObject);
+    }
+
+    /**
+     * 下发杀虫灯配置指令
+     *
+     * @return
+     * @throws Exception
+     */
+    @PostMapping("/config/edit")
+    public AjaxResult sendConfigCmd(@RequestBody IotScdConfigEditReqVo reqVo) {
+        log.info("【{}】【杀虫灯】【下发指令配置】客户id {}", LogCore.getSeq(), getCustomerId());
+        String devBid = reqVo.getDevBid();
+        IotScdConfig iotScdConfig = reqVo.getIotScdConfig();
+        if(StringUtils.isEmpty(devBid) || iotScdConfig == null){
+            throw new IotBizException(IotErrorCode.PARAM_INVALID.getCode(),"参数不能为空");
+        }
+        IotDevice iotDevice = iIotDeviceService.selectIotDeviceByDevBid(devBid);
+        if(iotDevice == null){
+            throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(),"设备不存在");
+        }
+        String devStatus = iotDevice.getDevStatus();
+        String devCreateddate = iotDevice.getDevCreateddate();
+        Date createdDate = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, devCreateddate);
+        Date nowDate = DateUtils.getNowDate();
+        long diffTime = nowDate.getTime() - createdDate.getTime();
+        if(diffTime > 10 * 1000){
+            if (!Objects.equals(devStatus, IotDeviceStatusTypeEnum.ONLINE.getCode()) && !Objects.equals(devStatus, IotDeviceStatusTypeEnum.WAIT_ACTIVATE.getCode())) {
+                throw new IotBizException(IotErrorCode.FAILURE.getCode(), "设备离线无法操作");
+            }
+        }
+
+        reqVo.setIotDevice(iotDevice);
+
+        IotDeviceBaseFunReqVo iotDeviceBaseFunReqVo = new IotDeviceBaseFunReqVo();
+        iotDeviceBaseFunReqVo.setDevBid(reqVo.getDevBid());
+        iotDeviceBaseFunReqVo.setMethodName("sendConfigCmd");
+        iotDeviceBaseFunReqVo.setParam(reqVo);
+        String taskId = iotDeviceCommonService.func(iotDeviceBaseFunReqVo);
+
+        return new AjaxResult(ErrorCode.SUCCESS.getCode(), "下发成功,等待设备响应结果", taskId);
+    }
+
+    /**
+     * 一键清虫
+     * @param devBid
+     * @return
+     */
+    @GetMapping("/clear/{devBid}")
+    public AjaxResult clearPest(@PathVariable("devBid") String devBid) {
+        IotDevice iotDevice = iIotDeviceService.selectIotDeviceByDevBid(devBid);
+        if(iotDevice == null){
+            throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(),"设备不存在");
+        }
+        String devStatus = iotDevice.getDevStatus();
+        String devCreateddate = iotDevice.getDevCreateddate();
+        Date createdDate = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, devCreateddate);
+        Date nowDate = DateUtils.getNowDate();
+        long diffTime = nowDate.getTime() - createdDate.getTime();
+        if(diffTime > 10 * 1000){
+            if (!Objects.equals(devStatus, IotDeviceStatusTypeEnum.ONLINE.getCode()) && !Objects.equals(devStatus, IotDeviceStatusTypeEnum.WAIT_ACTIVATE.getCode())) {
+                throw new IotBizException(IotErrorCode.FAILURE.getCode(), "设备离线无法操作");
+            }
+        }
+        IotScdClearPestDto iotScdClearPestDto = new IotScdClearPestDto();
+        iotScdClearPestDto.setIotDevice(iotDevice);
+
+        IotDeviceBaseFunReqVo iotDeviceBaseFunReqVo = new IotDeviceBaseFunReqVo();
+        iotDeviceBaseFunReqVo.setDevBid(devBid);
+        iotDeviceBaseFunReqVo.setMethodName("clearPest");
+
+        iotDeviceBaseFunReqVo.setParam(iotScdClearPestDto);
+        String taskId = iotDeviceCommonService.func(iotDeviceBaseFunReqVo);
+
+        return new AjaxResult(ErrorCode.SUCCESS.getCode(), "下发成功,等待设备响应结果", taskId);
+    }
 }

+ 9 - 0
src/main/java/com/yunfeiyun/agmp/iotm/device/scd/domain/IotScdClearPestDto.java

@@ -0,0 +1,9 @@
+package com.yunfeiyun.agmp.iotm.device.scd.domain;
+
+import com.yunfeiyun.agmp.iot.common.domain.IotDevice;
+import lombok.Data;
+
+@Data
+public class IotScdClearPestDto {
+    private IotDevice iotDevice;
+}

+ 29 - 0
src/main/java/com/yunfeiyun/agmp/iotm/device/scd/domain/IotScdConfig.java

@@ -0,0 +1,29 @@
+package com.yunfeiyun.agmp.iotm.device.scd.domain;
+
+import lombok.Data;
+
+@Data
+public class IotScdConfig {
+    /**
+     * 清虫间隔
+     */
+    private String clt_t;
+
+    /**数据上传时间间隔*/
+    private String dat_f;
+
+    /**设备开关状态 0 关机 1 开机*/
+    private String ds;
+
+    /**时控开始时间:0-23*/
+    private String st;
+
+    /**时控结束时间:0-23*/
+    private String et;
+
+    /**定时模式:0光控 1 时控*/
+    private String ts;
+
+    /**光控定时时间1~10*/
+    private String tt;
+}

+ 11 - 0
src/main/java/com/yunfeiyun/agmp/iotm/device/scd/domain/IotScdConfigEditReqVo.java

@@ -0,0 +1,11 @@
+package com.yunfeiyun.agmp.iotm.device.scd.domain;
+
+import com.yunfeiyun.agmp.iot.common.domain.IotDevice;
+import lombok.Data;
+
+@Data
+public class IotScdConfigEditReqVo {
+    private String devBid;
+    private IotScdConfig iotScdConfig;
+    private IotDevice iotDevice;
+}

+ 81 - 4
src/main/java/com/yunfeiyun/agmp/iotm/device/scd/service/impl/IotYfScdServiceImpl.java

@@ -6,6 +6,7 @@ import com.yunfeiyun.agmp.common.constant.ErrorCode;
 import com.yunfeiyun.agmp.common.core.page.PageDomain;
 import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
 import com.yunfeiyun.agmp.common.core.page.TableSupport;
+import com.yunfeiyun.agmp.common.log.LogCore;
 import com.yunfeiyun.agmp.common.utils.JSONUtils;
 import com.yunfeiyun.agmp.common.utils.StringUtils;
 import com.yunfeiyun.agmp.common.utils.poi.ExcelUtil;
@@ -22,10 +23,7 @@ import com.yunfeiyun.agmp.iot.common.service.MongoService;
 import com.yunfeiyun.agmp.iotm.device.common.domin.DeviceRefreshDto;
 import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceDataListReqVo;
 import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceExportReqVo;
-import com.yunfeiyun.agmp.iotm.device.scd.domain.IotYfFxsScdDataExportVo;
-import com.yunfeiyun.agmp.iotm.device.scd.domain.IotYfScdDataExportVo;
-import com.yunfeiyun.agmp.iotm.device.scd.domain.IotYfScdPolylineResVo;
-import com.yunfeiyun.agmp.iotm.device.scd.domain.IotYfScdStatusExportVo;
+import com.yunfeiyun.agmp.iotm.device.scd.domain.*;
 import com.yunfeiyun.agmp.iotm.device.scd.service.IIotScdCommService;
 import com.yunfeiyun.agmp.iotm.util.MongoUtil;
 import com.yunfeiyun.agmp.iotm.web.service.IIotCmdtaskService;
@@ -364,4 +362,83 @@ public class IotYfScdServiceImpl extends IIotScdCommService {
         ExcelUtil<IotYfScdStatusExportVo> util = new ExcelUtil<>(IotYfScdStatusExportVo.class);
         util.exportExcel(response, exportVoList, "状态数据");
     }
+
+    public JSONObject configInfo(IotDeviceDataListReqVo reqVo){
+        String devBid = reqVo.getDevBid();
+        if(StringUtils.isEmpty(devBid)){
+            throw new IotBizException(IotErrorCode.PARAM_INVALID.getCode(),"参数不能为空");
+        }
+        IotDevice iotDevice = iotDeviceService.selectIotDeviceByDevBid(devBid);
+        if(iotDevice == null){
+            throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(),"设备不存在");
+        }
+        IotDeviceconfig iotDeviceconfig = iIotDeviceconfigService.selectIotDeviceConfigByDevBid(devBid);
+        JSONObject jsonObject = new JSONObject();
+        if(iotDeviceconfig != null){
+            jsonObject = JSONObject.parseObject(iotDeviceconfig.getDevcfgContext());
+        }
+        return jsonObject;
+    }
+
+    public String sendConfigCmd(IotScdConfigEditReqVo reqVo){
+        IotDevice iotDevice = reqVo.getIotDevice();
+        String devBid = iotDevice.getDevBid();
+        IotScdConfig iotScdConfig = reqVo.getIotScdConfig();
+        if(iotScdConfig == null){
+            throw new IotBizException(IotErrorCode.PARAM_INVALID.getCode(),"参数不能为空");
+        }
+
+        IotDeviceconfig iotDeviceconfig = iIotDeviceconfigService.selectIotDeviceConfigByDevBid(devBid);
+        if (null == iotDeviceconfig) {
+            // 如果测报灯配置为空,则新增测报灯配置
+            iotDeviceconfig = new IotDeviceconfig();
+            iotDeviceconfig.setDevcfgBid(iotDeviceconfig.getUUId());
+            iotDeviceconfig.setTid(iotDevice.getTid());
+            iotDeviceconfig.setDevBid(devBid);
+            iotDeviceconfig.setDevcfgContext(JSONUtils.toJSONString(iotScdConfig));
+            iotDeviceconfig.setDevcfgDelstatus("0");
+            iIotDeviceconfigService.insertIotDeviceconfig(iotDeviceconfig);
+        } else {
+            // 如果测报灯配置不为空,则更新测报灯配置
+            iotDeviceconfig.setDevcfgContext(JSONUtils.toJSONString(iotScdConfig));
+            iIotDeviceconfigService.updateIotDeviceconfig(iotDeviceconfig);
+        }
+
+        CmdGroupModel cmdGroupModel = iIotDeviceconfigService.createConfigCmd(iotDeviceconfig);
+        log.info("【{}】【杀虫灯 [下发配置]】【构建 cmdGroupModel】{}", LogCore.getSeq(), JSONUtils.toJSONString(cmdGroupModel));
+        cmdGroupModel.setRequestId(IdUtils.fastUUID());
+
+        // 适配增加详细日志使用
+        cmdGroupModel.setDevCode(iotDevice.getDevCode());
+        cmdGroupModel.setCtBiztitle(iotDevice.getDevtypeName() + ":" + iotDevice.getDevCode());
+        cmdGroupModel.setCtBiztype("3");
+        cmdGroupModel.setCtDevtype(iotDevice.getDevtypeBid());
+        cmdGroupModel.setCtParam(JSONUtils.toJSONString(reqVo));
+        iIotCmdtaskService.handInternalCmd(cmdGroupModel);
+        return cmdGroupModel.getTaskUuid();
+    }
+
+    public String clearPest(IotScdClearPestDto iotScdClearPestDto){
+        IotDevice iotDevice = iotScdClearPestDto.getIotDevice();
+
+        JSONObject payload = new JSONObject();
+        payload.put("cmd", "ctr_clear");
+
+        IotDeviceconfig iotDeviceconfig = new IotDeviceconfig();
+        iotDeviceconfig.setDevBid(iotDevice.getDevBid());
+        iotDeviceconfig.setDevcfgContext(JSONUtils.toJSONString(payload));
+
+        CmdGroupModel cmdGroupModel = iIotDeviceconfigService.createCommonCmd(iotDeviceconfig);
+        log.info("【{}】【杀虫灯 [一键清虫]】【构建 cmdGroupModel】{}", LogCore.getSeq(), JSONUtils.toJSONString(cmdGroupModel));
+        cmdGroupModel.setRequestId(IdUtils.fastUUID());
+
+        // 适配增加详细日志使用
+        cmdGroupModel.setDevCode(iotDevice.getDevCode());
+        cmdGroupModel.setCtBiztitle(iotDevice.getDevtypeName() + ":" + iotDevice.getDevCode());
+        cmdGroupModel.setCtBiztype("3");
+        cmdGroupModel.setCtDevtype(iotDevice.getDevtypeBid());
+//        cmdGroupModel.setCtParam(JSONUtils.toJSONString(iotDeviceconfig));
+        iIotCmdtaskService.handInternalCmd(cmdGroupModel);
+        return cmdGroupModel.getTaskUuid();
+    }
 }

+ 2 - 0
src/main/java/com/yunfeiyun/agmp/iotm/web/service/IIotDeviceconfigService.java

@@ -79,6 +79,8 @@ public interface IIotDeviceconfigService {
 
     public CmdGroupModel createRefreshCmd(IotDeviceconfig iotDeviceconfig);
 
+    public CmdGroupModel createCommonCmd(IotDeviceconfig iotDeviceconfig);
+
     /**
      * 构造一个 “通用配置指令集”执行任务,提交IOTS执行
      *

+ 10 - 1
src/main/java/com/yunfeiyun/agmp/iotm/web/service/impl/IotDeviceconfigServiceImpl.java

@@ -6,7 +6,6 @@ import com.yunfeiyun.agmp.common.log.LogCore;
 import com.yunfeiyun.agmp.common.utils.JSONUtils;
 import com.yunfeiyun.agmp.common.utils.StringUtils;
 import com.yunfeiyun.agmp.common.utils.uuid.IdUtils;
-import com.yunfeiyun.agmp.iot.common.constant.devicetype.IotDeviceTypeLv1Enum;
 import com.yunfeiyun.agmp.iot.common.domain.IotDevice;
 import com.yunfeiyun.agmp.iot.common.domain.IotDeviceconfig;
 import com.yunfeiyun.agmp.iot.common.model.cmd.CmdGroupModel;
@@ -192,6 +191,16 @@ public class IotDeviceconfigServiceImpl implements IIotDeviceconfigService {
         return createCmd(iotDeviceconfig, "refresh");
     }
 
+    /**
+     * 通用配置
+     * @param iotDeviceconfig
+     * @return
+     */
+    @Override
+    public CmdGroupModel createCommonCmd(IotDeviceconfig iotDeviceconfig) {
+        return createCmd(iotDeviceconfig, "common");
+    }
+
     public CmdGroupModel createCmd(IotDeviceconfig iotDeviceconfig, String func) {
         CmdGroupModel cmdGroupModel = new CmdGroupModel();
         cmdGroupModel.setTid(iotDeviceconfig.getTid());