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

告警虫情阶段代码框架提交

yf_zn 9 месяцев назад
Родитель
Сommit
34f16c90a8

+ 18 - 0
src/main/java/com/yunfeiyun/agmp/iots/warn/job/WarnJob.java

@@ -1,6 +1,7 @@
 package com.yunfeiyun.agmp.iots.warn.job;
 
 import com.yunfeiyun.agmp.iots.warn.service.ReCountService;
+import com.yunfeiyun.agmp.iots.warn.service.WarnService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
@@ -13,6 +14,10 @@ public class WarnJob {
     @Autowired
     private ReCountService reCountService;
 
+
+    @Autowired
+    private WarnService warnService;
+
     /**
      * 每天凌晨12点清除重复次数...
      */
@@ -30,4 +35,17 @@ public class WarnJob {
         log.info("【设备预警】定时清空所有重复次数,临时配置,0 0 0/2 * * ?  每2时执行一次");
         reCountService.resetAllReCount();
     }
+
+    /**
+     * 病虫害告警定时检查方法
+     */
+    public void pestWarnJob() {
+        // 处理虫害
+        warnService.processWarningPestData();
+        // 处理病害
+        warnService.processWarningDiseaseData();
+
+    }
+
+
 }

+ 3 - 0
src/main/java/com/yunfeiyun/agmp/iots/warn/mapper/IotWarnBussinessMapper.java

@@ -2,6 +2,7 @@ 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.iots.warn.model.WarnConfigInfo;
 import org.apache.ibatis.annotations.Param;
@@ -59,4 +60,6 @@ public interface IotWarnBussinessMapper {
     int insertIotOfflineWarnconfig(IotWarnconfig iotWarnconfig);
 
     void autoDealWarnOfflineLog(IotWarnlog iotWarnlog);
+
+    List<IotWarnindicator> selectIotWarnPestConfigInfoList(@Param("code") String code);
 }

+ 16 - 0
src/main/java/com/yunfeiyun/agmp/iots/warn/service/IotWarnBussinessService.java

@@ -7,6 +7,7 @@ import com.yunfeiyun.agmp.common.utils.uuid.IdUtils;
 import com.yunfeiyun.agmp.common.web.system.domain.SysConfig;
 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.iots.warn.mapper.IotWarnBussinessMapper;
 import com.yunfeiyun.agmp.iots.warn.model.WarnConfigInfo;
