Commit 1af91f22 authored by ZZH's avatar ZZH

fix equip opt 2025-6-3 16:56

parent b4cb7fb2
...@@ -18,3 +18,59 @@ async def monitor_by_cid_sid(cid, sid): ...@@ -18,3 +18,59 @@ async def monitor_by_cid_sid(cid, sid):
async with MysqlUtil() as conn: async with MysqlUtil() as conn:
monitor_dic = await conn.fetchone(sql, args=(cid, sid)) monitor_dic = await conn.fetchone(sql, args=(cid, sid))
return monitor_dic return monitor_dic
async def load_sim_info(sid):
rlt = dict(iccid="", sim_opt="")
sql = "SELECT iccid, sim_opt FROM devops.sid_sim WHERE sid=%s"
async with MysqlUtil() as conn:
r = await conn.fetchone(sql, args=(sid,))
if r:
rlt.update(r)
return rlt
async def load_equip_reuse(sid):
rlt = []
async with MysqlUtil() as conn:
sql = "SELECT meter_no, cid, db FROM devops.db_map_meter WHERE sid=%s;"
for r in await conn.fetchall(sql, args=(sid,)):
meter_no, cid, db = r["meter_no"], r["cid"], r["db"]
sql = f"SELECT c.product, c.cid, c.shortname, " \
f"p.pid, p.name FROM {db}.monitor m " \
f"LEFT JOIN {db}.company c ON c.cid=m.cid " \
f"LEFT JOIN {db}.point p on m.mtid=p.mtid " \
f"WHERE m.sid=%s AND m.meter_no=%s AND m.cid=%s " \
f"AND m.demolished=0"
r = await conn.fetchone(sql, args=(sid, meter_no, cid,))
if r:
rlt.append(r)
return rlt
async def load_equip_pg(prod_id, cid, sid, pid, pg_num, pg_size):
data_lst, total = [], 0
if sid and not pid:
data_lst = await load_equip_reuse(sid)
total = len(data_lst)
else:
cond_str = " WHERE demolished=0 "
if prod_id:
cond_str += f" AND c.product={prod_id}"
if cid:
cond_str += f" AND c.cid={cid}"
if pid:
cond_str += f" AND p.pid={pid}"
sql = f"SELECT c.product, c.cid, c.shortname, p.pid, p.name, " \
f"m.sid, p.mtid " \
f"FROM `monitor` m LEFT JOIN company c ON m.cid=c.cid " \
f"LEFT JOIN point p ON p.mtid=m.mtid {cond_str} " \
f"LIMIT {(pg_num - 1) * pg_size}, {pg_size};"
t_sql = f"SELECT count(c.cid) total FROM `monitor` m " \
f"LEFT JOIN company c ON m.cid=c.cid " \
f"LEFT JOIN point p ON p.mtid=m.mtid {cond_str};"
async with MysqlUtil() as conn:
data_lst = await conn.fetchall(sql)
total = await conn.fetch_value(t_sql)
return data_lst, total
...@@ -15,7 +15,7 @@ from unify_api.modules.zhiwei_u.dao.data_operations_dao import \ ...@@ -15,7 +15,7 @@ from unify_api.modules.zhiwei_u.dao.data_operations_dao import \
from unify_api.modules.zhiwei_u.dao.warning_operations_dao import get_username from unify_api.modules.zhiwei_u.dao.warning_operations_dao import get_username
from unify_api.modules.zhiwei_u.dao.equipment_operations_dao import \ from unify_api.modules.zhiwei_u.dao.equipment_operations_dao import \
equipment_operations_dao, total_equipment_operations_dao, \ equipment_operations_dao, total_equipment_operations_dao, \
monitor_by_cid_sid monitor_by_cid_sid, load_sim_info, load_equip_pg
from unify_api.modules.zhiwei_u.components.equipment_operations_cps import \ from unify_api.modules.zhiwei_u.components.equipment_operations_cps import \
EquOptResp, EdResp, EdmResp EquOptResp, EdResp, EdmResp
from unify_api.modules.zhiwei_u.procedures.dev_demolish import dev_demolish from unify_api.modules.zhiwei_u.procedures.dev_demolish import dev_demolish
...@@ -23,9 +23,7 @@ from unify_api.modules.zhiwei_u.procedures.dev_replace import dev_replace ...@@ -23,9 +23,7 @@ from unify_api.modules.zhiwei_u.procedures.dev_replace import dev_replace
from unify_api.modules.zhiwei_u.procedures.equipment_operations_pds import \ from unify_api.modules.zhiwei_u.procedures.equipment_operations_pds import \
alarm_setting_pds, device_get_v1, device_get_config alarm_setting_pds, device_get_v1, device_get_config
from unify_api.utils.response_code import RET from unify_api.utils.response_code import RET
from unify_api.modules.zhiwei_u.service.sid_iccid_map import ( from unify_api.modules.zhiwei_u.service.sid_iccid_map import load_iccid
iccid_from_get_status
)
async def equipment_operations_service(userid, prod_id, cid, sid, pid, async def equipment_operations_service(userid, prod_id, cid, sid, pid,
...@@ -119,14 +117,15 @@ async def equipment_details_mqtt_service(sid, mtid): ...@@ -119,14 +117,15 @@ async def equipment_details_mqtt_service(sid, mtid):
"scopeEnable") == 1 else "关闭" "scopeEnable") == 1 else "关闭"
software_version = res_scope.get("software_version") software_version = res_scope.get("software_version")
iccid = await iccid_from_get_status(sid) iccid, sim_opt = await load_equip_sim_srv(sid)
return EdResp( return EdResp(
software_version=software_version, software_version=software_version,
device_status=status_, device_status=status_,
scope_status=scope_status, scope_status=scope_status,
upload_freq=upload_freq, upload_freq=upload_freq,
harm_count=harm_count, harm_count=harm_count,
iccid=iccid iccid=iccid,
sim_operator=sim_opt
) )
...@@ -168,7 +167,8 @@ async def equipment_change_name_service(mtid, pid, new_name): ...@@ -168,7 +167,8 @@ async def equipment_change_name_service(mtid, pid, new_name):
# 1. 确认mtid和pid对应关系 # 1. 确认mtid和pid对应关系
point_dic = await point_by_pid_mtid(mtid, pid) point_dic = await point_by_pid_mtid(mtid, pid)
if not point_dic: if not point_dic:
return success_res(code=RET.op_fail, msg="安装点不存在,或者mtid与pid不匹配") return success_res(code=RET.op_fail,
msg="安装点不存在,或者mtid与pid不匹配")
# 2. 更改安装点名称 # 2. 更改安装点名称
sql_point = "UPDATE point SET name=%s WHERE pid=%s and mtid=%s" sql_point = "UPDATE point SET name=%s WHERE pid=%s and mtid=%s"
sql_monitor = "UPDATE monitor SET name=%s WHERE mtid=%s" sql_monitor = "UPDATE monitor SET name=%s WHERE mtid=%s"
...@@ -187,7 +187,8 @@ async def equipment_replace_service(cid, sid, new_sid): ...@@ -187,7 +187,8 @@ async def equipment_replace_service(cid, sid, new_sid):
# 1. 确认cid和sid对应关系 # 1. 确认cid和sid对应关系
monitor_dic = await monitor_by_cid_sid(cid, sid) monitor_dic = await monitor_by_cid_sid(cid, sid)
if not monitor_dic: if not monitor_dic:
return success_res(code=RET.op_fail, msg="装置不存在,或者cid与sid不匹配") return success_res(code=RET.op_fail,
msg="装置不存在,或者cid与sid不匹配")
# 2. 调用接口,确定更换是否成功 # 2. 调用接口,确定更换是否成功
flag, msg = await dev_replace(cid, sid, new_sid) flag, msg = await dev_replace(cid, sid, new_sid)
if not flag: if not flag:
...@@ -200,7 +201,8 @@ async def equipment_demolish_service(cid, sid): ...@@ -200,7 +201,8 @@ async def equipment_demolish_service(cid, sid):
# 1. 确认cid和sid对应关系 # 1. 确认cid和sid对应关系
monitor_dic = await monitor_by_cid_sid(cid, sid) monitor_dic = await monitor_by_cid_sid(cid, sid)
if not monitor_dic: if not monitor_dic:
return success_res(code=RET.op_fail, msg="装置不存在,或者cid与sid不匹配") return success_res(code=RET.op_fail,
msg="装置不存在,或者cid与sid不匹配")
# 2. 调用接口,确定更换是否成功 # 2. 调用接口,确定更换是否成功
flag, msg = await dev_demolish(cid, sid) flag, msg = await dev_demolish(cid, sid)
if not flag: if not flag:
...@@ -212,3 +214,22 @@ async def equipment_demolish_service(cid, sid): ...@@ -212,3 +214,22 @@ async def equipment_demolish_service(cid, sid):
# if not dem_flag: # if not dem_flag:
# return Success(success=0, message="下发拆除装置命令失败") # return Success(success=0, message="下发拆除装置命令失败")
return success_res(msg="操作成功") return success_res(msg="操作成功")
async def load_equip_sim_srv(sid):
_, iccid, sim_opt = await load_iccid(sid)
if not iccid:
r = await load_sim_info(sid)
iccid, sim_opt = r["iccid"], r["sim_opt"]
return iccid, sim_opt
async def equip_query_srv(userid, prod_id, cid, sid, pid, pg_num, pg_size):
"""设备查询"""
data_lst, total = await load_equip_pg(prod_id, cid, sid, pid, pg_num,
pg_size)
user = await get_username(userid)
is_mod = 1 if user["role"] == 2 else 0
for data in data_lst:
data["productname"] = config.PRODUCT.get(data["product"], "")
return EquOptResp(total=total, is_mod=is_mod, rows=data_lst)
...@@ -17,6 +17,9 @@ from unify_api.modules.zhiwei_u.procedures.common import get_order_num, \ ...@@ -17,6 +17,9 @@ from unify_api.modules.zhiwei_u.procedures.common import get_order_num, \
upload_file upload_file
from unify_api.modules.zhiwei_u.procedures.common import allowed_file from unify_api.modules.zhiwei_u.procedures.common import allowed_file
from unify_api.modules.zhiwei_u.procedures.common import get_all_user from unify_api.modules.zhiwei_u.procedures.common import get_all_user
from unify_api.modules.zhiwei_u.dao.equipment_operations_dao import (
load_equip_reuse
)
async def w_origin_service(): async def w_origin_service():
...@@ -145,7 +148,8 @@ async def close_order_service(id, user_id, explain, doc_ids): ...@@ -145,7 +148,8 @@ async def close_order_service(id, user_id, explain, doc_ids):
"user_list": [handle_user["handle_user_id"] "user_list": [handle_user["handle_user_id"]
for handle_user in handle_user_list] for handle_user in handle_user_list]
} }
await KafkaUtils.send_msg(topic="power_iot.push.wechat_operation_order", await KafkaUtils.send_msg(
topic="power_iot.push.wechat_operation_order",
dic_data=dic_data) dic_data=dic_data)
return Success(success=1, message="操作成功") return Success(success=1, message="操作成功")
else: else:
...@@ -154,11 +158,12 @@ async def close_order_service(id, user_id, explain, doc_ids): ...@@ -154,11 +158,12 @@ async def close_order_service(id, user_id, explain, doc_ids):
async def sid_to_order_service(sid): async def sid_to_order_service(sid):
"""录入工单 根据sid返回客户信息""" """录入工单 根据sid返回客户信息"""
datas = await sid_to_order_dao(sid) datas = await load_equip_reuse(sid)
if not datas: if not datas:
return Success(success=0, message=f"{sid}未有数据与之匹配") return Success(success=0, message=f"{sid}未有数据与之匹配")
for data in datas: for data in datas:
data["product"] = config.PRODUCT[data["prod_id"]] data["product"] = config.PRODUCT.get(data["product"], "")
return SidToOrderResp(data=datas) return SidToOrderResp(data=datas)
...@@ -268,7 +273,8 @@ async def order_detail_flow_service(id): ...@@ -268,7 +273,8 @@ async def order_detail_flow_service(id):
return Success(success=0, message="该工单状态不存在") return Success(success=0, message="该工单状态不存在")
datas = await order_detail_flow_by_id(id) datas = await order_detail_flow_by_id(id)
for data in datas: for data in datas:
data["doc"] = await get_file_by_record_id("order_details_id", data["id"]) data["doc"] = await get_file_by_record_id("order_details_id",
data["id"])
data["op_time"] = data["op_time"].strftime("%Y-%m-%d %H:%M") data["op_time"] = data["op_time"].strftime("%Y-%m-%d %H:%M")
return SidToOrderResp(data=datas) return SidToOrderResp(data=datas)
......
...@@ -183,7 +183,7 @@ async def load_iccid(sid): ...@@ -183,7 +183,7 @@ async def load_iccid(sid):
async def update_all(): async def update_all():
sid_iccids, fail_sid, tmp = [], [], [] sid_iccids, fail_sid, tmp = [], set(), []
sid_total = await load_all_sids() sid_total = await load_all_sids()
print(f"sid total:{len(sid_total)}") print(f"sid total:{len(sid_total)}")
for i, sid in enumerate(sid_total, start=1): for i, sid in enumerate(sid_total, start=1):
...@@ -196,7 +196,7 @@ async def update_all(): ...@@ -196,7 +196,7 @@ async def update_all():
if iccid: if iccid:
sid_iccids.append((_sid, iccid, sim_opt)) sid_iccids.append((_sid, iccid, sim_opt))
else: else:
fail_sid.append(_sid) fail_sid.add(_sid)
tmp = [] tmp = []
...@@ -209,8 +209,8 @@ async def update_all(): ...@@ -209,8 +209,8 @@ async def update_all():
print(f"fail sids:{fail_sid}") print(f"fail sids:{fail_sid}")
if fail_sid: if fail_sid:
sid_iccids, fail_two, tmp = [], [], [] sid_iccids, fail_two, tmp = [], set(), []
for i, sid in enumerate(fail_sid, start=1): for i, sid in enumerate(list(fail_sid), start=1):
tmp.append(sid) tmp.append(sid)
if i % 200 and i < len(fail_sid): if i % 200 and i < len(fail_sid):
continue continue
...@@ -220,7 +220,7 @@ async def update_all(): ...@@ -220,7 +220,7 @@ async def update_all():
if iccid: if iccid:
sid_iccids.append((_sid, iccid, sim_opt)) sid_iccids.append((_sid, iccid, sim_opt))
else: else:
fail_two.append(_sid) fail_two.add(_sid)
time.sleep(180) time.sleep(180)
......
...@@ -2,10 +2,11 @@ from pot_libs.sanic_api import summary ...@@ -2,10 +2,11 @@ from pot_libs.sanic_api import summary
from unify_api.modules.zhiwei_u.components.equipment_operations_cps import \ from unify_api.modules.zhiwei_u.components.equipment_operations_cps import \
EquOptReq, EquOptResp, EdReq, EdResp, EdmReq, EcnReq, ErReq, EdmlReq EquOptReq, EquOptResp, EdReq, EdResp, EdmReq, EcnReq, ErReq, EdmlReq
from unify_api.modules.zhiwei_u.procedures.common import zhiweiu_required from unify_api.modules.zhiwei_u.procedures.common import zhiweiu_required
from unify_api.modules.zhiwei_u.service.equipment_operations_service import \ from unify_api.modules.zhiwei_u.service.equipment_operations_service import (
equipment_operations_service, equipment_details_mysql_service, \ equipment_details_mysql_service, equipment_details_mqtt_service,
equipment_details_mqtt_service, equipment_change_name_service, \ equipment_change_name_service, equipment_replace_service,
equipment_replace_service, equipment_demolish_service equipment_demolish_service, equip_query_srv
)
@summary('设备管理') @summary('设备管理')
...@@ -17,8 +18,8 @@ async def post_equipment_operations(req, body: EquOptReq) -> EquOptResp: ...@@ -17,8 +18,8 @@ async def post_equipment_operations(req, body: EquOptReq) -> EquOptResp:
page_num = body.page_num page_num = body.page_num
sid = body.sid sid = body.sid
user_id = req.ctx.user_id user_id = req.ctx.user_id
return await equipment_operations_service(user_id, prod_id, cid, sid, pid, return await equip_query_srv(user_id, prod_id, cid, sid, pid, page_num,
page_num, page_size) page_size)
@summary('设备管理-详情和修改-从mqtt获取数据') @summary('设备管理-详情和修改-从mqtt获取数据')
......
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