Просмотр исходного кода

新增 获取图像概览图片详情信息接口

zhaiyifei 1 год назад
Родитель
Сommit
ebe1c1f198

+ 68 - 76
src/main/java/com/yunfeiyun/agmp/iotm/device/pest/controller/IotCbdrecogController.java

@@ -1,26 +1,16 @@
 package com.yunfeiyun.agmp.iotm.device.pest.controller;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
-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.page.PageDomain;
-import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
-import com.yunfeiyun.agmp.common.core.page.TableSupport;
-import com.yunfeiyun.agmp.common.utils.StringUtils;
-import com.yunfeiyun.agmp.iot.common.domain.IotCbdrecog;
-import com.yunfeiyun.agmp.iot.common.domain.reqvo.IotCbdrecogAgainReqVo;
 import com.yunfeiyun.agmp.iot.common.domain.reqvo.IotCbdrecogReqVo;
 import com.yunfeiyun.agmp.iot.common.service.MongoService;
-import com.yunfeiyun.agmp.iotm.device.pest.domain.IotCbdrecogResVo;
-import com.yunfeiyun.agmp.iotm.device.pest.domain.IotPestRecogPeriodReqVo;
+import com.yunfeiyun.agmp.iotm.device.pest.domain.IotCbdrecogInfoResVo;
 import com.yunfeiyun.agmp.iotm.device.pest.service.IIotCbdrecogService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.HashMap;
-import java.util.Map;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 /**
  * 虫情识别信息表Controller
@@ -39,74 +29,76 @@ public class IotCbdrecogController extends BaseController
     private IIotCbdrecogService iotCbdrecogService;
 
     /**
-     * 识别数据列表
-     */
-    @PreAuthorize("@ss.hasPermi('iot:cbdrecog:list')")
-    @GetMapping("/list")
-    public TableDataInfo list(IotPestRecogPeriodReqVo reqVo) {
-        Map<String, Object> map = new HashMap<>();
-        map.put("devBid", reqVo.getDevBid());
-        map.put("cbdrecogType",reqVo.getCbdRecogType());
-        if (StringUtils.isNotEmpty(reqVo.getStartTime()) && StringUtils.isEmpty(reqVo.getEndTime())) {
-            map.put("gte_cbdrecogCreatedDate", reqVo.getStartTime());
-        }
-        if (StringUtils.isEmpty(reqVo.getStartTime()) && StringUtils.isNotEmpty(reqVo.getEndTime())) {
-            map.put("lte_cbdrecogCreatedDate", reqVo.getEndTime());
-        }
-        if (StringUtils.isNotEmpty(reqVo.getStartTime()) && StringUtils.isNotEmpty(reqVo.getEndTime())) {
-            map.put("time_cbdrecogCreatedDate", reqVo.getStartTime() + "," + reqVo.getEndTime());
-        }
-
-        PageDomain pageDomain = TableSupport.buildPageRequest();
-        IPage listPage = mongoService.findListPage(IotCbdrecog.class, map, pageDomain);
-        return getDataTable(listPage);
-    }
-
-    /**
      * 测报灯图片识别数据详情
      */
     @PreAuthorize("@ss.hasPermi('iot:cbdrecog:query')")
     @GetMapping(value = "/info")
     public AjaxResult getInfo(IotCbdrecogReqVo reqVo) {
-        IotCbdrecogResVo resVo = iotCbdrecogService.info(reqVo);
+        IotCbdrecogInfoResVo resVo = iotCbdrecogService.info(reqVo);
         return success(resVo);
     }
 
