Explorar el Código

阶段提交xx病

yf_zn hace 1 año
padre
commit
cc7a50e0a5

+ 1 - 1
src/main/java/com/yunfeiyun/agmp/iotm/device/common/domin/IotDeviceDataListReqVo.java

@@ -17,7 +17,7 @@ public class IotDeviceDataListReqVo
     private String devBid;
 
     /** 客户id */
-    private String cId;
+    private String tid;
 
     /** 开始时间 */
     private String startTime;

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

@@ -75,6 +75,7 @@ public class IotDeviceCommonServiceImpl implements IotDeviceCommonService {
             throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(),"设备信息不存在");
         }
         iotDeviceBaseFunReqVo.setIotDevice(iotDevice);
+        System.out.println(typeCacheService.getServiceNameByDevTypeBid(iotDevice.getDevtypeBid()));
         IotDeviceBaseService iotDeviceBaseService = iotDeviceBaseServiceMap.get(typeCacheService.getServiceNameByDevTypeBid(iotDevice.getDevtypeBid()));
         return iotDeviceBaseService.func(iotDeviceBaseFunReqVo);
     }

+ 30 - 4
src/main/java/com/yunfeiyun/agmp/iotm/device/ybq/controller/IotYbqController.java

@@ -1,10 +1,13 @@
 package com.yunfeiyun.agmp.iotm.device.ybq.controller;
 
 import cn.hutool.core.bean.BeanUtil;
+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.core.page.TableSupport;
+import com.yunfeiyun.agmp.common.utils.JSONUtils;
 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.IotCbdimg;
@@ -15,21 +18,24 @@ import com.yunfeiyun.agmp.iot.common.domain.reqvo.IotYbqdataReqVo;
 import com.yunfeiyun.agmp.iot.common.exception.IotBizException;
 import com.yunfeiyun.agmp.iot.common.service.MongoService;
 import com.yunfeiyun.agmp.iotm.common.controller.BaseController;
+import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceDataListReqVo;
+import com.yunfeiyun.agmp.iotm.device.common.service.IotDeviceRefreshService;
+import com.yunfeiyun.agmp.iotm.device.ybq.service.IotYbqEnvDataService;
 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.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 @RestController
