소스 검색

新增监控设备抓拍图片预览功能

liuyaowen 1 년 전
부모
커밋
2162ab7b19

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

@@ -10,4 +10,5 @@ import lombok.EqualsAndHashCode;
 public class IotDeviceBaseListReqVo extends IotDevice {
     private String landId;
     private String blockId;
+    private String devQuery;
 }

+ 121 - 0
src/main/java/com/yunfeiyun/agmp/iotm/device/monitor/controller/IotMonitorCaptureController.java

@@ -0,0 +1,121 @@
+package com.yunfeiyun.agmp.iotm.device.monitor.controller;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
+import com.yunfeiyun.agmp.common.annotation.Log;
+import com.yunfeiyun.agmp.common.constant.ErrorCode;
+import com.yunfeiyun.agmp.common.core.controller.BaseController;
+import com.yunfeiyun.agmp.common.core.domain.AjaxResult;
+import com.yunfeiyun.agmp.common.core.domain.model.LoginUser;
+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.BusinessType;
+import com.yunfeiyun.agmp.common.utils.DateUtils;
+import com.yunfeiyun.agmp.common.utils.SecurityUtils;
+import com.yunfeiyun.agmp.common.utils.StringUtils;
+import com.yunfeiyun.agmp.common.utils.poi.ExcelUtil;
+
+import com.yunfeiyun.agmp.iot.common.domain.*;
+import com.yunfeiyun.agmp.iot.common.model.IotWarncheck;
+import com.yunfeiyun.agmp.iot.common.service.MongoService;
+import com.yunfeiyun.agmp.iot.common.util.tmn.CustomerIdUtil;
+
+import com.yunfeiyun.agmp.iotm.device.monitor.domin.IotMonitorCaptureReqVo;
+import com.yunfeiyun.agmp.iotm.device.pest.service.IIotPestService;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.mongodb.core.aggregation.Aggregation;
+import org.springframework.data.mongodb.core.query.Criteria;
+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.*;
+import java.util.stream.Collectors;
+
+
+/**
+ * 监控抓拍图片Controller
+ * 
+ * @author 杨晓辉
+ * @date 2024-04-02
+ */
+@RestController
+@RequestMapping("/iot/monitorCapture")
+public class IotMonitorCaptureController extends BaseController
+{
+
+    @Resource
+    private MongoService mongoService;
+
+    /**
+     * 查询监控抓拍图片列表
+     */
+    @PreAuthorize("@ss.hasPermi('iot:monitor:capture:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(IotMonitorCaptureReqVo iotMonitorCaptureReqVo) {
+        PageDomain pageDomain = TableSupport.buildPageRequest();
+        Map<String, Object> paramMap = BeanUtil.beanToMap(iotMonitorCaptureReqVo);
+        if (StringUtils.isNotEmpty(iotMonitorCaptureReqVo.getStartTime()) && StringUtils.isNotEmpty(iotMonitorCaptureReqVo.getEndTime())) {
+            paramMap.put("time_picCreatedDate", iotMonitorCaptureReqVo.getStartTime() + "," + iotMonitorCaptureReqVo.getEndTime());
+            paramMap.remove("startTime");
+            paramMap.remove("endTime");
+        }
+        return getDataTable(mongoService.findListPage(IotMonitorCapture.class,paramMap,pageDomain));
+    }
+
+
+
+    /**
+     * 导出监控抓拍图片列表
+     */
+    @PreAuthorize("@ss.hasPermi('iot:monitor:capture:export')")
+    @Log(title = "监控抓拍图片", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, IotMonitorCaptureReqVo iotMonitorCaptureReqVo) {
+        PageDomain pageDomain = TableSupport.buildPageRequest();
+        Map<String, Object> paramMap = BeanUtil.beanToMap(iotMonitorCaptureReqVo);
+        if (StringUtils.isNotEmpty(iotMonitorCaptureReqVo.getStartTime()) && StringUtils.isEmpty(iotMonitorCaptureReqVo.getEndTime())) {
+            paramMap.put("gte_picCreateddate", iotMonitorCaptureReqVo.getStartTime());
+        }
+        if (StringUtils.isEmpty(iotMonitorCaptureReqVo.getStartTime()) && StringUtils.isNotEmpty(iotMonitorCaptureReqVo.getEndTime())) {
+            paramMap.put("lte_picCreateddate", iotMonitorCaptureReqVo.getEndTime());
+        }
+        List<IotMonitorCapture> list = mongoService.findListPage(IotMonitorCapture.class,paramMap,pageDomain).getRecords();
+        ExcelUtil<IotMonitorCapture> util = new ExcelUtil<IotMonitorCapture>(IotMonitorCapture.class);
+        util.exportExcel(response, list, "监控抓拍图片数据");
+    }
+
+    /**
+     * 获取监控抓拍图片详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('iot:monitor:capture:query')")
+    @GetMapping(value = "/info/{id}")
+    public AjaxResult getInfo(@PathVariable("id") String id) {
+        return success(mongoService.findOne(id, IotMonitorCapture.class));
+    }
+
+
+
+    /**
+     * 删除监控抓拍图片
+     */
+    @PreAuthorize("@ss.hasPermi('iot:monitor:capture:remove')")
+    @Log(title = "监控抓拍图片", businessType = BusinessType.DELETE)
+	@DeleteMapping("/delete/{picBids}")
+    public AjaxResult remove(@PathVariable String[] picBids) {
+        List<String> idList = new ArrayList<>(Arrays.asList(picBids));
+        Map<String,Object> param = new HashMap<>();
+        param.put("newList_picBid",idList);
+        List<IotMonitorCapture> iotMonitorCaptures = mongoService.findAll(IotMonitorCapture.class,param);
+        for(IotMonitorCapture iotMonitorCapture : iotMonitorCaptures){
+            mongoService.removeAllByParam("picBid", iotMonitorCapture.getPicBid(),"IotMonitorCapture");
+        }
+        return success();
+    }
+}