-    /**
-     * 人工修正提交
-     */
-    @PreAuthorize("@ss.hasPermi('iot:cbdrecog:artificial:update')")
-    @PostMapping(value = "/artificial/update")
-    public AjaxResult artificialUpdate(@RequestBody IotCbdrecogReqVo reqVo) {
-        return toAjax(iotCbdrecogService.artificialUpdate(reqVo));
-    }
-
-    /**
-     * 人工修正重置
-     */
-    @PreAuthorize("@ss.hasPermi('iot:cbdrecog:artificial:reset')")
-    @PostMapping(value = "/artificial/reset")
-    public AjaxResult artificialReset(@RequestBody IotCbdrecogReqVo reqVo) {
-        return toAjax(iotCbdrecogService.artificialReset(reqVo));
-    }
-
-    protected TableDataInfo getDataTable(IPage page) {
-        TableDataInfo rspData = new TableDataInfo();
-        rspData.setCode(ErrorCode.SUCCESS.getCode());
-        rspData.setMsg(ErrorCode.SUCCESS.getMessage());
-        rspData.setData(page.getRecords());
-        rspData.setTotal(page.getTotal());
-        return rspData;
-    }
-
-    /**
-     * 测报灯图片识别数据详情
-     */
-    @PreAuthorize("@ss.hasPermi('iot:cbdrecog:again')")
-    @PostMapping(value = "/again")
-    public AjaxResult againRecog(@RequestBody IotCbdrecogAgainReqVo reqVo) {
-
-        IotCbdrecogResVo resVo = iotCbdrecogService.againRecog(reqVo);
-        return success(resVo);
-    }
+//    /**
+//     * 识别数据列表
+//     */
+//    @PreAuthorize("@ss.hasPermi('iot:cbdrecog:list')")
+//    @GetMapping("/list")
+//    public TableDataInfo list(IotPestRecogPeriodReqVo reqVo) {
+//        Map<String, Object> map = new HashMap<>();
+//        map.put("devBid", reqVo.getDevBid());
+//        map.put("cbdrecogType",reqVo.getCbdRecogType());
+//        if (StringUtils.isNotEmpty(reqVo.getStartTime()) && StringUtils.isEmpty(reqVo.getEndTime())) {
+//            map.put("gte_cbdrecogCreatedDate", reqVo.getStartTime());
+//        }
+//        if (StringUtils.isEmpty(reqVo.getStartTime()) && StringUtils.isNotEmpty(reqVo.getEndTime())) {
+//            map.put("lte_cbdrecogCreatedDate", reqVo.getEndTime());
+//        }
+//        if (StringUtils.isNotEmpty(reqVo.getStartTime()) && StringUtils.isNotEmpty(reqVo.getEndTime())) {
+//            map.put("time_cbdrecogCreatedDate", reqVo.getStartTime() + "," + reqVo.getEndTime());
+//        }
+//
+//        PageDomain pageDomain = TableSupport.buildPageRequest();
+//        IPage listPage = mongoService.findListPage(IotCbdrecog.class, map, pageDomain);
+//        return getDataTable(listPage);
+//    }
+//
+//
+//
+//    /**
+//     * 人工修正提交
+//     */
+//    @PreAuthorize("@ss.hasPermi('iot:cbdrecog:artificial:update')")
+//    @PostMapping(value = "/artificial/update")
+//    public AjaxResult artificialUpdate(@RequestBody IotCbdrecogReqVo reqVo) {
+//        return toAjax(iotCbdrecogService.artificialUpdate(reqVo));
+//    }
+//
+//    /**
+//     * 人工修正重置
+//     */
+//    @PreAuthorize("@ss.hasPermi('iot:cbdrecog:artificial:reset')")
+//    @PostMapping(value = "/artificial/reset")
+//    public AjaxResult artificialReset(@RequestBody IotCbdrecogReqVo reqVo) {
+//        return toAjax(iotCbdrecogService.artificialReset(reqVo));
+//    }
+//
+//    protected TableDataInfo getDataTable(IPage page) {
+//        TableDataInfo rspData = new TableDataInfo();
+//        rspData.setCode(ErrorCode.SUCCESS.getCode());
+//        rspData.setMsg(ErrorCode.SUCCESS.getMessage());
+//        rspData.setData(page.getRecords());
+//        rspData.setTotal(page.getTotal());
+//        return rspData;
+//    }
+//
+//    /**
+//     * 测报灯图片识别数据详情
+//     */
+//    @PreAuthorize("@ss.hasPermi('iot:cbdrecog:again')")
+//    @PostMapping(value = "/again")
+//    public AjaxResult againRecog(@RequestBody IotCbdrecogAgainReqVo reqVo) {
+//
+//        IotCbdrecogResVo resVo = iotCbdrecogService.againRecog(reqVo);
+//        return success(resVo);
+//    }
 }

