Browse Source

1.监测点列表接口开发
2.实时监测实时数据状态统计接口开发
3.实时监测曲线部分代码

heshan 1 year ago
parent
commit
2065a44f92
21 changed files with 396 additions and 21 deletions
  1. 1 1
      application/src/main/java/org/thingsboard/server/config/ReceiveHandler.java
  2. 1 1
      application/src/main/java/org/thingsboard/server/config/ThingsboardSecurityConfiguration.java
  3. 59 0
      application/src/main/java/org/thingsboard/server/controller/nanxi/QueryStatisticsController.java
  4. 11 0
      application/src/main/java/org/thingsboard/server/controller/nanxi/ScadaMonitorController.java
  5. 3 0
      application/src/main/java/org/thingsboard/server/domain/NxMonitorSite.java
  6. 45 0
      application/src/main/java/org/thingsboard/server/domain/query/MonitorDataQuery.java
  7. 24 0
      application/src/main/java/org/thingsboard/server/domain/query/MonitorSiteQuery.java
  8. 25 0
      application/src/main/java/org/thingsboard/server/domain/vo/EchartsLine.java
  9. 28 0
      application/src/main/java/org/thingsboard/server/domain/vo/EchartsLines.java
  10. 38 0
      application/src/main/java/org/thingsboard/server/domain/vo/MonitorDataVo.java
  11. 26 0
      application/src/main/java/org/thingsboard/server/domain/vo/MonitorSiteTreeVo.java
  12. 4 0
      application/src/main/java/org/thingsboard/server/mapper/ScadaHistoryMapper.java
  13. 6 0
      application/src/main/java/org/thingsboard/server/mapper/ScadaMonitorMapper.java
  14. 6 0
      application/src/main/java/org/thingsboard/server/service/nanxi/INxMonitorSiteService.java
  15. 5 0
      application/src/main/java/org/thingsboard/server/service/nanxi/ScadaHistoryService.java
  16. 8 0
      application/src/main/java/org/thingsboard/server/service/nanxi/ScadaMonitorService.java
  17. 28 0
      application/src/main/java/org/thingsboard/server/service/nanxi/impl/NxMonitorSiteServiceImpl.java
  18. 8 0
      application/src/main/java/org/thingsboard/server/service/nanxi/impl/ScadaHistoryServiceImpl.java
  19. 9 0
      application/src/main/java/org/thingsboard/server/service/nanxi/impl/ScadaMonitorServiceImpl.java
  20. 34 19
      application/src/main/resources/mapper/ScadaHistoryMapper.xml
  21. 27 0
      application/src/main/resources/mapper/ScadaMonitorMapper.xml

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