+ 115 - 0
src/main/java/com/yunfeiyun/agmp/iotm/device/monitor/domin/IotMonitorCapture.java

@@ -0,0 +1,115 @@
+package com.yunfeiyun.agmp.iotm.device.monitor.domin;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.iot.common.domain.IotBaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 监控抓拍图片对象 IotMonitorCapture
+ * 
+ * @author 杨晓辉
+ * @date 2024-04-02
+ */
+@TableName("IotMonitorCapture")
+public class IotMonitorCapture extends IotBaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    private String id;
+
+    /** 抓拍图片业务标识 */
+    @Excel(name = "抓拍图片业务标识")
+    private String picBid;
+
+    @Excel(name = "客户标识")
+    private String cid;
+    /** 设备业务标识 */
+    @Excel(name = "设备业务标识")
+    private String devBid;
+
+    /** 图片地址 */
+    @Excel(name = "图片地址")
+    private String picUrl;
+
+    /** 图片更新时间 */
+    @Excel(name = "图片更新时间")
+    private String picModifieddate;
+
+    /** 图片创建时间 */
+    @Excel(name = "图片创建时间")
+    private String picCreatedDate;
+
+    public void setId(String id)
+    {
+        this.id = id;
+    }
+    public String getId(){
+        return this.id;
+    }
+    public void setPicBid(String picBid)
+    {
+        this.picBid = picBid;
+    }
+
+    public String getPicBid()
+    {
+        return picBid;
+    }
+    public void setDevBid(String devBid)
+    {
+        this.devBid = devBid;
+    }
+
+    public String getDevBid()
+    {
+        return devBid;
+    }
+    public void setPicUrl(String picUrl)
+    {
+        this.picUrl = picUrl;
+    }
+
+    public String getPicUrl()
+    {
+        return picUrl;
+    }
+    public void setPicModifieddate(String picModifieddate)
+    {
+        this.picModifieddate = picModifieddate;
+    }
+
+    public String getPicModifieddate()
+    {
+        return picModifieddate;
+    }
+    public void setPicCreatedDate(String picCreatedDate)
+    {
+        this.picCreatedDate = picCreatedDate;
+    }
+
+    public String getPicCreatedDate()
+    {
+        return picCreatedDate;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+            .append("picBid", getPicBid())
+            .append("devBid", getDevBid())
+            .append("picUrl", getPicUrl())
+            .append("picModifieddate", getPicModifieddate())
+            .append("picCreatedDate", getPicCreatedDate())
+            .toString();
+    }
+
+    public String getCid() {
+        return cid;
+    }
+
+    public void setCid(String cid) {
+        this.cid = cid;
+    }
+}