@@ -141,6 +142,7 @@ public class IotWarnBussinessService {
 
     /**
      * 插入离线告警规则
+     *
      * @param tid
      * @return
      */
@@ -160,6 +162,7 @@ public class IotWarnBussinessService {
 
     /**
      * 设备若正常上报数据后,则离线告警自动处理
+     *
      * @param devId
      */
     public void autoDealWarnOfflineLog(String devId) {
@@ -170,4 +173,17 @@ public class IotWarnBussinessService {
         iotWarnlog.setStatus("1");
         iotWarnBussinessMapper.autoDealWarnOfflineLog(iotWarnlog);
     }
+
+    /**
+     * 查询虫情的指定配置列表。集中处理
+     *
+     * @param code
+     * @return
+     */
+    public List<IotWarnindicator> selectIotWarnPestConfigInfoList(String code) {
+        log.info("查询虫情的指定配置列表");
+        List<IotWarnindicator> list = iotWarnBussinessMapper.selectIotWarnPestConfigInfoList(code);
+        log.info("查询到 {} 条预警配置信息", list.size());
+        return list;
+    }
 }

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

@@ -0,0 +1,43 @@
+package com.yunfeiyun.agmp.iots.warn.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class WarnPestService {
+    @Autowired
+    private IotWarnBussinessService iotWarnBussinessService;
+
+    /**
+     * 虫害处理入口
+     */
+    public void process() {
+        processPestByType();
+        processPestByCount();
+        processPestByDesignatePest();
+    }
+
+    /**
+     * 根据虫害类型处理
+     */
+    public void processPestByType() {
+        iotWarnBussinessService.selectIotWarnPestConfigInfoList("pestType");
+    }
+
+    /**
+     * 根据虫害总数处理
+     */
+    public void processPestByCount() {
+        iotWarnBussinessService.selectIotWarnPestConfigInfoList("pestNum");
+
+    }
+
+    /**
+     * 根据指定虫害处理
+     */
+    public void processPestByDesignatePest() {
+        //根据自己需要的父子结构单独再写一个方法
+        iotWarnBussinessService.selectIotWarnPestConfigInfoList("pestDetail");
+
+    }
+}

+ 17 - 0
src/main/java/com/yunfeiyun/agmp/iots/warn/service/WarnService.java

@@ -48,6 +48,8 @@ public class WarnService {
 
     @Autowired
     private IIotDevicefactorService iotDevicefactorService;
+    @Autowired
+    private WarnPestService warnPestService;
 
 
     /**
@@ -566,4 +568,19 @@ public class WarnService {
     private void autoDealWarnOfflineLog(String devId) {
         iotWarnBussinessService.autoDealWarnOfflineLog(devId);
     }
+
+    /**
+     * 虫害
+     */
+    public void processWarningPestData() {
+        warnPestService.process();
+    }
+
+
+    /**
+     * 病害
+     */
+    public void processWarningDiseaseData() {
+
+    }
 }

+ 22 - 12
src/main/resources/mapper/IotWarnBusinessMapper.xml

@@ -80,22 +80,23 @@
         select  * from IotWarncount where devBid=#{devBid} and wcBid=#{wcBid};
     </select>
 
-    <select id="selectIotWarnConfigInfoList" parameterType="com.yunfeiyun.agmp.iots.warn.model.WarnConfigInfo" resultType="com.yunfeiyun.agmp.iots.warn.model.WarnConfigInfo">
+    <select id="selectIotWarnConfigInfoList" parameterType="com.yunfeiyun.agmp.iots.warn.model.WarnConfigInfo"
+            resultType="com.yunfeiyun.agmp.iots.warn.model.WarnConfigInfo">
         SELECT wc.*, wi.wiBid, wi.wiAddress,
-            wi.wiCode, wi.wiName, wi.wiUnit, wi.wiExpression, wi.wiValue, wi.wiStatus
+        wi.wiCode, wi.wiName, wi.wiUnit, wi.wiExpression, wi.wiValue, wi.wiStatus
         FROM IotWarnconfig AS wc
-            LEFT JOIN IotWarnindicator AS wi ON wi.wcBid = wc.wcBid
-            <if test="devBid != null">
-                LEFT JOIN IotWarnobject AS wo ON wo.wcBid = wc.wcBid
-            </if>
+        LEFT JOIN IotWarnindicator AS wi ON wi.wcBid = wc.wcBid
+        <if test="devBid != null">
+            LEFT JOIN IotWarnobject AS wo ON wo.wcBid = wc.wcBid
+        </if>
 
         WHERE wc.tid = #{tid} AND wi.wiBid IS NOT NULL
-            <if test="devBid != null">
-                AND wo.devBid = #{devBid} AND wo.woBid IS NOT NULL
-            </if>
-            <if test="devtypeBid!= null">
-                AND wc.devtypeBid = #{devtypeBid}
-            </if>
+        <if test="devBid != null">
+            AND wo.devBid = #{devBid} AND wo.woBid IS NOT NULL
+        </if>
+        <if test="devtypeBid!= null">
+            AND wc.devtypeBid = #{devtypeBid}
+        </if>
     </select>
     <select id="getAllReCount" resultType="com.yunfeiyun.agmp.iot.common.domain.IotWarncount">
         select  * from IotWarncount
@@ -106,6 +107,15 @@
     <select id="selectAllTid" resultType="java.lang.String">
         select tid from SysUser group by tid
     </select>
+
+    <!-- 根据code查询虫害规则指标-->
+    <select id="selectIotWarnPestConfigInfoList"
+            resultType="com.yunfeiyun.agmp.iot.common.domain.IotWarnindicator">
+
+    SELECT * from (
+    select * from IotWarnindicator tb_wi2 where wiCode=#{code}
+    ) tb_wi  LEFT JOIN IotWarnconfig tb_config on tb_wi.wcBid=tb_config.wcBid where tb_config.wcStatus='0'
+    </select>
     <insert id="insertIotOfflineWarnconfig" parameterType="IotWarnconfig" useGeneratedKeys="true" keyProperty="id">
         insert into IotWarnconfig
         <trim prefix="(" suffix=")" suffixOverrides=",">