@@ -164,7 +164,7 @@ public class ReceiveHandler {
             scadaHistoryService.saveBatch(scadaHistoryList);
             if(CollUtil.isNotEmpty(scadaHistoryList)){
                 //实时数据先清空该设备数据再新增
-                scadaMonitorService.deleteByCode(scadaDeviceData.getDeviceId());
+                scadaMonitorService.deleteByCode(scadaDeviceData.getDeviceName());
                 List<ScadaMonitor> scadaMonitors = new ArrayList<>();
                 scadaHistoryList.forEach(d->{
                     ScadaMonitor scadaMonitor = new ScadaMonitor();

+ 1 - 1
application/src/main/java/org/thingsboard/server/config/ThingsboardSecurityConfiguration.java

@@ -77,7 +77,7 @@ public class ThingsboardSecurityConfiguration extends WebSecurityConfigurerAdapt
     public static final String[] YT_NOT_AUTH_API = new String[]{"/api/yt/auth/code/login","/api/yt/third/bind","/api/yt/third/login/*"
             ,"/api/yt/third/login/id/*", "/api/yt/third/authorize","/api/yt/platform/get","/api/yt/app_design/get", "/api/yt/noauth/**"
             , "/api/yt/device/list", "/api/test/**", "/api/yt/nxRescueCar/**","/api/scadaDeviceData/**","/api/scadaHistory/**","/api/scadaMonitor/**"
-            ,"/api/yt/nxDeviceW/**","/api/yt/nxDeviceType/**","/api/yt/nxMonitorIndex/**","/api/yt/nxIndexState/**"};
+            ,"/api/yt/nxDeviceW/**","/api/yt/nxDeviceType/**","/api/yt/nxMonitorIndex/**","/api/yt/nxIndexState/**","/api/yt/nxMonitorSite/**","/api/queryStatistics/**"};
 
     public static final String PUBLIC_LOGIN_ENTRY_POINT = "/api/auth/login/public";
     public static final String TOKEN_REFRESH_ENTRY_POINT = "/api/auth/token";

+ 59 - 0
application/src/main/java/org/thingsboard/server/controller/nanxi/QueryStatisticsController.java

@@ -0,0 +1,59 @@
+package org.thingsboard.server.controller.nanxi;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.thingsboard.server.domain.BaseOutput;
+import org.thingsboard.server.domain.ScadaMonitor;
+import org.thingsboard.server.domain.query.MonitorDataQuery;
+import org.thingsboard.server.domain.query.MonitorSiteQuery;
+import org.thingsboard.server.domain.vo.EchartsLines;
+import org.thingsboard.server.domain.vo.MonitorDataVo;
+import org.thingsboard.server.domain.vo.MonitorSiteTreeVo;
+import org.thingsboard.server.service.nanxi.INxMonitorSiteService;
+import org.thingsboard.server.service.nanxi.ScadaHistoryService;
+import org.thingsboard.server.service.nanxi.ScadaMonitorService;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @author Mu
+ * @date 2023-05-15
+ *
+ * @description
+ */
+@Slf4j
+@RestController
+@RequestMapping("/api/queryStatistics")
+@Api(value = "查询统计模块", tags = "查询统计模块")
+public class QueryStatisticsController {
+
+    @Resource
+    private ScadaMonitorService scadaMonitorService;
+
+    @Resource
+    private ScadaHistoryService scadaHistoryService;
+
+    @Resource
+    private INxMonitorSiteService nxMonitorSiteService;
+
+    @ApiOperation(value = "监测点列表", notes = "监测点列表")
+    @GetMapping("/getMonitorSiteList")
+    public BaseOutput<List<MonitorSiteTreeVo>> getMonitorSiteList(@ModelAttribute MonitorSiteQuery monitorSiteQuery) {
+        return  BaseOutput.success(nxMonitorSiteService.getMonitorSiteList(monitorSiteQuery));
+    }
+
+
+    @ApiOperation(value = "获取监测曲线", notes = "获取监测曲线")
+    @GetMapping("/getMonitorSiteList")
+    public BaseOutput<EchartsLines> getMonitorCurve(@ModelAttribute MonitorDataQuery monitorDataQuery) {
+        return  BaseOutput.success(scadaHistoryService.getMonitorCurve(monitorDataQuery));
+    }
+}
+
+

+ 11 - 0
application/src/main/java/org/thingsboard/server/controller/nanxi/ScadaMonitorController.java

@@ -8,6 +8,8 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.*;
 import org.thingsboard.server.domain.BaseOutput;
 import org.thingsboard.server.domain.ScadaMonitor;
+import org.thingsboard.server.domain.query.MonitorDataQuery;
+import org.thingsboard.server.domain.vo.MonitorDataVo;
 import org.thingsboard.server.service.nanxi.ScadaMonitorService;
 
 import javax.annotation.Resource;
@@ -49,6 +51,15 @@ public class ScadaMonitorController {
         return BaseOutput.success(scadaMonitorService.list(Wrappers.query(scadaMonitor)));
     }
 
+    /**
+     * 实时监测
+     */
+    @ApiOperation(value = "实时监测", notes = "实时监测")
+    @GetMapping("/getMonitorData")
+    public BaseOutput<List<MonitorDataVo>> getMonitorData(@ModelAttribute MonitorDataQuery monitorDataQuery) {
+        return BaseOutput.success(scadaMonitorService.getMonitorData(monitorDataQuery));
+    }
+
     /**
      * 通过id查询
      * @param id id

+ 3 - 0
application/src/main/java/org/thingsboard/server/domain/NxMonitorSite.java

@@ -49,6 +49,7 @@ public class NxMonitorSite extends BaseEntity {
     @ApiModelProperty(value = "站点类型")
     private String siteType;
     @ApiModelProperty(hidden = true)
+    @TableField(exist = false)
     private String typeName;
     /**
      * 所属行业
@@ -56,6 +57,7 @@ public class NxMonitorSite extends BaseEntity {
     @ApiModelProperty(value = "所属行业")
     private String industry;
     @ApiModelProperty(hidden = true)
+    @TableField(exist = false)
     private String industryName;
     /**
      * 所属行政区
@@ -63,6 +65,7 @@ public class NxMonitorSite extends BaseEntity {
     @ApiModelProperty(value = "所属行政区")
     private String district;
     @ApiModelProperty(hidden = true)
+    @TableField(exist = false)
     private String districtName;
     /**
      * 站点分组

+ 45 - 0
application/src/main/java/org/thingsboard/server/domain/query/MonitorDataQuery.java

@@ -0,0 +1,45 @@
+package org.thingsboard.server.domain.query;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+@Data
+@ApiModel(value = "实时数据查询类", description = "实时数据查询类")
+public class MonitorDataQuery implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "监测点id")
+    private Integer monitorId;
+
+    @ApiModelProperty(value = "设备状态")
+    private String deviceStatus;
+
+    @ApiModelProperty(value = "监测指标")
+    private List<String> indexs;
+
+    @ApiModelProperty(value = "数据时间(0:今天 1:近24小时 2:近48小时)")
+    private Integer dataTime;
+
+    @ApiModelProperty(value = "自定义时间 yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date customizeTime;
+
+    @ApiModelProperty(value = "对比时间")
+    private List<Date> compareTime;
+
+    @ApiModelProperty(hidden = true)
+    private Date startTime;
+
+    @ApiModelProperty(hidden = true)
+    private Date endTime;
+
+}

+ 24 - 0
application/src/main/java/org/thingsboard/server/domain/query/MonitorSiteQuery.java

@@ -0,0 +1,24 @@
+package org.thingsboard.server.domain.query;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ApiModel(value = "监测点列表查询类", description = "监测点列表查询类")
+public class MonitorSiteQuery implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "监测点名称")
+    private String name;
+
+
+    @ApiModelProperty(value = "所属行业")
+    private String industry;
+
+
+
+}

+ 25 - 0
application/src/main/java/org/thingsboard/server/domain/vo/EchartsLine.java

@@ -0,0 +1,25 @@
+package org.thingsboard.server.domain.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author hs
+ */
+@Data
+@ApiModel
+public class EchartsLine<T> implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "线标题")
+    private String name;
+
+    @ApiModelProperty(value = "线数据")
+    private List<T> seriesData;
+
+}

+ 28 - 0
application/src/main/java/org/thingsboard/server/domain/vo/EchartsLines.java

@@ -0,0 +1,28 @@
+package org.thingsboard.server.domain.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author hs
+ * @date 2022/8/8
+ */
+@Data
+@ApiModel
+public class EchartsLines implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "图标题")
+    private String name;
+
+    @ApiModelProperty(value = "横坐标数据")
+    private List<String> xAxis;
+
+    @ApiModelProperty(value = "数据")
+    private List<EchartsLine> echartsLine;
+}