+ 3 - 1
src/main/java/com/yunfeiyun/agmp/iotm/device/monitor/domin/IotMonitorCaptureReqVo.java

@@ -4,8 +4,10 @@ import com.yunfeiyun.agmp.iot.common.domain.IotDevice;
 import lombok.Data;
 
 @Data
-public class IotMonitorCaptureReqVo {
+public class IotMonitorCaptureReqVo extends IotMonitorCapture{
     private String devBid;
     private IotDevice iotDevice;
     private Integer quality;
+    private String startTime;
+    private String endTime;
 }

+ 7 - 6
src/main/java/com/yunfeiyun/agmp/iotm/device/monitor/service/impl/IotEzvizMonitorServiceImpl.java

@@ -6,6 +6,7 @@ import com.yunfeiyun.agmp.common.constant.ErrorCode;
 import com.yunfeiyun.agmp.common.enums.RedisCacheKey;
 import com.yunfeiyun.agmp.common.framework.manager.RedisCacheManager;
 import com.yunfeiyun.agmp.common.utils.uuid.IdUtils;
+import com.yunfeiyun.agmp.iot.common.constant.IotEnumOnlineStatus;
 import com.yunfeiyun.agmp.iot.common.constant.devicetype.IotDeviceTypeLv1Enum;
 import com.yunfeiyun.agmp.iot.common.constant.devicetype.ServiceNameConst;
 import com.yunfeiyun.agmp.iot.common.domain.IotDevice;
@@ -53,7 +54,7 @@ public class IotEzvizMonitorServiceImpl extends IotDeviceBaseServiceImpl impleme
         if(null == iotDevice){
             iotDevice = iotDeviceMapper.selectIotDeviceByDevBid(iotMonitorPtzReqVo.getDevBid());
         }
-        if(ObjectUtil.isNull(redisCacheManager.getCacheObject(RedisCacheKey.IOT_DEVICE_STATUS, iotMonitorPtzReqVo.getDevBid()))){
+        if(IotEnumOnlineStatus.OFFLINE.getStatus().equals(iotDevice.getDevStatus())){
             throw new IotBizException(ErrorCode.FAILURE.getCode(),"设备已离线");
         }
         CmdGroupModel cmdGroupModel = new CmdGroupModel();
@@ -92,7 +93,7 @@ public class IotEzvizMonitorServiceImpl extends IotDeviceBaseServiceImpl impleme
         if(null == iotDevice){
             iotDevice = iotDeviceMapper.selectIotDeviceByDevBid(iotMonitorPtzReqVo.getDevBid());
         }
-        if(ObjectUtil.isNull(redisCacheManager.getCacheObject(RedisCacheKey.IOT_DEVICE_STATUS, iotMonitorPtzReqVo.getDevBid()))){
+        if(IotEnumOnlineStatus.OFFLINE.getStatus().equals(iotDevice.getDevStatus())){
             throw new IotBizException(ErrorCode.FAILURE.getCode(),"设备已离线");
         }
         String[] devCodeArray = iotDevice.getDevCode().split("-");
@@ -129,7 +130,7 @@ public class IotEzvizMonitorServiceImpl extends IotDeviceBaseServiceImpl impleme
         if(null == iotDevice){
             iotDevice = iotDeviceMapper.selectIotDeviceByDevBid(iotMonitorCaptureReqVo.getDevBid());
         }
-        if(ObjectUtil.isNull(redisCacheManager.getCacheObject(RedisCacheKey.IOT_DEVICE_STATUS, iotMonitorCaptureReqVo.getDevBid()))){
+        if(IotEnumOnlineStatus.OFFLINE.getStatus().equals(iotDevice.getDevStatus())){
             throw new IotBizException(ErrorCode.FAILURE.getCode(),"设备已离线");
         }
         String[] devCodeArray = iotDevice.getDevCode().split("-");
@@ -166,7 +167,7 @@ public class IotEzvizMonitorServiceImpl extends IotDeviceBaseServiceImpl impleme
         if(null == iotDevice){
             iotDevice = iotDeviceMapper.selectIotDeviceByDevBid(iotMonitorVideoReqVo.getDevBid());
         }
-        if(ObjectUtil.isNull(redisCacheManager.getCacheObject(RedisCacheKey.IOT_DEVICE_STATUS, iotMonitorVideoReqVo.getDevBid()))){
+        if(IotEnumOnlineStatus.OFFLINE.getStatus().equals(iotDevice.getDevStatus())){
             throw new IotBizException(ErrorCode.FAILURE.getCode(),"设备已离线");
         }
         String[] devCodeArray = iotDevice.getDevCode().split("-");
@@ -204,9 +205,9 @@ public class IotEzvizMonitorServiceImpl extends IotDeviceBaseServiceImpl impleme
         if(null == iotDevice){
             iotDevice = iotDeviceMapper.selectIotDeviceByDevBid(iotMonitorAddressGetReqVo.getDevBid());
         }
-        /*if(ObjectUtil.isNull(redisCacheManager.getCacheObject(RedisCacheKey.IOT_DEVICE_STATUS,iotMonitorAddressGetReqVo.getDevBid()))){
+        if(IotEnumOnlineStatus.OFFLINE.getStatus().equals(iotDevice.getDevStatus())){
             throw new IotBizException(ErrorCode.FAILURE.getCode(),"设备已离线");
-        }*/
+        }
         String[] devCodeArray = iotDevice.getDevCode().split("-");
         CmdGroupModel cmdGroupModel = new CmdGroupModel();
         cmdGroupModel.setTid(CustomerIdUtil.getCustomerId());

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

@@ -11,6 +11,7 @@ import com.yunfeiyun.agmp.iotm.device.monitor.service.IotMonitorService;
 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;
+import com.yunfeiyun.agmp.iotm.web.service.IIotDeviceService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
@@ -22,7 +23,7 @@ import java.util.List;
 @Service
 public class IotMonitorServiceImpl extends IotDeviceBaseServiceImpl implements IotMonitorService {
     @Resource
-    private IotDeviceMapper iotDeviceMapper;
+    private IIotDeviceService iotDeviceService;
 
     @Override
     public List<IotDeviceListResVo> list(IotDeviceBaseListReqVo iotDeviceBaseListReqVo){
@@ -30,11 +31,11 @@ public class IotMonitorServiceImpl extends IotDeviceBaseServiceImpl implements I
         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 iotDeviceMapper.selectIotDeviceListByType(iotDeviceListReqVo);
+        return iotDeviceService.selectIotDeviceListByType(iotDeviceListReqVo);
     }
     @Override
     public IotDevice info(IotDeviceBaseListReqVo iotDeviceBaseListReqVo){
-        return iotDeviceMapper.selectIotDeviceByDevBid(iotDeviceBaseListReqVo.getDevBid());
+        return iotDeviceService.selectIotDeviceByDevBid(iotDeviceBaseListReqVo.getDevBid());
     }
 
 }

+ 2 - 0
src/main/java/com/yunfeiyun/agmp/iotm/web/domain/reqvo/IotDeviceListReqVo.java

@@ -37,4 +37,6 @@ public class IotDeviceListReqVo extends IotDevice {
     private String tid;
 
     private List<String> devtypeBidList;
+    /**通用查询字段,用于同时查询设备名称和设备标识 */
+    private String devQuery;
 }

+ 2 - 1
src/main/resources/mapper/IotDeviceMapper.xml

@@ -96,6 +96,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="devOriginalid != null  and devOriginalid != ''"> and d.devOriginalid = #{devOriginalid}</if>
             <if test="devHostingstatus != null  and devHostingstatus != ''"> and d.devHostingstatus = #{devHostingstatus}</if>
             <if test="extInfo != null  and extInfo != ''"> and d.extInfo = #{extInfo}</if>
+
         </where>
     </select>
 
@@ -148,7 +149,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="devHostingstatus != null  and devHostingstatus != ''"> and d.devHostingstatus = #{devHostingstatus}</if>
             <if test="extInfo != null  and extInfo != ''"> and d.extInfo = #{extInfo}</if>
             <if test="devVersion != null  and devVersion != ''"> and d.devVersion = #{devVersion}</if>
-
+            <if test="devQuery != null and devQuery != ''">and (d.devCode like CONCAT("%",#{devQuery},"%") or d.devName like CONCAT("%",#{devQuery},"%"))</if>
             <if test="devtypeBidList != null  and devtypeBidList.size() > 0">
                 and d.devtypeBid in
                 <foreach collection="devtypeBidList" item="item" open="(" close=")" separator=",">