From 97e7b472138193333b704b3452c8f71b420c8986 Mon Sep 17 00:00:00 2001 From: lxyer <237809796@qq.com> Date: Mon, 1 Jul 2019 15:47:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E5=AD=97=E5=85=B8?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E4=BB=8E=E9=9D=99=E6=80=81=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- conf/config.txt | 3 +- src/main/java/net/tccn/base/MetaKit.java | 41 ++++++++++++---- .../java/net/tccn/base/MetaListenter.java | 6 ++- src/main/java/net/tccn/dict/Dict.java | 17 +++++-- src/main/java/net/tccn/dict/DictKit.java | 48 +++++++++---------- .../java/net/tccn/service/DictService.java | 14 ++++-- 6 files changed, 84 insertions(+), 45 deletions(-) diff --git a/conf/config.txt b/conf/config.txt index 0abf23e..17ef34e 100644 --- a/conf/config.txt +++ b/conf/config.txt @@ -22,4 +22,5 @@ arango.database=db_dev tplPath=/tpl # file|db -dcate=db +dataCate=db +dataPath=${APP_HOME}/conf/data/ diff --git a/src/main/java/net/tccn/base/MetaKit.java b/src/main/java/net/tccn/base/MetaKit.java index 7f1e002..99d82f8 100644 --- a/src/main/java/net/tccn/base/MetaKit.java +++ b/src/main/java/net/tccn/base/MetaKit.java @@ -5,7 +5,7 @@ import net.tccn.base.arango.Doc; import net.tccn.dbq.jdbc.api.DbAccount; import net.tccn.dbq.jdbc.api.DbKit; import net.tccn.dbq.table.Field; -import net.tccn.dict.DictKit; +import net.tccn.dict.Dict; import net.tccn.meta.*; import net.tccn.plat.DbPlat; import net.tccn.plat.SysPlat; @@ -45,8 +45,11 @@ public final class MetaKit { private static List users; @Getter private static List taskEntities; + @Getter + private static List dicts; - protected static String dcate; + protected static String dcate = "db"; + protected static String dataPath; private static final JsonConvert convert = JsonConvert.root(); // ----------------------------------- @@ -58,8 +61,7 @@ public final class MetaKit { reload(SysPlat.class); reload(User.class); reload(TaskEntity.class); - - DictKit dictKit = DictKit.use(""); + reload(Dict.class); } @@ -74,7 +76,7 @@ public final class MetaKit { public static void reload(Class clazz, String key) { try { - File file = new File(String.format("tmp/%s.json", clazz.getSimpleName())); + File file = new File(String.format("%s%s.json", dataPath, clazz.getSimpleName())); if ("file".equals(dcate)) { if (MetaTable.class == clazz) { Type type = new TypeToken>() { @@ -108,6 +110,10 @@ public final class MetaKit { Type type = new TypeToken>() { }.getType(); taskEntities = convert.convertFrom(type, new FileInputStream(file)); + } else if (Dict.class == clazz) { + Type type = new TypeToken>() { + }.getType(); + dicts = convert.convertFrom(type, new FileInputStream(file)); } } else { if (MetaTable.class == clazz) metaTables = MetaTable.dao.find(); @@ -120,6 +126,8 @@ public final class MetaKit { else if (TaskEntity.class == clazz) { taskEntities = TaskEntity.dao.find(); TaskKit.init(); + } else if (Dict.class == clazz) { + dicts = Dict.dao.find(); } } @@ -129,13 +137,14 @@ public final class MetaKit { } public static void cacheSave() { + cacheSave(MetaTable.class); cacheSave(MetaLink.class); cacheSave(MetaService.class); cacheSave(DbAccount.class); - cacheSave(DbPlat.class); cacheSave(SysPlat.class); cacheSave(User.class); cacheSave(TaskEntity.class); + cacheSave(Dict.class); } private static void cacheSave(Class clazz) { @@ -144,13 +153,14 @@ public final class MetaKit { else if (MetaLink.class == clazz) list = metaLinks; else if (MetaService.class == clazz) list = metaServices; else if (DbAccount.class == clazz) list = dbPlats; - else if (DbPlat.class == clazz) list = dbPlats; else if (SysPlat.class == clazz) list = sysPlats; else if (User.class == clazz) list = users; + else if (TaskEntity.class == clazz) list = taskEntities; + else if (Dict.class == clazz) list = dicts; if (list == null || list.size() == 0) return; - File file = new File(String.format("tmp/%s.json", list.get(0).getClass().getSimpleName())); + 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); } @@ -167,10 +177,20 @@ public final class MetaKit { return MetaKit.getMetaTableByAlias(metaService.getTable()); } + /** + * 通过平台token 得到平台字典数据 + * + * @param platToken + */ + public static Map> getDictData(String platToken) { + String platId = MetaKit.getPlatId(platToken); + Map> dicts = MetaKit.dicts.stream().filter(x -> x.getSysPlatId().equals(platId)).collect(Collectors.groupingBy(Dict::getType)); + return dicts; + } + // ----------------------------------- public void cleanData() { - } /** @@ -204,7 +224,8 @@ public final class MetaKit { List items = t.getItems(); //x 是跨越值 - a:for (int i = 0, x = 0; i < arr.length; i++) { + a: + for (int i = 0, x = 0; i < arr.length; i++) { int inx = i - x; if (!items.get(inx).equals(arr[i])) { diff --git a/src/main/java/net/tccn/base/MetaListenter.java b/src/main/java/net/tccn/base/MetaListenter.java index dc65d48..7766c7b 100644 --- a/src/main/java/net/tccn/base/MetaListenter.java +++ b/src/main/java/net/tccn/base/MetaListenter.java @@ -13,10 +13,13 @@ import java.util.concurrent.CompletableFuture; */ public class MetaListenter implements ApplicationListener { - @Resource(name = "property.dcate") + @Resource(name = "property.dataCate") private String dcate; @Resource(name = "property.tplPath") private String tplPath; + @Resource(name = "property.dataPath") + private String dataPath; + @Override public void preStart(Application application) { @@ -25,6 +28,7 @@ public class MetaListenter implements ApplicationListener { rf.inject(this); MetaKit.dcate = dcate; + MetaKit.dataPath = dataPath; MetaKit.init(); TplKit.use(true).addTpl(new File(FileKit.rootPath(), tplPath)); }); diff --git a/src/main/java/net/tccn/dict/Dict.java b/src/main/java/net/tccn/dict/Dict.java index 8aced96..8d543a0 100644 --- a/src/main/java/net/tccn/dict/Dict.java +++ b/src/main/java/net/tccn/dict/Dict.java @@ -1,16 +1,23 @@ package net.tccn.dict; +import lombok.Data; import net.tccn.base.arango.Doc; +import javax.persistence.Table; import java.io.Serializable; /** * @author: liangxianyou */ +@Data +@Table(name = "Dict", catalog = "db_demo") public class Dict extends Doc implements Serializable { - private String type; // 字典类型 - private String value; // 字典值 - private String label; // 中文名 - private String pValue; // 父级字典值 - private String code; // + public static Dict dao = Doc.dao(Dict.class); + + private String type; // 字典类型 + private String value; // 字典值 + private String label; // 中文名 + private String pValue; // 父级字典值 + private String code; // + private String sysPlatId; // 系统平台id } diff --git a/src/main/java/net/tccn/dict/DictKit.java b/src/main/java/net/tccn/dict/DictKit.java index 80f287e..5c5cdd2 100644 --- a/src/main/java/net/tccn/dict/DictKit.java +++ b/src/main/java/net/tccn/dict/DictKit.java @@ -1,10 +1,6 @@ package net.tccn.dict; -import com.arangodb.ArangoDB; -import com.arangodb.ArangoDatabase; -import net.tccn.base.Kv; import net.tccn.base.MetaKit; -import net.tccn.base.PropKit; import java.util.*; @@ -15,9 +11,12 @@ import java.util.*; * @author: liangxianyou */ public final class DictKit { + private static String dcate = "db"; + private static String dataPath; + private static Map kits = new HashMap<>(); private String platToken; - private Map> dicts = new HashMap<>(); + private Map> dicts; private DictKit() { } @@ -27,29 +26,27 @@ public final class DictKit { if (dictKit == null) { dictKit = new DictKit(); dictKit.platToken = platToken; - dictKit.init(); + dictKit.dicts = MetaKit.getDictData(platToken); kits.put(platToken, dictKit); } return dictKit; } // 初始化字典,不同模式下,数据来源不同 - private void init() { - // arangodb 加载模式 - loadByArangodb(); - // 文件数据模式 + private void stop() { + //文件模式下将 字典数据写入到json文件 + } - // excel 加载数据 + private void loadByFile() { - // mysql 加载数据 } /** * 通过arangodb 加载字典数据 */ private void loadByArangodb() { - String host = PropKit.getProperty("arango.host"); + /*String host = PropKit.getProperty("arango.host"); int port = Kv.toAs(PropKit.getProperty("arango.port", "8529"), int.class); String user = PropKit.getProperty("arango.user"); String passwd = PropKit.getProperty("arango.passwd"); @@ -57,21 +54,21 @@ 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 = MetaKit.getPlatId(platToken); + String platId = "28121369";//MetaKit.getPlatId(platToken); String dictAQL = String.format("for d in Dict filter d.sysPlatId=='%s'return d", platId); - List> list = (List) dbDemo.query(dictAQL, Map.class).asListRemaining(); + List list = (List) dbDemo.query(dictAQL, Map.class).asListRemaining(); String[] fields = {"label", "value", "pValue"}; list.forEach(x -> { String type = x.get("type"); - List items = dicts.getOrDefault(type, new ArrayList<>()); + List items = dicts.getOrDefault(type, new ArrayList<>()); Map dict = new HashMap(); for (String field : fields) { dict.put(field, x.get(field)); } items.add(dict); dicts.put(type, items); - }); + });*/ } /** @@ -121,33 +118,34 @@ public final class DictKit { /** * 查询指定类别的字典 + * * @param code * @return */ - public List getDicts(String code) { + public List getDicts(String code) { Objects.requireNonNull(code, "code 不能为空"); return dicts.getOrDefault(code, new ArrayList<>()); } - public Map> getDicts() { + public Map> getDicts() { return dicts; } public String getDictLabel(String code, String value) { Objects.requireNonNull(code, "code 不能为空"); Objects.requireNonNull(value, "value 不能为空"); - List dicts = getDicts(code); - Optional any = dicts.stream().filter(x -> value.equals(x.get("value"))).findAny(); - return any.isPresent() ? any.get().get("label") + "" : ""; + List dicts = getDicts(code); + Optional any = dicts.stream().filter(x -> value.equals(x.getValue())).findAny(); + return any.isPresent() ? any.get().getLabel() : ""; } public String getDictValue(String code, String label) { Objects.requireNonNull(code, "code 不能为空"); Objects.requireNonNull(label, "label 不能为空"); - List dicts = getDicts(code); - Optional any = dicts.stream().filter(x -> label.equals(x.get("label"))).findAny(); - return any.isPresent() ? any.get().get("value") + "" : ""; + List dicts = getDicts(code); + Optional any = dicts.stream().filter(x -> label.equals(x.get("label"))).findAny(); + return any.isPresent() ? any.get().getValue() : ""; } //@Test diff --git a/src/main/java/net/tccn/service/DictService.java b/src/main/java/net/tccn/service/DictService.java index 340e2f6..2a6eb32 100644 --- a/src/main/java/net/tccn/service/DictService.java +++ b/src/main/java/net/tccn/service/DictService.java @@ -1,28 +1,36 @@ package net.tccn.service; import net.tccn.base.JBean; +import net.tccn.dict.Dict; import net.tccn.dict.DictKit; import org.redkale.net.http.RestMapping; import org.redkale.net.http.RestParam; import org.redkale.net.http.RestService; +import java.util.List; import java.util.Map; /** * 字典服务 + * * @author: liangxianyou */ @RestService(name = "dict", automapping = true, comment = "字典服务") public class DictService extends BaseService { @RestMapping(name = "list") - public JBean list(@RestParam(name = "platToken") String token) { + public JBean list(@RestParam(name = "platToken") String token, String type) { JBean jBean = new JBean(); DictKit dictKit = DictKit.use(token); + if (!isEmpty(type)) { + List dicts = dictKit.getDicts(type); + jBean.setBody(dicts); + } else { + Map dicts = dictKit.getDicts(); + jBean.setBody(dicts); + } - Map dicts = dictKit.getDicts(); - jBean.setBody(dicts); return jBean; } }