This commit is contained in:
2019-04-08 10:11:47 +08:00
parent b67e616340
commit abc220eb35
10 changed files with 93 additions and 49 deletions

View File

@@ -95,13 +95,14 @@
<!--<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>-->
<script type="module">
import { logout } from './api/user.js'
let { platList } = plat
/*import meta from './api/meta.js'*/
//import { getServiceInfo, getServiceDetail, getServiceList } from './api/meta.js'
var vm = new Vue({
el: ".container-fluid",
data: {
sysPlat: red.getData("sysPlat"),
sysPlats: red.getData("sysPlats"),
sysPlat: red.getData('sysPlat'),
sysPlats: red.getData('sysPlats'),
pages: [
/*{name: "DDL", url: "/qtask/ddl.html"},*/
{name: "MetaData", url: "/meta", nodes: [
@@ -132,16 +133,9 @@
{name: "关于", url: "/single/about.html"}
],
menus: red.getData("menus", {name: "MetaData", url: "/meta", nodes: [
/*{url:"/metadata/metatable/list.html", name:"TableList"},*/
{url:"/metadata/metatable/metaTable.html", name:"MetaTable"},
/*{url:"/metadata/metaLink.html", name:"MetaLink"},*/
{url:"/metadata/metaService.html", name:"MetaService"},
{url:"/metadata/dataList.html", name:"数据查询"},
]
}),
page: red.getData("page", {url:"/qtask/list.html", name:"QTask"}),
pageId: red.getData("pageId", "QTask")
menus: {},
page: {},
pageId: ''
},
watch: {
page: function () {
@@ -174,6 +168,9 @@
}
},
mounted: function () {
this.menus = red.getData('menus', this.pages[0]['nodes'])
this.page = red.getData('page', this.menus[0])
this.pageId = red.getData("pageId", this.page['mame'])
//绑定事件
$('.menu .nav').on('click', 'li:not(.nav-parent) > a', function() {
var $this = $(this);

View File

@@ -52,8 +52,8 @@
<table class="table table-bordered table-hover" style="width: 100%">
<thead>
<tr>
<th v-for="field in cfg.cols"
v-text="field.label"
<th v-for="field in cfg.shows"
v-text="getFieldLabel(field.col)"
:class="{'sort':field.order>0, 'sort-up':field.col==order.col && order.desc==1, 'sort-down':field.col==order.col && order.desc!=1}"
@click="sortEvent(field.col)"
>
@@ -63,13 +63,10 @@
</thead>
<tbody>
<tr v-for="row in list.rows">
<td v-for="field in cfg.cols" v-title="dealField(row, field.col)" v-text="dealField(row, field.col)"></td>
<td v-for="field in cfg.shows" v-title="dealField(row, field.col)" v-text="dealField(row, field.col)"></td>
</tr>
</tbody>
</table>
<div>
<p v-text="list['rows'][0]"></p>
</div>
</div>
<div>
<ul class="pager pull-right" style="margin: 5px 10px">
@@ -100,7 +97,8 @@
el:".data-list",
data: {
cfg:{
cols: [],
items:[],
shows: [],
filters: []
},
services:[],
@@ -175,6 +173,7 @@
};
getDataList(fbean, json => {
console.log(json)
vm.list = json;
});
},
@@ -244,7 +243,7 @@
} else if (bean[field] == "unknown") { //特殊值处理
str = "";
} else {
str = bean[field] || "";
str = bean[field.replace('$', '.')] || "";
}
return str;
@@ -257,7 +256,24 @@
vm.order.desc = 1;
}
vm.findList();
}
},
getFieldLabel: function (col) {
if (!col) {
return "";
}
var items = this.cfg.items[col.split("$")[0]];
if (items) {
return items[col.split("$")[1]]['label']
/*for (var i = 0; i < items.items.length; i++) {
if (tableInfo.items[i].name == col.split("$")[1]) {
return tableInfo.items[i].label;
}
}*/
}
return '';
},
},
mounted() {
this.serviceList();

View File

@@ -37,9 +37,9 @@
<span class="input-group-btn" style="padding-left: 20px">
<button @click="status=3" :class="['btn',{'btn-primary':status==3}]" type="button"> 导出配置</button>
</span>
<span class="input-group-btn">
<!--<span class="input-group-btn">
<button @click="status=4" :class="['btn',{'btn-primary':status==4}]" type="button"> 导入配置</button>
</span>
</span>-->
<span class="input-group-btn" style="padding-left: 30px">
<button @click="save()" :class="['btn',{'btn-primary':status!=0},{'disabled':status==0}]" type="button"> 保存</button>
@@ -450,14 +450,14 @@
*/
save: function () {
if (vm.status == 1 && vm.itemSort.length > 0) {
red.post("/meta/itemsort", {
red.postX("/meta/itemsort", {
serviceKey: vm.table,
items: JSON.stringify(vm.itemSort)
});
}
else if (vm.status == 2 && vm.itemEdit.length > 0) {
red.post("/meta/itemupdate", {
red.postX("/meta/itemupdate", {
serviceKey: vm.table,
items: JSON.stringify(vm.itemEdit)
});
@@ -468,16 +468,16 @@
var dataStr = JSON.stringify(red.replace$(items[vm.status]));
red.post(urls[vm.status], {
red.postX(urls[vm.status], {
serviceKey: this.service,
items: dataStr
});
}
else if (vm.status == 5) {
var dataStr = JSON.stringify(red.replace$(vm.serviceInfo.shows));
let dataStr = JSON.stringify(red.replace$(vm.serviceInfo.shows));
console.log("dataStr", dataStr);
red.post("/meta/showsort", {
red.postX("/meta/showsort", {
serviceKey: vm.service,
items: dataStr
});
@@ -490,7 +490,7 @@
filterData.push(this.filterMap[this.filterArr[i]]);
}
red.post("/meta/filter_update", {
red.postX("/meta/filter_update", {
serviceKey: vm.service,
filters: JSON.stringify(red.replace$(filterData))
});
@@ -499,7 +499,7 @@
else if (vm.status == 7) {
console.log(vm.row);
red.post("/meta/dbplatupdate", vm.row)
red.postX("/meta/dbplatupdate", vm.row)
}
else {

View File

@@ -56,7 +56,7 @@
<th>附加属性</th>
<th>备注</th>
</tr>
<tr v-for="(item, index) in meta.items">
<tr v-for="(item, index) in meta.items" class="item">
<td v-show="status==3"><input type="checkbox" v-model="meta.exports" :value="item.name" class="form-control"></td>
<td v-show="status==4"><input type="checkbox" v-model="meta.imports" :value="item.name" class="form-control"></td>
<td v-show="status==5"><input type="checkbox" v-model="meta.shows" :value="item.name" class="form-control"></td>
@@ -395,7 +395,7 @@
setMove: function () {
if (this.status == 1) {
$('#sortableList,table>tbody').sortable({
selector: '.list-group-item, tr',
selector: '.item', // '.list-group-item, tr',
finish: function (e) {
var rows = e.list;
vm.itemSort = [];
@@ -487,15 +487,17 @@
*
*/
save: function () {
console.log(this.itemSort)
if (vm.status == 1 && vm.itemSort.length > 0) {
red.post("/meta/itemsort", {
console.log(this.itemSort)
red.postX("/meta/itemsort", {
serviceKey: vm.table,
items: JSON.stringify(vm.itemSort)
});
}
else if (vm.status == 2 && vm.itemEdit.length > 0) {
red.post("/meta/itemupdate", {
red.postX("/meta/itemupdate", {
serviceKey: vm.table,
items: JSON.stringify(vm.itemEdit)
});
@@ -528,7 +530,7 @@
else if (vm.status == 7) {
console.log(vm.row);
red.post("/meta/dbplatupdate", {metaTable: JSON.stringify(vm.row)})
red.postX("/meta/dbplatupdate", {metaTable: JSON.stringify(vm.row)})
}
else {

View File

@@ -33,7 +33,13 @@ var red = {
return plat["_key"];
},
getPlatToken: function() {
var plat = red.getData("sysPlat") || {};
let plat = red.getData("sysPlat");
if (!plat) {
red.showMsg({type:'error', placement: 'center', msg: '登陆过期,请前往登陆'});
setTimeout(function () {
location.href = "/user/login.html";
}, 2000);
}
return plat["token"];
},
getJSON: function (url, params, callback) {
@@ -69,12 +75,12 @@ var red = {
})
},
postX(url, params) {
params["platToken"] = red.getPlatToken()
return new Promise(resolve => {
axios({
url,
method: 'post',
params,
}).then(res => {
let data = res.data || {}
red.loginCheck(data)
@@ -82,9 +88,10 @@ var red = {
red.showMsg({type:"error", msg: data.message})
return;
}
if (data.code == 0) {
else if (data.code == 0) {
data = data.body
}
red.showMsg()
resolve(data)
});
})
@@ -165,8 +172,8 @@ var red = {
return fmt;
},
loginCheck: function (json) {
if (json && json["code"] == -2) {
red.showMsg({type:"error", placement: "center", msg: "登陆过期,请前往登陆"});
if (json && (json['code'] == -2 || json['referid'])) {
red.showMsg({type:'error', placement: 'center', msg: '登陆过期,请前往登陆'});
setTimeout(function () {
location.href = "/user/login.html";
}, 2000);

View File

@@ -1,12 +1,17 @@
package net.tccn.dbq;
import net.tccn.base.Kv;
import net.tccn.base.PageBean;
import net.tccn.dbq.fbean.FBean;
import net.tccn.dbq.jdbc.api.DbAccount;
import net.tccn.dbq.jdbc.api.DbKit;
import net.tccn.dbq.parser.ParseMysql;
import net.tccn.dbq.parser.Parser;
import net.tccn.meta.MetaKit;
import net.tccn.meta.MetaService;
import net.tccn.meta.MetaTable;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
public class DbExecutors {
private final static Parser PARSER = new ParseMysql();
@@ -15,8 +20,20 @@ public class DbExecutors {
String[] sqls = PARSER.parse(fBean);
//当前的业务 => 获取主表 信息 => 数据源信息 => 数据源对象 => 创建数据工具对象 => 查询数据
MetaService metaService = MetaKit.getMetaService(fBean.getName());
MetaTable mainTable = MetaKit.getMetaTableByAlias(metaService.getTable());
return PageBean.by(Arrays.asList(Kv.of("findSql:", sqls[0]).set("countSql", sqls[1]) ), 0);
DbAccount dbAccount = DbAccount.dao.findByKey(mainTable.getDbPlatId());
DbKit dbKit = new DbKit(dbAccount);
System.out.println("countSql: " + sqls[0]);
System.out.println("findSql: " + sqls[1]);
Integer count = dbKit.queryColumn(sqls[0], int.class);
List<Map> list = dbKit.findList(sqls[1], Map.class);
return PageBean.by(list, count);
}
}

View File

@@ -42,17 +42,18 @@ public class DbSourceMysql implements DbSource {
Map row = new HashMap();
for (int i = 1; i <= count; i++) {
String columnTypeName = metaData.getColumnTypeName(i);
String columnName = metaData.getColumnName(i);
row.put(columnName, null);
//String columnName = metaData.getColumnName(i);
String columnLabel = metaData.getColumnLabel(i);
row.put(columnLabel, null);
if (rs.getObject(i) != null) {
switch (columnTypeName) {
case "DATETIME":
case "TIMESTAMP":
case "DATE":
row.put(columnName, rs.getTimestamp(i).getTime()); break;
row.put(columnLabel, rs.getTimestamp(i).getTime()); break;
default:
row.put(columnName, rs.getObject(i));
row.put(columnLabel, rs.getObject(i));
}
}
}

View File

@@ -134,7 +134,7 @@ public class ParseMysql implements Parser {
if (!isEmpty.test(shows)) {
shows.forEach(x -> {
//buf.append("`").append("x").append("`").append(",");
bufSelect.append(x).append(",");
bufSelect.append(x).append(" as ").append("'").append(x.replace(".", "\\.")).append("',");
});
bufSelect.deleteCharAt(bufSelect.length() - 1);
} else {

View File

@@ -157,8 +157,10 @@ public class MetadataService extends BaseService { //arango
public List<String> showSort(String serviceKey , List<String> items, @RestParam(name = "platToken") String token) {
if (items == null || items.size() == 0) return null;
MetaKit.showUpdate.apply(serviceKey, items);
MetaService metaService = MetaKit.getMetaService(serviceKey);
metaService.setShows(items);
metaService.update();
return items;
}

View File

@@ -122,6 +122,8 @@ public class RunTest<T> {
//System.out.println("a$id".split("[$]")[0]);
System.out.println("x.abx".replace(".", "\\."));
}
@Test