+ 38 - 0
application/src/main/java/org/thingsboard/server/domain/vo/MonitorDataVo.java

@@ -0,0 +1,38 @@
+package org.thingsboard.server.domain.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@ApiModel(value = "实时数据返回类", description = "实时数据返回类")
+public class MonitorDataVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "站点名称")
+    private String name;
+
+    @ApiModelProperty(value = "监测值")
+    private String value;
+
+    @ApiModelProperty(value = "指标单位")
+    private String unit;
+
+    @ApiModelProperty(value = "指标类型")
+    private String indexType;
+
+    @ApiModelProperty(value = "设备状态")
+    private String status;
+
+    @ApiModelProperty(value = "监测时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private String scadaTime;
+
+}

+ 26 - 0
application/src/main/java/org/thingsboard/server/domain/vo/MonitorSiteTreeVo.java

@@ -0,0 +1,26 @@
+package org.thingsboard.server.domain.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.thingsboard.server.domain.NxMonitorSite;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+@ApiModel(value = "监测点列表返回类", description = "监测点列表返回类")
+public class MonitorSiteTreeVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "站点类型")
+    private String siteType;
+
+
+    @ApiModelProperty(value = "站点对象")
+    private List<NxMonitorSite> monitorSite;
+
+}

+ 4 - 0
application/src/main/java/org/thingsboard/server/mapper/ScadaHistoryMapper.java

