Files
F6--/其它系统脚本/续费率四张表导出.ipynb
T
2026-01-30 11:28:35 +08:00

609 lines
30 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"\n",
"\n",
"# -*- coding: utf-8 -*-\n",
"import psycopg2\n",
"import pandas as pd\n",
"import calendar\n",
"import datetime\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",
"# 获取当前日期\n",
"today = datetime.date.today()\n",
"# 获取当月的第一天\n",
"first_day_of_month = int(today.replace(day=1).strftime('%Y%m%d'))\n",
"# 获取当月的最后一天\n",
"last_day_of_month = int(today.replace(day=calendar.monthrange(today.year, today.month)[1]).strftime('%Y%m%d'))\n",
"\n",
"# sql语句 建表\n",
"sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_sales_saas_to_renew_org_regular_income_d\" WHERE \"pt\" >= '20230901';\"\"\"\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\\月度续费率分母.xlsx')\n",
"# 关闭数据库连接\n",
"cursor.close()\n",
"conn.close()\n",
"\n",
"# -*- coding: utf-8 -*-\n",
"import psycopg2\n",
"import pandas as pd\n",
"import calendar\n",
"import datetime\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",
"# 获取当前日期\n",
"today = datetime.date.today()\n",
"# 获取当月\n",
"first_day_of_month = int(today.replace().strftime('%Y%m'))\n",
"\n",
"\n",
"# sql语句 建表\n",
"sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_sales_saas_to_renew_org_summary_income_d\" WHERE \"pt\" = '2023';\"\"\"\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\\月度续费率分子.xlsx')\n",
"# 关闭数据库连接\n",
"cursor.close()\n",
"conn.close()\n",
"\n",
"# -*- coding: utf-8 -*-\n",
"import psycopg2\n",
"import pandas as pd\n",
"import calendar\n",
"import datetime\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",
"# 获取当前日期\n",
"today = datetime.date.today()\n",
"# 获取当月\n",
"first_day_of_month = int(today.replace().strftime('%Y%m'))\n",
"\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_details.to_excel(r'C:\\Users\\admin\\Desktop\\年度滚动续费率分母.xlsx')\n",
"# 关闭数据库连接\n",
"cursor.close()\n",
"conn.close()\n",
"print(len(data_details))\n",
"\n",
"\n",
"# -*- coding: utf-8 -*-\n",
"import psycopg2\n",
"import pandas as pd\n",
"import calendar\n",
"import datetime\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",
"# 获取当前日期\n",
"today = datetime.date.today()\n",
"# 获取当月\n",
"first_day_of_month = int(today.replace().strftime('%Y%m'))-2\n",
"\n",
"# sql语句 建表\n",
"sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_sales_saas_org_summary_income_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_details.to_excel(r'C:\\Users\\admin\\Desktop\\年度滚动续费率分子.xlsx')\n",
"# 关闭数据库连接\n",
"cursor.close()\n",
"conn.close()\n",
"print(len(data_details))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 提前立减额"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"c:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\numpy\\_distributor_init.py:30: UserWarning: loaded more than 1 DLL from .libs:\n",
"c:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\numpy\\.libs\\libopenblas.EL2C6PLE4ZYW3ECEVIV3OXXGRN2NRFM2.gfortran-win_amd64.dll\n",
"c:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\numpy\\.libs\\libopenblas64__v0.3.21-gcc_10_3_0.dll\n",
" warnings.warn(\"loaded more than 1 DLL from .libs:\"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"67597\n",
"' textField_l556qrj ': data_details[ \"计算年份\" ][i], # \"计算年份\"\n",
"' textField_ioghzon ': data_details[ \"商户id\" ][i], # \"商户id\"\n",
"' textField_kr3pc6c ': data_details[ \"门店id\" ][i], # \"门店id\"\n",
"' textField_sv3xmix ': data_details[ \"门店编码\" ][i], # \"门店编码\"\n",
"' textField_nk98j1i ': data_details[ \"门店名称\" ][i], # \"门店名称\"\n",
"' textField_gvdimtj ': data_details[ \"公司id\" ][i], # \"公司id\"\n",
"' textField_ntc1mqo ': data_details[ \"公司名称\" ][i], # \"公司名称\"\n",
"' textField_dssu351 ': data_details[ \"公司等级\" ][i], # \"公司等级\"\n",
"' dateField_hgp5gh8 ': data_details[ \"开户日期\" ][i], # \"开户日期\"\n",
"' textField_m6wvkhp ': data_details[ \"开户渠道来源\" ][i], # \"开户渠道来源\"\n",
"' textField_rzrq44v ': data_details[ \"加盟商公司名称\" ][i], # \"加盟商公司名称\"\n",
"' textField_s8u1211 ': data_details[ \"大区\" ][i], # \"大区\"\n",
"' textField_bifjpqz ': data_details[ \"小区\" ][i], # \"小区\"\n",
"' textField_zz547i2 ': data_details[ \"省份\" ][i], # \"省份\"\n",
"' textField_j86bqku ': data_details[ \"城市\" ][i], # \"城市\"\n",
"' employeeField_li0304o0 ': data_details[ \"区域经理\" ][i], # \"区域经理\"\n",
"' employeeField_li0304o1 ': data_details[ \"运营负责人\" ][i], # \"运营负责人\"\n",
"' employeeField_li0304o2 ': data_details[ \"技术专家\" ][i], # \"技术专家\"\n",
"' dateField_f7cjejs ': data_details[ \"应续约时间\" ][i], # \"应续约时间\"\n",
"' textField_4a171yy ': data_details[ \"当前saas版本\" ][i], # \"当前saas版本\"\n",
"' textField_9cja7t3 ': data_details[ \"经常性_版本收入合计\" ][i], # \"经常性_版本收入合计\"\n",
"' textField_tdd8vic ': data_details[ \"经常性_版本收入_saas\" ][i], # \"经常性_版本收入_saas\"\n",
"' textField_yc1liag ': data_details[ \"经常性_版本收入_其他\" ][i], # \"经常性_版本收入_其他\"\n",
"' textField_sazuktm ': data_details[ \"经常性_非版本收入合计\" ][i], # \"经常性_非版本收入合计\"\n",
"' textField_dzyddir ': data_details[ \"经常性_非版本收入_企业钱包\" ][i], # \"经常性_非版本收入_企业钱包\"\n",
"' textField_rimc2k8 ': data_details[ \"经常性_非版本收入_短信\" ][i], # \"经常性_非版本收入_短信\"\n",
"' textField_whlq8rb ': data_details[ \"非经常性_收入合计\" ][i], # \"非经常性_收入合计\"\n",
"' textField_jm29spy ': data_details[ \"非经常性_活动广场\" ][i], # \"非经常性_活动广场\"\n",
"' textField_hf46l34 ': data_details[ \"非经常性_服务包\" ][i], # \"非经常性_服务包\"\n",
"' textField_pkyoug6 ': data_details[ \"券金额(只做展示用,saas和服务包等已补回券金额)\" ][i], # \"券金额(只做展示用,saas和服务包等已补回券金额)\"\n",
"' dateField_uwztkat ': data_details[ \"数据处理时间\" ][i], # \"数据处理时间\"\n",
"' textField_llm3mclm ': data_details[ \"提前立减额\" ][i], # \"提前立减额\"\n",
"' textField_s6mf0at ': data_details[ \"月分区(存储年初至本月累计分子)\" ][i], # \"月分区(存储年初至本月累计分子)\"\n",
"读取到流程表中 1291 条数据\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"<ipython-input-1-b722f7ecdcf5>:360: 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\\年度滚动续费率分子+提前续约金额.xlsx')\n"
]
}
],
"source": [
"# -*- coding: utf-8 -*-\n",
"import psycopg2\n",
"import pandas as pd\n",
"import calendar\n",
"import datetime\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",
"# 获取当前日期\n",
"today = datetime.date.today()\n",
"# 获取当月\n",
"first_day_of_month = int(today.replace().strftime('%Y%m'))-2\n",
"\n",
"# sql语句 建表\n",
"sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_sales_saas_org_summary_income_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",
"\n",
"# 关闭数据库连接\n",
"cursor.close()\n",
"conn.close()\n",
"print(len(data_details))\n",
"\n",
"\n",
"from decimal import Decimal\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['version_amount_saas'] = data_details['version_amount_saas'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
"data_details['version_amount_other'] = data_details['version_amount_other'].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['unversion_amount_mngv'] = data_details['unversion_amount_mngv'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
"data_details['unversion_amount_message'] = data_details['unversion_amount_message'].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",
"data_details['irregular_amount_activity'] = data_details['irregular_amount_activity'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
"data_details['irregular_amount_service'] = data_details['irregular_amount_service'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
"data_details['coupon_amount'] = data_details['coupon_amount'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"# 基础函数配置\n",
"import pandas as pd\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",
"\n",
"ROOT = Path('.').absolute() # 当前工作目录\n",
"\n",
"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",
"def read_instances_pt(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",
"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')//100 + 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",
"FORMID = \"FORM-GI666T81ZBWAFJZVABUMA80PJSDC2YCOZ20ILZ\"\n",
"component_list = component(FORMID,TOKEN)\n",
"for i in range(len(component_list['result'])):\n",
" componentName = component_list['result'][i]['componentName']\n",
" name_value = component_list['result'][i]['label']['value']\n",
" fieldId = component_list['result'][i]['fieldId']\n",
" print(\"'\",fieldId,\"':\",\"data_details[\",name_value,\"][i], # \",name_value)\n",
"'''获取订单明细'''\n",
"form_data = read_instances_pt(token=TOKEN, formUuid=\"FORM-E6766M8103CDA5M3CJ06JDRCLSKV2FJ6Z3CLLA\" , page=1, n=100)\n",
"PAGES = form_data.get('totalCount')//100 + 1\n",
"ALL_DATA = []\n",
"\"\"\" 获取全量数据 \"\"\"\n",
"for i in range(1, PAGES+1):\n",
" form_data = read_instances_pt(token=TOKEN, formUuid=\"FORM-E6766M8103CDA5M3CJ06JDRCLSKV2FJ6Z3CLLA\" , page=i, n=100)\n",
" for data in form_data.get('data'):\n",
" ALL_DATA.append([data['formData'][\"textField_dv032lp\"],data['formData'][\"textField_cwqfrcq\"],data['formData'][\"textField_qplm0p9\"]+data['formData'][\"textField_wy749n8\"]])\n",
"print(f'读取到流程表中 {len(ALL_DATA)} 条数据')\n",
"df_DataFrame = pd.DataFrame(ALL_DATA, columns=[ '优惠券金额', '提前续约优惠', '公司名称门店名称'])\n",
"\n",
"'''遍历数据进行新建'''\n",
"data_details = data_details.astype('string')\n",
"data_details = data_details.fillna('',inplace=False)\n",
"for a in range(0,len(data_details[\"year_id\"]),100):\n",
" ALL_formData = []\n",
" for i in range(a,a+100): # for i in range(len(data_NGV[\"date_fmt\"])):\n",
" try:\n",
" try:\n",
" if data_details[\"franchise_group_name\"][i] ==\"\":\n",
" data_details[\"franchise_group_name\"][i] = \"普通SAAS\"\n",
" except:\n",
" pass\n",
" formData = {\n",
" 'textField_l556qrj':data_details[\"year_id\"][i],#\"year_id\"\n",
" 'textField_ioghzon':data_details[\"org_crm_id\"][i],#\"org_crm_id\"\n",
" 'textField_kr3pc6c':data_details[\"org_id\"][i],#\"org_id\"\n",
" 'textField_sv3xmix':data_details[\"org_code\"][i],#\"org_code\"\n",
" 'textField_nk98j1i':data_details[\"org_name\"][i],#\"org_name\"\n",
" 'textField_gvdimtj':data_details[\"group_id\"][i],#\"group_id\"\n",
" 'textField_ntc1mqo':data_details[\"group_name\"][i],#\"group_name\"\n",
" 'textField_dssu351':data_details[\"group_grade\"][i],#\"group_grade\"\n",
" 'dateField_hgp5gh8':int(time.mktime(time.strptime(data_details[\"saas_create_time\"][i], \"%Y-%m-%d %H:%M:%S\"))*1000) if data_details[\"saas_create_time\"][i] !='' else '',#\"saas_create_time\"\n",
" 'textField_m6wvkhp':data_details[\"from_flag_fmt\"][i],#\"from_flag_fmt\"\n",
" 'textField_rzrq44v':data_details[\"franchise_group_name\"][i],#\"franchise_group_name\"\n",
" 'textField_s8u1211':data_details[\"region_name\"][i],#\"region_name\"\n",
" 'textField_bifjpqz':data_details[\"branch_name\"][i],#\"branch_name\"\n",
" 'textField_zz547i2':data_details[\"province_name\"][i],#\"province_name\"\n",
" 'textField_j86bqku':data_details[\"city_name\"][i],#\"city_name\"\n",
" # 'employeeField_li0304o0':ALL_DATA_staff[data_details[\"area_manager\"][i]] if data_details[\"area_manager\"][i] !='' else '',#\"area_manager\"\n",
" # 'employeeField_li0304o1':ALL_DATA_staff[data_details[\"service_impl_principal\"][i]] if data_details[\"service_impl_principal\"][i] !='' else '',#\"service_impl_principal\"\n",
" # 'employeeField_li0304o2':ALL_DATA_staff[data_details[\"technician\"][i]] if data_details[\"technician\"][i] !='' else '',#\"technician\"\n",
" 'dateField_f7cjejs':int(time.mktime(time.strptime(data_details[\"to_renew_time\"][i], \"%Y-%m-%d %H:%M:%S\"))*1000) if data_details[\"to_renew_time\"][i] !='' else '',#\"to_renew_time\"\n",
" 'textField_4a171yy':data_details[\"saas_edition_fmt\"][i],#\"saas_edition_fmt\"\n",
" 'textField_9cja7t3':data_details[\"version_amount_total\"][i],#\"version_amount_total\"\n",
" 'textField_tdd8vic':data_details[\"version_amount_saas\"][i],#\"version_amount_saas\"\n",
" 'textField_yc1liag':data_details[\"version_amount_other\"][i],#\"version_amount_other\"\n",
" 'textField_sazuktm':data_details[\"unversion_amount_total\"][i],#\"unversion_amount_total\"\n",
" 'textField_dzyddir':data_details[\"unversion_amount_mngv\"][i],#\"unversion_amount_mngv\"\n",
" 'textField_rimc2k8':data_details[\"unversion_amount_message\"][i],#\"unversion_amount_message\"\n",
" 'textField_whlq8rb':data_details[\"irregular_amount_total\"][i],#\"irregular_amount_total\"\n",
" 'textField_jm29spy':data_details[\"irregular_amount_activity\"][i],#\"irregular_amount_activity\"\n",
" 'textField_hf46l34':data_details[\"irregular_amount_service\"][i],#\"irregular_amount_service\"\n",
" 'textField_pkyoug6':data_details[\"coupon_amount\"][i],#\"coupon_amount\"\n",
" 'dateField_uwztkat':int(time.mktime(time.strptime(data_details[\"etl_time\"][i], \"%Y-%m-%d %H:%M:%S\"))*1000) if data_details[\"etl_time\"][i] !='' else '',#\"etl_time\"\n",
" 'textField_s6mf0at':data_details[\"pt\"][i],#\"pt\"\n",
" 'textField_llm3mclm':\"0\" #\"提前续约优惠\"\n",
" }\n",
" try:\n",
" formData['employeeField_li0304o2'] = ALL_DATA_staff[data_details[\"technician\"][i]]\n",
" except:\n",
" formData['employeeField_li0304o2'] = \"\"\n",
" try:\n",
" formData['employeeField_li0304o1'] = ALL_DATA_staff[data_details[\"service_impl_principal\"][i]]\n",
" except:\n",
" formData['employeeField_li0304o1'] = \"\"\n",
" try:\n",
" formData['employeeField_li0304o0'] = ALL_DATA_staff[data_details[\"area_manager\"][i]]\n",
" except:\n",
" formData['employeeField_li0304o0'] = \"\"\n",
" try:\n",
" group_name_org_name = formData['textField_ntc1mqo'] + formData['textField_nk98j1i']\n",
" row_numbers = df_DataFrame.index[df_DataFrame['公司名称门店名称'] == group_name_org_name].tolist()\n",
" if row_numbers[0]>0:\n",
" pandan_new = int(float(df_DataFrame.loc[row_numbers,'优惠券金额'].values[0])) - int(float(formData['textField_pkyoug6']))\n",
" if pandan_new == 0 or df_DataFrame.loc[row_numbers,'优惠券金额'].values[0] == \"0\":\n",
" data_details['year_id'][i] = df_DataFrame.loc[row_numbers[0],'提前续约优惠'] # 提前续约优惠\n",
" except:\n",
" formData['textField_llm3mclm'] = \"0\"\n",
"\n",
" ALL_formData.append(json.dumps(formData, cls=NpEncoder)) \n",
" except:\n",
" pass\n",
"data_details.to_excel(r'C:\\Users\\admin\\Desktop\\年度滚动续费率分子+提前续约金额.xlsx')"
]
}
],
"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"
}
},
"nbformat": 4,
"nbformat_minor": 2
}