소스 검색

添加执行任务相关接口

wzl 6 달 전
부모
커밋
787172e299
19개의 변경된 파일736개의 추가작업 그리고 5개의 파일을 삭제
  1. 2 2
      src/main/java/com/dskj/znzn/transData/common/base/PageInfo.java
  2. 3 3
      src/main/java/com/dskj/znzn/transData/generate/CodeGenerateMain.java
  3. 47 0
      src/main/java/com/dskj/znzn/transData/web/common/controller/SysConfController.java
  4. 48 0
      src/main/java/com/dskj/znzn/transData/web/common/entity/SysConf.java
  5. 21 0
      src/main/java/com/dskj/znzn/transData/web/common/mapper/SysConfMapper.java
  6. 22 0
      src/main/java/com/dskj/znzn/transData/web/common/service/ISysConfService.java
  7. 43 0
      src/main/java/com/dskj/znzn/transData/web/common/service/impl/SysConfServiceImpl.java
  8. 83 0
      src/main/java/com/dskj/znzn/transData/web/dataTransfer/controller/DataTransferController.java
  9. 108 0
      src/main/java/com/dskj/znzn/transData/web/dataTransfer/entity/DataTransfer.java
  10. 35 0
      src/main/java/com/dskj/znzn/transData/web/dataTransfer/inData/AddDataTransferTaskInData.java
  11. 17 0
      src/main/java/com/dskj/znzn/transData/web/dataTransfer/inData/EditDataTransferTaskInData.java
  12. 20 0
      src/main/java/com/dskj/znzn/transData/web/dataTransfer/inData/GetDataTransferInData.java
  13. 20 0
      src/main/java/com/dskj/znzn/transData/web/dataTransfer/inData/GetTimeRangeInData.java
  14. 18 0
      src/main/java/com/dskj/znzn/transData/web/dataTransfer/mapper/DataTransferMapper.java
  15. 26 0
      src/main/java/com/dskj/znzn/transData/web/dataTransfer/outData/GetTimeRangeOutData.java
  16. 36 0
      src/main/java/com/dskj/znzn/transData/web/dataTransfer/service/IDataTransferService.java
  17. 173 0
      src/main/java/com/dskj/znzn/transData/web/dataTransfer/service/impl/DataTransferServiceImpl.java
  18. 5 0
      src/main/resources/mapper/DataTransferMapper.xml
  19. 9 0
      src/main/resources/mapper/SysConfMapper.xml

+ 2 - 2
src/main/java/com/dskj/znzn/transData/common/base/PageInfo.java