+ 118 - 0
src/main/java/com/yunfeiyun/agmp/iotm/device/pest/domain/IotCbdrecogInfoResVo.java

@@ -0,0 +1,118 @@
+package com.yunfeiyun.agmp.iotm.device.pest.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import com.yunfeiyun.agmp.iot.common.domain.IotCbdPestrecog;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 测报灯图片识别对象 IotCbdrecog
+ *
+ * @author 杨晓辉
+ * @date 2024-01-04
+ */
+@Data
+public class IotCbdrecogInfoResVo {
+    private static final long serialVersionUID = 1L;
+
+    /** 图片基础业务标识 */
+    @Excel(name = "图片基础业务标识")
+    private String cbdimgBid;
+
+    /** 设备业务标识 */
+    @Excel(name = "设备业务标识")
+    private String devBid;
+
+    /** 原图地址 */
+    @Excel(name = "原图地址")
+    private String cbdimgAddr;
+
+    /** 修改时间 */
+    @Excel(name = "修改时间")
+    private String cbdimgModifieddate;
+
+    /** 创建时间 */
+    @Excel(name = "创建时间")
+    private String cbdimgCreatedDate;
+
+    /** 图片识别业务标识 */
+    @Excel(name = "图片识别业务标识")
+    private String cbdrecogBid;
+
+    /** 识别类型 */
+    @Excel(name = "识别类型")
+    private String cbdrecogType;
+
+    /** 标记类型 */
+    @Excel(name = "标记类型")
+    private String cbdrecogMarktype;
+
+    /** 识别图片地址 */
+    @Excel(name = "机器识别图片地址")
+    private String cbdrecogAddr;
+
+    /** 手动标记图片地址 */
+    @Excel(name = "手动标记图片地址")
+    private String cbdrecogManualaddr;
+
+    /** 害虫机器识别结果 */
+    @Excel(name = "害虫机器识别结果")
+    private String cbdrecogResult;
+
+    /** 害虫手动识别结果 */
+    @Excel(name = "害虫手动识别结果")
+    private String cbdrecogResultManual;
+
+    /** 手动标记结果 */
+    @Excel(name = "手动标记结果")
+    private String cbdrecogManualmark;
+
+    /** 机器标注结果 */
+    @Excel(name = "机器标注结果")
+    private String cbdrecogMachinemark;
+
+    /** 机器识别总数 */
+    @Excel(name = "机器识别总数")
+    private Long cbdrecogTotalnum;
+
+    /** 机器识别害虫数量 */
+    @Excel(name = "机器识别害虫数量")
+    private Long cbdrecogPestnum;
+
+    /** 识别类型 */
+    @Excel(name = "机器识别害虫类型数量")
+    private Long cbdrecogTypenum;
+
+    /** 手动识别总数 */
+    @Excel(name = "手动识别总数")
+    private Long cbdrecogTotalnumManual;
+
+    /** 手动识别害虫数量 */
+    @Excel(name = "手动识别害虫数量")
+    private Long cbdrecogPestnumManual;
+
+    /** 手动识别害虫类型数量 */
+    @Excel(name = "手动识别害虫类型数量")
+    private Long cbdrecogTypenumManual;
+
+    /** 创建人 */
+    @Excel(name = "创建人")
+    private String cbdrecogCreator;
+
+    /** 修改人 */
+    @Excel(name = "修改人")
+    private String cbdrecogModifier;
+
+    /** 修改时间 */
+    @Excel(name = "修改时间")
+    private String cbdrecogModifieddate;
+
+    /** 创建时间 */
+    @Excel(name = "创建时间")
+    private String cbdrecogCreatedDate;
+
+    /** 害虫识别结果列表 */
+    List<IotCbdPestrecog> iotCbdPestrecogList;
+
+}

