Преглед изворни кода

新增 性诱测报数据获取详情数据接口

zhaiyifei пре 1 година
родитељ
комит
26f02b9f36

+ 5 - 0
src/main/java/com/yunfeiyun/agmp/iotm/device/pest/service/IIotPestrecogService.java

@@ -22,7 +22,12 @@ public interface IIotPestrecogService {
     public List<IotPestrecogGroupPestListResVo> groupByPestList(IotDeviceDataListReqVo reqVo);
 
     public List<IotXyinfoPestTotalDto> getIotXyinfoPestTotal(List<String> devBidList);
+
+    public List<IotXyinfoPestTotalDto> getIotXyIIIinfoPestTotal(List<String> devBidList);
+
     public Map<String, IotXyinfoPestTotalDto> getIotXyinfoPestTotalMap(List<String> devBidList);
 
+    public Map<String, IotXyinfoPestTotalDto> getIotXyIIIinfoPestTotalMap(List<String> devBidList);
+
     public IotPestRecogPeriodInfoResVo period(IotPestRecogPeriodReqVo reqVo);
 }

+ 42 - 4
src/main/java/com/yunfeiyun/agmp/iotm/device/pest/service/impl/IotPestrecogServiceImpl.java

@@ -4,10 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.yunfeiyun.agmp.common.core.page.PageDomain;
 import com.yunfeiyun.agmp.common.utils.StringUtils;
-import com.yunfeiyun.agmp.iot.common.domain.IotCbdimg;
-import com.yunfeiyun.agmp.iot.common.domain.IotDevice;
-import com.yunfeiyun.agmp.iot.common.domain.IotPest;
-import com.yunfeiyun.agmp.iot.common.domain.IotYfXycb2data;
+import com.yunfeiyun.agmp.iot.common.domain.*;
 import com.yunfeiyun.agmp.iot.common.domain.resvo.IoPestResVo;
 import com.yunfeiyun.agmp.iot.common.enums.EnumCbdMarkType;
 import com.yunfeiyun.agmp.iot.common.service.MongoService;
@@ -491,6 +488,47 @@ public class IotPestrecogServiceImpl implements IIotPestrecogService {
         return iotXyinfoPestTotalDtoMap;
     }
 
+    @Override
+    public List<IotXyinfoPestTotalDto> getIotXyIIIinfoPestTotal(List<String> devBidList) {
+        Criteria criteria = new Criteria()
+                .and("devBid").in(devBidList);
+        MatchOperation matchOperation = Aggregation.match(criteria);
+
+        ProjectionOperation projectionOperation = Aggregation.project()
+                .and("devBid").as("devBid")
+                .andExpression("{$convert: {input: '$xycbdataContent.infr_ct', to: 'int', onError: 0, onNull: 0}}").as("ct");
+
+        GroupOperation groupOperation = Aggregation.group("devBid")
+                .sum("ct").as("pestTotal");
+
+        ProjectionOperation projectionOperation2 = Aggregation.project()
+                .and("_id").as("devBid")
+                .and("pestTotal").as("pestTotal");
+
+        Aggregation aggregation = Aggregation.newAggregation(
+                matchOperation,
+                projectionOperation,
+                groupOperation,
+                projectionOperation2
+        );
+
+        List<IotXyinfoPestTotalDto> iotXyinfoPestTotalDtoList = mongoService.aggregate(
+                IotYfXycbIIIdata.class, aggregation, IotXyinfoPestTotalDto.class
+        );
+
+        return iotXyinfoPestTotalDtoList;
+    }
+
+    @Override
+    public Map<String, IotXyinfoPestTotalDto> getIotXyIIIinfoPestTotalMap(List<String> devBidList) {
+        List<IotXyinfoPestTotalDto> iotXyinfoPestTotalDtoList = getIotXyIIIinfoPestTotal(devBidList);
+        Map<String, IotXyinfoPestTotalDto> iotXyinfoPestTotalDtoMap = new HashMap<>();
+        for(IotXyinfoPestTotalDto iotXyinfoPestTotalDto: iotXyinfoPestTotalDtoList){
+            iotXyinfoPestTotalDtoMap.put(iotXyinfoPestTotalDto.getDevBid(), iotXyinfoPestTotalDto);
+        }
+        return iotXyinfoPestTotalDtoMap;
+    }
+
     /**
      * @param reqVo
      */

+ 13 - 12
src/main/java/com/yunfeiyun/agmp/iotm/device/xycb/controller/IotXycbController.java

