This commit is contained in:
2019-04-23 15:47:08 +08:00
parent e5a4451a7e
commit 8a03b03888
9 changed files with 119 additions and 74 deletions

View File

@@ -156,6 +156,18 @@ public class Kv<K,V> extends LinkedHashMap<K,V> {
case "Double": _v = Double.parseDouble((String) v); break;
default: _v = v;
}
} else if (v.getClass() == Integer.class) {
switch (clazz.getSimpleName()) {
case "long":
case "Long": _v = (long) (int) v; break;
case "int":
case "Integer": _v = (int) v; break;
case "short":
case "Short": _v = (short) (int) v; break;
case "float":
case "Float": _v = (float) (int) v; break;
default: _v = v;
}
}
else {

View File

@@ -109,6 +109,14 @@ public class MetaKit {
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));
}).findAny();
return any.get();
}
/**
* 通过 MetaLink[] 得到 MetaTable{}
* @param links
@@ -140,7 +148,7 @@ public class MetaKit {
* @param name
* @return
*/
public static MetaService getMetaService(String name) {
public static MetaService getMetaService(String name, String token) {
Optional<MetaService> service = metaServices.stream().filter(x -> x.getName().equals(name)).findAny();
//处理业务逻辑
service.ifPresent(x -> {
@@ -246,8 +254,8 @@ public class MetaKit {
return cfg;
};
public static Map cfg(String name) {
MetaService metaService = getMetaService(name);
public static Map cfg(String name, String token) {
MetaService metaService = getMetaService(name, token);
Kv<String, MetaTable> metaTables = getMetaTables(metaService, false);
List<String> shows = metaService.getShows();
@@ -362,6 +370,30 @@ public class MetaKit {
.set("details", _details);
}
@Comment("业务导出表头配置")
public Kv cfgExport(String name, String token) {
MetaService metaService = getMetaService(name, token);
Kv<String, MetaTable> tables = getMetaTables(metaService, true);
List<String> exports = metaService.getExports();
Kv kv = Kv.of();
//从 meta-table 中得到字段label
exports.forEach(x -> {
try {
String[] arr = x.split("[.]");
MetaTable table = tables.get(arr[0]);
Optional<Field> any = table.getItems().stream().filter(y -> y.getName().equals(arr[1])).findAny();
Field field = any.get();
kv.put(x, field.getLabel());
} catch (Exception e) {
new IllegalArgumentException(String.format("字段信息处理异常:[%s]", x), e);
}
});
return kv;
}
//itemUpdate
public static BiFunction<MetaTable, List<Field>, MetaTable> itemUpdate = (t, fields) -> {
List<Field> items = t.getItems();
@@ -376,9 +408,9 @@ public class MetaKit {
};
//showUpdate
public static BiFunction<String, List<String>, MetaService> showUpdate = (serviceKey, shows) -> {
/*public static BiFunction<String, List<String>, MetaService> showUpdate = (name, shows) -> {
MetaService metaService = getMetaService(serviceKey);
MetaService metaService = getMetaService(name, "");
MetaService _metaService = MetaService.dao.findByKey(metaService.getKey());
_metaService.setShows(shows);
@@ -386,7 +418,7 @@ public class MetaKit {
metaService.setShows(shows);//更新缓存
return metaService;
};
};*/
public static MetaTable getMetaTableByKey(String key) {

View File

@@ -22,7 +22,7 @@ public class DbExecutors {
String[] sqls = PARSER.parse(fBean);
//当前的业务 => 获取主表 信息 => 数据源信息 => 数据源对象 => 创建数据工具对象 => 查询数据
MetaService metaService = MetaKit.getMetaService(fBean.getName());
MetaService metaService = MetaKit.getMetaService(fBean.getName(), fBean.getPlatToken());
MetaTable mainTable = MetaKit.getMetaTableByAlias(metaService.getTable());

View File

@@ -8,13 +8,24 @@ import java.util.List;
*/
public class FBean {
private String name;//service key
private String platToken; //plat token
String name; // service key
private String type; // 操作类型 listexport
private List<Filter> filters;//[{f:xx, v: v, type:t}] -- t,
private List<Order> orders;//{f1: 1, f2: -1}
private Limit limit;//{pn: 1, ps: 10}
//---------- getter/setter ------------
public void setPlatToken(String platToken) {
this.platToken = platToken;
}
public String getPlatToken() {
return platToken;
}
public String getName() {
return name;
}

View File

@@ -11,12 +11,9 @@ import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.function.BiFunction;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import static java.util.Arrays.asList;
/**
* 查询的数据是否同库,
* 是:支持副表过滤
@@ -45,7 +42,7 @@ public class ParseMysql implements Parser {
};
@Deprecated
Function<FBean, Kv<String, MetaTable>> tablesFun = fbean -> {
/*Function<FBean, Kv<String, MetaTable>> tablesFun = fbean -> {
MetaService metaService = MetaKit.getMetaService(fbean.getName());
List<Filter> filters = fbean.getFilters();
List<String> shows = metaService.getShows();
@@ -88,7 +85,7 @@ public class ParseMysql implements Parser {
return tables;
};
};*/
Predicate<Kv<String, MetaTable>> sameDbFun = (kv) -> {
String dbPlatId = null;
@@ -104,7 +101,7 @@ public class ParseMysql implements Parser {
@Override
public String[] parse(FBean fBean) {
MetaService metaService = MetaKit.getMetaService(fBean.getName());
MetaService metaService = MetaKit.getMetaService(fBean.getName(), fBean.getPlatToken());
Kv<String, MetaTable> tables = MetaKit.getMetaTables(metaService, false);//所有的关联表信息
MetaTable metaTable = tables.get(metaService.getTable());//基础元数据

View File

@@ -0,0 +1,7 @@
package net.tccn.qtask.impl;
/**
* @author: liangxianyou
*/
public class QTaskShell {
}

View File

@@ -1,19 +1,23 @@
package net.tccn.service;
import com.lxyer.excel.poi.ExcelKit;
import net.tccn.base.JBean;
import net.tccn.base.Kv;
import net.tccn.base.PageBean;
import net.tccn.dbq.DbExecutors;
import net.tccn.dbq.fbean.FBean;
import net.tccn.meta.MetaTable;
import org.redkale.net.http.HttpScope;
import org.redkale.net.http.RestMapping;
import org.redkale.net.http.RestParam;
import org.redkale.net.http.RestService;
import org.redkale.util.Comment;
import javax.annotation.Resource;
import java.util.Map;
import java.util.concurrent.ExecutionException;
/**
* 数据服务
* 数据服务 对外提供服务
* @author: liangxianyou at 2019/1/6 20:46.
*/
@RestService(name = "data", automapping = true, comment = "数据服务")
@@ -27,6 +31,7 @@ public class DataService extends BaseService {
public JBean findList(FBean fBean, @RestParam(name = "platToken") String token) {
JBean jBean = new JBean();
try {
fBean.setPlatToken(token);
PageBean page = DbExecutors.findPage(fBean);
jBean.setBody(page);
} catch (Exception e) {
@@ -37,8 +42,8 @@ public class DataService extends BaseService {
}
@RestMapping(name = "save", comment = "数据保存")
public JBean save(String ks, Map data, @RestParam(name = "platToken") String token) {
MetaTable metaTable = metadataService.findMetaTable(ks, token);
public JBean save(String name, Map data, @RestParam(name = "platToken") String token) {
//MetaTable metaTable = MetaKit.getMetaTable(ks, token);
//String sql = metaTable.buildSaveSql(data);
@@ -46,4 +51,23 @@ public class DataService extends BaseService {
return null;
}
@Comment("数据导出excel")
public HttpScope export(FBean fBean, @RestParam(name = "platToken") String token) {
try {
fBean.setPlatToken(token);
PageBean page = DbExecutors.findPage(fBean);
ExcelKit.exportExcel(page.getRows(), Kv.of());
return HttpScope.refer("excel").attr("data", page.getRows()).attr("heads", null);
} catch (ExecutionException | InterruptedException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return HttpScope.refer("excel");
}
}

View File

@@ -4,7 +4,6 @@ import net.tccn.base.JBean;
import net.tccn.base.Kv;
import net.tccn.base.MetaKit;
import net.tccn.dbq.Field;
import net.tccn.dbq.jdbc.api.DbAccount;
import net.tccn.meta.MetaLink;
import net.tccn.meta.MetaService;
import net.tccn.meta.MetaTable;
@@ -13,7 +12,6 @@ import org.redkale.net.http.RestMapping;
import org.redkale.net.http.RestParam;
import org.redkale.net.http.RestService;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -24,51 +22,6 @@ import java.util.stream.Collectors;
@RestService(name = "meta", automapping = true, comment = "元数据服务")
public class MetadataService extends BaseService { //arango
@Resource
private QtaskService qtaskService;
public MetaTable findMetaTable(String name, String token) {
return getT("meta_cols_" + name + token, MetaTable.class, () -> {
return MetaKit.getMetaTables()
.stream()
.filter(x -> {
//fixme: 平台过滤
return x.getName().equals(name);
})
.findAny()
.get();
});
}
@RestMapping(name = "list_cfg", auth = false, comment = "内容列表配置")
public JBean listCfg(String key, @RestParam(name = "platToken") String token) {
JBean jBean = JBean.by(0, "");
MetaService metaService = MetaKit.getMetaService(key);
fixme: jBean.set(0, "", MetaKit.builderCfg.apply(metaService));
return jBean;
}
@RestMapping(name = "cfg", auth = false, comment = " 功能配置")
public JBean cfg(String name, @RestParam(name = "platToken") String token) {
JBean jBean = JBean.by(0, "");
jBean.set(0, "", MetaKit.cfg(name));
return jBean;
}
//----------- 数据平台 ---------------
@RestMapping(name = "db_plat_list", comment = "数据平台")
public List<DbAccount> dbPlatList() {
return MetaKit.getDbPlats();
}
//----------- 元数据管理 ---------------
@RestMapping(name = "tablelist", comment = "table列表")
public JBean tableList(@RestParam(name = "platToken") String token, String catalog, String dbPlatId, String name) {
@@ -113,7 +66,7 @@ public class MetadataService extends BaseService { //arango
MetaTable metaTable = null;
if (!isEmpty.test(name)) {
metaTable = findMetaTable(name, token);
metaTable = MetaKit.getMetaTable(name, token);
}
if (metaTable == null && !isEmpty.test(alias)) {
metaTable = MetaKit.getMetaTableByAlias(alias);
@@ -142,7 +95,7 @@ public class MetadataService extends BaseService { //arango
}
// 标识码重复校验
MetaService metaService = MetaKit.getMetaService(service.getName());
MetaService metaService = MetaKit.getMetaService(service.getName(), token);
if (metaService != null && !metaService.getKey().equals(service.getKey())) {
jBean.set(-1, "业务标识码被占用,修改业务标识码重试");
break;
@@ -162,13 +115,13 @@ public class MetadataService extends BaseService { //arango
@RestMapping(name = "service_info", comment = "service基本信息")
public JBean serviceInfo(@RestParam(name = "platToken") String token, String name) {
MetaService metaService = MetaKit.getMetaService(name);
MetaService metaService = MetaKit.getMetaService(name, token);
return JBean.by(0, "", metaService);
}
@RestMapping(name = "service_detail", comment = "service详情")
public JBean serviceDetail(@RestParam(name = "platToken") String token, String name) {
MetaService metaService = MetaKit.getMetaService(name);
MetaService metaService = MetaKit.getMetaService(name, token);
Kv detail = MetaKit.buildeDetail(metaService);
return JBean.by(0, "", detail);
@@ -199,7 +152,7 @@ public class MetadataService extends BaseService { //arango
public JBean showSort(String serviceKey , List<String> items, @RestParam(name = "platToken") String token) {
if (items == null || items.size() == 0) return null;
MetaService metaService = MetaKit.getMetaService(serviceKey);
MetaService metaService = MetaKit.getMetaService(serviceKey, token);
metaService.setShows(items);
metaService.update();
@@ -211,7 +164,7 @@ public class MetadataService extends BaseService { //arango
public List<String> exportSort(String serviceKey , List<String> items, @RestParam(name = "platToken") String token) {
if (items == null || items.size() == 0) return null;
MetaService metaService = MetaKit.getMetaService(serviceKey);
MetaService metaService = MetaKit.getMetaService(serviceKey, token);
metaService.setExports(items);
metaService.update();
@@ -223,7 +176,7 @@ public class MetadataService extends BaseService { //arango
public List<String> importSort(String serviceKey , List<String> items, @RestParam(name = "platToken") String token) {
if (isEmpty.test(items)) return null;
MetaTable metaTable = findMetaTable(serviceKey, token);
MetaTable metaTable = MetaKit.getMetaTable(serviceKey, token);
//fixme: metaTable.setImports(items);
metaTable.update();
return items;
@@ -247,7 +200,7 @@ public class MetadataService extends BaseService { //arango
@RestParam(name = "filters") String filters,
@RestParam(name = "platToken") String token) {
List _filters = gson.fromJson(filters, List.class);
MetaService metaService = MetaKit.getMetaService(serviceKey);
MetaService metaService = MetaKit.getMetaService(serviceKey, token);
metaService.setFilters(_filters);
metaService.update();
@@ -338,4 +291,13 @@ public class MetadataService extends BaseService { //arango
return jBean;
}
// ------------------------------------ 对外服务 --------------------------------------
@RestMapping(name = "cfg", auth = false, comment = " 功能配置")
public JBean cfg(String name, @RestParam(name = "platToken") String token) {
JBean jBean = JBean.by(0, "");
jBean.set(0, "", MetaKit.cfg(name, token));
return jBean;
}
}

View File

@@ -113,7 +113,7 @@ public class RunTest<T> {
@Test
public void buildeDetailTest() {
Kv kv = MetaKit.buildeDetail(MetaKit.getMetaService("user_service"));
Kv kv = MetaKit.buildeDetail(MetaKit.getMetaService("user_service", "3421432"));
System.out.println(kv);
}