+ 2 - 1
src/main/java/com/yunfeiyun/agmp/iotm/device/pest/service/IIotCbdrecogService.java

@@ -3,6 +3,7 @@ package com.yunfeiyun.agmp.iotm.device.pest.service;
 
 import com.yunfeiyun.agmp.iot.common.domain.reqvo.IotCbdrecogAgainReqVo;
 import com.yunfeiyun.agmp.iot.common.domain.reqvo.IotCbdrecogReqVo;
+import com.yunfeiyun.agmp.iotm.device.pest.domain.IotCbdrecogInfoResVo;
 import com.yunfeiyun.agmp.iotm.device.pest.domain.IotCbdrecogResVo;
 
 import java.util.List;
@@ -29,7 +30,7 @@ public interface IIotCbdrecogService
      */
     public int artificialReset(IotCbdrecogReqVo reqVo);
 
-    public IotCbdrecogResVo info(IotCbdrecogReqVo reqVo);
+    public IotCbdrecogInfoResVo info(IotCbdrecogReqVo reqVo);
 
     /**
      * 获取测报灯的照片

+ 52 - 62
src/main/java/com/yunfeiyun/agmp/iotm/device/pest/service/impl/IotCbdrecogServiceImpl.java

@@ -10,22 +10,21 @@ import com.yunfeiyun.agmp.common.utils.DateUtils;
 import com.yunfeiyun.agmp.common.utils.JSONUtils;
 import com.yunfeiyun.agmp.common.utils.SecurityUtils;
 import com.yunfeiyun.agmp.common.utils.StringUtils;
-import com.yunfeiyun.agmp.common.utils.bean.BeanUtils;
-import com.yunfeiyun.agmp.iot.common.constant.mq.IotActionEnums;
 import com.yunfeiyun.agmp.iot.common.domain.*;
 import com.yunfeiyun.agmp.iot.common.domain.reqvo.IotCbdrecogAgainReqVo;
 import com.yunfeiyun.agmp.iot.common.domain.reqvo.IotCbdrecogReqVo;
-import com.yunfeiyun.agmp.iot.common.enums.EnumCbdRecogType;
 import com.yunfeiyun.agmp.iot.common.exception.IotBizException;
 import com.yunfeiyun.agmp.iot.common.service.IotWeatherService;
 import com.yunfeiyun.agmp.iot.common.service.MongoService;
 import com.yunfeiyun.agmp.iot.common.util.tmn.CustomerIdUtil;
+import com.yunfeiyun.agmp.iotm.device.pest.domain.IotCbdrecogInfoResVo;
 import com.yunfeiyun.agmp.iotm.device.pest.domain.IotCbdrecogResVo;
 import com.yunfeiyun.agmp.iotm.device.pest.service.IIotCbdrecogService;
 import com.yunfeiyun.agmp.iotm.device.pest.service.IIotPestService;
 import com.yunfeiyun.agmp.iotm.mq.provider.IotsMqProviderService;
 import com.yunfeiyun.agmp.iotm.web.service.IIotDeviceService;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Sort;
 import org.springframework.data.mongodb.core.MongoTemplate;
@@ -330,44 +329,30 @@ public class IotCbdrecogServiceImpl implements IIotCbdrecogService {
      * @return
      */
     @Override
