647 lines
34 KiB
Plaintext
647 lines
34 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"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": [
|
||
"距离今天还有120天的日期是:2024-03-06\n",
|
||
"读取到省市小六技术专家区域客服区域客成表单中 347 条数据!\n",
|
||
"{'result': '5ce89321-8e14-4016-9b55-ac6da3a03f8c'}\n",
|
||
"822nD4EbxXditOPJubTmbIvyxEi+COcZaBRldfuxFsnKAkPyXtJN96KdyJl7cOQcxpADdZpNsuSMoeq1uL63E0M7iZKv/3CFUhhmSg+44e/UW/r/ScVimB/IhawLrONxwkMMi/wWvdX+cWTv8C7Fc4oJKDgf3aNd\n",
|
||
"数据新建成功!\n",
|
||
"{'result': '4dba907e-ccc1-4afc-b1dd-461add579fae'}\n",
|
||
"biLXruec3L6UiEULuRxpjVp82qHniLOkSpQKyK49bQM3ftKoIyQkX3DqZIrRj4FSlMWlFb73RYT+D6G+HyXmeOeJbm/2BbzlgK5egXVNolgEI4cOPy+takTuKnxsYFV3Dle0nDZWOrCLj/Q2+LlFnMJrhOz4fjwJ\n",
|
||
"数据新建成功!\n",
|
||
"{'result': '8f840e95-8494-47bf-b901-553c87082a7e'}\n",
|
||
"ZvZTULI5JDia+KZ24gbQKJQMHx22ldUiaMH+S5CUtoYeqyRGJiVBc8dXfwEMFrki1XFigdkP+/rddI07MiCUTfE6Ka1p8gYpw2H6oSdrXsQ54GRB97D3PKsAIBk0BFUJTVfaHEI319y2QU+C958769x2v1EJCVei\n",
|
||
"数据新建成功!\n",
|
||
"{'result': '46e8da0c-122d-4c6a-9ff8-179b2080f485'}\n",
|
||
"HS1mUBmKrfJ+LabI/KEo2CvHz74dy+u4QqjD/zcDEiJbc8fR0OwwFLDaCHiJsWy1s6SAl8nRr/btZzBz9dReYENFIiisx8olCqzW1nbZVHyNHnBLmDbWMZXEy8EIy20Rp4PMm/O00nj2erk+j+CU5ByDV6nQMn+D\n",
|
||
"数据新建成功!\n",
|
||
"{'result': '3c0829e7-2087-4471-b660-625c816f1ffe'}\n",
|
||
"WSYW+js1pkNj/nWMvN5iYY/nlbIquZj6qlK45Q1dlFwlhNkkEY9mIYyJj3eT/uHxSMnD04oAW8vxjt49iSk8DlwZK50bS8nQDZbR1DNrOoIJGvLCwK23HJTo6Tv7vAcjr4CChUa9K2KAofFxaaBuJfjSPF4jn8l3\n",
|
||
"数据新建成功!\n",
|
||
"{'result': 'aa4c2ec4-5d4b-4561-aad1-0d41cc399975'}\n",
|
||
"ymWUIxkJ0OBw3KLOT+NLSXfnkU0RgS9GXCIui4Ff7fZ0qpfkfR0zbixab7RzzXH6+7XeskLicG0n9QSdMDJWarWHLFeQvjYs7F8soTnNlHTk1Iwh7yifShunDIRWMesam743uKG6yEA4AWQP1NKpUbi5kQZc6H7o\n",
|
||
"数据新建成功!\n",
|
||
"{'result': 'f3923ce1-dcdd-4e55-a6be-fa6592c72eee'}\n",
|
||
"VC85mF8oXumLAr+iii37x42SrGVOde1sW7qfU8M3+ccFSHvdpf2YQnBaSvxFXWDtYTP5OVOuZHMkrv5ThFbRF5inX9yST3fDYwxjSlkfjFIIXjXq4jjn45ot+uW4eaf+ERiafQd43La4b9I9ZFmvWRFPVC/bWsp6\n",
|
||
"数据新建成功!\n",
|
||
"{'result': '7624615b-4d8a-4c54-a03d-54e240f77e9e'}\n",
|
||
"WNoQlr/OnJGAyXK38XpK9JEKuzqKodsvwhAaFvHi4RW+AOkt6LEp6U0aPTx884YF4Q+FXBLxVomRs/uG2iKY4//xDB9CwAq4B+7crJMsKrOLl2wFUpggv+BD5Vv1hTMmwvnC3FUJllq8A3szFBaU9cTZDjo7pnbo\n",
|
||
"数据新建成功!\n",
|
||
"{'result': '15cfa17e-393a-4141-bf54-aedd9e18641b'}\n",
|
||
"ZlIvORb0WqZPxCw+fIxakRsCixvAvfsEVhsFnypPEcDnJUPxulqvfNwZnWttJW4UZdu8yxFSQkQK3/VxUsuiUVtj87DvgPq/7LLA4awG6SJtTpGTToqZsYK+nghBhHr+YhkRHezg3W9up8DSGWjqcT/aSVI5Nnaf\n",
|
||
"数据新建成功!\n",
|
||
"{'result': '73d1729d-c51f-4d7e-8c5b-c1c2c66178aa'}\n",
|
||
"lUImzsoHx7qI5AZOGPapFgY27gINa/UB9G2bHVtSexxrU9jQwqfstW1kIF/3kKTW6GAEmibu9uaOqkBpAjD1MHqUCmbBES3FARpaII9yZXOnIG2o+D4SgdgcwV2Uw70aaOYg7x0eX1XJ/ET8YqtUBg9CqNNJw0dT\n",
|
||
"数据新建成功!\n",
|
||
"{'result': 'db5a8a19-ec97-401c-b624-dc07b53009b2'}\n",
|
||
"ZyG1udQrPlJ29D3wWERKOa/MAi+lsHoLKJvawKvM3L+ewc80COFPymiiTUhwKAwJKMcWmy0J/tX7C4I1fPxyaV9qvDmi9f+QNALssF7FcgVo/hEYuf5xJm1LMDatt1SkfCnOSYWgDdidvAVlO4BLnbbwMHWm8XQQ\n",
|
||
"数据新建成功!\n",
|
||
"{'result': '2b9c4d8f-db00-4ecd-8ba5-e9a4769ce855'}\n",
|
||
"0UxjQrJM06bnJDB6QlflN+2ilcDMC1iS5+tbSXFSSqaSSBjv4lOvAoF/aqAXRQgejic33brBMsID6oLP1POg4UbLL5GsUd3dEBrZ8reXn39f05SDv2uFRLyHYWu+LZNmxMYuDTUYzSVp9XO2tBVECB1HisI4dvOD\n",
|
||
"数据新建成功!\n",
|
||
"{'result': '69db386d-4ab7-4fa0-8a32-907e42658ae2'}\n",
|
||
"WuQMK2XXKgQtyejein8KQuTeomOOGmr8YXH0/VrxNTWGdtM65arSzzQRFwgD9EkJZWMiDqR16ViyRTMvu1IMDuHfKzs+JU7mLNZNuotLP8CRthZr1YgOfR/z1Ewp6zNYDlzONKJMNH1kUUf3KqYOH94bucfeRorV\n",
|
||
"数据新建成功!\n",
|
||
"{'result': '7fac1b7d-9c8f-43de-879c-7d5bda2fe50b'}\n",
|
||
"z6PCc+2vQde5UO47TLB/4fkVXoGs0s2/Vl16+zZ/HfnVEjI6jsmoqVDIZQigDyGHP0ElfEdLk5DlOudtcCFzJODccSYp90xJH3dujg9Tg4PY/VVMSmfFmv4ZdwtK2zmhmLbkb6pWa2u4HzhEq+OvOvEvRb2qlv3g\n",
|
||
"数据新建成功!\n",
|
||
"{'result': 'bc927e89-467f-4253-a1be-ab6997eb4b56'}\n",
|
||
"9VKzvxSXHrtcxp4xzcC0npJxZqEpGZVNvgy2eI95dUivppHVnfz0431kuURxJ75You2s8A4FVBYoHfKVx2kEjT9yQHF7WMAFGHS8GgOJUVORCG9pn9rBwKHBkQqJWRf0kj1RekC1DX3nZrxNJLONyCQIA6veiCMG\n",
|
||
"数据新建成功!\n",
|
||
"{'result': 'cbf11b36-3727-40b6-af70-1aa11768ae41'}\n",
|
||
"a8Cc9to5p4NMZdQ9+5ZP4PnXuZU2GzFaza05ocEaadI8iYwO0+u/MM25kJJdYXSEpugfQtR02+Ex6rgQVpZ1UbEftZ+XpUhncR+XP32sRdt5H0uoUBCEDIk7a5REDBpGODCBbjUasblsdSMYtsf5BL7v2RiSgnGL\n",
|
||
"数据新建成功!\n",
|
||
"{'result': '4ae91c77-7181-4817-bad3-2b8cc2647c29'}\n",
|
||
"2cwjAMQfVN18Z7a7S4zV0IEef2LL5KfGc1eHaD7ewiTAy9KNgXkPAoiVA+tmQ34sXhg/oHjzKcHlVzTJmCf2E7uddrrYvUoWqifunRpEslDVDJaeE9PR1gPs2UQJpuv0PHWYaSPIHojLcKn7HintaiYEDDxc7gUj\n",
|
||
"数据新建成功!\n",
|
||
"{'result': 'a83aa44f-4a5c-45ce-8915-ec6a47dc0410'}\n",
|
||
"0KfgiCYFf7OKL/uPWK2ZGbGSLu5R0Naj6xTjUT9xqdz/+gucRkiD8Jol/yYcnM9H3WxGRR8CtKrECdepMwkjWgAJHddBRnLhely9ZYYg6yp1epmz0PfliaeLh3Ffc83E7y2ju47+/TW0a1N0CkQCnBDe5kv5hw/D\n",
|
||
"数据新建成功!\n",
|
||
"{'result': '6192b72c-9a7d-4baa-8884-52823ca0f1a7'}\n",
|
||
"6TvpLPHBFlUBjrnyWqAjq8Y7BnXaIDxDTm5jzT45m35xX+FaXwt/Z/O0oSyLwi61pfsAWgRcTq1ft4SKuCMsxv0tSQH5e5C8S5D2XZSTCj6NXlhdh27pDeA9HlLllu+iW8q6EdFrEynv9p3K8kJFtxkM10U5O08T\n",
|
||
"数据新建成功!\n",
|
||
"{'result': 'c3680f75-6968-4488-87e7-a071c3499f24'}\n",
|
||
"e3Dgoq7Gk47Czmk596NFrbEqUOTzVZdlRXOz/ooVVOWk1emls0TagrOscybZILeXfvv0w42IkfTzwGgFdrr4G7hHfBHv3lW7rrF7lruwL2WElbcRQUtfRkcVF3lv/vi7cDPX3ggbnGWGf54UPkb4el4KxfzmdZZX\n",
|
||
"数据新建成功!\n",
|
||
"{'result': 'c1139d67-a673-4759-be79-59360f058397'}\n",
|
||
"qBXdbTi6NFgKO6qBhXSz1yHmVaPbwLk0LqsRXE92ff66HOpmpA4VX21cUkQnNl3KxmYpO4yRJm/LZ/7g47giH7RXSI1SqP2YNJQjPzutbV1ivTd91Nkv+bS0iamdnk8EdwtPAyYBi9rpIxIW+D8EOTtl8uBGCCDR\n",
|
||
"数据新建成功!\n",
|
||
"{'result': '44250c2e-5379-441d-b570-97bfb403b653'}\n",
|
||
"Gzx54m1v6lZFYUbHBQDldPFQesrbay2TsQbao0EOhD3neeAr5NwOVhZiDgDAbTefKwLxg4OXR7WQnRyrhzg4hntgyKzEULAZ0JuGJbATep7fC1YPmZzj3pWXi7V53a9nkGFihH0wXY0+6pEpbuAsirt3TcNbvP0k\n",
|
||
"数据新建成功!\n",
|
||
"{'result': 'f2dfbe7c-1660-404b-a2aa-bacd68711b25'}\n",
|
||
"I5Y7t6zYO4gp2ezeBKCPkpW9su8/dUbql99PUXDBuvjRR8kHTK7O1PstnzVGw98D/jcd0k0T3fHd1o2N9QYHsdcBkVEX6bybbEUTKLNPeSbMCKJaEAeWpmBZ+ssMVQFs9yFobFufBdyaQmGsz5pOhiXKPmoB9QZQ\n",
|
||
"数据新建成功!\n",
|
||
"{'result': '41cfb243-2dbf-49d4-9fe1-5d89ae27f618'}\n",
|
||
"OBy5m79v6w3BMSsJTCvKaq3RDn6u+5tfs+5H4tRB7ZzQknbDHQwnbJW6ur+nrXHqgt7cV8dF5KyBQyBBrA9yM7uVfwR7C+m4TYPjLrtdR1HzoVBMsLeev7kgLCdH7xI0A3S4FX9Nd+tjaksQUCX9ycf3CzSx8d54\n",
|
||
"数据新建成功!\n",
|
||
"{'result': '71fd6f1b-dce6-4274-b182-07c978223254'}\n",
|
||
"+YDyhLGF2xSsPUmNbiZRaKKJsK64nyxSYOnNVeklP7VP6hb9ToiSfnQ4XG/ggmg7Hr5rzTossYIW3AaIDnwoMmpu5NaR/BjzXMWfMOo7Go9RQetZ4X6p+q4PmNAC57m1VP2iBDnO6mTJBIMqupQHMcMFU1Bi90OV\n",
|
||
"数据新建成功!\n",
|
||
"{'result': 'c46b75c4-3a06-439c-b46b-47c4c2b24613'}\n",
|
||
"YO8872zuAncd+24CGdKkJH7xJ6DJyqUyyF8P7Eu5oz9A1F0iQbbOX/Xf/5IprzvHFlwmo/fOXCk9bUlxfup+rlhyrAptBKk1s/3qS99ElWNyBKztujn6CGx2KRqsTKwtOUK/Hmi5e84Nj4MhLvQWmWIKR4S4ZZU7\n",
|
||
"数据新建成功!\n",
|
||
"{'result': '0d28935c-8320-4d5c-9e57-cc1443eb4c83'}\n",
|
||
"D1EabFjV+CleVZX3HrxaoZmGQxKyWmqmTvMoMBg3cNMPROAStj/Ox5KyKPmyClljJWSCqZDFrkaVeMnXegAuxvBs91VpXADF3K5qigTjVqXvegPWSvDYvypEat7hxL9LIpGuc5qzmUqR6CiTPMLm9ttggEQE2qcv\n",
|
||
"数据新建成功!\n",
|
||
"{'result': 'a4154f9a-fd17-4035-9b45-16f6a00ffc97'}\n",
|
||
"DIiDjfnUufelcORkchmwJnmDbSqIw+6Op3x+KMIrTIbLGwV7ExyalB+o7nwqbu5U0dk8wvScfryKkjGgnuq3dyjaCoVD2yMX6cItTszj+C6dSRuGl710290efH/vBc9mZOtnOs38IVkCyIcrRO3WjwJNvfsaV8Mc\n",
|
||
"数据新建成功!\n",
|
||
"{'result': '020363e7-b42c-4ed1-aa96-fe27c9593eb0'}\n",
|
||
"GUA0jP3WlnYlAQrbMg5bjmG2HqH3vOrg6Sc5gc2MHvaduTGeySc/HpvT423u72ZpEQjY8fRMWVplSCGWedD/hGbK3CxnHdZtAilP4uzAVg9aVl/D0oM5RQpp5t+k6Be7EZRXoipechvACI64m8TVVYv+NUHzvdc2\n",
|
||
"数据新建成功!\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# -*- coding: utf-8 -*-\n",
|
||
"import psycopg2\n",
|
||
"import pandas as pd\n",
|
||
"from datetime import date, timedelta\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=-2)\n",
|
||
"yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前一天日期\n",
|
||
"\n",
|
||
"today = date.today()\n",
|
||
"days_to_add = 120\n",
|
||
"future_date = str(today + timedelta(days=days_to_add))\n",
|
||
"# 输出结果\n",
|
||
"print(\"距离今天还有{}天的日期是:{}\".format(days_to_add, future_date))\n",
|
||
"# sql语句 建表\n",
|
||
"sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_saas_profile_ngv_detail_d\" WHERE \"date_id\" = '{yes_time_nyr}' and \"expiry_time\" like '%{future_date}%';\"\"\"\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",
|
||
"from datetime import date, timedelta\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 initiate_process(TOKEN,formData):\n",
|
||
" \"\"\" 发起宜搭审批流程 \"\"\"\n",
|
||
" api = f'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",
|
||
" payload = {\n",
|
||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||
" \"userId\" : \"yida_pub_account\",\n",
|
||
" \"language\" : \"zh_CN\",\n",
|
||
" \"formUuid\" : \"FORM-PE866MD1MJMU0WGLYRFLYEN5YN9L1I55Z7ZUK22\",\n",
|
||
" \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
||
" \"processCode\" : \"TPROC--PE866MD1MJMU0WGLYRFLYEN5YN9L1885Z7ZUK32\",\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",
|
||
" \n",
|
||
"import binascii\n",
|
||
"import time\n",
|
||
"import random\n",
|
||
"from pyDes import des, CBC, PAD_PKCS5\n",
|
||
"import requests\n",
|
||
"\n",
|
||
"def des_encrypt(s):\n",
|
||
" \"\"\"\n",
|
||
" DES 加密\n",
|
||
" :param s: 原始字符串\n",
|
||
" :return: 加密后字符串,16进制\n",
|
||
" \"\"\"\n",
|
||
" secret_key = 'HwdMBW8o'\n",
|
||
" iv = secret_key\n",
|
||
" k = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)\n",
|
||
" en = k.encrypt(s, padmode=PAD_PKCS5)\n",
|
||
" return binascii.b2a_base64(en, newline=False)\n",
|
||
"\n",
|
||
"\n",
|
||
"def des_descrypt(s):\n",
|
||
" \"\"\"\n",
|
||
" DES 解密\n",
|
||
" :param s: 加密后的字符串,16进制\n",
|
||
" :return: 解密后的字符串\n",
|
||
" \"\"\"\n",
|
||
" secret_key = 'HwdMBW8o'\n",
|
||
" iv = secret_key\n",
|
||
" k = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)\n",
|
||
" de = k.decrypt(binascii.a2b_base64(s), padmode=PAD_PKCS5)\n",
|
||
" return de\n",
|
||
"\n",
|
||
"TOKEN = generateToken() \n",
|
||
"'''读取省市小六技术专家区域客服区域客成 '''\n",
|
||
"FORMID = \"FORM-TP866D918DFCA4FW79YZU5X43FO32QZJQDZJL7\" #省市小六技术专家区域客服区域客成\n",
|
||
"try:\n",
|
||
" # 读取流程表单数据\n",
|
||
" form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
|
||
" PAGES = form_data.get('totalCount')//100 + 1\n",
|
||
" textField_gif29wy = {}\n",
|
||
" textField_3athky8 = {}\n",
|
||
" textField_3hgho1m = {}\n",
|
||
" textField_nc7gskc = {}\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",
|
||
" textField_gif29wy[data['formData']['textField_m3hchxc']]=data['formData']['textField_gif29wy'] #区域客成id\n",
|
||
" textField_3athky8[data['formData']['textField_m3hchxc']]=data['formData']['textField_3athky8'] #区域客服id\n",
|
||
" textField_3hgho1m[data['formData']['textField_3hgho1m']]=data['formData']['textField_3hgho1m'] #小六id\n",
|
||
" textField_nc7gskc[data['formData']['textField_nc7gskc']]=data['formData']['textField_nc7gskc'] #技术专家id\n",
|
||
" print(f'读取到省市小六技术专家区域客服区域客成表单中 {len(textField_gif29wy)} 条数据!')\n",
|
||
"\n",
|
||
"\n",
|
||
" '''遍历数据进行新建'''\n",
|
||
" data_NGV = data_NGV.astype('string')\n",
|
||
" data_NGV = data_NGV.fillna('',inplace=False)\n",
|
||
" group_grade = {\n",
|
||
" \"普通客户(VIP)\":10,\n",
|
||
" \"重要客户(SVIP)\":20,\n",
|
||
" \"区域KA(MVP)\":30,\n",
|
||
" \"全国KA(FMVP)\":50\n",
|
||
" }\n",
|
||
" # 过滤数据\n",
|
||
" for i in range(0,len(data_NGV[\"date_fmt\"])):\n",
|
||
" try:\n",
|
||
" t = time.time()\n",
|
||
" ts = int(round(t * 1000))\n",
|
||
" randint = random.randint(100000000, 999999999)\n",
|
||
" req = data_NGV['id_own_org'][i] + \"_\" + str(ts) + \"_\" + str(randint)\n",
|
||
" str_en = des_encrypt(req)\n",
|
||
" req_new = str_en.decode('utf-8')\n",
|
||
"\n",
|
||
" url = f\"http://manage.f6yc.com/hive-admin/py/yida/renewal/orgInfo\"\n",
|
||
" data = {\n",
|
||
" 'req':req_new,\n",
|
||
" 't':ts,\n",
|
||
" 'r':randint\n",
|
||
" }\n",
|
||
" res = requests.post(url,data=data)\n",
|
||
" formData = res.json()['data']['yidaFormData']\n",
|
||
" # 过期日期的时间戳\n",
|
||
" expire_timestamp = int(formData['dateField_ksirro5l'])/1000\n",
|
||
"\n",
|
||
" # 获取距离过期日期前120天,前90天,前60天,前30天的日期\n",
|
||
" expire_date = datetime.datetime.fromtimestamp(expire_timestamp)\n",
|
||
" before_90_days = expire_date - datetime.timedelta(days=90)\n",
|
||
" before_60_days = expire_date - datetime.timedelta(days=60)\n",
|
||
" before_30_days = expire_date - datetime.timedelta(days=30)\n",
|
||
" # print(formData)\n",
|
||
" formData['dateField_ljzefdm4'] = str(int(before_90_days.timestamp()*1000)) # 90天限制日期\n",
|
||
" formData['dateField_ljzefdm5'] = str(int(before_60_days.timestamp()*1000)) # 60天限制日期\n",
|
||
" formData['dateField_ljzefdm6'] = str(int(before_30_days.timestamp()*1000)) # 30天限制日期\n",
|
||
"\n",
|
||
"\n",
|
||
" employeeField_kykw5ege = str(formData['employeeField_kykw5ege'])\n",
|
||
" employeeField_ksydghrd = str(formData['employeeField_ksydghrd'])\n",
|
||
" formData['employeeField_ljz6gvwc'] = f\"['{textField_gif29wy[formData['textField_kuj8nx01']]}', '{textField_3athky8[formData['textField_kuj8nx01']]}']\" # 区域客成+区域客服\n",
|
||
" # formData['employeeField_ljz6416i'] = f\"[{textField_gif29wy[formData['textField_kuj8nx01']]}, {employeeField_kykw5ege}]\" # 区域客成+小六\n",
|
||
" formData['employeeField_ljz6416i'] = f\"['{textField_gif29wy[formData['textField_kuj8nx01']]}', '{employeeField_kykw5ege}']\" # 区域客成+小六\n",
|
||
" formData['employeeField_ljz6416j'] = f\"['{textField_gif29wy[formData['textField_kuj8nx01']]}', '{employeeField_ksydghrd}']\" # 区域客成+技术专家\n",
|
||
" formData['employeeField_ljz6gvwd'] = textField_3athky8[formData['textField_kuj8nx01']] # 区域客服\n",
|
||
" formData['employeeField_ksydght0'] = textField_gif29wy[formData['textField_kuj8nx01']] # 区域客成\n",
|
||
"\n",
|
||
" if employeeField_kykw5ege ==\"1824534815658365\" or employeeField_kykw5ege ==\"0627252740652855\": \n",
|
||
" if employeeField_ksydghrd ==\"\":\n",
|
||
" employeeField_kykw5ege = '0627252740652855'\n",
|
||
" formData['employeeField_ljz6gvwc'] = '0627252740652855' # 区域客成+区域客服\n",
|
||
" formData['employeeField_ljz6416i'] = '0627252740652855' # 区域客成+小六\n",
|
||
" formData['employeeField_ljz6416j'] = '0627252740652855' # 区域客成+技术专家\n",
|
||
" formData['employeeField_ljz6gvwd'] = '0627252740652855' # 区域客服\n",
|
||
" formData['employeeField_ksydght0'] = '0627252740652855' # 区域客成\n",
|
||
" formData['employeeField_kykw5ege'] = '0627252740652855' # 专属运营顾问\n",
|
||
" formData['employeeField_ksirro5o'] = '0627252740652855' # 续约绩效归属人\n",
|
||
" else:\n",
|
||
" employeeField_kykw5ege = employeeField_ksydghrd\n",
|
||
" formData['employeeField_ljz6gvwc'] = employeeField_ksydghrd # 区域客成+区域客服\n",
|
||
" formData['employeeField_ljz6416i'] = employeeField_ksydghrd # 区域客成+小六\n",
|
||
" formData['employeeField_ljz6416j'] = employeeField_ksydghrd # 区域客成+技术专家\n",
|
||
" formData['employeeField_ljz6gvwd'] = employeeField_ksydghrd # 区域客服\n",
|
||
" formData['employeeField_ksydght0'] = employeeField_ksydghrd # 区域客成\n",
|
||
" formData['employeeField_kykw5ege'] = employeeField_ksydghrd # 专属运营顾问\n",
|
||
" formData['employeeField_ksirro5o'] = employeeField_ksydghrd # 续约绩效归属人\n",
|
||
" if formData['textField_kycfic6o'] == \"区域KA(MVP)\" or formData['textField_kycfic6o'] == \"全国KA(FMVP)\":\n",
|
||
" formData['employeeField_ljz6gvwc'] = f\"['{employeeField_kykw5ege}', '{employeeField_ksydghrd}']\" # 小六+技术专家\n",
|
||
" formData['employeeField_ljz6416i'] = f\"['{employeeField_kykw5ege}', '{employeeField_ksydghrd}']\" # 小六+技术专家\n",
|
||
" formData['employeeField_ljz6416j'] = f\"['{employeeField_kykw5ege}', '{employeeField_ksydghrd}']\" # 小六+技术专家\n",
|
||
" formData['employeeField_ljz6gvwd'] = f\"['{employeeField_kykw5ege}', '{employeeField_ksydghrd}']\" # 小六+技术专家\n",
|
||
" try:\n",
|
||
" formData['textField_ksirro5g'] = group_grade[data_NGV['group_grade'][i]]\n",
|
||
" formData['textField_kycfic6o'] = data_NGV['group_grade'][i]\n",
|
||
" except:\n",
|
||
" pass\n",
|
||
" res_new = initiate_process(TOKEN,formData)\n",
|
||
" time.sleep(2)\n",
|
||
" print(res_new)\n",
|
||
"\n",
|
||
" # 回传信息-------------------------------------------------------------------------------------------------------------\n",
|
||
" default_new = True\n",
|
||
" a_len = 1\n",
|
||
" while default_new:\n",
|
||
" t = time.time()\n",
|
||
" ts = int(round(t * 1000))\n",
|
||
" randint = random.randint(100000000, 999999999)\n",
|
||
" req = res_new['result'] + \"|\" + formData['textField_kuntp6fk'] + \"|\" + formData['textField_kuntp6fl']+ \"|\" + formData['employeeField_kykw5ege'] + \"_\" + str(ts) + \"_\" + str(randint)\n",
|
||
" str_en = des_encrypt(req)\n",
|
||
" print(str_en.decode('utf-8'))\n",
|
||
" req_new = str_en.decode('utf-8')\n",
|
||
" url = f\"http://manage.f6yc.com/hive-admin/py/yida/renewal/insertRenewalFormsData\"\n",
|
||
" data = {\n",
|
||
" 'req':req_new,\n",
|
||
" 't':ts,\n",
|
||
" 'r':randint\n",
|
||
" }\n",
|
||
" res = requests.post(url,data=data)\n",
|
||
" res.json()\n",
|
||
" \n",
|
||
" if res.json()['message'] == \"SUCCESS\":\n",
|
||
" default_new = False\n",
|
||
" a_len = a_len + 1\n",
|
||
" if a_len > 5:\n",
|
||
" default_new = False\n",
|
||
" time.sleep(1)\n",
|
||
" '''校验是否新建正常'''\n",
|
||
" FORMID = \"FORM-L8966281PTZA73CDBTGQBDLM628M2P4X1OYHL0\" \n",
|
||
"\n",
|
||
" if a_len < 5:\n",
|
||
" print(\"数据新建成功!\")\n",
|
||
" else:\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 = f\"[流程]续约服务流程 新建后接口回传失败,请检查!{data_NGV['id_own_org'][i]}\"\n",
|
||
" res_yujing = start_instance_process(TOKEN,name)\n",
|
||
" except:\n",
|
||
" pass\n",
|
||
" except:\n",
|
||
" '''校验是否新建正常'''\n",
|
||
" FORMID = \"FORM-L8966281PTZA73CDBTGQBDLM628M2P4X1OYHL0\" \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 = f\"[流程]续约服务流程 未成功新建,请检查!{data_NGV['id_own_org'][i]}\"\n",
|
||
" res_yujing = start_instance_process(TOKEN,name)\n",
|
||
" except:\n",
|
||
" pass\n",
|
||
"except:\n",
|
||
" '''校验是否新建正常'''\n",
|
||
" FORMID = \"FORM-L8966281PTZA73CDBTGQBDLM628M2P4X1OYHL0\" \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 = f\"[流程]续约服务流程 表单数据读取失败,请检查!{data_NGV['id_own_org'][i]}\"\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"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 2
|
||
}
|