async def send_apv(ns={}): """ 发起审批 :param ns: :return: """ apv_data = {} response = {"status": False} try: apv_data['orgid'] = ns['orgid'] apv_data['user_id'] = ns['user_id'] apv_data['business_name'] = ns['business_name'] apv_data['id'] = ns['id'] except Exception as e: response["msg"] = f"发送审批参数错误:{e}" return response if len(ns['id']) == 0: response['status'] = False response["msg"] = f"请选择审批数据" return response get_provider_data = [] db = DBPools() async with db.sqlorContext('kboss') as sor: sql = "SELECT u.mobile FROM users u LEFT JOIN userrole ul ON u.id=ul.userid LEFT JOIN role r ON ul.roleid=r.id WHERE r.role='财务' AND u.orgid=${orgid}$ AND ul.del_flg=0 AND r.del_flg=0 AND u.del_flg=0" phone = await sor.sqlExe(sql, {"orgid": apv_data['orgid']}) if not phone: response["msg"] = f"未找到财务账号,orgid:{ns['orgid']}" return response else: phone = phone[0]['mobile'] apv_business = await sor.R('apv_business', {'del_flg': '0', 'business_name': apv_data['business_name']}) if not apv_business: response["msg"] = f"业务名称:{apv_data['business_name']}不存在" return response apv_data['business_id'] = apv_business[0]['id'] sql = "select * from provider_settle_data where id in ${id}$ and (status != 2 or status !=1)" get_provider_data = await sor.sqlExe(sql, {"id": apv_data['id']}) if not get_provider_data: response["msg"] = f"未找到该供应商结算数据" return response data = [] for i in get_provider_data: m = i["money"] / 100 data.append(f" {i['name']}:{m}元 ") form_component = { "title": "", "detail": { "data": ','.join(data) } } resp = await issue_approve(phone, apv_data["orgid"], apv_data["user_id"], apv_data["business_id"], form_component) if resp['status']: async with db.sqlorContext('kboss') as sor: sql_data = { "id": apv_data['id'], "user_id": apv_data['user_id'], "apv_id": resp['instanceId'], "apv_start_time": datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), "update_time": datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), "status": -1 } sql = "update provider_settle_data set user_id= ${user_id}$,apv_id = ${apv_id}$,apv_start_time = ${apv_start_time}$,update_time = ${update_time}$,status = ${status}$ where id in ${id}$" num = await sor.sqlExe(sql, sql_data) if num: resp["status"] = True resp["msg"] = f"发起审批成功,入库成功" return resp else: resp["status"] = False resp["msg"] = "发起审批成功,入库失败" return resp else: resp["msg"] = "发起审批失败,{resp['msg']}" return resp ret = await send_apv(params_kw) return ret