-@RequestMapping("/ybq")
+@RequestMapping("/iot/ybq")
 @Slf4j
 public class IotYbqController extends BaseController {
     @Autowired
@@ -38,6 +44,14 @@ public class IotYbqController extends BaseController {
     @Autowired
     private MongoService mongoService;
 
+    @Resource
+    private IotDeviceRefreshService iotDeviceRefreshService;
+
+
+    @Autowired
+    private IotYbqEnvDataService iotYbqEnvDataService;
+
+
     /**
      * 水稻稻瘟病
      *
@@ -168,5 +182,17 @@ public class IotYbqController extends BaseController {
         return AjaxResult.success(mongoService.findAll(IotYbqEnvData.class, map, "ybqdataCreatedDate,asc"));
     }
 
+    @GetMapping("/refresh/{devBid}")
+    public AjaxResult refresh(@PathVariable("devBid") String devBid) {
+        iotDeviceRefreshService.refresh(devBid);
+        return new AjaxResult(ErrorCode.SUCCESS.getCode(), "下发成功,等待设备响应结果", null);
+    }
 
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, @RequestBody IotDeviceDataListReqVo reqVo) {
+        List<IotYbqEnvData> iotYbqEnvDataResVos = iotYbqEnvDataService.selectIotYbqEnvDataList(reqVo);
+        ExcelUtil<IotYbqEnvData> util = new ExcelUtil<>(IotYbqEnvData.class);
+        log.info("要导出的数据条数:{}", iotYbqEnvDataResVos.size());
+        util.exportExcel(response, iotYbqEnvDataResVos, "设备数据");
+    }
 }

+ 28 - 0
src/main/java/com/yunfeiyun/agmp/iotm/device/ybq/service/IotYbqEnvDataService.java

@@ -0,0 +1,28 @@
+package com.yunfeiyun.agmp.iotm.device.ybq.service;
+
+import com.yunfeiyun.agmp.iot.common.domain.IotYbqEnvData;
+import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceDataListReqVo;
+import com.yunfeiyun.agmp.iotm.device.common.service.IotDeviceBaseService;
+
+import java.util.List;
+
+/**
+ * @author zhangn
+ */
+public interface IotYbqEnvDataService  extends IotDeviceBaseService {
+    /**
+     * 插入预测数据
+     */
+    void insertData(IotYbqEnvData iotYbqEnvData);
+    /**
+     * 删除预测数据
+     *
+     * @param id
+     */
+    void deleteData(String id);
+
+
+    List<IotYbqEnvData> selectIotYbqEnvDataList(IotDeviceDataListReqVo reqVo);
+
+    IotYbqEnvData selectIotYbqEnvLastedData(String devBid);
+}

+ 119 - 0
src/main/java/com/yunfeiyun/agmp/iotm/device/ybq/serviceImp/IotYbqEnvDataServiceImpl.java

@@ -0,0 +1,119 @@
+package com.yunfeiyun.agmp.iotm.device.ybq.serviceImp;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.alibaba.fastjson2.JSONObject;
+import com.yunfeiyun.agmp.common.core.page.PageDomain;
+import com.yunfeiyun.agmp.common.framework.manager.RedisCacheManager;
+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.ServiceNameConst;
+import com.yunfeiyun.agmp.iot.common.domain.IotDevice;
+import com.yunfeiyun.agmp.iot.common.domain.IotDeviceconfig;
+import com.yunfeiyun.agmp.iot.common.domain.IotDevicelasteddata;
+import com.yunfeiyun.agmp.iot.common.domain.IotYbqEnvData;
+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.domin.IotDeviceDataListReqVo;
+import com.yunfeiyun.agmp.iotm.device.common.service.impl.IotDeviceBaseServiceImpl;
+import com.yunfeiyun.agmp.iotm.device.ybq.service.IotYbqEnvDataService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.ValueOperations;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author zhangn
+ */
+@Service(ServiceNameConst.SERVICE_HS_YBQ)
+@Slf4j
+public class IotYbqEnvDataServiceImpl extends IotDeviceBaseServiceImpl implements IotYbqEnvDataService {
+    @Resource
+    private RedisTemplate redisTemplate;
+
+    @Autowired
+    private MongoService<IotYbqEnvData> mongoService;
+
+    @Autowired
+    private RedisCacheManager redisCacheManager;
+
+
+    @Override
+    public void insertData(IotYbqEnvData iotYbqEnvData) {
+        mongoService.saveOne(iotYbqEnvData);
+    }
+
+    @Override
+    public void deleteData(String id) {
+        mongoService.removeAllByParam("id", id, "IotYbqEnvData");
+    }
+
+    @Override
+    public List<IotYbqEnvData> selectIotYbqEnvDataList(IotDeviceDataListReqVo reqVo) {
+
+        Map<String, Object> map = BeanUtil.beanToMap(reqVo);
+        if (StringUtils.isNotEmpty(reqVo.getStartTime()) && StringUtils.isEmpty(reqVo.getEndTime())) {
+            map.put("gte_ybqdataCreatedDate", reqVo.getStartTime());
+        }
+        if (StringUtils.isEmpty(reqVo.getStartTime()) && StringUtils.isNotEmpty(reqVo.getEndTime())) {
+            map.put("lte_ybqdataCreatedDate", reqVo.getEndTime());
+        }
+        if (StringUtils.isNotEmpty(reqVo.getStartTime()) && StringUtils.isNotEmpty(reqVo.getEndTime())) {
+            map.put("time_ybqdataCreatedDate", reqVo.getStartTime() + "," + reqVo.getEndTime());
+        }
+        map.remove("startTime");
+        map.remove("endTime");
+        List<IotYbqEnvData> iotYbqEnvDataResVos = mongoService.findAll(IotYbqEnvData.class, map, "ybqdataCreatedDate desc");
+        return iotYbqEnvDataResVos;
+    }
+
+    @Override
+    public IotYbqEnvData selectIotYbqEnvLastedData(String deviceBid) {
+        // 尝试从Redis中获取设备的最新数据
+        ValueOperations<String, IotDevicelasteddata> operation = redisTemplate.opsForValue();
+
+        IotDevicelasteddata latestData = null;
+        try {
+            // 存放是在IOTS
+            latestData = operation.get("IOTS:IOT:device_lasted_data:" + deviceBid);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        if (latestData != null) {
+            String content = latestData.getDevldContent();
+            log.info("设备 [{}] 的最新数据在Redis中找到。{}", deviceBid, content);
+            return JSONUtils.toObject(content, IotYbqEnvData.class);
+        } else {
+            log.info("设备 [{}] 在Redis中无最新数据。", deviceBid);
+        }
+        // 从MongoDB中查询数据
+        IotDeviceDataListReqVo dataListReqVo = new IotDeviceDataListReqVo();
+        dataListReqVo.setDevBid(deviceBid);
+
+        Map<String, Object> params = new HashMap<>();
+        PageDomain pageDomain = new PageDomain();
+        pageDomain.setPageSize(1);
+        pageDomain.setPageNum(1);
+        params.put("devBid", deviceBid);
+        List<IotYbqEnvData> envDataList = mongoService.findListPage(IotYbqEnvData.class, params, pageDomain).getRecords();
+        if (envDataList != null && !envDataList.isEmpty()) {
+            log.info("设备 [{}] 的数据从MongoDB成功获取。", deviceBid);
+            return envDataList.get(0);
+        } else {
+            log.warn("设备 [{}] 在MongoDB中也未找到数据。", deviceBid);
+        }
+
+        return null;
+    }
+
+    public void refresh(DeviceRefreshDto reqVo) {
+
+    }
+}