数据开发模块

dev
chenbingxuan 2023-12-26 22:24:28 +08:00
parent 6db3ab26b2
commit 78153f8c69
17 changed files with 446 additions and 19 deletions

View File

@ -0,0 +1,24 @@
package net.srt.disposition.controller;
import lombok.AllArgsConstructor;
import net.srt.disposition.dto.DataCheckSqlDto;
import net.srt.disposition.entity.DataCheckSqlEntity;
import net.srt.disposition.service.DataCheckSqlService;
import net.srt.disposition.vo.DataCheckSqlVo;
import net.srt.framework.common.utils.Result;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@AllArgsConstructor
@RequestMapping("/task")
public class DataCheckSqlController {
private DataCheckSqlService dataCheckSqlService;
@PostMapping("/explain-sql")
public Result<DataCheckSqlVo> explainSql(DataCheckSqlDto dataCheckSqlDto) {
return Result.ok(dataCheckSqlService.explainSql(dataCheckSqlDto));
}
}

View File

@ -0,0 +1,22 @@
package net.srt.disposition.controller;
import lombok.AllArgsConstructor;
import net.srt.disposition.dto.DataSqlSaveDto;
import net.srt.disposition.service.DataSaveService;
import net.srt.framework.common.utils.Result;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@AllArgsConstructor
@RequestMapping("/task")
public class DataSaveController {
private DataSaveService dataSaveService;
@PostMapping
public Result addSave(@RequestBody DataSqlSaveDto dataSqlSaveDto){
dataSaveService.dataSaver(dataSqlSaveDto);
return Result.ok();
}
}

View File

@ -0,0 +1,14 @@
package net.srt.disposition.convert;
import net.srt.disposition.dto.DataSqlSaveDto;
import net.srt.disposition.dto.DispositionDto;
import net.srt.disposition.entity.DataSqlSaveEntity;
import net.srt.disposition.entity.DispositionEntity;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
@Mapper
public interface DataSqlSaveConvert {
DataSqlSaveConvert INSTANCE = Mappers.getMapper(DataSqlSaveConvert.class);
DataSqlSaveEntity convert(DataSqlSaveDto vo);
}

View File

@ -0,0 +1,56 @@
package net.srt.disposition.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
@Data
public class DataCheckSqlDto {
private Long alertGroupId;
private String alias;
private boolean batchModel;
private Long catalogueId;
private Integer checkPoint;
private String clusterConfigurationId;
private Long clusterId;
private String configJson;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
private Integer databaseId;
private Integer deleted;
private Integer dialect;
private boolean enabled;
private Integer envId;
private boolean fragment;
private Integer id;
private Integer jarId;
private String jobName;
private Integer maxRowNum;
private String name;
private String note;
private Integer openTrans;
private Integer parallelism;
private boolean processEnd;
private Integer projectId;
private Integer pvdataNum;
private String savePointPath;
private String savePointStrategy;
private Integer sqlDbType;
private String statement;
private boolean statementSet;
private Integer step;
private String type;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
private Integer updater;
private boolean useAutoCancel;
private boolean useChangeLog;
private boolean usrResult;
private Integer version;
private Integer versionId;
}

View File

@ -0,0 +1,23 @@
package net.srt.disposition.dto;
import lombok.Data;
import net.srt.disposition.entity.DataDatabaseDevEntity;
import java.util.List;
@Data
public class DataSqlSaveDto {
private String alias;
private Integer catalogueId;
private Integer databaseId;
private List<DataDatabaseDevEntity> databaseList;
private Integer dialect;
private Integer id;
private String name;
private Integer openTrans;
private boolean processEnd;
private Integer pvdataNum;
private Integer sqlDbType;
private String statement;
}

View File

@ -0,0 +1,26 @@
package net.srt.disposition.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
@TableName("data_check_sql")
public class DataCheckSqlEntity {
@TableId("id")
private Integer id;
private String type;
private String sql;
private String parse;
private String explain;
private String error;
private String parseTrue;
private String explainTrue;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date explainTime;
}

View File

@ -0,0 +1,40 @@
package net.srt.disposition.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import net.srt.framework.mybatis.entity.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class DataDatabaseDevEntity {
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
private String creator;
private String databaseDocument;
private String databaseIndex;
private String databaseIp;
private String databaseKafka;
private String databaseName;
private String databasePort;
private Integer databaseType;
private Integer deleted;
private Integer id;
private String isJdbc;
private String name;
private String noReReason;
private String password;
private Integer projectId;
private Integer status;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date updateTime;
private String updater;
private String userName;
private Integer version;
}

