Przeglądaj źródła

补充连接信息缓存

liuyaowen 1 rok temu
rodzic
commit
0ff7d0a516

+ 10 - 2
src/main/java/com/yunfeiyun/agmp/iotm/device/monitor/service/impl/IotMonitorServiceImpl.java

@@ -1,13 +1,17 @@
 package com.yunfeiyun.agmp.iotm.device.monitor.service.impl;
 
+import com.yunfeiyun.agmp.common.framework.manager.RedisCacheManager;
 import com.yunfeiyun.agmp.iot.common.constant.devicetype.IotDeviceDictConst;
 import com.yunfeiyun.agmp.iot.common.constant.devicetype.IotDeviceTypeLv1Enum;
 import com.yunfeiyun.agmp.iot.common.domain.IotDevice;
 import com.yunfeiyun.agmp.iot.common.domain.IotDevicetype;
 import com.yunfeiyun.agmp.iot.common.domain.dto.IotDeviceDto;
+import com.yunfeiyun.agmp.iot.common.enums.IotRedisCacheKey;
 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.monitor.service.IotMonitorService;
+import com.yunfeiyun.agmp.iotm.mq.provider.IotsMqProviderService;
+import com.yunfeiyun.agmp.iotm.mq.service.SendToIotsMsgService;
 import com.yunfeiyun.agmp.iotm.web.domain.reqvo.IotDeviceListReqVo;
 import com.yunfeiyun.agmp.iotm.web.domain.resvo.IotDeviceListResVo;
 import com.yunfeiyun.agmp.iotm.web.mapper.IotDeviceMapper;
