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

添加通过风机号类型以及时间数组查询数据接口

魏志亮 преди 2 седмици
родител
ревизия
698650ad3e

+ 1 - 1
pom.xml

@@ -84,7 +84,7 @@
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>druid-spring-boot-starter</artifactId>
-            <version>1.1.10</version>
+            <version>1.2.25</version>
         </dependency>
 
         <dependency>

+ 7 - 4
src/main/java/com/dskj/znzn/transData/web/dataTransfer/controller/DataTransferController.java

@@ -3,10 +3,7 @@ package com.dskj.znzn.transData.web.dataTransfer.controller;
 import com.dskj.znzn.transData.common.base.PageR;
 import com.dskj.znzn.transData.common.base.R;
 import com.dskj.znzn.transData.web.dataTransfer.entity.DataTransfer;
-import com.dskj.znzn.transData.web.dataTransfer.inData.AddDataTransferTaskInData;
-import com.dskj.znzn.transData.web.dataTransfer.inData.EditDataTransferTaskInData;
-import com.dskj.znzn.transData.web.dataTransfer.inData.GetDataTransferInData;
-import com.dskj.znzn.transData.web.dataTransfer.inData.GetTimeRangeInData;
+import com.dskj.znzn.transData.web.dataTransfer.inData.*;
 import com.dskj.znzn.transData.web.dataTransfer.outData.ClassificationImportDataDetailsOutData;
 import com.dskj.znzn.transData.web.dataTransfer.outData.GetStatisticalOutData;
 import com.dskj.znzn.transData.web.dataTransfer.outData.GetTimeRangeOutData;
@@ -21,6 +18,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.validation.Valid;
 import javax.validation.constraints.NotNull;
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -136,4 +134,9 @@ public class DataTransferController {
         return R.ok(dataTransferService.highPriorityCount());
     }
 
+    @ApiOperation("根据风机和时间戳查询数据")
+    @PostMapping("/getWindTurbineAndTimestamps")
+    public R<List<Map<String, Object>>> getWindTurbineAndTimestamps(@Valid @RequestBody GetWindTurbineAndTimestampsInData data) {
+        return R.ok(dataTransferService.getWindTurbineAndTimestamps(data));
+    }
 }

+ 66 - 0
src/main/java/com/dskj/znzn/transData/web/dataTransfer/inData/GetWindTurbineAndTimestampsInData.java

@@ -0,0 +1,66 @@
+package com.dskj.znzn.transData.web.dataTransfer.inData;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.Size;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+@Data
+@ApiModel
+public class GetWindTurbineAndTimestampsInData {
+
+    @ApiModelProperty("风场编号")
+    @NotBlank(message = "风场编号不能为空")
+    private String windFarmCode;
+
+    @ApiModelProperty("风机编号")
+    @NotBlank(message = "风机编号不能为空")
+    private String windTurbineNumber;
+
+    @ApiModelProperty("类型,minute,second")
+    @NotBlank(message = "类型不能为空")
+    private String transferType;
+
+    @ApiModelProperty("时间戳列表")
+    @NotEmpty(message = "时间戳列表不能为空")
+    @Size(min = 1, message = "时间戳列表不能为空")
+    @Size(max = 5000, message = "时间戳列表最多5000个")
+    private List<String> timestamps;
+
+    public Set<String> getPartations() {
+        Set<String> partitions = new HashSet<>();
+        for (String timestamp : timestamps) {
+            if ("minute".equals(transferType)) {
+                partitions.add(String.format("p%s_%s", timestamp.substring(0, 4), windTurbineNumber));
+            } else if ("second".equals(transferType)) {
+                partitions.add(String.format("p%s_%s", timestamp.substring(0, 7).replace("-", ""), windTurbineNumber));
+            } else {
+                throw new RuntimeException("类型错误");
+            }
+        }
+        return partitions;
+    }
+
+    public static void main(String[] args) {
+
+        GetWindTurbineAndTimestampsInData data = new GetWindTurbineAndTimestampsInData();
+        data.setWindFarmCode("1231");
+        data.setWindTurbineNumber("编号");
+        data.setTransferType("minute");
+        data.setTimestamps(Arrays.asList("2024-01-01 00:00:00", "2024-04-01 00:00:00"));
+        Set<String> partitions = data.getPartations();
+        System.out.println(partitions);
+
+        data.setTransferType("second");
+        data.setTimestamps(Arrays.asList("2024-01-01 00:00:00", "2024-04-01 00:00:00"));
+        partitions = data.getPartations();
+        System.out.println(partitions);
+    }
+}

+ 5 - 2
src/main/java/com/dskj/znzn/transData/web/dataTransfer/mapper/DataTransferMapper.java

@@ -1,12 +1,13 @@
 package com.dskj.znzn.transData.web.dataTransfer.mapper;
 
-import com.dskj.znzn.transData.web.dataTransfer.entity.DataTransfer;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.dskj.znzn.transData.web.dataTransfer.outData.ClassificationImportDataDetailsOutData;
+import com.dskj.znzn.transData.web.dataTransfer.entity.DataTransfer;
 import com.dskj.znzn.transData.web.dataTransfer.outData.ClassificationImportDataDetailsQuery;
