Commit 2e78d4a7 authored by lcn's avatar lcn

修复Bug

parent 313d2526
...@@ -212,7 +212,8 @@ async def elec_card_level_service(point_list): ...@@ -212,7 +212,8 @@ async def elec_card_level_service(point_list):
# point_mid = await batch_get_wiring_type(point_list) # point_mid = await batch_get_wiring_type(point_list)
# # 3. 获取redis数据 # # 3. 获取redis数据
# res_redis = await elec_current_data(point_mid) # res_redis = await elec_current_data(point_mid)
mtids = [monitor["mtid"] for monitor in monitor_point_list if monitor["mtid"]] mtids = [monitor["mtid"] for monitor in monitor_point_list if
monitor["mtid"]]
cid = monitor_point_list[0]['cid'] if len(monitor_point_list) > 0 else 0 cid = monitor_point_list[0]['cid'] if len(monitor_point_list) > 0 else 0
results = await elec_current_data_new15(mtids, cid) results = await elec_current_data_new15(mtids, cid)
# 4. 返回数据 # 4. 返回数据
...@@ -286,7 +287,7 @@ async def elec_card_level_service(point_list): ...@@ -286,7 +287,7 @@ async def elec_card_level_service(point_list):
"ub_dev": "", "ub_dev": "",
"uc_dev": "", "uc_dev": "",
} }
ret_data[m_type].append(res_dic) ret_data[m_type].append(res_dic)
return EclResp( return EclResp(
inline=ret_data["inline"], inline=ret_data["inline"],
...@@ -326,15 +327,15 @@ async def qual_current_level_service(point_list): ...@@ -326,15 +327,15 @@ async def qual_current_level_service(point_list):
# 初始化返回dic # 初始化返回dic
if res.get(mtid): if res.get(mtid):
time_str = res[mtid]["ts"][:-4] time_str = res[mtid]["ts"][:-4]
fdia = round_2(res[mtid].get("fdia")) fdia = round_2(res[mtid].get("fdia"))
fdib = round_2(res[mtid].get("fdib")) fdib = round_2(res[mtid].get("fdib"))
fdic = round_2(res[mtid].get("fdic")) fdic = round_2(res[mtid].get("fdic"))
thdia = round_4(res[mtid].get("thdia")) thdia = round_4(res[mtid].get("thdia"))
thdib = round_4(res[mtid].get("thdib")) thdib = round_4(res[mtid].get("thdib"))
thdic = round_4(res[mtid].get("thdic")) thdic = round_4(res[mtid].get("thdic"))
res_dic = { res_dic = {
"name": m_name, "name": m_name,
"point_id": point_id, "point_id": point_id,
...@@ -344,7 +345,7 @@ async def qual_current_level_service(point_list): ...@@ -344,7 +345,7 @@ async def qual_current_level_service(point_list):
"thdia": thdia, "thdia": thdia,
"thdib": thdib, "thdib": thdib,
"thdic": thdic, "thdic": thdic,
"thdua": round_4(res[mtid].get("thdua")), "thdua": round_4(res[mtid].get("thdua")),
"thdub": round_4(res[mtid].get("thdub")), "thdub": round_4(res[mtid].get("thdub")),
"thduc": round_4(res[mtid].get("thduc")), "thduc": round_4(res[mtid].get("thduc")),
...@@ -385,7 +386,7 @@ async def qual_current_level_service(point_list): ...@@ -385,7 +386,7 @@ async def qual_current_level_service(point_list):
"thdia": "", "thdia": "",
"thdib": "", "thdib": "",
"thdic": "", "thdic": "",
"thdua": "", "thdua": "",
"thdub": "", "thdub": "",
"thduc": "", "thduc": "",
...@@ -409,7 +410,7 @@ async def qual_current_level_service(point_list): ...@@ -409,7 +410,7 @@ async def qual_current_level_service(point_list):
"thdib_virtual": "", "thdib_virtual": "",
"thdic_virtual": "", "thdic_virtual": "",
} }
ret_data[m_type].append(res_dic) ret_data[m_type].append(res_dic)
return QclResp( return QclResp(
inline=ret_data["inline"], inline=ret_data["inline"],
...@@ -562,14 +563,14 @@ async def elec_index_service(cid, point_id, date_start, date_end): ...@@ -562,14 +563,14 @@ async def elec_index_service(cid, point_id, date_start, date_end):
"freq_dev_min", "freq_dev_min",
"freq_dev_max", "freq_dev_max",
] ]
query_body = EsQuery.aggr_index(page_request, query_body = EsQuery.aggr_index(page_request,
stats_items=common_items + elec_qual_items) stats_items=common_items + elec_qual_items)
async with EsUtil() as es: async with EsUtil() as es:
es_results = await es.search_origin(body=query_body, es_results = await es.search_origin(body=query_body,
index=constants.POINT_15MIN_INDEX) index=constants.POINT_15MIN_INDEX)
aggregations = es_results.get("aggregations", {}) aggregations = es_results.get("aggregations", {})
# 常规参数统计 # 常规参数统计
common_indexes = [] common_indexes = []
...@@ -593,7 +594,7 @@ async def elec_index_service(cid, point_id, date_start, date_end): ...@@ -593,7 +594,7 @@ async def elec_index_service(cid, point_id, date_start, date_end):
else: else:
max_value = "" max_value = ""
max_value_time = "" max_value_time = ""
# 最小值 # 最小值
min_info = aggregations.get(f"{item}_min_min", {}) min_info = aggregations.get(f"{item}_min_min", {})
hits = min_info.get("hits", {}).get("hits") hits = min_info.get("hits", {}).get("hits")
...@@ -609,10 +610,10 @@ async def elec_index_service(cid, point_id, date_start, date_end): ...@@ -609,10 +610,10 @@ async def elec_index_service(cid, point_id, date_start, date_end):
else: else:
min_value = "" min_value = ""
min_value_time = "" min_value_time = ""
avg = aggregations.get(f"{item}_mean_avg", {}).get("value") avg = aggregations.get(f"{item}_mean_avg", {}).get("value")
avg = round(avg, 2) if avg is not None else "" avg = round(avg, 2) if avg is not None else ""
elec_index = ElecIndex( elec_index = ElecIndex(
stats_index=item, stats_index=item,
max=max_value, max=max_value,
...@@ -622,7 +623,7 @@ async def elec_index_service(cid, point_id, date_start, date_end): ...@@ -622,7 +623,7 @@ async def elec_index_service(cid, point_id, date_start, date_end):
avg=avg, avg=avg,
) )
common_indexes.append(elec_index) common_indexes.append(elec_index)
# 电能质量统计 # 电能质量统计
elec_qual_indexes = [] elec_qual_indexes = []
_elec_qual_items = {i.rsplit("_", 1)[0] for i in elec_qual_items} _elec_qual_items = {i.rsplit("_", 1)[0] for i in elec_qual_items}
...@@ -641,7 +642,7 @@ async def elec_index_service(cid, point_id, date_start, date_end): ...@@ -641,7 +642,7 @@ async def elec_index_service(cid, point_id, date_start, date_end):
else: else:
max_value = "" max_value = ""
max_value_time = "" max_value_time = ""
# 最小值 # 最小值
min_info = aggregations.get(f"{item}_min_min", {}) min_info = aggregations.get(f"{item}_min_min", {})
hits = min_info.get("hits", {}).get("hits") hits = min_info.get("hits", {}).get("hits")
...@@ -656,10 +657,10 @@ async def elec_index_service(cid, point_id, date_start, date_end): ...@@ -656,10 +657,10 @@ async def elec_index_service(cid, point_id, date_start, date_end):
else: else:
min_value = "" min_value = ""
min_value_time = "" min_value_time = ""
avg = aggregations.get(f"{item}_mean_avg", {}).get("value") avg = aggregations.get(f"{item}_mean_avg", {}).get("value")
avg = avg if avg is not None else "" avg = avg if avg is not None else ""
elec_index = ElecIndex( elec_index = ElecIndex(
stats_index=item, stats_index=item,
max=max_value, max=max_value,
...@@ -669,7 +670,7 @@ async def elec_index_service(cid, point_id, date_start, date_end): ...@@ -669,7 +670,7 @@ async def elec_index_service(cid, point_id, date_start, date_end):
avg=avg, avg=avg,
) )
elec_qual_indexes.append(elec_index) elec_qual_indexes.append(elec_index)
if cid: if cid:
# 小程序需要这漏电流和温度 # 小程序需要这漏电流和温度
residual_current_map = await location_stats_statics( residual_current_map = await location_stats_statics(
...@@ -698,7 +699,7 @@ async def elec_index_service(cid, point_id, date_start, date_end): ...@@ -698,7 +699,7 @@ async def elec_index_service(cid, point_id, date_start, date_end):
else None, else None,
) )
) )
temp_map = await location_stats_statics( temp_map = await location_stats_statics(
cid, point_id, start_tt, end_tt, _type="temperature" cid, point_id, start_tt, end_tt, _type="temperature"
) )
...@@ -773,83 +774,103 @@ async def elec_index_service_new15(cid, point_id, start, end): ...@@ -773,83 +774,103 @@ async def elec_index_service_new15(cid, point_id, start, end):
"ua_dev_mean", "ua_dev_min", "ua_dev_max", "ua_dev_mean", "ua_dev_min", "ua_dev_max",
"freq_dev_mean", "freq_dev_min", "freq_dev_max"] "freq_dev_mean", "freq_dev_min", "freq_dev_max"]
datas = await get_electric_datas_dao(table_name, point_id, start, end) datas = await get_electric_datas_dao(table_name, point_id, start, end)
if not datas: # if not datas:
return ElecIndexResponse( # return ElecIndexResponse(
ctnum=ctnum, common_indexes=[], # ctnum=ctnum, common_indexes=[],
elec_qual_indexes=[] # elec_qual_indexes=[]
) # )
df = pd.DataFrame(list(datas)) df = pd.DataFrame(list(datas))
# 常规参数统计 # 常规参数统计
common_indexes = [] common_indexes = []
_common_items = {i.rsplit("_", 1)[0] for i in common_items} _common_items = {i.rsplit("_", 1)[0] for i in common_items}
for item in _common_items: for item in _common_items:
item_name = item.rsplit("_", 1)[0] item_name = item.rsplit("_", 1)[0]
max_item_name = f"{item}_max" if datas:
max_value = df[max_item_name].max() max_item_name = f"{item}_max"
if not pd.isna(max_value): max_value = df[max_item_name].max()
max_datas = df.loc[df[max_item_name].idxmax()].to_dict() if not pd.isna(max_value):
max_time = max_datas.get(f"{item_name}_max_time") max_datas = df.loc[df[max_item_name].idxmax()].to_dict()
max_time = '' if pd.isnull(max_time) else str(max_time) max_time = max_datas.get(f"{item_name}_max_time")
else: max_time = '' if pd.isnull(max_time) else str(max_time)
max_value, max_time = "", "" else:
min_item_name = f"{item}_min" max_value, max_time = "", ""
min_value = df[min_item_name].min() min_item_name = f"{item}_min"
if not pd.isna(min_value): min_value = df[min_item_name].min()
min_datas = df.loc[df[min_item_name].idxmin()].to_dict() if not pd.isna(min_value):
min_time = min_datas.get(f"{item_name}_min_time") min_datas = df.loc[df[min_item_name].idxmin()].to_dict()
min_time = '' if pd.isnull(min_time) else str(min_time) min_time = min_datas.get(f"{item_name}_min_time")
else: min_time = '' if pd.isnull(min_time) else str(min_time)
min_value, min_time = "", "" else:
mean_item_name = f"{item}_mean" min_value, min_time = "", ""
avg_value = df[mean_item_name].mean() mean_item_name = f"{item}_mean"
if not pd.isna(avg_value): avg_value = df[mean_item_name].mean()
avg_value = round(avg_value, 2) if avg_value else "" if not pd.isna(avg_value):
avg_value = round(avg_value, 2) if avg_value else ""
else:
avg_value = ""
elec_index = ElecIndex(
stats_index=item_name,
max=max_value,
max_time=max_time or "",
min=min_value,
min_time=min_time or "",
avg=avg_value,
)
else: else:
avg_value = "" elec_index = ElecIndex(
elec_index = ElecIndex( stats_index=item_name,
stats_index=item_name, max="",
max=max_value, max_time="",
max_time=max_time or "", min="",
min=min_value, min_time="",
min_time=min_time or "", avg="",
avg=avg_value, )
)
common_indexes.append(elec_index) common_indexes.append(elec_index)
# 电能质量统计 # 电能质量统计
elec_qual_indexes = [] elec_qual_indexes = []
_elec_qual_items = {i.rsplit("_", 1)[0] for i in elec_qual_items} _elec_qual_items = {i.rsplit("_", 1)[0] for i in elec_qual_items}
for item in _elec_qual_items: for item in _elec_qual_items:
item_name = item.rsplit("_", 1)[0] item_name = item.rsplit("_", 1)[0]
max_item_name = f"{item}_max" if datas:
max_value = df[max_item_name].max() max_item_name = f"{item}_max"
if not pd.isna(max_value): max_value = df[max_item_name].max()
max_datas = df.loc[df[max_item_name].idxmax()].to_dict() if not pd.isna(max_value):
max_time = max_datas.get(f"{item_name}_max_time") max_datas = df.loc[df[max_item_name].idxmax()].to_dict()
max_time = '' if pd.isnull(max_time) else str(max_time) max_time = max_datas.get(f"{item_name}_max_time")
else: max_time = '' if pd.isnull(max_time) else str(max_time)
max_value, max_time = "", "" else:
min_item_name = f"{item}_min" max_value, max_time = "", ""
min_value = df[min_item_name].min() min_item_name = f"{item}_min"
if not pd.isna(min_value): min_value = df[min_item_name].min()
min_datas = df.loc[df[min_item_name].idxmin()].to_dict() if not pd.isna(min_value):
min_time = min_datas.get(f"{item_name}_min_time") min_datas = df.loc[df[min_item_name].idxmin()].to_dict()
min_time = '' if pd.isnull(min_time) else str(min_time) min_time = min_datas.get(f"{item_name}_min_time")
else: min_time = '' if pd.isnull(min_time) else str(min_time)
min_value, min_time = "", "" else:
mean_item_name = f"{item}_mean" min_value, min_time = "", ""
avg_value = df[mean_item_name].mean() mean_item_name = f"{item}_mean"
if not pd.isna(avg_value): avg_value = df[mean_item_name].mean()
avg_value = round(avg_value, 2) if avg_value else "" if not pd.isna(avg_value):
avg_value = round(avg_value, 2) if avg_value else ""
else:
avg_value = ""
elec_index = ElecIndex(
stats_index=item_name,
max=max_value,
max_time=max_time,
min=min_value,
min_time=min_time,
avg=avg_value,
)
else: else:
avg_value = "" elec_index = ElecIndex(
elec_index = ElecIndex( stats_index=item_name,
stats_index=item_name, max="",
max=max_value, max_time="",
max_time=max_time, min="",
min=min_value, min_time="",
min_time=min_time, avg="",
avg=avg_value, )
)
elec_qual_indexes.append(elec_index) elec_qual_indexes.append(elec_index)
# 小程序需要这漏电流和温度 # 小程序需要这漏电流和温度
if cid: if cid:
...@@ -877,6 +898,7 @@ async def elec_index_service_new15(cid, point_id, start, end): ...@@ -877,6 +898,7 @@ async def elec_index_service_new15(cid, point_id, start, end):
elec_qual_indexes=elec_qual_indexes elec_qual_indexes=elec_qual_indexes
) )
async def elec_current_service_new15(point_id): async def elec_current_service_new15(point_id):
# 获取mtid # 获取mtid
meter_info = await get_meter_by_point_new15(point_id) meter_info = await get_meter_by_point_new15(point_id)
...@@ -903,7 +925,7 @@ async def elec_current_service_new15(point_id): ...@@ -903,7 +925,7 @@ async def elec_current_service_new15(point_id):
time_str = str(res["ts"])[0:19] time_str = str(res["ts"])[0:19]
else: else:
time_str = time_format.get_datetime_str(0) time_str = time_format.get_datetime_str(0)
return time_str,res return time_str, res
def get_sdu_i_and_u(res, ctnum): def get_sdu_i_and_u(res, ctnum):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment