fix zd stat

This commit is contained in:
anlicheng 2025-01-17 14:23:58 +08:00
parent 24b29bac21
commit 3eac69633e

View File

@ -36,10 +36,7 @@
%%
timer_ref :: undefined | reference(),
%%
is_busy = false :: boolean(),
%% ,
acc_num = #{}
is_busy = false :: boolean()
}).
%%%===================================================================
@ -136,7 +133,7 @@ handle_event(info, fetch_next, connected, State = #state{postman_pid = PostmanPi
end;
%%
handle_event(info, {ack, AssocMessage}, StateName, State = #state{timer_ref = TimerRef, acc_num = AccNum, logger_pid = LoggerPid}) ->
handle_event(info, {ack, AssocMessage}, StateName, State = #state{timer_ref = TimerRef, logger_pid = LoggerPid}) ->
%%
iot_logger:write(LoggerPid, AssocMessage),
@ -146,11 +143,10 @@ handle_event(info, {ack, AssocMessage}, StateName, State = #state{timer_ref = Ti
end,
is_reference(TimerRef) andalso erlang:cancel_timer(TimerRef),
Date = iot_util:date(),
Num = maps:get(Date, AccNum, 0),
NAccNum = AccNum#{Date => Num + 1},
Key = get_counter_key(iot_util:date()),
mnesia_counter:inc(Key),
{keep_state, State#state{timer_ref = undefined, acc_num = NAccNum, is_busy = false}, Actions};
{keep_state, State#state{timer_ref = undefined, is_busy = false}, Actions};
%%
handle_event(info, {timeout, _, {repost_ticker, Body}}, connected, State = #state{postman_pid = PostmanPid}) ->
@ -177,7 +173,10 @@ handle_event(info, {timeout, _, create_postman}, disconnected, State = #state{mq
end;
%%
handle_event({call, From}, get_stat, StateName, State = #state{acc_num = AccNum, iot_queue = Q}) ->
handle_event({call, From}, get_stat, StateName, State = #state{iot_queue = Q}) ->
Key = get_counter_key(iot_util:date()),
AccNum = mnesia_counter:get_count(Key),
Stat = #{
<<"acc_num">> => AccNum,
<<"queue_num">> => iot_queue:len(Q),
@ -186,8 +185,11 @@ handle_event({call, From}, get_stat, StateName, State = #state{acc_num = AccNum,
{keep_state, State, [{reply, From, Stat}]};
%%
handle_event({call, From}, {get_num, Date}, _StateName, State = #state{acc_num = AccNum}) ->
{keep_state, State, [{reply, From, maps:get(Date, AccNum, 0)}]};
handle_event({call, From}, {get_num, Date}, _StateName, State = #state{}) ->
Key = get_counter_key(Date),
AccNum = mnesia_counter:get_count(Key),
{keep_state, State, [{reply, From, AccNum}]};
%% postman进程挂掉时
handle_event(info, {'EXIT', PostmanPid, Reason}, connected, State = #state{timer_ref = TimerRef, postman_pid = PostmanPid}) ->
@ -266,3 +268,7 @@ format_data(LocationCode, DynamicLocationCode, Fields, Timestamp) when is_binary
lager:warning("[iot_zd_endpoint] location_code: ~p, format_data get error: ~p", [LocationCode, Reason]),
error
end.
-spec get_counter_key(Date :: string()) -> string().
get_counter_key(Date) when is_list(Date) ->
"iot_zd:" ++ Date.