+import org.apache.ibatis.annotations.MapKey;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -21,4 +22,6 @@ public interface DataTransferMapper extends BaseMapper<DataTransfer> {
 
     List<ClassificationImportDataDetailsQuery> classificationImportDataDetails();
 
+    @MapKey("wind_turbine_number")
+    List<Map<String, Object>> getWindTurbineAndTimestamps(String tableName, String windTurbineNumber, List<String> timestamps, String partition);
 }

+ 18 - 0
src/main/java/com/dskj/znzn/transData/web/dataTransfer/outData/GetWindTurbineAndTimestampsOutData.java

@@ -0,0 +1,18 @@
+package com.dskj.znzn.transData.web.dataTransfer.outData;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+@ApiModel
+@Data
+public class GetWindTurbineAndTimestampsOutData {
+
+
+    @ApiModelProperty("数据")
+    private List<Map<String, Object>> datas;
+}

+ 3 - 4
src/main/java/com/dskj/znzn/transData/web/dataTransfer/service/IDataTransferService.java

@@ -3,13 +3,11 @@ package com.dskj.znzn.transData.web.dataTransfer.service;
 import com.dskj.znzn.transData.common.base.PageR;
 import com.dskj.znzn.transData.web.dataTransfer.entity.DataTransfer;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.dskj.znzn.transData.web.dataTransfer.inData.AddDataTransferTaskInData;
-import com.dskj.znzn.transData.web.dataTransfer.inData.EditDataTransferTaskInData;
-import com.dskj.znzn.transData.web.dataTransfer.inData.GetDataTransferInData;
-import com.dskj.znzn.transData.web.dataTransfer.inData.GetTimeRangeInData;
+import com.dskj.znzn.transData.web.dataTransfer.inData.*;
 import com.dskj.znzn.transData.web.dataTransfer.outData.*;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -47,4 +45,5 @@ public interface IDataTransferService extends IService<DataTransfer> {
 
     Long highPriorityCount();
 
+    List<Map<String, Object>> getWindTurbineAndTimestamps(GetWindTurbineAndTimestampsInData data);
 }

+ 23 - 4
src/main/java/com/dskj/znzn/transData/web/dataTransfer/service/impl/DataTransferServiceImpl.java

@@ -10,10 +10,7 @@ import com.dskj.znzn.transData.common.exception.BusinessException;
 import com.dskj.znzn.transData.web.common.entity.SysConf;
 import com.dskj.znzn.transData.web.common.service.ISysConfService;
 import com.dskj.znzn.transData.web.dataTransfer.entity.DataTransfer;
-import com.dskj.znzn.transData.web.dataTransfer.inData.AddDataTransferTaskInData;
-import com.dskj.znzn.transData.web.dataTransfer.inData.EditDataTransferTaskInData;
-import com.dskj.znzn.transData.web.dataTransfer.inData.GetDataTransferInData;
-import com.dskj.znzn.transData.web.dataTransfer.inData.GetTimeRangeInData;
+import com.dskj.znzn.transData.web.dataTransfer.inData.*;
 import com.dskj.znzn.transData.web.dataTransfer.mapper.DataTransferMapper;
 import com.dskj.znzn.transData.web.dataTransfer.outData.*;
 import com.dskj.znzn.transData.web.dataTransfer.service.IDataTransferService;
@@ -27,6 +24,8 @@ import org.springframework.stereotype.Service;
 
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 
 /**
@@ -48,6 +47,8 @@ public class DataTransferServiceImpl extends ServiceImpl<DataTransferMapper, Dat
 
     private final IWindFarmDayCountService windFarmDayCountService;
 
+    private static DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
     @Override
     public PageR<DataTransfer> getDataTransfer(GetDataTransferInData data) {
         IPage<DataTransfer> queryPage = Page.of(data.getPageNo(), data.getPageSize());
@@ -354,6 +355,24 @@ public class DataTransferServiceImpl extends ServiceImpl<DataTransferMapper, Dat
         return count(wrapper);
     }
 
+    @Override
+    public List<Map<String, Object>> getWindTurbineAndTimestamps(GetWindTurbineAndTimestampsInData data) {
+        String tableName = String.format("%s_%s", data.getWindFarmCode(), data.getTransferType());
+        Set<String> partations = data.getPartations();
+        String partition = StringUtils.join(partations, ",");
+        List<Map<String, Object>> datas = dataTransferMapper.getWindTurbineAndTimestamps(tableName, data.getWindTurbineNumber(), data.getTimestamps(), partition);
+        for (Map<String, Object> dataMap : datas) {
+            for (String key : dataMap.keySet()) {
+                if ("time_stamp".equals(key)) {
+                    LocalDateTime timeStamp = (LocalDateTime) dataMap.get(key);
+                    dataMap.put(key, timeStamp.format(formatter));
+                }
+            }
+
+        }
+        return datas;
+    }
+
 
     private List<String> converAreaStrToList(boolean contains, ClassificationImportDataDetailsQuery query) {
         if (null == query) {

+ 11 - 0
src/main/resources/mapper/DataTransferMapper.xml

@@ -26,4 +26,15 @@
 
         ORDER BY b.latestStorageTime desc
     </select>
+
+    <select id="getWindTurbineAndTimestamps" resultType="java.util.Map">
+        select
+            *
+        from ${tableName} PARTITION (${partition}) where wind_turbine_number = #{windTurbineNumber}
+        and time_stamp in
+        <foreach collection="timestamps" item="item" open="(" close=")" separator=",">
+            #{item}
+        </foreach>
+        order by time_stamp asc
+    </select>
 </mapper>