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

新增 添加设备后自动刷新设备数据功能

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

+ 9 - 0
src/main/java/com/yunfeiyun/agmp/iotm/device/common/domin/DeviceRefreshDto.java

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

+ 9 - 0
src/main/java/com/yunfeiyun/agmp/iotm/device/common/service/IotDeviceRefreshService.java

@@ -0,0 +1,9 @@
+package com.yunfeiyun.agmp.iotm.device.common.service;
+
+public interface IotDeviceRefreshService {
+    /**
+     * 刷新设备信息
+     * @param devBid
+     */
+    public String refresh(String devBid);
+}

+ 60 - 0
src/main/java/com/yunfeiyun/agmp/iotm/device/common/service/impl/IotDeviceRefreshServiceImpl.java

@@ -0,0 +1,60 @@
+package com.yunfeiyun.agmp.iotm.device.common.service.impl;
+
+import com.yunfeiyun.agmp.common.utils.DateUtils;
+import com.yunfeiyun.agmp.iot.common.constant.IotErrorCode;
+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.device.common.domin.DeviceRefreshDto;
+import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceBaseFunReqVo;
+import com.yunfeiyun.agmp.iotm.device.common.service.IotDeviceCommonService;
+import com.yunfeiyun.agmp.iotm.device.common.service.IotDeviceRefreshService;
+import com.yunfeiyun.agmp.iotm.web.service.IIotDeviceService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.Objects;
+
+@Service
+public class IotDeviceRefreshServiceImpl implements IotDeviceRefreshService {
+    @Resource
+    private IotDeviceCommonService iotDeviceCommonService;
+
+    @Autowired
+    private IIotDeviceService iotDeviceService;
+
+    /**
+     * 刷新设备信息
+     *
+     * @param devBid
+     */
+    @Override
+    public String refresh(String devBid) {
+        IotDevice findDevice = iotDeviceService.selectIotDeviceByDevBid(devBid);
+        if (findDevice == null) {
+            throw new IotBizException(IotErrorCode.FAILURE.getCode(), "设备不存在" + devBid);
+        }
+        String devStatus = findDevice.getDevStatus();
+        String devCreateddate = findDevice.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())) {
+                throw new IotBizException(IotErrorCode.FAILURE.getCode(), "设备离线无法操作");
+            }
+        }
+
+        DeviceRefreshDto reqVo = new DeviceRefreshDto();
+        reqVo.setIotDevice(findDevice);
+
+        IotDeviceBaseFunReqVo iotDeviceBaseFunReqVo = new IotDeviceBaseFunReqVo();
+        iotDeviceBaseFunReqVo.setDevBid(devBid);
+        iotDeviceBaseFunReqVo.setMethodName("refresh");
+        iotDeviceBaseFunReqVo.setParam(reqVo);
+        iotDeviceCommonService.func(iotDeviceBaseFunReqVo);
+        return "下发成功,等待设备响应结果";
+    }
+}

+ 9 - 6
src/main/java/com/yunfeiyun/agmp/iotm/device/pest/controller/IotDeviceCbdController.java

@@ -1,7 +1,6 @@
 package com.yunfeiyun.agmp.iotm.device.pest.controller;
 
 
-import cn.hutool.core.bean.BeanUtil;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yunfeiyun.agmp.common.annotation.Log;
@@ -17,15 +16,17 @@ import com.yunfeiyun.agmp.common.utils.StringUtils;
 import com.yunfeiyun.agmp.common.utils.poi.ExcelUtil;
 import com.yunfeiyun.agmp.iot.common.constant.IotErrorCode;
 import com.yunfeiyun.agmp.iot.common.constant.devicetype.IotDeviceDictConst;
-import com.yunfeiyun.agmp.iot.common.domain.*;
+import com.yunfeiyun.agmp.iot.common.domain.IotCbddata;
+import com.yunfeiyun.agmp.iot.common.domain.IotCbdimg;
+import com.yunfeiyun.agmp.iot.common.domain.TosDevicetype;
 import com.yunfeiyun.agmp.iot.common.domain.reqvo.IotCbdConfigEditReqVo;
