Browse Source

修复实时数据只有当前推送设备数据BUG

heshan 1 year ago
parent
commit
d98d7c6fd8

+ 2 - 2
application/src/main/java/org/thingsboard/server/config/ReceiveHandler.java

@@ -163,8 +163,8 @@ public class ReceiveHandler {
             }
             scadaHistoryService.saveBatch(scadaHistoryList);
             if(CollUtil.isNotEmpty(scadaHistoryList)){
-                //实时数据先清空再新增
-                scadaMonitorService.remove(Wrappers.<ScadaMonitor>query().lambda().isNotNull(ScadaMonitor::getId));
+                //实时数据先清空该设备数据再新增
+                scadaMonitorService.deleteByCode(scadaDeviceData.getDeviceId());
                 List<ScadaMonitor> scadaMonitors = new ArrayList<>();
                 scadaHistoryList.forEach(d->{
                     ScadaMonitor scadaMonitor = new ScadaMonitor();

+ 2 - 0
application/src/main/java/org/thingsboard/server/mapper/ScadaMonitorMapper.java

@@ -1,6 +1,7 @@
 package org.thingsboard.server.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.data.repository.query.Param;
 import org.thingsboard.server.domain.ScadaHistory;
 import org.thingsboard.server.domain.ScadaMonitor;
 
@@ -10,6 +11,7 @@ import org.thingsboard.server.domain.ScadaMonitor;
  * @since 2023-04-03 11:24:59
  */
 public interface ScadaMonitorMapper extends BaseMapper<ScadaMonitor> {
+    void deleteByCode(@Param("code") String code);
 
 }
 

+ 1 - 1
application/src/main/java/org/thingsboard/server/service/nanxi/ScadaMonitorService.java

@@ -10,6 +10,6 @@ import org.thingsboard.server.domain.ScadaMonitor;
  * @since 2023-04-03 11:25:00
  */
 public interface ScadaMonitorService extends IService<ScadaMonitor> {
-
+    void deleteByCode(String code);
 }
 

+ 4 - 0
application/src/main/java/org/thingsboard/server/service/nanxi/impl/ScadaMonitorServiceImpl.java

@@ -19,5 +19,9 @@ import org.thingsboard.server.service.nanxi.ScadaMonitorService;
 public class ScadaMonitorServiceImpl extends ServiceImpl<ScadaMonitorMapper, ScadaMonitor> implements ScadaMonitorService {
 
 
+    @Override
+    public void deleteByCode(String code) {
+        this.baseMapper.deleteByCode(code);
+    }
 }
 

+ 4 - 19
application/src/main/resources/mapper/ScadaMonitorMapper.xml

@@ -13,25 +13,10 @@
         <result property="codeType" column="CODE_TYPE" jdbcType="VARCHAR"/>
     </resultMap>
 
-    <!-- 批量插入 -->
-    <insert id="insertBatch" keyProperty="" useGeneratedKeys="true">
-        insert into TF_SCYZ.SCADA_HISTORY(ID, CODE, VALUE, SCADA_TIME, UPDATE_TIME)
-        values
-        <foreach collection="entities" item="entity" separator=",">
-            (#{entity.id}, #{entity.code}, #{entity.value}, #{entity.scadaTime}, #{entity.updateTime})
-        </foreach>
-    </insert>
-    <!-- 批量插入或按主键更新 -->
-    <insert id="insertOrUpdateBatch" keyProperty="" useGeneratedKeys="true">
-        insert into TF_SCYZ.SCADA_HISTORY(ID, CODE, VALUE, SCADA_TIME, UPDATE_TIME)
-        values
-        <foreach collection="entities" item="entity" separator=",">
-            (#{entity.id}, #{entity.code}, #{entity.value}, #{entity.scadaTime}, #{entity.updateTime})
-        </foreach>
-        on duplicate key update
-        ID = values(ID) , CODE = values(CODE) , VALUE = values(VALUE) , SCADA_TIME = values(SCADA_TIME) , UPDATE_TIME =
-        values(UPDATE_TIME)
-    </insert>
+
+    <delete id="deleteByCode">
+        delete from  scada_monitor where code like CONCAT('%',#{code},'%');
+    </delete>
 
 </mapper>