@@ -3,6 +3,8 @@ package org.thingsboard.server.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 import org.thingsboard.server.domain.ScadaHistory;
+import org.thingsboard.server.domain.query.MonitorDataQuery;
+import org.thingsboard.server.domain.vo.MonitorDataVo;
 
 import java.util.List;
 
@@ -14,5 +16,7 @@ import java.util.List;
  */
 public interface ScadaHistoryMapper extends BaseMapper<ScadaHistory> {
 
+    List<MonitorDataVo> getHistoryData(MonitorDataQuery query);
+
 }
 

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

@@ -4,6 +4,10 @@ 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;
+import org.thingsboard.server.domain.query.MonitorDataQuery;
+import org.thingsboard.server.domain.vo.MonitorDataVo;
+
+import java.util.List;
 
 /**
  *
@@ -13,5 +17,7 @@ import org.thingsboard.server.domain.ScadaMonitor;
 public interface ScadaMonitorMapper extends BaseMapper<ScadaMonitor> {
     void deleteByCode(@Param("code") String code);
 
+   List<MonitorDataVo> getMonitorData(MonitorDataQuery query);
+
 }
 

+ 6 - 0
application/src/main/java/org/thingsboard/server/service/nanxi/INxMonitorSiteService.java

@@ -3,6 +3,10 @@ package org.thingsboard.server.service.nanxi;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData;
 import org.thingsboard.server.domain.NxMonitorSite;
+import org.thingsboard.server.domain.query.MonitorSiteQuery;
+import org.thingsboard.server.domain.vo.MonitorSiteTreeVo;
+
+import java.util.List;
 
 /**
  * @author Mu
@@ -21,4 +25,6 @@ public interface INxMonitorSiteService extends IService<NxMonitorSite> {
 
     boolean saveSite(NxMonitorSite nxMonitorSite, boolean isAdd);
 
+    List<MonitorSiteTreeVo> getMonitorSiteList(MonitorSiteQuery monitorSiteQuery);
+
 }

+ 5 - 0
application/src/main/java/org/thingsboard/server/service/nanxi/ScadaHistoryService.java

@@ -5,6 +5,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.springframework.web.multipart.MultipartFile;
 import org.thingsboard.server.domain.ScadaHistory;
+import org.thingsboard.server.domain.query.MonitorDataQuery;
+import org.thingsboard.server.domain.vo.EchartsLines;
+import org.thingsboard.server.domain.vo.MonitorDataVo;
 
 import java.io.Serializable;
 import java.util.List;
@@ -17,5 +20,7 @@ import java.util.List;
  */
 public interface ScadaHistoryService extends IService<ScadaHistory> {
 
+    EchartsLines getMonitorCurve(MonitorDataQuery query);
+
 }
 

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

@@ -2,8 +2,13 @@ package org.thingsboard.server.service.nanxi;
 
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.data.repository.query.Param;
 import org.thingsboard.server.domain.ScadaHistory;
 import org.thingsboard.server.domain.ScadaMonitor;