-import com.yunfeiyun.agmp.iot.common.domain.reqvo.IotCbddataReqVo;
 import com.yunfeiyun.agmp.iot.common.exception.IotBizException;
 import com.yunfeiyun.agmp.iot.common.service.MongoService;
 import com.yunfeiyun.agmp.iot.common.service.TypeCacheService;
 import com.yunfeiyun.agmp.iotm.common.controller.BaseController;
 import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceDataListReqVo;
 import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceDataListResVo;
+import com.yunfeiyun.agmp.iotm.device.common.service.IotDeviceRefreshService;
 import com.yunfeiyun.agmp.iotm.device.pest.service.IotCbdService;
 import com.yunfeiyun.agmp.iotm.web.domain.reqvo.IotDeviceListReqVo;
 import com.yunfeiyun.agmp.iotm.web.domain.resvo.IotDeviceListResVo;
@@ -37,7 +38,6 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
-import java.text.ParseException;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -67,6 +67,9 @@ public class IotDeviceCbdController extends BaseController {
     @Resource
     private TypeCacheService typeCacheService;
 
+    @Resource
+    private IotDeviceRefreshService iotDeviceRefreshService;
+
     /**
      * 下发测报灯配置指令
      *
@@ -175,8 +178,8 @@ public class IotDeviceCbdController extends BaseController {
 
     @GetMapping("/refresh/{devBid}")
     public AjaxResult refresh(@PathVariable("devBid") String devBid) {
-        iotCbdService.sendDeviceRefresh(devBid);
-        return new AjaxResult(ErrorCode.SUCCESS.getCode(), "下发成功,等待设备响应结果", null);
+        String result = iotDeviceRefreshService.refresh(devBid);
+        return new AjaxResult(ErrorCode.SUCCESS.getCode(), result, null);
     }
 
     /**

+ 2 - 3
src/main/java/com/yunfeiyun/agmp/iotm/device/pest/service/IotCbdService.java

@@ -2,6 +2,7 @@ package com.yunfeiyun.agmp.iotm.device.pest.service;
 
 import com.yunfeiyun.agmp.iot.common.domain.IotDevice;
 import com.yunfeiyun.agmp.iot.common.domain.reqvo.IotCbdConfigEditReqVo;
+import com.yunfeiyun.agmp.iotm.device.common.domin.DeviceRefreshDto;
 import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceBaseListReqVo;
 import com.yunfeiyun.agmp.iotm.device.common.service.IotDeviceBaseService;
 
@@ -17,8 +18,6 @@ public interface IotCbdService extends IotDeviceBaseService {
     /**抓拍*/
     public String takePhoto(String devId);
 
-    public String refreshStatus(String devId);
+    public void refresh(DeviceRefreshDto reqVo);
     public String editConfig(IotCbdConfigEditReqVo iotCbdConfigEditReqVo);
-
-    void sendDeviceRefresh(String devBid);
 }

+ 6 - 21
src/main/java/com/yunfeiyun/agmp/iotm/device/pest/service/impl/IotCbdServiceImpl.java

@@ -6,13 +6,13 @@ 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.IotErrorCode;
 import com.yunfeiyun.agmp.iot.common.constant.devicetype.ServiceNameConst;
 import com.yunfeiyun.agmp.iot.common.domain.IotDevice;
 import com.yunfeiyun.agmp.iot.common.domain.IotDeviceconfig;
 import com.yunfeiyun.agmp.iot.common.domain.reqvo.IotCbdConfigEditReqVo;
 import com.yunfeiyun.agmp.iot.common.exception.IotBizException;
 import com.yunfeiyun.agmp.iot.common.model.cmd.CmdGroupModel;
+import com.yunfeiyun.agmp.iotm.device.common.domin.DeviceRefreshDto;
 import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceBaseListReqVo;
 import com.yunfeiyun.agmp.iotm.device.common.service.impl.IotDeviceBaseServiceImpl;
 import com.yunfeiyun.agmp.iotm.device.pest.service.IotCbdService;