@@ -5,6 +5,7 @@ import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
 import com.yunfeiyun.agmp.iot.common.constant.devicetype.IotDeviceDictConst;
 import com.yunfeiyun.agmp.iot.common.service.MongoService;
 import com.yunfeiyun.agmp.iotm.common.controller.BaseController;
+import com.yunfeiyun.agmp.iotm.device.xycb.domain.IotXycbInfoResVo;
 import com.yunfeiyun.agmp.iotm.device.xycb.domain.IotXycbPolylineResVo;
 import com.yunfeiyun.agmp.iotm.device.xycb.domain.IotXycbReqVo;
 import com.yunfeiyun.agmp.iotm.device.xycb.service.IIotXycbService;
@@ -98,18 +99,18 @@ public class IotXycbController extends BaseController
         List<IotXycbPolylineResVo> iotXycbPolylineResVoList = iIotXycbService.getXycbPolyline(iotXycbReqVo);
         return AjaxResult.success(iotXycbPolylineResVoList);
     }
-//
-//    /**
-//     * 获取性诱测报信息接口
-//     * @param reqVo
-//     * @return
-//     */
-//    @PreAuthorize("@ss.hasPermi('iot:xycb:info')")
-//    @GetMapping("/info")
-//    public AjaxResult getInfo(String devBid){
-//        IotXycbInfoResVo iotXycbInfoResVo = iIotXycbService.getXycbInfo(devBid);
-//        return AjaxResult.success(iotXycbInfoResVo);
-//    }
+
+    /**
+     * 获取性诱测报信息接口
+     * @param reqVo
+     * @return
+     */
+    @PreAuthorize("@ss.hasPermi('iot:xycb:info')")
+    @GetMapping("/info")
+    public AjaxResult getInfo(String devBid){
+        IotXycbInfoResVo iotXycbInfoResVo = iIotXycbService.getXycbInfo(devBid);
+        return AjaxResult.success(iotXycbInfoResVo);
+    }
 //
 //    /**
 //     *

+ 7 - 6
src/main/java/com/yunfeiyun/agmp/iotm/device/xycb/service/IIotXycbService.java

@@ -1,6 +1,7 @@
 package com.yunfeiyun.agmp.iotm.device.xycb.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yunfeiyun.agmp.iotm.device.xycb.domain.IotXycbInfoResVo;
 import com.yunfeiyun.agmp.iotm.device.xycb.domain.IotXycbPolylineResVo;
 import com.yunfeiyun.agmp.iotm.device.xycb.domain.IotXycbReqVo;
 import com.yunfeiyun.agmp.iotm.device.xycb.domain.IotYfXycbDataListRspVo;
