{ "cells": [ { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "8\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ ":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 }