-    public IotCbdrecogResVo info(IotCbdrecogReqVo reqVo) {
+    public IotCbdrecogInfoResVo info(IotCbdrecogReqVo reqVo) {
         String cbdrecogType = reqVo.getCbdrecogType();
         String cbdrecogMarktype = reqVo.getCbdrecogMarktype();
         String cbdimgBid = reqVo.getCbdimgBid();
 
-        Criteria cri = Criteria.where("cbdimgBid").is(cbdimgBid)
-                .and("cbdrecogType").is(cbdrecogType)
-                .and("cbdrecogMarktype").is(cbdrecogMarktype);
-        IotCbdrecog iotCbdrecog = mongoTemplate.findOne(new Query(cri),
-                IotCbdrecog.class, "IotCbdrecog");
-
-        Map<String, Object> map = new HashMap<>();
-        map.put("cbdimgBid", cbdimgBid);
-        IotCbdimg iotCbdimg = (IotCbdimg) mongoService.findOne(IotCbdimg.class, map, null, null);
+        IotCbdimg iotCbdimg = (IotCbdimg) mongoService.findOne("cbdimgBid", cbdimgBid, IotCbdimg.class);
+        if (iotCbdimg == null) {
+            throw new IotBizException(ErrorCode.INVALID_PARAMETER.getCode(), "未找到对应的图片记录");
+        }
+        Map<String, IotCbdrecog> cbdrecogMap = iotCbdimg.getCbdrecog();
+        IotCbdrecog iotCbdrecog = cbdrecogMap.getOrDefault(cbdrecogType, new IotCbdrecog());
+        Map<String, List<IotCbdPestrecog>> pestrecogMap = iotCbdrecog.getPestrecog();
+        List<IotCbdPestrecog> iotCbdPestrecogList = new ArrayList<>();
+        try{
+            iotCbdPestrecogList = pestrecogMap.getOrDefault(cbdrecogMarktype, new ArrayList<>());
+        }catch (Exception e){
 
-        if (iotCbdrecog == null) {
-            Criteria cri2 = Criteria.where("cbdimgBid").is(cbdimgBid)
-                    .and("cbdrecogType").is(cbdrecogType);
-            iotCbdrecog = mongoTemplate.findOne(new Query(cri2),
-                    IotCbdrecog.class, "IotCbdrecog");
-            if (iotCbdrecog == null) {
-                iotCbdrecog = new IotCbdrecog();
-                iotCbdrecog.setCbdrecogCreatedDate(iotCbdimg.getCbdimgCreatedDate());
-//                iotCbdrecog.setCbdimgRecognum(0L);
-            }
         }
 
-        IotCbdrecogResVo resVo = new IotCbdrecogResVo();
+        IotCbdrecogInfoResVo resVo = new IotCbdrecogInfoResVo();
         BeanUtils.copyProperties(iotCbdrecog, resVo);
-//        if (cbdrecogType.equals(EnumCbdRecogType.A.getCode())) {
-//            resVo.setCbdimgRecognum(iotCbdimg.getCbdimgRecognum());
-//        } else {
-//            resVo.setCbdimgRecognum(iotCbdrecog.getCbdimgRecognum());
-//        }
-//
-//        resVo.setCbdimgAddr(iotCbdimg.getCbdimgAddr());
-//        resVo.setCbdimgPestnum(iotCbdimg.getCbdimgPestnum());
+        BeanUtils.copyProperties(iotCbdimg, resVo);
 
+        resVo.setIotCbdPestrecogList(iotCbdPestrecogList);
         return resVo;
     }
 
@@ -461,39 +446,44 @@ public class IotCbdrecogServiceImpl implements IIotCbdrecogService {
 
     }
 
-    /**
-     * @param reqVo
-     * @return
-     */
     @Override
     public IotCbdrecogResVo againRecog(IotCbdrecogAgainReqVo reqVo) {
-        String cbdrecogType = reqVo.getCbdrecogType();
-        String cbdimgBid = reqVo.getCbdimgBid();
-        String devBid = reqVo.getDevBid();
-
-        if (EnumCbdRecogType.findEnumByCode(cbdrecogType) == null) {
-            throw new IotBizException(ErrorCode.FAILURE.getCode(), "识别类型错误");
-        }
-
-        IotDevice iotDevice = iotDeviceService.selectIotDeviceByDevBid(devBid);
-        if (iotDevice == null) {
-            throw new IotBizException(ErrorCode.FAILURE.getCode(), "设备不存在");
-        }
-
-        Map<String, Object> map = new HashMap<>();
-        map.put("cbdimgBid", cbdimgBid);
-        IotCbdimg iotCbdimg = (IotCbdimg) mongoService.findOne(IotCbdimg.class, map, null, null);
-        if (iotCbdimg == null) {
-            throw new IotBizException(ErrorCode.FAILURE.getCode(), "图片不存在");
-        }
-        iotsMqProviderService.sendBaseDataToIots(IotActionEnums.DEVICE_CBD_AGAIN_RECORD,reqVo,"测报灯重新识别");
-        //Object recogResult = iotmMqService.sendMsgAndReceive("againRecog", IotMqConstant.CBD_IMAGE_AGAIN_RECOGE, reqVo);
-        IotCbdrecogReqVo iotCbdrecogReqVo = new IotCbdrecogReqVo();
-        iotCbdrecogReqVo.setCbdimgBid(reqVo.getCbdimgBid());
-        iotCbdrecogReqVo.setCbdrecogMarktype("1");
-        iotCbdrecogReqVo.setCbdrecogType(reqVo.getCbdrecogType());
-        return info(iotCbdrecogReqVo);
+        return null;
     }
+//
+//    /**
+//     * @param reqVo
+//     * @return
+//     */
+//    @Override
+//    public IotCbdrecogResVo againRecog(IotCbdrecogAgainReqVo reqVo) {
+//        String cbdrecogType = reqVo.getCbdrecogType();
+//        String cbdimgBid = reqVo.getCbdimgBid();
+//        String devBid = reqVo.getDevBid();
+//
+//        if (EnumCbdRecogType.findEnumByCode(cbdrecogType) == null) {
+//            throw new IotBizException(ErrorCode.FAILURE.getCode(), "识别类型错误");
+//        }
+//
+//        IotDevice iotDevice = iotDeviceService.selectIotDeviceByDevBid(devBid);
+//        if (iotDevice == null) {
+//            throw new IotBizException(ErrorCode.FAILURE.getCode(), "设备不存在");
+//        }
+//
+//        Map<String, Object> map = new HashMap<>();
+//        map.put("cbdimgBid", cbdimgBid);
+//        IotCbdimg iotCbdimg = (IotCbdimg) mongoService.findOne(IotCbdimg.class, map, null, null);
+//        if (iotCbdimg == null) {
+//            throw new IotBizException(ErrorCode.FAILURE.getCode(), "图片不存在");
+//        }
+//        iotsMqProviderService.sendBaseDataToIots(IotActionEnums.DEVICE_CBD_AGAIN_RECORD,reqVo,"测报灯重新识别");
+//        //Object recogResult = iotmMqService.sendMsgAndReceive("againRecog", IotMqConstant.CBD_IMAGE_AGAIN_RECOGE, reqVo);
+//        IotCbdrecogReqVo iotCbdrecogReqVo = new IotCbdrecogReqVo();
+//        iotCbdrecogReqVo.setCbdimgBid(reqVo.getCbdimgBid());
+//        iotCbdrecogReqVo.setCbdrecogMarktype("1");
+//        iotCbdrecogReqVo.setCbdrecogType(reqVo.getCbdrecogType());
+//        return info(iotCbdrecogReqVo);
+//    }
 
     public String getPestRecogImgOssUrl(String base64, String imgId) {
         if (base64.contains(",")) {