1、metaTable中加入字段主键设置

2、添加删除策略配置
3、列表配置中加入"HIDDEN"配置,以及预览中加入解析逻辑
This commit is contained in:
2019-06-10 17:55:46 +08:00
parent 1f5ea920b4
commit 4037398598
18 changed files with 350 additions and 30 deletions

View File

@@ -231,6 +231,22 @@ public final class MetaKit {
.filter(y -> x.split("[.]")[1].equals(y.getName()))
.findFirst().ifPresent(y -> _shows.add(Kv.of("col", x).set("order", true)));
});*/
List<Kv> _shows = shows.stream().map(x -> {
Kv kv = Kv.of();
kv.putAll(x);
if ("FUNC".equalsIgnoreCase(x.get("inType")) || "QTASK".equalsIgnoreCase(x.get("inType")) || "DICT".equalsIgnoreCase(x.get("inType"))) {
kv.set("fmt", x.get("inType") + "|" + x.get("inExt"));
} else if ("HIDDEN".equalsIgnoreCase(x.get("inType"))) {
kv.set("fmt", "HIDDEN");
} else {
kv.set("fmt", "");
}
kv.remove("inType");
kv.remove("inExt");
return kv;
}).collect(Collectors.toList());
//filters
List<Map> _filters = new ArrayList<>();
@@ -300,10 +316,28 @@ public final class MetaKit {
_details.add(kv);
});*/
//pk业务主表的主键
StringBuffer _pks = new StringBuffer();
MetaTable mainTable = metaTables.get(metaService.getTable());
mainTable.getItems().stream().filter(x -> x.getPk() != null && x.getPk()).forEach(x -> {
_pks.append(String.format("%s.%s,", metaService.getTable(), x.getName()));
});
if (_pks.length() > 0) {
_pks.deleteCharAt(_pks.length() -1);
}
if (_pks.length() == 0) { // 默认主键
List<Field> items = metaTables.get(metaService.getTable()).getItems();
//存在id字段取id
items.stream().filter(x -> x.getName().equalsIgnoreCase("id")).findAny().ifPresent(x -> {
_pks.append(String.format("%s.%s", metaService.getTable(), x.getName()));
});
}
return Kv.of()
.set("pk", _pks.toString())
.set("title", comment)
.set("items", _items2)
.set("shows", shows)
.set("shows", _shows)
.set("filters", _filters)
.set("edits", edits)
.set("details", details);

View File

@@ -2,6 +2,8 @@ package net.tccn.base;
import com.jfinal.plugin.activerecord.SqlPara;
import com.jfinal.plugin.activerecord.sql.SqlKit;
import com.jfinal.template.Engine;
import com.jfinal.template.Template;
import java.io.File;
import java.io.FileFilter;
@@ -131,4 +133,12 @@ public class TplKit {
public void parseTpl() {
kit.parseSqlTemplate();
}
//---------------
private static Engine engine = Engine.use();
public static String parseTpl(String tpl, Map data) {
Template template = engine.getTemplateByString(tpl);
return template.renderToString(data);
}
}

View File

@@ -5,7 +5,6 @@ import net.tccn.base.PageBean;
import net.tccn.dbq.fbean.FBean;
import net.tccn.dbq.jdbc.api.DbKit;
import net.tccn.dbq.parser.ParseMysql;
import net.tccn.dbq.parser.Parser;
import net.tccn.meta.MetaService;
import net.tccn.meta.MetaTable;
@@ -15,7 +14,7 @@ import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
public class DbExecutors {
private final static Parser PARSER = new ParseMysql();
private final static ParseMysql PARSER = new ParseMysql();
public static PageBean findPage(FBean fBean) throws ExecutionException, InterruptedException {
//sql解析
@@ -37,4 +36,15 @@ 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());
String delSql = PARSER.parseDel(name, data, token);
dbKit.exetute(delSql);
}
}

View File

