Selaa lähdekoodia

告警:病害

yf_zn 10 kuukautta sitten
vanhempi
commit
a4a1ec5938

+ 62 - 1
src/main/java/com/yunfeiyun/agmp/iots/device/controller/TestController.java

@@ -12,12 +12,12 @@ import com.yunfeiyun.agmp.common.utils.uuid.IdUtils;
 import com.yunfeiyun.agmp.iot.common.constant.IotErrorCode;
 import com.yunfeiyun.agmp.iot.common.constant.devicetype.IotDeviceDictConst;
 import com.yunfeiyun.agmp.iot.common.domain.*;
+import com.yunfeiyun.agmp.iot.common.enums.ybq.YbqTypeConst;
 import com.yunfeiyun.agmp.iot.common.exception.IotBizException;
 import com.yunfeiyun.agmp.iot.common.model.cmd.CmdGroupModel;
 import com.yunfeiyun.agmp.iot.common.service.MongoService;
 import com.yunfeiyun.agmp.iot.common.util.dev.DevTypeUtil;
 import com.yunfeiyun.agmp.iots.core.cmd.core.CmdDispatcherService;
-import com.yunfeiyun.agmp.iots.core.manager.ConnectionManager;
 import com.yunfeiyun.agmp.iots.device.domain.WarnTestReq;
 import com.yunfeiyun.agmp.iots.device.mapper.IotDeviceMapper;
 import com.yunfeiyun.agmp.iots.device.service.IYfQxzDevice;
@@ -25,6 +25,7 @@ import com.yunfeiyun.agmp.iots.device.serviceImp.YfQxzDeviceImpl;
 import com.yunfeiyun.agmp.iots.service.IIotDeviceService;
 import com.yunfeiyun.agmp.iots.service.IIotDevicelasteddataService;
 import com.yunfeiyun.agmp.iots.service.IIotYfScddataService;
+import com.yunfeiyun.agmp.iots.service.IotYbqPredictDataService;
 import com.yunfeiyun.agmp.iots.service.impl.IotCbdImgService;
 import com.yunfeiyun.agmp.iots.warn.service.WarnPestService;
 import com.yunfeiyun.agmp.iots.warn.service.WarnService;
