650 lines
31 KiB
Plaintext
650 lines
31 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"8\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"<ipython-input-3-d4648c6f35ad>:30: 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\\NGV明细123123123.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",
|
|
"now_time = datetime.datetime.now()\n",
|
|
"yes_time = now_time + datetime.timedelta(days=-4)\n",
|
|
"yes_time_new = now_time + datetime.timedelta(days=-1)\n",
|
|
"yes_time_nyr1 = yes_time_new.strftime('%Y%m%d')\n",
|
|
"yes_time_nyr2 = yes_time.strftime('%Y%m%d')# 获取前7天日期\n",
|
|
"# sql语句 建表\n",
|
|
"sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_dataservice_saas_org_health_warning\" WHERE \"pt\" = '20230820';\"\"\"\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\\NGV明细123123123.xlsx')\n",
|
|
"# 关闭数据库连接\n",
|
|
"cursor.close()\n",
|
|
"conn.close()\n",
|
|
"print(len(data_details))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"0 霍创业\n",
|
|
"1 魏元盟\n",
|
|
"2 赵旭伟\n",
|
|
"3 曾令成\n",
|
|
"4 王斌\n",
|
|
"5 胡楠\n",
|
|
"6 杨挺\n",
|
|
"7 邢恒岭\n",
|
|
"Name: service_impl_principal, dtype: object"
|
|
]
|
|
},
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"data_details['service_impl_principal']"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 17,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"13\n",
|
|
"' textField_l8ceppnl ': data_details[ \"活跃健康状态变化\" ][i], # \"活跃健康状态变化\"\n",
|
|
"' textField_l8ceppnm ': data_details[ \"客户状态变化日期\" ][i], # \"客户状态变化日期\"\n",
|
|
"' dateField_l9dy6f8g ': data_details[ \"初始日\" ][i], # \"初始日\"\n",
|
|
"' dateField_l9dy6f8h ': data_details[ \"推进日\" ][i], # \"推进日\"\n",
|
|
"' textField_l8ceppo5 ': data_details[ \"公司名称\" ][i], # \"公司名称\"\n",
|
|
"' textField_lief8uqx ': data_details[ \"门店类型\" ][i], # \"门店类型\"\n",
|
|
"' textField_lief8ur1 ': data_details[ \"SaaS版本名称\" ][i], # \"SaaS版本名称\"\n",
|
|
"' textField_lief8ur2 ': data_details[ \"saas客户类型\" ][i], # \"saas客户类型\"\n",
|
|
"' textField_l8ceppo9 ': data_details[ \"公司等级\" ][i], # \"公司等级\"\n",
|
|
"' textField_lief8uqy ': data_details[ \"门店阶段\" ][i], # \"门店阶段\"\n",
|
|
"' textField_lief8ur0 ': data_details[ \"系统版本名称:E.L/E.S\" ][i], # \"系统版本名称:E.L/E.S\"\n",
|
|
"' dateField_lief8uqz ': data_details[ \"SaaS门店开户时间\" ][i], # \"SaaS门店开户时间\"\n",
|
|
"' textField_l8ceppo4 ': data_details[ \"门店编码\" ][i], # \"门店编码\"\n",
|
|
"' textField_l8ceppo6 ': data_details[ \"门店名称\" ][i], # \"门店名称\"\n",
|
|
"' textField_l8ceppo7 ': data_details[ \"联系人\" ][i], # \"联系人\"\n",
|
|
"' textField_l8ceppo8 ': data_details[ \"联系方式\" ][i], # \"联系方式\"\n",
|
|
"' textField_l8ceppoi ': data_details[ \"大区\" ][i], # \"大区\"\n",
|
|
"' textField_l8ceppoj ': data_details[ \"省\" ][i], # \"省\"\n",
|
|
"' employeeField_l8cepppu ': data_details[ \"运营负责人\" ][i], # \"运营负责人\"\n",
|
|
"' textField_lief8ur3 ': data_details[ \"区域经理\" ][i], # \"区域经理\"\n",
|
|
"' textField_lief8ur4 ': data_details[ \"城市\" ][i], # \"城市\"\n",
|
|
"' textareaField_l8ceppop ': data_details[ \"跟进记录描述\" ][i], # \"跟进记录描述\"\n",
|
|
"' radioField_l8ceppr2 ': data_details[ \"正常使用\" ][i], # \"正常使用\"\n",
|
|
"' multiSelectField_l8cepprp ': data_details[ \"仅部分业务登记具体项\" ][i], # \"仅部分业务登记具体项\"\n",
|
|
"' multiSelectField_l8cepprq ': data_details[ \"仅用部分功能具体项\" ][i], # \"仅用部分功能具体项\"\n",
|
|
"' multiSelectField_l8cepprr ': data_details[ \"非目标客户具体项\" ][i], # \"非目标客户具体项\"\n",
|
|
"' multiSelectField_l8cepprs ': data_details[ \"非主系统具体项\" ][i], # \"非主系统具体项\"\n",
|
|
"' textField_l8cepps5 ': data_details[ \"正常使用其他\" ][i], # \"正常使用其他\"\n",
|
|
"' radioField_l8ceppr4 ': data_details[ \"门店原因\" ][i], # \"门店原因\"\n",
|
|
"' selectField_l8ceppru ': data_details[ \"愿意用没时间用具体项\" ][i], # \"愿意用没时间用具体项\"\n",
|
|
"' selectField_l8cepprv ': data_details[ \"愿意用没专人用具体项\" ][i], # \"愿意用没专人用具体项\"\n",
|
|
"' selectField_l8cepprw ': data_details[ \"不愿意使用具体项\" ][i], # \"不愿意使用具体项\"\n",
|
|
"' selectField_l8cepprx ': data_details[ \"暂时不用系统具体项\" ][i], # \"暂时不用系统具体项\"\n",
|
|
"' selectField_l8ceppry ': data_details[ \"没有购买诉求具体项\" ][i], # \"没有购买诉求具体项\"\n",
|
|
"' selectField_l8cepprz ': data_details[ \"加盟其他连锁具体项\" ][i], # \"加盟其他连锁具体项\"\n",
|
|
"' textField_l8ceppr5 ': data_details[ \"门店原因其他\" ][i], # \"门店原因其他\"\n",
|
|
"' radioField_l8cepprd ': data_details[ \"服务原因\" ][i], # \"服务原因\"\n",
|
|
"' selectField_l8cepps0 ': data_details[ \"培训后不会用具体项\" ][i], # \"培训后不会用具体项\"\n",
|
|
"' selectField_l8cepps1 ': data_details[ \"培训后未使用具体项\" ][i], # \"培训后未使用具体项\"\n",
|
|
"' selectField_l8cepps2 ': data_details[ \"无人培训具体项\" ][i], # \"无人培训具体项\"\n",
|
|
"' selectField_l8cepps3 ': data_details[ \"已培训使用少具体项\" ][i], # \"已培训使用少具体项\"\n",
|
|
"' textField_l8ceppri ': data_details[ \"服务原因其他\" ][i], # \"服务原因其他\"\n",
|
|
"' radioField_l8cepprg ': data_details[ \"产品原因\" ][i], # \"产品原因\"\n",
|
|
"' textField_l8jwaxkh ': data_details[ \"具体功能不满足项\" ][i], # \"具体功能不满足项\"\n",
|
|
"' textField_l8cepprj ': data_details[ \"产品原因其他\" ][i], # \"产品原因其他\"\n",
|
|
"' radioField_l8cepprh ': data_details[ \"未正式切换\" ][i], # \"未正式切换\"\n",
|
|
"' textField_l8cepps4 ': data_details[ \"未正式切换其他\" ][i], # \"未正式切换其他\"\n",
|
|
"' employeeField_l8ceppp4 ': data_details[ \"跟进人\" ][i], # \"跟进人\"\n",
|
|
"' dateField_l8cepppi ': data_details[ \"跟进时间\" ][i], # \"跟进时间\"\n",
|
|
"' radioField_l8ceppq7 ': data_details[ \"状态\" ][i], # \"状态\"\n",
|
|
"' radioField_l8cepppr ': data_details[ \"跟进后的结果\" ][i], # \"跟进后的结果\"\n",
|
|
"' employeeField_lbfwxou1 ': data_details[ \"区域客服\" ][i], # \"区域客服\"\n",
|
|
"' textField_lifbrlco ': data_details[ \"门店类型\" ][i], # \"门店类型\"\n",
|
|
"' textField_lifbrlcp ': data_details[ \"门店阶段\" ][i], # \"门店阶段\"\n",
|
|
"' dateField_lifbrld1 ': data_details[ \"Saas门店开户时间\" ][i], # \"Saas门店开户时间\"\n",
|
|
"' textField_lifbrlcr ': data_details[ \"系统版本名称:E.L/E.S\" ][i], # \"系统版本名称:E.L/E.S\"\n",
|
|
"' textField_lifbrlcx ': data_details[ \"SaaS版本名称\" ][i], # \"SaaS版本名称\"\n",
|
|
"' textField_lifbrlcy ': data_details[ \"saas客户类型\" ][i], # \"saas客户类型\"\n",
|
|
"' employeeField_lifbrld2 ': data_details[ \"区域经理\" ][i], # \"区域经理\"\n",
|
|
"' textField_lifbrld0 ': data_details[ \"城市\" ][i], # \"城市\"\n",
|
|
"新建第 99 条数据! {'result': ['FINST-DK866Z9100GB9HXC7DODT43NSWNL27CIOFLILWO', 'FINST-DK866Z9100GB9HXC7DODT43NSWNL2PKIOFLIL0P', 'FINST-DK866Z9100GB9HXC7DODT43NSWNL2FTIOFLIL4P', 'FINST-DK866Z9100GB9HXC7DODT43NSWNL2Y0JOFLIL8P', 'FINST-DK866Z9100GB9HXC7DODT43NSWNL2Y8JOFLILCP', 'FINST-DK866Z9100GB9HXC7DODT43NSWNL2RGJOFLILGP', 'FINST-DK866Z9100GB9HXC7DODT43NSWNL2WOJOFLILKP', 'FINST-DK866Z9100GB9HXC7DODT43NSWNL2TWJOFLILOP', 'FINST-DK866Z9100GB9HXC7DODT43NSWNL2B4KOFLILSP', 'FINST-DK866Z9100GB9HXC7DODT43NSWNL2TBKOFLILWP', 'FINST-DK866Z9100GB9HXC7DODT43NSWNL2EJKOFLIL0Q', 'FINST-DK866Z9100GB9HXC7DODT43NSWNL2ORKOFLIL4Q', 'FINST-DK866Z9100GB9HXC7DODT43NSWNL27ZKOFLIL8Q']}\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",
|
|
"now_time = datetime.datetime.now()\n",
|
|
"yes_time = now_time + datetime.timedelta(days=-4)\n",
|
|
"yes_time_new = now_time + datetime.timedelta(days=-1)\n",
|
|
"yes_time_nyr1 = yes_time_new.strftime('%Y%m%d')\n",
|
|
"yes_time_nyr2 = yes_time.strftime('%Y%m%d')# 获取前7天日期\n",
|
|
"# sql语句 建表\n",
|
|
"sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_dataservice_saas_org_health_warning\" WHERE \"pt\" = '{yes_time_nyr2}' or \"pt\" = '{yes_time_nyr1}';\"\"\"\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",
|
|
"print(len(data_details))\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\" : \"false\",\n",
|
|
" \"formUuid\" : FORMID,\n",
|
|
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
|
" \"asynchronousExecution\" : \"false\",\n",
|
|
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
|
" \"keepRunningAfterException\" : \"false\",\n",
|
|
" \"userId\" : \"2268275546837446\",\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",
|
|
"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-CP766081P0BBRV2AEB645ATM0KO62IHOWBFIL1\"\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",
|
|
"'''读取 运营负责人-区域客服 '''\n",
|
|
"FORMID = \"FORM-YZ9664D1DM8BX1PV7MUGU9ZOBQ3I36PI8DFILB\" # 运营负责人-区域客服 FORM-YZ9664D1DM8BX1PV7MUGU9ZOBQ3I36PI8DFILB\n",
|
|
"form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
|
|
"PAGES = form_data.get('totalCount')//10 + 1\n",
|
|
"ALL_DATA_service = {}\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_service[data['formData']['textField_lifdgt27']]=data['formData']['textField_lifdgt26']\n",
|
|
" \n",
|
|
"'''批量删除数据'''\n",
|
|
"# for i in range(0,10):\n",
|
|
"# default = True\n",
|
|
"# while default:\n",
|
|
"# FORMID = \"FORM-CP766081P0BBRV2AEB645ATM0KO62IHOWBFIL1\" \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",
|
|
"'''遍历数据进行新建'''\n",
|
|
"data_details = data_details.astype('string')\n",
|
|
"data_details = data_details.fillna('',inplace=False)\n",
|
|
"for a in range(0,len(data_details[\"pt\"]),100):\n",
|
|
" ALL_formData = []\n",
|
|
" for i in range(a,a+100): # for i in range(len(data_NGV[\"date_fmt\"])):\n",
|
|
" try:\n",
|
|
" date_obj1 = datetime.datetime.strptime(data_details[\"init_day\"][i], \"%Y%m%d\").strftime(\"%Y-%m-%d\")\n",
|
|
" date_obj2 = datetime.datetime.strptime(data_details[\"push_day\"][i], \"%Y%m%d\").strftime(\"%Y-%m-%d\")\n",
|
|
" formData = {\n",
|
|
" 'textField_l8ceppnl':data_details[\"health_warning_info\"][i],#\"活跃健康状态变化\"\n",
|
|
" 'dateField_l9dy6f8g':int(time.mktime(time.strptime(date_obj1, \"%Y-%m-%d\"))*1000) if data_details[\"init_day\"][i] !='' else '',#\"初始日\"\n",
|
|
" 'dateField_l9dy6f8h':int(time.mktime(time.strptime(date_obj2, \"%Y-%m-%d\"))*1000) if data_details[\"push_day\"][i] !='' else '',#\"推进日\"\n",
|
|
" 'textField_l8ceppo5':data_details[\"group_name\"][i],#\"公司名称\"\n",
|
|
" 'textField_lief8uqx':data_details[\"org_type\"][i],#\"门店类型\"\n",
|
|
" 'textField_lief8ur1':data_details[\"saas_edition_fmt\"][i],#\"SaaS版本名称\"\n",
|
|
" 'textField_lief8ur2':data_details[\"saas_customer_type\"][i],#\"saas客户类型\"\n",
|
|
" 'textField_l8ceppo9':data_details[\"group_grade\"][i],#\"公司等级\"\n",
|
|
" 'textField_lief8uqy':data_details[\"org_stage\"][i],#\"门店阶段\"\n",
|
|
" 'textField_lief8ur0':data_details[\"saas_version_fmt\"][i],#\"系统版本名称:E.L/E.S\"\n",
|
|
" 'dateField_lief8uqz':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门店开户时间\"\n",
|
|
" 'textField_l8ceppo4':data_details[\"org_code\"][i],#\"门店编码\"\n",
|
|
" 'textField_l8ceppo6':data_details[\"org_name\"][i],#\"门店名称\"\n",
|
|
" 'textField_l8ceppo7':data_details[\"contacts\"][i],#\"联系人\"\n",
|
|
" 'textField_l8ceppo8':data_details[\"contact_mobile\"][i],#\"联系方式\"\n",
|
|
" 'textField_l8ceppoi':data_details[\"region_name\"][i],#\"大区\"\n",
|
|
" 'textField_l8ceppoj':data_details[\"province_name\"][i],#\"省\"\n",
|
|
" # 'employeeField_l8cepppu':ALL_DATA_staff[data_details[\"service_impl_principal\"][i]],#\"运营负责人\"\n",
|
|
" 'textField_lief8ur3':data_details[\"area_manager\"][i],#\"区域经理\"\n",
|
|
" 'textField_lief8ur4':data_details[\"city_name\"][i],#\"城市\"\n",
|
|
" # 'employeeField_l8ceppp4':ALL_DATA_staff[ALL_DATA_service[data_details[\"service_impl_principal\"][i]]],#\"跟进人\"\n",
|
|
" # 'employeeField_lbfwxou1':ALL_DATA_staff[ALL_DATA_service[data_details[\"service_impl_principal\"][i]]],#\"区域客服\"\n",
|
|
" }\n",
|
|
" try:\n",
|
|
" formData['employeeField_l8cepppu'] = ALL_DATA_staff[data_details[\"service_impl_principal\"][i]]\n",
|
|
" formData['employeeField_l8ceppp4'] = ALL_DATA_staff[ALL_DATA_service[data_details[\"service_impl_principal\"][i]]]\n",
|
|
" formData['employeeField_lbfwxou1'] = ALL_DATA_staff[ALL_DATA_service[data_details[\"service_impl_principal\"][i]]]\n",
|
|
" except:\n",
|
|
" formData['employeeField_l8cepppu'] = \"\"\n",
|
|
" formData['employeeField_l8ceppp4'] = \"\"\n",
|
|
" formData['employeeField_lbfwxou1'] = \"\"\n",
|
|
"\n",
|
|
" ALL_formData.append(json.dumps(formData, cls=NpEncoder)) \n",
|
|
" except:\n",
|
|
" pass\n",
|
|
" FORMID = \"FORM-33666CB1XDU37AU57RKPK990C79S2YMOEEC8LS\" \n",
|
|
" res_new = Batch_creation(FORMID,TOKEN,ALL_formData)\n",
|
|
" print(\"新建第\",i,\"条数据!\",res_new)\n",
|
|
" time.sleep(10)\n",
|
|
"\n",
|
|
"# '''校验是否新建正常'''\n",
|
|
"# time.sleep(30)\n",
|
|
"# FORMID = \"FORM-CP766081P0BBRV2AEB645ATM0KO62IHOWBFIL1\" \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 = \"[表单]异常服务跟进待办2023 新建条数不正确!\"\n",
|
|
"# res_yujing = start_instance_process(TOKEN,name)\n",
|
|
"# except:\n",
|
|
"# pass"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"{'data': [{'rank': 1,\n",
|
|
" 'appItem': {'icon': 'https://static.dingtalk.com/media/lALPDeC2uGvNwy3NArzNArw_700_700.png',\n",
|
|
" 'name': '考勤打卡'},\n",
|
|
" 'pv': '433',\n",
|
|
" 'uv': '324'},\n",
|
|
" {'rank': 2,\n",
|
|
" 'appItem': {'icon': 'https://static.dingtalk.com/media/lALPDeC2uGvNwy3NArzNArw_700_700.png',\n",
|
|
" 'name': '智能人事'},\n",
|
|
" 'pv': '354',\n",
|
|
" 'uv': '350'},\n",
|
|
" {'rank': 3,\n",
|
|
" 'appItem': {'icon': 'https://static.dingtalk.com/media/lALPDeC2uGvNwy3NArzNArw_700_700.png',\n",
|
|
" 'name': '日志'},\n",
|
|
" 'pv': '322',\n",
|
|
" 'uv': '189'}],\n",
|
|
" 'meta': [{'aliasName': '排名', 'alias': 'rank', 'dataType': 'STRING'},\n",
|
|
" {'aliasName': '应用', 'alias': 'appItem', 'dataType': 'MICROAPP'},\n",
|
|
" {'aliasName': '点击次数', 'alias': 'pv', 'dataType': 'STRING'},\n",
|
|
" {'aliasName': '点击人数', 'alias': 'uv', 'dataType': 'STRING'}]}"
|
|
]
|
|
},
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"{\n",
|
|
" \"data\": [\n",
|
|
" {\n",
|
|
" \"rank\": 1,\n",
|
|
" \"appItem\": {\n",
|
|
" \"icon\": \"https://static.dingtalk.com/media/lALPDeC2uGvNwy3NArzNArw_700_700.png\",\n",
|
|
" \"name\": \"考勤打卡\"\n",
|
|
" },\n",
|
|
" \"pv\": \"433\",\n",
|
|
" \"uv\": \"324\",\n",
|
|
" },\n",
|
|
" {\n",
|
|
" \"rank\": 2,\n",
|
|
" \"appItem\": {\n",
|
|
" \"icon\": \"https://static.dingtalk.com/media/lALPDeC2uGvNwy3NArzNArw_700_700.png\",\n",
|
|
" \"name\": \"智能人事\"\n",
|
|
" },\n",
|
|
" \"pv\": \"354\",\n",
|
|
" \"uv\": \"350\",\n",
|
|
" },\n",
|
|
" {\n",
|
|
" \"rank\": 3,\n",
|
|
" \"appItem\": {\n",
|
|
" \"icon\": \"https://static.dingtalk.com/media/lALPDeC2uGvNwy3NArzNArw_700_700.png\",\n",
|
|
" \"name\": \"日志\"\n",
|
|
" },\n",
|
|
" \"pv\": \"322\",\n",
|
|
" \"uv\": \"189\",\n",
|
|
" }\n",
|
|
" ],\n",
|
|
" \"meta\": [\n",
|
|
" {\n",
|
|
" \"aliasName\": \"排名\",\n",
|
|
" \"alias\": \"rank\",\n",
|
|
" \"dataType\": \"STRING\"\n",
|
|
" },\n",
|
|
" {\n",
|
|
" \"aliasName\": \"应用\",\n",
|
|
" \"alias\": \"appItem\",\n",
|
|
" \"dataType\": \"MICROAPP\"\n",
|
|
" },\n",
|
|
" {\n",
|
|
" \"aliasName\": \"点击次数\",\n",
|
|
" \"alias\": \"pv\",\n",
|
|
" \"dataType\": \"STRING\"\n",
|
|
" },\n",
|
|
" {\n",
|
|
" \"aliasName\": \"点击人数\",\n",
|
|
" \"alias\": \"uv\",\n",
|
|
" \"dataType\": \"STRING\"\n",
|
|
" }\n",
|
|
" ]\n",
|
|
"}"
|
|
]
|
|
}
|
|
],
|
|
"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
|
|
}
|