Преглед на файлове

任务提交 完成全部mqtt入库

qinguocai преди 1 година
родител
ревизия
4dd1844311

+ 11 - 1
ruoyi-system/src/main/java/com/ruoyi/system/domain/TaskResult.java

@@ -76,7 +76,7 @@ public class TaskResult implements Serializable {
 /**
      * 流速数组
      */
-    private Double wspeeds;
+    private String wspeeds;
 /**
      * 部分瞬时流量数组
      */
@@ -95,5 +95,15 @@ public class TaskResult implements Serializable {
      */
     private Integer status;
 
+    /**
+     * 垂线平均流速数组
+     */
+    private String stopwspeeds;
+
+    /**
+     * 部分平均流速数组
+     */
+    private String partwspeeds;
+
 }
 

+ 8 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TaskResultMapper.java

@@ -22,6 +22,14 @@ public interface TaskResultMapper {
      */
     TaskResult queryById(Integer resultId);
 
+    /**
+     * 通过ID查询单条数据
+     *
+     * @param taskid 主键
+     * @return 实例对象
+     */
+    TaskResult queryByTaskid(String taskid);
+
 
     /**
      * 通过ID查询单条数据

+ 71 - 12
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SaveDataServiceImpl.java

@@ -1,6 +1,9 @@
 package com.ruoyi.system.service.impl;
 
 import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
 import com.ruoyi.system.domain.*;
 import com.ruoyi.system.mapper.*;
 import com.ruoyi.system.service.SaveDataService;
@@ -8,7 +11,9 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 
 /**
  * classname: 站点信息
@@ -36,6 +41,9 @@ public class SaveDataServiceImpl implements SaveDataService {
     @Resource
     private MeasureUploadMapper measureUploadMapper;
 
+    @Resource
+    private WaterLevelMapper waterLevelMapper;
+
     @Override
     public void saveDate(String data, String topics) {
         String[] topicsList = topics.split("/");
@@ -69,11 +77,8 @@ public class SaveDataServiceImpl implements SaveDataService {
                 case "waterLevelUpload" ->
                     //水位数据上报
                         waterLevelUpload(data);
-                case "measureStop" ->
-                    //测流停止
-                        measureStop(data);
                 case "resultUpload" ->
-                    //测流上报
+                    //测流结果上报
                         resultUpload(data);
                 default -> log.error("topic 命令没找到:{}", topics);
             }
@@ -204,23 +209,77 @@ public class SaveDataServiceImpl implements SaveDataService {
     }
 
     public void taskend(String data){
-        log.info("taskend:{}",data);
+        try {
+            TaskNotice taskNotice = JSONUtil.toBean(data, TaskNotice.class);
+            SiteInfo siteInfo = siteInfoMapper.queryBySiteCode(taskNotice.getId());
+            if (siteInfo == null) {
+                log.error("查询站点失败入库失败 站码:{}", taskNotice.getId());
+                return;
+            }
+            taskNotice.setStartId(0L);
+            taskNotice.setRemark("小车任务完成");
+            taskNotice.setCreateTime(new Date());
+            taskNotice.setSiteId(siteInfo.getSiteId());
+            taskNoticeMapper.insert(taskNotice);
+        } catch (Exception e) {
+            log.error("小车任务完成 入库错误:", e);
+        }
     }
 
     public void waterLevelUpload(String data){
-        log.info("waterLevelUpload:{}",data);
+        try {
+            WaterLevel waterLevel = JSONUtil.toBean(data, WaterLevel.class);
+            SiteInfo siteInfo = siteInfoMapper.queryBySiteCode(waterLevel.getId());
+            if (siteInfo == null) {
+                log.error("查询站点失败入库失败 站码:{}", waterLevel.getId());
+                return;
+            }
+            waterLevel.setCreateTime(new Date());
+            waterLevel.setWaterId(0L);
+            waterLevel.setSiteId(siteInfo.getSiteId());
+            waterLevelMapper.insert(waterLevel);
+        } catch (Exception e) {
+            log.error("小车任务完成 入库错误:", e);
+        }
     }
 
     public void xiaoReturn(String data){
-        log.info("xiaoReturn:{}",data);
-    }
-
-    public void measureStop(String data){
-        log.info("measureStop:{}",data);
+        try {
+            TaskNotice taskNotice = JSONUtil.toBean(data, TaskNotice.class);
+            SiteInfo siteInfo = siteInfoMapper.queryBySiteCode(taskNotice.getId());
+            if (siteInfo == null) {
+                log.error("查询站点失败入库失败 站码:{}", taskNotice.getId());
+                return;
+            }
+            taskNotice.setStartId(0L);
+            taskNotice.setRemark("小车开始返航");
+            taskNotice.setCreateTime(new Date());
+            taskNotice.setSiteId(siteInfo.getSiteId());
+            taskNoticeMapper.insert(taskNotice);
+        } catch (Exception e) {
+            log.error("小车返航 入库错误:", e);
+        }
     }
 
     public void resultUpload(String data){
-        log.info("resultUpload:{}",data);
+        try {
+            TaskResult taskResult = JSONUtil.toBean(data, TaskResult.class);
+            SiteInfo siteInfo = siteInfoMapper.queryBySiteCode(taskResult.getId());
+            if (siteInfo == null) {
+                log.error("查询站点失败入库失败 站码:{}", taskResult.getId());
+                return;
+            }
+            TaskResult one = taskResultMapper.queryByTaskid(taskResult.getTaskid());
+            if (one == null) {
+                log.error("测流结果上报 数据更新失败 taskid {}", taskResult.getTaskid());
+                return;
+            }
+            taskResult.setResultId(one.getResultId());
+            taskResult.setStatus(2);
+            taskResultMapper.update(taskResult);
+        } catch (Exception e) {
+            log.error("测流结果上报 入库错误:", e);
+        }
     }
 
 

+ 35 - 11
ruoyi-system/src/main/resources/mapper/TaskResultMapper.xml

@@ -17,26 +17,36 @@
         <result property="elevations" column="elevations" jdbcType="VARCHAR"/>
         <result property="acreages" column="acreages" jdbcType="VARCHAR"/>
         <result property="waterlevels" column="waterlevels" jdbcType="VARCHAR"/>
-        <result property="wspeeds" column="wspeeds" jdbcType="NUMERIC"/>
+        <result property="wspeeds" column="wspeeds" jdbcType="VARCHAR"/>
         <result property="flows" column="flows" jdbcType="VARCHAR"/>
         <result property="siteId" column="site_id" jdbcType="INTEGER"/>
         <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
         <result property="status" column="status" jdbcType="INTEGER"/>
+        <result property="stopwspeeds" column="stopwspeeds" jdbcType="VARCHAR"/>
+        <result property="partwspeeds" column="partwspeeds" jdbcType="VARCHAR"/>
     </resultMap>
 
     <!--查询单个-->
     <select id="queryById" resultMap="TaskResultMap">
         select
-            result_id, id, type, taskid, starttime, endtime, width, planid, acreagesum, flowsum, positions, elevations, acreages, waterlevels, wspeeds, flows, site_id, create_time, status
+            result_id, id, type, taskid, starttime, endtime, width, planid, acreagesum, flowsum, positions, elevations, acreages, waterlevels, wspeeds, flows, site_id, create_time, status, stopwspeeds, partwspeeds
         from task_result
         where result_id = #{resultId}
     </select>
 
+    <!--查询单个-->
+    <select id="queryByTaskid" resultMap="TaskResultMap">
+        select
+            result_id, id, type, taskid, starttime, endtime, width, planid, acreagesum, flowsum, positions, elevations, acreages, waterlevels, wspeeds, flows, site_id, create_time, status, stopwspeeds, partwspeeds
+        from task_result
+        where taskid = #{taskid}
+        limit 1
+    </select>
 
     <!--查询单个-->
     <select id="queryBySiteIdOne" resultMap="TaskResultMap">
         select
-            result_id, id, type, taskid, starttime, endtime, width, planid, acreagesum, flowsum, positions, elevations, acreages, waterlevels, wspeeds, flows, site_id, create_time, status
+            result_id, id, type, taskid, starttime, endtime, width, planid, acreagesum, flowsum, positions, elevations, acreages, waterlevels, wspeeds, flows, site_id, create_time, status, stopwspeeds, partwspeeds
         from task_result
         where site_id = #{siteId}
         order by create_time desc
@@ -46,7 +56,7 @@
     <!--查询指定行数据-->
     <select id="queryAllByLimit" resultMap="TaskResultMap">
         select
-            result_id, id, type, taskid, starttime, endtime, width, planid, acreagesum, flowsum, positions, elevations, acreages, waterlevels, wspeeds, flows, site_id, create_time, status
+            result_id, id, type, taskid, starttime, endtime, width, planid, acreagesum, flowsum, positions, elevations, acreages, waterlevels, wspeeds, flows, site_id, create_time, status, stopwspeeds, partwspeeds
         from task_result
         <where>
             <if test="achievementQuery.siteId != null">
@@ -118,28 +128,34 @@
             <if test="status != null">
                 and status = #{status}
             </if>
+            <if test="stopwspeeds != null and stopwspeeds != ''">
+                and stopwspeeds = #{stopwspeeds}
+            </if>
+            <if test="partwspeeds != null and partwspeeds != ''">
+                and partwspeeds = #{partwspeeds}
+            </if>
         </where>
     </select>
 
     <!--新增所有列-->
     <insert id="insert" keyProperty="resultId" useGeneratedKeys="true">
-        insert into task_result(id, type, taskid, starttime, endtime, width, planid, acreagesum, flowsum, positions, elevations, acreages, waterlevels, wspeeds, flows, site_id, create_time, status)
-        values (#{id}, #{type}, #{taskid}, #{starttime}, #{endtime}, #{width}, #{planid}, #{acreagesum}, #{flowsum}, #{positions}, #{elevations}, #{acreages}, #{waterlevels}, #{wspeeds}, #{flows}, #{siteId}, #{createTime}, #{status})
+        insert into task_result(id, type, taskid, starttime, endtime, width, planid, acreagesum, flowsum, positions, elevations, acreages, waterlevels, wspeeds, flows, site_id, create_time, status, stopwspeeds, partwspeeds)
+        values (#{id}, #{type}, #{taskid}, #{starttime}, #{endtime}, #{width}, #{planid}, #{acreagesum}, #{flowsum}, #{positions}, #{elevations}, #{acreages}, #{waterlevels}, #{wspeeds}, #{flows}, #{siteId}, #{createTime}, #{status}, #{stopwspeeds}, #{partwspeeds})
     </insert>
 
     <insert id="insertBatch" keyProperty="resultId" useGeneratedKeys="true">
-        insert into task_result(id, type, taskid, starttime, endtime, width, planid, acreagesum, flowsum, positions, elevations, acreages, waterlevels, wspeeds, flows, site_id, create_time, status)
+        insert into task_result(id, type, taskid, starttime, endtime, width, planid, acreagesum, flowsum, positions, elevations, acreages, waterlevels, wspeeds, flows, site_id, create_time, status, stopwspeeds, partwspeeds)
         values
         <foreach collection="entities" item="entity" separator=",">
-        (#{entity.id}, #{entity.type}, #{entity.taskid}, #{entity.starttime}, #{entity.endtime}, #{entity.width}, #{entity.planid}, #{entity.acreagesum}, #{entity.flowsum}, #{entity.positions}, #{entity.elevations}, #{entity.acreages}, #{entity.waterlevels}, #{entity.wspeeds}, #{entity.flows}, #{entity.siteId}, #{entity.createTime}, #{entity.status})
+        (#{entity.id}, #{entity.type}, #{entity.taskid}, #{entity.starttime}, #{entity.endtime}, #{entity.width}, #{entity.planid}, #{entity.acreagesum}, #{entity.flowsum}, #{entity.positions}, #{entity.elevations}, #{entity.acreages}, #{entity.waterlevels}, #{entity.wspeeds}, #{entity.flows}, #{entity.siteId}, #{entity.createTime}, #{entity.status}, #{entity.stopwspeeds}, #{entity.partwspeeds})
         </foreach>
     </insert>
 
     <insert id="insertOrUpdateBatch" keyProperty="resultId" useGeneratedKeys="true">
-        insert into task_result(id, type, taskid, starttime, endtime, width, planid, acreagesum, flowsum, positions, elevations, acreages, waterlevels, wspeeds, flows, site_id, create_time, status)
+        insert into task_result(id, type, taskid, starttime, endtime, width, planid, acreagesum, flowsum, positions, elevations, acreages, waterlevels, wspeeds, flows, site_id, create_time, status, stopwspeeds, partwspeeds)
         values
         <foreach collection="entities" item="entity" separator=",">
-            (#{entity.id}, #{entity.type}, #{entity.taskid}, #{entity.starttime}, #{entity.endtime}, #{entity.width}, #{entity.planid}, #{entity.acreagesum}, #{entity.flowsum}, #{entity.positions}, #{entity.elevations}, #{entity.acreages}, #{entity.waterlevels}, #{entity.wspeeds}, #{entity.flows}, #{entity.siteId}, #{entity.createTime}, #{entity.status})
+            (#{entity.id}, #{entity.type}, #{entity.taskid}, #{entity.starttime}, #{entity.endtime}, #{entity.width}, #{entity.planid}, #{entity.acreagesum}, #{entity.flowsum}, #{entity.positions}, #{entity.elevations}, #{entity.acreages}, #{entity.waterlevels}, #{entity.wspeeds}, #{entity.flows}, #{entity.siteId}, #{entity.createTime}, #{entity.status}, #{entity.stopwspeeds}, #{entity.partwspeeds})
         </foreach>
         on duplicate key update
 id = values(id),
@@ -159,7 +175,9 @@ wspeeds = values(wspeeds),
 flows = values(flows),
 site_id = values(site_id),
 create_time = values(create_time),
-status = values(status)
+status = values(status),
+stopwspeeds = values(stopwspeeds),
+partwspeeds = values(partwspeeds)
     </insert>
 
     <!--通过主键修改数据-->
@@ -220,6 +238,12 @@ status = values(status)
             <if test="status != null">
                 status = #{status},
             </if>
+            <if test="stopwspeeds != null and stopwspeeds != ''">
+                stopwspeeds = #{stopwspeeds},
+            </if>
+            <if test="partwspeeds != null and partwspeeds != ''">
+                partwspeeds = #{partwspeeds},
+            </if>
         </set>
         where result_id = #{resultId}
     </update>