View File

@ -0,0 +1,61 @@
package net.srt.disposition.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import net.srt.framework.mybatis.entity.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
@Data
@TableName("data_sql_save")
public class DataSqlSaveEntity {
@TableId("id")
private Long id;
private Long catalogueId;
private String name;
private Long projectId;
private String alias;
private Integer dialect;
private Integer type;
private Integer checkPoint;
private Integer savePointStrategy;
private String savePointPath;
private Integer parallelism;
private boolean fragment;
private boolean statementSet;
private boolean batchModel;
private Long clusterId;
private Long clusterConfigurationId;
private Integer sqlDbType;
private Long databaseId;
private Integer openTrans;
private Long jarId;
private Long envId;
private Long alertGroupId;
private String configJson;
private String note;
private Integer step;
private Long jobInstanceId;
private boolean useAutoCancel;
private boolean useChangeLog;
private boolean useResult;
private Integer pvdataNum;
private boolean enabled;
private Long versionId;
private Integer version;
private Integer deleted;
private Long creator;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
private Long updater;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
private String statement;
}

View File

@ -0,0 +1,9 @@
package net.srt.disposition.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import net.srt.disposition.entity.DataCheckSqlEntity;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface DataCheckSqlMapper extends BaseMapper<DataCheckSqlEntity> {
}

View File

@ -0,0 +1,9 @@
package net.srt.disposition.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import net.srt.disposition.entity.DataSqlSaveEntity;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface DataSaveServiceMapper extends BaseMapper<DataSqlSaveEntity> {
}

View File

@ -0,0 +1,10 @@
package net.srt.disposition.service;
import com.baomidou.mybatisplus.extension.service.IService;
import net.srt.disposition.dto.DataCheckSqlDto;
import net.srt.disposition.entity.DataCheckSqlEntity;
import net.srt.disposition.vo.DataCheckSqlVo;
public interface DataCheckSqlService extends IService<DataCheckSqlEntity> {
DataCheckSqlVo explainSql(DataCheckSqlDto dataCheckSqlDto);
}

View File

@ -0,0 +1,10 @@
package net.srt.disposition.service;
import com.baomidou.mybatisplus.extension.service.IService;
import net.srt.disposition.dto.DataSqlSaveDto;
import net.srt.disposition.entity.DataSqlSaveEntity;
public interface DataSaveService extends IService<DataSqlSaveEntity> {
void dataSaver(DataSqlSaveDto dataSqlSaveDto);
}

View File

@ -0,0 +1,48 @@
package net.srt.disposition.service.impl;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.parser.SQLParserUtils;
import com.alibaba.druid.sql.parser.SQLStatementParser;
import jdk.nashorn.internal.runtime.ParserException;
import lombok.AllArgsConstructor;
import net.srt.disposition.dto.DataCheckSqlDto;
import net.srt.disposition.entity.DataCheckSqlEntity;
import net.srt.disposition.mapper.DataCheckSqlMapper;
import net.srt.disposition.service.DataCheckSqlService;
import net.srt.disposition.vo.DataCheckSqlVo;
import net.srt.framework.mybatis.service.impl.BaseServiceImpl;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import static com.alibaba.druid.sql.SQLUtils.toSQLString;
@Service
@AllArgsConstructor
public class DataCheckSqlServiceImpl extends BaseServiceImpl<DataCheckSqlMapper, DataCheckSqlEntity> implements DataCheckSqlService {
@Override
public DataCheckSqlVo explainSql(DataCheckSqlDto dataCheckSqlDto) {
DataCheckSqlVo dataCheckSqlVo = new DataCheckSqlVo();
try {
SQLStatementParser mysql = SQLParserUtils.createSQLStatementParser(dataCheckSqlDto.getStatement(), "mysql");
SQLStatement sqlStatement = mysql.parseStatement();
if (sqlStatement instanceof Select) {
dataCheckSqlVo.setType("SQLSelectStatement");
}
dataCheckSqlVo.setSql(dataCheckSqlDto.getStatement());
dataCheckSqlVo.setParseTrue(true);
dataCheckSqlVo.setExplainTrue(true);
dataCheckSqlVo.setExplainTime(new Date());
} catch (ParserException e) {
System.out.println("SQL转换中发生了错误"+e.getMessage());
dataCheckSqlVo.setSql(dataCheckSqlDto.getStatement());
dataCheckSqlVo.setError(e.getMessage());
dataCheckSqlVo.setParseTrue(false);
dataCheckSqlVo.setExplainTrue(false);
dataCheckSqlVo.setExplainTime(new Date());
}
return dataCheckSqlVo;
}
}

