Sfoglia il codice sorgente

新增 获取云飞气象站24小时数据接口

zhaiyifei 1 anno fa
parent
commit
f3b4ccd6de

+ 17 - 0
src/main/java/com/yunfeiyun/agmp/iotm/device/qxz/controller/IotDeviceQxzController.java

@@ -96,4 +96,21 @@ public class IotDeviceQxzController extends BaseController {
         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));
+    }
 }

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

@@ -6,7 +6,10 @@ 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.enums.RedisCacheKey;
+import com.yunfeiyun.agmp.common.framework.manager.RedisCacheManager;
 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.IotErrorCode;
 import com.yunfeiyun.agmp.iot.common.constant.device.ElementFactorUtil;
@@ -22,6 +25,7 @@ import com.yunfeiyun.agmp.iotm.util.MongoUtil;
 import com.yunfeiyun.agmp.iotm.web.service.IIotDeviceService;
 import com.yunfeiyun.agmp.iotm.web.service.IIotDevicefactorService;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.http.util.TextUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Sort;
@@ -45,6 +49,9 @@ public class IotYfQxzServiceImpl extends IotDeviceBaseServiceImpl implements Iot
     @Autowired
     private IIotDeviceService iotDeviceService;
 
+    @Autowired
+    private RedisCacheManager redisCacheManager;
+
     /**
      * 获取数据列表接口
      * @param reqVo
@@ -288,4 +295,46 @@ public class IotYfQxzServiceImpl extends IotDeviceBaseServiceImpl implements Iot
         }
         return iotQxzDataListRseVoList;
     }
+
+    /**
+     * 获取最近数据列表接口
+     * @param reqVo
+     * @return
+     */
+    public IotDevicelasteddata dataLatest(IotDeviceQxzDataListReqVo reqVo) {
+        String devBid = reqVo.getDevBid();
+        //从redis取出
+        IotDevicelasteddata latestData = redisCacheManager.getCacheObject(RedisCacheKey.SYS_RES, devBid);
+        if(latestData==null){
+            log.info("devBid:{},【最近数据】null",devBid);
+            return null;
+        }
+
+        if(TextUtils.isEmpty(latestData.getDevldContent())){
+            log.info("devBid:{},【最近数据】 content empty",devBid);
+            return null;
+        }
+
+        List<IotYfqxzdata> iotYfqxzdataList = JSONUtils.toList(latestData.getDevldContent(),IotYfqxzdata.class);
+        if(iotYfqxzdataList != null && !iotYfqxzdataList.isEmpty()){
+            List<QxzDataDto> dataList = new ArrayList<>();
+            for(IotYfqxzdata item: iotYfqxzdataList){
+                QxzDataDto dto = new QxzDataDto();
+                BeanUtils.copyProperties(item, dto);
+                dataList.add(dto);
+            }
+            //查出该设备的“自定义要素信息列表”
+            IotDevicefactor param = new IotDevicefactor();
+            param.setDevBid(devBid);
+            List<IotDevicefactor> factorList = iotDevicefactorService.selectIotDevicefactorList(param);
+
+            IotDevice findDevice = iotDeviceService.selectIotDeviceByDevBid(reqVo.getDevBid());
+
+            List<IotQxzDataListRseVo> iotQxzDataListRseVoList = ElementFactorUtil.qxzListProcessData(dataList, factorList, findDevice, false);
+            latestData.setDevldContent(JSONArray.toJSONString(iotQxzDataListRseVoList));
+        }else{
+            log.debug("无数据");
+        }
+        return latestData;
+    }
 }