Commit 09948ef0 by yuwei

项目初始化

parent b231d4d3
......@@ -27,7 +27,7 @@ public class DbQueryProperty implements Serializable {
public void viald() {
if (StringUtils.isEmpty(dbType) || StringUtils.isEmpty(host) ||
StringUtils.isEmpty(username) || StringUtils.isEmpty(password) ||
StringUtils.isEmpty(port) || StringUtils.isEmpty(dbName)) {
StringUtils.isEmpty(port)) {
throw new DataQueryException("参数不完整");
}
if (DbType.OTHER.getDb().equals(dbType)) {
......
......@@ -3,7 +3,6 @@ package cn.datax.common.database.dialect;
import cn.datax.common.database.core.DbColumn;
import cn.datax.common.database.core.DbTable;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.util.StringUtils;
import java.sql.ResultSet;
......@@ -20,19 +19,18 @@ public class OracleDialect extends AbstractDbDialect {
return "select columns.column_name AS colName, columns.data_type AS DATATYPE, columns.data_length AS DATALENGTH, columns.data_precision AS DATAPRECISION, " +
"columns.data_scale AS DATASCALE, columns.nullable AS NULLABLE, columns.column_id AS COLPOSITION, columns.data_default AS DATADEFAULT, comments.comments AS COLCOMMENT," +
"case when t.column_name is null then 0 else 1 end as COLKEY " +
"from sys.dba_tab_columns columns LEFT JOIN sys.dba_col_comments comments ON columns.owner = comments.owner AND columns.table_name = comments.table_name AND columns.column_name = comments.column_name " +
"from sys.user_tab_columns columns LEFT JOIN sys.user_col_comments comments ON columns.table_name = comments.table_name AND columns.column_name = comments.column_name " +
"left join ( " +
"select col.column_name as column_name, con.table_name as table_name from user_constraints con, user_cons_columns col " +
"where con.constraint_name = col.constraint_name and con.constraint_type = 'P' " +
") t on t.table_name = columns.table_name and columns.column_name = t.column_name " +
"where columns.owner = UPPER('" + dbName + "') and columns.table_name = UPPER('" + tableName + "') order by columns.column_id ";
"where columns.table_name = UPPER('" + tableName + "') order by columns.column_id ";
}
@Override
public String tables(String dbName) {
return "select tables.table_name AS TABLENAME, comments.comments AS TABLECOMMENT from sys.dba_tables tables " +
"LEFT JOIN sys.dba_tab_comments comments ON tables.owner = comments.owner AND tables.table_name = comments.table_name " +
"where tables.owner = UPPER('" + dbName + "') ";
return "select tables.table_name AS TABLENAME, comments.comments AS TABLECOMMENT from sys.user_tables tables " +
"LEFT JOIN sys.user_tab_comments comments ON tables.table_name = comments.table_name ";
}
@Override
......
......@@ -21,15 +21,14 @@ public class DbSchema implements Serializable {
@ApiModelProperty(value = "端口")
@NotNull(message = "端口不能为空", groups = {ValidationGroups.Insert.class, ValidationGroups.Update.class})
private Integer port;
@ApiModelProperty(value = "数据库")
@NotBlank(message = "数据库不能为空", groups = {ValidationGroups.Insert.class, ValidationGroups.Update.class})
private String dbName;
@ApiModelProperty(value = "用户名")
@NotBlank(message = "用户名不能为空", groups = {ValidationGroups.Insert.class, ValidationGroups.Update.class})
private String username;
@ApiModelProperty(value = "密码")
@NotBlank(message = "密码不能为空", groups = {ValidationGroups.Insert.class, ValidationGroups.Update.class})
private String password;
@ApiModelProperty(value = "数据库")
private String dbName;
@ApiModelProperty(value = "服务名")
private String sid;
}
......@@ -14,7 +14,7 @@ import java.util.List;
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("tbl_email")
@TableName(value = "tbl_email", autoResultMap = true)
public class EmailEntity extends BaseEntity {
/**
......
......@@ -17,11 +17,11 @@
<div style="margin: -20px;">
<div class="field-widget-cate"><i class="icon iconfont icon-weidu"></i><span>维度列</span></div>
<draggable v-model="dimensions" tag="ul" :options="{sort: false, ghostClass: 'ghost', group: {name: 'dimensions', pull: true, put: false}}">
<li v-for="(item, index) in dimensions" :key="index" class="field-widget-label"><div>{{item.tag}}</div></li>
<li v-for="(item, index) in dimensions" :key="index" class="field-widget-label"><div>{{ item.label ? item.label + '(' + item.tag + ')' : item.tag }}</div></li>
</draggable>
<div class="field-widget-cate"><i class="icon iconfont icon-zhibiao"></i><span>指标列</span></div>
<draggable v-model="measures" tag="ul" :options="{sort: false, ghostClass: 'ghost', group: {name: 'measures', pull: true, put: false}}">
<li v-for="(item, index) in measures" :key="index" class="field-widget-label"><div>{{item.tag}}</div></li>
<li v-for="(item, index) in measures" :key="index" class="field-widget-label"><div>{{ item.label ? item.label + '(' + item.tag + ')' : item.tag }}</div></li>
</draggable>
</div>
</el-card>
......@@ -47,8 +47,8 @@
<el-col>
<div class="draggable-wrapper">
<draggable :options="{sort: false, ghostClass: 'ghost', group: {name: 'dimensions'}}" v-model="form.rows">
<el-tag v-for="(item, index) in form.rows" :key="index" class="draggable-item">
{{ item.tag }}
<el-tag v-for="(item, index) in form.rows" :key="index" class="draggable-item" closable @close="handleRowTagClose(index, item)">
{{ item.label ? item.label : item.tag }}
</el-tag>
</draggable>
</div>
......@@ -59,8 +59,8 @@
<el-col>
<div class="draggable-wrapper">
<draggable :options="{sort: false, ghostClass: 'ghost', group: {name: 'dimensions'}}" v-model="form.cols">
<el-tag v-for="(item, index) in form.cols" :key="index" class="draggable-item">
{{ item.tag }}
<el-tag v-for="(item, index) in form.cols" :key="index" class="draggable-item" closable @close="handleColTagClose(index, item)">
{{ item.label ? item.label : item.tag }}
</el-tag>
</draggable>
</div>
......@@ -71,9 +71,11 @@
<el-col>
<div class="draggable-wrapper">
<draggable :options="{sort: false, ghostClass: 'ghost', group: {name: 'measures'}}" v-model="form.vals">
<el-tag v-for="(item, index) in form.vals" :key="index" class="draggable-item">
{{ item.tag }}
</el-tag>
<div v-for="(item, index) in form.vals" :key="index" class="draggable-item">
<el-tag>{{ item.label ? item.label : item.tag }}</el-tag>
<span class="draggable-item-handle"><i class="el-icon-edit-outline"></i></span>
<span class="draggable-item-handle" @click="handleValTagClose(index, item)"><i class="el-icon-delete"></i></span>
</div>
</draggable>
</div>
</el-col>
......@@ -155,6 +157,18 @@ export default {
this.measures = this.dataset.schemaConfig.measures
}
})
},
handleRowTagClose (index, tag) {
this.form.rows.splice(index, 1)
this.dimensions.push(tag)
},
handleColTagClose (index, tag) {
this.form.cols.splice(index, 1)
this.dimensions.push(tag)
},
handleValTagClose (index, tag) {
this.form.vals.splice(index, 1)
this.measures.push(tag)
}
}
}
......@@ -264,10 +278,28 @@ export default {
background: #f4f4f7;
margin: 0 10px;
.draggable-item {
cursor: move;
line-height: 30px;
height: 30px;
margin: 0 5px;
display: inline-block;
border: 1px solid #ebecef;
height: 32px;
line-height: 30px;
border-radius: 4px;
.draggable-item-handle {
background-color: #ecf5ff;
border-color: #d9ecff;
display: inline-block;
height: 32px;
padding: 0 10px;
line-height: 30px;
font-size: 12px;
color: #409EFF;
border-width: 1px;
border-style: solid;
box-sizing: border-box;
white-space: nowrap;
cursor: pointer;
margin-left: -5px;
}
}
}
.data-tab-pane {
......
......@@ -44,8 +44,8 @@
<el-row style="height: 300px;padding: 0 20px;">
<el-col :span="12" style="border: 1px dashed #999;height: 100%;">
<div class="tag-group" >
<draggable v-model="columnList" :options="{sort: false, filter: '.undraggable', group: {name: 'col', pull:'clone', put: false}}">
<el-tag v-for="(col, index) in columnList" :key="index" class="draggable-item">
<draggable v-model="columnList" :options="{sort: false, group: {name: 'col', pull:'clone', put: false}}">
<el-tag v-for="(col, index) in columnList" :key="index" class="draggable-tag">
{{ col.tag }}
</el-tag>
</draggable>
......@@ -57,9 +57,11 @@
<el-col>
<div style="height: 90px; border: 1px dashed #999; margin: 0 10px;">
<draggable group="col" :list="dimensionList">
<el-tag v-for="(col, index) in dimensionList" :key="index" class="draggable-item" closable @close="handleDimensionTagClose(index, col)">
{{ col.tag }}
</el-tag>
<div v-for="(item, index) in dimensionList" :key="index" class="draggable-item">
<el-tag>{{ item.label ? item.label + '(' + item.tag + ')' : item.tag }}</el-tag>
<span class="draggable-item-handle"><i class="el-icon-edit-outline"></i></span>
<span class="draggable-item-handle" @click="handleDimensionTagClose(index, item)"><i class="el-icon-delete"></i></span>
</div>
</draggable>
</div>
</el-col>
......@@ -69,9 +71,11 @@
<el-col>
<div style="height: 90px; border: 1px dashed #999; margin: 0 10px;">
<draggable group="col" :list="measureList">
<el-tag v-for="(col, index) in measureList" :key="index" class="draggable-item" closable @close="handleMeasureTagClose(index, col)">
{{ col.tag }}
</el-tag>
<div v-for="(item, index) in measureList" :key="index" class="draggable-item">
<el-tag>{{ item.label ? item.label + '(' + item.tag + ')' : item.tag }}</el-tag>
<span class="draggable-item-handle"><i class="el-icon-edit-outline"></i></span>
<span class="draggable-item-handle" @click="handleMeasureTagClose(index, item)"><i class="el-icon-delete"></i></span>
</div>
</draggable>
</div>
</el-col>
......@@ -338,8 +342,32 @@ export default {
</script>
<style lang="scss" scoped>
.draggable-item {
.draggable-tag {
margin: 10px;
cursor: move;
}
.draggable-item {
margin: 0 5px;
display: inline-block;
border: 1px solid #ebecef;
height: 32px;
line-height: 30px;
border-radius: 4px;
.draggable-item-handle {
background-color: #ecf5ff;
border-color: #d9ecff;
display: inline-block;
height: 32px;
padding: 0 10px;
line-height: 30px;
font-size: 12px;
color: #409EFF;
border-width: 1px;
border-style: solid;
box-sizing: border-box;
white-space: nowrap;
cursor: pointer;
margin-left: -5px;
}
}
</style>
......@@ -39,8 +39,8 @@
<el-row style="height: 300px;padding: 0 20px;">
<el-col :span="12" style="border: 1px dashed #999;height: 100%;">
<div class="tag-group" >
<el-tag v-for="(col, index) in columnList" :key="index" class="draggable-item">
{{ col.tag }}
<el-tag v-for="(item, index) in columnList" :key="index" class="draggable-tag">
{{ item.tag }}
</el-tag>
</div>
</el-col>
......@@ -49,8 +49,8 @@
<el-divider content-position="left">维度列</el-divider>
<el-col>
<div style="height: 90px; border: 1px dashed #999; margin: 0 10px;">
<el-tag v-for="(col, index) in dimensionList" :key="index" class="draggable-item">
{{ col.tag }}
<el-tag v-for="(item, index) in dimensionList" :key="index" class="draggable-item">
{{ item.label ? item.label + '(' + item.tag + ')' : item.tag }}
</el-tag>
</div>
</el-col>
......@@ -59,8 +59,8 @@
<el-divider content-position="left">指标列</el-divider>
<el-col>
<div style="height: 90px; border: 1px dashed #999; margin: 0 10px;">
<el-tag v-for="(col, index) in measureList" :key="index" class="draggable-item">
{{ col.tag }}
<el-tag v-for="(item, index) in measureList" :key="index" class="draggable-item">
{{ item.label ? item.label + '(' + item.tag + ')' : item.tag }}
</el-tag>
</div>
</el-col>
......@@ -201,15 +201,15 @@ export default {
this.form = response.data
this.columns = this.form.schemaConfig.columns || []
if (this.columns && this.columns.length > 0) {
this.columnList = this.columns.map(function (item) {
this.dimensionList = this.form.schemaConfig.dimensions || []
this.measureList = this.form.schemaConfig.measures || []
this.columnList = this.columns.filter(x => [...this.dimensionList, ...this.measureList].every(y => y.tag !== x)).map(function (item) {
let json = {}
json.tag = item
json.label = ''
return json
})
}
this.dimensionList = this.form.schemaConfig.dimensions || []
this.measureList = this.form.schemaConfig.measures || []
this.$refs.sqleditor.editor.setValue(this.form.setSql)
}
})
......@@ -255,8 +255,32 @@ export default {
</script>
<style lang="scss" scoped>
.draggable-item {
.draggable-tag {
margin: 10px;
cursor: move;
}
.draggable-item {
margin: 0 5px;
display: inline-block;
border: 1px solid #ebecef;
height: 32px;
line-height: 30px;
border-radius: 4px;
.draggable-item-handle {
background-color: #ecf5ff;
border-color: #d9ecff;
display: inline-block;
height: 32px;
padding: 0 10px;
line-height: 30px;
font-size: 12px;
color: #409EFF;
border-width: 1px;
border-style: solid;
box-sizing: border-box;
white-space: nowrap;
cursor: pointer;
margin-left: -5px;
}
}
</style>
......@@ -44,8 +44,8 @@
<el-row style="height: 300px;padding: 0 20px;">
<el-col :span="12" style="border: 1px dashed #999;height: 100%;">
<div class="tag-group" >
<draggable v-model="columnList" :options="{sort: false, filter: '.undraggable', group: {name: 'col', pull: true, put: false}}">
<el-tag v-for="(col, index) in columnList" :key="index" class="draggable-item">
<draggable v-model="columnList" :options="{sort: false, group: {name: 'col', pull: true, put: false}}">
<el-tag v-for="(col, index) in columnList" :key="index" class="draggable-tag">
{{ col.tag }}
</el-tag>
</draggable>
......@@ -57,9 +57,11 @@
<el-col>
<div style="height: 90px; border: 1px dashed #999; margin: 0 10px;">
<draggable group="col" :list="dimensionList">
<el-tag v-for="(col, index) in dimensionList" :key="index" class="draggable-item" closable @close="handleDimensionTagClose(index, col)">
{{ col.tag }}
</el-tag>
<div v-for="(item, index) in dimensionList" :key="index" class="draggable-item">
<el-tag>{{ item.label ? item.label + '(' + item.tag + ')' : item.tag }}</el-tag>
<span class="draggable-item-handle"><i class="el-icon-edit-outline"></i></span>
<span class="draggable-item-handle" @click="handleDimensionTagClose(index, item)"><i class="el-icon-delete"></i></span>
</div>
</draggable>
</div>
</el-col>
......@@ -69,9 +71,11 @@
<el-col>
<div style="height: 90px; border: 1px dashed #999; margin: 0 10px;">
<draggable group="col" :list="measureList">
<el-tag v-for="(col, index) in measureList" :key="index" class="draggable-item" closable @close="handleMeasureTagClose(index, col)">
{{ col.tag }}
</el-tag>
<div v-for="(item, index) in measureList" :key="index" class="draggable-item">
<el-tag>{{ item.label ? item.label + '(' + item.tag + ')' : item.tag }}</el-tag>
<span class="draggable-item-handle"><i class="el-icon-edit-outline"></i></span>
<span class="draggable-item-handle" @click="handleMeasureTagClose(index, item)"><i class="el-icon-delete"></i></span>
</div>
</draggable>
</div>
</el-col>
......@@ -230,15 +234,15 @@ export default {
this.form = response.data
this.columns = this.form.schemaConfig.columns || []
if (this.columns && this.columns.length > 0) {
this.columnList = this.columns.map(function (item) {
this.dimensionList = this.form.schemaConfig.dimensions || []
this.measureList = this.form.schemaConfig.measures || []
this.columnList = this.columns.filter(x => [...this.dimensionList, ...this.measureList].every(y => y.tag !== x)).map(function (item) {
let json = {}
json.tag = item
json.label = ''
return json
})
}
this.dimensionList = this.form.schemaConfig.dimensions || []
this.measureList = this.form.schemaConfig.measures || []
this.$refs.sqleditor.editor.setValue(this.form.setSql)
}
})
......@@ -353,8 +357,32 @@ export default {
</script>
<style lang="scss" scoped>
.draggable-item {
.draggable-tag {
margin: 10px;
cursor: move;
}
.draggable-item {
margin: 0 5px;
display: inline-block;
border: 1px solid #ebecef;
height: 32px;
line-height: 30px;
border-radius: 4px;
.draggable-item-handle {
background-color: #ecf5ff;
border-color: #d9ecff;
display: inline-block;
height: 32px;
padding: 0 10px;
line-height: 30px;
font-size: 12px;
color: #409EFF;
border-width: 1px;
border-style: solid;
box-sizing: border-box;
white-space: nowrap;
cursor: pointer;
margin-left: -5px;
}
}
</style>
......@@ -50,7 +50,7 @@
<el-form-item label="服务名" prop="sid" v-if="form.dbType === '3' || form.dbType === '4'">
<el-input v-model="form2.sid" placeholder="请输入服务名" />
</el-form-item>
<el-form-item label="数据库" prop="dbName">
<el-form-item label="数据库" prop="dbName" v-if="form.dbType !== '3' || form.dbType !== '4'">
<el-input v-model="form2.dbName" placeholder="请输入数据库" />
</el-form-item>
<el-form-item label="用户名" prop="username">
......
......@@ -50,7 +50,7 @@
<el-form-item label="服务名" prop="sid" v-if="form.dbType === '3' || form.dbType === '4'">
<el-input v-model="form2.sid" placeholder="请输入服务名" />
</el-form-item>
<el-form-item label="数据库" prop="dbName">
<el-form-item label="数据库" prop="dbName" v-if="form.dbType !== '3' || form.dbType !== '4'">
<el-input v-model="form2.dbName" placeholder="请输入数据库" />
</el-form-item>
<el-form-item label="用户名" prop="username">
......
......@@ -50,7 +50,7 @@
<el-form-item label="服务名" prop="sid" v-if="form.dbType === '3' || form.dbType === '4'">
<el-input v-model="form2.sid" placeholder="请输入服务名" />
</el-form-item>
<el-form-item label="数据库" prop="dbName">
<el-form-item label="数据库" prop="dbName" v-if="form.dbType !== '3' || form.dbType !== '4'">
<el-input v-model="form2.dbName" placeholder="请输入数据库" />
</el-form-item>
<el-form-item label="用户名" prop="username">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment