From 8a03b038881bac99b13f88d4ae38cf4be2fcdb77 Mon Sep 17 00:00:00 2001 From: lxyer <237809796@qq.com> Date: Tue, 23 Apr 2019 15:47:08 +0800 Subject: [PATCH] . --- src/main/java/net/tccn/base/Kv.java | 12 ++++ src/main/java/net/tccn/base/MetaKit.java | 44 ++++++++++-- src/main/java/net/tccn/dbq/DbExecutors.java | 2 +- src/main/java/net/tccn/dbq/fbean/FBean.java | 13 +++- .../java/net/tccn/dbq/parser/ParseMysql.java | 9 +-- .../java/net/tccn/qtask/impl/QTaskShell.java | 7 ++ .../java/net/tccn/service/DataService.java | 32 +++++++-- .../net/tccn/service/MetadataService.java | 72 +++++-------------- src/test/java/RunTest.java | 2 +- 9 files changed, 119 insertions(+), 74 deletions(-) create mode 100644 src/main/java/net/tccn/qtask/impl/QTaskShell.java diff --git a/src/main/java/net/tccn/base/Kv.java b/src/main/java/net/tccn/base/Kv.java index 1f7a91e..380f5ea 100644 --- a/src/main/java/net/tccn/base/Kv.java +++ b/src/main/java/net/tccn/base/Kv.java @@ -156,6 +156,18 @@ public class Kv extends LinkedHashMap { 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 { diff --git a/src/main/java/net/tccn/base/MetaKit.java b/src/main/java/net/tccn/base/MetaKit.java index e23439a..e227153 100644 --- a/src/main/java/net/tccn/base/MetaKit.java +++ b/src/main/java/net/tccn/base/MetaKit.java @@ -109,6 +109,14 @@ public class MetaKit { return table.orElse(null); } + public static MetaTable getMetaTable(String name, String token) { + Optional 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 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 metaTables = getMetaTables(metaService, false); List 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 tables = getMetaTables(metaService, true); + List 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 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> itemUpdate = (t, fields) -> { List items = t.getItems(); @@ -376,9 +408,9 @@ public class MetaKit { }; //showUpdate - public static BiFunction, MetaService> showUpdate = (serviceKey, shows) -> { + /*public static BiFunction, 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) { diff --git a/src/main/java/net/tccn/dbq/DbExecutors.java b/src/main/java/net/tccn/dbq/DbExecutors.java index b47ac97..ff849d5 100644 --- a/src/main/java/net/tccn/dbq/DbExecutors.java +++ b/src/main/java/net/tccn/dbq/DbExecutors.java @@ -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()); diff --git a/src/main/java/net/tccn/dbq/fbean/FBean.java b/src/main/java/net/tccn/dbq/fbean/FBean.java index 2be74ba..a1b3fda 100644 --- a/src/main/java/net/tccn/dbq/fbean/FBean.java +++ b/src/main/java/net/tccn/dbq/fbean/FBean.java @@ -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; // 操作类型 list,export + private List filters;//[{f:xx, v: v, type:t}] -- t, private List 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; } diff --git a/src/main/java/net/tccn/dbq/parser/ParseMysql.java b/src/main/java/net/tccn/dbq/parser/ParseMysql.java index efffde9..973aea6 100644 --- a/src/main/java/net/tccn/dbq/parser/ParseMysql.java +++ b/src/main/java/net/tccn/dbq/parser/ParseMysql.java @@ -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> tablesFun = fbean -> { + /*Function> tablesFun = fbean -> { MetaService metaService = MetaKit.getMetaService(fbean.getName()); List filters = fbean.getFilters(); List shows = metaService.getShows(); @@ -88,7 +85,7 @@ public class ParseMysql implements Parser { return tables; - }; + };*/ Predicate> 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 tables = MetaKit.getMetaTables(metaService, false);//所有的关联表信息 MetaTable metaTable = tables.get(metaService.getTable());//基础元数据 diff --git a/src/main/java/net/tccn/qtask/impl/QTaskShell.java b/src/main/java/net/tccn/qtask/impl/QTaskShell.java new file mode 100644 index 0000000..d7e4267 --- /dev/null +++ b/src/main/java/net/tccn/qtask/impl/QTaskShell.java @@ -0,0 +1,7 @@ +package net.tccn.qtask.impl; + +/** + * @author: liangxianyou + */ +public class QTaskShell { +} diff --git a/src/main/java/net/tccn/service/DataService.java b/src/main/java/net/tccn/service/DataService.java index 932e8ac..ea291c9 100644 --- a/src/main/java/net/tccn/service/DataService.java +++ b/src/main/java/net/tccn/service/DataService.java @@ -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"); + } + } diff --git a/src/main/java/net/tccn/service/MetadataService.java b/src/main/java/net/tccn/service/MetadataService.java index 3534081..7328765 100644 --- a/src/main/java/net/tccn/service/MetadataService.java +++ b/src/main/java/net/tccn/service/MetadataService.java @@ -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 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 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 exportSort(String serviceKey , List 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 importSort(String serviceKey , List 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; + } } diff --git a/src/test/java/RunTest.java b/src/test/java/RunTest.java index f3f8207..967ff21 100644 --- a/src/test/java/RunTest.java +++ b/src/test/java/RunTest.java @@ -113,7 +113,7 @@ public class RunTest { @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); }