@@ -26,7 +26,6 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.util.List;
-import java.util.Objects;
 
 /**
  * 测报灯
@@ -103,18 +102,7 @@ public class IotCbdServiceImpl extends IotDeviceBaseServiceImpl implements IotCb
         iIotCmdtaskService.handInternalCmd(cmdGroupModel);
         return cmdGroupModel.getTaskUuid();
     }
-
-    @Override
-    public void sendDeviceRefresh(String devBid) {
-        IotDevice iotDevice = iotDeviceMapper.selectIotDeviceByDevBid(devBid);
-        String devtypeBid = iotDevice.getDevtypeBid();
-        if (Objects.equals(iotDevice.getDevStatus(), "0")) {
-            throw new IotBizException(IotErrorCode.FAILURE.getCode(), "设备离线无法操作");
-        }
-        refreshStatus(devBid);
-    }
-
-
+    
     @Override
     public String takePhoto(String devBid) {
         log.info("【{}】【测报灯】【拍照】客户id {}", LogCore.getSeq());
@@ -141,13 +129,11 @@ public class IotCbdServiceImpl extends IotDeviceBaseServiceImpl implements IotCb
     }
 
 
-
     @Override
-    public String refreshStatus(String devBid) {
-        IotDevice iotDevice = iotDeviceMapper.selectIotDeviceByDevBid(devBid);
-        if (iotDevice == null) {
-            throw new IotBizException(IotErrorCode.FAILURE.getCode(), "设备不存在" + devBid);
-        }
+    public void refresh(DeviceRefreshDto reqVo) {
+        IotDevice iotDevice = reqVo.getIotDevice();
+        String devBid = iotDevice.getDevBid();
+
         log.info("创建【“刷新”指令集任务】,设备类型:CBD");
         JSONObject   payload = new JSONObject();
         payload.put("cmd", "read");
@@ -168,7 +154,6 @@ public class IotCbdServiceImpl extends IotDeviceBaseServiceImpl implements IotCb
         //cmdGroupModel.setCtParam(cbdDeviceConfigurationTranslator.logTakeRefresh(iotDevice.getDevBid()));
         cmdGroupModel.setCtParam("设备id:"+devBid);
         iIotCmdtaskService.handInternalCmd(cmdGroupModel);
-        return cmdGroupModel.getTaskUuid();
     }
 
 

+ 26 - 15
src/main/java/com/yunfeiyun/agmp/iotm/device/qxz/controller/IotDeviceQxzController.java

@@ -1,4 +1,4 @@
-package com.yunfeiyun.agmp.iotm.device.qxz.controller;
+package com.yunfeiyun.agmp.iotm.device.qxsqz.controller;
 
 import com.yunfeiyun.agmp.common.constant.ErrorCode;
 import com.yunfeiyun.agmp.common.core.domain.AjaxResult;
@@ -7,7 +7,8 @@ import com.yunfeiyun.agmp.iot.common.constant.devicetype.IotDeviceDictConst;
 import com.yunfeiyun.agmp.iotm.common.controller.BaseController;
 import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceBaseFunReqVo;
 import com.yunfeiyun.agmp.iotm.device.common.service.IotDeviceCommonService;
-import com.yunfeiyun.agmp.iotm.device.qxz.domain.IotDeviceQxzDataListReqVo;
+import com.yunfeiyun.agmp.iotm.device.common.service.IotDeviceRefreshService;
+import com.yunfeiyun.agmp.iotm.device.qxsqz.domain.IotDeviceQxzDataListReqVo;
 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;
@@ -19,14 +20,17 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 import java.util.Arrays;
 import java.util.List;
 
 /**
- * 气象站设备控制器
+ * 气象站,墒情站 设备控制器
+ * 云飞墒情站和云飞气象站共用一个impl
  */
+
 @RestController