@@ -19,19 +23,23 @@ import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.concurrent.TimeUnit;
 
 @Service
 public class IotMonitorServiceImpl extends IotDeviceBaseServiceImpl implements IotMonitorService {
     @Resource
     private IIotDeviceService iotDeviceService;
-
+    @Resource
+    private SendToIotsMsgService sendToIotsMsgService;
     @Override
     public List<IotDeviceListResVo> list(IotDeviceBaseListReqVo iotDeviceBaseListReqVo){
         IotDeviceListReqVo iotDeviceListReqVo = new IotDeviceListReqVo();
         BeanUtils.copyProperties(iotDeviceBaseListReqVo,iotDeviceListReqVo);
         List<String> devTypeBidList = Arrays.asList(IotDeviceDictConst.TYPE_EZVIZ_JKSB,IotDeviceDictConst.TYPE_DAHUA_DEVICE,IotDeviceDictConst.TYPE_HIK_OPEN_DEVICE);
         iotDeviceListReqVo.setDevtypeBidList(devTypeBidList);
-        return iotDeviceService.selectIotDeviceListByType(iotDeviceListReqVo);
+        List<IotDeviceListResVo> iotDeviceListResVoList = iotDeviceService.selectIotDeviceListByType(iotDeviceListReqVo);
+        sendToIotsMsgService.sendIotSynAllDeviceMsg(IotDeviceDictConst.TYPE_EZVIZ_JKSB,5L, TimeUnit.SECONDS);
+        return iotDeviceListResVoList;
     }
     @Override
     public IotDevice info(IotDeviceBaseListReqVo iotDeviceBaseListReqVo){

+ 2 - 2
src/main/java/com/yunfeiyun/agmp/iotm/device/pest/controller/IotPestrecogController.java

@@ -101,10 +101,10 @@ public class IotPestrecogController extends BaseController {
             criteria.and("pestrecogMarktype").is(reqVo.getPestrecogMarktype());
         }
         if (StringUtils.isNotEmpty(reqVo.getStartTime()) && StringUtils.isEmpty(reqVo.getEndTime())) {
-            criteria.and("pestrecogCreatedDate").is(reqVo.getPestrecogMarktype());
+            criteria.and("pestrecogCreatedDate").gte(reqVo.getStartTime());
         }
         if (StringUtils.isEmpty(reqVo.getStartTime()) && StringUtils.isNotEmpty(reqVo.getEndTime())) {
-            criteria.and("pestrecogCreatedDate").is(reqVo.getPestrecogMarktype());
+            criteria.and("pestrecogCreatedDate").lte(reqVo.getEndTime());
         }
         if (StringUtils.isNotEmpty(reqVo.getStartTime()) && StringUtils.isNotEmpty(reqVo.getEndTime())) {
             criteria.and("pestrecogCreatedDate").gte(reqVo.getStartTime()).lte(reqVo.getEndTime());

+ 36 - 1
src/main/java/com/yunfeiyun/agmp/iotm/mq/service/SendToIotsMsgService.java

@@ -1,6 +1,9 @@
 package com.yunfeiyun.agmp.iotm.mq.service;
 
 
+import com.alibaba.fastjson2.JSONObject;
+import com.yunfeiyun.agmp.common.enums.RedisCacheKey;
+import com.yunfeiyun.agmp.common.framework.manager.RedisCacheManager;
 import com.yunfeiyun.agmp.iot.common.constant.mq.IotActionEnums;
 import com.yunfeiyun.agmp.iot.common.domain.IotDevice;
 import com.yunfeiyun.agmp.iot.common.domain.IotDeviceconn;
@@ -8,20 +11,27 @@ import com.yunfeiyun.agmp.iot.common.domain.IotDevicetype;
 import com.yunfeiyun.agmp.iot.common.model.cmd.CmdGroupModel;
 import com.yunfeiyun.agmp.iot.common.model.mq.IotDeviceEditMqModel;
 import com.yunfeiyun.agmp.iotm.mq.provider.IotsMqProviderService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.util.concurrent.TimeUnit;
+
 /**
  * 往Iots发送
  *
  * @author liuyaowen
  */
 @Service
+@Slf4j
 @ConditionalOnBean(name = "agmpMqConfig")
 public class SendToIotsMsgService {
     @Autowired
     private IotsMqProviderService mqService;
+    @Resource
+    private RedisCacheManager redisCacheManager;
 
     /**
      * 物联网新增设备,同步到iots ok
@@ -77,8 +87,33 @@ public class SendToIotsMsgService {
     public void sendIotDeviceconnDeleteMsg(IotDeviceconn iotDeviceconn) {
         mqService.sendBaseDataToIots( IotActionEnums.DEVICE_COON_DELETE, iotDeviceconn, "【Iotm】to【Iots】物联网删除设备,同步到Iots");
     }
-    
+
     public void sendCmdMsg(CmdGroupModel cmdGroupModel){
         mqService.sendCmdToIots(cmdGroupModel,"【Iotm】 to 【iots】物联网设备指令,同步到Iots");
     }
+
+    /**
+     * 物联网同步所有设备信息,同步iots  ok
+     * @param devTypeCode 设备型号
+     */
+    public void sendIotSynAllDeviceMsg(String devTypeCode) {
+        mqService.sendBaseDataToIots( IotActionEnums.DEVICE_COON_DELETE,devTypeCode, "【Iotm】to【Iots】物联网同步所有设备信息,同步到Iots");
+    }
+    /**
+     * 物联网同步所有设备信息,同步iots  ok
+     * @param devTypeCode 设备型号
+     * @param times 时间间隔
+     * @param timeUnit 时间单位
+     */
+    public void sendIotSynAllDeviceMsg(String devTypeCode,long times,TimeUnit timeUnit) {
+        if(Boolean.TRUE.equals(redisCacheManager.hasKey(RedisCacheKey.IOT_SYN_ALL_DEVICE_TIME_LIMIT,devTypeCode))){
+            log.debug("更新设备状态频繁,设备类型:{},间隔时间:{},间隔单位:{}",devTypeCode,times,timeUnit);
+            return;
+        }
+        JSONObject data = new JSONObject();
+        data.put("devTypeCode",devTypeCode);
+        mqService.sendBaseDataToIots( IotActionEnums.DEVICE_ALL_SYN,data, "【Iotm】to【Iots】物联网同步所有设备信息,同步到Iots");
+        redisCacheManager.setCacheObject(RedisCacheKey.IOT_SYN_ALL_DEVICE_TIME_LIMIT,devTypeCode,devTypeCode,times,timeUnit);
+
+    }
 }

+ 3 - 0
src/main/java/com/yunfeiyun/agmp/iotm/web/controller/IotDevicetypeController.java

@@ -7,12 +7,14 @@ import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
 import com.yunfeiyun.agmp.common.enums.BusinessType;
 import com.yunfeiyun.agmp.common.utils.poi.ExcelUtil;
 import com.yunfeiyun.agmp.iot.common.domain.TosDevicetype;
+import com.yunfeiyun.agmp.iot.common.service.TypeCacheService;
 import com.yunfeiyun.agmp.iotm.web.domain.resvo.IotDevicetypeListResVo;
 import com.yunfeiyun.agmp.iotm.web.service.ITosDevicetypeService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
@@ -29,6 +31,7 @@ public class IotDevicetypeController extends BaseController
     @Autowired
     private ITosDevicetypeService tosDevicetypeService;
 
+
     /**
      * 查询设备类型列表
      */

+ 4 - 0
src/main/java/com/yunfeiyun/agmp/iotm/web/mapper/IotDeviceconnMapper.java

@@ -23,6 +23,10 @@ public interface IotDeviceconnMapper
     public List<IotDeviceconn> selectIotDeviceconnList(IotDeviceconn iotDeviceconn);
 
     /**
+     * 查询所有设备连接配置列表
+     * */
+    public List<IotDeviceconn> selectIotDeviceconnAllList();
+    /**
      * 批量删除设备连接配置
      * 
      * @param ids 需要删除的数据主键集合

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

@@ -61,7 +61,7 @@ public interface IIotDeviceconnService
      * @param devconnBids 需要删除的数据主键集合
      * @return 结果
      */
-    public int deleteIotDeviceconnByBids(String[] devconnBids);
+    public int deleteIotDeviceconnByBids(List<IotDeviceconn> iotDeviceconnList);
 
     /**
      * 批量删除设备连接配置
@@ -69,7 +69,7 @@ public interface IIotDeviceconnService
      * @param devconnBids 需要删除的数据主键集合
      * @return 结果
      */
-    public int deleteIotDeviceconnByBids(String[] devconnBids, boolean isDeleteConnect);
+    public int deleteIotDeviceconnByBids(List<IotDeviceconn> iotDeviceconnList, boolean isDeleteConnect);
 
     /**
      * 查询设备连接配置列表

+ 34 - 24
src/main/java/com/yunfeiyun/agmp/iotm/web/service/impl/IotDeviceconnServiceImpl.java

@@ -13,6 +13,8 @@ import com.yunfeiyun.agmp.iot.common.domain.IotDeviceconn;
 import com.yunfeiyun.agmp.iot.common.domain.TosDevicetype;
 import com.yunfeiyun.agmp.iot.common.enums.IotDeviceconnTypeEnum;
 import com.yunfeiyun.agmp.iot.common.exception.IotBizException;
+import com.yunfeiyun.agmp.iot.common.service.DeviceconnCacheService;
+import com.yunfeiyun.agmp.iotm.mq.service.SendToIotsMsgService;
 import com.yunfeiyun.agmp.iotm.web.domain.IotDevconnConfigInfoVo;
 import com.yunfeiyun.agmp.iotm.web.domain.reqvo.IotDeviceconnAddReqVo;
 import com.yunfeiyun.agmp.iotm.web.domain.reqvo.IotDeviceconnEditReqVo;
@@ -26,6 +28,9 @@ import com.yunfeiyun.agmp.iotm.web.service.ITosDevicetypeService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+
 /**
  * 设备连接配置Service业务层处理
  * 
@@ -43,6 +48,18 @@ public class IotDeviceconnServiceImpl implements IIotDeviceconnService
 
     @Autowired
     private IIotDeviceService iotDeviceService;
+    @Resource
+    private DeviceconnCacheService deviceconnCacheService;
+    @Resource
+    private SendToIotsMsgService sendToIotsMsgService;
+
+    @PostConstruct
+    public void init(){
+        List<IotDeviceconn> iotDeviceconnList = iotDeviceconnMapper.selectIotDeviceconnAllList();
+        for(IotDeviceconn iotDeviceconn :iotDeviceconnList){
+            deviceconnCacheService.setCache(iotDeviceconn);
+        }
+    }
 
     @Override
     public int addDeviceconn(IotDeviceconnAddReqVo reqVo, boolean isCreateConnect) {
@@ -118,7 +135,10 @@ public class IotDeviceconnServiceImpl implements IIotDeviceconnService
 
         int status = insertIotDeviceconnByBatch(insertIotDeviceconnList);
         if(isCreateConnect) {
-            // Todo 发送消息,创建设备连接
+            // 发送消息,创建设备连接
+            for(IotDeviceconn iotDeviceconn : insertIotDeviceconnList){
+                sendToIotsMsgService.sendIotDeviceconnInsertMsg(iotDeviceconn);
+            }
         }
         return status;
     }
@@ -197,24 +217,12 @@ public class IotDeviceconnServiceImpl implements IIotDeviceconnService
         if(tosDevicetype == null){
             throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(),"设备型号不存在");
         }
-
-        List<String> devconnBids = new ArrayList<>();
-        for(IotDeviceconn iotDeviceconn : iotDeviceconnList){
-            devconnBids.add(iotDeviceconn.getDevconnBid());
-        }
-
-        deleteIotDeviceconnByBids(devconnBids.toArray(new String[0]), false);
-
+        deleteIotDeviceconnByBids(iotDeviceconnList, true);
         IotDeviceconnAddReqVo addReqVo = new IotDeviceconnAddReqVo();
         addReqVo.setDevtypeBid(newDevtypeBid);
         addReqVo.setDevconnType(devconnType);
         addReqVo.setDevconnConfigList(reqVo.getDevconnConfigList());
-
-        int status = addDeviceconn(addReqVo, false);
-        // Todo 发送消息,删除设备连接
-        // Todo 发送消息,更新设备连接
-
-        return status;
+        return addDeviceconn(addReqVo, true);
     }
 
     /**
@@ -241,11 +249,7 @@ public class IotDeviceconnServiceImpl implements IIotDeviceconnService
         if(iotDeviceList != null && !iotDeviceList.isEmpty()){
             throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(),"该设备类型下存在设备,无法删除");
         }
-        List<String> devconnBids = new ArrayList<>();
-        for(IotDeviceconn iotDeviceconn : iotDeviceconnList){
-            devconnBids.add(iotDeviceconn.getDevconnBid());
-        }
-        return deleteIotDeviceconnByBids(devconnBids.toArray(new String[0]));
+        return deleteIotDeviceconnByBids(iotDeviceconnList);
     }
 
 
@@ -256,10 +260,16 @@ public class IotDeviceconnServiceImpl implements IIotDeviceconnService
      * @return 结果
      */
     @Override
-    public int deleteIotDeviceconnByBids(String[] devconnBids, boolean isDeleteConnect) {
+    public int deleteIotDeviceconnByBids(List<IotDeviceconn> iotDeviceconnList, boolean isDeleteConnect) {
+        String[] devconnBids = new String[iotDeviceconnList.size()];
+        for(int i = 0;i<devconnBids.length;i++){
+            devconnBids[i] = iotDeviceconnList.get(i).getDevconnBid();
+        }
         int status = iotDeviceconnMapper.deleteIotDeviceconnByBids(devconnBids);
         if(isDeleteConnect) {
-            // 删除设备连接配置
+            for(IotDeviceconn iotDeviceconn : iotDeviceconnList){
+                sendToIotsMsgService.sendIotDeviceconnDeleteMsg(iotDeviceconn);
+            }
         }
         return status;
     }
@@ -272,8 +282,8 @@ public class IotDeviceconnServiceImpl implements IIotDeviceconnService
      * @return 结果
      */
     @Override
-    public int deleteIotDeviceconnByBids(String[] devconnBids) {
-        return deleteIotDeviceconnByBids(devconnBids, true);
+    public int deleteIotDeviceconnByBids(List<IotDeviceconn> iotDeviceconnList) {
+        return deleteIotDeviceconnByBids(iotDeviceconnList, true);
     }
 
     /**

+ 3 - 0
src/main/resources/mapper/IotDeviceconnMapper.xml

@@ -77,6 +77,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             LEFT JOIN TosDeviceclass AS dc ON dc.devclassBid = dt.devclassBid
         WHERE dcn.devconnBid = #{devconnBid}
     </select>
+    <select id="selectIotDeviceconnAllList" resultType="com.yunfeiyun.agmp.iot.common.domain.IotDeviceconn">
+        <include refid="selectIotDeviceconnVo"/>
+    </select>
 
     <insert id="insertIotDeviceconnByBatch" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
         insert into IotDeviceconn (