Files
F6--/其它系统脚本/NGV明细数据同步.ipynb
T
2026-01-30 11:28:35 +08:00

1364 lines
66 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"49\n",
"单条删除 FINST-UG8660A1FYUAATRG7OJJV40X6VM72QEFZRTHL1H 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1F2CKCSHL99 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1H2CKCSHLLA 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1I2CKCSHL4B 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1H2CKCSHLTA 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1F2CKCSHLI9 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1G2CKCSHL4A 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1I2CKCSHLFB 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1H2CKCSHLIA 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1F2CKCSHL89 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1I2CKCSHL5B 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1H2CKCSHLQA 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1G2CKCSHLV9 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1H2CKCSHLYA 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1F2CKCSHLH9 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1G2CKCSHL3A 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1I2CKCSHLGB 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1H2CKCSHLBA 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1G2CKCSHLT9 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1F2CKCSHL79 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1H2CKCSHLJA 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1I2CKCSHL6B 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1H2CKCSHLRA 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1G2CKCSHLU9 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1F2CKCSHLG9 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1I2CKCSHLHB 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1H2CKCSHLGA 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1G2CKCSHLO9 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1F2CKCSHL69 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1G2CKCSHL6A 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1I2CKCSHL7B 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1F2CKCSHL59 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1H2CKCSHLOA 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1G2CKCSHLX9 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1F2CKCSHLN9 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1H2CKCSHLWA 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1F2CKCSHLF9 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1F2CKCSHLE9 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1I2CKCSHLIB 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1I2CKCSHLAB 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1H2CKCSHLHA 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1G2CKCSHL5A 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1F2CKCSHL49 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1H2CKCSHLPA 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1G2CKCSHLW9 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1I2CKCSHL8B 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1F2CKCSHLM9 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1H2CKCSHLXA 数据!\n",
"单条删除 FINST-DR766X81A0VABPH46KHCJ7E79BRZ1I2CKCSHL0B 数据!\n",
"1\n",
"0\n",
"10\n",
"0\n",
"0\n",
"10\n",
"0\n",
"0\n",
"10\n",
"10\n",
"8\n",
"0\n",
"0\n",
"8\n",
"8\n",
"0\n",
"0\n",
"8\n",
"0\n",
"新建第 99 条数据!\n",
"新建第 199 条数据!\n",
"新建第 299 条数据!\n",
"新建第 399 条数据!\n",
"新建第 499 条数据!\n",
"新建第 599 条数据!\n",
"新建第 699 条数据!\n",
"新建第 799 条数据!\n",
"新建第 899 条数据!\n",
"新建第 999 条数据!\n",
"新建第 1099 条数据!\n",
"新建第 1199 条数据!\n",
"新建第 1299 条数据!\n",
"新建第 1399 条数据!\n",
"新建第 1499 条数据!\n",
"新建第 1599 条数据!\n",
"新建第 1699 条数据!\n",
"新建第 1799 条数据!\n",
"新建第 1899 条数据!\n",
"新建第 1999 条数据!\n",
"新建第 2099 条数据!\n",
"新建第 2199 条数据!\n",
"新建第 2299 条数据!\n",
"新建第 2399 条数据!\n",
"新建第 2499 条数据!\n",
"新建第 2599 条数据!\n",
"新建第 2699 条数据!\n",
"新建第 2799 条数据!\n",
"新建第 2899 条数据!\n",
"新建第 2999 条数据!\n",
"新建第 3099 条数据!\n",
"新建第 3199 条数据!\n",
"新建第 3299 条数据!\n",
"新建第 3399 条数据!\n",
"新建第 3499 条数据!\n",
"新建第 3599 条数据!\n",
"新建第 3699 条数据!\n",
"新建第 3799 条数据!\n",
"新建第 3899 条数据!\n",
"新建第 3999 条数据!\n",
"新建第 4099 条数据!\n",
"新建第 4199 条数据!\n",
"新建第 4299 条数据!\n",
"新建第 4399 条数据!\n",
"新建第 4499 条数据!\n",
"新建第 4599 条数据!\n",
"新建第 4699 条数据!\n",
"新建第 4799 条数据!\n",
"新建第 4899 条数据!\n",
"新建第 4999 条数据!\n",
"新建第 5099 条数据!\n",
"新建第 5199 条数据!\n",
"新建第 5299 条数据!\n",
"新建第 5399 条数据!\n",
"新建第 5499 条数据!\n",
"新建第 5599 条数据!\n",
"新建第 5699 条数据!\n",
"新建第 5799 条数据!\n",
"新建第 5899 条数据!\n",
"新建第 5999 条数据!\n",
"新建第 6099 条数据!\n",
"新建第 6199 条数据!\n",
"新建第 6299 条数据!\n",
"新建第 6399 条数据!\n",
"新建第 6499 条数据!\n",
"新建第 6599 条数据!\n",
"新建第 6699 条数据!\n",
"新建第 6799 条数据!\n",
"新建第 6899 条数据!\n",
"新建第 6999 条数据!\n",
"新建第 7099 条数据!\n",
"新建第 7199 条数据!\n",
"新建第 7299 条数据!\n",
"新建第 7399 条数据!\n",
"新建第 7499 条数据!\n",
"新建第 7599 条数据!\n",
"新建第 7699 条数据!\n",
"新建第 7799 条数据!\n",
"新建第 7899 条数据!\n",
"新建第 7999 条数据!\n",
"新建第 8099 条数据!\n",
"新建第 8199 条数据!\n",
"新建第 8299 条数据!\n",
"新建第 8399 条数据!\n",
"新建第 8499 条数据!\n",
"新建第 8599 条数据!\n",
"新建第 8699 条数据!\n",
"新建第 8799 条数据!\n",
"新建第 8899 条数据!\n",
"新建第 8999 条数据!\n",
"新建第 9099 条数据!\n",
"新建第 9199 条数据!\n",
"新建第 9299 条数据!\n",
"新建第 9399 条数据!\n",
"新建第 9499 条数据!\n",
"新建第 9599 条数据!\n",
"新建第 9699 条数据!\n",
"新建第 9799 条数据!\n",
"新建第 9899 条数据!\n",
"新建第 9999 条数据!\n",
"新建第 10099 条数据!\n",
"新建第 10199 条数据!\n",
"新建第 10299 条数据!\n",
"新建第 10399 条数据!\n",
"新建第 10499 条数据!\n",
"新建第 10599 条数据!\n",
"新建第 10699 条数据!\n",
"新建第 10799 条数据!\n",
"新建第 10899 条数据!\n",
"新建第 10999 条数据!\n",
"新建第 11099 条数据!\n",
"新建第 11199 条数据!\n",
"新建第 11299 条数据!\n",
"新建第 11399 条数据!\n",
"新建第 11499 条数据!\n",
"新建第 11599 条数据!\n",
"新建第 11699 条数据!\n",
"新建第 11799 条数据!\n",
"新建第 11899 条数据!\n",
"新建第 11999 条数据!\n",
"新建第 12099 条数据!\n",
"新建第 12199 条数据!\n",
"新建第 12299 条数据!\n",
"新建第 12399 条数据!\n",
"新建第 12499 条数据!\n",
"新建第 12599 条数据!\n",
"新建第 12699 条数据!\n",
"新建第 12799 条数据!\n",
"新建第 12899 条数据!\n",
"新建第 12999 条数据!\n",
"新建第 13099 条数据!\n",
"新建第 13199 条数据!\n",
"新建第 13299 条数据!\n",
"新建第 13399 条数据!\n",
"新建第 13499 条数据!\n",
"新建第 13599 条数据!\n",
"新建第 13699 条数据!\n",
"新建第 13799 条数据!\n",
"新建第 13899 条数据!\n",
"新建第 13999 条数据!\n",
"新建第 14099 条数据!\n",
"新建第 14199 条数据!\n",
"新建第 14299 条数据!\n",
"新建第 14399 条数据!\n",
"新建第 14499 条数据!\n",
"新建第 14599 条数据!\n",
"新建第 14699 条数据!\n",
"新建第 14799 条数据!\n",
"新建第 14899 条数据!\n",
"新建第 14999 条数据!\n",
"新建第 15099 条数据!\n",
"新建第 15199 条数据!\n",
"新建第 15299 条数据!\n",
"新建第 15399 条数据!\n",
"新建第 15499 条数据!\n",
"新建第 15599 条数据!\n",
"新建第 15699 条数据!\n",
"新建第 15799 条数据!\n",
"新建第 15899 条数据!\n",
"新建第 15999 条数据!\n",
"新建第 16099 条数据!\n",
"新建第 16199 条数据!\n",
"新建第 16299 条数据!\n",
"新建第 16399 条数据!\n",
"新建第 16499 条数据!\n",
"新建第 16599 条数据!\n",
"新建第 16699 条数据!\n",
"新建第 16799 条数据!\n",
"新建第 16899 条数据!\n",
"新建第 16999 条数据!\n",
"新建第 17099 条数据!\n",
"新建第 17199 条数据!\n",
"新建第 17299 条数据!\n",
"新建第 17399 条数据!\n",
"新建第 17499 条数据!\n",
"新建第 17599 条数据!\n",
"新建第 17699 条数据!\n",
"新建第 17799 条数据!\n",
"新建第 17899 条数据!\n",
"新建第 17999 条数据!\n",
"新建第 18099 条数据!\n",
"新建第 18199 条数据!\n",
"新建第 18299 条数据!\n",
"新建第 18399 条数据!\n",
"新建第 18499 条数据!\n",
"新建第 18599 条数据!\n",
"新建第 18699 条数据!\n",
"新建第 18799 条数据!\n",
"新建第 18899 条数据!\n",
"新建第 18999 条数据!\n",
"新建第 19099 条数据!\n",
"新建第 19199 条数据!\n",
"新建第 19299 条数据!\n",
"新建第 19399 条数据!\n",
"新建第 19499 条数据!\n",
"新建第 19599 条数据!\n",
"新建第 19699 条数据!\n",
"新建第 19799 条数据!\n",
"新建第 19899 条数据!\n",
"新建第 19999 条数据!\n",
"新建第 20099 条数据!\n",
"新建第 20199 条数据!\n",
"新建第 20299 条数据!\n",
"新建第 20399 条数据!\n",
"新建第 20499 条数据!\n",
"新建第 20599 条数据!\n",
"新建第 20699 条数据!\n",
"新建第 20799 条数据!\n",
"新建第 20899 条数据!\n",
"新建第 20999 条数据!\n",
"新建第 21099 条数据!\n",
"新建第 21199 条数据!\n",
"新建第 21299 条数据!\n",
"新建第 21399 条数据!\n",
"新建第 21499 条数据!\n",
"新建第 21599 条数据!\n",
"新建第 21699 条数据!\n",
"新建第 21799 条数据!\n",
"新建第 21899 条数据!\n",
"新建第 21999 条数据!\n",
"新建第 22099 条数据!\n",
"新建第 22199 条数据!\n",
"新建第 22299 条数据!\n",
"新建第 22399 条数据!\n",
"新建第 22499 条数据!\n",
"新建第 22599 条数据!\n",
"新建第 22699 条数据!\n",
"新建第 22799 条数据!\n",
"新建第 22899 条数据!\n",
"新建第 22999 条数据!\n",
"新建第 23099 条数据!\n",
"新建第 23199 条数据!\n",
"新建第 23299 条数据!\n",
"新建第 23399 条数据!\n",
"新建第 23499 条数据!\n",
"新建第 23599 条数据!\n",
"新建第 23699 条数据!\n",
"新建第 23799 条数据!\n",
"新建第 23899 条数据!\n",
"新建第 23999 条数据!\n",
"新建第 24099 条数据!\n",
"新建第 24199 条数据!\n",
"新建第 24299 条数据!\n",
"新建第 24399 条数据!\n",
"新建第 24499 条数据!\n",
"新建第 24599 条数据!\n",
"新建第 24699 条数据!\n",
"新建第 24799 条数据!\n",
"新建第 24899 条数据!\n",
"新建第 24999 条数据!\n",
"新建第 25099 条数据!\n",
"新建第 25199 条数据!\n",
"新建第 25299 条数据!\n",
"新建第 25399 条数据!\n",
"新建第 25499 条数据!\n",
"新建第 25599 条数据!\n",
"新建第 25699 条数据!\n",
"新建第 25799 条数据!\n",
"新建第 25899 条数据!\n",
"新建第 25999 条数据!\n",
"新建第 26099 条数据!\n",
"新建第 26199 条数据!\n",
"新建第 26299 条数据!\n",
"新建第 26399 条数据!\n",
"新建第 26499 条数据!\n",
"新建第 26599 条数据!\n",
"新建第 26699 条数据!\n",
"新建第 26799 条数据!\n",
"新建第 26899 条数据!\n",
"新建第 26999 条数据!\n",
"新建第 27099 条数据!\n",
"新建第 27199 条数据!\n",
"新建第 27299 条数据!\n",
"新建第 27399 条数据!\n",
"新建第 27499 条数据!\n",
"新建第 27599 条数据!\n",
"新建第 27699 条数据!\n",
"新建第 27799 条数据!\n",
"新建第 27899 条数据!\n",
"新建第 27999 条数据!\n",
"新建第 28099 条数据!\n",
"新建第 28199 条数据!\n",
"新建第 28299 条数据!\n",
"新建第 28399 条数据!\n",
"新建第 28499 条数据!\n",
"新建第 28599 条数据!\n",
"新建第 28699 条数据!\n",
"新建第 28799 条数据!\n",
"新建第 28899 条数据!\n",
"新建第 28999 条数据!\n",
"新建第 29099 条数据!\n",
"新建第 29199 条数据!\n",
"新建第 29299 条数据!\n",
"新建第 29399 条数据!\n",
"新建第 29499 条数据!\n",
"新建第 29599 条数据!\n",
"新建第 29699 条数据!\n",
"新建第 29799 条数据!\n",
"新建第 29899 条数据!\n"
]
}
],
"source": [
"# -*- coding: utf-8 -*-\n",
"import psycopg2\n",
"import pandas as pd\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",
"import datetime\n",
"now_time = datetime.datetime.now()\n",
"yes_time = now_time + datetime.timedelta(days=-1)\n",
"yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前一天日期\n",
"# sql语句 建表\n",
"sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_saas_profile_ngv_detail_d\" WHERE \"date_id\" = '{yes_time_nyr}';\"\"\"\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_NGV = 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",
"# 基础函数配置\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",
"\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.append(data)\n",
"# print(f'读取到流程表单中 {len(ALL_DATA_staff)} 条数据!')\n",
"\n",
"'''获取表内控件信息 '''\n",
"# FORMID = \"FORM-ZK866D91O9LA4NIHCARG2DPIPCXF3Z087PPHL91\"\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_NGV[\",name_value,\"][i],\")\n",
"\n",
"\n",
"'''批量删除NGV数据'''\n",
"for i in range(0,10):\n",
" default = True\n",
" while default:\n",
" FORMID = \"FORM-ZK866D91O9LA4NIHCARG2DPIPCXF3Z087PPHL91\" \n",
" form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
" PAGES = form_data.get('totalCount')//100 +1 \n",
" print(form_data.get('totalCount'))\n",
" if form_data.get('totalCount')<=0:\n",
" default = False\n",
" for i in range(PAGES, 1,-1):\n",
" ALL_DATA_instance = []\n",
" form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
" for data in form_data.get('data'):\n",
" ALL_DATA_instance.append(data['formInstanceId'])\n",
" print(f'读取到表单中 {len(ALL_DATA_instance)} 条数据!')\n",
" red_delete = delete_in_batches(FORMID,TOKEN,ALL_DATA_instance)\n",
" form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
" for data in form_data.get('data'):\n",
" formInstanceId = data['formInstanceId']\n",
" delete_in(TOKEN,formInstanceId)\n",
" print(f'单条删除 {formInstanceId} 数据!')\n",
"\n",
"'''遍历数据进行新建'''\n",
"data_NGV = data_NGV.astype('string')\n",
"data_NGV = data_NGV.fillna('',inplace=False)\n",
"for a in range(0,len(data_NGV[\"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_nnyw1ge': data_NGV[\"date_id\"][i],\n",
" 'dateField_e9jt02o': int(time.mktime(time.strptime(data_NGV[\"date_fmt\"][i], \"%Y-%m-%d\"))*1000) if data_NGV[\"date_fmt\"][i] !='' else '',\n",
" 'textField_ek9jnne': data_NGV[\"id_own_group\"][i],\n",
" 'textField_35i6110': data_NGV[\"group_name\"][i],\n",
" 'textField_l8nc9f2': data_NGV[\"id_own_org\"][i],\n",
" 'textField_tdn6hsy': data_NGV[\"org_name\"][i],\n",
" 'textField_zc1iowp': data_NGV[\"org_code\"][i],\n",
" 'textField_2rulk5e': data_NGV[\"group_grade\"][i],\n",
" 'textField_c54tztg': data_NGV[\"org_type\"][i],\n",
" 'textField_qrtnel7': data_NGV[\"org_status\"][i],\n",
" 'textField_7xgxe9g': data_NGV[\"saas_version\"][i],\n",
" 'textField_pnig1i1': data_NGV[\"is_wechat\"][i],\n",
" 'textField_qiovtdj': data_NGV[\"is_mini_app\"][i],\n",
" 'textField_i0h0iqa': data_NGV[\"is_wx_shop\"][i],\n",
" 'textField_qczj9vq': data_NGV[\"is_camera_service\"][i],\n",
" 'textField_jouovty': data_NGV[\"is_maintenance_service\"][i],\n",
" 'dateField_o1v1emn': int(time.mktime(time.strptime(data_NGV[\"saas_create_time\"][i], \"%Y-%m-%d %H:%M:%S\"))*1000) if data_NGV[\"saas_create_time\"][i] !='' else '',\n",
" 'dateField_6zdcfnf': int(time.mktime(time.strptime(data_NGV[\"expiry_time\"][i], \"%Y-%m-%d %H:%M:%S\"))*1000) if data_NGV[\"expiry_time\"][i] !='' else '',\n",
" 'textField_8uae70x': data_NGV[\"saas_use_days\"][i],\n",
" 'textField_cjkvqpn': data_NGV[\"saas_use_year\"][i],\n",
" 'textField_yhtmsxx': data_NGV[\"is_main_org\"][i],\n",
" 'textField_gfigtpn': data_NGV[\"license_code\"][i],\n",
" 'textField_662foev': data_NGV[\"license_name\"][i],\n",
" 'textField_lco27te': data_NGV[\"org_crm_id\"][i],\n",
" 'textField_1tygbmq': data_NGV[\"province_id\"][i],\n",
" 'textField_1q6dt9a': data_NGV[\"province_name\"][i],\n",
" 'textField_z2rntja': data_NGV[\"city_id\"][i],\n",
" 'textField_ohybc2g': data_NGV[\"city_name\"][i],\n",
" 'textField_9oupoal': data_NGV[\"area_id\"][i],\n",
" 'textField_m0rzgwb': data_NGV[\"area_name\"][i],\n",
" 'textField_69po7o9': data_NGV[\"region_name\"][i],\n",
" 'textField_vqxr0d9': data_NGV[\"region_short_name\"][i],\n",
" 'textField_5wr3tj9': data_NGV[\"branch_name\"][i],\n",
" 'textField_6hz7i81': data_NGV[\"carzone_store_id\"][i],\n",
" 'textField_86wu9qm': data_NGV[\"carzone_store_name\"][i],\n",
" 'textField_129quhy': data_NGV[\"customer_carzone_id\"][i],\n",
" 'textField_j7i4mhn': data_NGV[\"salesmen\"][i],\n",
" 'textField_qms107e': data_NGV[\"area_manager\"][i],\n",
" 'textField_qc3blb5': data_NGV[\"service_salesmen\"][i],\n",
" 'textField_vk0hf2u': data_NGV[\"impl_principal\"][i],\n",
" 'textField_3lfom9a': data_NGV[\"service_impl_principal\"][i],\n",
" 'textField_1ud1o2l': data_NGV[\"active_user_count\"][i],\n",
" 'textField_kpdh7qc': data_NGV[\"active_user_type\"][i],\n",
" 'textField_n2y4bmf': data_NGV[\"limit_user_count\"][i],\n",
" 'textField_k5o5u2d': data_NGV[\"limit_user_type\"][i],\n",
" 'textField_729y7jp': data_NGV[\"is_n\"][i],\n",
" 'textField_six7heq': data_NGV[\"is_g\"][i],\n",
" 'textField_tipmhx4': data_NGV[\"is_v\"][i],\n",
" 'textField_qclt1dm': data_NGV[\"is_visited\"][i],\n",
" 'textField_0sk94f9': data_NGV[\"is_active\"][i],\n",
" 'textField_bzszf71': data_NGV[\"active_status_fmt\"][i],\n",
" 'textField_c061ojt': data_NGV[\"bill_count_last_30_day\"][i],\n",
" 'textField_07zkoii': data_NGV[\"bill_day_count_last_30_day\"][i],\n",
" 'textField_3vnzvsx': data_NGV[\"bill_day_count_this_month\"][i],\n",
" 'textField_3mxwdc4': data_NGV[\"bill_count_last_7_day\"][i],\n",
" 'textField_4q3bh5w': data_NGV[\"bill_day_count_last_7_day\"][i],\n",
" 'textField_u0rgodd': data_NGV[\"pv_count\"][i],\n",
" 'textField_eau5xx6': data_NGV[\"uv_count\"][i],\n",
" 'textField_tayz1vv': data_NGV[\"bill_count_1d\"][i],\n",
" 'textField_k4b1a7x': data_NGV[\"bill_count_2d\"][i],\n",
" 'textField_7lfqnm3': data_NGV[\"bill_count_3d\"][i],\n",
" 'textField_g24x9fv': data_NGV[\"bill_count_4d\"][i],\n",
" 'textField_0v3pm0r': data_NGV[\"bill_count_5d\"][i],\n",
" 'textField_1nxvats': data_NGV[\"bill_count_6d\"][i],\n",
" 'textField_vylq7uh': data_NGV[\"bill_count_7d\"][i],\n",
" 'textField_0n1zd7o': data_NGV[\"bill_count_8d\"][i],\n",
" 'textField_uuatjx7': data_NGV[\"bill_count_9d\"][i],\n",
" 'textField_e16m62c': data_NGV[\"bill_count_10d\"][i],\n",
" 'textField_anv4rco': data_NGV[\"bill_count_11d\"][i],\n",
" 'textField_pz5cg65': data_NGV[\"bill_count_12d\"][i],\n",
" 'textField_hamkvor': data_NGV[\"bill_count_13d\"][i],\n",
" 'textField_kw9nvef': data_NGV[\"bill_count_14d\"][i],\n",
" 'textField_ujbyern': data_NGV[\"bill_count_15d\"][i],\n",
" 'textField_uqp3072': data_NGV[\"bill_count_16d\"][i],\n",
" 'textField_2qsei19': data_NGV[\"bill_count_17d\"][i],\n",
" 'textField_p5x4u8t': data_NGV[\"bill_count_18d\"][i],\n",
" 'textField_2lv8ksl': data_NGV[\"bill_count_19d\"][i],\n",
" 'textField_unl61g8': data_NGV[\"bill_count_20d\"][i],\n",
" 'textField_cvtamin': data_NGV[\"bill_count_21d\"][i],\n",
" 'textField_z0hs1c4': data_NGV[\"bill_count_22d\"][i],\n",
" 'textField_9jln7lp': data_NGV[\"bill_count_23d\"][i],\n",
" 'textField_jlst4j8': data_NGV[\"bill_count_24d\"][i],\n",
" 'textField_ct6z2pu': data_NGV[\"bill_count_25d\"][i],\n",
" 'textField_6s2qy9p': data_NGV[\"bill_count_26d\"][i],\n",
" 'textField_l9lyxnr': data_NGV[\"bill_count_27d\"][i],\n",
" 'textField_sz5xht3': data_NGV[\"bill_count_28d\"][i],\n",
" 'textField_ccodrkd': data_NGV[\"bill_count_29d\"][i],\n",
" 'textField_dy7c14l': data_NGV[\"bill_count_30d\"][i],\n",
" 'textField_delij7o': data_NGV[\"bill_count_31d\"][i],\n",
" 'dateField_4vp44kc': int(time.mktime(time.strptime(data_NGV[\"etl_time\"][i], \"%Y-%m-%d %H:%M:%S\"))*1000) if data_NGV[\"etl_time\"][i] !='' else '',\n",
" 'textField_0d97bpy': data_NGV[\"maintain_bill_count_last_30_day\"][i],\n",
" 'textField_3nbi33y': data_NGV[\"washing_bill_count_last_30_day\"][i],\n",
" 'textField_17yhr79': data_NGV[\"maintain_bill_day_count_last_30_day\"][i],\n",
" 'textField_e1mrwvb': data_NGV[\"washing_bill_day_count_last_30_day\"][i],\n",
" 'textField_8s47o64': data_NGV[\"retail_bill_count_last_30_day\"][i],\n",
" 'textField_jr9otam': data_NGV[\"retail_bill_day_count_last_30_day\"][i],\n",
" 'textField_mtg1zn1': data_NGV[\"purchase_bill_count_last_30_day\"][i],\n",
" 'textField_96ggfjo': data_NGV[\"purchase_bill_day_count_last_30_day\"][i],\n",
" 'textField_hk7pe9z': data_NGV[\"card_bill_count_last_30_day\"][i],\n",
" 'textField_yj3vbwq': data_NGV[\"card_bill_day_count_last_30_day\"][i],\n",
" 'textField_n2hdr45': data_NGV[\"gd_sales_bill_count_last_30_day\"][i],\n",
" 'textField_p7xgdah': data_NGV[\"gd_sales_bill_day_count_last_30_day\"][i],\n",
" 'textField_7xr2ar8': data_NGV[\"g_change_flag\"][i],\n",
" 'textField_gpzxxmk': data_NGV[\"saas_package\"][i],\n",
" 'textField_tq9g8in': data_NGV[\"manage_model\"][i],\n",
" 'textField_zzchgop': data_NGV[\"contacts\"][i],\n",
" 'textField_a2znmfb': data_NGV[\"contact_number\"][i],\n",
" 'textField_0sadows': data_NGV[\"contact_mobile\"][i],\n",
" 'textField_hz3ujlo': data_NGV[\"g_month_count\"][i],\n",
" 'textField_m1gdeaa': data_NGV[\"g_month_percentage\"][i],\n",
" 'textField_y7ds4oo': data_NGV[\"is_install_service\"][i],\n",
" 'dateField_hiuaj0y': int(time.mktime(time.strptime(data_NGV[\"install_create_time\"][i], \"%Y-%m-%d %H:%M:%S\"))*1000) if data_NGV[\"install_create_time\"][i] !='' else '',\n",
" 'dateField_yubgpmy': int(time.mktime(time.strptime(data_NGV[\"last_end_date\"][i], \"%Y-%m-%d\"))*1000) if data_NGV[\"last_end_date\"][i] !='' else '',\n",
" 'dateField_8st5q1a': int(time.mktime(time.strptime(data_NGV[\"renew_date\"][i], \"%Y-%m-%d\"))*1000) if data_NGV[\"renew_date\"][i] !=''else '',\n",
" 'textField_u8h91r2': data_NGV[\"is_chain_owner\"][i],\n",
" 'textField_qzzz8ux': data_NGV[\"group_org_count\"][i],\n",
" 'textField_qzjf8mc': data_NGV[\"recent_bill_warning_days\"][i],\n",
" 'textField_lvyu7z2': data_NGV[\"g_change_flag_d\"][i],\n",
" 'textField_d72wy3d': data_NGV[\"g_lost_warning_days\"][i],\n",
" 'textField_11ebiwp': data_NGV[\"saas_edition_fmt\"][i],\n",
" 'textField_4yu5vlq': data_NGV[\"g_flag_1m\"][i],\n",
" 'textField_8ydk27g': data_NGV[\"g_flag_2m\"][i],\n",
" 'textField_ysoij3v': data_NGV[\"g_flag_3m\"][i],\n",
" 'textField_a4t6iwp': data_NGV[\"g_flag_4m\"][i],\n",
" 'textField_z1xfteb': data_NGV[\"g_flag_5m\"][i],\n",
" 'textField_56x8u44': data_NGV[\"g_flag_6m\"][i],\n",
" 'textField_zscafbj': data_NGV[\"g_flag_day_count\"][i],\n",
" 'textField_4c0rpdd': data_NGV[\"add_org_flag\"][i],\n",
" 'textField_14we48g': data_NGV[\"pt\"][i],\n",
" 'textField_gukslqe': data_NGV[\"org_size\"][i],\n",
" 'textField_y0tw39j': data_NGV[\"qualification_type_fmt\"][i],\n",
" 'textField_3euralk': data_NGV[\"business_scope_fmt\"][i],\n",
" 'textField_4jji26g': data_NGV[\"store_type_fmt\"][i],\n",
" 'textField_z2mrvyk': data_NGV[\"area\"][i],\n",
" 'textField_e7qmeix': data_NGV[\"station_number\"][i],\n",
" 'textField_x9q5k8p': data_NGV[\"header_type_fmt\"][i],\n",
" 'textField_h423ob8': data_NGV[\"org_stage\"][i],\n",
" 'textField_w6dk6au': data_NGV[\"g_count_this_month\"][i],\n",
" 'textField_67sllhy': data_NGV[\"saas_customer_type\"][i]\n",
" }\n",
" ALL_formData.append(json.dumps(formData, cls=NpEncoder)) \n",
" except:\n",
" pass\n",
" FORMID = \"FORM-ZK866D91O9LA4NIHCARG2DPIPCXF3Z087PPHL91\" \n",
" res_new = Batch_creation(FORMID,TOKEN,ALL_formData)\n",
" print(\"新建第\",i,\"条数据!\")\n",
"\n",
"'''校验是否新建正常'''\n",
"time.sleep(120)\n",
"FORMID = \"FORM-ZK866D91O9LA4NIHCARG2DPIPCXF3Z087PPHL91\" \n",
"form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
"if int(form_data.get('totalCount')) ==len(data_NGV):\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 = \"NGV明细数据新建条数不正确!\"\n",
" res_yujing = start_instance_process(TOKEN,name)\n",
" except:\n",
" pass"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"数据新建成功!\n"
]
}
],
"source": [
"'''校验是否新建正常'''\n",
"FORMID = \"FORM-ZK866D91O9LA4NIHCARG2DPIPCXF3Z087PPHL91\" \n",
"form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
"if int(form_data.get('totalCount')) ==len(data_NGV):\n",
" print(\"数据新建成功!\")"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"form_data.get('totalCount') 39\n",
"PAGES 1\n",
"i 1\n",
"读取到表单中 39 条数据!\n",
"form_data.get('totalCount') 39\n",
"PAGES 1\n",
"i 1\n",
"读取到表单中 0 条数据!\n",
"form_data.get('totalCount') 0\n",
"PAGES 1\n",
"i 1\n",
"读取到表单中 0 条数据!\n"
]
}
],
"source": [
"# -*- coding: utf-8 -*-\n",
"import psycopg2\n",
"import pandas as pd\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",
"import datetime\n",
"now_time = datetime.datetime.now()\n",
"yes_time = now_time + datetime.timedelta(days=-1)\n",
"yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前一天日期\n",
"# sql语句 建表\n",
"sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_saas_profile_ngv_detail_d\" WHERE \"date_id\" = '{yes_time_nyr}';\"\"\"\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_NGV = 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",
"# 基础函数配置\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",
"\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.append(data)\n",
"# print(f'读取到流程表单中 {len(ALL_DATA_staff)} 条数据!')\n",
"\n",
"'''获取表内控件信息 '''\n",
"# FORMID = \"FORM-ZK866D91O9LA4NIHCARG2DPIPCXF3Z087PPHL91\"\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_NGV[\",name_value,\"][i],\")\n",
"\n",
"\n",
"'''批量删除NGV数据'''\n",
"for i in range(0,2):\n",
" default = True\n",
" while default:\n",
" FORMID = \"FORM-ZK866D91O9LA4NIHCARG2DPIPCXF3Z087PPHL91\" \n",
" form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
" PAGES = form_data.get('totalCount')//100 +1 \n",
" print(\"form_data.get('totalCount')\",form_data.get('totalCount'))\n",
" print(\"PAGES\",PAGES)\n",
" if form_data.get('totalCount')<=0:\n",
" default = False\n",
" for i in range(1,PAGES+1):\n",
" print(\"i\",i)\n",
" ALL_DATA_instance = []\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=1, n=100)\n",
" for data in form_data.get('data'):\n",
" ALL_DATA_instance.append(data['formInstanceId'])\n",
" print(f'读取到表单中 {len(ALL_DATA_instance)} 条数据!')\n",
" red_delete = delete_in_batches(FORMID,TOKEN,ALL_DATA_instance)\n",
"\n",
"'''遍历数据进行新建'''\n",
"data_NGV = data_NGV.astype('string')\n",
"data_NGV = data_NGV.fillna('',inplace=False)\n",
"for a in range(0,len(data_NGV[\"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_nnyw1ge': data_NGV[\"date_id\"][i],\n",
" 'dateField_e9jt02o': int(time.mktime(time.strptime(data_NGV[\"date_fmt\"][i], \"%Y-%m-%d\"))*1000) if data_NGV[\"date_fmt\"][i] !='' else '',\n",
" 'textField_ek9jnne': data_NGV[\"id_own_group\"][i],\n",
" 'textField_35i6110': data_NGV[\"group_name\"][i],\n",
" 'textField_l8nc9f2': data_NGV[\"id_own_org\"][i],\n",
" 'textField_tdn6hsy': data_NGV[\"org_name\"][i],\n",
" 'textField_zc1iowp': data_NGV[\"org_code\"][i],\n",
" 'textField_2rulk5e': data_NGV[\"group_grade\"][i],\n",
" 'textField_c54tztg': data_NGV[\"org_type\"][i],\n",
" 'textField_qrtnel7': data_NGV[\"org_status\"][i],\n",
" 'textField_7xgxe9g': data_NGV[\"saas_version\"][i],\n",
" 'textField_pnig1i1': data_NGV[\"is_wechat\"][i],\n",
" 'textField_qiovtdj': data_NGV[\"is_mini_app\"][i],\n",
" 'textField_i0h0iqa': data_NGV[\"is_wx_shop\"][i],\n",
" 'textField_qczj9vq': data_NGV[\"is_camera_service\"][i],\n",
" 'textField_jouovty': data_NGV[\"is_maintenance_service\"][i],\n",
" 'dateField_o1v1emn': int(time.mktime(time.strptime(data_NGV[\"saas_create_time\"][i], \"%Y-%m-%d %H:%M:%S\"))*1000) if data_NGV[\"saas_create_time\"][i] !='' else '',\n",
" 'dateField_6zdcfnf': int(time.mktime(time.strptime(data_NGV[\"expiry_time\"][i], \"%Y-%m-%d %H:%M:%S\"))*1000) if data_NGV[\"expiry_time\"][i] !='' else '',\n",
" 'textField_8uae70x': data_NGV[\"saas_use_days\"][i],\n",
" 'textField_cjkvqpn': data_NGV[\"saas_use_year\"][i],\n",
" 'textField_yhtmsxx': data_NGV[\"is_main_org\"][i],\n",
" 'textField_gfigtpn': data_NGV[\"license_code\"][i],\n",
" 'textField_662foev': data_NGV[\"license_name\"][i],\n",
" 'textField_lco27te': data_NGV[\"org_crm_id\"][i],\n",
" 'textField_1tygbmq': data_NGV[\"province_id\"][i],\n",
" 'textField_1q6dt9a': data_NGV[\"province_name\"][i],\n",
" 'textField_z2rntja': data_NGV[\"city_id\"][i],\n",
" 'textField_ohybc2g': data_NGV[\"city_name\"][i],\n",
" 'textField_9oupoal': data_NGV[\"area_id\"][i],\n",
" 'textField_m0rzgwb': data_NGV[\"area_name\"][i],\n",
" 'textField_69po7o9': data_NGV[\"region_name\"][i],\n",
" 'textField_vqxr0d9': data_NGV[\"region_short_name\"][i],\n",
" 'textField_5wr3tj9': data_NGV[\"branch_name\"][i],\n",
" 'textField_6hz7i81': data_NGV[\"carzone_store_id\"][i],\n",
" 'textField_86wu9qm': data_NGV[\"carzone_store_name\"][i],\n",
" 'textField_129quhy': data_NGV[\"customer_carzone_id\"][i],\n",
" 'textField_j7i4mhn': data_NGV[\"salesmen\"][i],\n",
" 'textField_qms107e': data_NGV[\"area_manager\"][i],\n",
" 'textField_qc3blb5': data_NGV[\"service_salesmen\"][i],\n",
" 'textField_vk0hf2u': data_NGV[\"impl_principal\"][i],\n",
" 'textField_3lfom9a': data_NGV[\"service_impl_principal\"][i],\n",
" 'textField_1ud1o2l': data_NGV[\"active_user_count\"][i],\n",
" 'textField_kpdh7qc': data_NGV[\"active_user_type\"][i],\n",
" 'textField_n2y4bmf': data_NGV[\"limit_user_count\"][i],\n",
" 'textField_k5o5u2d': data_NGV[\"limit_user_type\"][i],\n",
" 'textField_729y7jp': data_NGV[\"is_n\"][i],\n",
" 'textField_six7heq': data_NGV[\"is_g\"][i],\n",
" 'textField_tipmhx4': data_NGV[\"is_v\"][i],\n",
" 'textField_qclt1dm': data_NGV[\"is_visited\"][i],\n",
" 'textField_0sk94f9': data_NGV[\"is_active\"][i],\n",
" 'textField_bzszf71': data_NGV[\"active_status_fmt\"][i],\n",
" 'textField_c061ojt': data_NGV[\"bill_count_last_30_day\"][i],\n",
" 'textField_07zkoii': data_NGV[\"bill_day_count_last_30_day\"][i],\n",
" 'textField_3vnzvsx': data_NGV[\"bill_day_count_this_month\"][i],\n",
" 'textField_3mxwdc4': data_NGV[\"bill_count_last_7_day\"][i],\n",
" 'textField_4q3bh5w': data_NGV[\"bill_day_count_last_7_day\"][i],\n",
" 'textField_u0rgodd': data_NGV[\"pv_count\"][i],\n",
" 'textField_eau5xx6': data_NGV[\"uv_count\"][i],\n",
" 'textField_tayz1vv': data_NGV[\"bill_count_1d\"][i],\n",
" 'textField_k4b1a7x': data_NGV[\"bill_count_2d\"][i],\n",
" 'textField_7lfqnm3': data_NGV[\"bill_count_3d\"][i],\n",
" 'textField_g24x9fv': data_NGV[\"bill_count_4d\"][i],\n",
" 'textField_0v3pm0r': data_NGV[\"bill_count_5d\"][i],\n",
" 'textField_1nxvats': data_NGV[\"bill_count_6d\"][i],\n",
" 'textField_vylq7uh': data_NGV[\"bill_count_7d\"][i],\n",
" 'textField_0n1zd7o': data_NGV[\"bill_count_8d\"][i],\n",
" 'textField_uuatjx7': data_NGV[\"bill_count_9d\"][i],\n",
" 'textField_e16m62c': data_NGV[\"bill_count_10d\"][i],\n",
" 'textField_anv4rco': data_NGV[\"bill_count_11d\"][i],\n",
" 'textField_pz5cg65': data_NGV[\"bill_count_12d\"][i],\n",
" 'textField_hamkvor': data_NGV[\"bill_count_13d\"][i],\n",
" 'textField_kw9nvef': data_NGV[\"bill_count_14d\"][i],\n",
" 'textField_ujbyern': data_NGV[\"bill_count_15d\"][i],\n",
" 'textField_uqp3072': data_NGV[\"bill_count_16d\"][i],\n",
" 'textField_2qsei19': data_NGV[\"bill_count_17d\"][i],\n",
" 'textField_p5x4u8t': data_NGV[\"bill_count_18d\"][i],\n",
" 'textField_2lv8ksl': data_NGV[\"bill_count_19d\"][i],\n",
" 'textField_unl61g8': data_NGV[\"bill_count_20d\"][i],\n",
" 'textField_cvtamin': data_NGV[\"bill_count_21d\"][i],\n",
" 'textField_z0hs1c4': data_NGV[\"bill_count_22d\"][i],\n",
" 'textField_9jln7lp': data_NGV[\"bill_count_23d\"][i],\n",
" 'textField_jlst4j8': data_NGV[\"bill_count_24d\"][i],\n",
" 'textField_ct6z2pu': data_NGV[\"bill_count_25d\"][i],\n",
" 'textField_6s2qy9p': data_NGV[\"bill_count_26d\"][i],\n",
" 'textField_l9lyxnr': data_NGV[\"bill_count_27d\"][i],\n",
" 'textField_sz5xht3': data_NGV[\"bill_count_28d\"][i],\n",
" 'textField_ccodrkd': data_NGV[\"bill_count_29d\"][i],\n",
" 'textField_dy7c14l': data_NGV[\"bill_count_30d\"][i],\n",
" 'textField_delij7o': data_NGV[\"bill_count_31d\"][i],\n",
" 'dateField_4vp44kc': int(time.mktime(time.strptime(data_NGV[\"etl_time\"][i], \"%Y-%m-%d %H:%M:%S\"))*1000) if data_NGV[\"etl_time\"][i] !='' else '',\n",
" 'textField_0d97bpy': data_NGV[\"maintain_bill_count_last_30_day\"][i],\n",
" 'textField_3nbi33y': data_NGV[\"washing_bill_count_last_30_day\"][i],\n",
" 'textField_17yhr79': data_NGV[\"maintain_bill_day_count_last_30_day\"][i],\n",
" 'textField_e1mrwvb': data_NGV[\"washing_bill_day_count_last_30_day\"][i],\n",
" 'textField_8s47o64': data_NGV[\"retail_bill_count_last_30_day\"][i],\n",
" 'textField_jr9otam': data_NGV[\"retail_bill_day_count_last_30_day\"][i],\n",
" 'textField_mtg1zn1': data_NGV[\"purchase_bill_count_last_30_day\"][i],\n",
" 'textField_96ggfjo': data_NGV[\"purchase_bill_day_count_last_30_day\"][i],\n",
" 'textField_hk7pe9z': data_NGV[\"card_bill_count_last_30_day\"][i],\n",
" 'textField_yj3vbwq': data_NGV[\"card_bill_day_count_last_30_day\"][i],\n",
" 'textField_n2hdr45': data_NGV[\"gd_sales_bill_count_last_30_day\"][i],\n",
" 'textField_p7xgdah': data_NGV[\"gd_sales_bill_day_count_last_30_day\"][i],\n",
" 'textField_7xr2ar8': data_NGV[\"g_change_flag\"][i],\n",
" 'textField_gpzxxmk': data_NGV[\"saas_package\"][i],\n",
" 'textField_tq9g8in': data_NGV[\"manage_model\"][i],\n",
" 'textField_zzchgop': data_NGV[\"contacts\"][i],\n",
" 'textField_a2znmfb': data_NGV[\"contact_number\"][i],\n",
" 'textField_0sadows': data_NGV[\"contact_mobile\"][i],\n",
" 'textField_hz3ujlo': data_NGV[\"g_month_count\"][i],\n",
" 'textField_m1gdeaa': data_NGV[\"g_month_percentage\"][i],\n",
" 'textField_y7ds4oo': data_NGV[\"is_install_service\"][i],\n",
" 'dateField_hiuaj0y': int(time.mktime(time.strptime(data_NGV[\"install_create_time\"][i], \"%Y-%m-%d %H:%M:%S\"))*1000) if data_NGV[\"install_create_time\"][i] !='' else '',\n",
" 'dateField_yubgpmy': int(time.mktime(time.strptime(data_NGV[\"last_end_date\"][i], \"%Y-%m-%d\"))*1000) if data_NGV[\"last_end_date\"][i] !='' else '',\n",
" 'dateField_8st5q1a': int(time.mktime(time.strptime(data_NGV[\"renew_date\"][i], \"%Y-%m-%d\"))*1000) if data_NGV[\"renew_date\"][i] !=''else '',\n",
" 'textField_u8h91r2': data_NGV[\"is_chain_owner\"][i],\n",
" 'textField_qzzz8ux': data_NGV[\"group_org_count\"][i],\n",
" 'textField_qzjf8mc': data_NGV[\"recent_bill_warning_days\"][i],\n",
" 'textField_lvyu7z2': data_NGV[\"g_change_flag_d\"][i],\n",
" 'textField_d72wy3d': data_NGV[\"g_lost_warning_days\"][i],\n",
" 'textField_11ebiwp': data_NGV[\"saas_edition_fmt\"][i],\n",
" 'textField_4yu5vlq': data_NGV[\"g_flag_1m\"][i],\n",
" 'textField_8ydk27g': data_NGV[\"g_flag_2m\"][i],\n",
" 'textField_ysoij3v': data_NGV[\"g_flag_3m\"][i],\n",
" 'textField_a4t6iwp': data_NGV[\"g_flag_4m\"][i],\n",
" 'textField_z1xfteb': data_NGV[\"g_flag_5m\"][i],\n",
" 'textField_56x8u44': data_NGV[\"g_flag_6m\"][i],\n",
" 'textField_zscafbj': data_NGV[\"g_flag_day_count\"][i],\n",
" 'textField_4c0rpdd': data_NGV[\"add_org_flag\"][i],\n",
" 'textField_14we48g': data_NGV[\"pt\"][i],\n",
" 'textField_gukslqe': data_NGV[\"org_size\"][i],\n",
" 'textField_y0tw39j': data_NGV[\"qualification_type_fmt\"][i],\n",
" 'textField_3euralk': data_NGV[\"business_scope_fmt\"][i],\n",
" 'textField_4jji26g': data_NGV[\"store_type_fmt\"][i],\n",
" 'textField_z2mrvyk': data_NGV[\"area\"][i],\n",
" 'textField_e7qmeix': data_NGV[\"station_number\"][i],\n",
" 'textField_x9q5k8p': data_NGV[\"header_type_fmt\"][i],\n",
" 'textField_h423ob8': data_NGV[\"org_stage\"][i],\n",
" 'textField_w6dk6au': data_NGV[\"g_count_this_month\"][i],\n",
" 'textField_67sllhy': data_NGV[\"saas_customer_type\"][i]\n",
" }\n",
" ALL_formData.append(json.dumps(formData, cls=NpEncoder)) \n",
" except:\n",
" pass\n",
" FORMID = \"FORM-ZK866D91O9LA4NIHCARG2DPIPCXF3Z087PPHL91\" \n",
" res_new = Batch_creation(FORMID,TOKEN,ALL_formData)\n",
" print(\"新建第\",i,\"条数据!\")\n",
" \n",
"'''校验是否新建正常'''\n",
"FORMID = \"FORM-ZK866D91O9LA4NIHCARG2DPIPCXF3Z087PPHL91\" \n",
"form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
"if int(form_data.get('totalCount')) ==len(data_NGV):\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 = \"NGV明细数据新建条数不正确!\"\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
}