858 lines
60 KiB
Plaintext
858 lines
60 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# 区域续费率"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"<ipython-input-2-f2d844d89ae0>:32: UserWarning: Pandas requires version '1.4.3' or newer of 'xlsxwriter' (version '1.3.8' currently installed).\n",
|
|
" data_details.to_excel(r'C:\\Users\\admin\\Desktop\\holo_ads_report_sales_saas_to_renew_org_summary_income_d.xlsx')\n",
|
|
"<ipython-input-2-f2d844d89ae0>:67: UserWarning: Pandas requires version '1.4.3' or newer of 'xlsxwriter' (version '1.3.8' currently installed).\n",
|
|
" data_details.to_excel(r'C:\\Users\\admin\\Desktop\\holo_ads_report_sales_saas_to_renew_org_regular_income_d.xlsx')\n",
|
|
"<ipython-input-2-f2d844d89ae0>:89: UserWarning: Pandas requires version '1.4.3' or newer of 'xlsxwriter' (version '1.3.8' currently installed).\n",
|
|
" result_new.to_excel(r\"C:\\Users\\admin\\Desktop\\SaaS续费率_区域续费率.xlsx\")\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# -*- coding: utf-8 -*-\n",
|
|
"# 基础函数配置\n",
|
|
"import psycopg2\n",
|
|
"import pandas as pd\n",
|
|
"import calendar\n",
|
|
"import datetime\n",
|
|
"import pandas as pd\n",
|
|
"import requests\n",
|
|
"from pathlib import Path\n",
|
|
"from urllib.parse import quote\n",
|
|
"import json\n",
|
|
"import numpy as np\n",
|
|
"import time\n",
|
|
"from decimal import Decimal\n",
|
|
"# 获得连接\n",
|
|
"conn = psycopg2.connect(database=\"f6_bi\", user=\"BASIC$ro_caowei\", password=\"!ro_caowei123\", host=\"hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com\", port=\"80\")\n",
|
|
"# 获得游标对象,一个游标对象可以对数据库进行执行操作\n",
|
|
"cursor = conn.cursor()\n",
|
|
"# sql语句 建表\n",
|
|
"sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_sales_saas_to_renew_org_summary_income_d\" WHERE \"pt\" >= '20230101';\"\"\"\n",
|
|
"# 执行语句\n",
|
|
"cursor.execute(sql)\n",
|
|
"# 获取结果集的每一行\n",
|
|
"rows = cursor.fetchall()\n",
|
|
"# 获取所有字段名\n",
|
|
"all_fields = cursor.description\n",
|
|
"#执行结果转化为dataframe\n",
|
|
"col = []\n",
|
|
"for i in all_fields:\n",
|
|
" col.append(i[0])\n",
|
|
"data_details = pd.DataFrame(list(rows),columns=col)\n",
|
|
"data_details.to_excel(r'C:\\Users\\admin\\Desktop\\holo_ads_report_sales_saas_to_renew_org_summary_income_d.xlsx')\n",
|
|
"# 关闭数据库连接\n",
|
|
"cursor.close()\n",
|
|
"conn.close()\n",
|
|
"\n",
|
|
"data_details['version_amount_total'] = data_details['version_amount_total'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
|
"data_details['unversion_amount_total'] = data_details['unversion_amount_total'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
|
"data_details['irregular_amount_total'] = data_details['irregular_amount_total'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
|
"\n",
|
|
"selected_fields = ['date_fmt', 'version_amount_total', 'unversion_amount_total', 'irregular_amount_total', 'area_manager', 'region_name']\n",
|
|
"new_df_data = data_details[selected_fields]\n",
|
|
"df = new_df_data.copy()\n",
|
|
"df['all_result_d'] = df[['version_amount_total', 'unversion_amount_total', 'irregular_amount_total']].sum(axis=1)\n",
|
|
"# df['frequently_result_d'] = df[['version_amount_total', 'unversion_amount_total']].sum(axis=1)\n",
|
|
"result_molecule = df[df['area_manager'].notnull() & df['region_name'].notnull() & df['date_fmt'].notnull()].groupby(['date_fmt','area_manager', 'region_name'])['all_result_d'].sum().reset_index()\n",
|
|
"result_molecule\n",
|
|
"\n",
|
|
"# 获得连接\n",
|
|
"conn = psycopg2.connect(database=\"f6_bi\", user=\"BASIC$ro_caowei\", password=\"!ro_caowei123\", host=\"hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com\", port=\"80\")\n",
|
|
"# 获得游标对象,一个游标对象可以对数据库进行执行操作\n",
|
|
"cursor = conn.cursor()\n",
|
|
"\n",
|
|
"# sql语句 建表\n",
|
|
"sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_sales_saas_to_renew_org_regular_income_d\" WHERE \"pt\" >= '20230101';\"\"\"\n",
|
|
"# 执行语句\n",
|
|
"cursor.execute(sql)\n",
|
|
"# 获取结果集的每一行\n",
|
|
"rows = cursor.fetchall()\n",
|
|
"# 获取所有字段名\n",
|
|
"all_fields = cursor.description\n",
|
|
"#执行结果转化为dataframe\n",
|
|
"col = []\n",
|
|
"for i in all_fields:\n",
|
|
" col.append(i[0])\n",
|
|
"data_details = pd.DataFrame(list(rows),columns=col)\n",
|
|
"data_details.to_excel(r'C:\\Users\\admin\\Desktop\\holo_ads_report_sales_saas_to_renew_org_regular_income_d.xlsx')\n",
|
|
"# 关闭数据库连接\n",
|
|
"cursor.close()\n",
|
|
"conn.close()\n",
|
|
"\n",
|
|
"selected_fields = ['date_fmt', 'version_amount_total', 'area_manager', 'region_name']\n",
|
|
"data_details['date_fmt'] = data_details['date_fmt'].str.slice(0, 6)\n",
|
|
"new_df_data = data_details[selected_fields]\n",
|
|
"df = new_df_data.copy()\n",
|
|
"\n",
|
|
"# df['all_result_d'] = df[['version_amount_total', 'unversion_amount_total', 'irregular_amount_total']].sum(axis=1)\n",
|
|
"# df['frequently_result_d'] = df[['version_amount_total', 'unversion_amount_total']].sum(axis=1)\n",
|
|
"result_denominator = df[df['area_manager'].notnull() & df['region_name'].notnull() & df['date_fmt'].notnull()].groupby(['date_fmt','area_manager', 'region_name'])['version_amount_total'].sum().reset_index()\n",
|
|
"result_new = pd.merge(result_molecule, result_denominator, on=['date_fmt','area_manager', 'region_name'], how='left')\n",
|
|
"result_new['percentage'] = result_new['all_result_d'].astype(int) / result_new['version_amount_total']\n",
|
|
"result_new['all_result_d'] = round(result_new['all_result_d'], 2)\n",
|
|
"result_new['version_amount_total'] = result_new['version_amount_total'].astype(float).round(2)\n",
|
|
"result_new['percentage'] = result_new['percentage'].astype(float).round(2)/100\n",
|
|
"# 删除percentage列为空的行\n",
|
|
"result_new = result_new.dropna(subset=['percentage'])\n",
|
|
"# 重置索引\n",
|
|
"result_new = result_new.reset_index(drop=True)\n",
|
|
"result_new.to_excel(r\"C:\\Users\\admin\\Desktop\\SaaS续费率_区域续费率.xlsx\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 17,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"新建第 99 条数据! {'result': ['FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KL9M', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLAM', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLBM', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLCM', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLDM', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLEM', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLFM', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLGM', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLHM', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLIM', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLJM', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLKM', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLLM', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLMM', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLNM', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLOM', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLPM', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLQM', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLRM', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLSM', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLTM', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLUM', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLVM', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLWM', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLXM', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLYM', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLZM', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KL0N', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KL1N', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KL2N', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KL3N', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KL4N', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KL5N', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KL6N', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KL7N', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KL8N', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KL9N', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLAN', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLBN', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLCN', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLDN', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLEN', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLFN', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLGN', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLHN', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLIN', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLJN', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLKN', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLLN', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLMN', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLNN', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLON', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLPN', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLQN', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLRN', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLSN', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLTN', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLUN', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLVN', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLWN', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLXN', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLYN', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLZN', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KL0O', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KL1O', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KL2O', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KL3O', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KL4O', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KL5O', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KL6O', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KL7O', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KL8O', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KL9O', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLAO', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLBO', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLCO', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLDO', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLEO', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLFO', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLGO', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLHO', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLIO', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLJO', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLKO', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLLO', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLMO', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLNO', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLOO', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLPO', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLQO', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLRO', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLSO', 'FINST-RL966L81XWKC9R6LCYJUJDFDXCK92XZICP7KLTO']}\n",
|
|
"数据新建成功!\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"def generateToken() -> str:\n",
|
|
" \"\"\" 生成 token \"\"\"\n",
|
|
"\n",
|
|
" token_api = 'https://api.dingtalk.com/v1.0/oauth2/accessToken'\n",
|
|
"\n",
|
|
" # 该信息在钉钉开放应用中\n",
|
|
" data = {\n",
|
|
" \"appKey\": \"ding5kqocon5s9oph5uq\",\n",
|
|
" \"appSecret\": 'HL1jgsIIfLAC0eTH0A1m4mwxUDqbgsiPeCCGGE3ocM6qJBTIW7Ivt9drxF_Z4Kb_'\n",
|
|
" }\n",
|
|
"\n",
|
|
" res = requests.post(token_api, json=data)\n",
|
|
" token = res.json()['accessToken']\n",
|
|
"\n",
|
|
" return token\n",
|
|
"\n",
|
|
"def read_instances(token, formUuid, page, n):\n",
|
|
" \"\"\" 函数功能:读取普通表单的所有数据 \"\"\"\n",
|
|
"\n",
|
|
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'\n",
|
|
"\n",
|
|
" headers = {\n",
|
|
" \"Content-Type\": \"application/json\",\n",
|
|
" \"x-acs-dingtalk-access-token\": token\n",
|
|
" }\n",
|
|
"\n",
|
|
" formData = {\n",
|
|
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
|
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
|
" \"userId\" : \"yida_pub_account\",\n",
|
|
" \"language\" : \"zh_CN\",\n",
|
|
" \"formUuid\" : formUuid,\n",
|
|
" \"currentPage\" : page,\n",
|
|
" \"pageSize\" : n\n",
|
|
" }\n",
|
|
"\n",
|
|
" res = requests.post(api, headers=headers, json=formData)\n",
|
|
" return res.json()\n",
|
|
"\n",
|
|
"def read_delete(token, formInstanceId):\n",
|
|
" \"\"\" 函数功能:调用本接口删除表单数据。 \"\"\"\n",
|
|
"\n",
|
|
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances'\n",
|
|
"\n",
|
|
" headers = {\n",
|
|
" \"Content-Type\": \"application/json\",\n",
|
|
" \"x-acs-dingtalk-access-token\": token\n",
|
|
" }\n",
|
|
"\n",
|
|
" formData = {\n",
|
|
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
|
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
|
" \"userId\" : \"yida_pub_account\",\n",
|
|
" \"language\" : \"zh_CN\",\n",
|
|
" \"formInstanceId\" : formInstanceId\n",
|
|
" }\n",
|
|
"\n",
|
|
" res = requests.delete(api, headers=headers, json=formData)\n",
|
|
" return res.json()\n",
|
|
"\n",
|
|
"def read_new(FORMID,formData):\n",
|
|
" \"\"\" 通过实例id 获取表单内容 \"\"\"\n",
|
|
" api = f'https://api.dingtalk.com/v1.0/yida/forms/instances'\n",
|
|
"\n",
|
|
" headers = {\n",
|
|
" \"Content-Type\": \"application/json\",\n",
|
|
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
|
" }\n",
|
|
" payload = {\n",
|
|
" \"formUuid\" : FORMID,\n",
|
|
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
|
" \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
|
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
|
" \"language\" : \"zh_CN\",\n",
|
|
" \"userId\" : \"yida_pub_account\"\n",
|
|
" }\n",
|
|
"\n",
|
|
" res = requests.post(api, headers=headers, json=payload)\n",
|
|
" print(res.json())\n",
|
|
"\n",
|
|
" return res.json()\n",
|
|
"\n",
|
|
"\n",
|
|
"def component(FORMID,TOKEN):\n",
|
|
" \"\"\" 获取组件信息 \"\"\"\n",
|
|
" api = f'https://api.dingtalk.com//v1.0/yida/forms/formFields'\n",
|
|
"\n",
|
|
" headers = {\n",
|
|
" \"Content-Type\": \"application/json\",\n",
|
|
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
|
" }\n",
|
|
" payload = {\n",
|
|
" \"formUuid\" : FORMID,\n",
|
|
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
|
" # \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
|
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
|
" # \"language\" : \"zh_CN\",\n",
|
|
" \"userId\" : \"yida_pub_account\"\n",
|
|
" }\n",
|
|
"\n",
|
|
" res = requests.get(api, headers=headers, json=payload)\n",
|
|
"\n",
|
|
" return res.json()\n",
|
|
"def Batch_creation(FORMID,TOKEN,ALL_formData):\n",
|
|
" \"\"\" 获取组件信息 \"\"\"\n",
|
|
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchSave'\n",
|
|
"\n",
|
|
" headers = {\n",
|
|
" \"Content-Type\": \"application/json\",\n",
|
|
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
|
" }\n",
|
|
" payload = {\n",
|
|
" # \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
|
" \"noExecuteExpression\" : \"true\",\n",
|
|
" \"formUuid\" : FORMID,\n",
|
|
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
|
" \"asynchronousExecution\" : \"true\",\n",
|
|
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
|
" \"keepRunningAfterException\" : \"true\",\n",
|
|
" \"userId\" : \"yida_pub_account\",\n",
|
|
" \"formDataJsonList\" : json.dumps(ALL_formData, cls=NpEncoder),\n",
|
|
" }\n",
|
|
"\n",
|
|
" res = requests.post(api, headers=headers, json=payload)\n",
|
|
" return res.json()\n",
|
|
"\n",
|
|
"def delete_in_batches(FORMID,TOKEN,ALL_DATA_instance):\n",
|
|
" \"\"\" 批量删除表单实例 \"\"\"\n",
|
|
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchRemove'\n",
|
|
"\n",
|
|
" headers = {\n",
|
|
" \"Content-Type\": \"application/json\",\n",
|
|
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
|
" }\n",
|
|
"\n",
|
|
" payload = {\n",
|
|
" \"formUuid\" : FORMID,\n",
|
|
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
|
" \"asynchronousExecution\" : \"true\",\n",
|
|
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
|
" \"formInstanceIdList\" : json.dumps(ALL_DATA_instance, cls=NpEncoder),\n",
|
|
" \"userId\" : \"yida_pub_account\",\n",
|
|
" \"executeExpression\" : \"false\" # 不触发\n",
|
|
" }\n",
|
|
"\n",
|
|
" res = requests.post(api, headers=headers, json=payload)\n",
|
|
" return res.json()\n",
|
|
"\n",
|
|
"def delete_in(TOKEN,formInstanceIdList):\n",
|
|
" \"\"\" 逐条删除表单实例 \"\"\"\n",
|
|
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances?appType=APP_UYZ0KG6L0CCNV80GZ66O&systemToken=XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2&userId=yida_pub_account&language=zh_CN&formInstanceId={formInstanceIdList}'\n",
|
|
"\n",
|
|
" headers = {\n",
|
|
" \"Content-Type\": \"application/json\",\n",
|
|
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
|
" }\n",
|
|
" res = requests.delete(api, headers=headers)\n",
|
|
" return res.json()\n",
|
|
"\n",
|
|
"class NpEncoder(json.JSONEncoder):\n",
|
|
" def default(self, obj):\n",
|
|
" if isinstance(obj, np.integer):\n",
|
|
" return int(obj)\n",
|
|
" elif isinstance(obj, np.floating):\n",
|
|
" return float(obj)\n",
|
|
" elif isinstance(obj, np.ndarray):\n",
|
|
" return obj.tolist()\n",
|
|
" else:\n",
|
|
" return super(NpEncoder, self).default(obj)\n",
|
|
"TOKEN = generateToken() \n",
|
|
"'''读取员工对应关系:宜搭员工-ID对应表 '''\n",
|
|
"FORMID = \"FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6\" # 宜搭员工-ID对应表 FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6\n",
|
|
"# 读取流程表单数据\n",
|
|
"form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
|
|
"PAGES = form_data.get('totalCount')//10 + 1\n",
|
|
"ALL_DATA_staff = {}\n",
|
|
"\"\"\" 获取全量数据 \"\"\"\n",
|
|
"for i in range(1, PAGES+1):\n",
|
|
" # form_data = read_processes_instances(token=TOKEN, formUuid=FORMID, createFromTimeGMT=CREATE_FROM, createToTimeGMT=CREATE_TO, page=i, n=100, searchField={'textField_l7if5ff9': '否'})\n",
|
|
" form_data = read_instances(token=TOKEN, formUuid=FORMID, page=i, n=100)\n",
|
|
" for data in form_data.get('data'):\n",
|
|
" ALL_DATA_staff[data['formData']['textField_lfrw3u58']]=data['formData']['textField_lfrw3u59']\n",
|
|
"\n",
|
|
"'''遍历数据进行新建'''\n",
|
|
"data_details = result_new.copy()\n",
|
|
"data_details = data_details.astype('string')\n",
|
|
"data_details = data_details.fillna('',inplace=False)\n",
|
|
"for a in range(0,len(data_details[\"date_fmt\"]),100):\n",
|
|
" ALL_formData = []\n",
|
|
" for i in range(a,a+100): # for i in range(len(data_NGV[\"date_fmt\"])):\n",
|
|
" try:\n",
|
|
" formData = {\n",
|
|
" 'textField_lk7ot5i8':data_details[\"date_fmt\"][i],#\"date_fmt\"\n",
|
|
" # 'employeeField_lk7ot5ig':data_details[\"area_manager\"][i],#\"area_manager\"\n",
|
|
" 'textField_lk7ot5ia':data_details[\"region_name\"][i],#\"region_name\"\n",
|
|
" 'textField_lk7ot5ib':data_details[\"all_result_d\"][i],#\"all_result_d\"\n",
|
|
" 'textField_lk7ot5ic':data_details[\"version_amount_total\"][i],#\"version_amount_total\"\n",
|
|
" 'textField_lk7ot5id':data_details[\"percentage\"][i],#\"percentage\"\n",
|
|
" }\n",
|
|
" try:\n",
|
|
" formData['employeeField_lk7ot5ig'] = ALL_DATA_staff[data_details[\"area_manager\"][i]]\n",
|
|
" except:\n",
|
|
" formData['employeeField_lk7ot5ig'] = \"\"\n",
|
|
"\n",
|
|
" ALL_formData.append(json.dumps(formData, cls=NpEncoder)) \n",
|
|
" except:\n",
|
|
" pass\n",
|
|
" FORMID = \"FORM-TD966Z810ILCWMTI9IWFF6V83NSO3OT1TO7KL1\" \n",
|
|
" res_new = Batch_creation(FORMID,TOKEN,ALL_formData)\n",
|
|
" print(\"新建第\",i,\"条数据!\",res_new)\n",
|
|
" time.sleep(10)\n",
|
|
"\n",
|
|
"'''校验是否新建正常'''\n",
|
|
"time.sleep(120)\n",
|
|
"FORMID = \"FORM-TD966Z810ILCWMTI9IWFF6V83NSO3OT1TO7KL1\" \n",
|
|
"form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
|
|
"if int(form_data.get('totalCount')) ==len(data_details):\n",
|
|
" print(\"数据新建成功!\")\n",
|
|
"else:\n",
|
|
" \n",
|
|
" def start_instance_process(token: str, name):\n",
|
|
"\n",
|
|
" \"\"\"发送宜搭表单 -- 发起流程表单\n",
|
|
"\n",
|
|
" Args:\n",
|
|
" token \n",
|
|
" data:需要发送的数据字典\n",
|
|
" \"\"\"\n",
|
|
"\n",
|
|
" yida_api = \"https://api.dingtalk.com/v1.0/yida/processes/instances/start\"\n",
|
|
"\n",
|
|
" headers = {\n",
|
|
" \"Content-Type\": \"application/json\",\n",
|
|
" \"x-acs-dingtalk-access-token\": token\n",
|
|
" }\n",
|
|
"\n",
|
|
" send_data = {\n",
|
|
" \"textField_l9fe0uiw\": name,\n",
|
|
" \"textField_l9fe0uiv\": name\n",
|
|
" }\n",
|
|
"\n",
|
|
" payload = {\n",
|
|
" \"appType\": \"APP_TNVBVZ3K8G56HG03Z45Q\",\n",
|
|
" \"systemToken\": \"CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1\",\n",
|
|
" \"userId\": \"yida_pub_account\",# 超级管理员账号\n",
|
|
" \"language\": \"zh_CN\",\n",
|
|
" \"formUuid\": \"FORM-UX866Q61GNLAZBCIEDF77BGVIIR83K82WYPHLH2\",\n",
|
|
" \"formDataJson\": json.dumps(send_data),\n",
|
|
" \"processCode\":\"TPROC--UX866Q61GNLAZBCIEDF77BGVIIR83M92WYPHLI2\"\n",
|
|
" }\n",
|
|
"\n",
|
|
" res = requests.post(yida_api, headers=headers, json=payload)\n",
|
|
" return res\n",
|
|
" try:\n",
|
|
" name = \"区域续费率 新建条数不正确!\"\n",
|
|
" res_yujing = start_instance_process(TOKEN,name)\n",
|
|
" except:\n",
|
|
" pass"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# 全国续费率"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 19,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"<ipython-input-19-f9f1245d4a8c>:113: SettingWithCopyWarning: \n",
|
|
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
|
|
"Try using .loc[row_indexer,col_indexer] = value instead\n",
|
|
"\n",
|
|
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
|
" new_df_data['is_renew'] = new_df_data['is_renew'].replace(0, 1)\n",
|
|
"<ipython-input-19-f9f1245d4a8c>:127: UserWarning: Pandas requires version '1.4.3' or newer of 'xlsxwriter' (version '1.3.8' currently installed).\n",
|
|
" result_new.to_excel(r\"C:\\Users\\admin\\Desktop\\SaaS续费率_全国续费率.xlsx\")\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# -*- coding: utf-8 -*-\n",
|
|
"# 基础函数配置\n",
|
|
"import psycopg2\n",
|
|
"import pandas as pd\n",
|
|
"import calendar\n",
|
|
"import datetime\n",
|
|
"import pandas as pd\n",
|
|
"import requests\n",
|
|
"from pathlib import Path\n",
|
|
"from urllib.parse import quote\n",
|
|
"import json\n",
|
|
"import numpy as np\n",
|
|
"import time\n",
|
|
"from decimal import Decimal\n",
|
|
"# 获得连接\n",
|
|
"conn = psycopg2.connect(database=\"f6_bi\", user=\"BASIC$ro_caowei\", password=\"!ro_caowei123\", host=\"hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com\", port=\"80\")\n",
|
|
"# 获得游标对象,一个游标对象可以对数据库进行执行操作\n",
|
|
"cursor = conn.cursor()\n",
|
|
"# sql语句 建表\n",
|
|
"sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_sales_saas_to_renew_org_summary_income_d\" WHERE \"pt\" >= '20230101';\"\"\"\n",
|
|
"# 执行语句\n",
|
|
"cursor.execute(sql)\n",
|
|
"# 获取结果集的每一行\n",
|
|
"rows = cursor.fetchall()\n",
|
|
"# 获取所有字段名\n",
|
|
"all_fields = cursor.description\n",
|
|
"#执行结果转化为dataframe\n",
|
|
"col = []\n",
|
|
"for i in all_fields:\n",
|
|
" col.append(i[0])\n",
|
|
"data_details = pd.DataFrame(list(rows),columns=col)\n",
|
|
"# data_NGV.to_excel(r'C:\\Users\\admin\\Desktop\\NGV明细.xlsx')\n",
|
|
"# 关闭数据库连接\n",
|
|
"cursor.close()\n",
|
|
"conn.close()\n",
|
|
"\n",
|
|
"data_details['version_amount_total'] = data_details['version_amount_total'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
|
"data_details['unversion_amount_total'] = data_details['unversion_amount_total'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
|
"data_details['irregular_amount_total'] = data_details['irregular_amount_total'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
|
"\n",
|
|
"selected_fields = ['date_fmt', 'version_amount_total', 'unversion_amount_total', 'irregular_amount_total', 'service_impl_principal']\n",
|
|
"new_df_data = data_details[selected_fields]\n",
|
|
"df = new_df_data.copy()\n",
|
|
"df['all_result_d'] = df[['version_amount_total', 'unversion_amount_total', 'irregular_amount_total']].sum(axis=1)\n",
|
|
"# df['frequently_result_d'] = df[['version_amount_total', 'unversion_amount_total']].sum(axis=1)\n",
|
|
"result_molecule = df[df['service_impl_principal'].notnull() & df['date_fmt'].notnull()].groupby(['date_fmt','service_impl_principal'])['all_result_d'].sum().reset_index()\n",
|
|
"result_molecule\n",
|
|
"\n",
|
|
"# 获得连接\n",
|
|
"conn = psycopg2.connect(database=\"f6_bi\", user=\"BASIC$ro_caowei\", password=\"!ro_caowei123\", host=\"hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com\", port=\"80\")\n",
|
|
"# 获得游标对象,一个游标对象可以对数据库进行执行操作\n",
|
|
"cursor = conn.cursor()\n",
|
|
"\n",
|
|
"# sql语句 建表\n",
|
|
"sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_sales_saas_to_renew_org_regular_income_d\" WHERE \"pt\" >= '20230101';\"\"\"\n",
|
|
"# 执行语句\n",
|
|
"cursor.execute(sql)\n",
|
|
"# 获取结果集的每一行\n",
|
|
"rows = cursor.fetchall()\n",
|
|
"# 获取所有字段名\n",
|
|
"all_fields = cursor.description\n",
|
|
"#执行结果转化为dataframe\n",
|
|
"col = []\n",
|
|
"for i in all_fields:\n",
|
|
" col.append(i[0])\n",
|
|
"data_details = pd.DataFrame(list(rows),columns=col)\n",
|
|
"# data_NGV.to_excel(r'C:\\Users\\admin\\Desktop\\NGV明细.xlsx')\n",
|
|
"# 关闭数据库连接\n",
|
|
"cursor.close()\n",
|
|
"conn.close()\n",
|
|
"\n",
|
|
"data_details['version_amount_total'] = data_details['version_amount_total'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
|
"\n",
|
|
"selected_fields = ['date_fmt', 'version_amount_total', 'service_impl_principal']\n",
|
|
"data_details['date_fmt'] = data_details['date_fmt'].str.slice(0, 6)\n",
|
|
"new_df_data = data_details[selected_fields]\n",
|
|
"df = new_df_data.copy()\n",
|
|
"# df['all_result_d'] = df[['version_amount_total', 'unversion_amount_total', 'irregular_amount_total']].sum(axis=1)\n",
|
|
"# df['frequently_result_d'] = df[['version_amount_total', 'unversion_amount_total']].sum(axis=1)\n",
|
|
"result_denominator = df[df['service_impl_principal'].notnull() & df['date_fmt'].notnull()].groupby(['date_fmt','service_impl_principal'])['version_amount_total'].sum().reset_index()\n",
|
|
"result_denominator\n",
|
|
"result_new = pd.merge(result_molecule, result_denominator, on=['date_fmt','service_impl_principal'], how='left')\n",
|
|
"result_new['percentage'] = result_new['all_result_d'] / result_new['version_amount_total'] * 100\n",
|
|
"result_new_A = result_new.copy()\n",
|
|
"\n",
|
|
"# 获得连接\n",
|
|
"conn = psycopg2.connect(database=\"f6_bi\", user=\"BASIC$ro_caowei\", password=\"!ro_caowei123\", host=\"hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com\", port=\"80\")\n",
|
|
"# 获得游标对象,一个游标对象可以对数据库进行执行操作\n",
|
|
"cursor = conn.cursor()\n",
|
|
"\n",
|
|
"# sql语句 建表\n",
|
|
"sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_sales_saas_regular_income_snapshot_m\" WHERE \"pt\" >= '202301';\"\"\"\n",
|
|
"# 执行语句\n",
|
|
"cursor.execute(sql)\n",
|
|
"# 获取结果集的每一行\n",
|
|
"rows = cursor.fetchall()\n",
|
|
"# 获取所有字段名\n",
|
|
"all_fields = cursor.description\n",
|
|
"#执行结果转化为dataframe\n",
|
|
"col = []\n",
|
|
"for i in all_fields:\n",
|
|
" col.append(i[0])\n",
|
|
"data_details = pd.DataFrame(list(rows),columns=col)\n",
|
|
"# data_NGV.to_excel(r'C:\\Users\\admin\\Desktop\\NGV明细.xlsx')\n",
|
|
"# 关闭数据库连接\n",
|
|
"cursor.close()\n",
|
|
"conn.close()\n",
|
|
"\n",
|
|
"selected_fields = ['month_id', 'is_renew', 'service_impl_principal']\n",
|
|
"new_df_data = data_details[selected_fields]\n",
|
|
"new_df_data_filtration = new_df_data.loc[new_df_data['is_renew'] == 1]\n",
|
|
"result_denominator_filtration = new_df_data_filtration[new_df_data_filtration['service_impl_principal'].notnull() & new_df_data_filtration['month_id'].notnull()& new_df_data_filtration['is_renew'].notnull()].groupby(['month_id','service_impl_principal'])['is_renew'].sum().reset_index()\n",
|
|
"new_df_data['is_renew'] = new_df_data['is_renew'].replace(0, 1)\n",
|
|
"result_denominator = new_df_data[new_df_data['service_impl_principal'].notnull() & new_df_data['month_id'].notnull()& new_df_data['is_renew'].notnull()].groupby(['month_id','service_impl_principal'])['is_renew'].sum().reset_index()\n",
|
|
"result_new = pd.merge(result_denominator, result_denominator_filtration, on=['month_id','service_impl_principal'], how='left')\n",
|
|
"result_new = result_new.rename(columns={'month_id': 'date_fmt'})\n",
|
|
"result_new['is_renew_y'] = result_new['is_renew_y'].replace(np.nan, 0)\n",
|
|
"result_new['percentage'] = result_new['is_renew_y'] / result_new['is_renew_x'] * 100\n",
|
|
"result_new_B = result_new.copy()\n",
|
|
"result_new = pd.merge(result_new_A, result_new_B, on=['date_fmt','service_impl_principal'], how='left')\n",
|
|
"result_new['all_result_d'] = round(result_new['all_result_d'], 2)\n",
|
|
"result_new['version_amount_total'] = round(result_new['version_amount_total'], 2)\n",
|
|
"result_new['percentage_x'] = round(result_new['percentage_x'], 2)\n",
|
|
"result_new['is_renew_x'] = round(result_new['is_renew_x'], 2)\n",
|
|
"result_new['is_renew_y'] = round(result_new['is_renew_y'], 2)\n",
|
|
"result_new['percentage_y'] = round(result_new['percentage_y'], 2)/100\n",
|
|
"result_new.to_excel(r\"C:\\Users\\admin\\Desktop\\SaaS续费率_全国续费率.xlsx\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 20,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"新建第 99 条数据! {'result': ['FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLG', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLH', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLI', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLJ', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLK', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLL', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLM', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLN', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLO', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLP', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLQ', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLR', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLS', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLT', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLU', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLV', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLW', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLX', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLY', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLZ', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KL01', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KL11', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KL21', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KL31', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KL41', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KL51', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KL61', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KL71', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KL81', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KL91', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLA1', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLB1', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLC1', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLD1', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLE1', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLF1', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLG1', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLH1', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLI1', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLJ1', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLK1', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLL1', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLM1', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLN1', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLO1', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLP1', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLQ1', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLR1', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLS1', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLT1', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLU1', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLV1', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLW1', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLX1', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLY1', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLZ1', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KL02', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KL12', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KL22', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KL32', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KL42', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KL52', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KL62', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KL72', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KL82', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KL92', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLA2', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLB2', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLC2', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLD2', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLE2', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLF2', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLG2', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLH2', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLI2', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLJ2', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLK2', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLL2', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLM2', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLN2', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLO2', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLP2', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLQ2', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLR2', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLS2', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLT2', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLU2', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLV2', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLW2', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLX2', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLY2', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KLZ2', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KL03', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KL13', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KL23', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KL33', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KL43', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KL53', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KL63', 'FINST-KH766OB1RHLCC67H8EU7K57S5NSD25WYRP7KL73']}\n",
|
|
"新建第 199 条数据! {'result': ['FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3GT6SP7KL2I', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KL3I', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KL4I', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KL5I', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KL6I', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KL7I', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KL8I', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KL9I', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLAI', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLBI', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLCI', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLDI', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLEI', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLFI', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLGI', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLHI', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLII', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLJI', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLKI', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLLI', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLMI', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLNI', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLOI', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLPI', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLQI', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLRI', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLSI', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLTI', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLUI', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLVI', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLWI', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLXI', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLYI', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLZI', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KL0J', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KL1J', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KL2J', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KL3J', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KL4J', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KL5J', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KL6J', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KL7J', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KL8J', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KL9J', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLAJ', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLBJ', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLCJ', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLDJ', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLEJ', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLFJ', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLGJ', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLHJ', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLIJ', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLJJ', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLKJ', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLLJ', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLMJ', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLNJ', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLOJ', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLPJ', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLQJ', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLRJ', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLSJ', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLTJ', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLUJ', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLVJ', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLWJ', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLXJ', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLYJ', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLZJ', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KL0K', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KL1K', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KL2K', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KL3K', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KL4K', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KL5K', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KL6K', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KL7K', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KL8K', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KL9K', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLAK', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLBK', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLCK', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLDK', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLEK', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLFK', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLGK', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLHK', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLIK', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLJK', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLKK', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLLK', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLMK', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLNK', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLOK', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLPK', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLQK', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLRK', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLSK', 'FINST-1V766G819ZKCHW0J8D7YJ9NO18KL3HT6SP7KLTK']}\n",
|
|
"新建第 299 条数据! {'result': ['FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KLP', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KLQ', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KLR', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KLS', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KLT', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KLU', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KLV', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KLW', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KLX', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KLY', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KLZ', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KL01', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KL11', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KL21', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KL31', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KL41', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KL51', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KL61', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KL71', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KL81', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KL91', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KLA1', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KLB1', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KLC1', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KLD1', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KLE1', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KLF1', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KLG1', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KLH1', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KLI1', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KLJ1', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KLK1', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KLL1', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KLM1', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3CRESP7KLN1', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLO1', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLP1', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLQ1', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLR1', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLS1', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLT1', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLU1', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLV1', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLW1', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLX1', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLY1', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLZ1', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KL02', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KL12', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KL22', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KL32', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KL42', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KL52', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KL62', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KL72', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KL82', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KL92', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLA2', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLB2', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLC2', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLD2', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLE2', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLF2', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLG2', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLH2', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLI2', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLJ2', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLK2', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLL2', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLM2', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLN2', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLO2', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLP2', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLQ2', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLR2', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLS2', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLT2', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLU2', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLV2', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLW2', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLX2', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLY2', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLZ2', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KL03', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KL13', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KL23', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KL33', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KL43', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KL53', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KL63', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KL73', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KL83', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KL93', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLA3', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLB3', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLC3', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLD3', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLE3', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLF3', 'FINST-KH766OB1OELCJGBW7SGS4AYSSVBJ3DRESP7KLG3']}\n",
|
|
"新建第 399 条数据! {'result': ['FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLD3', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLE3', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLF3', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLG3', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLH3', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLI3', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLJ3', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLK3', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLL3', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLM3', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLN3', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLO3', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLP3', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLQ3', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLR3', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLS3', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLT3', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLU3', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLV3', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLW3', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLX3', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLY3', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLZ3', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KL04', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KL14', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KL24', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KL34', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KL44', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KL54', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KL64', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KL74', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KL84', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KL94', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLA4', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLB4', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLC4', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLD4', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLE4', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLF4', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLG4', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLH4', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLI4', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLJ4', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLK4', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLL4', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLM4', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLN4', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLO4', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLP4', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLQ4', 'FINST-JS766JD1XZKC3TAY5YSMF90UX4ZP2ROMSP7KLR4']}\n",
|
|
"数据新建成功!\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"def generateToken() -> str:\n",
|
|
" \"\"\" 生成 token \"\"\"\n",
|
|
"\n",
|
|
" token_api = 'https://api.dingtalk.com/v1.0/oauth2/accessToken'\n",
|
|
"\n",
|
|
" # 该信息在钉钉开放应用中\n",
|
|
" data = {\n",
|
|
" \"appKey\": \"ding5kqocon5s9oph5uq\",\n",
|
|
" \"appSecret\": 'HL1jgsIIfLAC0eTH0A1m4mwxUDqbgsiPeCCGGE3ocM6qJBTIW7Ivt9drxF_Z4Kb_'\n",
|
|
" }\n",
|
|
"\n",
|
|
" res = requests.post(token_api, json=data)\n",
|
|
" token = res.json()['accessToken']\n",
|
|
"\n",
|
|
" return token\n",
|
|
"\n",
|
|
"def read_instances(token, formUuid, page, n):\n",
|
|
" \"\"\" 函数功能:读取普通表单的所有数据 \"\"\"\n",
|
|
"\n",
|
|
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'\n",
|
|
"\n",
|
|
" headers = {\n",
|
|
" \"Content-Type\": \"application/json\",\n",
|
|
" \"x-acs-dingtalk-access-token\": token\n",
|
|
" }\n",
|
|
"\n",
|
|
" formData = {\n",
|
|
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
|
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
|
" \"userId\" : \"yida_pub_account\",\n",
|
|
" \"language\" : \"zh_CN\",\n",
|
|
" \"formUuid\" : formUuid,\n",
|
|
" \"currentPage\" : page,\n",
|
|
" \"pageSize\" : n\n",
|
|
" }\n",
|
|
"\n",
|
|
" res = requests.post(api, headers=headers, json=formData)\n",
|
|
" return res.json()\n",
|
|
"\n",
|
|
"def read_delete(token, formInstanceId):\n",
|
|
" \"\"\" 函数功能:调用本接口删除表单数据。 \"\"\"\n",
|
|
"\n",
|
|
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances'\n",
|
|
"\n",
|
|
" headers = {\n",
|
|
" \"Content-Type\": \"application/json\",\n",
|
|
" \"x-acs-dingtalk-access-token\": token\n",
|
|
" }\n",
|
|
"\n",
|
|
" formData = {\n",
|
|
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
|
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
|
" \"userId\" : \"yida_pub_account\",\n",
|
|
" \"language\" : \"zh_CN\",\n",
|
|
" \"formInstanceId\" : formInstanceId\n",
|
|
" }\n",
|
|
"\n",
|
|
" res = requests.delete(api, headers=headers, json=formData)\n",
|
|
" return res.json()\n",
|
|
"\n",
|
|
"def read_new(FORMID,formData):\n",
|
|
" \"\"\" 通过实例id 获取表单内容 \"\"\"\n",
|
|
" api = f'https://api.dingtalk.com/v1.0/yida/forms/instances'\n",
|
|
"\n",
|
|
" headers = {\n",
|
|
" \"Content-Type\": \"application/json\",\n",
|
|
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
|
" }\n",
|
|
" payload = {\n",
|
|
" \"formUuid\" : FORMID,\n",
|
|
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
|
" \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
|
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
|
" \"language\" : \"zh_CN\",\n",
|
|
" \"userId\" : \"yida_pub_account\"\n",
|
|
" }\n",
|
|
"\n",
|
|
" res = requests.post(api, headers=headers, json=payload)\n",
|
|
" print(res.json())\n",
|
|
"\n",
|
|
" return res.json()\n",
|
|
"\n",
|
|
"\n",
|
|
"def component(FORMID,TOKEN):\n",
|
|
" \"\"\" 获取组件信息 \"\"\"\n",
|
|
" api = f'https://api.dingtalk.com//v1.0/yida/forms/formFields'\n",
|
|
"\n",
|
|
" headers = {\n",
|
|
" \"Content-Type\": \"application/json\",\n",
|
|
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
|
" }\n",
|
|
" payload = {\n",
|
|
" \"formUuid\" : FORMID,\n",
|
|
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
|
" # \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
|
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
|
" # \"language\" : \"zh_CN\",\n",
|
|
" \"userId\" : \"yida_pub_account\"\n",
|
|
" }\n",
|
|
"\n",
|
|
" res = requests.get(api, headers=headers, json=payload)\n",
|
|
"\n",
|
|
" return res.json()\n",
|
|
"def Batch_creation(FORMID,TOKEN,ALL_formData):\n",
|
|
" \"\"\" 获取组件信息 \"\"\"\n",
|
|
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchSave'\n",
|
|
"\n",
|
|
" headers = {\n",
|
|
" \"Content-Type\": \"application/json\",\n",
|
|
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
|
" }\n",
|
|
" payload = {\n",
|
|
" # \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
|
" \"noExecuteExpression\" : \"true\",\n",
|
|
" \"formUuid\" : FORMID,\n",
|
|
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
|
" \"asynchronousExecution\" : \"true\",\n",
|
|
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
|
" \"keepRunningAfterException\" : \"true\",\n",
|
|
" \"userId\" : \"yida_pub_account\",\n",
|
|
" \"formDataJsonList\" : json.dumps(ALL_formData, cls=NpEncoder),\n",
|
|
" }\n",
|
|
"\n",
|
|
" res = requests.post(api, headers=headers, json=payload)\n",
|
|
" return res.json()\n",
|
|
"\n",
|
|
"def delete_in_batches(FORMID,TOKEN,ALL_DATA_instance):\n",
|
|
" \"\"\" 批量删除表单实例 \"\"\"\n",
|
|
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchRemove'\n",
|
|
"\n",
|
|
" headers = {\n",
|
|
" \"Content-Type\": \"application/json\",\n",
|
|
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
|
" }\n",
|
|
"\n",
|
|
" payload = {\n",
|
|
" \"formUuid\" : FORMID,\n",
|
|
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
|
" \"asynchronousExecution\" : \"true\",\n",
|
|
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
|
" \"formInstanceIdList\" : json.dumps(ALL_DATA_instance, cls=NpEncoder),\n",
|
|
" \"userId\" : \"yida_pub_account\",\n",
|
|
" \"executeExpression\" : \"false\" # 不触发\n",
|
|
" }\n",
|
|
"\n",
|
|
" res = requests.post(api, headers=headers, json=payload)\n",
|
|
" return res.json()\n",
|
|
"\n",
|
|
"def delete_in(TOKEN,formInstanceIdList):\n",
|
|
" \"\"\" 逐条删除表单实例 \"\"\"\n",
|
|
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances?appType=APP_UYZ0KG6L0CCNV80GZ66O&systemToken=XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2&userId=yida_pub_account&language=zh_CN&formInstanceId={formInstanceIdList}'\n",
|
|
"\n",
|
|
" headers = {\n",
|
|
" \"Content-Type\": \"application/json\",\n",
|
|
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
|
" }\n",
|
|
" res = requests.delete(api, headers=headers)\n",
|
|
" return res.json()\n",
|
|
"\n",
|
|
"class NpEncoder(json.JSONEncoder):\n",
|
|
" def default(self, obj):\n",
|
|
" if isinstance(obj, np.integer):\n",
|
|
" return int(obj)\n",
|
|
" elif isinstance(obj, np.floating):\n",
|
|
" return float(obj)\n",
|
|
" elif isinstance(obj, np.ndarray):\n",
|
|
" return obj.tolist()\n",
|
|
" else:\n",
|
|
" return super(NpEncoder, self).default(obj)\n",
|
|
"TOKEN = generateToken() \n",
|
|
"'''读取员工对应关系:宜搭员工-ID对应表 '''\n",
|
|
"FORMID = \"FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6\" # 宜搭员工-ID对应表 FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6\n",
|
|
"# 读取流程表单数据\n",
|
|
"form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
|
|
"PAGES = form_data.get('totalCount')//10 + 1\n",
|
|
"ALL_DATA_staff = {}\n",
|
|
"\"\"\" 获取全量数据 \"\"\"\n",
|
|
"for i in range(1, PAGES+1):\n",
|
|
" # form_data = read_processes_instances(token=TOKEN, formUuid=FORMID, createFromTimeGMT=CREATE_FROM, createToTimeGMT=CREATE_TO, page=i, n=100, searchField={'textField_l7if5ff9': '否'})\n",
|
|
" form_data = read_instances(token=TOKEN, formUuid=FORMID, page=i, n=100)\n",
|
|
" for data in form_data.get('data'):\n",
|
|
" ALL_DATA_staff[data['formData']['textField_lfrw3u58']]=data['formData']['textField_lfrw3u59']\n",
|
|
"\n",
|
|
"'''遍历数据进行新建'''\n",
|
|
"data_details = result_new.copy()\n",
|
|
"data_details = data_details.astype('string')\n",
|
|
"data_details = data_details.fillna('',inplace=False)\n",
|
|
"for a in range(0,len(data_details[\"date_fmt\"]),100):\n",
|
|
" ALL_formData = []\n",
|
|
" for i in range(a,a+100): # for i in range(len(data_NGV[\"date_fmt\"])):\n",
|
|
" try:\n",
|
|
" formData = {\n",
|
|
" 'textField_lk7pibrx':data_details[\"date_fmt\"][i],#\"date_fmt\"\n",
|
|
" # 'employeeField_lk7pibs5':data_details[\"service_impl_principal\"][i],#\"service_impl_principal\"\n",
|
|
" 'textField_lk7pibrz':data_details[\"all_result_d\"][i],#\"all_result_d\"\n",
|
|
" 'textField_lk7pibs0':data_details[\"version_amount_total\"][i],#\"version_amount_total\"\n",
|
|
" 'textField_lk7pibs1':data_details[\"percentage_x\"][i],#\"percentage_x\"\n",
|
|
" 'textField_lk7pibs2':data_details[\"is_renew_x\"][i],#\"is_renew_x\"\n",
|
|
" 'textField_lk7pibs3':data_details[\"is_renew_y\"][i],#\"is_renew_y\"\n",
|
|
" 'textField_lk7pibs4':data_details[\"percentage_y\"][i],#\"percentage_y\"\n",
|
|
" }\n",
|
|
" try:\n",
|
|
" formData['employeeField_lk7pibs5'] = ALL_DATA_staff[data_details[\"service_impl_principal\"][i]]\n",
|
|
" except:\n",
|
|
" formData['employeeField_lk7pibs5'] = \"\"\n",
|
|
"\n",
|
|
" ALL_formData.append(json.dumps(formData, cls=NpEncoder)) \n",
|
|
" except:\n",
|
|
" pass\n",
|
|
" FORMID = \"FORM-L8966281FILCMAXK7QDGW5E0SZ3Y2CAJHP7KL1\" \n",
|
|
" res_new = Batch_creation(FORMID,TOKEN,ALL_formData)\n",
|
|
" print(\"新建第\",i,\"条数据!\",res_new)\n",
|
|
" time.sleep(10)\n",
|
|
"\n",
|
|
"'''校验是否新建正常'''\n",
|
|
"time.sleep(120)\n",
|
|
"FORMID = \"FORM-L8966281FILCMAXK7QDGW5E0SZ3Y2CAJHP7KL1\" \n",
|
|
"form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
|
|
"if int(form_data.get('totalCount')) ==len(data_details):\n",
|
|
" print(\"数据新建成功!\")\n",
|
|
"else:\n",
|
|
" \n",
|
|
" def start_instance_process(token: str, name):\n",
|
|
"\n",
|
|
" \"\"\"发送宜搭表单 -- 发起流程表单\n",
|
|
"\n",
|
|
" Args:\n",
|
|
" token \n",
|
|
" data:需要发送的数据字典\n",
|
|
" \"\"\"\n",
|
|
"\n",
|
|
" yida_api = \"https://api.dingtalk.com/v1.0/yida/processes/instances/start\"\n",
|
|
"\n",
|
|
" headers = {\n",
|
|
" \"Content-Type\": \"application/json\",\n",
|
|
" \"x-acs-dingtalk-access-token\": token\n",
|
|
" }\n",
|
|
"\n",
|
|
" send_data = {\n",
|
|
" \"textField_l9fe0uiw\": name,\n",
|
|
" \"textField_l9fe0uiv\": name\n",
|
|
" }\n",
|
|
"\n",
|
|
" payload = {\n",
|
|
" \"appType\": \"APP_TNVBVZ3K8G56HG03Z45Q\",\n",
|
|
" \"systemToken\": \"CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1\",\n",
|
|
" \"userId\": \"yida_pub_account\",# 超级管理员账号\n",
|
|
" \"language\": \"zh_CN\",\n",
|
|
" \"formUuid\": \"FORM-UX866Q61GNLAZBCIEDF77BGVIIR83K82WYPHLH2\",\n",
|
|
" \"formDataJson\": json.dumps(send_data),\n",
|
|
" \"processCode\":\"TPROC--UX866Q61GNLAZBCIEDF77BGVIIR83M92WYPHLI2\"\n",
|
|
" }\n",
|
|
"\n",
|
|
" res = requests.post(yida_api, headers=headers, json=payload)\n",
|
|
" return res\n",
|
|
" try:\n",
|
|
" name = \"全国续费率 新建条数不正确!\"\n",
|
|
" res_yujing = start_instance_process(TOKEN,name)\n",
|
|
" except:\n",
|
|
" pass"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "F6processing",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.9.4"
|
|
},
|
|
"orig_nbformat": 4
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|