修改:1、arangodb -> mysql,去除arangodb
2、部分字段逻辑重构
This commit is contained in:
4
pom.xml
4
pom.xml
@@ -45,7 +45,7 @@
|
||||
</dependency>
|
||||
|
||||
<!-- arangodb支持 -->
|
||||
<dependency>
|
||||
<!--<dependency>
|
||||
<groupId>com.arangodb</groupId>
|
||||
<artifactId>arangodb-java-driver-async</artifactId>
|
||||
<version>6.0.0</version>
|
||||
@@ -55,7 +55,7 @@
|
||||
<artifactId>junit</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
</dependency>-->
|
||||
|
||||
<dependency>
|
||||
<groupId>com.jfinal</groupId>
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
const db = {
|
||||
catalogList({dbAccount, dbPlatId}) { // database列表
|
||||
catalogList({dbAccount, dbid}) { // database列表
|
||||
console.log(JSON.stringify(dbAccount))
|
||||
return red.postX('/_db/catalog_list', {dbAccount: escape(JSON.stringify(dbAccount)), dbPlatId})
|
||||
return red.postX('/_db/catalog_list', {dbAccount: escape(JSON.stringify(dbAccount)), dbid})
|
||||
},
|
||||
tableList({dbPlatId, catalog}) { // 数据库表列表
|
||||
return red.postX('/_db/table_list', {dbPlatId, catalog})
|
||||
tableList({dbid, catalog}) { // 数据库表列表
|
||||
return red.postX('/_db/table_list', {dbid, catalog})
|
||||
},
|
||||
tableInfo({dbPlatId, catalog, tableName}) {
|
||||
return red.postX('/_db/table_info', {dbPlatId, catalog, tableName})
|
||||
tableInfo({dbid, catalog, tableName}) {
|
||||
return red.postX('/_db/table_info', {dbid, catalog, tableName})
|
||||
}
|
||||
}
|
||||
@@ -19,9 +19,9 @@ const meta = {
|
||||
getServiceInfo({name}, callback) {
|
||||
red.getJSON("/meta/service_info",{name}, res => {
|
||||
|
||||
let {name, comment, table, edits, imports, shows, exports, filters, details, dels} = red.replacePoint(res)
|
||||
let {name, comment, tablealias, edits, imports, shows, exports, filters, details, dels} = red.replacePoint(res)
|
||||
|
||||
callback({name, comment, table, edits, imports, shows, exports, filters, details, dels});
|
||||
callback({name, comment, tablealias, edits, imports, shows, exports, filters, details, dels});
|
||||
});
|
||||
},
|
||||
getServiceDetail({name}, callback) {
|
||||
@@ -97,7 +97,7 @@ const meta = {
|
||||
//client
|
||||
exportData({fbean, cate}) {
|
||||
if (cate == 'excel') {
|
||||
location.href = "/data/export?fBean=" + JSON.stringify(fbean) + "&platToken=" + red.getPlatToken() + "&cate=excel";
|
||||
location.href = "/data/export?fBean=" + JSON.stringify(fbean) + "&plattoken=" + red.getPlatToken() + "&cate=excel";
|
||||
} else if (cate == 'cvs') {
|
||||
|
||||
} else if (cate == 'json') {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
const plat = {
|
||||
|
||||
platList(params = {}) { // 平台列表
|
||||
params['platToken'] = 'xx'
|
||||
params['plattoken'] = 'xx'
|
||||
return red.getX('/plat/list', params)
|
||||
},
|
||||
platSave({plat}) {
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
const table = {
|
||||
_sheets({cate, filePath, dbAccount, dbPlatId, catalog}) {
|
||||
return red.postX('/_table/sheets',{cate, filePath, dbAccount, dbPlatId, catalog})
|
||||
_sheets({cate, filePath, dbAccount, dbid, catalog}) {
|
||||
return red.postX('/_table/sheets',{cate, filePath, dbAccount, dbid, catalog})
|
||||
},
|
||||
sheetsExcel({filePath}) {
|
||||
return table._sheets({cate: "excel", filePath})
|
||||
},
|
||||
sheetMySql({dbPlatId, catalog}) {
|
||||
return table._sheets({cate: "mysql", dbPlatId, catalog})
|
||||
sheetMySql({dbid, catalog}) {
|
||||
return table._sheets({cate: "mysql", dbid, catalog})
|
||||
},
|
||||
sheetInfo({filePath, sheetName}) {
|
||||
return red.postX('/_table/sheet_info', {cate: 'excel', filePath, sheetName})
|
||||
},
|
||||
|
||||
saveTable({dbPlatId, catalog, tableArr}) { //
|
||||
return red.postX('/_table/table_save', {cate: 'mysql', dbPlatId, catalog, tableArr: JSON.stringify(tableArr)})
|
||||
saveTable({dbid, catalog, tableArr}) { //
|
||||
return red.postX('/_table/table_save', {cate: 'mysql', dbid, catalog, tableArr: JSON.stringify(tableArr)})
|
||||
},
|
||||
saveSheet({filePath, sheetNames}) {
|
||||
return red.postX('/_table/table_save', {cate: 'excel', filePath, sheetNames: JSON.stringify(sheetNames)})
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//import red from '../res/js/red'
|
||||
|
||||
const login = ({username, pwd}) => {
|
||||
return red.postX("/user/login", {username, pwd, platToken: 'xx'})
|
||||
return red.postX("/user/login", {username, pwd, plattoken: 'xx'})
|
||||
}
|
||||
|
||||
const logout = () => {
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
<div class="form-group">
|
||||
<label for="para" class="col-sm-2 required">数据平台</label>
|
||||
<div class="col-md-6">
|
||||
<select v-model="row.dbPlatId" class="form-control">
|
||||
<select v-model="row.dbid" class="form-control">
|
||||
<option></option>
|
||||
<option v-for="item in dbPlats" :value="item.key" v-text="item.name"></option>
|
||||
</select>
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<div class="col-md-12 col-xs-12" id="top">
|
||||
<div class="logo">
|
||||
<!--<h1>Meta-Kit</h1>-->
|
||||
<h1>{{sysPlat.name}}</h1>
|
||||
<h1>{{sysPlat.platname}}</h1>
|
||||
</div>
|
||||
<ul class="nav nav-tabs">
|
||||
<!--item in pages-->
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
<li class="pull-right">
|
||||
<select v-model="sysPlat" class="form-control plat-switch">
|
||||
<option v-for="item in sysPlats" :value="item" v-text="item.name"></option>
|
||||
<option v-for="item in sysPlats" :value="item" v-text="item.platname"></option>
|
||||
</select>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@@ -60,12 +60,12 @@
|
||||
<th v-show="status==1">操作</th>
|
||||
</tr>
|
||||
|
||||
<tr v-show="status==0" v-for="(k, v) in linkInfo.link">
|
||||
<tr v-show="status==0" v-for="(k, v) in linkInfo.links">
|
||||
<td v-text="k.startsWith(aliasA + '.') ? k : v"></td>
|
||||
<td v-text="v.startsWith(aliasB + '.') ? v : k"></td>
|
||||
</tr>
|
||||
|
||||
<tr v-show="status==1" v-for="(linkItem, index) in link2">
|
||||
<tr v-show="status==1" v-for="(linkItem, index) in links2">
|
||||
<td>
|
||||
<select class="form-control" v-model="linkItem.f1">
|
||||
<option></option>
|
||||
@@ -107,7 +107,7 @@
|
||||
</div>
|
||||
<div class="modal-body" style="text-align: center">
|
||||
<select class="form-control" v-model="newLinkTable">
|
||||
<option v-for="x in tables" :value="x" v-text="strJoin(x.name, x.comment, '---')" v-show="!isDisable(x)"></option>
|
||||
<option v-for="x in tables" :value="x" v-text="strJoin(x.tablename, x.comment, '---')" v-show="!isDisable(x)"></option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
@@ -141,7 +141,7 @@
|
||||
links: [], //
|
||||
linkInfos: [],
|
||||
linkInfo: {},
|
||||
link2: [],
|
||||
links2: [],
|
||||
newLinkTable: {},
|
||||
|
||||
aliasB: '',
|
||||
@@ -184,20 +184,20 @@
|
||||
for (let i in this.links) { // 数据转换
|
||||
if (this.links[i]['tables'][0] == v || this.links[i]['tables'][1] == v) {
|
||||
linkInfo = this.links[i]
|
||||
let link = {}
|
||||
let link2 = [] // [{f1:"", f2:""}]
|
||||
for(k in linkInfo["link"]) {
|
||||
let [_k, _v] = [k, linkInfo["link"][k]]
|
||||
let links = {}
|
||||
let links2 = [] // [{f1:"", f2:""}]
|
||||
for(k in linkInfo["links"]) {
|
||||
let [_k, _v] = [k, linkInfo["links"][k]]
|
||||
if (k.startsWith(this.aliasA + '.')) {
|
||||
link[_k] = _v
|
||||
link2.push({f1: _k, f2: _v})
|
||||
links[_k] = _v
|
||||
links2.push({f1: _k, f2: _v})
|
||||
} else {
|
||||
link[_v] = _k
|
||||
link2.push({f1: _v, f2: _k})
|
||||
links[_v] = _k
|
||||
links2.push({f1: _v, f2: _k})
|
||||
}
|
||||
}
|
||||
linkInfo['link'] = link
|
||||
this.link2 = link2
|
||||
linkInfo['links'] = links
|
||||
this.link2 = links2
|
||||
}
|
||||
}
|
||||
this.linkInfo = linkInfo
|
||||
@@ -222,11 +222,11 @@
|
||||
})
|
||||
},
|
||||
dealTableLabel(table) {
|
||||
return `${table.name} (${table.comment||'-'}) [${table.linkCount}]`
|
||||
return `${table.tablename} (${table.comment||'-'}) [${table.linkCount}]`
|
||||
},
|
||||
dealFilter(table) {
|
||||
// table.name 中是否包含 thiss.filter 的值
|
||||
if (table.name.indexOf(this.filter) > -1 || table.comment.indexOf(this.filter) > -1) {
|
||||
if (table.tablename.indexOf(this.filter) > -1 || table.comment.indexOf(this.filter) > -1) {
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
@@ -257,28 +257,28 @@
|
||||
// 保存(同修改)
|
||||
},
|
||||
addLinkField() {
|
||||
let link2 = this.link2
|
||||
link2.push({f1: "", f2: ""})
|
||||
this.link2 = link2
|
||||
let links2 = this.links2
|
||||
links2.push({f1: "", f2: ""})
|
||||
this.links2 = links2
|
||||
},
|
||||
delLinkField(index) {
|
||||
let link2 = []
|
||||
let links2 = []
|
||||
for (let i in this.link2) {
|
||||
if (i != index) {
|
||||
link2.push(this.link2[i])
|
||||
links2.push(this.link2[i])
|
||||
}
|
||||
}
|
||||
this.link2 = link2
|
||||
this.links2 = links2
|
||||
},
|
||||
saveLink() {
|
||||
let link = {}
|
||||
for(let i in this.link2) {
|
||||
let item = this.link2[i]
|
||||
let links = {}
|
||||
for(let i in this.links2) {
|
||||
let item = this.links2[i]
|
||||
if (item['f1'] && item['f2']) {
|
||||
link[item['f1']] = item['f2']
|
||||
links[item['f1']] = item['f2']
|
||||
}
|
||||
}
|
||||
if (link.size == 0) {
|
||||
if (links.size === 0) {
|
||||
red.showError("请填写完整的关联字段信息")
|
||||
return false
|
||||
}
|
||||
@@ -288,7 +288,7 @@
|
||||
if (!linkInfo['tables']) {
|
||||
linkInfo['tables'] = [this.aliasA, this.aliasB]
|
||||
}
|
||||
linkInfo["link"] = link
|
||||
linkInfo["links"] = links
|
||||
linkSave({link: linkInfo}).then(res => {
|
||||
red.showOk()
|
||||
})
|
||||
|
||||
@@ -515,8 +515,8 @@
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 required">选择业务主表</label>
|
||||
<div class="col-sm-6">
|
||||
<select class="form-control" v-model="createRow.table">
|
||||
<option v-for="x in tables" :value="x.alias" v-text="x.name + ' --- ' + x.comment"></option>
|
||||
<select class="form-control" v-model="createRow.tablealias">
|
||||
<option v-for="x in tables" :value="x.alias" v-text="x.tablename + ' --- ' + x.comment"></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
@@ -571,7 +571,7 @@
|
||||
filterCate: ["EQUAL", "NOTEQUAL", "LIKE", "IN"],
|
||||
serviceInfo: {
|
||||
name: "",
|
||||
table: "",
|
||||
tablealias: "",
|
||||
items: [],
|
||||
shows: [],
|
||||
exports: [],
|
||||
@@ -601,7 +601,7 @@
|
||||
services: [],//业务列表
|
||||
service: "", //页面选择的业务类型
|
||||
serviceLabel: "",
|
||||
table: "",//表别名
|
||||
tablealias: "",//表别名
|
||||
|
||||
//filter
|
||||
filterArr: [],
|
||||
@@ -687,7 +687,7 @@
|
||||
//console.log("dels", dels)
|
||||
let cate = dels["cate"] || "UP_FIELD"
|
||||
let sql1 = dels["sql1"] || "update #(table) set status=9 where id=#(id);"
|
||||
let sql = dels["sql"] || `update ${v['tables'][this.serviceInfo.table]['name']} set status=9 where id=#(id);`
|
||||
let sql = dels["sql"] || `update ${v['tables'][this.serviceInfo.tablealias]['tablename']} set status=9 where id=#(id);`
|
||||
let qtask = dels["qtask"] || ""
|
||||
|
||||
let serviceInfo = this.serviceInfo
|
||||
@@ -695,7 +695,7 @@
|
||||
this.serviceInfo = serviceInfo
|
||||
},
|
||||
sheet: function (v) {
|
||||
this.table = v;
|
||||
this.tablealias = v;
|
||||
},
|
||||
filterArr: function (v) { // 添加或删除选项触发
|
||||
let filters = this.serviceInfo.filters
|
||||
@@ -900,7 +900,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
this.serviceInfo = json;
|
||||
vm.serviceInfo = json;
|
||||
})
|
||||
},
|
||||
loadDetail(name) {
|
||||
|
||||
@@ -292,7 +292,7 @@
|
||||
tableData: {},
|
||||
tableArr: [],
|
||||
dbPlat: red.getData("dbPlat",{}),
|
||||
dbPlatId: red.getData("dbPlatId",''),
|
||||
dbid: red.getData("dbPlatId",''),
|
||||
catalog: '',
|
||||
tableName: '',
|
||||
ckTable: [],
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
<div class="form-group">
|
||||
<label class="col-md-2">数据平台</label>
|
||||
<div class="col-sm-2">
|
||||
<select v-model="row.dbPlatId" class="form-control">
|
||||
<select v-model="row.dbid" class="form-control">
|
||||
<option></option>
|
||||
<option v-for="item in dbPlats" :value="item.key" v-text="item.name"></option>
|
||||
</select>
|
||||
@@ -241,7 +241,7 @@
|
||||
itemEdit: {}, //待修改的字段属性
|
||||
|
||||
dbPlats:[],
|
||||
row: {key: "", platId: "", dbPlatId:"", catalog: "", name:"", comment:"", alias: ""},
|
||||
row: {tableid: "", platid: "", dbid:"", catalog: "", tablename:"", comment:"", alias: ""},
|
||||
filter: {db: "", catalog: "", name: ""},//tableList 过滤条件
|
||||
|
||||
upsql: "", // 需要执行的 sql语句
|
||||
@@ -250,7 +250,7 @@
|
||||
},
|
||||
watch: {
|
||||
metaTable(v) {
|
||||
this.name = v.name
|
||||
this.tablename = v.tablename
|
||||
this.alias = v.alias
|
||||
},
|
||||
status: function (v) {
|
||||
@@ -298,11 +298,11 @@
|
||||
handler: function (row) {
|
||||
//console.log(vm.metaTable.name, " -> ",v.name)
|
||||
vm.upsql = ''
|
||||
if (vm.metaTable.name !== row.name) {
|
||||
vm.upsql += 'RENAME TABLE `{0}`.`{1}` TO `{2}`.`{3}`;\n'.format(vm.metaTable.catalog, vm.metaTable.name, vm.metaTable.catalog, row.name)
|
||||
if (vm.metaTable.tablename !== row.tablename) {
|
||||
vm.upsql += 'RENAME TABLE `{0}`.`{1}` TO `{2}`.`{3}`;\n'.format(vm.metaTable.catalog, vm.metaTable.tablename, vm.metaTable.catalog, row.tablename)
|
||||
}
|
||||
if (vm.metaTable.comment !== row.comment) {
|
||||
vm.upsql += 'ALTER TABLE `{0}`.`{1}` COMMENT=\'{2}\';\n'.format(vm.metaTable.catalog, vm.metaTable.name, row.comment)
|
||||
vm.upsql += 'ALTER TABLE `{0}`.`{1}` COMMENT=\'{2}\';\n'.format(vm.metaTable.catalog, vm.metaTable.tablename, row.comment)
|
||||
}
|
||||
},
|
||||
deep: true
|
||||
@@ -320,7 +320,7 @@
|
||||
deep: true
|
||||
},
|
||||
meta: function (v) {
|
||||
this.row = {key:v.key, dbPlatId: v.dbPlatId, catalog: v.catalog, name:v.name, comment:v.comment, alias: v.alias};
|
||||
this.row = {tableid:v.tableid, dbid: v.dbid, catalog: v.catalog, tablename:v.tablename, comment:v.comment, alias: v.alias};
|
||||
let oldItems = v['items'] || []
|
||||
this.oldItems = JSON.parse(JSON.stringify(oldItems))
|
||||
},
|
||||
@@ -347,7 +347,7 @@
|
||||
catalogs: function() {
|
||||
let dbPlats = this.dbPlats;
|
||||
for (i in dbPlats) {
|
||||
if (dbPlats[i].key == this.row.dbPlatId) {
|
||||
if (dbPlats[i].dbid === this.row.dbid) {
|
||||
return dbPlats[i]["catalogs"]
|
||||
}
|
||||
}
|
||||
@@ -482,11 +482,11 @@
|
||||
},
|
||||
dealTableLabel(table) {
|
||||
// (${table.linkCount})
|
||||
return `${table.name} [${table.comment}]`
|
||||
return `${table.tablename} [${table.comment}]`
|
||||
},
|
||||
dealFilter(table) {
|
||||
// table.name 中是否包含 thiss.filter 的值
|
||||
if (table.name.indexOf(this.filter) > -1 || table.comment.indexOf(this.filter) > -1) {
|
||||
if (table.tablename.indexOf(this.filter) > -1 || table.comment.indexOf(this.filter) > -1) {
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
<div class="form-group">
|
||||
<label for="queryId" class="col-sm-2 required">平台名称</label>
|
||||
<div class="col-md-6 col-sm-10">
|
||||
<input v-model="row.name" class="form-control" id="queryId" placeholder="请输入 平台名称">
|
||||
<input v-model="row.dbname" class="form-control" id="queryId" placeholder="请输入 平台名称">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
@@ -151,7 +151,7 @@
|
||||
cfg: {
|
||||
title: "数据中心 管理",
|
||||
cols: [
|
||||
{col: "name", label: "数据平台名称"},
|
||||
{col: "dbname", label: "数据平台名称"},
|
||||
{col: "url", label: "数据平台连接地址"},
|
||||
{col: "user", label: "用户"},
|
||||
{col: "remark", label: "备注"},
|
||||
@@ -222,7 +222,7 @@
|
||||
loadCatalogs: function () {
|
||||
vm.catalogs = [];
|
||||
//let [cate, url, user, pwd] = this.row
|
||||
let dbAccount = {key: '',cate:'', url:'', user:'', pwd:''}
|
||||
let dbAccount = {dbid: '',cate:'', url:'', user:'', pwd:''}
|
||||
for (let key in dbAccount) {
|
||||
dbAccount[key] = this.row[key]
|
||||
}
|
||||
@@ -233,7 +233,7 @@
|
||||
dbPulse: function (row) {
|
||||
/*row["check"] = true;
|
||||
$.getJSON("/_db/pulse", {
|
||||
dbPlatId: row._id
|
||||
dbid: row._id
|
||||
}, function (json) {
|
||||
row["pulse"] = json.body;
|
||||
row["check"] = false;
|
||||
|
||||
@@ -48,13 +48,13 @@
|
||||
<div class="form-group">
|
||||
<label for="queryId" class="col-md-2 required">平台名称</label>
|
||||
<div class="col-md-8">
|
||||
<input v-model="row.name" class="form-control" id="queryId" placeholder="请输入 平台名称">
|
||||
<input v-model="row.platname" class="form-control" id="queryId" placeholder="请输入 平台名称">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="token" class="col-md-2 required">平台 Token</label>
|
||||
<div class="col-md-8 col-sm-10">
|
||||
<input v-model="row.token" class="form-control" id="token" placeholder="请输入 Token">
|
||||
<input v-model="row.plattoken" class="form-control" id="token" placeholder="请输入 Token">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -84,8 +84,8 @@
|
||||
cfg: {
|
||||
title: "业务平台 管理",
|
||||
cols: [
|
||||
{col: "name", label: "业务名称"},
|
||||
{col: "token", label: "Token"},
|
||||
{col: "platname", label: "业务名称"},
|
||||
{col: "plattoken", label: "Token"},
|
||||
{col: "remark", label: "说明"},
|
||||
{col: "status", label: "状态", fmt: function (v) {
|
||||
return {"0":"未启用", "1":"启用", "-1":"删除"}[v] || "";
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
<div class="form-group">
|
||||
<label for="para" class="col-sm-2 required">数据平台</label>
|
||||
<div class="col-md-6">
|
||||
<select v-model="row.dbplatid" class="form-control">
|
||||
<select v-model="row.dbid" class="form-control">
|
||||
<option></option>
|
||||
<option v-for="item in dbPlats" :value="item.key" v-text="item.name"></option>
|
||||
</select>
|
||||
@@ -87,7 +87,7 @@
|
||||
catalogs: function () {
|
||||
let dbPlats = this.dbPlats;
|
||||
for (i in dbPlats) {
|
||||
if (dbPlats[i].key == this.row.dbplatid) {
|
||||
if (dbPlats[i].key == this.row.dbid) {
|
||||
return dbPlats[i]["catalogs"]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -128,7 +128,7 @@
|
||||
<tr>
|
||||
<th>数据平台</th>
|
||||
<td>
|
||||
<select v-model="row.dbplatid" class="form-control">
|
||||
<select v-model="row.dbid" class="form-control">
|
||||
<option v-for="item in dbPlats" :value="item.key" v-text="item.name"></option>
|
||||
</select>
|
||||
</td>
|
||||
|
||||
@@ -46,10 +46,10 @@ var red = {
|
||||
location.href = "/user/login.html";
|
||||
}, 2000);
|
||||
}*/
|
||||
return plat["token"];
|
||||
return plat["plattoken"];
|
||||
},
|
||||
getJSON: function (url, params = {}, callback) {
|
||||
params["platToken"] = red.getPlatToken()
|
||||
params["plattoken"] = red.getPlatToken()
|
||||
axios.get(url, {params}).then(res => {
|
||||
let data = res.data || {}
|
||||
red.loginCheck(data)
|
||||
@@ -124,8 +124,8 @@ var red = {
|
||||
})
|
||||
},
|
||||
getX(url, params = {}) {
|
||||
if (!params['platToken'])
|
||||
params['platToken'] = red.getPlatToken()
|
||||
if (!params['plattoken'])
|
||||
params['plattoken'] = red.getPlatToken()
|
||||
return new Promise(resolve => {
|
||||
axios.get(url, params).then(res => {
|
||||
let data = res.data || {}
|
||||
@@ -146,8 +146,8 @@ var red = {
|
||||
})
|
||||
},
|
||||
postX(url, params = {}) {
|
||||
if (!params['platToken'])
|
||||
params['platToken'] = red.getPlatToken()
|
||||
if (!params['plattoken'])
|
||||
params['plattoken'] = red.getPlatToken()
|
||||
return new Promise(resolve => {
|
||||
axios({
|
||||
url,
|
||||
@@ -178,7 +178,7 @@ var red = {
|
||||
})
|
||||
},
|
||||
post: function(url, params = {}, callback) {
|
||||
//params['platToken'] = red.getPlatToken()
|
||||
//params['plattoken'] = red.getPlatToken()
|
||||
axios.post(url, params).then(res => {
|
||||
/*let data = red.loginCheck(res.data)
|
||||
if (data && data.code == -1) {
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
<label for="username" class="col-md-3">业务平台</label>
|
||||
<div class="col-md-8">
|
||||
<select v-model="sysPlat" class="form-control">
|
||||
<option v-for="item in sysPlats" :value="item" v-text="item.name"></option>
|
||||
<option v-for="item in sysPlats" :value="item" v-text="item.platname"></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
@@ -88,7 +88,7 @@
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<!--<button type="button" class="btn btn-default" data-dismiss="modal">取消</button>-->
|
||||
<button @click="goIndex()" type="button" class="btn btn-primary btn-block">确定选择 <span v-text="[sysPlat.name]"></span></button>
|
||||
<button @click="goIndex()" type="button" class="btn btn-primary btn-block">确定选择 <span v-text="[sysPlat.platname]"></span></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -2,6 +2,7 @@ package dev.zhub.mk.qtask;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import net.tccn.base.BaseEntity;
|
||||
import net.tccn.base.Kv;
|
||||
import net.tccn.base.Utils;
|
||||
import net.tccn.qtask.Task;
|
||||
@@ -16,7 +17,7 @@ import java.util.Map;
|
||||
@Getter
|
||||
@Setter
|
||||
@Entity
|
||||
public class QTask {
|
||||
public class QTask extends BaseEntity {
|
||||
|
||||
@Id
|
||||
@Comment("[记录ID]")
|
||||
@@ -29,7 +30,7 @@ public class QTask {
|
||||
private String catalog = "";
|
||||
|
||||
@Comment("[数据平台ID]")
|
||||
private String dbplatid = "";
|
||||
private int dbid;
|
||||
|
||||
@Comment("[标识名称KEY]")
|
||||
// @Column(updatable = false)
|
||||
@@ -37,7 +38,7 @@ public class QTask {
|
||||
|
||||
@Comment("[所属平台ID]")
|
||||
@Column(updatable = false)
|
||||
private String platid;
|
||||
private Integer platid;
|
||||
|
||||
@Comment("[业务名称]")
|
||||
private String title = "";
|
||||
@@ -57,7 +58,7 @@ public class QTask {
|
||||
task.setName(name);
|
||||
task.setTitle(title);
|
||||
task.setContent(content);
|
||||
task.setDbPlatId(dbplatid);
|
||||
task.setDbid(dbid);
|
||||
task.setCatalog(catalog);
|
||||
|
||||
Kv _para = Kv.of();
|
||||
|
||||
@@ -2,7 +2,6 @@ package dev.zhub.mk.qtask;
|
||||
|
||||
import net.tccn.base.BaseService;
|
||||
import net.tccn.base.Utils;
|
||||
import org.redkale.convert.json.JsonConvert;
|
||||
import org.redkale.net.http.RestHeader;
|
||||
import org.redkale.net.http.RestMapping;
|
||||
import org.redkale.net.http.RestService;
|
||||
@@ -12,7 +11,6 @@ import org.redkale.source.Flipper;
|
||||
import org.redkale.util.AnyValue;
|
||||
import org.redkale.util.Sheet;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@RestService(name = "qtask", comment = "qtask服务")
|
||||
|
||||
5
src/main/java/net/tccn/base/BaseEntity.java
Normal file
5
src/main/java/net/tccn/base/BaseEntity.java
Normal file
@@ -0,0 +1,5 @@
|
||||
package net.tccn.base;
|
||||
|
||||
public class BaseEntity {
|
||||
|
||||
}
|
||||
@@ -77,7 +77,7 @@ public class BaseService implements Service {
|
||||
return t;
|
||||
}
|
||||
|
||||
protected String platId(String token) {
|
||||
protected Integer platId(String token) {
|
||||
return MetaKit.getPlatId(token);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package net.tccn.base;
|
||||
|
||||
import net.tccn.user.MetaUser;
|
||||
import net.tccn.user.MUser;
|
||||
import net.tccn.user.UserService;
|
||||
import org.redkale.net.http.HttpRequest;
|
||||
import org.redkale.net.http.HttpResponse;
|
||||
@@ -45,12 +45,12 @@ public class BaseServlet extends HttpServlet {
|
||||
}
|
||||
|
||||
if (sessionid != null) {
|
||||
MetaUser user = userService.current(sessionid);
|
||||
MUser user = userService.current(sessionid);
|
||||
/*request.setCurrentUserSupplier(() -> {
|
||||
return user;
|
||||
});*/
|
||||
if (user != null) {
|
||||
request.setCurrentUserid(user.getId());
|
||||
request.setCurrentUserid(user.getUserid());
|
||||
}
|
||||
}
|
||||
String uri = request.getRequestURI();
|
||||
|
||||
@@ -2,28 +2,24 @@ package net.tccn.base;
|
||||
|
||||
import dev.zhub.mk.qtask.QTask;
|
||||
import lombok.Getter;
|
||||
import net.tccn.base.arango.Doc;
|
||||
import net.tccn.base.dbq.jdbc.api.DbAccount;
|
||||
import net.tccn.base.dbq.jdbc.api.DbKit;
|
||||
import net.tccn.base.dbq.table.Field;
|
||||
import net.tccn.dict.Dict;
|
||||
import net.tccn.meta.*;
|
||||
import net.tccn.plat.MetaDb;
|
||||
import net.tccn.plat.MetaPlat;
|
||||
import net.tccn.plat.MPlat;
|
||||
import net.tccn.qtask.TaskKit;
|
||||
import net.tccn.user.MetaUser;
|
||||
import net.tccn.user.MUser;
|
||||
import org.redkale.annotation.Resource;
|
||||
import org.redkale.convert.json.JsonConvert;
|
||||
import org.redkale.service.AbstractService;
|
||||
import org.redkale.source.DataJdbcSource;
|
||||
import org.redkale.source.DataSource;
|
||||
import org.redkale.util.AnyValue;
|
||||
import org.redkale.util.Comment;
|
||||
import org.redkale.util.TypeToken;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.function.BiFunction;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -36,17 +32,17 @@ import static java.util.Arrays.asList;
|
||||
public class MetaKit extends AbstractService {
|
||||
//基础数据缓存
|
||||
@Getter
|
||||
private static List<MetaTable> metaTables;
|
||||
private static List<MTable> mTables;
|
||||
@Getter
|
||||
private static List<MetaLink> metaLinks;
|
||||
private static List<MLink> metaLinks;
|
||||
@Getter
|
||||
private static List<MetaService> metaServices;
|
||||
private static List<MService> metaServices;
|
||||
@Getter
|
||||
private static List<DbAccount> dbPlats;
|
||||
@Getter
|
||||
private static List<MetaPlat> sysPlats;
|
||||
private static List<MPlat> mPlats;
|
||||
@Getter
|
||||
private static List<MetaUser> users;
|
||||
private static List<MUser> users;
|
||||
@Getter
|
||||
private static List<QTask> qTasks;
|
||||
@Getter
|
||||
@@ -60,27 +56,83 @@ public class MetaKit extends AbstractService {
|
||||
protected DataSource metaSource;
|
||||
|
||||
public <T> void reloadxAsync(Class<T> clazz) {
|
||||
if (clazz == QTask.class) {
|
||||
qTasks = metaSource.queryList(QTask.class);
|
||||
TaskKit.init(qTasks);
|
||||
}
|
||||
CompletableFuture.runAsync(() -> {
|
||||
if (clazz == QTask.class) {
|
||||
qTasks = metaSource.queryList(QTask.class);
|
||||
TaskKit.init(qTasks);
|
||||
} else if (clazz == MPlat.class) mPlats = metaSource.queryList(MPlat.class);
|
||||
else if (clazz == DbAccount.class) dbPlats = metaSource.queryList(DbAccount.class);
|
||||
else if (clazz == MTable.class) mTables = metaSource.queryList(MTable.class);
|
||||
else if (clazz == MService.class) metaServices = metaSource.queryList(MService.class);
|
||||
else if (clazz == MLink.class) metaLinks = metaSource.queryList(MLink.class);
|
||||
else if (clazz == Dict.class) dicts = metaSource.queryList(Dict.class);
|
||||
/*if (clazz == MUser.class) {
|
||||
users = metaSource.queryList(MUser.class);
|
||||
}*/
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(AnyValue config) {
|
||||
reloadxAsync(QTask.class);
|
||||
reloadxAsync(MPlat.class);
|
||||
reloadxAsync(DbAccount.class);
|
||||
reloadxAsync(MService.class);
|
||||
reloadxAsync(MTable.class);
|
||||
reloadxAsync(MLink.class);
|
||||
// reloadxAsync(Dict.class);
|
||||
|
||||
|
||||
/*metaTables.forEach(x -> {
|
||||
// 写入到 MTable
|
||||
MTable mTable = new MTable();
|
||||
mTable.setTableid(Integer.parseInt(x.getKey()));
|
||||
mTable.setCatalog(x.getCatalog());
|
||||
mTable.setDbid(x.getDbid());
|
||||
mTable.setAlias(x.getAlias());
|
||||
mTable.setTablename(x.getName());
|
||||
mTable.setPlatid(x.getPlatid());
|
||||
mTable.setComment(x.getComment());
|
||||
mTable.setItems(x.getItems());
|
||||
|
||||
metaSource.insertAsync(mTable);
|
||||
});*/
|
||||
/*metaServices.forEach(x -> {
|
||||
// 写入到 MService
|
||||
MService service = new MService();
|
||||
service.setServid(Integer.parseInt(x.getKey()));
|
||||
service.setName(x.getName());
|
||||
service.setTablealias(x.getTable());
|
||||
service.setShows(x.getShows());
|
||||
service.setExports(x.getExports());
|
||||
service.setEdits(x.getEdits());
|
||||
service.setDetails(x.getDetails());
|
||||
service.setFilters(x.getFilters());
|
||||
service.setComment(x.getComment());
|
||||
//service.setDels(x.getDels());
|
||||
service.setPlatid(x.getPlatid());
|
||||
|
||||
metaSource.insert(service);
|
||||
});*/
|
||||
/*metaLinks.forEach(x -> {
|
||||
MxLink link = new MxLink();
|
||||
link.setLinkid(Integer.parseInt(x.getKey()));
|
||||
link.setTables(x.getTables());
|
||||
link.setLinks(x.getLink());
|
||||
metaSource.insert(link);
|
||||
});*/
|
||||
}
|
||||
|
||||
// -----------------------------------
|
||||
public static void init() {
|
||||
reload(MetaTable.class);
|
||||
reload(MetaLink.class);
|
||||
reload(MetaService.class);
|
||||
reload(DbAccount.class);
|
||||
reload(MetaPlat.class);
|
||||
reload(MetaUser.class);
|
||||
// reload(MetaTable.class);
|
||||
// reload(MLink.class);
|
||||
// reload(MetaService.class);
|
||||
// reload(DbAccount.class);
|
||||
// reload(MetaPlat.class);
|
||||
// reload(MetaUser.class);
|
||||
// reload(DbTask.class);
|
||||
reload(Dict.class);
|
||||
// reload(Dict.class);
|
||||
|
||||
/*
|
||||
同步 本地文件配置数据到 数据库
|
||||
@@ -93,104 +145,110 @@ public class MetaKit extends AbstractService {
|
||||
|
||||
}
|
||||
|
||||
public static <T extends Doc> void reload(Class<T> clazz) {
|
||||
/*public static <T extends Doc> void reload(Class<T> clazz) {
|
||||
reload(clazz, null);
|
||||
}
|
||||
|
||||
public static <T extends Doc> void reload(T t) {
|
||||
reload(t.getClass(), t.getKey());
|
||||
}
|
||||
}*/
|
||||
|
||||
public static void main(String[] args) throws IOException {
|
||||
/*public static void main(String[] args) throws IOException {
|
||||
Type type = new TypeToken<List<DbAccount>>() {
|
||||
}.getType();
|
||||
dbPlats = FileKit.readAs(new File("D:\\Java\\meta-kit\\conf\\data\\DbAccount.json"), type);
|
||||
//convert.convertFrom(type,"[{\"catalogs\":[\"test\"],\"cate\":\"mysql\",\"id\":\"db_plat/67275393\",\"key\":\"67275393\",\"name\":\"ylz测试\",\"url\":\"jdbc:mysql://119.3.106.117:3306\",\"user\":\"root\"},{\"catalogs\":[\"v09x_platf_core\"],\"cate\":\"mysql\",\"id\":\"db_plat/67275392\",\"key\":\"67275392\",\"name\":\"platf_qc\",\"url\":\"jdbc:mysql://121.196.17.55:6063\",\"user\":\"root\"},{\"catalogs\":[\"official_core\",\"official_ipci\",\"v09x_platf_core\",\"platf_quest\",\"platf_pay\",\"platf_mall\",\"platf_oth\",\"platf_im\",\"z_core\"],\"cate\":\"mysql\",\"id\":\"db_plat/67275391\",\"key\":\"67275391\",\"name\":\"platf_pro\",\"url\":\"jdbc:mysql://122.112.180.156:6033\",\"user\":\"guest\"},{\"catalogs\":[\"db_diamond\"],\"id\":\"db_plat/53533152\",\"key\":\"53533152\",\"name\":\"钻石项目\",\"url\":\"jdbc:mysql://192.168.201.51:3306/db_diamond?characterEncoding=utf-8&autoReconnect=true&serverTimezone=Asia/Shanghai&useSSL=false\",\"user\":\"root\"},{\"catalogs\":[\"db_diamond\"],\"id\":\"db_plat/53532996\",\"key\":\"53532996\",\"name\":\"钻石项目\",\"url\":\"jdbc:mysql://192.168.201.51:3306/db_diamond?characterEncoding=utf-8&autoReconnect=true&serverTimezone=Asia/Shanghai&useSSL=false\",\"user\":\"root\"},{\"catalogs\":[\"platf_im\",\"v09x_platf_core\",\"platf_oss\",\"platf_quest\",\"platf_oth\",\"sport_oss\",\"zhub\",\"cpg_core\",\"z_core\",\"z_config\",\"z_im\",\"z_mall\",\"z_quest\",\"z_oss\",\"z_oth\",\"cmt_oss\",\"cmt_depot_core\",\"cmt_core\",\"sport_core\"],\"cate\":\"mysql\",\"id\":\"db_plat/52481174\",\"key\":\"52481174\",\"name\":\"platf_dev\",\"url\":\"jdbc:mysql://47.111.150.118:6063\",\"user\":\"root\"},{\"catalogs\":[],\"cate\":\"mysql\",\"id\":\"db_plat/4375768\",\"key\":\"4375768\",\"name\":\"mysql数据库\",\"url\":\"jdbc:mysql://192.168.50.124:3306/mytest?characterEncoding=utf-8&autoReconnect=true&useSSL=false&connectTimeout=3000\",\"user\":\"root\"},{\"catalogs\":[],\"cate\":\"mysql\",\"id\":\"db_plat/4267761\",\"key\":\"4267761\",\"name\":\"测试\",\"remark\":\"sadfdsaf\",\"url\":\"123&connectTimeout=5000\",\"user\":\"root\"},{\"catalogs\":[\"db_art\",\"db_jsons_bbs\",\"db_mater\",\"db_redbbs\",\"jfly\",\"redbbs_dev\",\"meta_kit_test\"],\"cate\":\"mysql\",\"id\":\"db_plat/3321254\",\"key\":\"3321254\",\"name\":\"测试-DB【可用】\",\"url\":\"jdbc:mysql://120.24.230.60:3306/redbbs?characterEncoding=utf-8&autoReconnect=true&useSSL=false&connectTimeout=3000\",\"user\":\"guest\"},{\"catalogs\":[\"blockchain\",\"gxbii_dev\",\"gxbii_all\",\"gxbii_cmd\",\"fzexp\",\"db_fz\",\"a_test\",\"meta_xx\",\"ipsm_v4\"],\"cate\":\"mysql\",\"id\":\"db_plat/3305916\",\"key\":\"3305916\",\"name\":\"测试库-11测试库【可用】\",\"remark\":\"描述\",\"url\":\"jdbc:mysql://192.168.202.11:3306/gxbii_dev?characterEncoding=utf-8&autoReconnect=true&connectTimeout=3000\",\"user\":\"root\"},{\"catalogs\":[\"ipsm_v4\"],\"cate\":\"mysql\",\"id\":\"db_plat/32822760\",\"key\":\"32822760\",\"name\":\"ceshi1111\",\"url\":\"jdbc:mysql://192.168.202.11:3306/ipsm_v4?characterEncoding=utf-8&autoReconnect=true\",\"user\":\"root\"},{\"catalogs\":[\"zbd_v1\"],\"cate\":\"mysql\",\"id\":\"db_plat/27166384\",\"key\":\"27166384\",\"name\":\"测试1\",\"url\":\"jdbc:mysql://192.168.50.124:3306/mytest?characterEncoding=utf-8&autoReconnect=true&useSSL=false&connectTimeout=3000\",\"user\":\"root\"},{\"catalogs\":[],\"cate\":\"mysql\",\"id\":\"db_plat/25668979\",\"key\":\"25668979\",\"name\":\"测试Mysql数据库\",\"url\":\"jdbc:mysql://558cfc37a10ef.sh.cdb.myqcloud.com:3817/demo?autoReconnect=true\",\"user\":\"cdb_outerroot\"},{\"catalogs\":[],\"cate\":\"localApi\",\"id\":\"db_plat/23090860\",\"key\":\"23090860\",\"name\":\"平台本地API\"},{\"catalogs\":[],\"cate\":\"http\",\"id\":\"db_plat/21561306\",\"key\":\"21561306\",\"name\":\"http地址调用\",\"url\":\"http://127.0.0.1/plat/db_list\"},{\"catalogs\":[\"tc\",\"tc_bbs\",\"redbbs\",\"redoss\",\"material\",\"keeper_dev\",\"art123\",\"keeper\",\"db_party\"],\"cate\":\"mysql\",\"id\":\"db_plat/21558770\",\"key\":\"21558770\",\"name\":\"TX-cloud\",\"url\":\"jdbc:mysql://558cfc37a10ef.sh.cdb.myqcloud.com:3817/demo?autoReconnect=true\",\"user\":\"cdb_outerroot\"},{\"catalogs\":[\"feature_test\",\"intelligence\",\"ma\",\"mysql\",\"ma1\",\"ma2\",\"maintenance\",\"zhaobiao\",\"zhaobiao2\"],\"cate\":\"mysql\",\"id\":\"db_plat/21449811\",\"key\":\"21449811\",\"name\":\"物联网-jj【可用】\",\"url\":\"jdbc:mysql://192.168.50.21:3306/wlw?characterEncoding=utf-8&autoReconnect=true&serverTimezone=Asia/Shanghai\",\"user\":\"root\"},{\"catalogs\":[],\"id\":\"db_plat/20982257\",\"key\":\"20982257\",\"name\":\"数据平台abc\",\"remark\":\"sadfdsaf\",\"url\":\"123&connectTimeout=5000\",\"user\":\"root\"}]");
|
||||
System.out.println(dbPlats.size());
|
||||
}
|
||||
}*/
|
||||
|
||||
public static <T extends Doc> void reload(Class<T> clazz, String key) {
|
||||
/*public static <T extends Doc> void reload(Class<T> clazz, String key) {
|
||||
try {
|
||||
File file = new File(String.format("%s%s.json", dataPath, clazz.getSimpleName()));
|
||||
if ("file".equals(dcate)) {
|
||||
if (MetaTable.class == clazz) {
|
||||
*//*if (MetaTable.class == clazz) {
|
||||
Type type = new TypeToken<List<MetaTable>>() {
|
||||
}.getType();
|
||||
metaTables = FileKit.readAs(file, type);
|
||||
} else if (MetaLink.class == clazz) {
|
||||
Type type = new TypeToken<List<MetaLink>>() {
|
||||
} else*//*
|
||||
*//*if (MLink.class == clazz) {
|
||||
Type type = new TypeToken<List<MLink>>() {
|
||||
}.getType();
|
||||
metaLinks = FileKit.readAs(file, type);;
|
||||
} else if (MetaService.class == clazz) {
|
||||
metaLinks = FileKit.readAs(file, type);
|
||||
}*//* *//*else if (MetaService.class == clazz) {
|
||||
Type type = new TypeToken<List<MetaService>>() {
|
||||
}.getType();
|
||||
metaServices = FileKit.readAs(file, type);;
|
||||
} else if (DbAccount.class == clazz) {
|
||||
metaServices = FileKit.readAs(file, type);
|
||||
}*//* *//*else if (DbAccount.class == clazz) {
|
||||
Type type = new TypeToken<List<DbAccount>>() {
|
||||
}.getType();
|
||||
dbPlats = FileKit.readAs(file, type);
|
||||
} else if (MetaDb.class == clazz) {
|
||||
}*//* *//*else if (MetaDb.class == clazz) {
|
||||
Type type = new TypeToken<List<DbAccount>>() {
|
||||
}.getType();
|
||||
dbPlats = FileKit.readAs(file, type);;
|
||||
} else if (MetaPlat.class == clazz) {
|
||||
}*//* *//*else if (MetaPlat.class == clazz) {
|
||||
Type type = new TypeToken<List<MetaPlat>>() {
|
||||
}.getType();
|
||||
sysPlats = FileKit.readAs(file, type);;
|
||||
} else if (MetaUser.class == clazz) {
|
||||
mPlats = FileKit.readAs(file, type);;
|
||||
} *//* *//*else if (MetaUser.class == clazz) {
|
||||
Type type = new TypeToken<List<MetaUser>>() {
|
||||
}.getType();
|
||||
users = FileKit.readAs(file, type);;
|
||||
} /*else if (DbTask.class == clazz) {
|
||||
}*//* *//*else if (DbTask.class == clazz) {
|
||||
Type type = new TypeToken<List<DbTask>>() {
|
||||
}.getType();
|
||||
taskEntities = FileKit.readAs(file, type);;
|
||||
} */ else if (Dict.class == clazz) {
|
||||
} *//* *//*else if (Dict.class == clazz) {
|
||||
Type type = new TypeToken<List<Dict>>() {
|
||||
}.getType();
|
||||
dicts = FileKit.readAs(file, type);;
|
||||
}
|
||||
dicts = FileKit.readAs(file, type);
|
||||
}*//*
|
||||
} else {
|
||||
if (MetaTable.class == clazz) metaTables = MetaTable.dao.find();
|
||||
else if (MetaLink.class == clazz) metaLinks = MetaLink.dao.find();
|
||||
else if (MetaService.class == clazz) metaServices = MetaService.dao.find();
|
||||
else if (DbAccount.class == clazz) dbPlats = DbAccount.dao.find();
|
||||
else if (MetaDb.class == clazz) dbPlats = DbAccount.dao.find();
|
||||
else if (MetaPlat.class == clazz) sysPlats = MetaPlat.dao.find();
|
||||
else if (MetaUser.class == clazz) users = MetaUser.dao.find();
|
||||
/*else if (DbTask.class == clazz) {
|
||||
*//*if (MetaTable.class == clazz) {
|
||||
metaTables = MetaTable.dao.find();
|
||||
}
|
||||
else*//*
|
||||
//if (MLink.class == clazz) metaLinks = MLink.dao.find();
|
||||
//else if (MetaService.class == clazz) metaServices = MetaService.dao.find();
|
||||
//else if (DbAccount.class == clazz) dbPlats = DbAccount.dao.find();
|
||||
//else if (MetaDb.class == clazz) dbPlats = DbAccount.dao.find();
|
||||
//else if (MetaPlat.class == clazz) mPlats = MetaPlat.dao.find();
|
||||
//else if (MetaUser.class == clazz) users = MetaUser.dao.find();
|
||||
*//*else if (DbTask.class == clazz) {
|
||||
// taskEntities = DbTask.dao.find();
|
||||
// TaskKit.init();
|
||||
}*/
|
||||
else if (Dict.class == clazz) {
|
||||
}*//*
|
||||
//else
|
||||
*//*if (Dict.class == clazz) {
|
||||
dicts = Dict.dao.find();
|
||||
}
|
||||
}*//*
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
public static void cacheSave() {
|
||||
cacheSave(MetaTable.class);
|
||||
cacheSave(MetaLink.class);
|
||||
cacheSave(MetaService.class);
|
||||
cacheSave(DbAccount.class);
|
||||
cacheSave(MetaPlat.class);
|
||||
cacheSave(MetaUser.class);
|
||||
/*public static void cacheSave() {
|
||||
//cacheSave(MetaTable.class);
|
||||
//cacheSave(MLink.class);
|
||||
//cacheSave(MService.class);
|
||||
//cacheSave(DbAccount.class);
|
||||
//cacheSave(MetaPlat.class);
|
||||
//cacheSave(MetaUser.class);
|
||||
//cacheSave(DbTask.class);
|
||||
cacheSave(Dict.class);
|
||||
}
|
||||
//cacheSave(Dict.class);
|
||||
}*/
|
||||
|
||||
private static void cacheSave(Class clazz) {
|
||||
/*private static void cacheSave(Class clazz) {
|
||||
List list = null;
|
||||
if (MetaTable.class == clazz) list = metaTables;
|
||||
else if (MetaLink.class == clazz) list = metaLinks;
|
||||
else if (MetaService.class == clazz) list = metaServices;
|
||||
else if (DbAccount.class == clazz) list = dbPlats;
|
||||
else if (MetaPlat.class == clazz) list = sysPlats;
|
||||
else if (MetaUser.class == clazz) list = users;
|
||||
*//*if (MetaTable.class == clazz) list = metaTables;
|
||||
else*//*
|
||||
if (MLink.class == clazz) list = metaLinks;
|
||||
else if (MService.class == clazz) list = metaServices;
|
||||
//else if (DbAccount.class == clazz) list = dbPlats;
|
||||
//else if (MetaPlat.class == clazz) list = mPlats;
|
||||
//else if (MetaUser.class == clazz) list = users;
|
||||
// else if (DbTask.class == clazz) list = taskEntities;
|
||||
else if (Dict.class == clazz) list = dicts;
|
||||
|
||||
@@ -199,7 +257,7 @@ public class MetaKit extends AbstractService {
|
||||
File file = new File(String.format("%s%s.json", dataPath, list.get(0).getClass().getSimpleName()));
|
||||
file.getParentFile().mkdirs();
|
||||
FileKit.strToFile(MetaKit.convert.convertTo(list), file);
|
||||
}
|
||||
}*/
|
||||
|
||||
/**
|
||||
* 得到业务主表
|
||||
@@ -208,20 +266,21 @@ public class MetaKit extends AbstractService {
|
||||
* @param token
|
||||
* @return
|
||||
*/
|
||||
public static MetaTable getMainTable(String serviceName, String token) {
|
||||
MetaService metaService = MetaKit.getMetaService(serviceName, token);
|
||||
return MetaKit.getMetaTableByAlias(metaService.getTable());
|
||||
public static MTable getMainTable(String serviceName, String token) {
|
||||
MService metaService = MetaKit.getMetaService(serviceName, token);
|
||||
return MetaKit.getMetaTableByAlias(metaService.getTablealias());
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过平台token 得到平台字典数据
|
||||
*
|
||||
* @param platToken
|
||||
* @param plattoken
|
||||
*/
|
||||
public static Map<String, List<Dict>> getDictData(String platToken) {
|
||||
String platId = MetaKit.getPlatId(platToken);
|
||||
Map<String, List<Dict>> dicts = MetaKit.dicts.stream().filter(x -> x.getSysPlatId().equals(platId)).collect(Collectors.groupingBy(Dict::getType));
|
||||
return dicts;
|
||||
public static Map<String, List<Dict>> getDictData(String plattoken) {
|
||||
/*Integer platId = MetaKit.getPlatId(plattoken);
|
||||
Map<String, List<Dict>> dicts = MetaKit.dicts.stream().filter(x -> x.getPlatid() == (int) platId).collect(Collectors.groupingBy(Dict::getType));
|
||||
return dicts;*/
|
||||
return new HashMap<>();
|
||||
}
|
||||
|
||||
// -----------------------------------
|
||||
@@ -235,28 +294,28 @@ public class MetaKit extends AbstractService {
|
||||
* @param alias
|
||||
* @return
|
||||
*/
|
||||
public static MetaTable getMetaTableByAlias(String alias) {
|
||||
Optional<MetaTable> table = metaTables.stream().filter(x -> x.getAlias().equals(alias)).findAny();
|
||||
public static MTable getMetaTableByAlias(String alias) {
|
||||
Optional<MTable> table = mTables.stream().filter(x -> x.getAlias().equals(alias)).findAny();
|
||||
return table.orElse(null);
|
||||
}
|
||||
|
||||
public static MetaTable getMetaTable(String name, String token) {
|
||||
Optional<MetaTable> any = getMetaTables().stream().filter(x -> {
|
||||
return x.getName().equals(name) && x.getSysPlatId().equals(getPlatId(token));
|
||||
public static MTable getMetaTable(String name, String token) {
|
||||
Optional<MTable> any = getMTables().stream().filter(x -> {
|
||||
return x.getTablename().equals(name) && x.getPlatid().equals(getPlatId(token));
|
||||
}).findAny();
|
||||
|
||||
return any.get();
|
||||
}
|
||||
|
||||
public static MetaService getMetaService(String name, String token) {
|
||||
Optional<MetaService> service = metaServices.stream()
|
||||
.filter(x -> x.getName().equals(name) && x.getSysPlatId().equals(getPlatId(token)))
|
||||
public static MService getMetaService(String name, String token) {
|
||||
Optional<MService> service = metaServices.stream()
|
||||
.filter(x -> x.getName().equals(name) && x.getPlatid().equals(getPlatId(token)))
|
||||
.findAny();
|
||||
return service.orElse(null);
|
||||
}
|
||||
|
||||
//字段特征排序
|
||||
public static BiFunction<MetaTable, String[], MetaTable> sortItem = (t, arr) -> {
|
||||
public static BiFunction<MTable, String[], MTable> sortItem = (t, arr) -> {
|
||||
List<Field> items = t.getItems();
|
||||
|
||||
//x 是跨越值
|
||||
@@ -283,8 +342,8 @@ public class MetaKit extends AbstractService {
|
||||
};
|
||||
|
||||
public static Map cfg(String name, String token) {
|
||||
MetaService metaService = getMetaService(name, token);
|
||||
Kv<String, MetaTable> metaTables = getMetaTables(metaService, false);
|
||||
MService metaService = getMetaService(name, token);
|
||||
Kv<String, MTable> metaTables = getMTables(metaService, false);
|
||||
|
||||
List<Map<String, String>> shows = metaService.getShows();
|
||||
List<FromItem> edits = metaService.getEdits();
|
||||
@@ -404,18 +463,18 @@ public class MetaKit extends AbstractService {
|
||||
|
||||
//pk:业务主表的主键
|
||||
StringBuffer _pks = new StringBuffer();
|
||||
MetaTable mainTable = metaTables.get(metaService.getTable());
|
||||
MTable mainTable = metaTables.get(metaService.getTablealias());
|
||||
mainTable.getItems().stream().filter(x -> x.getPk() != null && x.getPk()).forEach(x -> {
|
||||
_pks.append(String.format("%s.%s,", metaService.getTable(), x.getName()));
|
||||
_pks.append(String.format("%s.%s,", metaService.getTablealias(), x.getName()));
|
||||
});
|
||||
if (_pks.length() > 0) {
|
||||
_pks.deleteCharAt(_pks.length() - 1);
|
||||
}
|
||||
if (_pks.length() == 0) { // 默认主键
|
||||
List<Field> items = metaTables.get(metaService.getTable()).getItems();
|
||||
List<Field> items = metaTables.get(metaService.getTablealias()).getItems();
|
||||
//存在id字段,取id
|
||||
items.stream().filter(x -> x.getName().equalsIgnoreCase("id")).findAny().ifPresent(x -> {
|
||||
_pks.append(String.format("%s.%s", metaService.getTable(), x.getName()));
|
||||
_pks.append(String.format("%s.%s", metaService.getTablealias(), x.getName()));
|
||||
});
|
||||
}
|
||||
|
||||
@@ -431,7 +490,7 @@ public class MetaKit extends AbstractService {
|
||||
|
||||
@Comment("获取导出excel表头配置k-v")
|
||||
public static Kv cfgExport(String name, String token) {
|
||||
MetaService metaService = getMetaService(name, token);
|
||||
MService metaService = getMetaService(name, token);
|
||||
List<Map<String, String>> exports = metaService.getExports();
|
||||
|
||||
Kv kv = Kv.of(); // {col:label}
|
||||
@@ -442,7 +501,7 @@ public class MetaKit extends AbstractService {
|
||||
}
|
||||
|
||||
//itemUpdate
|
||||
public static BiFunction<MetaTable, List<Field>, MetaTable> itemUpdate = (t, fields) -> {
|
||||
public static BiFunction<MTable, List<Field>, MTable> itemUpdate = (t, fields) -> {
|
||||
List<Field> items = t.getItems();
|
||||
for (int i = 0; i < fields.size(); i++) {
|
||||
for (int j = 0; j < items.size(); j++) {
|
||||
@@ -468,11 +527,11 @@ public class MetaKit extends AbstractService {
|
||||
};*/
|
||||
|
||||
|
||||
public static MetaTable getMetaTableByKey(String key) {
|
||||
return metaTables.stream().filter(x -> x.getKey().equals(key)).findAny().orElse(null);
|
||||
public static MTable getMetaTableByKey(int key) {
|
||||
return mTables.stream().filter(x -> x.getTableid() == key).findAny().orElse(null);
|
||||
}
|
||||
|
||||
public static List<MetaLink> getMetaLinks(String t, List<String> shows, List<String> filters) {
|
||||
public static List<MLink> getMetaLinks(String t, List<String> shows, List<String> filters) {
|
||||
|
||||
|
||||
Predicate<String> contain = s -> {
|
||||
@@ -493,7 +552,7 @@ public class MetaKit extends AbstractService {
|
||||
//1、直接关联 表: t.equals(x.getTables()[0]) || t.equals(x.getTables()[1]
|
||||
//2、关联且有过滤:
|
||||
//3、关联有展示:
|
||||
List<MetaLink> links = metaLinks.stream()
|
||||
List<MLink> links = metaLinks.stream()
|
||||
.filter(x -> {
|
||||
return (t.equals(x.getTables()[0]) || t.equals(x.getTables()[1]))
|
||||
&& (contain.test(x.getTables()[0]) || contain.test(x.getTables()[1]));
|
||||
@@ -502,17 +561,17 @@ public class MetaKit extends AbstractService {
|
||||
return links;
|
||||
}
|
||||
|
||||
public static Kv buildeDetail(MetaService metaService) {
|
||||
public static Kv buildeDetail(MService metaService) {
|
||||
//tables
|
||||
Kv<String, MetaTable> tables = getMetaTables(metaService, true);
|
||||
Kv<String, MTable> tables = getMTables(metaService, true);
|
||||
return Kv.of("tables", tables)
|
||||
.set("links", Kv.of());
|
||||
}
|
||||
|
||||
public static Kv<String, MetaTable> getMetaTables(MetaService metaService, Boolean all) {
|
||||
Kv<String, MetaTable> tables = Kv.of();
|
||||
public static Kv<String, MTable> getMTables(MService metaService, Boolean all) {
|
||||
Kv<String, MTable> tables = Kv.of();
|
||||
|
||||
String table = metaService.getTable();//
|
||||
String table = metaService.getTablealias();//
|
||||
tables.set(table, getMetaTableByAlias(table));
|
||||
|
||||
//收集所有的col
|
||||
@@ -545,34 +604,35 @@ public class MetaKit extends AbstractService {
|
||||
return tables;
|
||||
}
|
||||
|
||||
/*public static DbKit getDbKit(String dbPlatId) {
|
||||
Optional<DbAccount> dbAccount = dbPlats.stream().filter(x -> x.getKey().equals(dbPlatId)).findAny();
|
||||
/*public static DbKit getDbKit(int dbid) {
|
||||
Optional<DbAccount> dbAccount = dbPlats.stream().filter(x -> x.getKey().equals(dbid)).findAny();
|
||||
|
||||
return new DbKit(dbAccount.get());
|
||||
}*/
|
||||
public static DbKit getDbKit(String dbPlatId, String catalog) {
|
||||
Optional<DbAccount> dbAccount = dbPlats.stream().filter(x -> x.getKey().equals(dbPlatId)).findAny();
|
||||
public static DbKit getDbKit(int dbid, String catalog) {
|
||||
Optional<DbAccount> dbAccount = dbPlats.stream().filter(x -> x.getDbid() == dbid).findAny();
|
||||
return new DbKit(dbAccount.get(), catalog);
|
||||
}
|
||||
|
||||
public static DbAccount getDbPlat(String dbPlatId) {
|
||||
Optional<DbAccount> dbAccount = dbPlats.stream().filter(x -> x.getKey().equals(dbPlatId)).findFirst();
|
||||
public static DbAccount getDbPlat(int dbid) {
|
||||
Optional<DbAccount> db = dbPlats.stream().filter(x -> x.getDbid() == dbid).findFirst();
|
||||
|
||||
return dbAccount.get();
|
||||
return db.get();
|
||||
}
|
||||
|
||||
@Comment("通过平台token 得到平台id")
|
||||
public static String getPlatId(String platToken) { //
|
||||
Optional<MetaPlat> plat = sysPlats.stream().filter(x -> x.getToken().equals(platToken)).findAny();
|
||||
return plat.get().getKey();
|
||||
public static Integer getPlatId(String plattoken) { //
|
||||
Optional<MPlat> plat = mPlats.stream().filter(x -> x.getPlattoken().equals(plattoken)).findAny();
|
||||
return plat.get().getPlatid();
|
||||
}
|
||||
|
||||
public static String lastAlias;
|
||||
|
||||
public static String nextAlias() {
|
||||
public String nextAlias() {
|
||||
if (lastAlias == null) {
|
||||
String aql = TplKit.use(true).getTpl("metaTable.lastAlias");
|
||||
lastAlias = MetaTable.dao.findFirst(aql, String.class);
|
||||
//String aql = TplKit.use(true).getTpl("metaTable.lastAlias");
|
||||
lastAlias = findColumn("mable.lastAlias", Kv.of(), String.class);
|
||||
// lastAlias = MetaTable.dao.findFirst(aql, String.class); // TODO....
|
||||
}
|
||||
return lastAlias = next(lastAlias, "");
|
||||
}
|
||||
@@ -594,15 +654,72 @@ public class MetaKit extends AbstractService {
|
||||
|
||||
public static List<String> tableExist(String[] tableArr, String token) {
|
||||
List<String> _tableArr = asList(tableArr);
|
||||
List<String> hv = metaTables.stream()
|
||||
.filter(x -> _tableArr.contains(x.getName()) && x.getSysPlatId().equals(getPlatId(token)))
|
||||
.map(MetaTable::getName)
|
||||
List<String> hv = mTables.stream()
|
||||
.filter(x -> _tableArr.contains(x.getTablename()) && x.getPlatid().equals(getPlatId(token)))
|
||||
.map(MTable::getTablename)
|
||||
.collect(Collectors.toList());
|
||||
return hv;
|
||||
}
|
||||
|
||||
// ---------------------- repository -------------------
|
||||
public static <T extends Doc> void save(T... ts) {
|
||||
public void save(MTable table) {
|
||||
if (table.getTableid() == null || table.getTableid() == 0) {
|
||||
metaSource.insert(table);
|
||||
mTables.add(table);
|
||||
} else {
|
||||
metaSource.update(table);
|
||||
|
||||
// 更新缓存
|
||||
mTables.stream().filter(x -> x.getTableid().equals(table.getTableid())).forEach(x -> {
|
||||
x.setCatalog(table.getCatalog());
|
||||
x.setComment(table.getComment());
|
||||
x.setDbid(table.getDbid());
|
||||
x.setItems(table.getItems());
|
||||
x.setPlatid(table.getPlatid());
|
||||
x.setStatus(table.getStatus());
|
||||
x.setTablename(table.getTablename());
|
||||
x.setAlias(table.getAlias());
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void save(MService mservice) {
|
||||
if (mservice.getServid() == 0) {
|
||||
metaSource.insert(mservice);
|
||||
metaServices.add(mservice);
|
||||
} else {
|
||||
metaSource.update(mservice);
|
||||
|
||||
metaServices.stream().filter(x -> x.getServid() == mservice.getServid()).forEach(x -> {
|
||||
x.setComment(mservice.getComment());
|
||||
x.setEdits(mservice.getEdits());
|
||||
x.setDetails(mservice.getDetails());
|
||||
x.setExports(mservice.getExports());
|
||||
x.setFilters(mservice.getFilters());
|
||||
x.setName(mservice.getName());
|
||||
x.setPlatid(mservice.getPlatid());
|
||||
x.setShows(mservice.getShows());
|
||||
x.setTablealias(mservice.getTablealias());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public void save(MLink link) {
|
||||
if (link.getLinkid() == 0) {
|
||||
metaSource.insert(link);
|
||||
metaLinks.add(link);
|
||||
} else {
|
||||
metaSource.update(link);
|
||||
|
||||
metaLinks.stream().filter(x -> x.getLinkid() == link.getLinkid()).forEach(x -> {
|
||||
x.setLinks(link.getLinks());
|
||||
x.setTables(link.getTables());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/*public static <T extends Doc> void save(T... ts) {
|
||||
if (ts == null || ts.length == 0) return;
|
||||
|
||||
for (T t : ts) {
|
||||
@@ -619,21 +736,21 @@ public class MetaKit extends AbstractService {
|
||||
t.save();
|
||||
} else {
|
||||
|
||||
if (t instanceof MetaLink) {
|
||||
*//*if (t instanceof MLink) {
|
||||
//避免删除属性无效
|
||||
if (((MetaLink) t).getLink() != null && ((MetaLink) t).getLink().size() > 0) {
|
||||
if (((MLink) t).getLink() != null && ((MLink) t).getLink().size() > 0) {
|
||||
t.find(String.format("UPDATE '%s' WITH { link:null } IN MetaLink", t.getKey()), Map.class);
|
||||
}
|
||||
}
|
||||
}*//*
|
||||
|
||||
t.update();
|
||||
}
|
||||
}
|
||||
|
||||
reload(ts[0].getClass());
|
||||
}
|
||||
}*/
|
||||
|
||||
public static <T extends Doc> T findFirst(T t) {
|
||||
/*public static <T extends Doc> T findFirst(T t) {
|
||||
Objects.nonNull(t);
|
||||
|
||||
List<T> list = asList();
|
||||
@@ -654,5 +771,13 @@ public class MetaKit extends AbstractService {
|
||||
}).findAny();
|
||||
|
||||
return (T) any.orElse(null);
|
||||
}*/
|
||||
|
||||
|
||||
protected static TplKit tplKit = TplKit.use(true);
|
||||
|
||||
protected <T> T findColumn(String tpl, Map params, Class<T> type) {
|
||||
String sql = tplKit.getTpl(tpl, params);
|
||||
return ((DataJdbcSource) metaSource).nativeQueryOne(type, sql);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,9 +38,9 @@ public class MetaListenter implements ApplicationListener {
|
||||
|
||||
@Override
|
||||
public void preShutdown(Application application) {
|
||||
if ("db".equals(dcate)) {
|
||||
/*if ("db".equals(dcate)) {
|
||||
MetaKit.cacheSave();
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -6,8 +6,8 @@ import net.tccn.base.PageBean;
|
||||
import net.tccn.base.dbq.fbean.FBean;
|
||||
import net.tccn.base.dbq.jdbc.api.DbKit;
|
||||
import net.tccn.base.dbq.parser.ParseMysql;
|
||||
import net.tccn.meta.MetaService;
|
||||
import net.tccn.meta.MetaTable;
|
||||
import net.tccn.meta.MService;
|
||||
import net.tccn.meta.MTable;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -25,9 +25,9 @@ public class DbExecutors {
|
||||
String[] sqls = PARSER.parseList(fBean);
|
||||
|
||||
//当前的业务 => 获取主表 信息 => 数据源信息 => 数据源对象 => 创建数据工具对象 => 查询数据
|
||||
MetaService metaService = MetaKit.getMetaService(fBean.getName(), fBean.getPlatToken());
|
||||
MetaTable mainTable = MetaKit.getMetaTableByAlias(metaService.getTable());
|
||||
DbKit dbKit = MetaKit.getDbKit(mainTable.getDbPlatId(), mainTable.getCatalog());
|
||||
MService metaService = MetaKit.getMetaService(fBean.getName(), fBean.getPlattoken());
|
||||
MTable mainTable = MetaKit.getMetaTableByAlias(metaService.getTablealias());
|
||||
DbKit dbKit = MetaKit.getDbKit(mainTable.getDbid(), mainTable.getCatalog());
|
||||
System.out.printf("----------------%n countSql:%s%n findSql:%s%n----------------%n", sqls[0], sqls[1]);
|
||||
|
||||
CompletableFuture<Integer> countFuture = CompletableFuture.supplyAsync(() -> dbKit.findColumn(sqls[0], int.class));
|
||||
@@ -37,7 +37,7 @@ public class DbExecutors {
|
||||
Integer total = countFuture.get();
|
||||
|
||||
rows.forEach(m -> {
|
||||
m.forEach((k,v) -> {
|
||||
m.forEach((k, v) -> {
|
||||
/*if ("[B".equals(v.getClass().getName())) {
|
||||
try {
|
||||
//System.out.println(k + " : " + new String((byte[]) v, "UTF-8"));
|
||||
@@ -47,7 +47,7 @@ public class DbExecutors {
|
||||
}
|
||||
}*/
|
||||
// 避免前端 解析丢失精度
|
||||
if (v instanceof Long && (Long)v > 9007199254740991L) {
|
||||
if (v instanceof Long && (Long) v > 9007199254740991L) {
|
||||
m.put(k, Kv.toAs(v, String.class));
|
||||
}
|
||||
});
|
||||
@@ -55,18 +55,18 @@ public class DbExecutors {
|
||||
return PageBean.by(rows, total);
|
||||
}
|
||||
|
||||
public static void del(String name, Map data, String token) {
|
||||
MetaService metaService = MetaKit.getMetaService(name, token);
|
||||
MetaTable mainTable = MetaKit.getMetaTableByAlias(metaService.getTable());
|
||||
DbKit dbKit = MetaKit.getDbKit(mainTable.getDbPlatId(), mainTable.getCatalog());
|
||||
/*public static void del(String name, Map data, String token) {
|
||||
MService metaService = MetaKit.getMetaService(name, token);
|
||||
MTable mainTable = MetaKit.getMetaTableByAlias(metaService.getTablealias());
|
||||
DbKit dbKit = MetaKit.getDbKit(mainTable.getDbid(), mainTable.getCatalog());
|
||||
|
||||
String delSql = PARSER.parseDel(name, data, token);
|
||||
dbKit.exetute(delSql);
|
||||
}
|
||||
}*/
|
||||
|
||||
public static void save(String name, Map data, String token) {
|
||||
MetaTable mainTable = MetaKit.getMainTable(name, token);
|
||||
DbKit dbKit = MetaKit.getDbKit(mainTable.getDbPlatId(), mainTable.getCatalog());
|
||||
MTable mainTable = MetaKit.getMainTable(name, token);
|
||||
DbKit dbKit = MetaKit.getDbKit(mainTable.getDbid(), mainTable.getCatalog());
|
||||
|
||||
String sql = PARSER.parseSave(name, data, token);
|
||||
dbKit.exetute(sql);
|
||||
|
||||
@@ -13,8 +13,8 @@ import java.util.List;
|
||||
@Setter
|
||||
public class FBean {
|
||||
|
||||
private String platToken; // 平台token
|
||||
private String name; // 业务名称
|
||||
private String plattoken; // 平台token
|
||||
private String name; // 业务名称
|
||||
private String type; // 操作类型 list:列表,export:导出
|
||||
|
||||
private List<Filter> filters;//[{f:xx, v: v, type:t}] -- t,
|
||||
|
||||
@@ -57,7 +57,7 @@ public class Filter {
|
||||
filters.forEach(x -> {
|
||||
buf.append(" and d.").append(x.col).append(" " + (x.type == null ? "==" : x.type) + " ");
|
||||
//处理数值型字段查询
|
||||
if ("sysPlatId".equals(x.col) || "platId".equals(x.col) || "status".equals(x.col) || false) {
|
||||
if ("platid".equals(x.col) || "platId".equals(x.col) || "status".equals(x.col)) {
|
||||
buf.append(x.value);
|
||||
} else {
|
||||
buf.append("'" + x.value + "'");
|
||||
|
||||
@@ -2,34 +2,51 @@ package net.tccn.base.dbq.jdbc.api;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import net.tccn.base.arango.Doc;
|
||||
import org.redkale.annotation.Comment;
|
||||
import org.redkale.convert.ConvertColumn;
|
||||
import org.redkale.persistence.Column;
|
||||
import org.redkale.persistence.Entity;
|
||||
import org.redkale.persistence.Id;
|
||||
|
||||
import javax.persistence.Table;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 数据库平台
|
||||
*
|
||||
* @author: liangxianyou at 2018/11/14 12:58.
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Table(name = "MetaDb", catalog = "db_meta")
|
||||
public class DbAccount extends Doc<DbAccount> {
|
||||
public static DbAccount dao = dao(DbAccount.class);
|
||||
@Entity(comment = "[数据库平台表]")
|
||||
public class DbAccount {
|
||||
@Id
|
||||
@Comment("[数据库ID]")
|
||||
private int dbid;
|
||||
|
||||
private String name; //名称
|
||||
private String cate; //类型 mysql|ArangoDb
|
||||
private String remark; //备注
|
||||
private String url; //数据库连接地址
|
||||
private String user; //账号
|
||||
private String pwd; //密码
|
||||
private List<String> catalogs; //库
|
||||
private Integer status;//状态 1启用, 0 未启用
|
||||
@Column(length = 64, comment = "[名称]")
|
||||
private String dbname;
|
||||
|
||||
//----------------------------
|
||||
private boolean tmp; // TODO: 处理临时连接对象
|
||||
@Comment("[类型(mysql|ArangoDb)]")
|
||||
@Column(length = 32, comment = "[类型]")
|
||||
private String cate;
|
||||
|
||||
@Comment("[备注]")
|
||||
@Column(comment = "[备注]")
|
||||
private String remark;
|
||||
|
||||
@Column(length = 128, comment = "[数据库连接地址]")
|
||||
private String url;
|
||||
|
||||
@Column(length = 32, comment = "[账号]")
|
||||
private String user;
|
||||
|
||||
@Column(length = 64, comment = "[密码]")
|
||||
private String pwd;
|
||||
|
||||
// 将catalogs作为JSON字符串存储,但此处为了方便解析,将其转换为List<String>
|
||||
@Column(length = 255, comment = "[库](JSON格式存储多个库名)")
|
||||
private List<String> catalogs;
|
||||
|
||||
@Column(comment = "[状态] 1启用,0未启用")
|
||||
private short status;
|
||||
|
||||
@Column(updatable = false, comment = "[创建时间]")
|
||||
private long createtime;
|
||||
|
||||
public String accountKey() {
|
||||
int start = url.indexOf("//") + 2;
|
||||
@@ -46,4 +63,5 @@ public class DbAccount extends Doc<DbAccount> {
|
||||
public String getPwd() {
|
||||
return pwd;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ public class DbKit implements DbSource {
|
||||
|
||||
try {
|
||||
if (Utils.isEmpty(dbAccount.getPwd())) {
|
||||
DbAccount account = MetaKit.getDbPlat(dbAccount.getKey());
|
||||
DbAccount account = MetaKit.getDbPlat(dbAccount.getDbid());
|
||||
dbAccount.setPwd(account.getPwd());
|
||||
}
|
||||
|
||||
@@ -43,7 +43,8 @@ public class DbKit implements DbSource {
|
||||
|
||||
this.dbSource = dbSource;
|
||||
} catch (Exception e) {
|
||||
throw new IllegalArgumentException(String.format("创建DbKit失败:数据库类型[cate:%s]未知", dbAccount.getCate()));
|
||||
e.printStackTrace();
|
||||
// throw new IllegalArgumentException(String.format("创建DbKit失败:数据库类型[cate:%s]未知", dbAccount.getCate()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
package net.tccn.base.dbq.parser;
|
||||
|
||||
import net.tccn.base.*;
|
||||
import net.tccn.base.CfgException;
|
||||
import net.tccn.base.Kv;
|
||||
import net.tccn.base.MetaKit;
|
||||
import net.tccn.base.Utils;
|
||||
import net.tccn.base.dbq.fbean.*;
|
||||
import net.tccn.meta.MetaLink;
|
||||
import net.tccn.meta.MetaService;
|
||||
import net.tccn.meta.MetaTable;
|
||||
import net.tccn.meta.MLink;
|
||||
import net.tccn.meta.MService;
|
||||
import net.tccn.meta.MTable;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -19,12 +22,12 @@ import java.util.stream.Collectors;
|
||||
*/
|
||||
public class ParseMysql implements Parser {
|
||||
|
||||
Predicate<Kv<String, MetaTable>> sameDbFun = (kv) -> {
|
||||
String dbPlatId = null;
|
||||
for (MetaTable metaTable : kv.values()) {
|
||||
if (dbPlatId == null) {
|
||||
dbPlatId = metaTable.getDbPlatId();
|
||||
} else if (!dbPlatId.equals(metaTable.getDbPlatId())) {
|
||||
Predicate<Kv<String, MTable>> sameDbFun = (kv) -> {
|
||||
int dbid = 0;
|
||||
for (MTable metaTable : kv.values()) {
|
||||
if (dbid == 0) {
|
||||
dbid = metaTable.getDbid();
|
||||
} else if (dbid != metaTable.getDbid()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -38,16 +41,16 @@ public class ParseMysql implements Parser {
|
||||
*/
|
||||
@Override
|
||||
public String[] parseList(FBean fBean) {
|
||||
MetaService metaService = MetaKit.getMetaService(fBean.getName(), fBean.getPlatToken());
|
||||
MService metaService = MetaKit.getMetaService(fBean.getName(), fBean.getPlattoken());
|
||||
|
||||
Kv<String, MetaTable> tables = MetaKit.getMetaTables(metaService, false);//所有的关联表信息
|
||||
MetaTable metaTable = tables.get(metaService.getTable());//基础元数据
|
||||
Kv<String, MTable> tables = MetaKit.getMTables(metaService, false);//所有的关联表信息
|
||||
MTable metaTable = tables.get(metaService.getTablealias());//基础元数据
|
||||
List<Map<String, String>> shows = metaService.getShows();//查询的属性-列表
|
||||
List<Map<String, String>> exports = metaService.getExports();//查询的属性-导出
|
||||
|
||||
List<String> _filters = fBean.getFilters().stream().map(Filter::getCol).collect(Collectors.toList());
|
||||
List<MetaLink> links = MetaKit.getMetaLinks(
|
||||
metaService.getTable(),
|
||||
List<MLink> links = MetaKit.getMetaLinks(
|
||||
metaService.getTablealias(),
|
||||
shows.stream().map(x -> x.get("col")).collect(Collectors.toList()),
|
||||
_filters
|
||||
);
|
||||
@@ -75,8 +78,7 @@ public class ParseMysql implements Parser {
|
||||
bufSelect.append(x.get("col")).append(" as ").append("'").append(x.get("col")).append("',");
|
||||
});
|
||||
bufSelect.deleteCharAt(bufSelect.length() - 1);
|
||||
}
|
||||
else if ("list".equals(fBean.getType()) && !Utils.isEmpty(shows)) {
|
||||
} else if ("list".equals(fBean.getType()) && !Utils.isEmpty(shows)) {
|
||||
shows.forEach(x -> {
|
||||
bufSelect.append(x.get("col")).append(" as ").append("'").append(x.get("col")).append("',");
|
||||
});
|
||||
@@ -87,15 +89,15 @@ public class ParseMysql implements Parser {
|
||||
|
||||
//from
|
||||
StringBuilder bufFrom = new StringBuilder();
|
||||
bufFrom.append(" from `").append(metaTable.getCatalog()).append("`.`").append(metaTable.getName()).append("` `").append(metaTable.getAlias()).append("`");
|
||||
bufFrom.append(" from `").append(metaTable.getCatalog()).append("`.`").append(metaTable.getTablename()).append("` `").append(metaTable.getAlias()).append("`");
|
||||
//left join
|
||||
if (!Utils.isEmpty(links)) {
|
||||
links.forEach(x -> {
|
||||
MetaTable rightTable = tables.get(metaTable.getAlias().equals(x.getTables()[0]) ? x.getTables()[1] : x.getTables()[0]);
|
||||
MTable rightTable = tables.get(metaTable.getAlias().equals(x.getTables()[0]) ? x.getTables()[1] : x.getTables()[0]);
|
||||
if (rightTable != null) {
|
||||
bufFrom.append(" left join ").append(rightTable.getCatalog()).append(".").append(rightTable.getName()).append(" `").append(rightTable.getAlias()).append("` on ");
|
||||
bufFrom.append(" left join ").append(rightTable.getCatalog()).append(".").append(rightTable.getTablename()).append(" `").append(rightTable.getAlias()).append("` on ");
|
||||
int tag = bufFrom.length();
|
||||
x.getLink().forEach((k, v) -> {
|
||||
x.getLinks().forEach((k, v) -> {
|
||||
if (bufFrom.length() > tag) {
|
||||
bufFrom.append(" and ");
|
||||
}
|
||||
@@ -129,14 +131,14 @@ public class ParseMysql implements Parser {
|
||||
* @param token
|
||||
* @return
|
||||
*/
|
||||
public String parseDel(String name, Map data, String token) {
|
||||
MetaService metaService = MetaKit.getMetaService(name, token);
|
||||
/*public String parseDel(String name, Map data, String token) {
|
||||
MService metaService = MetaKit.getMetaService(name, token);
|
||||
Map<String, String> dels = metaService.getDels();
|
||||
MetaTable mainTable = MetaKit.getMetaTableByAlias(metaService.getTable());
|
||||
MTable mainTable = MetaKit.getMetaTableByAlias(metaService.getTable());
|
||||
|
||||
String sql = "";
|
||||
if ("UP_FIELD".equalsIgnoreCase(dels.get("cate"))) {
|
||||
data.put("table", mainTable.getName());
|
||||
data.put("table", mainTable.getTablename());
|
||||
sql = TplKit.parseTpl("update #(table) set status=9 where id=#(id)", data);
|
||||
} else if ("SQL".equalsIgnoreCase(dels.get("cate"))) {
|
||||
sql = TplKit.parseTpl(dels.get("sql"), data);
|
||||
@@ -145,7 +147,7 @@ public class ParseMysql implements Parser {
|
||||
}
|
||||
|
||||
return sql;
|
||||
}
|
||||
}*/
|
||||
|
||||
/**
|
||||
* 保存数据解析逻辑:
|
||||
@@ -157,7 +159,7 @@ public class ParseMysql implements Parser {
|
||||
* @return sql 待执行的sql语句
|
||||
*/
|
||||
public String parseSave(String serviceName, Map<String, String> data, String token) {
|
||||
MetaTable mainTable = MetaKit.getMainTable(serviceName, token);
|
||||
MTable mainTable = MetaKit.getMainTable(serviceName, token);
|
||||
String alias = mainTable.getAlias();
|
||||
String[] pks = mainTable.pk();
|
||||
|
||||
@@ -170,7 +172,7 @@ public class ParseMysql implements Parser {
|
||||
x.startsWith(alias + ".") || !Utils.isEmpty(data.get(alias + "." + x))
|
||||
).collect(Collectors.toList());
|
||||
if (pks.length == 0) {
|
||||
throw new CfgException("保存数据失败,检查业务主表[%s-%S]主键配置", mainTable.getName(), mainTable.getComment());
|
||||
throw new CfgException("保存数据失败,检查业务主表[%s-%S]主键配置", mainTable.getTablename(), mainTable.getComment());
|
||||
} else if (keys.size() == 0) {
|
||||
throw new CfgException("保存数据失败,提交数据不能改空");
|
||||
}
|
||||
@@ -192,10 +194,8 @@ public class ParseMysql implements Parser {
|
||||
vs.deleteCharAt(vs.length() - 1);
|
||||
}
|
||||
|
||||
return String.format(sqlTpl, mainTable.getName(), ks, vs);
|
||||
}
|
||||
|
||||
else { //修改
|
||||
return String.format(sqlTpl, mainTable.getTablename(), ks, vs);
|
||||
} else { //修改
|
||||
String sqlTpl = "update `%s` set %s where `%s` = '%s';"; // para: table、 kvs、 pk、 pv
|
||||
StringBuilder kvs = new StringBuilder(); // `k1`='v1',`k2`='v2', ...
|
||||
String pk = pks[0];
|
||||
@@ -208,7 +208,7 @@ public class ParseMysql implements Parser {
|
||||
kvs.deleteCharAt(kvs.length() - 1);
|
||||
}
|
||||
|
||||
return String.format(sqlTpl, mainTable.getName(), kvs, pk, pv);
|
||||
return String.format(sqlTpl, mainTable.getTablename(), kvs, pk, pv);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ public class DbTask extends Doc<DbTask> {
|
||||
private String sql; //SQL
|
||||
private String para; //默认查询参数
|
||||
private String cate; //任务类型 find|update
|
||||
private Integer sysPlatId; //数据平台id
|
||||
private Integer platid; //数据平台id
|
||||
private Integer platId; //数据平台id
|
||||
private String catalog; //数据库名
|
||||
private Integer status; //状态 1启用|0未启用|-1删除
|
||||
|
||||
@@ -2,24 +2,24 @@ package net.tccn.dict;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import net.tccn.base.arango.Doc;
|
||||
import net.tccn.base.BaseEntity;
|
||||
|
||||
import javax.persistence.Table;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author: liangxianyou
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Table(name = "Dict", catalog = "db_meta")
|
||||
public class Dict extends Doc<Dict> implements Serializable {
|
||||
public static Dict dao = Doc.dao(Dict.class);
|
||||
@Table(name = "Dict")
|
||||
public class Dict extends BaseEntity {
|
||||
|
||||
private int dictid;
|
||||
|
||||
private String type; // 字典类型
|
||||
private String value; // 字典值
|
||||
private String label; // 中文名
|
||||
private String pValue; // 父级字典值
|
||||
private String code; //
|
||||
private String sysPlatId; // 系统平台id
|
||||
private Integer platid; // 系统平台id
|
||||
}
|
||||
|
||||
@@ -12,25 +12,25 @@ import java.util.*;
|
||||
*/
|
||||
public final class DictKit {
|
||||
private static Map<String, DictKit> kits = new HashMap<>();
|
||||
private String platToken;
|
||||
private String plattoken;
|
||||
private Map<String, List<Dict>> dicts;
|
||||
|
||||
private DictKit() {
|
||||
}
|
||||
|
||||
public synchronized static DictKit use(String platToken) {
|
||||
DictKit dictKit = kits.get(platToken);
|
||||
public synchronized static DictKit use(String plattoken) {
|
||||
DictKit dictKit = kits.get(plattoken);
|
||||
if (dictKit == null) {
|
||||
dictKit = new DictKit();
|
||||
dictKit.platToken = platToken;
|
||||
dictKit.dicts = MetaKit.getDictData(platToken);
|
||||
kits.put(platToken, dictKit);
|
||||
dictKit.plattoken = plattoken;
|
||||
dictKit.dicts = MetaKit.getDictData(plattoken);
|
||||
kits.put(plattoken, dictKit);
|
||||
}
|
||||
return dictKit;
|
||||
}
|
||||
|
||||
public synchronized void reload() {
|
||||
this.dicts = MetaKit.getDictData(platToken);
|
||||
this.dicts = MetaKit.getDictData(plattoken);
|
||||
}
|
||||
|
||||
// 初始化字典,不同模式下,数据来源不同
|
||||
@@ -55,8 +55,8 @@ public final class DictKit {
|
||||
ArangoDB arangoDb = new ArangoDB.Builder().host(host, port).user(user).password(passwd).build();
|
||||
ArangoDatabase dbDemo = arangoDb.db("db_demo");
|
||||
|
||||
String platId = "28121369";//MetaKit.getPlatId(platToken);
|
||||
String dictAQL = String.format("for d in Dict filter d.sysPlatId=='%s'return d", platId);
|
||||
String platId = "28121369";//MetaKit.getPlatId(plattoken);
|
||||
String dictAQL = String.format("for d in Dict filter d.platid=='%s'return d", platId);
|
||||
List<Dict> list = (List) dbDemo.query(dictAQL, Map.class).asListRemaining();
|
||||
|
||||
String[] fields = {"label", "value", "pValue"};
|
||||
|
||||
@@ -18,7 +18,7 @@ import java.util.Map;
|
||||
public class DictService extends BaseService {
|
||||
|
||||
@RestMapping(name = "list", comment = "根据type 加载对应的字典列表")
|
||||
public JBean list(@RestParam(name = "platToken") String token, String type) {
|
||||
public JBean list(@RestParam(name = "plattoken") String token, String type) {
|
||||
JBean jBean = new JBean();
|
||||
DictKit dictKit = DictKit.use(token);
|
||||
|
||||
|
||||
@@ -2,11 +2,11 @@ package net.tccn.file;
|
||||
|
||||
import net.tccn.base.*;
|
||||
import net.tccn.base.dbq.table.Field;
|
||||
import net.tccn.meta.MetaTable;
|
||||
import net.tccn.plat.MetaPlat;
|
||||
import net.tccn.meta.MTable;
|
||||
import org.redkale.net.http.RestMapping;
|
||||
import org.redkale.net.http.RestParam;
|
||||
import org.redkale.net.http.RestService;
|
||||
import org.redkale.source.FilterNode;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
@@ -41,19 +41,19 @@ public class _FileService extends BaseService {
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public MetaPlat getSysPlat(String token) {
|
||||
/*public MetaPlat getSysPlat(String token) {
|
||||
return getT(token, MetaPlat.class, () -> MetaPlat.dao.findFirst(new MetaPlat(token)));
|
||||
}
|
||||
}*/
|
||||
|
||||
@RestMapping(name = "data", comment = "得到文件数据")
|
||||
public JBean data(String filePath, @RestParam(name = "platToken") String token) {
|
||||
public JBean data(String filePath, @RestParam(name = "plattoken") String token) {
|
||||
JBean jBean = new JBean();
|
||||
//SysPlat sysPlat = getSysPlat(token);
|
||||
File file = new File(webroot, filePath);
|
||||
if (file.exists()) {
|
||||
Map<String, List<Map>> map = ExcelKit.readExcelAll(file, FIELDS);
|
||||
|
||||
Kv<String, MetaTable> data = Kv.of();
|
||||
Kv<String, MTable> data = Kv.of();
|
||||
map.forEach((k, v) -> {
|
||||
if (v.size() > 2) {
|
||||
data.put(k.replace(" ", ""), toMetaTable(v));
|
||||
@@ -67,8 +67,8 @@ public class _FileService extends BaseService {
|
||||
data.forEach((k, v) -> {
|
||||
Kv kv = Kv.of();
|
||||
res.put(k,
|
||||
kv.set("name", v.getName())
|
||||
.set("hv", hv.contains(v.getName()) ? 1 : 0)
|
||||
kv.set("name", v.getTablename())
|
||||
.set("hv", hv.contains(v.getTablename()) ? 1 : 0)
|
||||
.set("comment", v.getComment())
|
||||
);
|
||||
});
|
||||
@@ -80,11 +80,11 @@ public class _FileService extends BaseService {
|
||||
}
|
||||
|
||||
@RestMapping(name = "sheet_data", comment = "得到sheet数据")
|
||||
public JBean sheetData(String filePath, String sheetName, @RestParam(name = "platToken") String token) {
|
||||
public JBean sheetData(String filePath, String sheetName, @RestParam(name = "plattoken") String token) {
|
||||
JBean jBean = new JBean();
|
||||
File file = new File(webroot, filePath);
|
||||
List<Map> list = ExcelKit.readExcel(file, FIELDS, sheetName);
|
||||
MetaTable metaTable = toMetaTable(list);
|
||||
MTable metaTable = toMetaTable(list);
|
||||
|
||||
jBean.setBody(metaTable);
|
||||
|
||||
@@ -94,7 +94,7 @@ public class _FileService extends BaseService {
|
||||
@RestMapping(ignore = true, comment = "导入excel数据到metatable")
|
||||
public JBean saveSheet(@RestParam(name = "sheetArr", comment = "sheet名") String[] sheetArr,
|
||||
@RestParam(name = "filePath", comment = "文件路径") String filePath,
|
||||
@RestParam(name = "platToken") String token) {
|
||||
@RestParam(name = "plattoken") String token) {
|
||||
JBean jBean = new JBean();
|
||||
|
||||
File file = new File(webroot, filePath);
|
||||
@@ -103,31 +103,31 @@ public class _FileService extends BaseService {
|
||||
Set<String> ks = map.keySet();
|
||||
|
||||
// 找到需要导入的sheet名,并组装对应的数据
|
||||
MetaTable[] metaTables = Stream.of(sheetArr).filter(x -> {
|
||||
MTable[] metaTables = Stream.of(sheetArr).filter(x -> {
|
||||
if (!ks.contains(x)) return false;
|
||||
|
||||
MetaTable bean = new MetaTable();
|
||||
bean.setSysPlatId(platId(token));
|
||||
bean.setName(x);
|
||||
return MetaTable.dao.findFirst(bean) == null;
|
||||
FilterNode node = FilterNode.create("platid", platId(token)).and("tablename", x);
|
||||
return !metaSource.exists(MTable.class, node);
|
||||
}).map(x -> {
|
||||
MetaTable metaTable = toMetaTable(map.get(x));
|
||||
metaTable.setSysPlatId(platId(token));
|
||||
metaTable.setAlias(MetaKit.nextAlias());
|
||||
MTable metaTable = toMetaTable(map.get(x));
|
||||
metaTable.setPlatid(platId(token));
|
||||
metaTable.setAlias(metaKit.nextAlias());
|
||||
return metaTable;
|
||||
}).toArray(MetaTable[]::new);
|
||||
}).toArray(MTable[]::new);
|
||||
|
||||
MetaKit.save(metaTables);
|
||||
for (MTable x : metaTables) {
|
||||
metaKit.save(x);
|
||||
}
|
||||
return jBean;
|
||||
}
|
||||
|
||||
/**
|
||||
* 组装元数据
|
||||
*/
|
||||
private MetaTable toMetaTable(List<Map> list) {
|
||||
private MTable toMetaTable(List<Map> list) {
|
||||
|
||||
//Kv col = Kv.of();
|
||||
MetaTable metaTable = new MetaTable();
|
||||
MTable metaTable = new MTable();
|
||||
|
||||
list.remove(1);//list[0] head info
|
||||
Map rowHead = list.remove(0);
|
||||
@@ -135,7 +135,7 @@ public class _FileService extends BaseService {
|
||||
String comment = getComment(rowHead);//list[1] comment,
|
||||
String tableName = getTableName(rowHead);
|
||||
//col.set("name", tableName).set("comment", comment);
|
||||
metaTable.setName(tableName);
|
||||
metaTable.setTablename(tableName);
|
||||
metaTable.setComment(comment);
|
||||
|
||||
//所有字段
|
||||
|
||||
31
src/main/java/net/tccn/meta/MLink.java
Normal file
31
src/main/java/net/tccn/meta/MLink.java
Normal file
@@ -0,0 +1,31 @@
|
||||
package net.tccn.meta;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import net.tccn.base.BaseEntity;
|
||||
import org.redkale.persistence.Column;
|
||||
import org.redkale.persistence.Entity;
|
||||
import org.redkale.persistence.Id;
|
||||
import org.redkale.persistence.Table;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Created by liangxianyou at 2018/12/25 16:22.
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Entity
|
||||
@Table(name = "mlink", comment = "MLink表")
|
||||
public class MLink extends BaseEntity {
|
||||
@Id
|
||||
@Column(comment = "[主键ID]自增")
|
||||
private int linkid; // 根据您的说明移除了nonnull,但通常主键不应该允许为空
|
||||
|
||||
@Column(comment = "[关联的表]存储表别名")
|
||||
private String[] tables = new String[0];
|
||||
|
||||
@Column(comment = "[关联关系]")
|
||||
private Map<String, String> links = new HashMap<>();
|
||||
}
|
||||
53
src/main/java/net/tccn/meta/MService.java
Normal file
53
src/main/java/net/tccn/meta/MService.java
Normal file
@@ -0,0 +1,53 @@
|
||||
package net.tccn.meta;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import net.tccn.base.BaseEntity;
|
||||
import org.redkale.persistence.Column;
|
||||
import org.redkale.persistence.Entity;
|
||||
import org.redkale.persistence.Id;
|
||||
import org.redkale.persistence.Table;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Created by liangxianyou at 2018/12/24 16:15.
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Entity
|
||||
@Table(name = "mservice", comment = "MService表")
|
||||
public class MService extends BaseEntity {
|
||||
@Id
|
||||
@Column(comment = "[服务ID]")
|
||||
private int servid;
|
||||
|
||||
@Column(length = 64, comment = "[业务标识]")
|
||||
private String name;
|
||||
|
||||
@Column(length = 15, comment = "[主体表别名]")
|
||||
private String tablealias;
|
||||
|
||||
@Column(length = 64, comment = "[业务中文名]")
|
||||
private String comment;
|
||||
|
||||
@Column(comment = "[平台id]")
|
||||
private Integer platid;
|
||||
|
||||
@Column(comment = "[SHOWS]")
|
||||
private List<Map<String, String>> shows = new ArrayList<>();
|
||||
|
||||
@Column(comment = "[EDITS]")
|
||||
private List<FromItem> edits = new ArrayList<>();
|
||||
|
||||
@Column(comment = "[DETAILS]")
|
||||
private List<Map<String, String>> details = new ArrayList<>();
|
||||
|
||||
@Column(comment = "[FILTERS]")
|
||||
private List<Filter> filters = new ArrayList<>();
|
||||
|
||||
@Column(comment = "[exports]")
|
||||
private List<Map<String, String>> exports = new ArrayList<>();
|
||||
}
|
||||
@@ -2,11 +2,10 @@ package net.tccn.meta;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import net.tccn.base.arango.Doc;
|
||||
import net.tccn.base.BaseEntity;
|
||||
import net.tccn.base.dbq.table.Field;
|
||||
import org.redkale.persistence.*;
|
||||
|
||||
import javax.persistence.Table;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -18,26 +17,47 @@ import java.util.stream.Collectors;
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Table(name = "MetaTable", catalog = "db_meta")
|
||||
public class MetaTable extends Doc<MetaTable> implements Serializable {
|
||||
public static final MetaTable dao = MetaTable.dao(MetaTable.class);
|
||||
@Entity
|
||||
@Table(name = "mtable", comment = "TABLE记录表")
|
||||
@Cacheable(value = true, interval = 60 * 60 * 1000, direct = true)
|
||||
public class MTable extends BaseEntity {
|
||||
@Id
|
||||
@Column(comment = "[表ID]")
|
||||
private Integer tableid;
|
||||
|
||||
private String name;
|
||||
private String alias; //表别名:全库唯一,程序自动生成
|
||||
private String comment;
|
||||
@Column(length = 64, comment = "[表名称]")
|
||||
private String tablename;
|
||||
|
||||
@Column(length = 15, unique = true, comment = "[表别名]全库唯一,程序自动生成")
|
||||
private String alias;
|
||||
|
||||
@Column(comment = "[表字段]")
|
||||
private List<Field> items;
|
||||
private String sysPlatId; //所属系统平台
|
||||
private String dbPlatId; //所属数据平台
|
||||
private String catalog; //所在database
|
||||
private Integer status; //状态 0 默认, 9删除
|
||||
|
||||
private Integer hv;//临时
|
||||
@Column(length = 64, comment = "[表注释]")
|
||||
private String comment;
|
||||
|
||||
@Column(comment = "[临时]")
|
||||
private int hv;
|
||||
|
||||
@Column(comment = "[状态]0 默认, 9删除'")
|
||||
private int status;
|
||||
|
||||
@Column(comment = "[所属系统平台]")
|
||||
private Integer platid;
|
||||
|
||||
@Column(comment = "[所属数据平台]")
|
||||
private Integer dbid;
|
||||
|
||||
@Column(length = 32, comment = "[所在database]")
|
||||
private String catalog;
|
||||
|
||||
// ------------------------------------------------
|
||||
public static MetaTable toAs(net.tccn.base.dbq.table.Table table) {
|
||||
public static MTable toAs(net.tccn.base.dbq.table.Table table) {
|
||||
List<Field> fields = table.getColumns().stream().map(Field::toAs).collect(Collectors.toList());
|
||||
|
||||
MetaTable _bean = new MetaTable();
|
||||
_bean.setName(table.getName());
|
||||
MTable _bean = new MTable();
|
||||
_bean.setTablename(table.getName());
|
||||
_bean.setComment(table.getComment());
|
||||
_bean.setCatalog(table.getCatalog());
|
||||
_bean.setItems(fields);
|
||||
@@ -1,21 +0,0 @@
|
||||
package net.tccn.meta;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import net.tccn.base.arango.Doc;
|
||||
|
||||
import javax.persistence.Table;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Created by liangxianyou at 2018/12/25 16:22.
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Table(name = "MetaLink", catalog = "db_meta")
|
||||
public class MetaLink extends Doc<MetaLink> {
|
||||
public static MetaLink dao = Doc.dao(MetaLink.class);
|
||||
|
||||
private String[] tables;
|
||||
private Map<String, String> link;
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
package net.tccn.meta;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import net.tccn.base.arango.Doc;
|
||||
|
||||
import javax.persistence.Table;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Created by liangxianyou at 2018/12/24 16:15.
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Table(name = "MetaService", catalog = "db_meta")
|
||||
public class MetaService extends Doc<MetaService> {
|
||||
public static MetaService dao = Doc.dao(MetaService.class);
|
||||
|
||||
private String name; //业务标识
|
||||
private String table; //主体表别名
|
||||
private String comment; //业务中文名
|
||||
private String sysPlatId; //平台id
|
||||
|
||||
private List<Map<String,String>> shows = new ArrayList<>();
|
||||
private List<FromItem> edits = new ArrayList<>();
|
||||
private List<Map<String,String>> details = new ArrayList<>();
|
||||
private Map<String, String> dels = new HashMap<>();
|
||||
private List<Filter> filters = new ArrayList<>();//{name:"", label:"", checked:true, }
|
||||
private List<Map<String,String>> exports = new ArrayList<>();
|
||||
|
||||
//------
|
||||
|
||||
}
|
||||
@@ -2,7 +2,7 @@ package net.tccn.meta;
|
||||
|
||||
import net.tccn.base.*;
|
||||
import net.tccn.base.dbq.table.Field;
|
||||
import net.tccn.plat.MetaPlat;
|
||||
import net.tccn.plat.MPlat;
|
||||
import org.redkale.net.http.RestMapping;
|
||||
import org.redkale.net.http.RestParam;
|
||||
import org.redkale.net.http.RestService;
|
||||
@@ -19,20 +19,20 @@ public class MetadataService extends BaseService { //arango
|
||||
|
||||
//----------- 元数据管理 ---------------
|
||||
@RestMapping(name = "tablelist", comment = "table列表")
|
||||
public JBean tableList(@RestParam(name = "platToken") String token, String catalog, String dbPlatId, String name) {
|
||||
public JBean tableList(@RestParam(name = "plattoken") String token, String catalog, Integer dbid, String name) {
|
||||
JBean jBean = new JBean();
|
||||
|
||||
List<Kv> list = MetaKit.getMetaTables().stream().filter(x
|
||||
List<Kv> list = MetaKit.getMTables().stream().filter(x
|
||||
-> (isEmpty(catalog) || catalog.equals(x.getCatalog())) &&
|
||||
(isEmpty(dbPlatId) || dbPlatId.equals(x.getDbPlatId())) &&
|
||||
(isEmpty(name) || x.getName().contains(name)) &&
|
||||
(isEmpty(token) || x.getSysPlatId().equals(platId(token))) &&
|
||||
(isEmpty(dbid) || dbid == (int) x.getDbid()) &&
|
||||
(isEmpty(name) || x.getTablename().contains(name)) &&
|
||||
(isEmpty(token) || x.getPlatid().equals(platId(token))) &&
|
||||
(isEmpty(x.getStatus()) || x.getStatus() != 9)
|
||||
).map(x -> Kv.of("name", x.getName())
|
||||
).map(x -> Kv.of("tablename", x.getTablename())
|
||||
.set("comment", x.getComment())
|
||||
.set("catalog", x.getCatalog())
|
||||
.set("alias", x.getAlias())
|
||||
.set("dbPlatId", x.getDbPlatId())
|
||||
.set("dbid", x.getDbid())
|
||||
.set("linkCount", MetaKit.getMetaLinks().stream().filter(link -> { // 关联表数量
|
||||
String[] tables = link.getTables();
|
||||
return x.getAlias().equals(tables[0]) || x.getAlias().equals(tables[1]);
|
||||
@@ -43,11 +43,11 @@ public class MetadataService extends BaseService { //arango
|
||||
|
||||
|
||||
@RestMapping(name = "service_list", comment = "业务列表")
|
||||
public JBean serviceList(@RestParam(name = "platToken") String token) {
|
||||
public JBean serviceList(@RestParam(name = "plattoken") String token) {
|
||||
JBean jBean = new JBean();
|
||||
|
||||
List<MetaService> list = MetaKit.getMetaServices().stream()
|
||||
.filter(x -> platId(token).equals(x.getSysPlatId()))
|
||||
List<MService> list = MetaKit.getMetaServices().stream()
|
||||
.filter(x -> platId(token).equals(x.getPlatid()))
|
||||
.collect(Collectors.toList());
|
||||
jBean.setBody(list);
|
||||
|
||||
@@ -55,10 +55,10 @@ public class MetadataService extends BaseService { //arango
|
||||
}
|
||||
|
||||
@RestMapping(name = "tableinfo", comment = "table详情")
|
||||
public JBean tableInfo(@RestParam(name = "platToken") String token, String name, String alias) {
|
||||
public JBean tableInfo(@RestParam(name = "plattoken") String token, String name, String alias) {
|
||||
JBean jBean = new JBean();
|
||||
|
||||
MetaTable metaTable = null;
|
||||
MTable metaTable = null;
|
||||
if (!isEmpty(name)) {
|
||||
metaTable = MetaKit.getMetaTable(name, token);
|
||||
}
|
||||
@@ -70,11 +70,11 @@ public class MetadataService extends BaseService { //arango
|
||||
}
|
||||
|
||||
@RestMapping(name = "service_save", comment = "service信息保存")
|
||||
public JBean serviceSave(@RestParam(name = "platToken") String token, @RestParam(name = "service") MetaService service) {
|
||||
public JBean serviceSave(@RestParam(name = "plattoken") String token, @RestParam(name = "service") MService service) {
|
||||
JBean jBean = new JBean();
|
||||
do {
|
||||
// 标识码非空校验
|
||||
if (isEmpty(service.getTable())) {
|
||||
if (isEmpty(service.getTablealias())) {
|
||||
jBean.set(-1, "请选择业务主表");
|
||||
break;
|
||||
}
|
||||
@@ -86,29 +86,29 @@ public class MetadataService extends BaseService { //arango
|
||||
}
|
||||
|
||||
// 标识码重复校验
|
||||
MetaService metaService = MetaKit.getMetaService(service.getName(), token);
|
||||
if (metaService != null && !metaService.getKey().equals(service.getKey())) {
|
||||
MService metaService = MetaKit.getMetaService(service.getName(), token);
|
||||
if (metaService != null && metaService.getServid() != service.getServid()) {
|
||||
jBean.set(-1, "业务标识码被占用,修改业务标识码重试");
|
||||
break;
|
||||
}
|
||||
|
||||
if (service.getKey() == null) {
|
||||
service.setSysPlatId(platId(token));
|
||||
if (service.getServid() == 0) {
|
||||
service.setPlatid(platId(token));
|
||||
}
|
||||
MetaKit.save(service);
|
||||
metaKit.save(service);
|
||||
} while (false);
|
||||
return jBean;
|
||||
}
|
||||
|
||||
@RestMapping(name = "service_info", comment = "service基本信息")
|
||||
public JBean serviceInfo(@RestParam(name = "platToken") String token, String name) {
|
||||
MetaService metaService = MetaKit.getMetaService(name, token);
|
||||
return JBean.by(0, "", metaService);
|
||||
public JBean serviceInfo(@RestParam(name = "plattoken") String token, String name) {
|
||||
MService mService = MetaKit.getMetaService(name, token);
|
||||
return JBean.by(0, "", mService);
|
||||
}
|
||||
|
||||
@RestMapping(name = "service_detail", comment = "service详情")
|
||||
public JBean serviceDetail(@RestParam(name = "platToken") String token, String name) {
|
||||
MetaService metaService = MetaKit.getMetaService(name, token);
|
||||
public JBean serviceDetail(@RestParam(name = "plattoken") String token, String name) {
|
||||
MService metaService = MetaKit.getMetaService(name, token);
|
||||
Kv detail = MetaKit.buildeDetail(metaService);
|
||||
|
||||
return JBean.by(0, "", detail);
|
||||
@@ -116,122 +116,122 @@ public class MetadataService extends BaseService { //arango
|
||||
|
||||
//修改item的排序
|
||||
@RestMapping(name = "itemsort", comment = "字段排序")
|
||||
public JBean itemSortSave(String alias, String[] items, @RestParam(name = "platToken") String token) {
|
||||
public JBean itemSortSave(String alias, String[] items, @RestParam(name = "plattoken") String token) {
|
||||
|
||||
MetaTable metaTable = MetaKit.getMetaTableByAlias(alias);
|
||||
MTable metaTable = MetaKit.getMetaTableByAlias(alias);
|
||||
|
||||
MetaKit.sortItem.apply(metaTable, items);
|
||||
|
||||
MetaKit.save(metaTable);
|
||||
metaKit.save(metaTable);
|
||||
return JBean.OK;
|
||||
}
|
||||
|
||||
@RestMapping(name = "itemupdate", comment = "字段修改")
|
||||
public JBean itemUpdate(String alias, List<Field> items, @RestParam(name = "platToken") String token) {
|
||||
MetaTable metaTable = MetaKit.getMetaTableByAlias(alias);
|
||||
public JBean itemUpdate(String alias, List<Field> items, @RestParam(name = "plattoken") String token) {
|
||||
MTable metaTable = MetaKit.getMetaTableByAlias(alias);
|
||||
|
||||
MetaKit.itemUpdate.apply(metaTable, items);
|
||||
MetaKit.save(metaTable);
|
||||
metaKit.save(metaTable);
|
||||
return JBean.OK;
|
||||
}
|
||||
|
||||
@RestMapping(name = "showsort", comment = "展示字段修改")
|
||||
public JBean showSort(String name, List<Map<String, String>> shows, @RestParam(name = "platToken") String token) {
|
||||
public JBean showSort(String name, List<Map<String, String>> shows, @RestParam(name = "plattoken") String token) {
|
||||
if (Utils.isEmpty(shows)) return null;
|
||||
|
||||
MetaService metaService = MetaKit.getMetaService(name, token);
|
||||
MService metaService = MetaKit.getMetaService(name, token);
|
||||
metaService.setShows(shows);
|
||||
MetaKit.save(metaService);
|
||||
metaKit.save(metaService);
|
||||
return JBean.OK;
|
||||
}
|
||||
|
||||
@RestMapping(name = "exportsave", comment = "导出配置保存")
|
||||
public JBean exportSave(String name, List<Map<String, String>> exports, @RestParam(name = "platToken") String token) {
|
||||
public JBean exportSave(String name, List<Map<String, String>> exports, @RestParam(name = "plattoken") String token) {
|
||||
if (Utils.isEmpty(exports)) return null;
|
||||
|
||||
MetaService metaService = MetaKit.getMetaService(name, token);
|
||||
MService metaService = MetaKit.getMetaService(name, token);
|
||||
metaService.setExports(exports);
|
||||
|
||||
MetaKit.save(metaService);
|
||||
metaKit.save(metaService);
|
||||
return JBean.OK;
|
||||
}
|
||||
|
||||
@RestMapping(name = "detailsave", comment = "详情配置保存")
|
||||
public JBean detailSave(String name, List<Map<String, String>> details, @RestParam(name = "platToken") String token) {
|
||||
public JBean detailSave(String name, List<Map<String, String>> details, @RestParam(name = "plattoken") String token) {
|
||||
if (Utils.isEmpty(details)) return null;
|
||||
|
||||
MetaService metaService = MetaKit.getMetaService(name, token);
|
||||
MService metaService = MetaKit.getMetaService(name, token);
|
||||
metaService.setDetails(details);
|
||||
|
||||
MetaKit.save(metaService);
|
||||
metaKit.save(metaService);
|
||||
return JBean.OK;
|
||||
}
|
||||
|
||||
@RestMapping(name = "editsave", comment = "表单配置保存")
|
||||
public JBean editSave(String name, List<FromItem> edits, @RestParam(name = "platToken") String token) {
|
||||
public JBean editSave(String name, List<FromItem> edits, @RestParam(name = "plattoken") String token) {
|
||||
if (Utils.isEmpty(edits)) return null;
|
||||
|
||||
MetaService metaService = MetaKit.getMetaService(name, token);
|
||||
MService metaService = MetaKit.getMetaService(name, token);
|
||||
metaService.setEdits(edits);
|
||||
|
||||
MetaKit.save(metaService);
|
||||
metaKit.save(metaService);
|
||||
return JBean.OK;
|
||||
}
|
||||
|
||||
@RestMapping(name = "delsave", comment = "删除配置保存")
|
||||
public JBean delSave(String name, Map<String, String> dels, @RestParam(name = "platToken") String token) {
|
||||
/*@RestMapping(name = "delsave", comment = "删除配置保存")
|
||||
public JBean delSave(String name, Map<String, String> dels, @RestParam(name = "plattoken") String token) {
|
||||
if (Utils.isEmpty(dels)) return null;
|
||||
|
||||
MetaService metaService = MetaKit.getMetaService(name, token);
|
||||
MService metaService = MetaKit.getMetaService(name, token);
|
||||
metaService.setDels(dels);
|
||||
|
||||
MetaKit.save(metaService);
|
||||
return JBean.OK;
|
||||
}
|
||||
}*/
|
||||
|
||||
@RestMapping(name = "importsort", comment = "导入字段保存")
|
||||
public JBean importSort(String serviceKey, List<String> items, @RestParam(name = "platToken") String token) {
|
||||
public JBean importSort(String serviceKey, List<String> items, @RestParam(name = "plattoken") String token) {
|
||||
if (Utils.isEmpty(items)) return null;
|
||||
|
||||
MetaTable metaTable = MetaKit.getMetaTable(serviceKey, token);
|
||||
MTable metaTable = MetaKit.getMetaTable(serviceKey, token);
|
||||
//fixme: metaTable.setImports(items);
|
||||
|
||||
MetaKit.save(metaTable);
|
||||
metaKit.save(metaTable);
|
||||
return JBean.OK;
|
||||
}
|
||||
|
||||
@RestMapping(name = "dbplatupdate", comment = "数据平台修改")
|
||||
public JBean dbPlatUpdate(MetaTable metaTable, @RestParam(name = "platToken") String token) {
|
||||
public JBean dbPlatUpdate(MTable metaTable, @RestParam(name = "plattoken") String token) {
|
||||
|
||||
MetaTable _metaTable = MetaKit.getMetaTableByKey(metaTable.getKey());
|
||||
_metaTable.setName(metaTable.getName());
|
||||
MTable _metaTable = MetaKit.getMetaTableByKey(metaTable.getTableid());
|
||||
_metaTable.setTablename(metaTable.getTablename());
|
||||
_metaTable.setComment(metaTable.getComment());
|
||||
_metaTable.setCatalog(metaTable.getCatalog());
|
||||
_metaTable.setDbPlatId(metaTable.getDbPlatId());
|
||||
_metaTable.setDbid(metaTable.getDbid());
|
||||
_metaTable.setCatalog(metaTable.getCatalog());
|
||||
|
||||
MetaKit.save(_metaTable);
|
||||
metaKit.save(_metaTable);
|
||||
return JBean.OK;
|
||||
}
|
||||
|
||||
@RestMapping(name = "filter_update", comment = "查询配置修改")
|
||||
public JBean filterUpdate(String name, List<Filter> filters, @RestParam(name = "platToken") String token) {
|
||||
MetaService metaService = MetaKit.getMetaService(name, token);
|
||||
public JBean filterUpdate(String name, List<Filter> filters, @RestParam(name = "plattoken") String token) {
|
||||
MService metaService = MetaKit.getMetaService(name, token);
|
||||
metaService.setFilters(filters);
|
||||
|
||||
MetaKit.save(metaService);
|
||||
metaKit.save(metaService);
|
||||
return JBean.OK;
|
||||
}
|
||||
|
||||
@RestMapping(name = "table_link_list", comment = "实体表,包含link信息的列表,(metalink 管理页面使用)")
|
||||
public JBean tableLinkList(@RestParam(name = "platToken") String token) {
|
||||
public JBean tableLinkList(@RestParam(name = "plattoken") String token) {
|
||||
JBean jBean = new JBean();
|
||||
|
||||
List<Kv> list = MetaKit.getMetaTables().stream()
|
||||
.filter(x -> (isEmpty(token) || x.getSysPlatId().equals(platId(token)))
|
||||
&& (x.getStatus() == null || x.getStatus() != 9)
|
||||
List<Kv> list = MetaKit.getMTables().stream()
|
||||
.filter(x -> (isEmpty(token) || x.getPlatid().equals(platId(token)))
|
||||
&& (x.getStatus() != 9)
|
||||
).map(x -> {
|
||||
Kv kv = Kv.of("name", x.getName())
|
||||
Kv kv = Kv.of("tablename", x.getTablename())
|
||||
.set("comment", x.getComment())
|
||||
.set("alias", x.getAlias())
|
||||
.set("linkCount", 0);
|
||||
@@ -257,12 +257,12 @@ public class MetadataService extends BaseService { //arango
|
||||
List<Kv> list = MetaKit.getMetaLinks().stream().filter(x ->
|
||||
x.getTables()[0].equals(alias) || x.getTables()[1].equals(alias)
|
||||
).map(x -> {
|
||||
MetaTable linkTable = MetaKit.getMetaTableByAlias(x.getTables()[0].equals(alias) ? x.getTables()[1] : x.getTables()[0]);
|
||||
Kv kv = Kv.of("name", linkTable.getName())
|
||||
MTable linkTable = MetaKit.getMetaTableByAlias(x.getTables()[0].equals(alias) ? x.getTables()[1] : x.getTables()[0]);
|
||||
Kv kv = Kv.of("tablename", linkTable.getTablename())
|
||||
.set("alias", linkTable.getAlias())
|
||||
.set("comment", linkTable.getComment())
|
||||
.set("linkSize", x.getLink().size())
|
||||
.set("link", x.getLink());
|
||||
.set("linkSize", x.getLinks().size())
|
||||
.set("links", x.getLinks());
|
||||
return kv;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
@@ -273,7 +273,7 @@ public class MetadataService extends BaseService { //arango
|
||||
public JBean linkList(String alias) {
|
||||
JBean jBean = new JBean();
|
||||
|
||||
List<MetaLink> links = MetaKit.getMetaLinks();
|
||||
List<MLink> links = MetaKit.getMetaLinks();
|
||||
|
||||
if (!isEmpty(alias)) {
|
||||
links = Utils.filter(links, x -> x.getTables()[0].equals(alias) || x.getTables()[1].equals(alias));
|
||||
@@ -283,8 +283,8 @@ public class MetadataService extends BaseService { //arango
|
||||
}
|
||||
|
||||
@RestMapping(name = "link_save", comment = "实体关系列表")
|
||||
public JBean linkSave(MetaLink link, @RestParam(name = "platToken") String token) {
|
||||
MetaKit.save(link);
|
||||
public JBean linkSave(MLink link, @RestParam(name = "plattoken") String token) {
|
||||
metaKit.save(link);
|
||||
return JBean.OK;
|
||||
}
|
||||
|
||||
@@ -292,7 +292,7 @@ public class MetadataService extends BaseService { //arango
|
||||
@RestMapping(name = "plat_list", comment = "平台列表")
|
||||
public JBean platList() {
|
||||
JBean jBean = new JBean();
|
||||
List<MetaPlat> plats = MetaKit.getSysPlats();
|
||||
List<MPlat> plats = MetaKit.getMPlats();
|
||||
|
||||
return jBean.setBody(plats);
|
||||
}
|
||||
@@ -306,7 +306,7 @@ public class MetadataService extends BaseService { //arango
|
||||
|
||||
// ------------------------------------ 对外服务 --------------------------------------
|
||||
@RestMapping(name = "cfg", auth = false, comment = " 功能配置")
|
||||
public JBean cfg(String name, @RestParam(name = "platToken") String token) {
|
||||
public JBean cfg(String name, @RestParam(name = "plattoken") String token) {
|
||||
JBean jBean = new JBean();
|
||||
Map cfg = MetaKit.cfg(name, token);
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package net.tccn.open;
|
||||
|
||||
import net.tccn.base.*;
|
||||
import net.tccn.base.dbq.DbExecutors;
|
||||
import net.tccn.base.dbq.fbean.FBean;
|
||||
import net.tccn.base.dbq.*;
|
||||
import net.tccn.dict.DictKit;
|
||||
import net.tccn.meta.MetaService;
|
||||
import net.tccn.meta.MService;
|
||||
import org.redkale.net.http.HttpScope;
|
||||
import org.redkale.net.http.RestMapping;
|
||||
import org.redkale.net.http.RestParam;
|
||||
@@ -23,10 +23,10 @@ import java.util.concurrent.ExecutionException;
|
||||
public class DataService extends BaseService {
|
||||
|
||||
@RestMapping(name = "list", auth = false, comment = "数据分页列表")
|
||||
public JBean findList(FBean fBean, @RestParam(name = "platToken") String token) {
|
||||
public JBean findList(FBean fBean, @RestParam(name = "plattoken") String token) {
|
||||
JBean jBean = new JBean();
|
||||
try {
|
||||
fBean.setPlatToken(token);
|
||||
fBean.setPlattoken(token);
|
||||
fBean.setType("list");
|
||||
PageBean page = DbExecutors.findPage(fBean);
|
||||
jBean.setBody(page);
|
||||
@@ -38,7 +38,7 @@ public class DataService extends BaseService {
|
||||
}
|
||||
|
||||
@RestMapping(name = "save", comment = "数据保存")
|
||||
public JBean save(String name, Map<String, String> data, @RestParam(name = "platToken") String token) {
|
||||
public JBean save(String name, Map<String, String> data, @RestParam(name = "plattoken") String token) {
|
||||
JBean jBean = new JBean();
|
||||
try {
|
||||
DbExecutors.save(name, data, token);
|
||||
@@ -50,9 +50,9 @@ public class DataService extends BaseService {
|
||||
}
|
||||
|
||||
@RestMapping(name = "export", auth = false, comment = "数据导出excel")
|
||||
public HttpScope export(FBean fBean, String fileName, @RestParam(name = "platToken") String token) {
|
||||
public HttpScope export(FBean fBean, String fileName, @RestParam(name = "plattoken") String token) {
|
||||
try {
|
||||
fBean.setPlatToken(token);
|
||||
fBean.setPlattoken(token);
|
||||
fBean.setType("export");
|
||||
PageBean page = DbExecutors.findPage(fBean);
|
||||
Kv heads = MetaKit.cfgExport(fBean.getName(), token);
|
||||
@@ -64,7 +64,7 @@ public class DataService extends BaseService {
|
||||
List<Map> data = page.getRows();
|
||||
|
||||
//dataDeal
|
||||
MetaService metaService = MetaKit.getMetaService(fBean.getName(), token);
|
||||
MService metaService = MetaKit.getMetaService(fBean.getName(), token);
|
||||
List<Map<String, String>> exports = metaService.getExports();
|
||||
DictKit dictKit = DictKit.use(token);
|
||||
//字典映射 、日期转换 、时间转换
|
||||
@@ -107,8 +107,8 @@ public class DataService extends BaseService {
|
||||
return HttpScope.refer("excel");
|
||||
}
|
||||
|
||||
@RestMapping(name = "del", auth = false, comment = "数据删除")
|
||||
public JBean del(String name, Map<String, String> data, @RestParam(name = "platToken") String token) {
|
||||
/*@RestMapping(name = "del", auth = false, comment = "数据删除")
|
||||
public JBean del(String name, Map<String, String> data, @RestParam(name = "plattoken") String token) {
|
||||
JBean jBean = new JBean();
|
||||
try {
|
||||
DbExecutors.del(name, data, token);
|
||||
@@ -116,5 +116,5 @@ public class DataService extends BaseService {
|
||||
jBean.set(-1, "删除数据失败!");
|
||||
}
|
||||
return jBean;
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
31
src/main/java/net/tccn/plat/MPlat.java
Normal file
31
src/main/java/net/tccn/plat/MPlat.java
Normal file
@@ -0,0 +1,31 @@
|
||||
package net.tccn.plat;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import net.tccn.base.BaseEntity;
|
||||
import org.redkale.annotation.Comment;
|
||||
import org.redkale.persistence.Column;
|
||||
import org.redkale.persistence.Entity;
|
||||
import org.redkale.persistence.Id;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Entity
|
||||
public class MPlat extends BaseEntity {
|
||||
@Id
|
||||
@Comment("[平台ID]")
|
||||
private Integer platid;
|
||||
|
||||
@Comment("[平台名称]")
|
||||
private String platname;
|
||||
|
||||
@Comment("[平台令牌]")
|
||||
private String plattoken;
|
||||
|
||||
@Comment("[备注信息]")
|
||||
private String remark;
|
||||
|
||||
@Comment("[创建时间]")
|
||||
@Column(updatable = false)
|
||||
private Long createtime;
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
/*
|
||||
package net.tccn.plat;
|
||||
|
||||
import lombok.Getter;
|
||||
@@ -7,10 +8,12 @@ import org.redkale.convert.ConvertColumn;
|
||||
|
||||
import javax.persistence.Table;
|
||||
|
||||
*/
|
||||
/**
|
||||
* 数据库平台
|
||||
* @author: liangxianyou at 2018/11/14 12:58.
|
||||
*/
|
||||
*//*
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Table(name = "MetaDb", catalog = "db_meta")
|
||||
@@ -37,8 +40,9 @@ public class MetaDb extends Doc<MetaDb> {
|
||||
return user + ":" + pwd + "@" + host;
|
||||
}
|
||||
|
||||
@ConvertColumn(ignore = true)
|
||||
//@ConvertColumn(ignore = true)
|
||||
public String getPwd() {
|
||||
return pwd;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
/*
|
||||
package net.tccn.plat;
|
||||
|
||||
import lombok.Getter;
|
||||
@@ -5,9 +6,11 @@ import lombok.Setter;
|
||||
import net.tccn.base.arango.Doc;
|
||||
import javax.persistence.Table;
|
||||
|
||||
*/
|
||||
/**
|
||||
* @author: liangxianyou at 2018/11/26 17:46.
|
||||
*/
|
||||
*//*
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Table(name = "MetaPlat", catalog = "db_meta")
|
||||
@@ -25,3 +28,4 @@ public class MetaPlat extends Doc<MetaPlat> {
|
||||
}
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
@@ -3,32 +3,37 @@ package net.tccn.plat;
|
||||
import net.tccn.base.BaseService;
|
||||
import net.tccn.base.JBean;
|
||||
import net.tccn.base.MetaKit;
|
||||
import net.tccn.base.PageBean;
|
||||
import net.tccn.base.Utils;
|
||||
import net.tccn.base.dbq.jdbc.api.DbAccount;
|
||||
import org.redkale.net.http.RestMapping;
|
||||
import org.redkale.net.http.RestService;
|
||||
import org.redkale.source.FilterBean;
|
||||
import org.redkale.source.Flipper;
|
||||
import org.redkale.util.Comment;
|
||||
|
||||
import java.util.List;
|
||||
import org.redkale.util.Sheet;
|
||||
|
||||
@RestService(name = "plat", automapping = true, comment = "业务/数据平台")
|
||||
public class PlatService extends BaseService {
|
||||
|
||||
@RestMapping(name = "list", comment = "平台列表")
|
||||
public JBean list(MetaPlat plat, Flipper flipper) {
|
||||
public JBean list(MPlat plat, Flipper flipper) {
|
||||
JBean jBean = new JBean();
|
||||
|
||||
//PageBean<SysPlat> page = SysPlat.dao.findPage(plat, flipper);
|
||||
List<MetaPlat> list = MetaKit.getSysPlats();
|
||||
PageBean page = PageBean.by(list, list.size());
|
||||
/*List<MetaPlat> list = MetaKit.getSysPlats();
|
||||
PageBean page = PageBean.by(list, list.size());*/
|
||||
|
||||
return jBean.setBody(page);
|
||||
Sheet<MPlat> sheet = metaSource.querySheet(MPlat.class, flipper, (FilterBean) null);
|
||||
return jBean.setBody(sheet);
|
||||
}
|
||||
|
||||
@Comment("平台信息保存")
|
||||
public JBean save(MetaPlat plat) {
|
||||
MetaKit.save(plat);
|
||||
public JBean save(MPlat plat) {
|
||||
if (!Utils.isEmpty(plat.getPlatid())) {
|
||||
metaSource.update(plat);
|
||||
} else {
|
||||
metaSource.insert(plat);
|
||||
}
|
||||
return JBean.OK;
|
||||
}
|
||||
|
||||
@@ -40,18 +45,29 @@ public class PlatService extends BaseService {
|
||||
//------------------------
|
||||
|
||||
@RestMapping(name = "db_list", comment = "数据源列表")
|
||||
public JBean dbList(MetaDb plat, Flipper flipper) {
|
||||
public JBean dbList(DbAccount plat, Flipper flipper) {
|
||||
JBean jBean = new JBean();
|
||||
|
||||
List<DbAccount> list = MetaKit.getDbPlats();
|
||||
PageBean page = PageBean.by(list, list.size());
|
||||
/*List<DbAccount> list = MetaKit.getDbPlats();
|
||||
PageBean page = PageBean.by(list, list.size());*/
|
||||
|
||||
return jBean.setBody(page);
|
||||
Sheet<DbAccount> sheet = metaSource.querySheet(DbAccount.class, flipper, (FilterBean) null);
|
||||
return jBean.setBody(sheet);
|
||||
}
|
||||
|
||||
@RestMapping(name = "db_save", comment = "数据源信息保存")
|
||||
public JBean dbSave(MetaDb plat) {
|
||||
MetaKit.save(plat);
|
||||
public JBean dbSave(DbAccount plat) {
|
||||
// MetaKit.save(plat);
|
||||
if (!Utils.isEmpty(plat.getDbid()) || plat.getDbid() != 0) {
|
||||
if (Utils.isEmpty(plat.getPwd())) {
|
||||
DbAccount account = MetaKit.getDbPlat(plat.getDbid());
|
||||
plat.setPwd(account.getPwd());
|
||||
}
|
||||
|
||||
metaSource.update(plat);
|
||||
} else {
|
||||
metaSource.insert(plat);
|
||||
}
|
||||
|
||||
return JBean.OK;
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ import net.tccn.base.dbq.jdbc.api.DbAccount;
|
||||
import net.tccn.base.dbq.jdbc.api.DbKit;
|
||||
import net.tccn.base.dbq.table.Column;
|
||||
import net.tccn.base.dbq.table.Table;
|
||||
import net.tccn.meta.MetaTable;
|
||||
import net.tccn.meta.MTable;
|
||||
import org.redkale.net.http.RestMapping;
|
||||
import org.redkale.net.http.RestService;
|
||||
|
||||
@@ -23,13 +23,13 @@ import java.util.stream.Stream;
|
||||
public class _DbService extends BaseService {
|
||||
|
||||
@RestMapping(name = "catalog_list", comment = "获取数据源的database")
|
||||
public JBean catalogList(DbAccount dbAccount, String dbPlatId) {
|
||||
public JBean catalogList(DbAccount dbAccount, int dbid) {
|
||||
JBean jBean = new JBean();
|
||||
DbKit dbKit = null;
|
||||
if (dbAccount != null) {
|
||||
dbKit = new DbKit(dbAccount, "");
|
||||
} else {
|
||||
dbKit = MetaKit.getDbKit(dbPlatId, "");
|
||||
dbKit = MetaKit.getDbKit(dbid, "");
|
||||
}
|
||||
|
||||
List<Map> list = dbKit.queryList("SHOW DATABASES;", Map.class);
|
||||
@@ -40,29 +40,29 @@ public class _DbService extends BaseService {
|
||||
}
|
||||
|
||||
@RestMapping(name = "table_list", comment = "数据库表列表")
|
||||
public List<Table> tableList(String dbPlatId, String catalog, String[] tables) {
|
||||
DbKit dbKit = MetaKit.getDbKit(dbPlatId, "");
|
||||
public List<Table> tableList(int dbid, String catalog, String[] tables) {
|
||||
DbKit dbKit = MetaKit.getDbKit(dbid, "");
|
||||
|
||||
String sql = tplKit.getTpl("db.table_list", Kv.of("catalog", catalog).set("tables", tables));
|
||||
return dbKit.queryList(sql, Table.class);
|
||||
}
|
||||
|
||||
@RestMapping(ignore = true)
|
||||
public List<Table> tableInfoList(String dbPlatId, String catalog, String[] tables) {
|
||||
public List<Table> tableInfoList(int dbid, String catalog, String[] tables) {
|
||||
List<Table> list = new ArrayList<>(tables.length);
|
||||
for (String table : tables) {
|
||||
list.add(tableInfo(dbPlatId, catalog, table));
|
||||
list.add(tableInfo(dbid, catalog, table));
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
@RestMapping(name = "table_info", comment = "数据库表详情")
|
||||
public JBean MetatableInfo(String dbPlatId, String catalog, String tableName) {
|
||||
public JBean MetatableInfo(int dbid, String catalog, String tableName) {
|
||||
JBean jBean = new JBean();
|
||||
try {
|
||||
Table table = tableInfo(dbPlatId, catalog, tableName);
|
||||
Table table = tableInfo(dbid, catalog, tableName);
|
||||
|
||||
jBean.setBody(MetaTable.toAs(table));
|
||||
jBean.setBody(MTable.toAs(table));
|
||||
} catch (Exception e) {
|
||||
jBean.set(-1, "查询表信息失败");
|
||||
new IllegalArgumentException("查询表信息失败", e);
|
||||
@@ -71,8 +71,8 @@ public class _DbService extends BaseService {
|
||||
}
|
||||
|
||||
@RestMapping(ignore = true, comment = "查询表信息")
|
||||
public Table tableInfo(String dbPlatId, String catalog, String tableName) {
|
||||
DbKit dbKit = MetaKit.getDbKit(dbPlatId, catalog);
|
||||
public Table tableInfo(int dbid, String catalog, String tableName) {
|
||||
DbKit dbKit = MetaKit.getDbKit(dbid, catalog);
|
||||
|
||||
String sql = tplKit.getTpl("db.table_list", Kv.of("table", tableName));
|
||||
String columnSql = String.format("SHOW FULL COLUMNS FROM %s.`%s`", catalog, tableName);
|
||||
@@ -92,10 +92,10 @@ public class _DbService extends BaseService {
|
||||
}
|
||||
|
||||
@RestMapping(name = "table_create", comment = "新建表[mysql]")
|
||||
public JBean tableCreate(String dbPlatId, String catalog, String sql) {
|
||||
public JBean tableCreate(int dbid, String catalog, String sql) {
|
||||
JBean jBean = new JBean();
|
||||
|
||||
DbKit dbKit = MetaKit.getDbKit(dbPlatId, catalog);
|
||||
DbKit dbKit = MetaKit.getDbKit(dbid, catalog);
|
||||
dbKit.createTable(sql);
|
||||
|
||||
return jBean;
|
||||
|
||||
@@ -6,7 +6,7 @@ import net.tccn.base.Kv;
|
||||
import net.tccn.base.MetaKit;
|
||||
import net.tccn.base.dbq.table.Table;
|
||||
import net.tccn.file._FileService;
|
||||
import net.tccn.meta.MetaTable;
|
||||
import net.tccn.meta.MTable;
|
||||
import org.redkale.net.http.RestMapping;
|
||||
import org.redkale.net.http.RestParam;
|
||||
import org.redkale.net.http.RestService;
|
||||
@@ -35,8 +35,8 @@ public class _TableService extends BaseService {
|
||||
// excel
|
||||
String filePath,
|
||||
//mysql {数据库连接账号、数据源id、数据库database数组}
|
||||
String dbPlatId, String catalog,
|
||||
@RestParam(name = "platToken") String token) {
|
||||
int dbid, String catalog,
|
||||
@RestParam(name = "plattoken") String token) {
|
||||
|
||||
JBean jBean = new JBean();
|
||||
|
||||
@@ -44,21 +44,21 @@ public class _TableService extends BaseService {
|
||||
jBean = fileService.data(filePath, token);
|
||||
|
||||
} else if ("mysql".equals(cate)) {
|
||||
List<Table> list = dbService.tableList(dbPlatId, catalog, null);
|
||||
List<Table> list = dbService.tableList(dbid, catalog, null);
|
||||
|
||||
String[] tableArr = list.stream().map(Table::getName).toArray(String[]::new);
|
||||
List<String> hv = MetaKit.tableExist(tableArr, token);
|
||||
|
||||
List<MetaTable> sheets = new ArrayList<>();
|
||||
List<MTable> sheets = new ArrayList<>();
|
||||
list.forEach(x -> {
|
||||
MetaTable bean = MetaTable.toAs(x);
|
||||
MTable bean = MTable.toAs(x);
|
||||
bean.setHv(hv.contains(x.getName()) ? 1 : 0);
|
||||
sheets.add(bean);
|
||||
});
|
||||
|
||||
//对数据分组后返回
|
||||
Kv<String, MetaTable> data = Kv.of();
|
||||
sheets.forEach(x -> data.set(x.getName(), x));
|
||||
Kv<String, MTable> data = Kv.of();
|
||||
sheets.forEach(x -> data.set(x.getTablename(), x));
|
||||
|
||||
jBean.setBody(data);
|
||||
}
|
||||
@@ -67,63 +67,65 @@ public class _TableService extends BaseService {
|
||||
}
|
||||
|
||||
@RestMapping(name = "sheet_info", comment = "sheet详情")
|
||||
public JBean sheetInfo(String cate, @RestParam(name = "platToken") String token,
|
||||
public JBean sheetInfo(String cate, @RestParam(name = "plattoken") String token,
|
||||
// excel
|
||||
String filePath, String sheetName,
|
||||
// mysql
|
||||
String dbPlatId, String catalog, String tableName) {
|
||||
int dbid, String catalog, String tableName) {
|
||||
if ("excel".equals(cate)) {
|
||||
return fileService.sheetData(filePath, sheetName, token);
|
||||
} else if ("mysql".equals(cate)) {
|
||||
return new JBean().setBody(dbService.tableInfo(dbPlatId, catalog, tableName));
|
||||
return new JBean().setBody(dbService.tableInfo(dbid, catalog, tableName));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@RestMapping(name = "table_save", comment = "保存数据源实体到元数据实体表")
|
||||
public JBean tableSave(String cate, @RestParam(name = "platToken") String token,
|
||||
public JBean tableSave(String cate, @RestParam(name = "plattoken") String token,
|
||||
String filePath, String[] sheetNames,
|
||||
String dbPlatId, String catalog, String[] tableArr) {
|
||||
int dbid, String catalog, String[] tableArr) {
|
||||
|
||||
if ("excel".equals(cate)) {
|
||||
return fileService.saveSheet(sheetNames, filePath, token);
|
||||
} else if ("mysql".equals(cate)) {
|
||||
List<String> hv = MetaKit.tableExist(tableArr, token);
|
||||
List<Table> tables = dbService.tableInfoList(dbPlatId, catalog, tableArr);
|
||||
List<Table> tables = dbService.tableInfoList(dbid, catalog, tableArr);
|
||||
|
||||
MetaTable[] metaTables = tables.stream()
|
||||
MTable[] metaTables = tables.stream()
|
||||
.filter(t -> !hv.contains(t.getName())) // 去除同名
|
||||
.map(t -> {
|
||||
MetaTable metaTable = MetaTable.toAs(t);
|
||||
MTable metaTable = MTable.toAs(t);
|
||||
metaTable.setCatalog(catalog);
|
||||
metaTable.setDbPlatId(dbPlatId);
|
||||
metaTable.setAlias(MetaKit.nextAlias());// 表别名
|
||||
metaTable.setSysPlatId(platId(token));
|
||||
metaTable.setDbid(dbid);
|
||||
metaTable.setAlias(metaKit.nextAlias());// 表别名
|
||||
metaTable.setPlatid(platId(token));
|
||||
return metaTable;
|
||||
}).toArray(MetaTable[]::new);
|
||||
|
||||
MetaKit.save(metaTables);
|
||||
}).toArray(MTable[]::new);
|
||||
for (MTable table : metaTables) {
|
||||
metaKit.save(table);
|
||||
}
|
||||
|
||||
// 已经有的表 更新
|
||||
MetaTable[] metaTables2 = tables.stream()
|
||||
MTable[] metaTables2 = tables.stream()
|
||||
.filter(t -> hv.contains(t.getName())) // 去除同名
|
||||
.map(t -> {
|
||||
MetaTable table = MetaKit.getMetaTable(t.getName(), token);
|
||||
MTable table = MetaKit.getMetaTable(t.getName(), token);
|
||||
|
||||
MetaTable metaTable = MetaTable.toAs(t);
|
||||
MTable metaTable = MTable.toAs(t);
|
||||
|
||||
table.setCatalog(catalog);
|
||||
table.setDbPlatId(dbPlatId);
|
||||
table.setDbid(dbid);
|
||||
table.setAlias(table.getAlias());// 表别名
|
||||
table.setSysPlatId(platId(token));
|
||||
table.setPlatid(platId(token));
|
||||
|
||||
table.setItems(metaTable.getItems());
|
||||
table.setComment(metaTable.getComment());
|
||||
return table;
|
||||
}).toArray(MetaTable[]::new);
|
||||
|
||||
MetaKit.save(metaTables2);
|
||||
}).toArray(MTable[]::new);
|
||||
for (MTable table : metaTables2) {
|
||||
metaKit.save(table);
|
||||
}
|
||||
}
|
||||
return JBean.OK;
|
||||
}
|
||||
|
||||
@@ -21,13 +21,13 @@ public class DbTask extends Doc<DbTask> {
|
||||
private String name; // 任务标识码
|
||||
private String title; // 任务名称
|
||||
//private String cate; // 任务类型
|
||||
private String dbPlatId; // 数据平台id
|
||||
private int dbid; // 数据平台id
|
||||
private String catalog; //
|
||||
|
||||
private String content; // 任务内容
|
||||
private String remark; // 任务备注
|
||||
private String para; // 任务参数
|
||||
private String sysPlatId; // 平台id
|
||||
private String platid; // 平台id
|
||||
|
||||
// ---------------------
|
||||
}
|
||||
|
||||
@@ -13,13 +13,13 @@ import org.redkale.service.RetResult;
|
||||
@RestService(name = "qtask", automapping = true, comment = "qtask查询服务")
|
||||
public class QtaskService extends BaseService {
|
||||
|
||||
// 调用示例: http://qtask_service_addr_xxxxxx/qtask/call?name=abxx&platToken=3421432¶={h:1}
|
||||
// 调用示例: http://qtask_service_addr_xxxxxx/qtask/call?name=abxx&plattoken=3421432¶={h:1}
|
||||
@RestMapping(name = "call", auth = false)
|
||||
public RetResult<Object> call(String name, Kv<String, String> para, @RestParam(name = "platToken") String platToken) {
|
||||
public RetResult<Object> call(String name, Kv<String, String> para, @RestParam(name = "plattoken") String plattoken) {
|
||||
if (para == null) {
|
||||
para = Kv.of();
|
||||
}
|
||||
return RetResult.success(TaskKit.taskRun(name, platToken, para));
|
||||
return RetResult.success(TaskKit.taskRun(name, plattoken, para));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -5,9 +5,10 @@ import lombok.Setter;
|
||||
import net.tccn.base.Kv;
|
||||
import net.tccn.base.dbq.jdbc.api.DbAccount;
|
||||
|
||||
|
||||
/**
|
||||
* |- dbp: 调用谁, 参数,
|
||||
* |- 谁:谁(干什么) => dbPlatId + content (在程序的世界每个个体,往往都有其明确的职责)
|
||||
* |- 谁:谁(干什么) => dbid + content (在程序的世界每个个体,往往都有其明确的职责)
|
||||
* |-
|
||||
* 任务对象
|
||||
*/
|
||||
@@ -16,7 +17,7 @@ import net.tccn.base.dbq.jdbc.api.DbAccount;
|
||||
public class Task {
|
||||
|
||||
private String name; // 任务标识,同一系统唯一
|
||||
private String dbPlatId; // 数据源id
|
||||
private int dbid; // 数据源id
|
||||
private String catalog; // 数据库 database
|
||||
|
||||
private String content; // 任务内容
|
||||
|
||||
@@ -25,7 +25,7 @@ public class TaskKit {
|
||||
|
||||
public static Task buildTask(dev.zhub.mk.qtask.QTask qTask, Kv para) {
|
||||
Task task = qTask.createTask(para);
|
||||
task.setDbAccount(MetaKit.getDbPlat(qTask.getDbplatid()));
|
||||
task.setDbAccount(MetaKit.getDbPlat(qTask.getDbid()));
|
||||
return task;
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ public class _QtaskService extends BaseService {
|
||||
/*if (task == null) {
|
||||
task = new DbTask();
|
||||
}
|
||||
task.setSysPlatId(platId(token));
|
||||
task.setplatid(platId(token));
|
||||
|
||||
|
||||
PageBean<DbTask> page = DbTask.dao.findPage(task, flipper);*/
|
||||
@@ -72,7 +72,7 @@ public class _QtaskService extends BaseService {
|
||||
|
||||
|
||||
/*@Comment("qtask保存")
|
||||
public JBean save(DbTask task, @RestParam(name = "platToken") String token) {
|
||||
public JBean save(DbTask task, @RestParam(name = "plattoken") String token) {
|
||||
JBean jBean = new JBean();
|
||||
|
||||
do {
|
||||
@@ -83,7 +83,7 @@ public class _QtaskService extends BaseService {
|
||||
|
||||
// 同平台name 唯一校验
|
||||
DbTask bean = new DbTask();
|
||||
bean.setSysPlatId(platId(token));
|
||||
bean.setplatid(platId(token));
|
||||
bean.setName(task.getName());
|
||||
|
||||
DbTask entity = DbTask.dao.findFirst(bean);
|
||||
@@ -95,7 +95,7 @@ public class _QtaskService extends BaseService {
|
||||
if (task.getKey() != null) {
|
||||
task.update();
|
||||
} else {
|
||||
task.setSysPlatId(platId(token));
|
||||
task.setplatid(platId(token));
|
||||
task.save();
|
||||
}
|
||||
MetaKit.reload(task);
|
||||
@@ -107,7 +107,7 @@ public class _QtaskService extends BaseService {
|
||||
}*/
|
||||
|
||||
@Comment("debug调试接口")
|
||||
public JBean debug(QTask task, @RestParam(name = "platToken") String token) {
|
||||
public JBean debug(QTask task, @RestParam(name = "plattoken") String token) {
|
||||
JBean jBean = new JBean();
|
||||
|
||||
Object res = TaskKit.taskRun(task);
|
||||
|
||||
@@ -27,7 +27,7 @@ public class QTaskMysql extends QTaskAbs implements QTask {
|
||||
|
||||
public QTaskMysql(Task task) {
|
||||
super(task);
|
||||
this.dbKit = MetaKit.getDbKit(task.getDbPlatId(), task.getCatalog());
|
||||
this.dbKit = MetaKit.getDbKit(task.getDbid(), task.getCatalog());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -3,37 +3,40 @@ package net.tccn.user;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import net.tccn.base.JBean;
|
||||
import net.tccn.base.arango.Doc;
|
||||
import org.redkale.persistence.Cacheable;
|
||||
import org.redkale.persistence.Column;
|
||||
import org.redkale.persistence.Entity;
|
||||
import org.redkale.persistence.Id;
|
||||
import org.redkale.util.Utility;
|
||||
|
||||
import javax.persistence.Table;
|
||||
|
||||
/**
|
||||
* @author: liangxianyou at 2018/11/22 17:37.
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Table(name = "MetaUser", catalog = "db_meta")
|
||||
public class MetaUser extends Doc<MetaUser> {
|
||||
public static MetaUser dao = dao(MetaUser.class);
|
||||
@Entity
|
||||
@Cacheable(value = true, interval = 60 * 60 * 1000, direct = true)
|
||||
public class MUser {
|
||||
@Id
|
||||
@Column(comment = "[用户ID]")
|
||||
private Integer userid;
|
||||
|
||||
@Column(length = 64, comment = "[用户名]")
|
||||
private String username;
|
||||
//@ConvertColumn(ignore = true,type = ConvertType.JSON)
|
||||
|
||||
@Column(length = 64, comment = "[加密后的密码]")
|
||||
private String pwd;
|
||||
private Long createTime;
|
||||
private Long loginTime;
|
||||
private Integer status;
|
||||
|
||||
@Column(length = 64, comment = "[会话ID]")
|
||||
private String sessionid;
|
||||
|
||||
public MetaUser() {
|
||||
}
|
||||
@Column(comment = "[状态] 1启用,0未启用")
|
||||
private short status;
|
||||
|
||||
public MetaUser(String sessionid) {
|
||||
this.sessionid = sessionid;
|
||||
}
|
||||
//-------------------------------
|
||||
@Column(updatable = false, comment = "[创建时间]")
|
||||
private long createtime;
|
||||
|
||||
public static String md5IfNeed(String password){
|
||||
@Column(comment = "[最后登录时间]")
|
||||
private long logintime;
|
||||
|
||||
public static String md5IfNeed(String password) {
|
||||
if (password == null || password.length() == 0) {
|
||||
return "";
|
||||
}
|
||||
@@ -54,5 +57,4 @@ public class MetaUser extends Doc<MetaUser> {
|
||||
jBean.setBody(this);
|
||||
return jBean;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2,11 +2,10 @@ package net.tccn.user;
|
||||
|
||||
import net.tccn.base.BaseService;
|
||||
import net.tccn.base.JBean;
|
||||
import net.tccn.base.MetaKit;
|
||||
import org.redkale.net.http.RestBody;
|
||||
import org.redkale.net.http.RestMapping;
|
||||
import org.redkale.net.http.RestService;
|
||||
import org.redkale.net.http.RestSessionid;
|
||||
import org.redkale.source.FilterNode;
|
||||
|
||||
/**
|
||||
* @author: liangxianyou at 2018/11/22 17:16.
|
||||
@@ -18,39 +17,44 @@ public class UserService extends BaseService {
|
||||
public JBean login(@RestSessionid String sessionid,
|
||||
String username,
|
||||
String pwd) {
|
||||
MetaUser bean = new MetaUser();
|
||||
MUser bean = new MUser();
|
||||
bean.setUsername(username);
|
||||
|
||||
MetaUser user = MetaKit.findFirst(bean);
|
||||
//MUser user = MetaKit.findFirst(bean);
|
||||
MUser user = metaSource.find(MUser.class, FilterNode.create("username", username));
|
||||
if (user == null) {
|
||||
return JBean.by(-1, "登陆失败:账号无效");
|
||||
}
|
||||
|
||||
JBean jBean = user.checkLogin(pwd);
|
||||
if (jBean.getCode() == 0) {
|
||||
cacheSource.set(30 * 60 * 2,sessionid, MetaUser.class, user);
|
||||
cacheSource.set(30 * 60 * 2, sessionid, MUser.class, user);
|
||||
|
||||
user.setSessionid(sessionid);
|
||||
user.setLoginTime(System.currentTimeMillis());
|
||||
MetaKit.save(user);
|
||||
user.setLogintime(System.currentTimeMillis());
|
||||
// MetaKit.save(user);
|
||||
metaSource.updateColumn(user, "sessionid", "logintime");
|
||||
}
|
||||
|
||||
return jBean;
|
||||
}
|
||||
|
||||
@RestMapping(name = "current")
|
||||
public MetaUser current(@RestSessionid String sessionid) {
|
||||
return getT("user_" + sessionid, MetaUser.class, () -> MetaKit.findFirst(new MetaUser(sessionid)));
|
||||
public MUser current(@RestSessionid String sessionid) {
|
||||
// T
|
||||
//return getT("user_" + sessionid, MUser.class, () -> MetaKit.findFirst(new MetaUser(sessionid)));
|
||||
MUser user = metaSource.find(MUser.class, FilterNode.create("sessionid", sessionid));
|
||||
return user;
|
||||
}
|
||||
|
||||
@RestMapping(name = "logout", comment = "退出登陆")
|
||||
public JBean logout(@RestSessionid String sessionid) {
|
||||
MetaUser user = MetaKit.findFirst(new MetaUser(sessionid));
|
||||
MUser user = metaSource.find(MUser.class, FilterNode.create("sessionid", sessionid));
|
||||
if (user != null) {
|
||||
user.setSessionid("");
|
||||
MetaKit.save(user);
|
||||
metaSource.updateColumn(user, "sessionid");
|
||||
}
|
||||
cacheSource.removeAsync("user_" + sessionid);
|
||||
// cacheSource.removeAsync("user_" + sessionid);
|
||||
|
||||
return JBean.OK;
|
||||
}
|
||||
|
||||
@@ -5,6 +5,13 @@
|
||||
UPDATE "#(key)" WITH { link:null } IN Characters
|
||||
#end
|
||||
|
||||
#sql("mable.lastAlias")
|
||||
SELECT alias
|
||||
FROM mtable
|
||||
ORDER BY LENGTH(alias) DESC, alias DESC
|
||||
LIMIT 1;
|
||||
#end
|
||||
|
||||
#sql("metaTable.lastAlias")
|
||||
for d in MetaTable
|
||||
sort length(d.alias) desc, d.alias desc
|
||||
|
||||
@@ -1,26 +1,15 @@
|
||||
import net.tccn.base.*;
|
||||
import net.tccn.base.dbq.fbean.FBean;
|
||||
import net.tccn.base.dbq.jdbc.api.DbAccount;
|
||||
import net.tccn.base.dbq.jdbc.api.DbKit;
|
||||
import net.tccn.base.dbq.parser.ParseMysql;
|
||||
import net.tccn.dict.Dict;
|
||||
import net.tccn.dict.DictKit;
|
||||
import net.tccn.meta.MetaService;
|
||||
import net.tccn.meta.MetaTable;
|
||||
import net.tccn.user.MetaUser;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.junit.Test;
|
||||
import org.redkale.convert.json.JsonConvert;
|
||||
import org.redkale.source.CacheMemorySource;
|
||||
import org.redkale.util.TypeToken;
|
||||
import org.redkale.util.Utility;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.*;
|
||||
import java.util.Date;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
import java.util.concurrent.locks.ReentrantReadWriteLock;
|
||||
import java.util.function.BiPredicate;
|
||||
import java.util.function.Predicate;
|
||||
@@ -39,7 +28,7 @@ public class RunTest<T> {
|
||||
|
||||
/*public static Task A = new Task("mysql", "select * from user where userid=#(userid)", "查询用户列表", Kv.of("userid", 1));
|
||||
public static Task B = new Task("method", "User.say", "user调用", Kv.of("name", "张三").set("age", 13));
|
||||
public static Task C = new Task("http", "http://127.0.0.1/meta/db_plat_list?platToken=3421432", "查询数据平台列表", Kv.of("abx", "abx111"));
|
||||
public static Task C = new Task("http", "http://127.0.0.1/meta/db_plat_list?plattoken=3421432", "查询数据平台列表", Kv.of("abx", "abx111"));
|
||||
public static Task d = new Task("es", "http://192.168.91.5:9200/_sql?", "查询数据平台列表", Kv.of("sql", "select * from basic_iotdevice_all limit 10"));
|
||||
public static Task e = new Task("http", "http://192.168.91.5:9200/_sql?sql=select%20*%20from%20basic_iotdevice_all%20limit%2010", "查询数据平台列表", Kv.of());
|
||||
*/
|
||||
@@ -60,7 +49,7 @@ public class RunTest<T> {
|
||||
|
||||
//@Test
|
||||
public void parseFBeanTest() {
|
||||
String str = "{'platToken':'ipsm_v4','name':'historyTrack'," +
|
||||
String str = "{'plattoken':'ipsm_v4','name':'historyTrack'," +
|
||||
"'filters':[{'col':'ap.comName','value':'贵阳市第十九中学','type':'LIKE'},{'col':'','value':'name=213113','type':'SQL'}," +
|
||||
"{'col':'age','values':[1,2],'type':'RANGE'}]," +
|
||||
|
||||
@@ -74,7 +63,7 @@ public class RunTest<T> {
|
||||
System.out.println("list:" + parse[1]);
|
||||
}
|
||||
|
||||
@Test
|
||||
/*@Test
|
||||
public void jdbcTest() {
|
||||
//DbAccount jdbcAccount = new DbAccount("jdbc:mysql://192.168.202.11:3306/gxbii_dev", "root", "eversec123098");
|
||||
DbAccount dbAccount = new DbAccount();
|
||||
@@ -103,10 +92,10 @@ public class RunTest<T> {
|
||||
|
||||
|
||||
//find count
|
||||
/*long total = dbKit.queryColumn("select count(1) from basic_device", long.class);
|
||||
*//*long total = dbKit.queryColumn("select count(1) from basic_device", long.class);
|
||||
System.out.println(total);
|
||||
System.out.println(int.class);*/
|
||||
}
|
||||
System.out.println(int.class);*//*
|
||||
}*/
|
||||
|
||||
//@Test
|
||||
public void toAsTest() {
|
||||
@@ -173,7 +162,7 @@ public class RunTest<T> {
|
||||
}
|
||||
|
||||
//@Test
|
||||
public void userCreate() {
|
||||
/*public void userCreate() {
|
||||
MetaUser user = new MetaUser();
|
||||
user.setUsername("admin");
|
||||
user.setCreateTime(System.currentTimeMillis());
|
||||
@@ -181,12 +170,12 @@ public class RunTest<T> {
|
||||
user.setStatus(1);
|
||||
|
||||
user.save();
|
||||
}
|
||||
}*/
|
||||
|
||||
//@Test
|
||||
public void t() {
|
||||
/*public void t() {
|
||||
System.out.println(MetaKit.nextAlias());
|
||||
}
|
||||
}*/
|
||||
|
||||
//@Test
|
||||
public void kvTest() {
|
||||
@@ -216,27 +205,38 @@ public class RunTest<T> {
|
||||
Object o = Kv.toAs(k, v);
|
||||
switch (v.getSimpleName()) {
|
||||
case "int":
|
||||
System.out.println((int)o);break;
|
||||
System.out.println((int) o);
|
||||
break;
|
||||
case "Integer":
|
||||
System.out.println((Integer)o);break;
|
||||
System.out.println(o);
|
||||
break;
|
||||
case "long":
|
||||
System.out.println((long)o);break;
|
||||
System.out.println((long) o);
|
||||
break;
|
||||
case "Long":
|
||||
System.out.println((Long)o);break;
|
||||
System.out.println(o);
|
||||
break;
|
||||
case "short":
|
||||
System.out.println((short)o);break;
|
||||
System.out.println((short) o);
|
||||
break;
|
||||
case "Short":
|
||||
System.out.println((Short)o);break;
|
||||
System.out.println(o);
|
||||
break;
|
||||
case "byte":
|
||||
System.out.println((byte)o);break;
|
||||
System.out.println((byte) o);
|
||||
break;
|
||||
case "float":
|
||||
System.out.println((float)o);break;
|
||||
System.out.println((float) o);
|
||||
break;
|
||||
case "Float":
|
||||
System.out.println((Float)o);break;
|
||||
System.out.println(o);
|
||||
break;
|
||||
case "Byte":
|
||||
System.out.println((Byte)o);break;
|
||||
System.out.println(o);
|
||||
break;
|
||||
case "String":
|
||||
System.out.println((String)o);break;
|
||||
System.out.println((String) o);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -252,12 +252,12 @@ public class RunTest<T> {
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
/*@Test
|
||||
public void T() {
|
||||
List<MetaTable> metaTables = MetaKit.getMetaTables();
|
||||
|
||||
System.out.println(metaTables.size());
|
||||
}
|
||||
}*/
|
||||
|
||||
TplKit tplKit = TplKit.use();
|
||||
|
||||
@@ -301,7 +301,7 @@ public class RunTest<T> {
|
||||
}*/
|
||||
|
||||
//@Test
|
||||
public void dataToFileTest() {
|
||||
/*public void dataToFileTest() {
|
||||
|
||||
List<MetaService> metaServices = MetaService.dao.find();
|
||||
|
||||
@@ -311,17 +311,17 @@ public class RunTest<T> {
|
||||
file.getParentFile().mkdirs();
|
||||
|
||||
FileKit.strToFile(convert.convertTo(metaKit), file);
|
||||
}
|
||||
}*/
|
||||
|
||||
//@Test
|
||||
public void readJson() {
|
||||
/*public void readJson() {
|
||||
File file = new File("tmp/MetaService.json");
|
||||
try {
|
||||
Type type = new TypeToken<List<MetaService>>() {
|
||||
Type type = new TypeToken<List<MService>>() {
|
||||
}.getType();
|
||||
|
||||
|
||||
List<MetaService> list = convert.convertFrom(type, new FileInputStream(file));
|
||||
List<MService> list = convert.convertFrom(type, new FileInputStream(file));
|
||||
|
||||
System.out.println(list);
|
||||
|
||||
@@ -329,22 +329,22 @@ public class RunTest<T> {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
Class clazz = MetaService.class;
|
||||
Class clazz = MService.class;
|
||||
|
||||
//File file = new File(String.format("tmp/%s.json", clazz.getSimpleName()));
|
||||
|
||||
/*
|
||||
*//*
|
||||
写入数据到 文件
|
||||
MetaKit.cacheSave(MetaTable.class);
|
||||
MetaKit.cacheSave(MetaLink.class);
|
||||
MetaKit.cacheSave(MetaService.class);
|
||||
MetaKit.cacheSave(DbAccount.class);
|
||||
MetaKit.cacheSave(SysPlat.class);*/
|
||||
MetaKit.cacheSave(SysPlat.class);*//*
|
||||
|
||||
}
|
||||
}*/
|
||||
|
||||
//@Test
|
||||
public void cacheMemorySourceTest() {
|
||||
/*public void cacheMemorySourceTest() {
|
||||
CacheMemorySource source = new CacheMemorySource("");
|
||||
//MetaKit.dcate = "db";
|
||||
//MetaKit.init();
|
||||
@@ -365,9 +365,9 @@ public class RunTest<T> {
|
||||
System.out.println(metaTable);
|
||||
|
||||
|
||||
}
|
||||
}*/
|
||||
|
||||
public List<Map> dbKitTest() {
|
||||
/*public List<Map> dbKitTest() {
|
||||
DbAccount dbAccount = new DbAccount();
|
||||
dbAccount.setCate("mysql");
|
||||
dbAccount.setUrl("jdbc:mysql://192.168.202.11:3306/gxbii_dev");
|
||||
@@ -387,11 +387,11 @@ public class RunTest<T> {
|
||||
System.out.println(list);
|
||||
|
||||
return list;
|
||||
}
|
||||
}*/
|
||||
|
||||
// 通用导出组件测试
|
||||
//@Test
|
||||
public void exportTest() {
|
||||
/*public void exportTest() {
|
||||
List<Map> list = dbKitTest();
|
||||
|
||||
Kv kv = Kv.of("platID", "平台id")
|
||||
@@ -406,7 +406,7 @@ public class RunTest<T> {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
}*/
|
||||
|
||||
//@Test
|
||||
public void switchTest() {
|
||||
|
||||
Reference in New Issue
Block a user