-@RequestMapping("/iot/device/qxz")
+@RequestMapping({"/iot/device/qxz", "/iot/device/sqz"})
 @Slf4j
 public class IotDeviceQxzController extends BaseController {
 
@@ -36,6 +40,9 @@ public class IotDeviceQxzController extends BaseController {
     @Resource
     private IotDeviceCommonService iotDeviceCommonService;
 
+    @Resource
+    private IotDeviceRefreshService iotDeviceRefreshService;
+
 
     /**
      * 气象站列表
@@ -43,9 +50,20 @@ public class IotDeviceQxzController extends BaseController {
      * @return
      */
     @GetMapping("/list")
-    public TableDataInfo list(IotDeviceListReqVo reqVo) {
+    public TableDataInfo list(HttpServletRequest request, IotDeviceListReqVo reqVo) {
         startPage();
-        String[] devTypeList = new String[]{IotDeviceDictConst.TYPE_YF_QXZ};
+        log.info(request.getPathInfo());
+        log.info(request.getRequestURI());
+        log.info(request.getContextPath());
+        log.info(String.valueOf(request.getRequestURL()));
+        String reqUri = request.getRequestURI();
+        String[] devTypeList = null;
+        if(reqUri.endsWith("/qxz/list")){
+            devTypeList = new String[]{IotDeviceDictConst.TYPE_YF_QXZ};
+        }else{
+            devTypeList = new String[]{IotDeviceDictConst.TYPE_YF_SQZ};
+        }
+
         reqVo.setDevtypeBidList(Arrays.asList(devTypeList));
 
         List<IotDeviceListResVo> list = iIotDeviceService.selectIotDeviceListByType(reqVo);
@@ -117,14 +135,7 @@ public class IotDeviceQxzController extends BaseController {
 
     @GetMapping("/refresh/{devBid}")
     public AjaxResult refresh(@PathVariable("devBid") String devBid) {
-        IotDeviceQxzDataListReqVo reqVo = new IotDeviceQxzDataListReqVo();
-        reqVo.setDevBid(devBid);
-
-        IotDeviceBaseFunReqVo iotDeviceBaseFunReqVo = new IotDeviceBaseFunReqVo();
-        iotDeviceBaseFunReqVo.setDevBid(reqVo.getDevBid());
-        iotDeviceBaseFunReqVo.setMethodName("refresh");
-        iotDeviceBaseFunReqVo.setParam(reqVo);
-        iotDeviceCommonService.func(iotDeviceBaseFunReqVo);
-        return new AjaxResult(ErrorCode.SUCCESS.getCode(), "下发成功,等待设备响应结果", null);
+        String result = iotDeviceRefreshService.refresh(devBid);
+        return new AjaxResult(ErrorCode.SUCCESS.getCode(), result, null);
     }
 }

+ 1 - 1
src/main/java/com/yunfeiyun/agmp/iotm/device/qxz/domain/IotDeviceQxzDataListReqVo.java

@@ -1,4 +1,4 @@
-package com.yunfeiyun.agmp.iotm.device.qxz.domain;
+package com.yunfeiyun.agmp.iotm.device.qxsqz.domain;
 
 import lombok.Data;
 

+ 1 - 1
src/main/java/com/yunfeiyun/agmp/iotm/device/qxz/domain/QxzDataLast24hDto.java

@@ -1,4 +1,4 @@
-package com.yunfeiyun.agmp.iotm.device.qxz.domain;
+package com.yunfeiyun.agmp.iotm.device.qxsqz.domain;
 
 import com.yunfeiyun.agmp.iot.common.domain.QxzDataDto;
 import lombok.Data;

+ 8 - 13
src/main/java/com/yunfeiyun/agmp/iotm/device/qxz/service/impl/IotYfQxzServiceImpl.java

@@ -1,4 +1,4 @@
-package com.yunfeiyun.agmp.iotm.device.qxz.service.impl;
+package com.yunfeiyun.agmp.iotm.device.qxsqz.service.impl;
 
 import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
@@ -19,10 +19,11 @@ import com.yunfeiyun.agmp.iot.common.domain.*;
 import com.yunfeiyun.agmp.iot.common.exception.IotBizException;
 import com.yunfeiyun.agmp.iot.common.model.cmd.CmdGroupModel;
 import com.yunfeiyun.agmp.iot.common.service.MongoService;
+import com.yunfeiyun.agmp.iotm.device.common.domin.DeviceRefreshDto;
 import com.yunfeiyun.agmp.iotm.device.common.service.IotDeviceBaseService;
 import com.yunfeiyun.agmp.iotm.device.common.service.impl.IotDeviceBaseServiceImpl;
-import com.yunfeiyun.agmp.iotm.device.qxz.domain.IotDeviceQxzDataListReqVo;
-import com.yunfeiyun.agmp.iotm.device.qxz.domain.QxzDataLast24hDto;
+import com.yunfeiyun.agmp.iotm.device.qxsqz.domain.IotDeviceQxzDataListReqVo;
+import com.yunfeiyun.agmp.iotm.device.qxsqz.domain.QxzDataLast24hDto;
 import com.yunfeiyun.agmp.iotm.util.MongoUtil;
 import com.yunfeiyun.agmp.iotm.web.service.IIotCmdtaskService;
 import com.yunfeiyun.agmp.iotm.web.service.IIotDeviceService;
@@ -341,17 +342,11 @@ public class IotYfQxzServiceImpl extends IotDeviceBaseServiceImpl implements Iot
      * 刷新指令集
      * @param reqVo
      */
-    public void refresh(IotDeviceQxzDataListReqVo reqVo) {
-        String devBid = reqVo.getDevBid();
-        IotDevice findDevice = iotDeviceService.selectIotDeviceByDevBid(reqVo.getDevBid());
-        if (findDevice == null) {
-            throw new IotBizException(IotErrorCode.FAILURE.getCode(), "设备不存在" + devBid);
-        }
-        if (Objects.equals(findDevice.getDevStatus(), "0")) {
-            throw new IotBizException(IotErrorCode.FAILURE.getCode(), "设备离线无法操作");
-        }
+    public void refresh(DeviceRefreshDto reqVo) {
 
-        log.info("创建【“刷新”指令集任务】,设备类型:YFQXZ");
+        IotDevice findDevice = reqVo.getIotDevice();
+        String devBid = findDevice.getDevBid();
+        log.info("创建【“刷新”指令集任务】,设备类型:{}", findDevice.getDevtypeName());
         JSONObject ext = new JSONObject();
         ext.put("type", "data");
         JSONObject payload = new JSONObject();

+ 1 - 1
src/main/java/com/yunfeiyun/agmp/iotm/device/qxz/service/impl/IotYfXphServiceImpl.java

@@ -1,4 +1,4 @@
-package com.yunfeiyun.agmp.iotm.device.qxz.service.impl;
+package com.yunfeiyun.agmp.iotm.device.qxsqz.service.impl;
 
 import com.yunfeiyun.agmp.iotm.device.common.service.IotDeviceBaseService;
 import com.yunfeiyun.agmp.iotm.device.common.service.impl.IotDeviceBaseServiceImpl;

+ 0 - 131
src/main/java/com/yunfeiyun/agmp/iotm/device/sqz/controller/IotDeviceSqzController.java

@@ -1,131 +0,0 @@
-package com.yunfeiyun.agmp.iotm.device.sqz.controller;
-
-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.iot.common.constant.devicetype.IotDeviceDictConst;
-import com.yunfeiyun.agmp.iotm.common.controller.BaseController;
-import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceBaseFunReqVo;
-import com.yunfeiyun.agmp.iotm.device.common.service.IotDeviceCommonService;
-import com.yunfeiyun.agmp.iotm.device.qxz.domain.IotDeviceQxzDataListReqVo;
-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;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.annotation.Resource;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * 墒情站设备控制器
- * 云飞墒情站和云飞气象站共用一个impl
- */
-@RestController
-@RequestMapping("/iot/device/sqz")
-@Slf4j
-public class IotDeviceSqzController extends BaseController {
-
-    @Autowired
-    private IIotDeviceService iIotDeviceService;
-
-    @Resource
-    private IotDeviceCommonService iotDeviceCommonService;
-
-
-    /**
-     * 数据列表
-     * @param reqVo
-     * @return
-     */
-    @GetMapping("/list")
-    public TableDataInfo list(IotDeviceListReqVo reqVo) {
-        startPage();
-        String[] devTypeList = new String[]{IotDeviceDictConst.TYPE_YF_SQZ};
-        reqVo.setDevtypeBidList(Arrays.asList(devTypeList));
-
-        List<IotDeviceListResVo> list = iIotDeviceService.selectIotDeviceListByType(reqVo);
-        return getDataTable(list);
-    }
-
-    /**
-     * 气象数据列表
-     * @param reqVo
-     * @return
-     */
-    @GetMapping("/data/list")
-    public TableDataInfo dataList(IotDeviceQxzDataListReqVo reqVo) {
-        IotDeviceBaseFunReqVo iotDeviceBaseFunReqVo = new IotDeviceBaseFunReqVo();
-        iotDeviceBaseFunReqVo.setDevBid(reqVo.getDevBid());
-        iotDeviceBaseFunReqVo.setMethodName("dataList");
-        iotDeviceBaseFunReqVo.setParam(reqVo);
-        return iotDeviceCommonService.func(iotDeviceBaseFunReqVo);
-    }
-
-    /**
-     * 气象数据折线图列表
-     * @param reqVo
-     * @return
-     */
-    @GetMapping("/chart/list")
-    public AjaxResult chartList(IotDeviceQxzDataListReqVo reqVo) {
-        IotDeviceBaseFunReqVo iotDeviceBaseFunReqVo = new IotDeviceBaseFunReqVo();
-        iotDeviceBaseFunReqVo.setDevBid(reqVo.getDevBid());
-        iotDeviceBaseFunReqVo.setMethodName("chartList");
-        iotDeviceBaseFunReqVo.setParam(reqVo);
-        List<IotDeviceListResVo> list = iotDeviceCommonService.func(iotDeviceBaseFunReqVo);
-        return AjaxResult.success(list);
-    }
-
-    /**
-     * 气象数据24小时列表
-     * @param
-     * @return
-     */
-    @GetMapping("/data/last24h/{devBid}")
-    public AjaxResult dataList24h(@PathVariable("devBid") String devBid) {
-        IotDeviceQxzDataListReqVo reqVo = new IotDeviceQxzDataListReqVo();
-        reqVo.setDevBid(devBid);
-
-        IotDeviceBaseFunReqVo iotDeviceBaseFunReqVo = new IotDeviceBaseFunReqVo();
-        iotDeviceBaseFunReqVo.setDevBid(reqVo.getDevBid());
-        iotDeviceBaseFunReqVo.setMethodName("dataList24h");
-        iotDeviceBaseFunReqVo.setParam(reqVo);
-        return AjaxResult.success(iotDeviceCommonService.func(iotDeviceBaseFunReqVo));
-    }
-
-    /**
-     * 获取最近数据列表接口
-     * @param
-     * @return
-     */
-    @GetMapping("/data/dataLatest/{devBid}")
-    public AjaxResult dataLatest(@PathVariable("devBid") String devBid) {
-        IotDeviceQxzDataListReqVo reqVo = new IotDeviceQxzDataListReqVo();
-        reqVo.setDevBid(devBid);
-
-        IotDeviceBaseFunReqVo iotDeviceBaseFunReqVo = new IotDeviceBaseFunReqVo();
-        iotDeviceBaseFunReqVo.setDevBid(reqVo.getDevBid());
-        iotDeviceBaseFunReqVo.setMethodName("dataLatest");
-        iotDeviceBaseFunReqVo.setParam(reqVo);
-        return AjaxResult.success(iotDeviceCommonService.func(iotDeviceBaseFunReqVo));
-    }
-
-    @GetMapping("/refresh/{devBid}")
-    public AjaxResult refresh(@PathVariable("devBid") String devBid) {
-        IotDeviceQxzDataListReqVo reqVo = new IotDeviceQxzDataListReqVo();
-        reqVo.setDevBid(devBid);
-
-        IotDeviceBaseFunReqVo iotDeviceBaseFunReqVo = new IotDeviceBaseFunReqVo();
-        iotDeviceBaseFunReqVo.setDevBid(reqVo.getDevBid());
-        iotDeviceBaseFunReqVo.setMethodName("refresh");
-        iotDeviceBaseFunReqVo.setParam(reqVo);
-        iotDeviceCommonService.func(iotDeviceBaseFunReqVo);
-        return new AjaxResult(ErrorCode.SUCCESS.getCode(), "下发成功,等待设备响应结果", null);
-    }
-}

+ 35 - 2
src/main/java/com/yunfeiyun/agmp/iotm/web/service/impl/IotDeviceServiceImpl.java

@@ -12,6 +12,7 @@ import com.yunfeiyun.agmp.iot.common.enums.IotDeviceStatusTypeEnum;
 import com.yunfeiyun.agmp.iot.common.exception.IotBizException;
 import com.yunfeiyun.agmp.iot.common.model.mq.IotDeviceEditMqModel;
 import com.yunfeiyun.agmp.iot.common.service.TypeCacheService;
+import com.yunfeiyun.agmp.iotm.device.common.service.IotDeviceRefreshService;
 import com.yunfeiyun.agmp.iotm.mq.service.SendToIotsMsgService;
 import com.yunfeiyun.agmp.iotm.mq.service.SendToTosMsgService;
 import com.yunfeiyun.agmp.iotm.util.MyPageUtil;
@@ -23,6 +24,7 @@ import com.yunfeiyun.agmp.iotm.web.domain.resvo.IotDeviceListResVo;
 import com.yunfeiyun.agmp.iotm.web.mapper.IotDeviceMapper;
 import com.yunfeiyun.agmp.iotm.web.service.IIotDeviceService;
 import com.yunfeiyun.agmp.iotm.web.service.IIotDeviceconnService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -41,6 +43,7 @@ import java.util.Set;
  * @date 2024-11-06
  */
 @Service
+@Slf4j
 public class IotDeviceServiceImpl implements IIotDeviceService
 {
     @Autowired
@@ -57,6 +60,9 @@ public class IotDeviceServiceImpl implements IIotDeviceService
     @Autowired
     private IIotDeviceconnService iotDeviceconnService;
 
+    @Autowired
+    private IotDeviceRefreshService iotDeviceRefreshService;
+
     /**
      * 新增设备基础
      *
@@ -72,6 +78,16 @@ public class IotDeviceServiceImpl implements IIotDeviceService
         if(devCodeList == null || devCodeList.length == 0){
             throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(),"设备编码不能为空");
         }
+        Set<String> tempDevCodeSet = new HashSet<>();
+        for(String devCode : devCodeList){
+            if(StringUtils.isEmpty(devCode)){
+                throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(),"设备编码不能为空");
+            }
+            tempDevCodeSet.add(devCode);
+        }
+        if(tempDevCodeSet.size() != devCodeList.length){
+            throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(),"设备编码不能重复");
+        }
 
         IotDeviceconn iotDeviceconn = iotDeviceconnService.selectIotDeviceconnByBid(devconnBid);
         if(iotDeviceconn == null){
@@ -98,11 +114,11 @@ public class IotDeviceServiceImpl implements IIotDeviceService
         List<IotDevice> iotDeviceList = selectIotDeviceList(selectIotDevice);
         Set<String> devCodeSet = new HashSet<>();
         for (IotDevice iotDevice : iotDeviceList) {
-            devCodeSet.add(iotDevice.getFirmBid() + iotDevice.getDevtypeBid() + iotDevice.getDevCode());
+            devCodeSet.add(iotDevice.getDevtypeBid() + iotDevice.getDevCode());
         }
         List<IotDevice> insertIotDeviceList = new ArrayList<>();
         for (String devCode : devCodeList) {
-            if(devCodeSet.contains(firmBid+devtypeBid+devCode)){
+            if(devCodeSet.contains(devtypeBid + devCode)){
                 throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(),"该设备已存在:"+devCode);
             }
 
@@ -284,6 +300,23 @@ public class IotDeviceServiceImpl implements IIotDeviceService
             sendToTosMsgService.sendIotDeviceInsertMsg(iotDevice);
             sendToIotsMsgService.sendIotDeviceInsertMsg(iotDevice);
         }
+        new Thread(() -> {
+            try {
+                Thread.sleep(2000);
+                // 刷新设备信息
+                for (IotDevice iotDevice : iotDeviceList) {
+                    try {
+                        iotDeviceRefreshService.refresh(iotDevice.getDevBid());
+                        log.info("创建设备刷新成功: " + iotDevice);
+                    } catch (Exception e) {
+                        log.error("创建设备刷新失败: " + iotDevice, e);
+                    }
+                }
+            } catch (Exception e) {
+                log.error("创建设备刷新失败: " + iotDeviceList, e);
+            }
+        }).start();
+
         return status;
     }