diff --git a/srt-data-development/src/main/java/net/srt/disposition/controller/DataCheckSqlController.java b/srt-data-development/src/main/java/net/srt/disposition/controller/DataCheckSqlController.java new file mode 100644 index 0000000..d3c33ea --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/controller/DataCheckSqlController.java @@ -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 explainSql(DataCheckSqlDto dataCheckSqlDto) { + return Result.ok(dataCheckSqlService.explainSql(dataCheckSqlDto)); + } +} diff --git a/srt-data-development/src/main/java/net/srt/disposition/controller/DataSaveController.java b/srt-data-development/src/main/java/net/srt/disposition/controller/DataSaveController.java new file mode 100644 index 0000000..8934867 --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/controller/DataSaveController.java @@ -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(); + } +} diff --git a/srt-data-development/src/main/java/net/srt/disposition/convert/DataSqlSaveConvert.java b/srt-data-development/src/main/java/net/srt/disposition/convert/DataSqlSaveConvert.java new file mode 100644 index 0000000..74481d1 --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/convert/DataSqlSaveConvert.java @@ -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); +} diff --git a/srt-data-development/src/main/java/net/srt/disposition/dto/DataCheckSqlDto.java b/srt-data-development/src/main/java/net/srt/disposition/dto/DataCheckSqlDto.java new file mode 100644 index 0000000..0de6ddc --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/dto/DataCheckSqlDto.java @@ -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; +} diff --git a/srt-data-development/src/main/java/net/srt/disposition/dto/DataSqlSaveDto.java b/srt-data-development/src/main/java/net/srt/disposition/dto/DataSqlSaveDto.java new file mode 100644 index 0000000..5eb25f4 --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/dto/DataSqlSaveDto.java @@ -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 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; + +} diff --git a/srt-data-development/src/main/java/net/srt/disposition/entity/DataCheckSqlEntity.java b/srt-data-development/src/main/java/net/srt/disposition/entity/DataCheckSqlEntity.java new file mode 100644 index 0000000..c049b8d --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/entity/DataCheckSqlEntity.java @@ -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; +} diff --git a/srt-data-development/src/main/java/net/srt/disposition/entity/DataDatabaseDevEntity.java b/srt-data-development/src/main/java/net/srt/disposition/entity/DataDatabaseDevEntity.java new file mode 100644 index 0000000..7596cbf --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/entity/DataDatabaseDevEntity.java @@ -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; + +} diff --git a/srt-data-development/src/main/java/net/srt/disposition/entity/DataSqlSaveEntity.java b/srt-data-development/src/main/java/net/srt/disposition/entity/DataSqlSaveEntity.java new file mode 100644 index 0000000..097666f --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/entity/DataSqlSaveEntity.java @@ -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; + +} diff --git a/srt-data-development/src/main/java/net/srt/disposition/mapper/DataCheckSqlMapper.java b/srt-data-development/src/main/java/net/srt/disposition/mapper/DataCheckSqlMapper.java new file mode 100644 index 0000000..d7b04e1 --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/mapper/DataCheckSqlMapper.java @@ -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 { +} diff --git a/srt-data-development/src/main/java/net/srt/disposition/mapper/DataSaveServiceMapper.java b/srt-data-development/src/main/java/net/srt/disposition/mapper/DataSaveServiceMapper.java new file mode 100644 index 0000000..e201ad0 --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/mapper/DataSaveServiceMapper.java @@ -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 { +} diff --git a/srt-data-development/src/main/java/net/srt/disposition/service/DataCheckSqlService.java b/srt-data-development/src/main/java/net/srt/disposition/service/DataCheckSqlService.java new file mode 100644 index 0000000..fb08166 --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/service/DataCheckSqlService.java @@ -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 { + DataCheckSqlVo explainSql(DataCheckSqlDto dataCheckSqlDto); +} diff --git a/srt-data-development/src/main/java/net/srt/disposition/service/DataSaveService.java b/srt-data-development/src/main/java/net/srt/disposition/service/DataSaveService.java new file mode 100644 index 0000000..e58c953 --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/service/DataSaveService.java @@ -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 { + void dataSaver(DataSqlSaveDto dataSqlSaveDto); + +} diff --git a/srt-data-development/src/main/java/net/srt/disposition/service/impl/DataCheckSqlServiceImpl.java b/srt-data-development/src/main/java/net/srt/disposition/service/impl/DataCheckSqlServiceImpl.java new file mode 100644 index 0000000..7e7a5c1 --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/service/impl/DataCheckSqlServiceImpl.java @@ -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 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; + } +} diff --git a/srt-data-development/src/main/java/net/srt/disposition/service/impl/DataSaveServiceImpl.java b/srt-data-development/src/main/java/net/srt/disposition/service/impl/DataSaveServiceImpl.java new file mode 100644 index 0000000..e0afb74 --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/service/impl/DataSaveServiceImpl.java @@ -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 implements DataSaveService { + + @Override + public void dataSaver(DataSqlSaveDto dataSqlSaveDto) { + DataSqlSaveEntity convert = DataSqlSaveConvert.INSTANCE.convert(dataSqlSaveDto); + convert.setCreateTime(new Date()); + baseMapper.insert(convert); + } +} diff --git a/srt-data-development/src/main/java/net/srt/disposition/vo/DataCheckSqlVo.java b/srt-data-development/src/main/java/net/srt/disposition/vo/DataCheckSqlVo.java new file mode 100644 index 0000000..e55ca87 --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/vo/DataCheckSqlVo.java @@ -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; +} diff --git a/srt-data-development/src/main/resources/bootstrap.yml b/srt-data-development/src/main/resources/bootstrap.yml index d03d7f4..65f34da 100644 --- a/srt-data-development/src/main/resources/bootstrap.yml +++ b/srt-data-development/src/main/resources/bootstrap.yml @@ -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 + diff --git a/srt-data-development/src/test/java/com/text/dome/a.java b/srt-data-development/src/test/java/com/text/dome/a.java new file mode 100644 index 0000000..96e796c --- /dev/null +++ b/srt-data-development/src/test/java/com/text/dome/a.java @@ -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 statementList = parser.parseStatementList(); + str = toSQLString((SQLObject) statementList, "mysql"); + System.out.println(str); + } catch (ParserException e) { + System.out.println("SQL转换中发生了错误:"+e.getMessage()); + } + } +}