@@ -14,6 +14,7 @@ public class Field {
private String type;
private String inType;
private String inExt;
private Boolean pk; // 是否主键
public Field() {}

View File

@@ -47,8 +47,8 @@ public class DbKit implements DbSource{
}
@Override
public <T> T findfirst(String sql, Class<T> type) {
return dbSource.findfirst(sql, type);
public <T> T findFirst(String sql, Class<T> type) {
return dbSource.findFirst(sql, type);
}
@Override
@@ -72,7 +72,7 @@ public class DbKit implements DbSource{
// -----------------------------------------
public <T> CompletableFuture<T> findfirstAsync(String sql, Class<T> type) {
return CompletableFuture.supplyAsync(() -> findfirst(sql, type));
return CompletableFuture.supplyAsync(() -> findFirst(sql, type));
}
public <T> CompletableFuture<List<T>> findListAsync(String sql, Class<T> type) {
return CompletableFuture.supplyAsync(() -> findList(sql, type));

View File

@@ -14,7 +14,7 @@ public interface DbSource extends IService {
<T> List<T> findList(String sql, Class<T> type);
<T> T findfirst(String sql, Class<T> type);
<T> T findFirst(String sql, Class<T> type);
<T> T queryColumn(String sql, Class<T> type);

View File

@@ -89,7 +89,7 @@ public class DbSourceMysql implements DbSource {
}
@Override
public <T> T findfirst(String sql, Class<T> type) {
public <T> T findFirst(String sql, Class<T> type) {
List<T> list = findList(sql, type);
return list.size() > 0 ? list.get(0) : null;
}
@@ -146,14 +146,17 @@ public class DbSourceMysql implements DbSource {
try (
PreparedStatement ps = connection.prepareStatement(sql);
){
ps.executeUpdate();
ps.execute();
//ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
release(connection);
}
}
//fixme: lxy 处理连接超过8小时失效问题
private Connection connection() {
Connection connection = connection(0);
if (connection != null && catalog != null) {
@@ -178,6 +181,10 @@ public class DbSourceMysql implements DbSource {
System.out.println("创建新的连接:" + x);
} else {
conn = queue.take();
if (conn.isClosed()) {
System.out.println("connetion had closed,");
conn = connection(n);
}
}
} catch (SQLException | InterruptedException e) {
if (e instanceof InterruptedException) {

View File

@@ -2,6 +2,7 @@ package net.tccn.dbq.parser;
import net.tccn.base.Kv;
import net.tccn.base.MetaKit;
import net.tccn.base.TplKit;
import net.tccn.dbq.fbean.*;
import net.tccn.meta.MetaLink;
import net.tccn.meta.MetaService;
@@ -132,4 +133,22 @@ public class ParseMysql implements Parser {
return null;
}
public String parseDel(String name, Map data, String token) {
MetaService metaService = MetaKit.getMetaService(name, token);
Map<String, String> dels = metaService.getDels();
MetaTable mainTable = MetaKit.getMetaTableByAlias(metaService.getTable());
String sql = "";
if ("UP_FIELD".equalsIgnoreCase(dels.get("cate"))) {
data.put("table", mainTable.getName());
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);
} else if ("QTASK".equalsIgnoreCase(dels.get("cate"))) {
sql = TplKit.parseTpl("qtask", data);
}
return sql;
}
}

View File

@@ -5,6 +5,7 @@ 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;
@@ -24,6 +25,7 @@ public class MetaService extends Doc<MetaService> {
private List<Map<String,String>> shows = new ArrayList<>();
private List<Map<String,String>> 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<>();

View File

@@ -79,4 +79,14 @@ 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) {
JBean jBean = new JBean();
try {
DbExecutors.del(name, data, token);
} catch (Exception e) {
jBean.set(-1, "删除数据失败!");
}
return jBean;
}
}

View File

@@ -183,6 +183,17 @@ public class MetadataService extends BaseService { //arango
return JBean.OK;
}
@RestMapping(name = "delsave", comment = "删除配置保存")
public JBean delSave(String name, Map<String, String> dels, @RestParam(name = "platToken") String token) {
if (dels == null || dels.size() == 0) return null;
MetaService 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) {
if (isEmpty.test(items)) return null;