@@ -19,12 +20,12 @@ public interface IIotXycbService {
      * @param iotXycbReqVo
      */
     public List<IotXycbPolylineResVo> getXycbPolyline(IotXycbReqVo iotXycbReqVo);
-//
-//    /**
-//     * 获取性诱测报信息
-//     * @param
-//     */
-//    public IotXycbInfoResVo getXycbInfo(String devBid);
+
+    /**
+     * 获取性诱测报信息
+     * @param
+     */
+    public IotXycbInfoResVo getXycbInfo(String devBid);
 //
 //    /**
 //     * 修改诱芯信息

+ 102 - 95
src/main/java/com/yunfeiyun/agmp/iotm/device/xycb/service/impl/IotXycbServiceImpl.java

@@ -16,9 +16,7 @@ import com.yunfeiyun.agmp.iot.common.service.IotWeatherService;
 import com.yunfeiyun.agmp.iot.common.service.MongoService;
 import com.yunfeiyun.agmp.iotm.device.pest.service.IIotPestService;
 import com.yunfeiyun.agmp.iotm.device.pest.service.IIotPestrecogService;
-import com.yunfeiyun.agmp.iotm.device.xycb.domain.IotXycbPolylineResVo;
-import com.yunfeiyun.agmp.iotm.device.xycb.domain.IotXycbReqVo;
-import com.yunfeiyun.agmp.iotm.device.xycb.domain.IotYfXycbDataListRspVo;
+import com.yunfeiyun.agmp.iotm.device.xycb.domain.*;
 import com.yunfeiyun.agmp.iotm.device.xycb.service.IIotXycbService;
 import com.yunfeiyun.agmp.iotm.device.xycb.service.IIotXyinfoService;
 import com.yunfeiyun.agmp.iotm.web.service.IIotDeviceService;
@@ -227,6 +225,105 @@ public class IotXycbServiceImpl implements IIotXycbService {
         return iotXycbPolylineResVoList;
     }
 
+    private IotXycbInfoResVo getXycbIIIInfo(String devBid, IotXycbInfoResVo iotXycbInfoResVo){
+        HashMap<String, String> params = new HashMap<>();
+        params.put("devBid", devBid);
+
+        IotYfXycbIIIdata iotYfXycb2data = (IotYfXycbIIIdata) mongoService.findOne(IotYfXycbIIIdata.class, params, "xycbdataCreatedDate", "desc");
+        if(iotYfXycb2data != null){
+            JSONObject xyData = iotYfXycb2data.getXycbdataContent();
+            iotXycbInfoResVo.setAt(xyData.getString("at"));
+            iotXycbInfoResVo.setAh(xyData.getString("ah"));
+        }
+
+        List<String> devBidList = new ArrayList<>();
+        devBidList.add(devBid);
+
+        Map<String, IotXyinfoPestTotalDto>  iotXyinfoPestTotalDtoMap = iIotPestrecogService.getIotXyIIIinfoPestTotalMap(devBidList);
+        if(iotXyinfoPestTotalDtoMap.containsKey(devBid)){
+            iotXycbInfoResVo.setPestTotal(String.valueOf(iotXyinfoPestTotalDtoMap.get(devBid).getPestTotal()));
+        }
+        return iotXycbInfoResVo;
+    }
+//    private IotXycbInfoResVo getZjsfXycbInfo(String devBid, IotXycbInfoResVo iotXycbInfoResVo){
+//        HashMap<String, String> params = new HashMap<>();
+//        params.put("devBid", devBid);
+//
+//        IotZjsfXycbdata iotZjsfXycbdata = (IotZjsfXycbdata) mongoService.findOne(
+//                IotZjsfXycbdata.class, params, "xycbdataCreatedDate", "desc");
+//        if(iotZjsfXycbdata != null){
+//            JSONObject xyData = iotZjsfXycbdata.getXycbdataContent();
+//            iotXycbInfoResVo.setAt(xyData.getString("at"));
+//            iotXycbInfoResVo.setAh(xyData.getString("ah"));
+//        }
+//
+//        List<String> devBidList = new ArrayList<>();
+//        devBidList.add(devBid);
+//
+//        Map<String, IotXyinfoPestTotalDto>  iotXyinfoPestTotalDtoMap = iIotPestrecogService.getIotXyinfoPestTotalMap(devBidList);
+//        iotXycbInfoResVo.setPestTotal("0");
+//        if(iotXyinfoPestTotalDtoMap.containsKey(devBid)){
+//            Integer pestTotal = iotXyinfoPestTotalDtoMap.get(devBid).getPestTotal();
+//            if(pestTotal == null){
+//                pestTotal = 0;
+//            }
+//            iotXycbInfoResVo.setPestTotal(String.valueOf(pestTotal));
+//        }
+//        return iotXycbInfoResVo;
+//    }
+
+
+
+    /**
+     * 获取性诱测报信息
+     *
+     * @param devBid
+     */
+    @Override
+    public IotXycbInfoResVo getXycbInfo(String devBid) {
+        if (StringUtils.isEmpty(devBid)) {
+            throw new IotBizException(IotErrorCode.INVALID_DEVICE_ID.getCode(), "设备标识不能为空");
+        }
+        IotDevice iotDevice = iIotDeviceService.selectIotDeviceByDevBid(devBid);
+        if(iotDevice == null){
+            throw new IotBizException(IotErrorCode.INVALID_DEVICE_ID.getCode(), "设备不存在");
+        }
+
+        IotXycbInfoResVo iotXycbInfoResVo = new IotXycbInfoResVo();
+        iotXycbInfoResVo.setDevStatus(iotDevice.getDevStatus());
+
+        IotXyinfoDto iotXyinfoDto = iIotXyinfoService.selectIotXyinfoByDevBid(devBid);
+        if(iotXyinfoDto != null){
+            iotXycbInfoResVo.setXyinfoLurename(iotXyinfoDto.getXyinfoLurename());
+            iotXycbInfoResVo.setXyinfoLureexpireddate(iotXyinfoDto.getXyinfoLureexpireddate());
+        }
+
+        String province = StringUtils.isEmpty(iotDevice.getDevProvincealign()) ? iotDevice.getDevProvince(): iotDevice.getDevProvincealign();
+        String city = StringUtils.isEmpty(iotDevice.getDevCityalign()) ? iotDevice.getDevCity(): iotDevice.getDevCityalign();
+        String district = StringUtils.isEmpty(iotDevice.getDevDistrictalign()) ? iotDevice.getDevDistrict(): iotDevice.getDevDistrictalign();
+        if(StringUtils.isNotEmpty(province) && StringUtils.isNotEmpty(city)){
+            JSONObject weatherInfo = iotWeatherService.getWeatherByAddress(province, city, district);
+            iotXycbInfoResVo.setWea(weatherInfo.getString("wea"));
+            iotXycbInfoResVo.setWin(weatherInfo.getString("win"));
+            iotXycbInfoResVo.setWin_speed(weatherInfo.getString("win_speed"));
+            String rainStatusName = !Objects.equals(weatherInfo.getString("rain_pcpn"), "0") ? "是" : "否";
+            iotXycbInfoResVo.setRainStatusName(rainStatusName);
+        }
+
+        if (IotDeviceDictConst.TYPE_YF_XYCB_III.equals(iotDevice.getDevtypeBid())){
+            iotXycbInfoResVo = getXycbIIIInfo(devBid, iotXycbInfoResVo);
+        }
+
+//        if (IotDeviceDictConst.TYPE_YF_XYCB_2.equals(iotDevice.getDevtypeBid())) {
+//            iotXycbInfoResVo = getXycb2Info(devBid, iotXycbInfoResVo);
+//        }else if (IotDeviceDictConst.TYPE_ZJSF_XYCB.equals(iotDevice.getDevtypeBid())){
+//            iotXycbInfoResVo = getZjsfXycbInfo(devBid, iotXycbInfoResVo);
+//        }else if (IotDeviceDictConst.TYPE_YF_XYCB_III.equals(iotDevice.getDevtypeBid())){
+//            iotXycbInfoResVo = getXycbIIIInfo(devBid, iotXycbInfoResVo);
+//        }
+        return iotXycbInfoResVo;
+    }
+
 
 //    /**
 //     * 性诱测报2.0
@@ -696,98 +793,8 @@ public class IotXycbServiceImpl implements IIotXycbService {
 //        }
 //        return iotXycbInfoResVo;
 //    }
-//    private IotXycbInfoResVo getXycbIIIInfo(String devBid, IotXycbInfoResVo iotXycbInfoResVo){
-//        HashMap<String, String> params = new HashMap<>();
-//        params.put("devBid", devBid);
-//
-//        IotYfXycbIIIdata iotYfXycb2data = (IotYfXycbIIIdata) mongoService.findOne(IotYfXycbIIIdata.class, params, "xycbdataCreatedDate", "desc");
-//        if(iotYfXycb2data != null){
-//            JSONObject xyData = iotYfXycb2data.getXycbdataContent();
-//            iotXycbInfoResVo.setAt(xyData.getString("at"));
-//            iotXycbInfoResVo.setAh(xyData.getString("ah"));
-//        }
-//
-//        List<String> devBidList = new ArrayList<>();
-//        devBidList.add(devBid);
-//
-//        Map<String, IotXyinfoPestTotalDto>  iotXyinfoPestTotalDtoMap = iIotPestrecogService.getIotXyIIIinfoPestTotalMap(devBidList);
-//        if(iotXyinfoPestTotalDtoMap.containsKey(devBid)){
-//            iotXycbInfoResVo.setPestTotal(String.valueOf(iotXyinfoPestTotalDtoMap.get(devBid).getPestTotal()));
-//        }
-//        return iotXycbInfoResVo;
-//    }
-//    private IotXycbInfoResVo getZjsfXycbInfo(String devBid, IotXycbInfoResVo iotXycbInfoResVo){
-//        HashMap<String, String> params = new HashMap<>();
-//        params.put("devBid", devBid);
-//
-//        IotZjsfXycbdata iotZjsfXycbdata = (IotZjsfXycbdata) mongoService.findOne(
-//                IotZjsfXycbdata.class, params, "xycbdataCreatedDate", "desc");
-//        if(iotZjsfXycbdata != null){
-//            JSONObject xyData = iotZjsfXycbdata.getXycbdataContent();
-//            iotXycbInfoResVo.setAt(xyData.getString("at"));
-//            iotXycbInfoResVo.setAh(xyData.getString("ah"));
-//        }
-//
-//        List<String> devBidList = new ArrayList<>();
-//        devBidList.add(devBid);
-//
-//        Map<String, IotXyinfoPestTotalDto>  iotXyinfoPestTotalDtoMap = iIotPestrecogService.getIotXyinfoPestTotalMap(devBidList);
-//        iotXycbInfoResVo.setPestTotal("0");
-//        if(iotXyinfoPestTotalDtoMap.containsKey(devBid)){
-//            Integer pestTotal = iotXyinfoPestTotalDtoMap.get(devBid).getPestTotal();
-//            if(pestTotal == null){
-//                pestTotal = 0;
-//            }
-//            iotXycbInfoResVo.setPestTotal(String.valueOf(pestTotal));
-//        }
-//        return iotXycbInfoResVo;
-//    }
-//
-//    /**
-//     * 获取性诱测报信息
-//     *
-//     * @param devBid
-//     */
-//    @Override
-//    public IotXycbInfoResVo getXycbInfo(String devBid) {
-//        if (StringUtils.isEmpty(devBid)) {
-//            throw new IotBizException(IotErrorCode.INVALID_DEVICE_ID.getCode(), "设备标识不能为空");
-//        }
-//        IotDevice iotDevice = iIotDeviceService.findOneByBizId(devBid);
-//        if(iotDevice == null){
-//            throw new IotBizException(IotErrorCode.INVALID_DEVICE_ID.getCode(), "设备不存在");
-//        }
-//
-//        IotXycbInfoResVo iotXycbInfoResVo = new IotXycbInfoResVo();
-//        iotXycbInfoResVo.setDevStatus(iotDevice.getDevStatus());
-//
-//        IotXyinfoDto iotXyinfoDto = iIotXyinfoService.selectIotXyinfoByDevBid(devBid);
-//        if(iotXyinfoDto != null){
-//            iotXycbInfoResVo.setXyinfoLurename(iotXyinfoDto.getXyinfoLurename());
-//            iotXycbInfoResVo.setXyinfoLureexpireddate(iotXyinfoDto.getXyinfoLureexpireddate());
-//        }
-//
-//        String province = StringUtils.isEmpty(iotDevice.getDevProvincealign()) ? iotDevice.getDevProvince(): iotDevice.getDevProvincealign();
-//        String city = StringUtils.isEmpty(iotDevice.getDevCityalign()) ? iotDevice.getDevCity(): iotDevice.getDevCityalign();
-//        String district = StringUtils.isEmpty(iotDevice.getDevDistrictalign()) ? iotDevice.getDevDistrict(): iotDevice.getDevDistrictalign();
-//        if(StringUtils.isNotEmpty(province) && StringUtils.isNotEmpty(city)){
-//            JSONObject weatherInfo = iotWeatherService.getWeatherByAddress(province, city, district);
-//            iotXycbInfoResVo.setWea(weatherInfo.getString("wea"));
-//            iotXycbInfoResVo.setWin(weatherInfo.getString("win"));
-//            iotXycbInfoResVo.setWin_speed(weatherInfo.getString("win_speed"));
-//            String rainStatusName = !Objects.equals(weatherInfo.getString("rain_pcpn"), "0") ? "是" : "否";
-//            iotXycbInfoResVo.setRainStatusName(rainStatusName);
-//        }
-//
-//        if (IotDeviceDictConst.TYPE_YF_XYCB_2.equals(iotDevice.getDevtypeBid())) {
-//            iotXycbInfoResVo = getXycb2Info(devBid, iotXycbInfoResVo);
-//        }else if (IotDeviceDictConst.TYPE_ZJSF_XYCB.equals(iotDevice.getDevtypeBid())){
-//            iotXycbInfoResVo = getZjsfXycbInfo(devBid, iotXycbInfoResVo);
-//        }else if (IotDeviceDictConst.TYPE_YF_XYCB_III.equals(iotDevice.getDevtypeBid())){
-//            iotXycbInfoResVo = getXycbIIIInfo(devBid, iotXycbInfoResVo);
-//        }
-//        return iotXycbInfoResVo;
-//    }
+
+
 //
 //    /**
 //     * 修改诱芯信息

+ 2 - 2
src/main/resources/mapper/IotXyinfoMapper.xml

@@ -41,7 +41,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
     <select id="selectIotXyinfoListByDevBidList" parameterType="java.util.List"
-            resultType="com.yunfeiyun.agmp.iotm.device.domain.dtovo.IotXyinfoDto">
+            resultType="com.yunfeiyun.agmp.iotm.device.xycb.domain.IotXyinfoDto">
         <include refid="selectIotXyinfoVo"/>
         where xyinfoDelstatus = '0' and devBid in
         <foreach item="devBid" collection="list" open="(" separator="," close=")">
@@ -50,7 +50,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
     <select id="selectIotXyinfoByDevBid" parameterType="String"
-            resultType="com.yunfeiyun.agmp.iotm.device.domain.dtovo.IotXyinfoDto">
+            resultType="com.yunfeiyun.agmp.iotm.device.xycb.domain.IotXyinfoDto">
         <include refid="selectIotXyinfoVo"/>
         where xyinfoDelstatus = '0' and devBid = #{devBid}
     </select>