数据开发模块
parent
6db3ab26b2
commit
78153f8c69
|
@ -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));
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
|
||||
}
|
|
@ -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;
|
||||
|
||||
}
|
|
@ -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> {
|
||||
}
|
|
@ -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> {
|
||||
}
|
|
@ -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);
|
||||
}
|
|
@ -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);
|
||||
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -2,11 +2,22 @@ server:
|
|||
port: 8094
|
||||
|
||||
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:
|
||||
servlet:
|
||||
load-on-startup: 1
|
||||
application:
|
||||
name: srt-data-development
|
||||
name: srt-cloud-data-development
|
||||
profiles:
|
||||
active: dev
|
||||
cloud:
|
||||
|
@ -14,9 +25,9 @@ spring:
|
|||
discovery:
|
||||
server-addr: 101.34.77.101:8848
|
||||
# 命名空间,默认:public
|
||||
namespace: c5d32e76-b83c-4254-8176-1c6a2cee8e3b
|
||||
namespace: 9de208a6-cb30-41ae-a880-78196c99c050
|
||||
service: ${spring.application.name}
|
||||
group: srt2.1
|
||||
group: srt2.0
|
||||
config:
|
||||
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
||||
namespace: ${spring.cloud.nacos.discovery.namespace}
|
||||
|
@ -25,19 +36,4 @@ spring:
|
|||
extension-configs:
|
||||
- data-id: datasource.yaml
|
||||
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
|
||||
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue