Parcourir la source

新增 获取云飞气象站最新数据接口

zhaiyifei il y a 1 an
Parent
commit
552c636edb

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

@@ -6,10 +6,8 @@ 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;
@@ -25,7 +23,6 @@ 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;
@@ -52,11 +49,15 @@ public class IotYfQxzServiceImpl extends IotDeviceBaseServiceImpl implements Iot
     @Autowired
     private RedisCacheManager redisCacheManager;
 
+    public TableDataInfo dataList(IotDeviceQxzDataListReqVo reqVo) throws ParseException {
+        return dataList(reqVo, true);
+    }
+
     /**
      * 获取数据列表接口
      * @param reqVo
      */
-    public TableDataInfo dataList(IotDeviceQxzDataListReqVo reqVo) throws ParseException {
+    public TableDataInfo dataList(IotDeviceQxzDataListReqVo reqVo, boolean isNow) throws ParseException {
         TableDataInfo rspData = new TableDataInfo();
         rspData.setCode(ErrorCode.SUCCESS.getCode());
         rspData.setMsg(ErrorCode.SUCCESS.getMessage());
@@ -66,21 +67,22 @@ public class IotYfQxzServiceImpl extends IotDeviceBaseServiceImpl implements Iot
         IotDevice findDevice = iotDeviceService.selectIotDeviceByDevBid(reqVo.getDevBid());
 
         String devBid = findDevice.getDevBid();
-        Date startDate = null;
-        Date endDate = null;
-        try{
-            startDate = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, reqVo.getStartTime());
-            endDate = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, reqVo.getEndTime());
-        }catch (Exception e){
-            log.error("时间格式错误", e);
-            throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(), "请输入正确的起止时间");
-        }
-
         Criteria criteria = new Criteria().and("devBid").is(devBid);
-        criteria = criteria.andOperator(
-                Criteria.where("time").gte(startDate),
-                Criteria.where("time").lte(endDate)
-        );
+        if(isNow){
+            Date startDate = null;
+            Date endDate = null;
+            try{
+                startDate = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, reqVo.getStartTime());
+                endDate = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, reqVo.getEndTime());
+            }catch (Exception e){
+                log.error("时间格式错误", e);
+                throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(), "请输入正确的起止时间");
+            }
+            criteria = criteria.andOperator(
+                    Criteria.where("time").gte(startDate),
+                    Criteria.where("time").lte(endDate)
+            );
+        }
 
         MatchOperation matchOperation = Aggregation.match(criteria);
 
@@ -122,7 +124,7 @@ public class IotYfQxzServiceImpl extends IotDeviceBaseServiceImpl implements Iot
      * 获取折线图数据列表接口
      * @param reqVo
      */
-    public List<IotQxzDataListRseVo> chartList(IotDeviceQxzDataListReqVo reqVo) {
+    public List<IotQxzDataListRseVo> chartList(IotDeviceQxzDataListReqVo reqVo) throws ParseException {
 
         //1、查出总条数 2、查出“符合条件的、当前页的”数据 3、json结构重组(如果需要的话) 4、附加 要素自定义 信息
 
@@ -301,40 +303,24 @@ public class IotYfQxzServiceImpl extends IotDeviceBaseServiceImpl implements Iot
      * @param reqVo
      * @return
      */
-    public IotDevicelasteddata dataLatest(IotDeviceQxzDataListReqVo reqVo) {
+    public IotDevicelasteddata dataLatest(IotDeviceQxzDataListReqVo reqVo) throws ParseException {
         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);
+        IotDevice findDevice = iotDeviceService.selectIotDeviceByDevBid(reqVo.getDevBid());
+        TableDataInfo tableDataInfo = dataList(reqVo, false);
+        List<List<IotQxzDataListRseVo>> rest = (List<List<IotQxzDataListRseVo>>) tableDataInfo.getData();
+        if(rest == null || rest.isEmpty()){
+            log.info("devBid:{},【最近数据】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("无数据");
-        }
+        List<IotQxzDataListRseVo> iotQxzDataListRseVoList = rest.get(0);
+        IotQxzDataListRseVo iotQxzDataListRseVo = iotQxzDataListRseVoList.get(0);
+        IotDevicelasteddata latestData = new IotDevicelasteddata();
+        BeanUtils.copyProperties(findDevice, latestData);
+        latestData.setDevldCreateddate(iotQxzDataListRseVo.getTime());
+        latestData.setDevldUpdateddate(iotQxzDataListRseVo.getTime());
+        latestData.setDevldContent(JSONArray.toJSONString(iotQxzDataListRseVoList));
         return latestData;
     }
 }