+import org.thingsboard.server.domain.query.MonitorDataQuery;
+import org.thingsboard.server.domain.vo.MonitorDataVo;
+
+import java.util.List;
 
 /**
  * @author HaiQiu
@@ -11,5 +16,8 @@ import org.thingsboard.server.domain.ScadaMonitor;
  */
 public interface ScadaMonitorService extends IService<ScadaMonitor> {
     void deleteByCode(String code);
+
+    List<MonitorDataVo> getMonitorData(MonitorDataQuery monitorDataQuery);
+
 }
 

+ 28 - 0
application/src/main/java/org/thingsboard/server/service/nanxi/impl/NxMonitorSiteServiceImpl.java

@@ -1,5 +1,6 @@
 package org.thingsboard.server.service.nanxi.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -8,12 +9,19 @@ import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.thingsboard.server.domain.NxMonitorSite;
 import org.thingsboard.server.domain.NxMonitorSiteDparam;
+import org.thingsboard.server.domain.query.MonitorSiteQuery;
+import org.thingsboard.server.domain.vo.MonitorSiteTreeVo;
 import org.thingsboard.server.mapper.NxMonitorSiteDparamMapper;
 import org.thingsboard.server.mapper.NxMonitorSiteMapper;
 import org.thingsboard.server.service.nanxi.INxMonitorSiteService;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
 import static org.thingsboard.server.utils.PageConvert.getPageData;
 
 /**
@@ -66,6 +74,26 @@ public class NxMonitorSiteServiceImpl extends ServiceImpl<NxMonitorSiteMapper, N
         return flag;
     }
 
+    @Override
+    public List<MonitorSiteTreeVo> getMonitorSiteList(MonitorSiteQuery monitorSiteQuery) {
+        List<MonitorSiteTreeVo> monitorSiteTreeVos=new ArrayList<>();
+        List<NxMonitorSite> list = this.baseMapper.selectList(Wrappers.<NxMonitorSite>query().lambda()
+                .isNotNull(NxMonitorSite::getSiteType)
+                .like(StringUtils.isNotEmpty(monitorSiteQuery.getName()),NxMonitorSite::getName,monitorSiteQuery.getName())
+                .eq(StringUtils.isNotEmpty(monitorSiteQuery.getIndustry()),NxMonitorSite::getIndustry,monitorSiteQuery.getIndustry())
+        );
+        if(CollUtil.isNotEmpty(list)){
+            Map<String, List<NxMonitorSite>> collect = list.stream().collect(Collectors.groupingBy(NxMonitorSite::getSiteType));
+            collect.forEach((k,v)->{
+                MonitorSiteTreeVo monitorSiteTreeVo=new MonitorSiteTreeVo();
+                monitorSiteTreeVo.setSiteType(k);
+                monitorSiteTreeVo.setMonitorSite(v);
+                monitorSiteTreeVos.add(monitorSiteTreeVo);
+            });
+        }
+        return monitorSiteTreeVos;
+    }
+
 }
 
 

+ 8 - 0
application/src/main/java/org/thingsboard/server/service/nanxi/impl/ScadaHistoryServiceImpl.java

@@ -9,6 +9,9 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.multipart.MultipartFile;
 import org.thingsboard.server.domain.ScadaHistory;
+import org.thingsboard.server.domain.query.MonitorDataQuery;
+import org.thingsboard.server.domain.vo.EchartsLines;
+import org.thingsboard.server.domain.vo.MonitorDataVo;
 import org.thingsboard.server.mapper.ScadaHistoryMapper;
 import org.thingsboard.server.service.nanxi.ScadaHistoryService;
 
@@ -26,5 +29,10 @@ import java.util.List;
 public class ScadaHistoryServiceImpl extends ServiceImpl<ScadaHistoryMapper, ScadaHistory> implements ScadaHistoryService {
 
 
+    @Override
+    public EchartsLines getMonitorCurve(MonitorDataQuery query) {
+        this.baseMapper.getHistoryData(query)
+        return null;
+    }
 }
 

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

@@ -5,11 +5,15 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 import org.thingsboard.server.domain.ScadaHistory;
 import org.thingsboard.server.domain.ScadaMonitor;
+import org.thingsboard.server.domain.query.MonitorDataQuery;
+import org.thingsboard.server.domain.vo.MonitorDataVo;
 import org.thingsboard.server.mapper.ScadaHistoryMapper;
 import org.thingsboard.server.mapper.ScadaMonitorMapper;
 import org.thingsboard.server.service.nanxi.ScadaHistoryService;
 import org.thingsboard.server.service.nanxi.ScadaMonitorService;
 
+import java.util.List;
+
 /**
  *
  * @author HaiQiu
@@ -23,5 +27,10 @@ public class ScadaMonitorServiceImpl extends ServiceImpl<ScadaMonitorMapper, Sca
     public void deleteByCode(String code) {
         this.baseMapper.deleteByCode(code);
     }
+
+    @Override
+    public List<MonitorDataVo> getMonitorData(MonitorDataQuery monitorDataQuery) {
+        return this.baseMapper.getMonitorData(monitorDataQuery);
+    }
 }
 

+ 34 - 19
application/src/main/resources/mapper/ScadaHistoryMapper.xml

@@ -11,25 +11,40 @@
         <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>
+    <select id="getHistoryData" resultType="org.thingsboard.server.domain.vo.MonitorDataVo">
+        SELECT
+        d."name",
+        a."value",
+        b.unit,
+        b.index_type,
+        a.scada_time,
+        c.status
+        FROM
+        scada_monitor a
+        LEFT JOIN nx_monitor_index b ON A.code = b.code
+        AND b.isdeleted = '0'
+        LEFT JOIN nx_device_w c ON b.device_id = c.ID
+        AND c.is_deleted = '0'
+        LEFT JOIN nx_monitor_site d ON c.ID = d.bind_device
+        AND d.is_deleted = '0'
+        WHERE
+        1 = 1
+        <if test="monitorId !=null and monitorId!=''">
+            AND d.ID =#{monitorId}
+        </if>
+        <if test="deviceStatus !=null and deviceStatus!=''">
+            AND c.status=#{deviceStatus}
+        </if>
+       <if test="indexs!=null">
+           and index_type in
+            <foreach collection="indexs" item="index" open="(" close=")" separator=",">
+                 #{index}
+            </foreach>
+       </if>
+        <if test="startTime!=null and endTime!=null ">
+            and a.scada_time BETWEEN #{startTime} and #{endTime}
+        </if>
+    </select>
 
 </mapper>
 

+ 27 - 0
application/src/main/resources/mapper/ScadaMonitorMapper.xml

@@ -17,6 +17,33 @@
     <delete id="deleteByCode">
         delete from  scada_monitor where code like CONCAT('%',#{code},'%');
     </delete>
+    
+    <select id="getMonitorData" resultType="org.thingsboard.server.domain.vo.MonitorDataVo">
+        SELECT
+            d."name",
+            a."value",
+            b.unit,
+            b.index_type,
+            a.scada_time,
+            c.status
+        FROM
+            scada_monitor a
+            LEFT JOIN nx_monitor_index b ON A.code = b.code
+            AND b.isdeleted = '0'
+            LEFT JOIN nx_device_w c ON b.device_id = c.ID
+            AND c.is_deleted = '0'
+            LEFT JOIN nx_monitor_site d ON c.ID = d.bind_device
+            AND d.is_deleted = '0'
+        WHERE
+            1 = 1
+          <if test="monitorId !=null and monitorId!=''">
+              AND d.ID =#{monitorId}
+          </if>
+         <if test="deviceStatus !=null and deviceStatus!=''">
+             AND c.status=#{deviceStatus}
+         </if>
+
+    </select>
 
 </mapper>