1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
| %%%-------------------------------------------------------------------
| %%% @author pansen
| %%% @copyright (C) 2018, <COMPANY>
| %%% @doc
| %%%
| %%% @end
| %%% Created : 06. 八月 2018 10:24
| %%%-------------------------------------------------------------------
| -module(sys_o_tables).
| -author("pansen").
|
| %%% 底库-管理表
| %%% #todo开始时间,结束时间,sync
| -record(sys_o_tables, {tableName, id, tableDesc, tableType, create_time, update_time, create_by, del_flag, startTime, endTime}).
|
| -include_lib("stdlib/include/ms_transform.hrl").
| -include_lib("stdlib/include/qlc.hrl").
|
| -compile(export_all).
| %%% 创建底库基本表(只管理同步表)
| %%% 应仅在集群初始化的时候调用一次
| create_sys_table(Nodes, TableName) ->
| Ret = mnesia:create_table(TableName,
| [{disc_copies, Nodes},
| {attributes,
| record_info(fields, sys_o_tables)}
| %% ,{index, [#device_info.id]}
| ]),
| io:format("create_sys_table Ret=~p~n", [Ret]),
| syncTool:changeTableConfig(Nodes, TableName),
| %% mnesia:change_table_copy_type(TableName, node(), disc_copies),
| Ret.
|
| %%% 创建同步表后应添加一条记录
| add_sys_table(Uuid, TableName, TableDesc, TableType, StartTime, EndTime) ->
| if
| Uuid == "" ->
| ID = syncTool:getUUIDStr();
| true ->
| ID = Uuid
| end,
| CreateTime = syncTool:getTimeStr(),
| UpdateTime = syncTool:getTimeStr(),
| CreateUser = node(),
| Delflag = "0",
| F = fun() ->
| mnesia:write(#sys_o_tables{id = ID, tableName = TableName, tableDesc = TableDesc, tableType = TableType,
| create_time = CreateTime, update_time = UpdateTime, create_by = CreateUser, del_flag = Delflag,
| startTime = StartTime, endTime = EndTime})
| end,
| Ret = mnesia:activity(transaction, F),
| if
| Ret == ok ->
| Result = ID;
| true ->
| Result = ""
| end,
| Result.
|
| %%% 删除同步表后应删除记录
| %%% 逻辑删除
| %%del_sys_table(TableName) ->
| %% %%根据id获取整条记录
| %% [ADR | TheList] = findSysTableInfo('sys_o_tables', TableName),
| %% io:format("ADR ~p~n~n~n~n", [ADR]),
| %% NewADR = erlang:setelement(8, ADR, "1"),
| %% io:format("NewADR ~p~n~n~n~n", [NewADR]),
| %% %% #todo update_time
| %% %%修改记录的删除状态
| %% mnesia:transaction(
| %% fun() ->
| %% %mnesia:delete({account, ID})
| %% mnesia:write(#sys_o_tables{id = element(1, NewADR), tableName = element(2, NewADR),
| %% tableDesc = element(3, NewADR), tableType = element(4, NewADR), create_time = element(5, NewADR),
| %% update_time = syncTool:getTimeStr(), create_by = element(7, NewADR), del_flag = "1"})
| %% end
| %% ).
|
| %%% 物理删除
| del_SysTabInfo(TableName) ->
| mnesia:transaction(
| fun() ->
| mnesia:delete({sys_o_tables, TableName})
| end).
|
| %%% 查找所有信息
| findAllSysTableInfo(TableName) ->
| %% Q = qlc:q([[E#y_account.id, E#y_account.account] || E <- mnesia:table(y_account)]),
| %%qlc:e(Q)
| F = fun() ->
| qlc:e(qlc:q([{TabName, ID, TableDesc, TableType, CreateTime, UpdateTime, CreateUser, Delflag, StartTime, EndTime}
| || #sys_o_tables{tableName = TabName, id = ID, tableDesc = TableDesc, tableType = TableType,
| create_time = CreateTime, update_time = UpdateTime, create_by = CreateUser, del_flag = Delflag,
| startTime = StartTime, endTime = EndTime}
| <- mnesia:table(TableName)]))
| end,
| mnesia:activity(transaction, F).
|
| sysTabformat2Mat([]) ->
| [];
| sysTabformat2Mat(_ExpertiseList = [OnlineNodes | T]) ->
| OnlineNode = OnlineNodes,
| TemMaps = #{"tableName" => element(1, OnlineNode), "uuid" => element(2, OnlineNode), "tableDesc" => element(3, OnlineNode),
| "tableType" => element(4, OnlineNode), "create_time" => element(5, OnlineNode), "update_time" => element(6, OnlineNode),
| "create_by" => element(7, OnlineNode), "del_flag" => element(8, OnlineNode), "startTime" => element(9, OnlineNode),
| "endTime" => element(10, OnlineNode)
| %tableName,id,tableDesc,tableType,create_time,update_time,create_by,del_flag
| },
| io:format("~p~n~n~n", [TemMaps]),
| [maps:to_list(TemMaps) | sysTabformat2Mat(T)].
|
|
| %%% 查找信息
| findSysTableInfo(TableName, Expertise) ->
| F = fun() ->
| qlc:e(qlc:q([{TabName, ID, TableDesc, TableType, CreateTime, UpdateTime, CreateUser, Delflag, StartTime, EndTime}
| || #sys_o_tables{tableName = TabName, id = ID, tableDesc = TableDesc, tableType = TableType,
| create_time = CreateTime, update_time = UpdateTime, create_by = CreateUser, del_flag = Delflag,
| startTime = StartTime, endTime = EndTime}
| <- mnesia:table(TableName), TabName =:= Expertise]))
| end,
| mnesia:activity(transaction, F).
|
|