View File

@ -0,0 +1,24 @@
package net.srt.disposition.service.impl;
import lombok.AllArgsConstructor;
import net.srt.disposition.convert.DataSqlSaveConvert;
import net.srt.disposition.dto.DataSqlSaveDto;
import net.srt.disposition.entity.DataSqlSaveEntity;
import net.srt.disposition.mapper.DataSaveServiceMapper;
import net.srt.disposition.service.DataSaveService;
import net.srt.framework.mybatis.service.impl.BaseServiceImpl;
import org.springframework.stereotype.Service;
import java.util.Date;
@Service
@AllArgsConstructor
public class DataSaveServiceImpl extends BaseServiceImpl<DataSaveServiceMapper,DataSqlSaveEntity> implements DataSaveService {
@Override
public void dataSaver(DataSqlSaveDto dataSqlSaveDto) {
DataSqlSaveEntity convert = DataSqlSaveConvert.INSTANCE.convert(dataSqlSaveDto);
convert.setCreateTime(new Date());
baseMapper.insert(convert);
}
}

View File

@ -0,0 +1,23 @@
package net.srt.disposition.vo;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class DataCheckSqlVo {
private Integer index;
private String type;
private String sql;
private String parse;
private String explain;
private String error;
private boolean parseTrue;
private boolean explainTrue;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date explainTime;
}

View File

@ -2,11 +2,22 @@ server:
port: 8094 port: 8094
spring: spring:
datasource:
druid:
stat-view-servlet:
enabled: true
loginUsername: bwie
loginPassword: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://101.34.77.101:3306/12.5yk?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: cbx@123
type: com.alibaba.druid.pool.DruidDataSource
mvc: mvc:
servlet: servlet:
load-on-startup: 1 load-on-startup: 1
application: application:
name: srt-data-development name: srt-cloud-data-development
profiles: profiles:
active: dev active: dev
cloud: cloud:
@ -14,9 +25,9 @@ spring:
discovery: discovery:
server-addr: 101.34.77.101:8848 server-addr: 101.34.77.101:8848
# 命名空间默认public # 命名空间默认public
namespace: c5d32e76-b83c-4254-8176-1c6a2cee8e3b namespace: 9de208a6-cb30-41ae-a880-78196c99c050
service: ${spring.application.name} service: ${spring.application.name}
group: srt2.1 group: srt2.0
config: config:
server-addr: ${spring.cloud.nacos.discovery.server-addr} server-addr: ${spring.cloud.nacos.discovery.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace} namespace: ${spring.cloud.nacos.discovery.namespace}
@ -25,19 +36,4 @@ spring:
extension-configs: extension-configs:
- data-id: datasource.yaml - data-id: datasource.yaml
refresh: true refresh: true
servlet:
multipart:
max-request-size: 100MB
max-file-size: 1024MB
storage:
enabled: true
config:
# 存储类型local、aliyun
type: local
# 访问域名
domain: http://localhost:8082/sys
# 配置访问前缀
prefix:
local:
# 本地上传路径
path: D://upload

View File

@ -0,0 +1,32 @@
package com.text.dome;
import com.alibaba.druid.sql.ast.SQLObject;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.parser.SQLParserUtils;
import com.alibaba.druid.sql.parser.SQLStatementParser;
import jdk.nashorn.internal.runtime.ParserException;
import java.util.List;
import static com.alibaba.druid.sql.SQLUtils.toSQLString;
public class a {
public static void main(String[] args) {
String str = "create table `tb_user` (\n" +
" `id` varchar(22) not null COMMENT '主键id',\n" +
" `usercode` varchar(11) DEFAULT null COMMENT '手机号',\n" +
" `name` varchar(10) DEFAULT nu";
System.out.println("格式化之前:");
System.out.println(str);
System.out.println("格式化之后:");
try {
SQLStatementParser parser = SQLParserUtils.createSQLStatementParser(str, "mysql");
List<SQLStatement> statementList = parser.parseStatementList();
str = toSQLString((SQLObject) statementList, "mysql");
System.out.println(str);
} catch (ParserException e) {
System.out.println("SQL转换中发生了错误"+e.getMessage());
}
}
}