@@ -11,11 +11,11 @@ import javax.validation.constraints.Min;
 @Data
 public class PageInfo {
 
-    @ApiModelProperty(value = "查询页码")
+    @ApiModelProperty(value = "查询页码", example = "1")
     @Min(value = 1)
     private long pageNo;
 
-    @ApiModelProperty(value = "每页条数")
+    @ApiModelProperty(value = "每页条数", example = "10")
     @Min(value = 1)
     @Max(value = 100)
     private long pageSize;

+ 3 - 3
src/main/java/com/dskj/znzn/transData/generate/CodeGenerateMain.java

@@ -29,11 +29,11 @@ public class CodeGenerateMain {
 
     public static void main(String[] args) throws IOException {
         //逗号分隔 ,all:查询全部  前缀_:匹配
-        String includTables = "JGCS001_laser";
+        String includTables = "sys_conf";
 
         boolean isFirst = true;
         //去掉表前缀
-        String replaceTablePrefix = "JGCS001_";
+        String replaceTablePrefix = "";
 
         File directory = new File("");
         //项目路径-mgb
@@ -56,7 +56,7 @@ public class CodeGenerateMain {
                     return typeRegistry.getColumnType(metaInfo);
                 })).
                 packageConfig(builder -> {
-                    builder.parent("com.dskj.znzn.transData.web.laserData").pathInfo(Collections.singletonMap(OutputFile.xml, xmlPahth)); // 设置mapperXml生成路径
+                    builder.parent("com.dskj.znzn.transData.web.common").pathInfo(Collections.singletonMap(OutputFile.xml, xmlPahth)); // 设置mapperXml生成路径
                 })
                 .strategyConfig(builder -> {
                     builder.enableSkipView();

+ 47 - 0
src/main/java/com/dskj/znzn/transData/web/common/controller/SysConfController.java

@@ -0,0 +1,47 @@
+package com.dskj.znzn.transData.web.common.controller;
+
+import com.dskj.znzn.transData.common.base.R;
+import com.dskj.znzn.transData.web.common.entity.SysConf;
+import com.dskj.znzn.transData.web.common.service.ISysConfService;
+import com.dtflys.forest.annotation.Get;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+import java.util.List;
+
+/**
+ * <p>
+ * 前端控制器
+ * </p>
+ *
+ * @author 魏志亮
+ * @since 2025-01-09
+ */
+@RestController
+@RequestMapping("/sysConf")
+@Api(tags = {"系统配置"})
+@RequiredArgsConstructor(onConstructor = @__({@Autowired}))
+public class SysConfController {
+
+    private final ISysConfService sysConfService;
+
+    @ApiOperation("获取系统配置")
+    @GetMapping("/getByType")
+    public R<List<SysConf>> getByType(@Valid @NotBlank String type) {
+        return R.ok(sysConfService.getByType(type));
+    }
+
+    @ApiOperation("获取配置名称")
+    @GetMapping("/getTypeName")
+    public R<List<SysConf>> getTypeName() {
+        return R.ok(sysConfService.getTypeName());
+    }
+}

+ 48 - 0
src/main/java/com/dskj/znzn/transData/web/common/entity/SysConf.java

@@ -0,0 +1,48 @@
+package com.dskj.znzn.transData.web.common.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author 魏志亮
+ * @since 2025-01-09
+ */
+@Getter
+@Setter
+@TableName("sys_conf")
+@ApiModel(value = "SysConf对象", description = "")
+public class SysConf implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("主键")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("类型")
+    private String type;
+
+    @ApiModelProperty("类型名称")
+    private String typeName;
+
+    @ApiModelProperty("参数key")
+    private String paramKey;
+
+    @ApiModelProperty("参数显示的值")
+    private String paramValue;
+
+    @ApiModelProperty("0:不可用 1:可用")
+    private Integer status;
+}

+ 21 - 0
src/main/java/com/dskj/znzn/transData/web/common/mapper/SysConfMapper.java

@@ -0,0 +1,21 @@
+package com.dskj.znzn.transData.web.common.mapper;
+
+import com.dskj.znzn.transData.web.common.entity.SysConf;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 魏志亮
+ * @since 2025-01-09
+ */
+@Mapper
+public interface SysConfMapper extends BaseMapper<SysConf> {
+
+    List<SysConf> getTypeName();
+}

+ 22 - 0
src/main/java/com/dskj/znzn/transData/web/common/service/ISysConfService.java

@@ -0,0 +1,22 @@
+package com.dskj.znzn.transData.web.common.service;
+
+import com.dskj.znzn.transData.web.common.entity.SysConf;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 魏志亮
+ * @since 2025-01-09
+ */
+public interface ISysConfService extends IService<SysConf> {
+
+    List<SysConf> getByType(String type);
+
+    List<SysConf> getTypeName();
+
+}

+ 43 - 0
src/main/java/com/dskj/znzn/transData/web/common/service/impl/SysConfServiceImpl.java

@@ -0,0 +1,43 @@
+package com.dskj.znzn.transData.web.common.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.dskj.znzn.transData.web.common.entity.SysConf;
+import com.dskj.znzn.transData.web.common.mapper.SysConfMapper;
+import com.dskj.znzn.transData.web.common.service.ISysConfService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * <p>
+ * 服务实现类
+ * </p>
+ *
+ * @author 魏志亮
+ * @since 2025-01-09
+ */
+@Service
+@RequiredArgsConstructor(onConstructor = @__({@Autowired}))
+public class SysConfServiceImpl extends ServiceImpl<SysConfMapper, SysConf> implements ISysConfService {
+
+    @Override
+    public List<SysConf> getByType(String type) {
+        LambdaQueryWrapper<SysConf> wrapper = Wrappers.lambdaQuery();
+        wrapper.eq(SysConf::getType, type).eq(SysConf::getStatus, 1);
+        return list(wrapper);
+    }
+
+    @Override
+    public List<SysConf> getTypeName() {
+        LambdaQueryWrapper<SysConf> wrapper = Wrappers.lambdaQuery();
+        wrapper.select(SysConf::getType, SysConf::getTypeName).eq(SysConf::getStatus, 1)
+                .groupBy(Arrays.asList(SysConf::getType, SysConf::getTypeName));
+        return list(wrapper);
+    }
+}

+ 83 - 0
src/main/java/com/dskj/znzn/transData/web/dataTransfer/controller/DataTransferController.java

@@ -0,0 +1,83 @@
+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.outData.GetTimeRangeOutData;
+import com.dskj.znzn.transData.web.dataTransfer.service.IDataTransferService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * <p>
+ * 数据导入  前端控制器
+ * </p>
+ *
+ * @author 魏志亮
+ * @since 2025-01-09
+ */
+@RestController
+@RequestMapping("/dataTransfer")
+@Api(tags = {"数据导入"})
+@RequiredArgsConstructor(onConstructor = @__({@Autowired}))
+public class DataTransferController {
+
+    private final IDataTransferService dataTransferService;
+
+    @ApiOperation("获取数据导入记录")
+    @PostMapping("/getDataTransfer")
+    public PageR<DataTransfer> getDataTransfer(@RequestBody GetDataTransferInData data) {
+        return dataTransferService.getDataTransfer(data);
+    }
+
+    @ApiOperation("根据ID查询任务")
+    @GetMapping("/getById/{id}")
+    public R<DataTransfer> getById(@Valid @NotNull @PathVariable Integer id) {
+        return R.ok(dataTransferService.getById(id));
+    }
+
+    @ApiOperation("添加数据导入任务")
+    @PostMapping("/addDataTransferTask")
+    public R addDataTransferTask(@Valid @RequestBody AddDataTransferTaskInData data) {
+        dataTransferService.addDataTransferTask(data);
+        return R.ok();
+    }
+
+    @ApiOperation("编辑数据导入任务")
+    @PostMapping("/editDataTransferTask")
+    public R editDataTransferTask(@Valid @RequestBody EditDataTransferTaskInData data) {
+        dataTransferService.editDataTransferTask(data);
+        return R.ok();
+    }
+
+    @ApiOperation("删除数据导入任务")
+    @GetMapping("/deleteDataTransferTask/{id}")
+    public R deleteDataTransferTask(@Valid @NotNull @PathVariable Integer id) {
+        dataTransferService.deleteDataTransferTask(id);
+        return R.ok();
+    }
+
+    @ApiOperation("重新转换")
+    @GetMapping("/reTransfer/{id}")
+    public R reTransfer(@Valid @NotNull @PathVariable Integer id) {
+        dataTransferService.reTransfer(id);
+        return R.ok();
+    }
+
+    @ApiOperation("获取时间范围")
+    @PostMapping("/getTimeRange")
+    public R<List<GetTimeRangeOutData>> getTimeRange(@Valid @RequestBody GetTimeRangeInData data) {
+        return R.ok(dataTransferService.getTimeRange(data));
+    }
+}

+ 108 - 0
src/main/java/com/dskj/znzn/transData/web/dataTransfer/entity/DataTransfer.java

@@ -0,0 +1,108 @@
+package com.dskj.znzn.transData.web.dataTransfer.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 数据操作
+ * </p>
+ *
+ * @author 魏志亮
+ * @since 2025-01-09
+ */
+@Getter
+@Setter
+@TableName("data_transfer")
+@ApiModel(value = "DataTransfer对象", description = "数据操作 ")
+public class DataTransfer implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("主键")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("导入任务名称")
+    private String taskName;
+
+    @ApiModelProperty("风场编号")
+    private String windFarmCode;
+
+    @ApiModelProperty("风场名称")
+    private String windFarmName;
+
+    @ApiModelProperty("机组数量")
+    private Integer engineCount;
+
+    @ApiModelProperty("转换类型")
+    private String transferType;
+
+    @ApiModelProperty("数据文件读取路径")
+    private String readDir;
+
+    @ApiModelProperty("收资人")
+    private String dataCollector;
+
+    @ApiModelProperty("时间粒度(以秒为单位)")
+    private Integer timeGranularity;
+
+    @ApiModelProperty("异常信息")
+    private String errInfo;
+
+    @ApiModelProperty("转换状态(-1:等待转换 0:转换中 1:转换成功 2:转换失败)")
+    private Integer transferStatus;
+
+    @ApiModelProperty("转化系统的状态值")
+    private Integer transSysStatus;
+
+    @ApiModelProperty("转化后数据总条数")
+    private Long transferDataCount;
+
+    @ApiModelProperty("数据中最小时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date dataMinTime;
+
+    @ApiModelProperty("数据中最大时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date dataMaxTime;
+
+    @ApiModelProperty("数据开始转化的时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date transferStartTime;
+
+    @ApiModelProperty("转换完成时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date transferFinishTime;
+
+    @ApiModelProperty("转换进度")
+    private BigDecimal transferProgress;
+
+    @ApiModelProperty("0:不可用 1:可用")
+    private Integer status;
+
+    @ApiModelProperty("创建人")
+    private Integer createBy;
+
+    @ApiModelProperty("创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
+    @ApiModelProperty("更新人")
+    private Integer updateBy;
+
+    @ApiModelProperty("更新时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateTime;
+}

+ 35 - 0
src/main/java/com/dskj/znzn/transData/web/dataTransfer/inData/AddDataTransferTaskInData.java

@@ -0,0 +1,35 @@
+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;
+
+@ApiModel
+@Data
+public class AddDataTransferTaskInData {
+
+    @ApiModelProperty("任务名称")
+    @NotBlank(message = "任务名称不能为空")
+    private String taskName;
+
+    @ApiModelProperty("风场编号")
+    @NotBlank(message = "风场编号不能为空")
+    private String windFarmCode;
+
+    @ApiModelProperty("风场名称")
+    private String windFarmName;
+
+    @ApiModelProperty("转化类型(调用 获取系统配置 接口获取)")
+    @NotBlank(message = "转化类型不能为空")
+    private String transferType;
+
+    @ApiModelProperty("数据读取路径")
+    @NotBlank(message = "数据读取路径不能为空")
+    private String readDir;
+
+    @ApiModelProperty("收资人")
+    @NotBlank(message = "收资人不能为空")
+    private String dataCollector;
+}

+ 17 - 0
src/main/java/com/dskj/znzn/transData/web/dataTransfer/inData/EditDataTransferTaskInData.java

@@ -0,0 +1,17 @@
+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.NotNull;
+
+@ApiModel
+@Data
+public class EditDataTransferTaskInData extends AddDataTransferTaskInData {
+
+    @ApiModelProperty("ID")
+    @NotNull(message = "ID不能为空")
+    private Integer id;
+
+}

+ 20 - 0
src/main/java/com/dskj/znzn/transData/web/dataTransfer/inData/GetDataTransferInData.java

@@ -0,0 +1,20 @@
+package com.dskj.znzn.transData.web.dataTransfer.inData;
+
+import com.dskj.znzn.transData.common.base.PageInfo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@ApiModel
+@Data
+public class GetDataTransferInData extends PageInfo {
+
+    @ApiModelProperty("风场编号")
+    private String windFarmCode;
+
+    @ApiModelProperty("转化类型")
+    private String transferType;
+
+    @ApiModelProperty(value = "转换状态(null: 全部 -1:等待转换 0:转换中 1:转换成功 2:转换失败)", example = "null")
+    private Integer transferStatus;
+}

+ 20 - 0
src/main/java/com/dskj/znzn/transData/web/dataTransfer/inData/GetTimeRangeInData.java

@@ -0,0 +1,20 @@
+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;
+
+@ApiModel
+@Data
+public class GetTimeRangeInData {
+
+    @ApiModelProperty(value = "风场编号", required = true)
+    @NotBlank(message = "风场编号不能为空")
+    private String windFarmCode;
+
+    @ApiModelProperty(value = "转化类型", required = true)
+    @NotBlank(message = "转化类型不能为空")
+    private String transferType;
+}

+ 18 - 0
src/main/java/com/dskj/znzn/transData/web/dataTransfer/mapper/DataTransferMapper.java

@@ -0,0 +1,18 @@
+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 org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 数据操作  Mapper 接口
+ * </p>
+ *
+ * @author 魏志亮
+ * @since 2025-01-09
+ */
+@Mapper
+public interface DataTransferMapper extends BaseMapper<DataTransfer> {
+
+}

+ 26 - 0
src/main/java/com/dskj/znzn/transData/web/dataTransfer/outData/GetTimeRangeOutData.java

@@ -0,0 +1,26 @@
+package com.dskj.znzn.transData.web.dataTransfer.outData;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@ApiModel
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class GetTimeRangeOutData {
+
+    @ApiModelProperty(value = "开始时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
+
+}

+ 36 - 0
src/main/java/com/dskj/znzn/transData/web/dataTransfer/service/IDataTransferService.java

@@ -0,0 +1,36 @@
+package com.dskj.znzn.transData.web.dataTransfer.service;
+
+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.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.outData.GetTimeRangeOutData;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 数据操作  服务类
+ * </p>
+ *
+ * @author 魏志亮
+ * @since 2025-01-09
+ */
+public interface IDataTransferService extends IService<DataTransfer> {
+
+    PageR<DataTransfer> getDataTransfer(GetDataTransferInData data);
+
+    void addDataTransferTask(AddDataTransferTaskInData data);
+
+    void editDataTransferTask(EditDataTransferTaskInData data);
+
+    void reTransfer(Integer id);
+
+    void deleteDataTransferTask(Integer id);
+
+    List<GetTimeRangeOutData> getTimeRange(GetTimeRangeInData data);
+}

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

@@ -0,0 +1,173 @@
+package com.dskj.znzn.transData.web.dataTransfer.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dskj.znzn.transData.common.base.PageR;
+import com.dskj.znzn.transData.common.base.R;
+import com.dskj.znzn.transData.common.exception.BusinessException;
+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.mapper.DataTransferMapper;
+import com.dskj.znzn.transData.web.dataTransfer.outData.GetTimeRangeOutData;
+import com.dskj.znzn.transData.web.dataTransfer.service.IDataTransferService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * <p>
+ * 数据操作  服务实现类
+ * </p>
+ *
+ * @author 魏志亮
+ * @since 2025-01-09
+ */
+@Service
+@RequiredArgsConstructor(onConstructor = @__({@Autowired}))
+public class DataTransferServiceImpl extends ServiceImpl<DataTransferMapper, DataTransfer> implements IDataTransferService {
+
+    @Override
+    public PageR<DataTransfer> getDataTransfer(GetDataTransferInData data) {
+        IPage<DataTransfer> queryPage = Page.of(data.getPageNo(), data.getPageSize());
+        LambdaQueryWrapper<DataTransfer> wrapper = Wrappers.lambdaQuery();
+        wrapper.eq(StringUtils.isNotBlank(data.getWindFarmCode()), DataTransfer::getWindFarmCode, data.getWindFarmCode());
+        wrapper.eq(null != data.getTransferStatus(), DataTransfer::getTransferStatus, data.getTransferStatus());
+        wrapper.eq(StringUtils.isNotBlank(data.getTransferType()), DataTransfer::getTransferType, data.getTransferType());
+        wrapper.eq(DataTransfer::getStatus, 1);
+        wrapper.orderByDesc(DataTransfer::getUpdateTime);
+        IPage<DataTransfer> pageData = page(queryPage, wrapper);
+        return PageR.page(pageData, pageData.getRecords());
+    }
+
+    @Override
+    public void addDataTransferTask(AddDataTransferTaskInData data) {
+        DataTransfer dataTransfer = new DataTransfer();
+        BeanUtils.copyProperties(data, dataTransfer);
+        dataTransfer.setTransferStatus(-1);
+        dataTransfer.setCreateTime(new Date());
+        save(dataTransfer);
+    }
+
+    @Override
+    public void editDataTransferTask(EditDataTransferTaskInData data) {
+
+        DataTransfer query = getById(data.getId());
+        if (query == null || query.getStatus() == 0) {
+            throw new RuntimeException("数据不存在");
+        }
+        if (query.getTransferStatus() == 0 || query.getTransferStatus() == 1) {
+            throw new RuntimeException("转换中或转换成功不能编辑");
+        }
+
+        DataTransfer dataTransfer = new DataTransfer();
+        BeanUtils.copyProperties(data, dataTransfer);
+        updateById(dataTransfer);
+    }
+
+    @Override
+    public void reTransfer(Integer id) {
+        DataTransfer dataTransfer = getById(id);
+        if (dataTransfer == null || dataTransfer.getStatus() == 0) {
+            throw new RuntimeException("数据不存在");
+        }
+
+        if (dataTransfer.getTransferStatus() != 2) {
+            throw new RuntimeException("转换失败后才能重新转换");
+        }
+        dataTransfer = new DataTransfer();
+        dataTransfer.setId(id);
+        dataTransfer.setTransferStatus(-1);
+        updateById(dataTransfer);
+    }
+
+    @Override
+    public void deleteDataTransferTask(Integer id) {
+        DataTransfer query = getById(id);
+        if (query == null || query.getStatus() == 0) {
+            throw new RuntimeException("数据不存在");
+        }
+        if (query.getTransferStatus() == 0 || query.getTransferStatus() == 1) {
+            throw new RuntimeException("转换中或转换成功不能删除");
+        }
+        DataTransfer dataTransfer = new DataTransfer();
+        dataTransfer.setId(id);
+        dataTransfer.setStatus(0);
+        updateById(dataTransfer);
+    }
+
+    @Override
+    public List<GetTimeRangeOutData> getTimeRange(GetTimeRangeInData data) {
+        LambdaQueryWrapper<DataTransfer> wrapper = Wrappers.lambdaQuery();
+        wrapper.eq(DataTransfer::getWindFarmCode, data.getWindFarmCode())
+                .eq(DataTransfer::getTransferType, data.getTransferType())
+                .eq(DataTransfer::getTransferStatus, 1)
+                .eq(DataTransfer::getStatus, 1);
+
+        List<DataTransfer> datas = list(wrapper);
+        if (null == datas) {
+            throw new BusinessException("未查询到已转化完成数据");
+        }
+
+        List<GetTimeRangeOutData> results = new ArrayList<>(datas.size());
+        for (DataTransfer dataTransfer : datas) {
+            results.add(new GetTimeRangeOutData(dataTransfer.getDataMinTime(), dataTransfer.getDataMaxTime()));
+        }
+
+        return mergePeriods(results);
+    }
+
+    public static List<GetTimeRangeOutData> mergePeriods(List<GetTimeRangeOutData> periods) {
+        if (periods.size() <= 1) {
+            return periods;
+        }
+
+        // 按开始时间排序
+        periods.sort(Comparator.comparing(GetTimeRangeOutData::getStartTime));
+
+        List<GetTimeRangeOutData> merged = new ArrayList<>();
+        GetTimeRangeOutData current = periods.get(0);
+
+        for (int i = 1; i < periods.size(); i++) {
+            GetTimeRangeOutData next = periods.get(i);
+
+            if (current.getEndTime().after(next.getStartTime()) || current.getEndTime().equals(next.getStartTime())) {
+                current.setEndTime(current.getEndTime().after(next.getEndTime()) ? current.getEndTime() : next.getEndTime());
+            } else {
+                // 无重叠,添加当前时间段到结果列表,并移动到下一个时间段
+                merged.add(current);
+                current = next;
+            }
+        }
+        // 添加最后一个时间段
+        merged.add(current);
+
+        return merged;
+    }
+
+    public static void main(String[] args) throws ParseException {
+        List<GetTimeRangeOutData> results = new ArrayList<>();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        List<GetTimeRangeOutData> periods = new ArrayList<>();
+        periods.add(new GetTimeRangeOutData(sdf.parse("2024-01-01 00:00:00"), sdf.parse("2024-03-31 23:59:59")));
+        periods.add(new GetTimeRangeOutData(sdf.parse("2024-08-01 00:00:00"), sdf.parse("2024-12-31 23:59:59")));
+        periods.add(new GetTimeRangeOutData(sdf.parse("2024-02-01 00:00:00"), sdf.parse("2024-05-31 23:59:59")));
+
+        List<GetTimeRangeOutData> mergedPeriods = mergePeriods(periods);
+        for (GetTimeRangeOutData period : mergedPeriods) {
+            System.out.println(sdf.format(period.getStartTime()) + " " + sdf.format(period.getEndTime()));
+
+        }
+    }
+}

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

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dskj.znzn.transData.web.dataTransfer.mapper.DataTransferMapper">
+
+</mapper>

+ 9 - 0
src/main/resources/mapper/SysConfMapper.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dskj.znzn.transData.web.common.mapper.SysConfMapper">
+
+    <select id="getTypeName">
+        select distinct
+
+    </select>
+</mapper>