脚本
This commit is contained in:
@@ -0,0 +1,447 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# 含多年"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"c:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\numpy\\_distributor_init.py:30: UserWarning: loaded more than 1 DLL from .libs:\n",
|
||||
"c:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\numpy\\.libs\\libopenblas.EL2C6PLE4ZYW3ECEVIV3OXXGRN2NRFM2.gfortran-win_amd64.dll\n",
|
||||
"c:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\numpy\\.libs\\libopenblas64__v0.3.21-gcc_10_3_0.dll\n",
|
||||
" warnings.warn(\"loaded more than 1 DLL from .libs:\"\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"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",
|
||||
"# 将A列和B列的日期字符串转换为日期格式\n",
|
||||
"data_NGV['A'] = pd.to_datetime(data_NGV['expiry_time'])\n",
|
||||
"data_NGV['B'] = pd.to_datetime(data_NGV['renew_date'])\n",
|
||||
"data_NGV['条件'] = (data_NGV['org_type'] == \"一般\") & (data_NGV['org_status'] == '留存') & (data_NGV['group_grade'] != '区域KA(MVP)') & (data_NGV['group_grade'] != '全国KA(FMVP)')\n",
|
||||
"data_NGV = data_NGV.loc[data_NGV[\"条件\"] == True]\n",
|
||||
"data_details = data_NGV.copy()\n",
|
||||
"# 重置索引\n",
|
||||
"data_details = data_details.reset_index(drop=True)\n",
|
||||
"# 判断A列的日期是否大于B列的日期730天,如果是的话,将B列的值设置为1\n",
|
||||
"data_details['条件'] = data_details.apply(lambda row: (row['A'] - row['B']).days if row['A'] - row['B'] >= pd.Timedelta(days=730) else row['条件'], axis=1)\n",
|
||||
"data_details = data_details.loc[data_details[\"条件\"] != True]\n",
|
||||
"# 定义一个函数,用于将数字除以365并取整数\n",
|
||||
"def divide_by_365(x):\n",
|
||||
" if isinstance(x, (int, float)):\n",
|
||||
" return int(x / 365)\n",
|
||||
" else:\n",
|
||||
" return x\n",
|
||||
"# 使用applymap()函数将divide_by_365函数应用到DataFrame的每个元素\n",
|
||||
"data_details['年'] = data_details['条件'].apply(divide_by_365)\n",
|
||||
"# 重置索引\n",
|
||||
"data_details = data_details.reset_index(drop=True)\n",
|
||||
"# 创建一个新的空的DataFrame\n",
|
||||
"new_df = pd.DataFrame()\n",
|
||||
"# 遍历原始DataFrame的每一行\n",
|
||||
"from datetime import datetime, timedelta\n",
|
||||
"for index, row in data_details.iterrows():\n",
|
||||
" # 根据A列的值来决定复制的次数\n",
|
||||
" for i_new in range(1,row['年']):\n",
|
||||
" # 修改日期\n",
|
||||
" row_new = row.copy()\n",
|
||||
" c = row_new[\"renew_date\"]\n",
|
||||
" date_obj = datetime.strptime(c, \"%Y-%m-%d\")\n",
|
||||
" new_year = date_obj.year + i_new\n",
|
||||
" new_date_obj = date_obj.replace(year=new_year)\n",
|
||||
" new_c = new_date_obj.strftime(\"%Y-%m-%d\")\n",
|
||||
" row_new[\"renew_date\"] = new_c\n",
|
||||
" # 将当前行添加到新的DataFrame中\n",
|
||||
" new_df = new_df._append(row_new, ignore_index=True)\n",
|
||||
"# 合并两个DataFrame\n",
|
||||
"merged_df = pd.concat([data_NGV, new_df], axis=0, ignore_index=True)\n",
|
||||
"data_details = merged_df.copy() # 替换名称\n",
|
||||
"\n",
|
||||
"data_details_not_null = data_details[data_details['renew_date'].notnull()]\n",
|
||||
"data_details_not_null = data_details_not_null.sort_values(by='renew_date', ascending=True).drop_duplicates(subset='id_own_group')\n",
|
||||
"# 重置索引\n",
|
||||
"data_details_not_null = data_details_not_null.reset_index(drop=True)\n",
|
||||
"data_details = data_details_not_null.copy() # 替换名称 v2 \n",
|
||||
"\n",
|
||||
"import pandas as pd\n",
|
||||
"import pandas as pd\n",
|
||||
"import numpy as np\n",
|
||||
"import requests\n",
|
||||
"import json\n",
|
||||
"import time\n",
|
||||
"import re\n",
|
||||
"from datetime import datetime\n",
|
||||
"from dateutil.relativedelta import relativedelta\n",
|
||||
"from pathlib import Path\n",
|
||||
"from urllib.parse import quote\n",
|
||||
"from io import BytesIO\n",
|
||||
"\n",
|
||||
"ROOT = Path('.').absolute() # 当前工作目录\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"# 生成 token,参数不需要修改\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,formatted_today,formatted_today_two):\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",
|
||||
" \"createFromTimeGMT\" : formatted_today,\n",
|
||||
" \"createToTimeGMT\" : formatted_today_two,\n",
|
||||
" \"currentPage\" : page,\n",
|
||||
" \"pageSize\" : n\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(api, headers=headers, json=formData)\n",
|
||||
" return res.json()\n",
|
||||
"\n",
|
||||
"def initiate_process(TOKEN,formUuid,processCode,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\" : formUuid,\n",
|
||||
" \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
||||
" \"processCode\" : processCode,\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(api, headers=headers, json=payload)\n",
|
||||
" return res.json()\n",
|
||||
"\n",
|
||||
"def read_instances_new(token, formUuid, page, n):\n",
|
||||
" \"\"\" 函数功能:读取普通表单的所有数据 \"\"\"\n",
|
||||
"\n",
|
||||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" \"x-acs-dingtalk-access-token\": token\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" formData = {\n",
|
||||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||||
" \"userId\" : \"yida_pub_account\",\n",
|
||||
" \"language\" : \"zh_CN\",\n",
|
||||
" \"formUuid\" : formUuid,\n",
|
||||
" \"currentPage\" : page,\n",
|
||||
" \"pageSize\" : n\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(api, headers=headers, json=formData)\n",
|
||||
" return res.json()\n",
|
||||
"def read_instances_ngv(token, formUuid, page, n,searchField):\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",
|
||||
" \"searchFieldJson\": json.dumps(searchField),\n",
|
||||
" \"currentPage\" : page,\n",
|
||||
" \"pageSize\" : n\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(api, headers=headers, json=formData)\n",
|
||||
" return res.json()\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",
|
||||
"TOKEN = generateToken()\n",
|
||||
"'''读取员工对应关系:宜搭员工-ID对应表 '''\n",
|
||||
"FORMID = \"FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6\" # 宜搭员工-ID对应表 FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6\n",
|
||||
"# 读取流程表单数据\n",
|
||||
"form_data = read_instances_new(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_new(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",
|
||||
"FORMID = \"FORM-TP866D918DFCA4FW79YZU5X43FO32QZJQDZJL7\" #省市小六技术专家区域客服区域客成\n",
|
||||
"# 读取流程表单数据\n",
|
||||
"form_data = read_instances_new(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",
|
||||
"textField_qk1e5di = {}\n",
|
||||
"\"\"\" 获取全量数据 \"\"\"\n",
|
||||
"for i in range(1, PAGES+1):\n",
|
||||
" form_data = read_instances_new(token=TOKEN, formUuid=FORMID, page=i, n=100)\n",
|
||||
" for data in form_data.get('data'):\n",
|
||||
" textField_gif29wy[data['formData']['textField_o7jtgf1']]=data['formData']['textField_gif29wy'] #区域客成id\n",
|
||||
" textField_3athky8[data['formData']['textField_o7jtgf1']]=data['formData']['textField_3athky8'] #区域客服id\n",
|
||||
" textField_3hgho1m[data['formData']['textField_o7jtgf1']]=data['formData']['textField_3hgho1m'] #小六id\n",
|
||||
" textField_nc7gskc[data['formData']['textField_o7jtgf1']]=data['formData']['textField_nc7gskc'] #技术专家id\n",
|
||||
" textField_qk1e5di[data['formData']['textField_o7jtgf1']]=data['formData']['textField_lntniove'] #区域经理id\n",
|
||||
"print(f'读取到省市小六技术专家区域客服区域客成表单中 {len(textField_gif29wy)} 条数据!')\n",
|
||||
"'''读取市-技术专家id '''\n",
|
||||
"FORMID = \"FORM-A8666NA1FJDEVPBB6VVTOCMP47UP2J2L6SPML2\" #市-技术专家id\n",
|
||||
"# 读取流程表单数据\n",
|
||||
"form_data = read_instances_new(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
|
||||
"PAGES = form_data.get('totalCount')//100 + 1\n",
|
||||
"textField_lmps6q39 = {}\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_new(token=TOKEN, formUuid=FORMID, page=i, n=100)\n",
|
||||
" for data in form_data.get('data'):\n",
|
||||
" textField_lmps6q39[data['formData']['textField_lmps6q38']]=data['formData']['textField_lmps6q39'] #技术专家id\n",
|
||||
"print(f'读取到市-技术专家id表单中 {len(textField_lmps6q39)} 条数据!')\n",
|
||||
"import datetime\n",
|
||||
"now_time = datetime.datetime.now()\n",
|
||||
"today = now_time + datetime.timedelta(days=-83)\n",
|
||||
"formatted_today_90 = today.strftime(\"%Y-%m-%d\")\n",
|
||||
"today = now_time + datetime.timedelta(days=-113)\n",
|
||||
"formatted_today_120 = today.strftime(\"%Y-%m-%d\")\n",
|
||||
"today = now_time + datetime.timedelta(days=-173)\n",
|
||||
"formatted_today_180 = today.strftime(\"%Y-%m-%d\")\n",
|
||||
"timestamp_ms = int(time.time() * 1000) # 当然日期时间戳 毫秒级\n",
|
||||
"# 获取数据\n",
|
||||
"data_details_90 = data_details.copy()\n",
|
||||
"data_details_90['条件'] = (data_details_90['renew_date'] == formatted_today_90) & (data_details_90['saas_edition_fmt'] != '基础版')\n",
|
||||
"data_details_90 = data_details_90.loc[data_details_90[\"条件\"] == True]\n",
|
||||
"data_details_120 = data_details.copy()\n",
|
||||
"data_details_120['条件'] = (data_details_120['renew_date'] == formatted_today_120) & (data_details_120['saas_edition_fmt'] == '基础版')\n",
|
||||
"data_details_120 = data_details_120.loc[data_details_120[\"条件\"] == True]\n",
|
||||
"data_details_180 = data_details.copy()\n",
|
||||
"data_details_180['条件'] = (data_details_180['renew_date'] == formatted_today_180) & (data_details_180['saas_edition_fmt'] != '基础版')\n",
|
||||
"data_details_180 = data_details_180.loc[data_details_180[\"条件\"] == True]\n",
|
||||
"\n",
|
||||
"text_jcb_120 = '''\n",
|
||||
"续约后120天:\n",
|
||||
"1.客户系统使用问题集中解答;\n",
|
||||
"2.跟客户查看车辆分析,推荐短信及其他营销功能;\n",
|
||||
"3.红包裂变功能介绍;\n",
|
||||
"4.说明转介绍政策,索要转介绍;\n",
|
||||
"'''\n",
|
||||
"text_bzb_90 = '''\n",
|
||||
"续约后90天:\n",
|
||||
"1.客户系统使用问题集中解答;\n",
|
||||
"2.跟客户查看车辆分析,推荐短信及其他营销功能;\n",
|
||||
"3.会员卡功能使用情况分析,推荐公众号引导升级;\n",
|
||||
"4.说明转介绍政策,索要转介绍;\n",
|
||||
"'''\n",
|
||||
"text_bzb_180 = '''\n",
|
||||
"续约后180天:\n",
|
||||
"1.客户系统使用问题集中解答;\n",
|
||||
"2.跟客户查看车辆分析,推荐短信及其他营销功能;\n",
|
||||
"3.会员卡功能使用情况分析,推荐公众号引导升级;\n",
|
||||
"4.红包裂变推荐;\n",
|
||||
"'''\n",
|
||||
"text_qita_90 = '''\n",
|
||||
"续约后90天:\n",
|
||||
"1.客户系统使用问题集中解答;\n",
|
||||
"2.跟客户查看车辆分析,推荐短信及其他营销功能;\n",
|
||||
"3.公众号小程序功能使用情况分析,提升系统使用深度;\n",
|
||||
"4.说明转介绍政策,索要转介绍;\n",
|
||||
"'''\n",
|
||||
"text_qita_180 = '''\n",
|
||||
"续约后180天:\n",
|
||||
"1.客户系统使用问题集中解答;\n",
|
||||
"2.跟客户查看车辆分析,推荐短信及其他营销功能;\n",
|
||||
"3.公众号小程序功能使用情况分析,提升系统使用深度;\n",
|
||||
"4.红包裂变推荐;\n",
|
||||
"'''\n",
|
||||
"data_details_90['拜访目的说明'] = \"\"\n",
|
||||
"# text_bzb_90\n",
|
||||
"data_details_90['拜访目的说明'] = data_details_90.apply(lambda row: text_bzb_90 if row['saas_edition_fmt'] == '标准版' else row['拜访目的说明'], axis=1)\n",
|
||||
"# text_qita_90\n",
|
||||
"data_details_90['拜访目的说明'] = data_details_90.apply(lambda row: text_qita_90 if row['saas_edition_fmt'] != '标准版' else row['拜访目的说明'], axis=1)\n",
|
||||
"\n",
|
||||
"# text_jcb_120\n",
|
||||
"data_details_120['拜访目的说明'] = text_jcb_120\n",
|
||||
"\n",
|
||||
"data_details_180['拜访目的说明'] = \"\"\n",
|
||||
"# text_bzb_180\n",
|
||||
"data_details_180['拜访目的说明'] = data_details_180.apply(lambda row: text_bzb_180 if row['saas_edition_fmt'] == '标准版' else row['拜访目的说明'], axis=1)\n",
|
||||
"# text_qita_180\n",
|
||||
"data_details_180['拜访目的说明'] = data_details_180.apply(lambda row: text_qita_180 if row['saas_edition_fmt'] != '标准版' else row['拜访目的说明'], axis=1)\n",
|
||||
"# 合并三个DataFrame\n",
|
||||
"data_result = pd.concat([data_details_90, data_details_120, data_details_180], ignore_index=True)\n",
|
||||
"print(len(data_result))\n",
|
||||
"# 获取待回访人员信息+去重\n",
|
||||
"name_list = []\n",
|
||||
"for data in data_result['service_impl_principal']:\n",
|
||||
" name_list.append(data)\n",
|
||||
"unique_arr = []\n",
|
||||
"[unique_arr.append(x) for x in name_list if x not in unique_arr]\n",
|
||||
"print(unique_arr)\n",
|
||||
"# 每日工作计划\n",
|
||||
"formUuid = \"FORM-4V966N81OMEEH85QDP8XW4AH1AIZ2GKRLZTML21\"\n",
|
||||
"processCode = \"TPROC--4V966N81OMEEH85QDP8XW4AH1AIZ21ORLZTML31\"\n",
|
||||
"# 遍历数据并进行创建\n",
|
||||
"for name in unique_arr:\n",
|
||||
" tableField_lnsi0v71 = {}\n",
|
||||
" tableField_lnsi0v71['dateField_lmelabb1'] = \"\"\n",
|
||||
" tableField_lnsi0v71['employeeField_lmeqk429'] = \"\"\n",
|
||||
" tableField_lnsi0v71['employeeField_lmeqk423'] = \"\"\n",
|
||||
" tableField_lnsi0v71['employeeField_lmeqk424'] = \"\"\n",
|
||||
" for i in range(0,len(data_result)):\n",
|
||||
" if data_result.loc[i,\"service_impl_principal\"] == name:\n",
|
||||
" data_one = {} # 子表单\n",
|
||||
" data_two = {} # 主表单\n",
|
||||
" # 子表单\n",
|
||||
" data_one['textField_lnsi0v72'] = data_result.loc[i,\"org_name\"] # 门店名称\n",
|
||||
" data_one['textField_lnsi0v6s'] = data_result.loc[i,\"saas_edition_fmt\"] # 销售版本\n",
|
||||
" try:\n",
|
||||
" data_one['employeeField_lnsi0v6u'] = textField_nc7gskc[name] # 技术专家\n",
|
||||
" data_one['employeeField_lnsi0v6v'] = textField_qk1e5di[name] # 区域经理\n",
|
||||
" if textField_3hgho1m[name] ==\"\":\n",
|
||||
" data_one['employeeField_lnsi0v6w'] = textField_lmps6q39[data_NGV[\"city_name\"][i]] # 运营顾问\n",
|
||||
" else:\n",
|
||||
" data_one['employeeField_lnsi0v6w'] = textField_3hgho1m[name] # 运营顾问\n",
|
||||
" except:\n",
|
||||
" data_one['employeeField_lnsi0v6u'] = textField_lmps6q39[data_NGV[\"city_name\"][i]] # 技术专家\n",
|
||||
" data_one['employeeField_lnsi0v6v'] = ALL_DATA_staff[data_result.loc[i,\"area_manager\"]] # 区域经理\n",
|
||||
" data_one['employeeField_lnsi0v6w'] = textField_lmps6q39[data_NGV[\"city_name\"][i]] # 运营顾问\n",
|
||||
" data_one['dateField_lnsi0v6x'] = str(timestamp_ms) # 计划日期\n",
|
||||
" data_one['textField_lnsi0v6y'] = data_result.loc[i,\"org_name\"] # 门店名称-拷贝\n",
|
||||
" data_one['textField_lnsi0v6z'] = data_result.loc[i,\"org_code\"] # 门店编码\n",
|
||||
" data_one['selectField_lnsi0v6q'] = \"客情维护\" # 拜访目的\n",
|
||||
" data_one['textareaField_lnsi0v6r'] = data_result.loc[i,\"拜访目的说明\"] # 拜访目的说明\n",
|
||||
" data_one['textField_lnsi0v70'] = data_result.loc[i,\"id_own_group\"] # 公司id\n",
|
||||
" # 加入数据\n",
|
||||
" \n",
|
||||
" tableField_lnsi0v71['tableField_lnsi0v71'] = [data_one]\n",
|
||||
" # 主表单\n",
|
||||
" tableField_lnsi0v71['dateField_lmelabb1'] = str(timestamp_ms)\n",
|
||||
" try:\n",
|
||||
" if textField_3hgho1m[name] ==\"\":\n",
|
||||
" tableField_lnsi0v71['employeeField_lmeqk424'] = textField_lmps6q39[data_NGV[\"city_name\"][i]] # 技术专家\n",
|
||||
" else:\n",
|
||||
" tableField_lnsi0v71['employeeField_lmeqk429'] = textField_3hgho1m[name] # 小六\n",
|
||||
" tableField_lnsi0v71['employeeField_lmeqk423'] = textField_qk1e5di[name] # 区域经理\n",
|
||||
" tableField_lnsi0v71['employeeField_lmeqk424'] = textField_nc7gskc[name] # 技术专家\n",
|
||||
" except:\n",
|
||||
" tableField_lnsi0v71['employeeField_lmeqk429'] = textField_lmps6q39[data_NGV[\"city_name\"][i]] # 小六\n",
|
||||
" tableField_lnsi0v71['employeeField_lmeqk423'] = ALL_DATA_staff[data_result.loc[i,\"area_manager\"]] # 区域经理\n",
|
||||
" tableField_lnsi0v71['employeeField_lmeqk424'] = textField_lmps6q39[data_NGV[\"city_name\"][i]] # 技术专家\n",
|
||||
" tableField_lnsi0v71['textField_lmu0523h'] = \"自动派发回访计划\" # 状态备用\n",
|
||||
" # 富文本 超链接 NGV\n",
|
||||
" try:\n",
|
||||
" form_data_ngv = read_instances_ngv(token=TOKEN, formUuid=\"FORM-ZK866D91O9LA4NIHCARG2DPIPCXF3Z087PPHL91\", page=1, n=100, searchField={'textField_zc1iowp': data_result.loc[i,\"org_code\"]})\n",
|
||||
" tableField_lnsi0v71['editorField_lodoplg0'] = [\"root\",{},[\"p\",{},[\"span\",{\"data-type\":\"text\"},[\"span\",{\"data-type\":\"leaf\"},\"\"]],[\"a\",{\"href\":\"https://f6car.aliwork.com/APP_UYZ0KG6L0CCNV80GZ66O/formDetail/FORM-ZK866D91O9LA4NIHCARG2DPIPCXF3Z087PPHL91?formInstId=\"+form_data_ngv['data'][0]['formInstanceId']+\"&isAdmin=true\"},[\"span\",{\"data-type\":\"text\"},[\"span\",{\"unlink\":{},\"data-type\":\"leaf\"},\"点击查看门店NGV\"]]],[\"span\",{\"data-type\":\"text\"},[\"span\",{\"unlink\":{},\"data-type\":\"leaf\"},\"\"]]]] # 富文本 超链接 NGV\n",
|
||||
" except:\n",
|
||||
" pass\n",
|
||||
" res=initiate_process(TOKEN,formUuid,processCode,tableField_lnsi0v71)\n",
|
||||
" print(res,tableField_lnsi0v71)"
|
||||
]
|
||||
}
|
||||
],
|
||||
"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
|
||||
}
|
||||
Reference in New Issue
Block a user