kboss/b/apv/save_apv_flow.dspy
2025-07-16 14:27:17 +08:00

72 lines
3.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

async def save_apv_flow(ns={}):
flag = ns.get("flag", "").lower()
if flag not in ["add", "update"]:
return {"status": False, "msg": f"参数解析错误,请检查参数:flag"}
db = DBPools()
try:
async with db.sqlorContext('kboss') as sor:
try:
user_id = ns["user_id"]
orgid = ns["orgid"]
business_id = ns["business_id"]
level_data = ns["level_data"]
except Exception as e:
return {"status": False, "msg": f"参数解析错误,请检查参数:{e}"}
if not isinstance(level_data, list):
return {"status": False, "msg": f"参数类型错误,请检查参数:{level_data}"}
for _f, l in enumerate(level_data):
try:
level_mode = l["level_mode"]
apv_dd_user_phone = l["apv_dd_user_phone"]
except Exception as e:
return {"status": False, "msg": f"参数解析错误,请检查参数:{e}"}
if not isinstance(apv_dd_user_phone, list):
return {"status": False, "msg": f"参数类型错误,请检查参数:{apv_dd_user_phone}"}
if len(apv_dd_user_phone) == 1 and level_mode != "NONE":
return {"status": False, "msg": f"审核模式错误,一个审批人必须为'单人审批'"}
for _f, l in enumerate(level_data):
level_id = l["level_id"]
level_mode = l["level_mode"]
apv_dd_user_phone = l["apv_dd_user_phone"]
for i, p in enumerate(apv_dd_user_phone):
# 通过手机号获取发送人userid
resp = await get_id_by_phone(orgid=orgid, phone=p)
info(f"get_id_by_phone_resp:{resp}")
if not resp['status']:
return {"status": False, "msg": f"钉钉用户id获取失败,请检查手机号:{p}"}
dd_user_id = resp['user_id']
data = {
"user_id": user_id, # '用户id',
"orgid": orgid, # '机构id',
"business_id": business_id, # '业务id',
"level": level_id, # '节点级别',
"mode": level_mode, # 节点审核模式会签AND或签OR单人NONE',
"apv_dd_user_id_index": i, # '节点审核人员id index',
"apv_dd_user_id": dd_user_id, # '节点审核人员id',
"apv_dd_user_phone":p # '节点审核人员手机号',
}
if flag == "update":
if _f == 0 and i == 0:
sql = "update apv_flow set del_flg = 1 ,update_at=${update_at}$ where orgid=${orgid}$ and business_id=${business_id}$"
await sor.sqlExe(sql, {"orgid": orgid, "update_at": f"{datetime.datetime.now()}", "business_id": business_id})
else:
pass
else:
pass
data["id"] = uuid()
await sor.C("apv_flow", data)
return {"status": True, "msg": "保存成功"}
except Exception as e:
return {"status": False, "msg": f"数据库操作失败:{e}"}
return {"status": False, "msg": f"数据库操作失败"}
ret = await save_apv_flow(params_kw)
return ret