@@ -86,6 +87,9 @@ public class TestController {
     private static final DateTimeFormatter stampFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
 
 
+    @Autowired
+    private IotYbqPredictDataService iotYbqPredictDataService;
+
     /**
      * 该方法模拟接收到mq的消息解析发送
      *
@@ -765,5 +769,62 @@ public class TestController {
         return AjaxResult.success();
     }
 
+    @RequestMapping("/warn/cmd/ybq")
+    public AjaxResult delaYbqPredictedData(@RequestBody WarnTestReq req) {
+        try {
 
+            JSONObject jobj = req.getData();
+            if (StringUtils.isEmpty(req.getDevCode())) {
+                throw new BizException(ErrorCode.FAILURE.getCode(), "设备code为空");
+            }
+            List<IotDevice> oldIotDevice = iIotDeviceService.selectIotDeviceByDevCode(req.getDevCode());
+            for (IotDevice iotDevice : oldIotDevice) {
+                String code = iotDevice.getDevCode();
+                String devBid = iotDevice.getDevBid();
+                // 得到第三方返回的设备的预测数据
+                String computeDate = jobj.getString("computeDate");
+                String deviceId = jobj.getString("deviceId");
+                String value = jobj.getString("value");
+                //保存预测记录、更新预测最新数据
+                // 查查当天的有没有,有的话更新,没有的话添加
+                IotYbqPredictData iotYbqPredictDataToday = iotYbqPredictDataService.getTodayData(devBid);
+                if (iotYbqPredictDataToday == null) {
+                    IotYbqPredictData iotYbqPredictData = new IotYbqPredictData();
+                    iotYbqPredictData.setId(IdUtils.fastUUID());
+                    iotYbqPredictData.setYbqdataBid(iotYbqPredictData.getId());
+                    iotYbqPredictData.setTid(iotDevice.getTid());
+                    iotYbqPredictData.setComputeDate(computeDate);
+                    iotYbqPredictData.setDateDevType(YbqTypeConst.YBQ_XM_CMB.getCode());
+                    iotYbqPredictData.setValue(value);
+                    iotYbqPredictData.setYbqdataContent(jobj);
+                    iotYbqPredictData.setDeviceId(deviceId);
+                    iotYbqPredictData.setDevBid(devBid);
+                    iotYbqPredictData.setDevTypeBid(iotDevice.getDevtypeBid());
+                    iotYbqPredictData.setYbqdataModifiedDate(DateUtils.dateTimeNow());
+                    iotYbqPredictData.setYbqdataCreatedDate(DateUtils.dateTimeNow());
+                    iotYbqPredictDataService.insertData(iotYbqPredictData);
+                } else {
+                    iotYbqPredictDataToday.setComputeDate(computeDate);
+                    iotYbqPredictDataToday.setValue(value);
+                    iotYbqPredictDataToday.setYbqdataModifiedDate(DateUtils.dateTimeNow());
+                    // 只更新特定的字段
+                    iotYbqPredictDataService.updateData(iotYbqPredictDataToday);
+                }
+                // 同步更新设备信息
+                String extInfo = iotDevice.getExtInfo() == null ? "{}" : iotDevice.getExtInfo();
+                JSONObject jsonObject = JSONObject.parseObject(extInfo);
+                //预测时间
+                jsonObject.put("computeDate", DateUtils.dateTimeNow());
+                //预测value
+                jsonObject.put("computeValue", value);
+                iIotDeviceService.updateIotDeviceExtInfo(devBid, jsonObject.toString());
+                log.info("设备ID={} 的预测数据处理成功,computeDate={}, value={}", iotDevice.getDevBid(), computeDate, value);
+                SpringUtils.getBean(WarnService.class).processWarningDiseaseData();
+            }
+            return AjaxResult.success();
+        } catch (BizException e) {
+            e.printStackTrace();
+        }
+        return AjaxResult.success();
+    }
 }

+ 2 - 2
src/main/java/com/yunfeiyun/agmp/iots/task/YbqScheduler.java

@@ -72,9 +72,9 @@ public class YbqScheduler {
      * 每天12点:0 0 8 * * ?
      * 每天8点:10分 0 10 8 * * ?
      * 对方:每天8点更新
-     * 我们:每天八点半更新
+     * 我们:每天8:10更新
      */
-    @Scheduled(cron = "0 30 8 * * ?")
+    @Scheduled(cron = "0 10 8 * * ?")
     public void synPredictedData() {
         String startDate = DateUtils.dateTime();
         log.info("【开始执行】同步预测数据任务,当前时间: {}", startDate);

+ 12 - 4
src/main/java/com/yunfeiyun/agmp/iots/warn/job/WarnJob.java

@@ -45,7 +45,7 @@ public class WarnJob {
      */
     @Scheduled(cron = "0 0/20 * * * ?")
     public void pestWarnJob20() {
-        if("0".equals(cbdDateDiff)){
+        if ("0".equals(cbdDateDiff)) {
             log.info("【设备预警】测报类检测,0 0/20 * * * ?  临时配置 每20分钟执行一次");
             // 处理虫害
             warnService.processWarningPestData();
@@ -55,16 +55,24 @@ public class WarnJob {
     }
 
     /**
-     * 每天八点
+     * 【虫害】每天八点
      */
     @Scheduled(cron = "0 0 8 * * ?")
     public void pestWarnJob08() {
-        log.info("【设备预警】测报类检测,0 0 8 * * ?  每天8点执行一次");
+        log.info("【设备预警】测报类检测,0 0 9 * * ?  每天9点执行一次");
         // 处理虫害
         warnService.processWarningPestData();
+
+    }
+
+    /**
+     * 【病害】每天八点::1出发病害
+     */
+    @Scheduled(cron = "0 15 8 * * ?")
+    public void pestWarnJob0815() {
+        log.info("【设备预警】测报类检测,0 15 8 * * ?  每天8:15 执行一次");
         // 处理病害
         warnService.processWarningDiseaseData();
 
     }
-
 }

+ 6 - 4
src/main/java/com/yunfeiyun/agmp/iots/warn/mapper/IotWarnBussinessMapper.java

@@ -1,9 +1,6 @@
 package com.yunfeiyun.agmp.iots.warn.mapper;
 
-import com.yunfeiyun.agmp.iot.common.domain.IotWarnconfig;
-import com.yunfeiyun.agmp.iot.common.domain.IotWarncount;
-import com.yunfeiyun.agmp.iot.common.domain.IotWarnindicator;
-import com.yunfeiyun.agmp.iot.common.domain.IotWarnlog;
+import com.yunfeiyun.agmp.iot.common.domain.*;
 import com.yunfeiyun.agmp.iots.warn.model.IotWarnconfigDevVo;
 import com.yunfeiyun.agmp.iots.warn.model.WarnConfigInfo;
 import org.apache.ibatis.annotations.Param;
@@ -73,6 +70,9 @@ public interface IotWarnBussinessMapper {
      */
     List<IotWarnindicator> selectCbdIndicatorAllList();
 
+    List<IotWarnindicator> selectYbqIndicatorAllList();
+    List<IotWarnconfigDevVo> selectIotWarnconfigYbqDevList();
+
 
     /**
      * 查询测报灯设备所有告警配置信息列表
@@ -80,4 +80,6 @@ public interface IotWarnBussinessMapper {
      * @return
      */
     List<IotWarnconfigDevVo> selectIotWarnconfigCbdDevList();
+
+    IotDevice selectDeviceById(@Param("devBid") String devBid);
 }

+ 1 - 1
src/main/java/com/yunfeiyun/agmp/iots/warn/model/IotWarnconfigCbdInfoVo.java

@@ -8,7 +8,7 @@ import lombok.Data;
 import java.util.List;
 
 @Data
-public class IotWarnconfigCbdInfoVo extends IotWarnconfig {
+public class IotWarnconfigInfoVo extends IotWarnconfig {
 
     private IotDevice iotDevice;
 

+ 45 - 4
src/main/java/com/yunfeiyun/agmp/iots/warn/service/IotWarnBussinessService.java

@@ -330,10 +330,10 @@ public class IotWarnBussinessService {
      * @return
      */
 
-    public List<IotWarnconfigCbdInfoVo> selectIotWarnconfigCbdInfoList() {
+    public List<IotWarnconfigInfoVo> selectIotWarnconfigCbdInfoList() {
         List<IotWarnconfigDevVo> iotWarnconfigDevVoList = iotWarnBussinessMapper.selectIotWarnconfigCbdDevList();
         Map<String, List<IotWarnindicator>> iotWarnindicatorMap = selectCbdIndicatorAllMap();
-        List<IotWarnconfigCbdInfoVo> iotWarnconfigCbdInfoVoList = new ArrayList<>();
+        List<IotWarnconfigInfoVo> iotWarnconfigCbdInfoVoList = new ArrayList<>();
         List<String> parentbidList = new ArrayList<>();
         for (IotWarnconfigDevVo iotWarnconfigDevVo : iotWarnconfigDevVoList) {
             String wcBid = iotWarnconfigDevVo.getWcBid();
@@ -347,7 +347,7 @@ public class IotWarnBussinessService {
             IotDevice iotDevice = new IotDevice();
             BeanUtils.copyProperties(iotWarnconfigDevVo, iotDevice);
 
-            IotWarnconfigCbdInfoVo iotWarnconfigCbdInfoVo = new IotWarnconfigCbdInfoVo();
+            IotWarnconfigInfoVo iotWarnconfigCbdInfoVo = new IotWarnconfigInfoVo();
             BeanUtils.copyProperties(iotWarnconfigDevVo, iotWarnconfigCbdInfoVo);
             iotWarnconfigCbdInfoVo.setIotDevice(iotDevice);
             iotWarnconfigCbdInfoVo.setIotWarnindicatorList(iotWarnindicatorList);
@@ -357,7 +357,7 @@ public class IotWarnBussinessService {
             IotWarnindicator selectIotWarnindicator = new IotWarnindicator();
             selectIotWarnindicator.setWiParentbidList(parentbidList);
             Map<String, List<IotWarnindicator>> iotMap = selectIotWarnindicatorMap(selectIotWarnindicator);
-            for (IotWarnconfigCbdInfoVo cbdInfoVo : iotWarnconfigCbdInfoVoList) {
+            for (IotWarnconfigInfoVo cbdInfoVo : iotWarnconfigCbdInfoVoList) {
                 String wcBid = cbdInfoVo.getWcBid();
                 List<IotWarnindicator> pestDetailList = iotMap.get(wcBid);
                 List<IotWarnindicator> iotWarnindicatorList = cbdInfoVo.getIotWarnindicatorList();
@@ -371,4 +371,45 @@ public class IotWarnBussinessService {
         }
         return iotWarnconfigCbdInfoVoList;
     }
+
+    /**
+     * 将Ybq设备告警的配置信息。设备、要素合并一起
+     *
+     * @return
+     */
+    public List<IotWarnconfigInfoVo> selectIotWarnconfigYbqInfoList() {
+        List<IotWarnconfigDevVo> iotWarnconfigDevVoList = iotWarnBussinessMapper.selectIotWarnconfigYbqDevList();
+        Map<String, List<IotWarnindicator>> iotWarnindicatorMap = selectYbqIndicatorAllMap();
+        List<IotWarnconfigInfoVo> iotWarnconfigCbdInfoVoList = new ArrayList<>();
+        for (IotWarnconfigDevVo iotWarnconfigDevVo : iotWarnconfigDevVoList) {
+            String wcBid = iotWarnconfigDevVo.getWcBid();
+            List<IotWarnindicator> iotWarnindicatorList = iotWarnindicatorMap.get(wcBid);
+            IotDevice iotDevice = new IotDevice();
+            BeanUtils.copyProperties(iotWarnconfigDevVo, iotDevice);
+
+            IotWarnconfigInfoVo iotWarnconfigCbdInfoVo = new IotWarnconfigInfoVo();
+            BeanUtils.copyProperties(iotWarnconfigDevVo, iotWarnconfigCbdInfoVo);
+            iotWarnconfigCbdInfoVo.setIotDevice(iotDevice);
+            iotWarnconfigCbdInfoVo.setIotWarnindicatorList(iotWarnindicatorList);
+            iotWarnconfigCbdInfoVoList.add(iotWarnconfigCbdInfoVo);
+        }
+        return iotWarnconfigCbdInfoVoList;
+    }
+
+    public IotDevice selectDeviceById(String devBid) {
+        return iotWarnBussinessMapper.selectDeviceById(devBid);
+    }
+
+    public Map<String, List<IotWarnindicator>> selectYbqIndicatorAllMap() {
+        List<IotWarnindicator> iotWarnindicators = iotWarnBussinessMapper.selectYbqIndicatorAllList();
+        Map<String, List<IotWarnindicator>> iotWarnindicatorMap = new LinkedHashMap<>();
+        for (IotWarnindicator iotWarnindicator : iotWarnindicators) {
+            String wcBid = iotWarnindicator.getWcBid();
+            if (!iotWarnindicatorMap.containsKey(wcBid)) {
+                iotWarnindicatorMap.put(wcBid, new ArrayList<>());
+            }
+            iotWarnindicatorMap.get(wcBid).add(iotWarnindicator);
+        }
+        return iotWarnindicatorMap;
+    }
 }

+ 165 - 0
src/main/java/com/yunfeiyun/agmp/iots/warn/service/WarnDiseaseService.java

@@ -0,0 +1,165 @@
+package com.yunfeiyun.agmp.iots.warn.service;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.yunfeiyun.agmp.common.constant.ErrorCode;
+import com.yunfeiyun.agmp.common.exception.BizException;
+import com.yunfeiyun.agmp.common.utils.StringUtils;
+import com.yunfeiyun.agmp.iot.common.constant.devicetype.IotDeviceDictEnum;
+import com.yunfeiyun.agmp.iot.common.domain.IotDevice;
+import com.yunfeiyun.agmp.iot.common.domain.IotWarnconfig;
+import com.yunfeiyun.agmp.iot.common.domain.IotWarnindicator;
+import com.yunfeiyun.agmp.iot.common.enums.EnumWarnRuleOp;
+import com.yunfeiyun.agmp.iots.warn.model.*;
+import com.yunfeiyun.agmp.iots.warn.util.CompareUtil;
+import com.yunfeiyun.agmp.iots.warn.util.WarnMessageBuilderUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+@Service
+@Slf4j
+public class WarnDiseaseService {
+    @Autowired
+    private IotWarnBussinessService iotWarnBussinessService;
+    @Autowired
+    private ReCountService reCountService;
+
+    /**
+     * 虫害处理入口方法,负责遍历所有设备配置信息并进行相应的处理。
+     */
+    public void process() {
+        List<IotWarnconfigInfoVo> iotWarnconfigInfoVos = iotWarnBussinessService.selectIotWarnconfigYbqInfoList();
+        for (IotWarnconfigInfoVo iotWarnconfigCbdInfoVo : iotWarnconfigInfoVos) {
+            try {
+                handleDevice(iotWarnconfigCbdInfoVo);
+            } catch (Exception e) {
+                e.printStackTrace();
+                log.error("处理设备 {} 时发生错误: {}", iotWarnconfigCbdInfoVo.getIotDevice().getDevBid(), e);
+            }
+        }
+    }
+
+    /**
+     * 处理单个设备的所有预警配置。
+     *
+     * @param iotWarnconfigCbdInfoVo 设备配置信息对象
+     */
+    private void handleDevice(IotWarnconfigInfoVo iotWarnconfigCbdInfoVo) {
+        IotDevice device = iotWarnconfigCbdInfoVo.getIotDevice();
+        String devBid = device.getDevBid();
+        List<IotWarnindicator> warnIndicators = iotWarnconfigCbdInfoVo.getIotWarnindicatorList();
+        IotWarnconfig warnConfig = new IotWarnconfig();
+        BeanUtils.copyProperties(iotWarnconfigCbdInfoVo, warnConfig);
+
+        log.info("开始处理设备ID为 {} 的预警配置", devBid);
+        for (IotWarnindicator indicator : warnIndicators) {
+            if ("computeValue".equals(indicator.getWiCode())) {
+                handleComputeValue(device, indicator, warnConfig);
+            }
+        }
+        log.info("完成设备ID为 {} 的所有预警配置处理", devBid);
+    }
+
+    /**
+     * 处理特定于“computeValue”的逻辑,并调用告警日志处理器。
+     *
+     * @param device     设备对象
+     * @param indicator  预警指标对象
+     * @param warnConfig 预警配置对象
+     */
+    private void handleComputeValue(IotDevice device, IotWarnindicator indicator, IotWarnconfig warnConfig) {
+        IotDevice detailedDevice = iotWarnBussinessService.selectDeviceById(device.getDevBid());
+        if (StringUtils.isNotEmpty(detailedDevice.getExtInfo())) {
+            JSONObject extInfo = JSONObject.parseObject(detailedDevice.getExtInfo());
+            Double computeValue = Double.parseDouble(extInfo.getOrDefault("computeValue", "0.0").toString());
+            WarnStatusDto warnStatusDto = buildWarnStatusDto(computeValue, indicator);
+            if (warnStatusDto != null) {
+                handlerAllWarnLog(device.getDevBid(), warnConfig, warnStatusDto, detailedDevice.getExtInfo());
+            } else {
+                log.warn("【设备预警】病虫害:设备id 不可为空. 设备ID: {}, 设备Code:{} , 未触发: ", detailedDevice.getDevBid(), detailedDevice.getDevCode());
+            }
+        } else {
+            log.warn("【设备预警】病虫害:设备id 不可为空. 设备ID: {}, 设备Code:{} , 最新数据为空: ", detailedDevice.getDevBid(), detailedDevice.getDevCode());
+        }
+
+    }
+
+    /**
+     * 根据当前值和预警指标构建WarnStatusDto对象。
+     *
+     * @param currentValue 当前值
+     * @param indicator    预警指标对象
+     * @return 构建好的WarnStatusDto对象
+     */
+    private WarnStatusDto buildWarnStatusDto(Double currentValue, IotWarnindicator indicator) {
+        if (!"0".equals(indicator.getWiStatus())) {
+            return null;
+        }
+        EnumWarnRuleOp op = EnumWarnRuleOp.findEnumByCode(indicator.getWiExpression());
+        boolean comparisonResult = CompareUtil.comp(currentValue.toString(), indicator.getWiExpression(), indicator.getWiValue());
+        WarnStatusDto dto = new WarnStatusDto();
+        dto.setDevType(IotDeviceDictEnum.getLv1NameByCode(indicator.getDevtypeBid()));
+        dto.setDevCode(indicator.getDevCode());
+        dto.setName(indicator.getWiName());
+        dto.setValue(currentValue.toString());
+        dto.setUnit(indicator.getWiUnit());
+        dto.setOpt(op.getName());
+        dto.setIndicatorValue(indicator.getWiValue());
+        dto.setWarn(comparisonResult);
+        log.debug("构建告警状态DTO: {}", dto);
+        return dto;
+    }
+
+    /**
+     * 处理所有的告警日志,包括生成警告消息、准备发送的消息参数,并最终发送告警。
+     *
+     * @param devBid 设备ID
+     * @param config 配置对象
+     * @param dto    告警状态数据传输对象
+     * @param data   设备额外信息
+     */
+    private void handlerAllWarnLog(String devBid, IotWarnconfig config, WarnStatusDto dto, String data) {
+        if (StringUtils.isEmpty(devBid)) {
+            log.error("【设备预警】病虫害:设备id 不可为空. 设备ID: {}, 配置ID: {}", devBid, config.getWcBid());
+            throw new BizException(ErrorCode.FAILURE.getCode(), "病虫害:设备id 不可为空");
+        }
+        log.info("开始处理设备ID为 {}, 配置ID为 {} 的预警信息", devBid, config.getWcBid());
+        String message = WarnMessageBuilderUtil.buildWarningMessage(dto.getDevType(), dto.getDevCode(),
+                dto.getName(), dto.getValue(), dto.getUnit(), dto.getOpt(), dto.getIndicatorValue());
+        log.info("根据类型生成警告消息: {}. 设备ID: {}, 配置ID: {}", message, devBid, config.getWcBid());
+
+        WarnResult result = createWarnResult(config, devBid, dto, data);
+        log.info("准备发送告警信息: {}. 设备ID: {}, 配置ID: {}", result.getMessage(), devBid, config.getWcBid());
+        reCountService.handlerMessage(result);
+        log.info("告警信息已发送完成. 设备ID: {}, 配置ID: {}", devBid, config.getWcBid());
+    }
+
+    /**
+     * 创建并初始化WarnResult对象,用于后续的告警消息发送。
+     *
+     * @param config 配置对象
+     * @param devBid 设备ID
+     * @param dto    告警状态数据传输对象
+     * @param data   设备额外信息
+     * @return 初始化后的WarnResult对象
+     */
+    private WarnResult createWarnResult(IotWarnconfig config, String devBid, WarnStatusDto dto, String data) {
+        WarnResult result = new WarnResult();
+        result.setMessageId(UUID.randomUUID().toString()); // 假设UUID方法用于生成唯一ID
+        result.setDevId(devBid);
+        result.setTid(config.getTid());
+        result.setConfigId(config.getWcBid());
+        result.setReportData(data);
+        result.setTargetReCount(config.getWcRepeatnum() == null ? 0 : config.getWcRepeatnum());
+        result.setDevtypeBid(config.getDevtypeBid());
+        result.setConfig(config);
+        result.setTriggered(dto.isWarn());
+        result.setMessage(WarnMessageBuilderUtil.buildWarningMessage(
+                dto.getDevType(), dto.getDevCode(), dto.getName(), dto.getValue(), dto.getUnit(), dto.getOpt(), dto.getIndicatorValue()
+        ));
+        return result;
+    }
+}

+ 3 - 3
src/main/java/com/yunfeiyun/agmp/iots/warn/service/WarnPestService.java

@@ -11,7 +11,7 @@ import com.yunfeiyun.agmp.iot.common.domain.IotWarnconfig;
 import com.yunfeiyun.agmp.iot.common.domain.IotWarnindicator;
 import com.yunfeiyun.agmp.iot.common.enums.EnumWarnRuleOp;
 import com.yunfeiyun.agmp.iots.service.IIotPestService;
-import com.yunfeiyun.agmp.iots.warn.model.IotWarnconfigCbdInfoVo;
+import com.yunfeiyun.agmp.iots.warn.model.IotWarnconfigInfoVo;
 import com.yunfeiyun.agmp.iots.warn.model.WarnPestDetailStatDto;
 import com.yunfeiyun.agmp.iots.warn.model.WarnResult;
 import com.yunfeiyun.agmp.iots.warn.model.WarnStatusDto;
@@ -45,8 +45,8 @@ public class WarnPestService {
      */
     public void process() {
         //单个配置单个设备的处理逻辑,外层需要遍历
-        List<IotWarnconfigCbdInfoVo> iotWarnconfigCbdInfoVoList = iotWarnBussinessService.selectIotWarnconfigCbdInfoList();
-        for (IotWarnconfigCbdInfoVo iotWarnconfigCbdInfoVo : iotWarnconfigCbdInfoVoList) {
+        List<IotWarnconfigInfoVo> iotWarnconfigCbdInfoVoList = iotWarnBussinessService.selectIotWarnconfigCbdInfoList();
+        for (IotWarnconfigInfoVo iotWarnconfigCbdInfoVo : iotWarnconfigCbdInfoVoList) {
             try {
                 IotDevice iotDevice = iotWarnconfigCbdInfoVo.getIotDevice();
                 String devBid = iotDevice.getDevBid();

+ 3 - 1
src/main/java/com/yunfeiyun/agmp/iots/warn/service/WarnService.java

@@ -50,6 +50,8 @@ public class WarnService {
     private IIotDevicefactorService iotDevicefactorService;
     @Autowired
     private WarnPestService warnPestService;
+    @Autowired
+    private WarnDiseaseService warnDiseaseService;
 
 
     /**
@@ -581,6 +583,6 @@ public class WarnService {
      * 病害
      */
     public void processWarningDiseaseData() {
-
+        warnDiseaseService.process();
     }
 }

+ 21 - 0
src/main/resources/mapper/IotWarnBusinessMapper.xml

@@ -216,5 +216,26 @@
             </if>
         </where>
     </select>
+    <select id="selectYbqIndicatorAllList" resultType="com.yunfeiyun.agmp.iot.common.domain.IotWarnindicator">
 
+
+        SELECT wi.*
+        FROM IotWarnindicator AS wi
+        LEFT JOIN IotWarnconfig AS wc ON wc.wcBid = wi.wcBid
+        WHERE wi.wiCode IN ('computeValue') AND wc.wcStatus = "0"
+
+    </select>
+
+    <select id="selectIotWarnconfigYbqDevList"
+            resultType="com.yunfeiyun.agmp.iots.warn.model.IotWarnconfigDevVo">
+                  SELECT wi.wiBid, d.devBid, d.devCode, d.devtypeBid, d.devCbdrecogtype, wc.*
+        FROM IotWarnindicator AS wi
+            LEFT JOIN IotWarnconfig AS wc ON wc.wcBid = wi.wcBid
+            LEFT JOIN IotWarnobject AS wo ON wo.wcBid = wc.wcBid
+            LEFT JOIN IotDevice AS d ON d.devBid = wo.devBid
+        WHERE wi.wiCode = "computeValue" AND wc.wcStatus = "0" AND d.devDelstatus = "0"
+    </select>
+    <select id="selectDeviceById" resultType="com.yunfeiyun.agmp.iot.common.domain.IotDevice">
+        select * from IotDevice where devBid=#{devBid}
+    </select>
 </mapper>