3365 lines
174 KiB
Plaintext
3365 lines
174 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# 正式"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"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",
|
||
"today = datetime.date.today()\n",
|
||
"# 获取当月\n",
|
||
"first_day_of_month = int(today.replace().strftime('%Y%m'))-2\n",
|
||
"\n",
|
||
"# sql语句 建表\n",
|
||
"sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_sales_saas_org_summary_income_m\" WHERE \"pt\" >= '{first_day_of_month}'\"\"\"\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",
|
||
"from decimal import Decimal\n",
|
||
"data_details['version_amount_total'] = data_details['version_amount_total'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['version_amount_saas'] = data_details['version_amount_saas'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['version_amount_other'] = data_details['version_amount_other'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['unversion_amount_total'] = data_details['unversion_amount_total'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['unversion_amount_mngv'] = data_details['unversion_amount_mngv'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['unversion_amount_message'] = data_details['unversion_amount_message'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['irregular_amount_total'] = data_details['irregular_amount_total'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['irregular_amount_activity'] = data_details['irregular_amount_activity'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['irregular_amount_service'] = data_details['irregular_amount_service'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['coupon_amount'] = data_details['coupon_amount'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"# 基础函数配置\n",
|
||
"import pandas as pd\n",
|
||
"import pandas as pd\n",
|
||
"import requests\n",
|
||
"from pathlib import Path\n",
|
||
"from urllib.parse import quote\n",
|
||
"import json\n",
|
||
"import numpy as np\n",
|
||
"import time\n",
|
||
"\n",
|
||
"ROOT = Path('.').absolute() # 当前工作目录\n",
|
||
"\n",
|
||
"def generateToken() -> str:\n",
|
||
" \"\"\" 生成 token \"\"\"\n",
|
||
"\n",
|
||
" token_api = 'https://api.dingtalk.com/v1.0/oauth2/accessToken'\n",
|
||
"\n",
|
||
" # 该信息在钉钉开放应用中\n",
|
||
" data = {\n",
|
||
" \"appKey\": \"ding5kqocon5s9oph5uq\",\n",
|
||
" \"appSecret\": 'HL1jgsIIfLAC0eTH0A1m4mwxUDqbgsiPeCCGGE3ocM6qJBTIW7Ivt9drxF_Z4Kb_'\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.post(token_api, json=data)\n",
|
||
" token = res.json()['accessToken']\n",
|
||
"\n",
|
||
" return token\n",
|
||
"\n",
|
||
"def read_instances(token, formUuid, page, n):\n",
|
||
" \"\"\" 函数功能:读取普通表单的所有数据 \"\"\"\n",
|
||
"\n",
|
||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": token\n",
|
||
" }\n",
|
||
"\n",
|
||
" formData = {\n",
|
||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||
" \"userId\" : \"yida_pub_account\",\n",
|
||
" \"language\" : \"zh_CN\",\n",
|
||
" \"formUuid\" : formUuid,\n",
|
||
" \"currentPage\" : page,\n",
|
||
" \"pageSize\" : n\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.post(api, headers=headers, json=formData)\n",
|
||
" return res.json()\n",
|
||
"\n",
|
||
"def read_delete(token, formInstanceId):\n",
|
||
" \"\"\" 函数功能:调用本接口删除表单数据。 \"\"\"\n",
|
||
"\n",
|
||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": token\n",
|
||
" }\n",
|
||
"\n",
|
||
" formData = {\n",
|
||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||
" \"userId\" : \"yida_pub_account\",\n",
|
||
" \"language\" : \"zh_CN\",\n",
|
||
" \"formInstanceId\" : formInstanceId\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.delete(api, headers=headers, json=formData)\n",
|
||
" return res.json()\n",
|
||
"\n",
|
||
"def read_new(FORMID,formData):\n",
|
||
" \"\"\" 通过实例id 获取表单内容 \"\"\"\n",
|
||
" api = f'https://api.dingtalk.com/v1.0/yida/forms/instances'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||
" }\n",
|
||
" payload = {\n",
|
||
" \"formUuid\" : FORMID,\n",
|
||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||
" \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||
" \"language\" : \"zh_CN\",\n",
|
||
" \"userId\" : \"yida_pub_account\"\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.post(api, headers=headers, json=payload)\n",
|
||
" print(res.json())\n",
|
||
"\n",
|
||
" return res.json()\n",
|
||
"\n",
|
||
"\n",
|
||
"def component(FORMID,TOKEN):\n",
|
||
" \"\"\" 获取组件信息 \"\"\"\n",
|
||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/formFields'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||
" }\n",
|
||
" payload = {\n",
|
||
" \"formUuid\" : FORMID,\n",
|
||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||
" # \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||
" # \"language\" : \"zh_CN\",\n",
|
||
" \"userId\" : \"yida_pub_account\"\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.get(api, headers=headers, json=payload)\n",
|
||
"\n",
|
||
" return res.json()\n",
|
||
"def Batch_creation(FORMID,TOKEN,ALL_formData):\n",
|
||
" \"\"\" 获取组件信息 \"\"\"\n",
|
||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchSave'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||
" }\n",
|
||
" payload = {\n",
|
||
" # \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
||
" \"noExecuteExpression\" : \"true\",\n",
|
||
" \"formUuid\" : FORMID,\n",
|
||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||
" \"asynchronousExecution\" : \"true\",\n",
|
||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||
" \"keepRunningAfterException\" : \"true\",\n",
|
||
" \"userId\" : \"yida_pub_account\",\n",
|
||
" \"formDataJsonList\" : json.dumps(ALL_formData, cls=NpEncoder),\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.post(api, headers=headers, json=payload)\n",
|
||
" return res.json()\n",
|
||
"\n",
|
||
"def delete_in_batches(FORMID,TOKEN,ALL_DATA_instance):\n",
|
||
" \"\"\" 批量删除表单实例 \"\"\"\n",
|
||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchRemove'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||
" }\n",
|
||
"\n",
|
||
" payload = {\n",
|
||
" \"formUuid\" : FORMID,\n",
|
||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||
" \"asynchronousExecution\" : \"true\",\n",
|
||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||
" \"formInstanceIdList\" : json.dumps(ALL_DATA_instance, cls=NpEncoder),\n",
|
||
" \"userId\" : \"yida_pub_account\",\n",
|
||
" \"executeExpression\" : \"false\" # 不触发\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.post(api, headers=headers, json=payload)\n",
|
||
" return res.json()\n",
|
||
"def read_instances_pt(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 delete_in(TOKEN,formInstanceIdList):\n",
|
||
" \"\"\" 逐条删除表单实例 \"\"\"\n",
|
||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances?appType=APP_UYZ0KG6L0CCNV80GZ66O&systemToken=XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2&userId=yida_pub_account&language=zh_CN&formInstanceId={formInstanceIdList}'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||
" }\n",
|
||
" res = requests.delete(api, headers=headers)\n",
|
||
" return res.json()\n",
|
||
"\n",
|
||
"class NpEncoder(json.JSONEncoder):\n",
|
||
" def default(self, obj):\n",
|
||
" if isinstance(obj, np.integer):\n",
|
||
" return int(obj)\n",
|
||
" elif isinstance(obj, np.floating):\n",
|
||
" return float(obj)\n",
|
||
" elif isinstance(obj, np.ndarray):\n",
|
||
" return obj.tolist()\n",
|
||
" else:\n",
|
||
" return super(NpEncoder, self).default(obj)\n",
|
||
"TOKEN = generateToken() \n",
|
||
"'''读取员工对应关系:宜搭员工-ID对应表 '''\n",
|
||
"FORMID = \"FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6\" # 宜搭员工-ID对应表 FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6\n",
|
||
"# 读取流程表单数据\n",
|
||
"form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
|
||
"PAGES = form_data.get('totalCount')//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-GI666T81ZBWAFJZVABUMA80PJSDC2YCOZ20ILZ\"\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",
|
||
"form_data = read_instances_pt(token=TOKEN, formUuid=\"FORM-E6766M8103CDA5M3CJ06JDRCLSKV2FJ6Z3CLLA\" , page=1, n=100)\n",
|
||
"PAGES = form_data.get('totalCount')//100 + 1\n",
|
||
"ALL_DATA = []\n",
|
||
"\"\"\" 获取全量数据 \"\"\"\n",
|
||
"for i in range(1, PAGES+1):\n",
|
||
" form_data = read_instances_pt(token=TOKEN, formUuid=\"FORM-E6766M8103CDA5M3CJ06JDRCLSKV2FJ6Z3CLLA\" , page=i, n=100)\n",
|
||
" for data in form_data.get('data'):\n",
|
||
" ALL_DATA.append([data['formData'][\"textField_dv032lp\"],data['formData'][\"textField_cwqfrcq\"],data['formData'][\"textField_qplm0p9\"]+data['formData'][\"textField_wy749n8\"]])\n",
|
||
"print(f'读取到流程表中 {len(ALL_DATA)} 条数据')\n",
|
||
"df_DataFrame = pd.DataFrame(ALL_DATA, columns=[ '优惠券金额', '提前续约优惠', '公司名称门店名称'])\n",
|
||
"# '''批量删除NGV数据'''\n",
|
||
"for i in range(0,10):\n",
|
||
" default = True\n",
|
||
" while default:\n",
|
||
" FORMID = \"FORM-GI666T81ZBWAFJZVABUMA80PJSDC2YCOZ20ILZ\" \n",
|
||
" form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
|
||
" PAGES = form_data.get('totalCount')//100 +1 \n",
|
||
" print(form_data.get('totalCount'))\n",
|
||
" if form_data.get('totalCount')<=0:\n",
|
||
" default = False\n",
|
||
" for i in range(PAGES, 1,-1):\n",
|
||
" ALL_DATA_instance = []\n",
|
||
" form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
|
||
" for data in form_data.get('data'):\n",
|
||
" ALL_DATA_instance.append(data['formInstanceId'])\n",
|
||
" print(f'读取到表单中 {len(ALL_DATA_instance)} 条数据!')\n",
|
||
" red_delete = delete_in_batches(FORMID,TOKEN,ALL_DATA_instance)\n",
|
||
" form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
|
||
" for data in form_data.get('data'):\n",
|
||
" formInstanceId = data['formInstanceId']\n",
|
||
" delete_in(TOKEN,formInstanceId)\n",
|
||
" print(f'单条删除 {formInstanceId} 数据!')\n",
|
||
"\n",
|
||
"'''遍历数据进行新建'''\n",
|
||
"data_details = data_details.astype('string')\n",
|
||
"data_details = data_details.fillna('',inplace=False)\n",
|
||
"for a in range(0,len(data_details[\"year_id\"]),100):\n",
|
||
" ALL_formData = []\n",
|
||
" for i in range(a,a+100): # for i in range(len(data_NGV[\"date_fmt\"])):\n",
|
||
" try:\n",
|
||
" try:\n",
|
||
" if data_details[\"franchise_group_name\"][i] ==\"\":\n",
|
||
" data_details[\"franchise_group_name\"][i] = \"普通SAAS\"\n",
|
||
" except:\n",
|
||
" pass\n",
|
||
" formData = {\n",
|
||
" 'textField_l556qrj':data_details[\"year_id\"][i],#\"year_id\"\n",
|
||
" 'textField_ioghzon':data_details[\"org_crm_id\"][i],#\"org_crm_id\"\n",
|
||
" 'textField_kr3pc6c':data_details[\"org_id\"][i],#\"org_id\"\n",
|
||
" 'textField_sv3xmix':data_details[\"org_code\"][i],#\"org_code\"\n",
|
||
" 'textField_nk98j1i':data_details[\"org_name\"][i],#\"org_name\"\n",
|
||
" 'textField_gvdimtj':data_details[\"group_id\"][i],#\"group_id\"\n",
|
||
" 'textField_ntc1mqo':data_details[\"group_name\"][i],#\"group_name\"\n",
|
||
" 'textField_dssu351':data_details[\"group_grade\"][i],#\"group_grade\"\n",
|
||
" 'dateField_hgp5gh8':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_create_time\"\n",
|
||
" 'textField_m6wvkhp':data_details[\"from_flag_fmt\"][i],#\"from_flag_fmt\"\n",
|
||
" 'textField_rzrq44v':data_details[\"franchise_group_name\"][i],#\"franchise_group_name\"\n",
|
||
" 'textField_s8u1211':data_details[\"region_name\"][i],#\"region_name\"\n",
|
||
" 'textField_bifjpqz':data_details[\"branch_name\"][i],#\"branch_name\"\n",
|
||
" 'textField_zz547i2':data_details[\"province_name\"][i],#\"province_name\"\n",
|
||
" 'textField_j86bqku':data_details[\"city_name\"][i],#\"city_name\"\n",
|
||
" # 'employeeField_li0304o0':ALL_DATA_staff[data_details[\"area_manager\"][i]] if data_details[\"area_manager\"][i] !='' else '',#\"area_manager\"\n",
|
||
" # 'employeeField_li0304o1':ALL_DATA_staff[data_details[\"service_impl_principal\"][i]] if data_details[\"service_impl_principal\"][i] !='' else '',#\"service_impl_principal\"\n",
|
||
" # 'employeeField_li0304o2':ALL_DATA_staff[data_details[\"technician\"][i]] if data_details[\"technician\"][i] !='' else '',#\"technician\"\n",
|
||
" 'dateField_f7cjejs':int(time.mktime(time.strptime(data_details[\"to_renew_time\"][i], \"%Y-%m-%d %H:%M:%S\"))*1000) if data_details[\"to_renew_time\"][i] !='' else '',#\"to_renew_time\"\n",
|
||
" 'textField_4a171yy':data_details[\"saas_edition_fmt\"][i],#\"saas_edition_fmt\"\n",
|
||
" 'textField_9cja7t3':data_details[\"version_amount_total\"][i],#\"version_amount_total\"\n",
|
||
" 'textField_tdd8vic':data_details[\"version_amount_saas\"][i],#\"version_amount_saas\"\n",
|
||
" 'textField_yc1liag':data_details[\"version_amount_other\"][i],#\"version_amount_other\"\n",
|
||
" 'textField_sazuktm':data_details[\"unversion_amount_total\"][i],#\"unversion_amount_total\"\n",
|
||
" 'textField_dzyddir':data_details[\"unversion_amount_mngv\"][i],#\"unversion_amount_mngv\"\n",
|
||
" 'textField_rimc2k8':data_details[\"unversion_amount_message\"][i],#\"unversion_amount_message\"\n",
|
||
" 'textField_whlq8rb':data_details[\"irregular_amount_total\"][i],#\"irregular_amount_total\"\n",
|
||
" 'textField_jm29spy':data_details[\"irregular_amount_activity\"][i],#\"irregular_amount_activity\"\n",
|
||
" 'textField_hf46l34':data_details[\"irregular_amount_service\"][i],#\"irregular_amount_service\"\n",
|
||
" 'textField_pkyoug6':data_details[\"coupon_amount\"][i],#\"coupon_amount\"\n",
|
||
" 'dateField_uwztkat':int(time.mktime(time.strptime(data_details[\"etl_time\"][i], \"%Y-%m-%d %H:%M:%S\"))*1000) if data_details[\"etl_time\"][i] !='' else '',#\"etl_time\"\n",
|
||
" 'textField_s6mf0at':data_details[\"pt\"][i],#\"pt\"\n",
|
||
" 'textField_llm3mclm':\"0\" #\"提前续约优惠\"\n",
|
||
" }\n",
|
||
" try:\n",
|
||
" formData['employeeField_li0304o2'] = ALL_DATA_staff[data_details[\"technician\"][i]]\n",
|
||
" except:\n",
|
||
" formData['employeeField_li0304o2'] = \"\"\n",
|
||
" try:\n",
|
||
" formData['employeeField_li0304o1'] = ALL_DATA_staff[data_details[\"service_impl_principal\"][i]]\n",
|
||
" except:\n",
|
||
" formData['employeeField_li0304o1'] = \"\"\n",
|
||
" try:\n",
|
||
" formData['employeeField_li0304o0'] = ALL_DATA_staff[data_details[\"area_manager\"][i]]\n",
|
||
" except:\n",
|
||
" formData['employeeField_li0304o0'] = \"\"\n",
|
||
" try:\n",
|
||
" group_name_org_name = formData['textField_ntc1mqo'] + formData['textField_nk98j1i']\n",
|
||
" row_numbers = df_DataFrame.index[df_DataFrame['公司名称门店名称'] == group_name_org_name].tolist()\n",
|
||
" if row_numbers[0]>0:\n",
|
||
" pandan_new = int(float(df_DataFrame.loc[row_numbers,'优惠券金额'].values[0])) - int(float(formData['textField_pkyoug6']))\n",
|
||
" if pandan_new == 0 or df_DataFrame.loc[row_numbers,'优惠券金额'].values[0] == \"0\":\n",
|
||
" formData['textField_llm3mclm'] = df_DataFrame.loc[row_numbers[0],'提前续约优惠'] # 提前续约优惠\n",
|
||
" except:\n",
|
||
" formData['textField_llm3mclm'] = \"0\"\n",
|
||
"\n",
|
||
" ALL_formData.append(json.dumps(formData, cls=NpEncoder)) \n",
|
||
" except:\n",
|
||
" pass\n",
|
||
" FORMID = \"FORM-GI666T81ZBWAFJZVABUMA80PJSDC2YCOZ20ILZ\" \n",
|
||
" res_new = Batch_creation(FORMID,TOKEN,ALL_formData)\n",
|
||
" print(\"新建第\",i,\"条数据!\")\n",
|
||
" time.sleep(10)\n",
|
||
" \n",
|
||
"'''校验是否新建正常'''\n",
|
||
"time.sleep(120)\n",
|
||
"FORMID = \"FORM-GI666T81ZBWAFJZVABUMA80PJSDC2YCOZ20ILZ\" \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 = \"4、年度滚动续费率分子:holo_ads_report_sales_saas_org_summary_income_m 新建条数不正确!\"\n",
|
||
" res_yujing = start_instance_process(TOKEN,name)\n",
|
||
" except:\n",
|
||
" pass"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 6,
|
||
"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": [
|
||
"# 基础函数配置\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 transcation(token,FORMID,data_new):\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",
|
||
" payload = {\n",
|
||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||
" \"userId\" : \"2268275546837446\", # 曹伟 id\n",
|
||
" \"language\" : \"zh_CN\",\n",
|
||
" \"useLatestVersion\" : \"false\",\n",
|
||
" \"formInstanceId\" : FORMID,\n",
|
||
" \"updateFormDataJson\" : json.dumps(data_new, cls=NpEncoder),\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.put(api, headers=headers, json=payload)\n",
|
||
"\n",
|
||
" return res.json()\n",
|
||
"def aggree_approval(token: str, taskId: str, processInstanceId: str, formData: dict,res_new):\n",
|
||
" \"\"\" 函数功能:同意审批节点 --F6客户服务 应用 \"\"\"\n",
|
||
" api = f'https://api.dingtalk.com/v1.0/yida/tasks/execute'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": token\n",
|
||
" }\n",
|
||
"\n",
|
||
" payload = {\n",
|
||
" \"outResult\": \"AGREE\",\n",
|
||
" \"appType\": \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||
" \"systemToken\": \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||
" \"remark\": \"同意(接口自动)\",\n",
|
||
" \"formDataJson\": json.dumps(formData, cls=NpEncoder),\n",
|
||
" \"processInstanceId\": processInstanceId,\n",
|
||
" # \"userId\": \"yida_pub_account\",\n",
|
||
" \"userId\": res_new, \n",
|
||
" \"language\": \"zh_CN\",\n",
|
||
" \"taskId\": int(taskId)\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.post(api, headers=headers, json=payload)\n",
|
||
" # print('同意审批节点')\n",
|
||
" return res\n",
|
||
"def read_instances_new(token, formUuid, page, n):\n",
|
||
" \"\"\" 函数功能:读取流程表单的所有数据 \"\"\"\n",
|
||
"\n",
|
||
" api = f'https://api.dingtalk.com//v1.0/yida/processes/instances?pageNumber={page}&pageSize={n}'\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",
|
||
" \"instanceStatus\": \"RUNNING\"\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.post(api, headers=headers, json=formData)\n",
|
||
" return res.json()\n",
|
||
"def get_approval_records(token: str, processInstanceId: str):\n",
|
||
" \"\"\" 函数功能:获取流程表单的审批记录 --F6客户服务 应用 \"\"\"\n",
|
||
" appType = \"APP_UYZ0KG6L0CCNV80GZ66O\"\n",
|
||
" systemToken = \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\"\n",
|
||
" userId = \"yida_pub_account\"\n",
|
||
"\n",
|
||
" api = f'https://api.dingtalk.com/v1.0/yida/processes/operationRecords?appType={appType}&systemToken={systemToken}&userId={userId}&language=zh_CN&processInstanceId={processInstanceId}'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": token\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.get(api, headers=headers)\n",
|
||
" # print('获取流程表单的审批记录')\n",
|
||
" return res.json()\n",
|
||
"def read_instances_pt(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_processes(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 instances_id(TOKEN,id):\n",
|
||
" \"\"\" 函数功能:查询表单实例 \"\"\"\n",
|
||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/{id}?appType=APP_UYZ0KG6L0CCNV80GZ66O&systemToken=XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2&userId=yida_pub_account&language=zh_CN'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.get(api, headers=headers)\n",
|
||
"\n",
|
||
" return res.json()\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 component_id(id,TOKEN):\n",
|
||
" api = f'https://api.dingtalk.com/v1.0/yida/processes/instancesInfos/{id}?appType=APP_UYZ0KG6L0CCNV80GZ66O&systemToken=XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2&userId=yida_pub_account&language=zh_CN'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||
" }\n",
|
||
" \n",
|
||
" res = requests.get(api, headers=headers)\n",
|
||
"\n",
|
||
" return res.json()\n",
|
||
"def find_indexes(daichuli_mendian_name,i_two):\n",
|
||
" indexes = [i for i, x in enumerate(daichuli_mendian_name) if x == i_two]\n",
|
||
" return indexes\n",
|
||
"def get_staffID(TOKEN: str,ALL_DATA_staff,staff_name):\n",
|
||
" res_new = [v['formData']['textField_lfrw3u59'] for v in ALL_DATA_staff if v['formData']['textField_lfrw3u58']== staff_name]\n",
|
||
" # print('通过员工名称获取员工id')\n",
|
||
" return res_new\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"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 22,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"读取到流程表中 76 条数据\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"TOKEN = generateToken()\n",
|
||
"form_data = read_instances_pt(token=TOKEN, formUuid=\"FORM-E6766M8103CDA5M3CJ06JDRCLSKV2FJ6Z3CLLA\" , page=1, n=100)\n",
|
||
"PAGES = form_data.get('totalCount')//100 + 1\n",
|
||
"ALL_DATA = []\n",
|
||
"\"\"\" 获取全量数据 \"\"\"\n",
|
||
"for i in range(1, PAGES+1):\n",
|
||
" form_data = read_instances_pt(token=TOKEN, formUuid=\"FORM-E6766M8103CDA5M3CJ06JDRCLSKV2FJ6Z3CLLA\" , page=i, n=100)\n",
|
||
" for data in form_data.get('data'):\n",
|
||
" ALL_DATA.append([data['formData'][\"textField_dv032lp\"],data['formData'][\"textField_cwqfrcq\"],data['formData'][\"textField_qplm0p9\"]+data['formData'][\"textField_wy749n8\"]])\n",
|
||
"print(f'读取到流程表中 {len(ALL_DATA)} 条数据')\n",
|
||
"df_DataFrame = pd.DataFrame(ALL_DATA, columns=[ '优惠券金额', '提前续约优惠', '公司名称门店名称'])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 23,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>优惠券金额</th>\n",
|
||
" <th>提前续约优惠</th>\n",
|
||
" <th>公司名称门店名称</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>青岛山高汽车科技服务有限公司赛轮养车延安三路店</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>600.00</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>顺德汽修顺德汽修</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>800.00</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>天津市红桥区祥三汽车维修中心天津市红桥区祥三汽车维修中心</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>2000.00</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>胜达养车胜达汽车服务</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>600.00</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>瑞安市攸正汽车美容中心瑞安市攸正汽车维修中心</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>71</th>\n",
|
||
" <td>600.00</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>上海天冠汽车服务有限公司知车汇快修连锁(龙飞店)</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>72</th>\n",
|
||
" <td>600.00</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>上海天冠汽车服务有限公司知车汇快修连锁(临江店)</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>73</th>\n",
|
||
" <td>600.00</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>上海天冠汽车服务有限公司知车汇快修连锁(嘉罗店)</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>74</th>\n",
|
||
" <td>600.00</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>上海天冠汽车服务有限公司知车汇快修连锁杨鑫路店</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>75</th>\n",
|
||
" <td>600.00</td>\n",
|
||
" <td>0.00</td>\n",
|
||
" <td>怡邦名车专修中心怡邦汽车维修服务中心</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>76 rows × 3 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" 优惠券金额 提前续约优惠 公司名称门店名称\n",
|
||
"0 0.00 0.00 青岛山高汽车科技服务有限公司赛轮养车延安三路店\n",
|
||
"1 600.00 0.00 顺德汽修顺德汽修\n",
|
||
"2 800.00 0.00 天津市红桥区祥三汽车维修中心天津市红桥区祥三汽车维修中心\n",
|
||
"3 2000.00 0.00 胜达养车胜达汽车服务\n",
|
||
"4 600.00 0.00 瑞安市攸正汽车美容中心瑞安市攸正汽车维修中心\n",
|
||
".. ... ... ...\n",
|
||
"71 600.00 0.00 上海天冠汽车服务有限公司知车汇快修连锁(龙飞店)\n",
|
||
"72 600.00 0.00 上海天冠汽车服务有限公司知车汇快修连锁(临江店)\n",
|
||
"73 600.00 0.00 上海天冠汽车服务有限公司知车汇快修连锁(嘉罗店)\n",
|
||
"74 600.00 0.00 上海天冠汽车服务有限公司知车汇快修连锁杨鑫路店\n",
|
||
"75 600.00 0.00 怡邦名车专修中心怡邦汽车维修服务中心\n",
|
||
"\n",
|
||
"[76 rows x 3 columns]"
|
||
]
|
||
},
|
||
"execution_count": 23,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"\n",
|
||
"row_numbers = df_DataFrame.index[df_DataFrame['公司名称门店名称'] == group_name_org_name].tolist()\n",
|
||
"if len(row_numbers)>0:\n",
|
||
" pandan_new = int(df_DataFrame.loc[row_numbers,'优惠券金额'].values[0]) - int(data_details[\"coupon_amount\"][i])\n",
|
||
" if pandan_new > 0 or df_DataFrame.loc[row_numbers,'优惠券金额'].values[0] == \"0\":\n",
|
||
" formData['textField_llm3mclm'] = df_DataFrame.loc[row_numbers,'提前续约优惠'].values[0] # 提前立减额"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 27,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"row_numbers = df_DataFrame.index[df_DataFrame['公司名称门店名称'] == \"上海天冠汽车服务有限公司知车汇快修连锁杨鑫路店\"].tolist()\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 36,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'0.00'"
|
||
]
|
||
},
|
||
"execution_count": 36,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"df_DataFrame.loc[row_numbers,'提前续约优惠'].values[0]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"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": [
|
||
"# 基础函数配置\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",
|
||
"def read_instances_pt(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(token, formUuid, page, n):\n",
|
||
" \"\"\" 函数功能:读取普通表单的所有数据 \"\"\"\n",
|
||
"\n",
|
||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": token\n",
|
||
" }\n",
|
||
"\n",
|
||
" formData = {\n",
|
||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||
" \"userId\" : \"yida_pub_account\",\n",
|
||
" \"language\" : \"zh_CN\",\n",
|
||
" \"formUuid\" : formUuid,\n",
|
||
" \"currentPage\" : page,\n",
|
||
" \"pageSize\" : n\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.post(api, headers=headers, json=formData)\n",
|
||
" return res.json()\n",
|
||
"\n",
|
||
"def read_delete(token, formInstanceId):\n",
|
||
" \"\"\" 函数功能:调用本接口删除表单数据。 \"\"\"\n",
|
||
"\n",
|
||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": token\n",
|
||
" }\n",
|
||
"\n",
|
||
" formData = {\n",
|
||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||
" \"userId\" : \"yida_pub_account\",\n",
|
||
" \"language\" : \"zh_CN\",\n",
|
||
" \"formInstanceId\" : formInstanceId\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.delete(api, headers=headers, json=formData)\n",
|
||
" return res.json()\n",
|
||
"\n",
|
||
"def read_new(FORMID,formData):\n",
|
||
" \"\"\" 通过实例id 获取表单内容 \"\"\"\n",
|
||
" api = f'https://api.dingtalk.com/v1.0/yida/forms/instances'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||
" }\n",
|
||
" payload = {\n",
|
||
" \"formUuid\" : FORMID,\n",
|
||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||
" \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||
" \"language\" : \"zh_CN\",\n",
|
||
" \"userId\" : \"yida_pub_account\"\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.post(api, headers=headers, json=payload)\n",
|
||
" print(res.json())\n",
|
||
"\n",
|
||
" return res.json()\n",
|
||
"\n",
|
||
"\n",
|
||
"def component(FORMID,TOKEN):\n",
|
||
" \"\"\" 获取组件信息 \"\"\"\n",
|
||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/formFields'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||
" }\n",
|
||
" payload = {\n",
|
||
" \"formUuid\" : FORMID,\n",
|
||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||
" # \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||
" # \"language\" : \"zh_CN\",\n",
|
||
" \"userId\" : \"yida_pub_account\"\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.get(api, headers=headers, json=payload)\n",
|
||
"\n",
|
||
" return res.json()\n",
|
||
"def Batch_creation(FORMID,TOKEN,ALL_formData):\n",
|
||
" \"\"\" 批量新建 \"\"\"\n",
|
||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchSave'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||
" }\n",
|
||
" payload = {\n",
|
||
" # \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
||
" \"noExecuteExpression\" : \"true\",\n",
|
||
" \"formUuid\" : FORMID,\n",
|
||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||
" \"asynchronousExecution\" : \"true\",\n",
|
||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||
" \"keepRunningAfterException\" : \"true\",\n",
|
||
" \"userId\" : \"yida_pub_account\",\n",
|
||
" \"formDataJsonList\" : json.dumps(ALL_formData, cls=NpEncoder),\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.post(api, headers=headers, json=payload)\n",
|
||
" return res.json()\n",
|
||
"\n",
|
||
"def delete_in_batches(FORMID,TOKEN,ALL_DATA_instance):\n",
|
||
" \"\"\" 批量删除表单实例 \"\"\"\n",
|
||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchRemove'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||
" }\n",
|
||
"\n",
|
||
" payload = {\n",
|
||
" \"formUuid\" : FORMID,\n",
|
||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||
" \"asynchronousExecution\" : \"true\",\n",
|
||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||
" \"formInstanceIdList\" : json.dumps(ALL_DATA_instance, cls=NpEncoder),\n",
|
||
" \"userId\" : \"yida_pub_account\",\n",
|
||
" \"executeExpression\" : \"false\" # 不触发\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.post(api, headers=headers, json=payload)\n",
|
||
" return res.json()\n",
|
||
"\n",
|
||
"def delete_in(TOKEN,formInstanceIdList):\n",
|
||
" \"\"\" 逐条删除表单实例 \"\"\"\n",
|
||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances?appType=APP_UYZ0KG6L0CCNV80GZ66O&systemToken=XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2&userId=yida_pub_account&language=zh_CN&formInstanceId={formInstanceIdList}'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||
" }\n",
|
||
" res = requests.delete(api, headers=headers)\n",
|
||
" return res.json()\n",
|
||
"def Retrieve_employee_id(TOKEN,offset):\n",
|
||
" \"\"\" 获取在职员工列表 \"\"\"\n",
|
||
" api = f'https://oapi.dingtalk.com/topapi/smartwork/hrm/employee/queryonjob?access_token={TOKEN}'\n",
|
||
"\n",
|
||
" payload = {\n",
|
||
"\t\"offset\":offset,\n",
|
||
"\t\"size\":50,\n",
|
||
"\t\"status_list\":\"3\"\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.post(api, json=payload)\n",
|
||
" return res.json()\n",
|
||
"\n",
|
||
"def Retrieve_employee_list(TOKEN,userid):\n",
|
||
" \"\"\" 获取员工花名册字段信息 \"\"\"\n",
|
||
" api = f'https://oapi.dingtalk.com/topapi/smartwork/hrm/employee/v2/list?access_token={TOKEN}'\n",
|
||
"\n",
|
||
" payload = {\n",
|
||
"\t\"userid_list\":userid,\n",
|
||
"\t\"field_filter_list\":\"sys00-name\",\n",
|
||
"\t\"agentid\":\"1405052868\"\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.post(api, json=payload)\n",
|
||
" return res.json()\n",
|
||
"\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)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"21230\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",
|
||
"today = datetime.date.today()\n",
|
||
"# 获取当月\n",
|
||
"first_day_of_month = int(today.replace().strftime('%Y%m'))-2\n",
|
||
"\n",
|
||
"# sql语句 建表\n",
|
||
"sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_sales_saas_org_summary_income_m\" WHERE \"pt\" >= '{first_day_of_month}'\"\"\"\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",
|
||
"from decimal import Decimal\n",
|
||
"data_details['version_amount_total'] = data_details['version_amount_total'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['version_amount_saas'] = data_details['version_amount_saas'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['version_amount_other'] = data_details['version_amount_other'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['unversion_amount_total'] = data_details['unversion_amount_total'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['unversion_amount_mngv'] = data_details['unversion_amount_mngv'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['unversion_amount_message'] = data_details['unversion_amount_message'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['irregular_amount_total'] = data_details['irregular_amount_total'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['irregular_amount_activity'] = data_details['irregular_amount_activity'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['irregular_amount_service'] = data_details['irregular_amount_service'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['coupon_amount'] = data_details['coupon_amount'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 17,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"' textField_l556qrj ': data_details[ \"计算年份\" ][i], # \"计算年份\"\n",
|
||
"' textField_ioghzon ': data_details[ \"商户id\" ][i], # \"商户id\"\n",
|
||
"' textField_kr3pc6c ': data_details[ \"门店id\" ][i], # \"门店id\"\n",
|
||
"' textField_sv3xmix ': data_details[ \"门店编码\" ][i], # \"门店编码\"\n",
|
||
"' textField_nk98j1i ': data_details[ \"门店名称\" ][i], # \"门店名称\"\n",
|
||
"' textField_gvdimtj ': data_details[ \"公司id\" ][i], # \"公司id\"\n",
|
||
"' textField_ntc1mqo ': data_details[ \"公司名称\" ][i], # \"公司名称\"\n",
|
||
"' textField_dssu351 ': data_details[ \"公司等级\" ][i], # \"公司等级\"\n",
|
||
"' dateField_hgp5gh8 ': data_details[ \"开户日期\" ][i], # \"开户日期\"\n",
|
||
"' textField_m6wvkhp ': data_details[ \"开户渠道来源\" ][i], # \"开户渠道来源\"\n",
|
||
"' textField_rzrq44v ': data_details[ \"加盟商公司名称\" ][i], # \"加盟商公司名称\"\n",
|
||
"' textField_s8u1211 ': data_details[ \"大区\" ][i], # \"大区\"\n",
|
||
"' textField_bifjpqz ': data_details[ \"小区\" ][i], # \"小区\"\n",
|
||
"' textField_zz547i2 ': data_details[ \"省份\" ][i], # \"省份\"\n",
|
||
"' textField_j86bqku ': data_details[ \"城市\" ][i], # \"城市\"\n",
|
||
"' employeeField_li0304o0 ': data_details[ \"区域经理\" ][i], # \"区域经理\"\n",
|
||
"' employeeField_li0304o1 ': data_details[ \"运营负责人\" ][i], # \"运营负责人\"\n",
|
||
"' employeeField_li0304o2 ': data_details[ \"技术专家\" ][i], # \"技术专家\"\n",
|
||
"' dateField_f7cjejs ': data_details[ \"应续约时间\" ][i], # \"应续约时间\"\n",
|
||
"' textField_4a171yy ': data_details[ \"当前saas版本\" ][i], # \"当前saas版本\"\n",
|
||
"' textField_9cja7t3 ': data_details[ \"经常性_版本收入合计\" ][i], # \"经常性_版本收入合计\"\n",
|
||
"' textField_tdd8vic ': data_details[ \"经常性_版本收入_saas\" ][i], # \"经常性_版本收入_saas\"\n",
|
||
"' textField_yc1liag ': data_details[ \"经常性_版本收入_其他\" ][i], # \"经常性_版本收入_其他\"\n",
|
||
"' textField_sazuktm ': data_details[ \"经常性_非版本收入合计\" ][i], # \"经常性_非版本收入合计\"\n",
|
||
"' textField_dzyddir ': data_details[ \"经常性_非版本收入_企业钱包\" ][i], # \"经常性_非版本收入_企业钱包\"\n",
|
||
"' textField_rimc2k8 ': data_details[ \"经常性_非版本收入_短信\" ][i], # \"经常性_非版本收入_短信\"\n",
|
||
"' textField_whlq8rb ': data_details[ \"非经常性_收入合计\" ][i], # \"非经常性_收入合计\"\n",
|
||
"' textField_jm29spy ': data_details[ \"非经常性_活动广场\" ][i], # \"非经常性_活动广场\"\n",
|
||
"' textField_hf46l34 ': data_details[ \"非经常性_服务包\" ][i], # \"非经常性_服务包\"\n",
|
||
"' textField_pkyoug6 ': data_details[ \"券金额(只做展示用,saas和服务包等已补回券金额)\" ][i], # \"券金额(只做展示用,saas和服务包等已补回券金额)\"\n",
|
||
"' dateField_uwztkat ': data_details[ \"数据处理时间\" ][i], # \"数据处理时间\"\n",
|
||
"' textField_llm3mclm ': data_details[ \"提前立减额\" ][i], # \"提前立减额\"\n",
|
||
"' textField_s6mf0at ': data_details[ \"月分区(存储年初至本月累计分子)\" ][i], # \"月分区(存储年初至本月累计分子)\"\n",
|
||
"读取到流程表中 76 条数据\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"TOKEN = generateToken() \n",
|
||
"'''读取员工对应关系:宜搭员工-ID对应表 '''\n",
|
||
"FORMID = \"FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6\" # 宜搭员工-ID对应表 FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6\n",
|
||
"# 读取流程表单数据\n",
|
||
"form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
|
||
"PAGES = form_data.get('totalCount')//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-GI666T81ZBWAFJZVABUMA80PJSDC2YCOZ20ILZ\"\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",
|
||
"form_data = read_instances_pt(token=TOKEN, formUuid=\"FORM-E6766M8103CDA5M3CJ06JDRCLSKV2FJ6Z3CLLA\" , page=1, n=100)\n",
|
||
"PAGES = form_data.get('totalCount')//100 + 1\n",
|
||
"ALL_DATA = []\n",
|
||
"\"\"\" 获取全量数据 \"\"\"\n",
|
||
"for i in range(1, PAGES+1):\n",
|
||
" form_data = read_instances_pt(token=TOKEN, formUuid=\"FORM-E6766M8103CDA5M3CJ06JDRCLSKV2FJ6Z3CLLA\" , page=i, n=100)\n",
|
||
" for data in form_data.get('data'):\n",
|
||
" ALL_DATA.append([data['formData'][\"textField_dv032lp\"],data['formData'][\"textField_cwqfrcq\"],data['formData'][\"textField_qplm0p9\"]+data['formData'][\"textField_wy749n8\"]])\n",
|
||
"print(f'读取到流程表中 {len(ALL_DATA)} 条数据')\n",
|
||
"df_DataFrame = pd.DataFrame(ALL_DATA, columns=[ '优惠券金额', '提前续约优惠', '公司名称门店名称'])\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[\"year_id\"]),100):\n",
|
||
" ALL_formData = []\n",
|
||
" for i in range(a,a+100): # for i in range(len(data_NGV[\"date_fmt\"])):\n",
|
||
" try:\n",
|
||
" try:\n",
|
||
" if data_details[\"franchise_group_name\"][i] ==\"\":\n",
|
||
" data_details[\"franchise_group_name\"][i] = \"普通SAAS\"\n",
|
||
" except:\n",
|
||
" pass\n",
|
||
" formData = {\n",
|
||
" 'textField_l556qrj':data_details[\"year_id\"][i],#\"year_id\"\n",
|
||
" 'textField_ioghzon':data_details[\"org_crm_id\"][i],#\"org_crm_id\"\n",
|
||
" 'textField_kr3pc6c':data_details[\"org_id\"][i],#\"org_id\"\n",
|
||
" 'textField_sv3xmix':data_details[\"org_code\"][i],#\"org_code\"\n",
|
||
" 'textField_nk98j1i':data_details[\"org_name\"][i],#\"org_name\"\n",
|
||
" 'textField_gvdimtj':data_details[\"group_id\"][i],#\"group_id\"\n",
|
||
" 'textField_ntc1mqo':data_details[\"group_name\"][i],#\"group_name\"\n",
|
||
" 'textField_dssu351':data_details[\"group_grade\"][i],#\"group_grade\"\n",
|
||
" 'dateField_hgp5gh8':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_create_time\"\n",
|
||
" 'textField_m6wvkhp':data_details[\"from_flag_fmt\"][i],#\"from_flag_fmt\"\n",
|
||
" 'textField_rzrq44v':data_details[\"franchise_group_name\"][i],#\"franchise_group_name\"\n",
|
||
" 'textField_s8u1211':data_details[\"region_name\"][i],#\"region_name\"\n",
|
||
" 'textField_bifjpqz':data_details[\"branch_name\"][i],#\"branch_name\"\n",
|
||
" 'textField_zz547i2':data_details[\"province_name\"][i],#\"province_name\"\n",
|
||
" 'textField_j86bqku':data_details[\"city_name\"][i],#\"city_name\"\n",
|
||
" # 'employeeField_li0304o0':ALL_DATA_staff[data_details[\"area_manager\"][i]] if data_details[\"area_manager\"][i] !='' else '',#\"area_manager\"\n",
|
||
" # 'employeeField_li0304o1':ALL_DATA_staff[data_details[\"service_impl_principal\"][i]] if data_details[\"service_impl_principal\"][i] !='' else '',#\"service_impl_principal\"\n",
|
||
" # 'employeeField_li0304o2':ALL_DATA_staff[data_details[\"technician\"][i]] if data_details[\"technician\"][i] !='' else '',#\"technician\"\n",
|
||
" 'dateField_f7cjejs':int(time.mktime(time.strptime(data_details[\"to_renew_time\"][i], \"%Y-%m-%d %H:%M:%S\"))*1000) if data_details[\"to_renew_time\"][i] !='' else '',#\"to_renew_time\"\n",
|
||
" 'textField_4a171yy':data_details[\"saas_edition_fmt\"][i],#\"saas_edition_fmt\"\n",
|
||
" 'textField_9cja7t3':data_details[\"version_amount_total\"][i],#\"version_amount_total\"\n",
|
||
" 'textField_tdd8vic':data_details[\"version_amount_saas\"][i],#\"version_amount_saas\"\n",
|
||
" 'textField_yc1liag':data_details[\"version_amount_other\"][i],#\"version_amount_other\"\n",
|
||
" 'textField_sazuktm':data_details[\"unversion_amount_total\"][i],#\"unversion_amount_total\"\n",
|
||
" 'textField_dzyddir':data_details[\"unversion_amount_mngv\"][i],#\"unversion_amount_mngv\"\n",
|
||
" 'textField_rimc2k8':data_details[\"unversion_amount_message\"][i],#\"unversion_amount_message\"\n",
|
||
" 'textField_whlq8rb':data_details[\"irregular_amount_total\"][i],#\"irregular_amount_total\"\n",
|
||
" 'textField_jm29spy':data_details[\"irregular_amount_activity\"][i],#\"irregular_amount_activity\"\n",
|
||
" 'textField_hf46l34':data_details[\"irregular_amount_service\"][i],#\"irregular_amount_service\"\n",
|
||
" 'textField_pkyoug6':data_details[\"coupon_amount\"][i],#\"coupon_amount\"\n",
|
||
" 'dateField_uwztkat':int(time.mktime(time.strptime(data_details[\"etl_time\"][i], \"%Y-%m-%d %H:%M:%S\"))*1000) if data_details[\"etl_time\"][i] !='' else '',#\"etl_time\"\n",
|
||
" 'textField_s6mf0at':data_details[\"pt\"][i],#\"pt\"\n",
|
||
" 'textField_llm3mclm':\"0\" #\"提前续约优惠\"\n",
|
||
" }\n",
|
||
" try:\n",
|
||
" formData['employeeField_li0304o2'] = ALL_DATA_staff[data_details[\"technician\"][i]]\n",
|
||
" except:\n",
|
||
" formData['employeeField_li0304o2'] = \"\"\n",
|
||
" try:\n",
|
||
" formData['employeeField_li0304o1'] = ALL_DATA_staff[data_details[\"service_impl_principal\"][i]]\n",
|
||
" except:\n",
|
||
" formData['employeeField_li0304o1'] = \"\"\n",
|
||
" try:\n",
|
||
" formData['employeeField_li0304o0'] = ALL_DATA_staff[data_details[\"area_manager\"][i]]\n",
|
||
" except:\n",
|
||
" formData['employeeField_li0304o0'] = \"\"\n",
|
||
" try:\n",
|
||
" group_name_org_name = formData['textField_ntc1mqo'] + formData['textField_nk98j1i']\n",
|
||
" row_numbers = df_DataFrame.index[df_DataFrame['公司名称门店名称'] == group_name_org_name].tolist()\n",
|
||
" if row_numbers[0]>0:\n",
|
||
" pandan_new = int(float(df_DataFrame.loc[row_numbers,'优惠券金额'].values[0])) - int(float(formData['textField_pkyoug6']))\n",
|
||
" if pandan_new > 0 or df_DataFrame.loc[row_numbers,'优惠券金额'].values[0] == \"0\":\n",
|
||
" formData['textField_llm3mclm'] = df_DataFrame.loc[row_numbers[0],'提前续约优惠'].values[0] # 提前续约优惠\n",
|
||
" except:\n",
|
||
" formData['textField_llm3mclm'] = \"0\"\n",
|
||
"\n",
|
||
" ALL_formData.append(json.dumps(formData, cls=NpEncoder)) \n",
|
||
" except:\n",
|
||
" pass"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 33,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"group_name_org_name = \"胜达养车胜达汽车服务\"\n",
|
||
"row_numbers = df_DataFrame.index[df_DataFrame['公司名称门店名称'] == group_name_org_name].tolist()\n",
|
||
"if row_numbers[0]>0:\n",
|
||
" pandan_new = int(float(df_DataFrame.loc[row_numbers,'优惠券金额'].values[0])) - int(float(formData['textField_pkyoug6']))\n",
|
||
" if pandan_new > 0 or df_DataFrame.loc[row_numbers,'优惠券金额'].values[0] == \"0\":\n",
|
||
" formData['textField_llm3mclm'] = df_DataFrame.loc[row_numbers[0],'提前续约优惠'].values[0] # 提前续约优惠"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 41,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"3"
|
||
]
|
||
},
|
||
"execution_count": 41,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"row_numbers[0]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 39,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'0.00'"
|
||
]
|
||
},
|
||
"execution_count": 39,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"df_DataFrame.loc[row_numbers,'提前续约优惠'].values[0]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 22,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"0 青岛山高汽车科技服务有限公司赛轮养车延安三路店\n",
|
||
"1 顺德汽修顺德汽修\n",
|
||
"2 天津市红桥区祥三汽车维修中心天津市红桥区祥三汽车维修中心\n",
|
||
"3 胜达养车胜达汽车服务\n",
|
||
"4 瑞安市攸正汽车美容中心瑞安市攸正汽车维修中心\n",
|
||
" ... \n",
|
||
"71 上海天冠汽车服务有限公司知车汇快修连锁(龙飞店)\n",
|
||
"72 上海天冠汽车服务有限公司知车汇快修连锁(临江店)\n",
|
||
"73 上海天冠汽车服务有限公司知车汇快修连锁(嘉罗店)\n",
|
||
"74 上海天冠汽车服务有限公司知车汇快修连锁杨鑫路店\n",
|
||
"75 怡邦名车专修中心怡邦汽车维修服务中心\n",
|
||
"Name: 公司名称门店名称, Length: 76, dtype: object"
|
||
]
|
||
},
|
||
"execution_count": 22,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"df_DataFrame['公司名称门店名称']"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 7,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"ename": "KeyError",
|
||
"evalue": "21299",
|
||
"output_type": "error",
|
||
"traceback": [
|
||
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
|
||
"\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)",
|
||
"\u001b[1;32mc:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\pandas\\core\\indexes\\range.py\u001b[0m in \u001b[0;36mget_loc\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m 344\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 345\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_range\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnew_key\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 346\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mValueError\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
||
"\u001b[1;31mValueError\u001b[0m: 21299 is not in range",
|
||
"\nThe above exception was the direct cause of the following exception:\n",
|
||
"\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)",
|
||
"\u001b[1;32m<ipython-input-7-7f2c75ce35d3>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mgroup_name_org_name\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdata_details\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"group_name\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0mdata_details\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"org_name\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2\u001b[0m \u001b[0mrow_numbers\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdf_DataFrame\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mdf_DataFrame\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'公司名称门店名称'\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m==\u001b[0m \u001b[0mgroup_name_org_name\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtolist\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mrow_numbers\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m>\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mpandan_new\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdf_DataFrame\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mloc\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mrow_numbers\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m'优惠券金额'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m-\u001b[0m \u001b[0mint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdata_details\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"coupon_amount\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mpandan_new\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;32mor\u001b[0m \u001b[0mdf_DataFrame\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mloc\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mrow_numbers\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m'优惠券金额'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m\"0\"\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
||
"\u001b[1;32mc:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\pandas\\core\\series.py\u001b[0m in \u001b[0;36m__getitem__\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m 1005\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1006\u001b[0m \u001b[1;32melif\u001b[0m \u001b[0mkey_is_scalar\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1007\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_get_value\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1008\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1009\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mis_hashable\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
||
"\u001b[1;32mc:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\pandas\\core\\series.py\u001b[0m in \u001b[0;36m_get_value\u001b[1;34m(self, label, takeable)\u001b[0m\n\u001b[0;32m 1114\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1115\u001b[0m \u001b[1;31m# Similar to Index.get_value, but we do not fall back to positional\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1116\u001b[1;33m \u001b[0mloc\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlabel\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1117\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1118\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mis_integer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mloc\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
||
"\u001b[1;32mc:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\pandas\\core\\indexes\\range.py\u001b[0m in \u001b[0;36mget_loc\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m 345\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_range\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnew_key\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 346\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mValueError\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 347\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0merr\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 348\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mHashable\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 349\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
||
"\u001b[1;31mKeyError\u001b[0m: 21299"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"group_name_org_name = data_details[\"group_name\"][i] + data_details[\"org_name\"][i]\n",
|
||
"row_numbers = df_DataFrame.index[df_DataFrame['公司名称门店名称'] == group_name_org_name].tolist()\n",
|
||
"if len(row_numbers)>0:\n",
|
||
" pandan_new = int(df_DataFrame.loc[row_numbers,'优惠券金额'].values[0]) - int(data_details[\"coupon_amount\"][i])\n",
|
||
" if pandan_new > 0 or df_DataFrame.loc[row_numbers,'优惠券金额'].values[0] == \"0\":\n",
|
||
" formData['textField_llm3mclm'] = df_DataFrame.loc[row_numbers,'提前续约优惠'].values[0] # 提前续约优惠"
|
||
]
|
||
},
|
||
{
|
||
"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": [
|
||
"21433\n",
|
||
"' textField_l556qrj ': data_details[ \"计算年份\" ][i], # \"计算年份\"\n",
|
||
"' textField_ioghzon ': data_details[ \"商户id\" ][i], # \"商户id\"\n",
|
||
"' textField_kr3pc6c ': data_details[ \"门店id\" ][i], # \"门店id\"\n",
|
||
"' textField_sv3xmix ': data_details[ \"门店编码\" ][i], # \"门店编码\"\n",
|
||
"' textField_nk98j1i ': data_details[ \"门店名称\" ][i], # \"门店名称\"\n",
|
||
"' textField_gvdimtj ': data_details[ \"公司id\" ][i], # \"公司id\"\n",
|
||
"' textField_ntc1mqo ': data_details[ \"公司名称\" ][i], # \"公司名称\"\n",
|
||
"' textField_dssu351 ': data_details[ \"公司等级\" ][i], # \"公司等级\"\n",
|
||
"' dateField_hgp5gh8 ': data_details[ \"开户日期\" ][i], # \"开户日期\"\n",
|
||
"' textField_m6wvkhp ': data_details[ \"开户渠道来源\" ][i], # \"开户渠道来源\"\n",
|
||
"' textField_rzrq44v ': data_details[ \"加盟商公司名称\" ][i], # \"加盟商公司名称\"\n",
|
||
"' textField_s8u1211 ': data_details[ \"大区\" ][i], # \"大区\"\n",
|
||
"' textField_bifjpqz ': data_details[ \"小区\" ][i], # \"小区\"\n",
|
||
"' textField_zz547i2 ': data_details[ \"省份\" ][i], # \"省份\"\n",
|
||
"' textField_j86bqku ': data_details[ \"城市\" ][i], # \"城市\"\n",
|
||
"' employeeField_li0304o0 ': data_details[ \"区域经理\" ][i], # \"区域经理\"\n",
|
||
"' employeeField_li0304o1 ': data_details[ \"运营负责人\" ][i], # \"运营负责人\"\n",
|
||
"' employeeField_li0304o2 ': data_details[ \"技术专家\" ][i], # \"技术专家\"\n",
|
||
"' dateField_f7cjejs ': data_details[ \"应续约时间\" ][i], # \"应续约时间\"\n",
|
||
"' textField_4a171yy ': data_details[ \"当前saas版本\" ][i], # \"当前saas版本\"\n",
|
||
"' textField_9cja7t3 ': data_details[ \"经常性_版本收入合计\" ][i], # \"经常性_版本收入合计\"\n",
|
||
"' textField_tdd8vic ': data_details[ \"经常性_版本收入_saas\" ][i], # \"经常性_版本收入_saas\"\n",
|
||
"' textField_yc1liag ': data_details[ \"经常性_版本收入_其他\" ][i], # \"经常性_版本收入_其他\"\n",
|
||
"' textField_sazuktm ': data_details[ \"经常性_非版本收入合计\" ][i], # \"经常性_非版本收入合计\"\n",
|
||
"' textField_dzyddir ': data_details[ \"经常性_非版本收入_企业钱包\" ][i], # \"经常性_非版本收入_企业钱包\"\n",
|
||
"' textField_rimc2k8 ': data_details[ \"经常性_非版本收入_短信\" ][i], # \"经常性_非版本收入_短信\"\n",
|
||
"' textField_whlq8rb ': data_details[ \"非经常性_收入合计\" ][i], # \"非经常性_收入合计\"\n",
|
||
"' textField_jm29spy ': data_details[ \"非经常性_活动广场\" ][i], # \"非经常性_活动广场\"\n",
|
||
"' textField_hf46l34 ': data_details[ \"非经常性_服务包\" ][i], # \"非经常性_服务包\"\n",
|
||
"' textField_pkyoug6 ': data_details[ \"券金额(只做展示用,saas和服务包等已补回券金额)\" ][i], # \"券金额(只做展示用,saas和服务包等已补回券金额)\"\n",
|
||
"' dateField_uwztkat ': data_details[ \"数据处理时间\" ][i], # \"数据处理时间\"\n",
|
||
"' textField_llm3mclm ': data_details[ \"提前立减额\" ][i], # \"提前立减额\"\n",
|
||
"' textField_s6mf0at ': data_details[ \"月分区(存储年初至本月累计分子)\" ][i], # \"月分区(存储年初至本月累计分子)\"\n",
|
||
"读取到流程表中 75 条数据\n",
|
||
"21433\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 5 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 4 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 3 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 3 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 3 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 23 条数据!\n",
|
||
"读取到表单中 84 条数据!\n",
|
||
"读取到表单中 16 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 11 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 3 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 7 条数据!\n",
|
||
"读取到表单中 93 条数据!\n",
|
||
"读取到表单中 7 条数据!\n",
|
||
"读取到表单中 98 条数据!\n",
|
||
"读取到表单中 2 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 94 条数据!\n",
|
||
"读取到表单中 16 条数据!\n",
|
||
"读取到表单中 92 条数据!\n",
|
||
"读取到表单中 8 条数据!\n",
|
||
"读取到表单中 95 条数据!\n",
|
||
"读取到表单中 5 条数据!\n",
|
||
"读取到表单中 98 条数据!\n",
|
||
"读取到表单中 8 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 18 条数据!\n",
|
||
"读取到表单中 97 条数据!\n",
|
||
"读取到表单中 7 条数据!\n",
|
||
"读取到表单中 96 条数据!\n",
|
||
"读取到表单中 4 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 8 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 13 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 12 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 16 条数据!\n",
|
||
"读取到表单中 98 条数据!\n",
|
||
"读取到表单中 2 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 2 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 9 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 3 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 2 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 6 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 5 条数据!\n",
|
||
"读取到表单中 98 条数据!\n",
|
||
"读取到表单中 3 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 3 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 10 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 2 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 9 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 5 条数据!\n",
|
||
"读取到表单中 97 条数据!\n",
|
||
"读取到表单中 6 条数据!\n",
|
||
"读取到表单中 97 条数据!\n",
|
||
"读取到表单中 3 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 25 条数据!\n",
|
||
"读取到表单中 79 条数据!\n",
|
||
"读取到表单中 21 条数据!\n",
|
||
"读取到表单中 91 条数据!\n",
|
||
"读取到表单中 11 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 8 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 16 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"单条删除 FINST-G9C669B1MPSD2BW993K8A8HI8P0W31B8AXWLLL5 数据!\n",
|
||
"10377\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 70 条数据!\n",
|
||
"读取到表单中 32 条数据!\n",
|
||
"读取到表单中 92 条数据!\n",
|
||
"读取到表单中 23 条数据!\n",
|
||
"读取到表单中 94 条数据!\n",
|
||
"读取到表单中 12 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 30 条数据!\n",
|
||
"读取到表单中 97 条数据!\n",
|
||
"读取到表单中 3 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 4 条数据!\n",
|
||
"读取到表单中 97 条数据!\n",
|
||
"读取到表单中 12 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 8 条数据!\n",
|
||
"读取到表单中 96 条数据!\n",
|
||
"读取到表单中 4 条数据!\n",
|
||
"读取到表单中 98 条数据!\n",
|
||
"读取到表单中 2 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 11 条数据!\n",
|
||
"读取到表单中 96 条数据!\n",
|
||
"读取到表单中 4 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 8 条数据!\n",
|
||
"读取到表单中 98 条数据!\n",
|
||
"读取到表单中 8 条数据!\n",
|
||
"读取到表单中 96 条数据!\n",
|
||
"读取到表单中 4 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 12 条数据!\n",
|
||
"读取到表单中 97 条数据!\n",
|
||
"读取到表单中 7 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 8 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 2 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 5 条数据!\n",
|
||
"读取到表单中 96 条数据!\n",
|
||
"读取到表单中 4 条数据!\n",
|
||
"读取到表单中 98 条数据!\n",
|
||
"读取到表单中 2 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 4 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 9 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 4 条数据!\n",
|
||
"单条删除 FINST-9J666XB1IPSD8YWRFXTR28SRVL922FC7YWWLLI5 数据!\n",
|
||
"单条删除 FINST-9J666XB1IPSD8YWRFXTR28SRVL922GC7YWWLL67 数据!\n",
|
||
"单条删除 FINST-9J666XB1IPSD8YWRFXTR28SRVL922FC7YWWLLA6 数据!\n",
|
||
"单条删除 FINST-9J666XB1IPSD8YWRFXTR28SRVL922GC7YWWLLW6 数据!\n",
|
||
"单条删除 FINST-9J666XB1IPSD8YWRFXTR28SRVL922FC7YWWLLA5 数据!\n",
|
||
"单条删除 FINST-9J666XB1IPSD8YWRFXTR28SRVL922FC7YWWLL65 数据!\n",
|
||
"单条删除 FINST-9J666XB1IPSD8YWRFXTR28SRVL922FC7YWWLLW5 数据!\n",
|
||
"单条删除 FINST-9J666XB1IPSD8YWRFXTR28SRVL922FC7YWWLL66 数据!\n",
|
||
"单条删除 FINST-9J666XB1IPSD8YWRFXTR28SRVL922EC7YWWLLN4 数据!\n",
|
||
"单条删除 FINST-9J666XB1IPSD8YWRFXTR28SRVL922FC7YWWLLO5 数据!\n",
|
||
"单条删除 FINST-9J666XB1IPSD8YWRFXTR28SRVL922EC7YWWLLV4 数据!\n",
|
||
"单条删除 FINST-9J666XB1IPSD8YWRFXTR28SRVL922GC7YWWLLP6 数据!\n",
|
||
"单条删除 FINST-9J666XB1IPSD8YWRFXTR28SRVL922FC7YWWLLF5 数据!\n",
|
||
"单条删除 FINST-9J666XB1IPSD8YWRFXTR28SRVL922FC7YWWLLF6 数据!\n",
|
||
"单条删除 FINST-9J666XB1IPSD8YWRFXTR28SRVL922GC7YWWLLX6 数据!\n",
|
||
"单条删除 FINST-9J666XB1IPSD8YWRFXTR28SRVL922GC7YWWLL77 数据!\n",
|
||
"单条删除 FINST-9J666XB1IPSD8YWRFXTR28SRVL922FC7YWWLL76 数据!\n",
|
||
"单条删除 FINST-9J666XB1IPSD8YWRFXTR28SRVL922FC7YWWLL75 数据!\n",
|
||
"单条删除 FINST-9J666XB1IPSD8YWRFXTR28SRVL922EC7YWWLLO4 数据!\n",
|
||
"单条删除 FINST-9J666XB1IPSD8YWRFXTR28SRVL922FC7YWWLLX5 数据!\n",
|
||
"单条删除 FINST-9J666XB1IPSD8YWRFXTR28SRVL922FC7YWWLLX4 数据!\n",
|
||
"单条删除 FINST-9J666XB1IPSD8YWRFXTR28SRVL922EC7YWWLLW4 数据!\n",
|
||
"单条删除 FINST-9J666XB1IPSD8YWRFXTR28SRVL922FC7YWWLLP5 数据!\n",
|
||
"单条删除 FINST-9J666XB1IPSD8YWRFXTR28SRVL922FC7YWWLLG6 数据!\n",
|
||
"单条删除 FINST-9J666XB1IPSD8YWRFXTR28SRVL922GC7YWWLLQ6 数据!\n",
|
||
"单条删除 FINST-9J666XB1IPSD8YWRFXTR28SRVL922FC7YWWLLG5 数据!\n",
|
||
"单条删除 FINST-9J666XB1IPSD8YWRFXTR28SRVL922GC7YWWLL07 数据!\n",
|
||
"单条删除 FINST-9J666XB1IPSD8YWRFXTR28SRVL922GC7YWWLLY6 数据!\n",
|
||
"单条删除 FINST-9J666XB1IPSD8YWRFXTR28SRVL922GC7YWWLL87 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLL57 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLL56 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLV6 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLV5 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC356ZXWWLLB7 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLN6 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLN5 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLE6 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC356ZXWWLL28 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC356ZXWWLLK7 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC356ZXWWLLS7 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC336ZXWWLLH5 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLL46 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLU6 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC356ZXWWLLA7 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLL47 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC356ZXWWLLZ7 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLU5 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLM6 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC356ZXWWLLI7 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLM5 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLD6 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC356ZXWWLL18 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC356ZXWWLLJ7 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC356ZXWWLL97 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC356ZXWWLLR7 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLX6 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLX5 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLL77 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLL76 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC356ZXWWLLH7 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLP6 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLP5 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC356ZXWWLL08 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC356ZXWWLLQ7 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLG6 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC356ZXWWLL88 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC356ZXWWLLY7 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLL67 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLW5 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLL66 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLW6 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC356ZXWWLLG7 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLO5 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLO6 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC356ZXWWLLP7 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLF6 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC356ZXWWLL78 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC356ZXWWLLX7 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLR6 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLR5 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLL96 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC356ZXWWLLF7 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLJ6 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLJ5 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLL17 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLL16 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC356ZXWWLLO7 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLI6 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC356ZXWWLLW7 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLZ6 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLZ5 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLA6 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC356ZXWWLL68 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLQ5 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLL86 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLY6 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLL87 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLL06 数据!\n",
|
||
"单条删除 FINST-CH766981FNSDET8D881DSAMROFUC346ZXWWLLQ6 数据!\n",
|
||
"4931\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 11 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 5 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 4 条数据!\n",
|
||
"读取到表单中 96 条数据!\n",
|
||
"读取到表单中 4 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 4 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 10 条数据!\n",
|
||
"读取到表单中 97 条数据!\n",
|
||
"读取到表单中 3 条数据!\n",
|
||
"读取到表单中 98 条数据!\n",
|
||
"读取到表单中 2 条数据!\n",
|
||
"读取到表单中 98 条数据!\n",
|
||
"读取到表单中 2 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"单条删除 FINST-5OA66G81EOSDWQUGF8M3B51XJPUD2273SWWLLJ5 数据!\n",
|
||
"单条删除 FINST-5OA66G81EOSDWQUGF8M3B51XJPUD2273SWWLLR4 数据!\n",
|
||
"单条删除 FINST-5OA66G81EOSDWQUGF8M3B51XJPUD2273SWWLLR5 数据!\n",
|
||
"单条删除 FINST-5OA66G81EOSDWQUGF8M3B51XJPUD2273SWWLL15 数据!\n",
|
||
"单条删除 FINST-5OA66G81EOSDWQUGF8M3B51XJPUD2273SWWLLZ4 数据!\n",
|
||
"单条删除 FINST-5OA66G81EOSDWQUGF8M3B51XJPUD2373SWWLLG6 数据!\n",
|
||
"单条删除 FINST-5OA66G81EOSDWQUGF8M3B51XJPUD2273SWWLL95 数据!\n",
|
||
"单条删除 FINST-5OA66G81EOSDWQUGF8M3B51XJPUD2373SWWLLO6 数据!\n",
|
||
"单条删除 FINST-5OA66G81EOSDWQUGF8M3B51XJPUD2273SWWLLA5 数据!\n",
|
||
"单条删除 FINST-5OA66G81EOSDWQUGF8M3B51XJPUD2273SWWLLK4 数据!\n",
|
||
"单条删除 FINST-5OA66G81EOSDWQUGF8M3B51XJPUD2273SWWLLK5 数据!\n",
|
||
"单条删除 FINST-5OA66G81EOSDWQUGF8M3B51XJPUD2373SWWLL76 数据!\n",
|
||
"单条删除 FINST-5OA66G81EOSDWQUGF8M3B51XJPUD2373SWWLLX6 数据!\n",
|
||
"单条删除 FINST-5OA66G81EOSDWQUGF8M3B51XJPUD2273SWWLLS4 数据!\n",
|
||
"单条删除 FINST-5OA66G81EOSDWQUGF8M3B51XJPUD2273SWWLLS5 数据!\n",
|
||
"单条删除 FINST-5OA66G81EOSDWQUGF8M3B51XJPUD2273SWWLL25 数据!\n",
|
||
"单条删除 FINST-5OA66G81EOSDWQUGF8M3B51XJPUD2373SWWLLH6 数据!\n",
|
||
"2380\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 51 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 13 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 2 条数据!\n",
|
||
"读取到表单中 98 条数据!\n",
|
||
"读取到表单中 4 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 4 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 4 条数据!\n",
|
||
"读取到表单中 98 条数据!\n",
|
||
"读取到表单中 2 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 1 条数据!\n",
|
||
"读取到表单中 99 条数据!\n",
|
||
"读取到表单中 4 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"单条删除 FINST-TH866OD1LOSD3HG6D5TGOA17WFEW3D7DPWWLL57 数据!\n",
|
||
"1103\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 25 条数据!\n",
|
||
"读取到表单中 98 条数据!\n",
|
||
"读取到表单中 2 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 0 条数据!\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 13 条数据!\n",
|
||
"读取到表单中 97 条数据!\n",
|
||
"读取到表单中 3 条数据!\n",
|
||
"读取到表单中 98 条数据!\n",
|
||
"单条删除 FINST-CH7669817NSDF8CM9JIOT8XGHO932Q3SNWWLLXA 数据!\n",
|
||
"单条删除 FINST-CH7669817NSDF8CM9JIOT8XGHO932Q3SNWWLLP9 数据!\n",
|
||
"464\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"读取到表单中 8 条数据!\n",
|
||
"读取到表单中 98 条数据!\n",
|
||
"读取到表单中 2 条数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3PTBNWWLLYH 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLXF 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLXG 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3PTBNWWLLQH 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3PTBNWWLL0I 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLHH 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLHF 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLHG 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLSF 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLL2H 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3PTBNWWLLXH 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLSG 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLL2G 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3PTBNWWLLPH 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLCG 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLCH 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLKF 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLKG 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLL1G 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLL1H 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLRF 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLRG 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3PTBNWWLLWH 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLL9G 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLL9H 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLZF 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLZG 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3PTBNWWLLOH 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLBH 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLBG 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLJH 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLJF 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLJG 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLUG 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLL4G 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLUF 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLL4H 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3PTBNWWLLVH 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3PTBNWWLLNH 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLEG 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLEH 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLEF 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLMG 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLMF 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLTF 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLTG 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLL3G 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLL3H 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3NTBNWWLLCF 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3PTBNWWLLUH 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLDF 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLDG 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3PTBNWWLLMH 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLDH 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLLF 数据!\n",
|
||
"单条删除 FINST-S6666V91ANSDIIURDWYS0D0NCRLS3OTBNWWLLLG 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A21O3NWWLLW5 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A21O3NWWLL65 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A20O3NWWLLJ3 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A20O3NWWLLJ4 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A21O3NWWLLO5 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A20O3NWWLL14 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A20O3NWWLLR3 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A20O3NWWLLR4 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A21O3NWWLLF5 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A20O3NWWLL94 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A20O3NWWLLZ3 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A20O3NWWLL93 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A20O3NWWLLA4 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A21O3NWWLLW4 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A20O3NWWLLA3 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A21O3NWWLL75 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A20O3NWWLLK3 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A20O3NWWLLK4 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A21O3NWWLLP5 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A20O3NWWLLS3 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A21O3NWWLLH5 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A20O3NWWLL24 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A21O3NWWLLG5 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A21O3NWWLLX4 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A20O3NWWLLB3 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A20O3NWWLLB4 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A20O3NWWLLH3 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A20O3NWWLLH4 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A21O3NWWLLQ5 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A21O3NWWLL05 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A20O3NWWLL74 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A20O3NWWLLP3 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A20O3NWWLLP4 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A21O3NWWLLI5 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A20O3NWWLLX3 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A20O3NWWLL73 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A20O3NWWLLG4 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A21O3NWWLLY4 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A21O3NWWLL85 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A20O3NWWLLI4 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A21O3NWWLLR5 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A21O3NWWLL15 数据!\n",
|
||
"单条删除 FINST-GR666G71KOSDCE8X8TAGE4I6DB2A20O3NWWLLI3 数据!\n",
|
||
"158\n",
|
||
"读取到表单中 100 条数据!\n",
|
||
"61\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLLW2 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLL61 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLL62 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLL63 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873FJVMWWLLH3 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLLE1 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLLE2 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLLE3 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLLM1 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLLM2 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLLV1 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLLV2 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLL51 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLL52 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLL53 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873FJVMWWLLI3 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLLD1 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLLD2 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLLD3 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLLL1 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLLL2 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLLU1 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLLU2 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLL42 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLL43 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873FJVMWWLLJ3 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLLC1 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLLC2 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLLC3 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLL23 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLLK1 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873DJVMWWLL21 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLLK2 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873DJVMWWLLS 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873DJVMWWLL11 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLLT1 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873DJVMWWLLW 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLLT2 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873DJVMWWLLV 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLL32 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873DJVMWWLLU 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLL33 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873DJVMWWLLT 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873DJVMWWLLZ 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873DJVMWWLLY 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873DJVMWWLLX 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLLB1 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLLB2 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLL12 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLL13 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLLJ1 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLLJ2 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873DJVMWWLL01 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLLS1 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLLS2 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLL22 数据!\n",
|
||
"单条删除 FINST-TL7661A16USDV5VSDMWJ77F8BV873EJVMWWLLB3 数据!\n",
|
||
"0\n",
|
||
"0\n",
|
||
"0\n",
|
||
"0\n",
|
||
"0\n",
|
||
"0\n",
|
||
"0\n",
|
||
"0\n",
|
||
"0\n",
|
||
"0\n",
|
||
"新建第 99 条数据!\n",
|
||
"新建第 199 条数据!\n",
|
||
"新建第 299 条数据!\n",
|
||
"新建第 399 条数据!\n",
|
||
"新建第 499 条数据!\n",
|
||
"新建第 599 条数据!\n",
|
||
"新建第 699 条数据!\n",
|
||
"新建第 799 条数据!\n",
|
||
"新建第 899 条数据!\n",
|
||
"新建第 999 条数据!\n",
|
||
"新建第 1099 条数据!\n",
|
||
"新建第 1199 条数据!\n",
|
||
"新建第 1299 条数据!\n",
|
||
"新建第 1399 条数据!\n",
|
||
"新建第 1499 条数据!\n",
|
||
"新建第 1599 条数据!\n",
|
||
"新建第 1699 条数据!\n",
|
||
"新建第 1799 条数据!\n",
|
||
"新建第 1899 条数据!\n",
|
||
"新建第 1999 条数据!\n",
|
||
"新建第 2099 条数据!\n",
|
||
"新建第 2199 条数据!\n",
|
||
"新建第 2299 条数据!\n",
|
||
"新建第 2399 条数据!\n",
|
||
"新建第 2499 条数据!\n",
|
||
"新建第 2599 条数据!\n",
|
||
"新建第 2699 条数据!\n",
|
||
"新建第 2799 条数据!\n",
|
||
"新建第 2899 条数据!\n",
|
||
"新建第 2999 条数据!\n",
|
||
"新建第 3099 条数据!\n",
|
||
"新建第 3199 条数据!\n",
|
||
"新建第 3299 条数据!\n",
|
||
"新建第 3399 条数据!\n",
|
||
"新建第 3499 条数据!\n",
|
||
"新建第 3599 条数据!\n",
|
||
"新建第 3699 条数据!\n",
|
||
"新建第 3799 条数据!\n",
|
||
"新建第 3899 条数据!\n",
|
||
"新建第 3999 条数据!\n",
|
||
"新建第 4099 条数据!\n",
|
||
"新建第 4199 条数据!\n",
|
||
"新建第 4299 条数据!\n",
|
||
"新建第 4399 条数据!\n",
|
||
"新建第 4499 条数据!\n",
|
||
"新建第 4599 条数据!\n",
|
||
"新建第 4699 条数据!\n",
|
||
"新建第 4799 条数据!\n",
|
||
"新建第 4899 条数据!\n",
|
||
"新建第 4999 条数据!\n",
|
||
"新建第 5099 条数据!\n",
|
||
"新建第 5199 条数据!\n",
|
||
"新建第 5299 条数据!\n",
|
||
"新建第 5399 条数据!\n",
|
||
"新建第 5499 条数据!\n",
|
||
"新建第 5599 条数据!\n",
|
||
"新建第 5699 条数据!\n",
|
||
"新建第 5799 条数据!\n",
|
||
"新建第 5899 条数据!\n",
|
||
"新建第 5999 条数据!\n",
|
||
"新建第 6099 条数据!\n",
|
||
"新建第 6199 条数据!\n",
|
||
"新建第 6299 条数据!\n",
|
||
"新建第 6399 条数据!\n",
|
||
"新建第 6499 条数据!\n",
|
||
"新建第 6599 条数据!\n",
|
||
"新建第 6699 条数据!\n",
|
||
"新建第 6799 条数据!\n",
|
||
"新建第 6899 条数据!\n",
|
||
"新建第 6999 条数据!\n",
|
||
"新建第 7099 条数据!\n",
|
||
"新建第 7199 条数据!\n",
|
||
"新建第 7299 条数据!\n",
|
||
"新建第 7399 条数据!\n",
|
||
"新建第 7499 条数据!\n",
|
||
"新建第 7599 条数据!\n",
|
||
"新建第 7699 条数据!\n",
|
||
"新建第 7799 条数据!\n",
|
||
"新建第 7899 条数据!\n",
|
||
"新建第 7999 条数据!\n",
|
||
"新建第 8099 条数据!\n",
|
||
"新建第 8199 条数据!\n",
|
||
"新建第 8299 条数据!\n",
|
||
"新建第 8399 条数据!\n",
|
||
"新建第 8499 条数据!\n",
|
||
"新建第 8599 条数据!\n",
|
||
"新建第 8699 条数据!\n",
|
||
"新建第 8799 条数据!\n",
|
||
"新建第 8899 条数据!\n",
|
||
"新建第 8999 条数据!\n",
|
||
"新建第 9099 条数据!\n",
|
||
"新建第 9199 条数据!\n",
|
||
"新建第 9299 条数据!\n",
|
||
"新建第 9399 条数据!\n",
|
||
"新建第 9499 条数据!\n",
|
||
"新建第 9599 条数据!\n",
|
||
"新建第 9699 条数据!\n",
|
||
"新建第 9799 条数据!\n",
|
||
"新建第 9899 条数据!\n",
|
||
"新建第 9999 条数据!\n",
|
||
"新建第 10099 条数据!\n",
|
||
"新建第 10199 条数据!\n",
|
||
"新建第 10299 条数据!\n",
|
||
"新建第 10399 条数据!\n",
|
||
"新建第 10499 条数据!\n",
|
||
"新建第 10599 条数据!\n",
|
||
"新建第 10699 条数据!\n",
|
||
"新建第 10799 条数据!\n",
|
||
"新建第 10899 条数据!\n",
|
||
"新建第 10999 条数据!\n",
|
||
"新建第 11099 条数据!\n",
|
||
"新建第 11199 条数据!\n",
|
||
"新建第 11299 条数据!\n",
|
||
"新建第 11399 条数据!\n",
|
||
"新建第 11499 条数据!\n",
|
||
"新建第 11599 条数据!\n",
|
||
"新建第 11699 条数据!\n",
|
||
"新建第 11799 条数据!\n",
|
||
"新建第 11899 条数据!\n",
|
||
"新建第 11999 条数据!\n",
|
||
"新建第 12099 条数据!\n",
|
||
"新建第 12199 条数据!\n",
|
||
"新建第 12299 条数据!\n",
|
||
"新建第 12399 条数据!\n",
|
||
"新建第 12499 条数据!\n",
|
||
"新建第 12599 条数据!\n",
|
||
"新建第 12699 条数据!\n",
|
||
"新建第 12799 条数据!\n",
|
||
"新建第 12899 条数据!\n",
|
||
"新建第 12999 条数据!\n",
|
||
"新建第 13099 条数据!\n",
|
||
"新建第 13199 条数据!\n",
|
||
"新建第 13299 条数据!\n",
|
||
"新建第 13399 条数据!\n",
|
||
"新建第 13499 条数据!\n",
|
||
"新建第 13599 条数据!\n",
|
||
"新建第 13699 条数据!\n",
|
||
"新建第 13799 条数据!\n",
|
||
"新建第 13899 条数据!\n",
|
||
"新建第 13999 条数据!\n",
|
||
"新建第 14099 条数据!\n",
|
||
"新建第 14199 条数据!\n",
|
||
"新建第 14299 条数据!\n",
|
||
"新建第 14399 条数据!\n",
|
||
"新建第 14499 条数据!\n",
|
||
"新建第 14599 条数据!\n",
|
||
"新建第 14699 条数据!\n",
|
||
"新建第 14799 条数据!\n",
|
||
"新建第 14899 条数据!\n",
|
||
"新建第 14999 条数据!\n",
|
||
"新建第 15099 条数据!\n",
|
||
"新建第 15199 条数据!\n",
|
||
"新建第 15299 条数据!\n",
|
||
"新建第 15399 条数据!\n",
|
||
"新建第 15499 条数据!\n",
|
||
"新建第 15599 条数据!\n",
|
||
"新建第 15699 条数据!\n",
|
||
"新建第 15799 条数据!\n",
|
||
"新建第 15899 条数据!\n",
|
||
"新建第 15999 条数据!\n",
|
||
"新建第 16099 条数据!\n",
|
||
"新建第 16199 条数据!\n",
|
||
"新建第 16299 条数据!\n",
|
||
"新建第 16399 条数据!\n",
|
||
"新建第 16499 条数据!\n",
|
||
"新建第 16599 条数据!\n",
|
||
"新建第 16699 条数据!\n",
|
||
"新建第 16799 条数据!\n",
|
||
"新建第 16899 条数据!\n",
|
||
"新建第 16999 条数据!\n",
|
||
"新建第 17099 条数据!\n",
|
||
"新建第 17199 条数据!\n",
|
||
"新建第 17299 条数据!\n",
|
||
"新建第 17399 条数据!\n",
|
||
"新建第 17499 条数据!\n",
|
||
"新建第 17599 条数据!\n",
|
||
"新建第 17699 条数据!\n",
|
||
"新建第 17799 条数据!\n",
|
||
"新建第 17899 条数据!\n",
|
||
"新建第 17999 条数据!\n",
|
||
"新建第 18099 条数据!\n",
|
||
"新建第 18199 条数据!\n",
|
||
"新建第 18299 条数据!\n",
|
||
"新建第 18399 条数据!\n",
|
||
"新建第 18499 条数据!\n",
|
||
"新建第 18599 条数据!\n",
|
||
"新建第 18699 条数据!\n",
|
||
"新建第 18799 条数据!\n",
|
||
"新建第 18899 条数据!\n",
|
||
"新建第 18999 条数据!\n",
|
||
"新建第 19099 条数据!\n",
|
||
"新建第 19199 条数据!\n",
|
||
"新建第 19299 条数据!\n",
|
||
"新建第 19399 条数据!\n",
|
||
"新建第 19499 条数据!\n",
|
||
"新建第 19599 条数据!\n",
|
||
"新建第 19699 条数据!\n",
|
||
"新建第 19799 条数据!\n",
|
||
"新建第 19899 条数据!\n",
|
||
"新建第 19999 条数据!\n",
|
||
"新建第 20099 条数据!\n",
|
||
"新建第 20199 条数据!\n",
|
||
"新建第 20299 条数据!\n",
|
||
"新建第 20399 条数据!\n",
|
||
"新建第 20499 条数据!\n",
|
||
"新建第 20599 条数据!\n",
|
||
"新建第 20699 条数据!\n",
|
||
"新建第 20799 条数据!\n",
|
||
"新建第 20899 条数据!\n",
|
||
"新建第 20999 条数据!\n",
|
||
"新建第 21099 条数据!\n",
|
||
"新建第 21199 条数据!\n",
|
||
"新建第 21299 条数据!\n",
|
||
"新建第 21399 条数据!\n",
|
||
"新建第 21499 条数据!\n",
|
||
"数据新建成功!\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",
|
||
"today = datetime.date.today()\n",
|
||
"# 获取当月\n",
|
||
"first_day_of_month = int(today.replace().strftime('%Y%m'))-2\n",
|
||
"\n",
|
||
"# sql语句 建表\n",
|
||
"sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_sales_saas_org_summary_income_m\" WHERE \"pt\" >= '{first_day_of_month}'\"\"\"\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",
|
||
"from decimal import Decimal\n",
|
||
"data_details['version_amount_total'] = data_details['version_amount_total'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['version_amount_saas'] = data_details['version_amount_saas'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['version_amount_other'] = data_details['version_amount_other'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['unversion_amount_total'] = data_details['unversion_amount_total'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['unversion_amount_mngv'] = data_details['unversion_amount_mngv'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['unversion_amount_message'] = data_details['unversion_amount_message'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['irregular_amount_total'] = data_details['irregular_amount_total'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['irregular_amount_activity'] = data_details['irregular_amount_activity'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['irregular_amount_service'] = data_details['irregular_amount_service'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['coupon_amount'] = data_details['coupon_amount'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"# 基础函数配置\n",
|
||
"import pandas as pd\n",
|
||
"import pandas as pd\n",
|
||
"import requests\n",
|
||
"from pathlib import Path\n",
|
||
"from urllib.parse import quote\n",
|
||
"import json\n",
|
||
"import numpy as np\n",
|
||
"import time\n",
|
||
"\n",
|
||
"ROOT = Path('.').absolute() # 当前工作目录\n",
|
||
"\n",
|
||
"def generateToken() -> str:\n",
|
||
" \"\"\" 生成 token \"\"\"\n",
|
||
"\n",
|
||
" token_api = 'https://api.dingtalk.com/v1.0/oauth2/accessToken'\n",
|
||
"\n",
|
||
" # 该信息在钉钉开放应用中\n",
|
||
" data = {\n",
|
||
" \"appKey\": \"ding5kqocon5s9oph5uq\",\n",
|
||
" \"appSecret\": 'HL1jgsIIfLAC0eTH0A1m4mwxUDqbgsiPeCCGGE3ocM6qJBTIW7Ivt9drxF_Z4Kb_'\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.post(token_api, json=data)\n",
|
||
" token = res.json()['accessToken']\n",
|
||
"\n",
|
||
" return token\n",
|
||
"\n",
|
||
"def read_instances(token, formUuid, page, n):\n",
|
||
" \"\"\" 函数功能:读取普通表单的所有数据 \"\"\"\n",
|
||
"\n",
|
||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": token\n",
|
||
" }\n",
|
||
"\n",
|
||
" formData = {\n",
|
||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||
" \"userId\" : \"yida_pub_account\",\n",
|
||
" \"language\" : \"zh_CN\",\n",
|
||
" \"formUuid\" : formUuid,\n",
|
||
" \"currentPage\" : page,\n",
|
||
" \"pageSize\" : n\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.post(api, headers=headers, json=formData)\n",
|
||
" return res.json()\n",
|
||
"\n",
|
||
"def read_delete(token, formInstanceId):\n",
|
||
" \"\"\" 函数功能:调用本接口删除表单数据。 \"\"\"\n",
|
||
"\n",
|
||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": token\n",
|
||
" }\n",
|
||
"\n",
|
||
" formData = {\n",
|
||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||
" \"userId\" : \"yida_pub_account\",\n",
|
||
" \"language\" : \"zh_CN\",\n",
|
||
" \"formInstanceId\" : formInstanceId\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.delete(api, headers=headers, json=formData)\n",
|
||
" return res.json()\n",
|
||
"\n",
|
||
"def read_new(FORMID,formData):\n",
|
||
" \"\"\" 通过实例id 获取表单内容 \"\"\"\n",
|
||
" api = f'https://api.dingtalk.com/v1.0/yida/forms/instances'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||
" }\n",
|
||
" payload = {\n",
|
||
" \"formUuid\" : FORMID,\n",
|
||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||
" \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||
" \"language\" : \"zh_CN\",\n",
|
||
" \"userId\" : \"yida_pub_account\"\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.post(api, headers=headers, json=payload)\n",
|
||
" print(res.json())\n",
|
||
"\n",
|
||
" return res.json()\n",
|
||
"\n",
|
||
"\n",
|
||
"def component(FORMID,TOKEN):\n",
|
||
" \"\"\" 获取组件信息 \"\"\"\n",
|
||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/formFields'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||
" }\n",
|
||
" payload = {\n",
|
||
" \"formUuid\" : FORMID,\n",
|
||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||
" # \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||
" # \"language\" : \"zh_CN\",\n",
|
||
" \"userId\" : \"yida_pub_account\"\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.get(api, headers=headers, json=payload)\n",
|
||
"\n",
|
||
" return res.json()\n",
|
||
"def Batch_creation(FORMID,TOKEN,ALL_formData):\n",
|
||
" \"\"\" 获取组件信息 \"\"\"\n",
|
||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchSave'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||
" }\n",
|
||
" payload = {\n",
|
||
" # \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
||
" \"noExecuteExpression\" : \"true\",\n",
|
||
" \"formUuid\" : FORMID,\n",
|
||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||
" \"asynchronousExecution\" : \"true\",\n",
|
||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||
" \"keepRunningAfterException\" : \"true\",\n",
|
||
" \"userId\" : \"yida_pub_account\",\n",
|
||
" \"formDataJsonList\" : json.dumps(ALL_formData, cls=NpEncoder),\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.post(api, headers=headers, json=payload)\n",
|
||
" return res.json()\n",
|
||
"\n",
|
||
"def delete_in_batches(FORMID,TOKEN,ALL_DATA_instance):\n",
|
||
" \"\"\" 批量删除表单实例 \"\"\"\n",
|
||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchRemove'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||
" }\n",
|
||
"\n",
|
||
" payload = {\n",
|
||
" \"formUuid\" : FORMID,\n",
|
||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||
" \"asynchronousExecution\" : \"true\",\n",
|
||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||
" \"formInstanceIdList\" : json.dumps(ALL_DATA_instance, cls=NpEncoder),\n",
|
||
" \"userId\" : \"yida_pub_account\",\n",
|
||
" \"executeExpression\" : \"false\" # 不触发\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.post(api, headers=headers, json=payload)\n",
|
||
" return res.json()\n",
|
||
"def read_instances_pt(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 delete_in(TOKEN,formInstanceIdList):\n",
|
||
" \"\"\" 逐条删除表单实例 \"\"\"\n",
|
||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances?appType=APP_UYZ0KG6L0CCNV80GZ66O&systemToken=XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2&userId=yida_pub_account&language=zh_CN&formInstanceId={formInstanceIdList}'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||
" }\n",
|
||
" res = requests.delete(api, headers=headers)\n",
|
||
" return res.json()\n",
|
||
"\n",
|
||
"class NpEncoder(json.JSONEncoder):\n",
|
||
" def default(self, obj):\n",
|
||
" if isinstance(obj, np.integer):\n",
|
||
" return int(obj)\n",
|
||
" elif isinstance(obj, np.floating):\n",
|
||
" return float(obj)\n",
|
||
" elif isinstance(obj, np.ndarray):\n",
|
||
" return obj.tolist()\n",
|
||
" else:\n",
|
||
" return super(NpEncoder, self).default(obj)\n",
|
||
"TOKEN = generateToken() \n",
|
||
"'''读取员工对应关系:宜搭员工-ID对应表 '''\n",
|
||
"FORMID = \"FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6\" # 宜搭员工-ID对应表 FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6\n",
|
||
"# 读取流程表单数据\n",
|
||
"form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
|
||
"PAGES = form_data.get('totalCount')//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-GI666T81ZBWAFJZVABUMA80PJSDC2YCOZ20ILZ\"\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",
|
||
"form_data = read_instances_pt(token=TOKEN, formUuid=\"FORM-E6766M8103CDA5M3CJ06JDRCLSKV2FJ6Z3CLLA\" , page=1, n=100)\n",
|
||
"PAGES = form_data.get('totalCount')//100 + 1\n",
|
||
"ALL_DATA = []\n",
|
||
"\"\"\" 获取全量数据 \"\"\"\n",
|
||
"for i in range(1, PAGES+1):\n",
|
||
" form_data = read_instances_pt(token=TOKEN, formUuid=\"FORM-E6766M8103CDA5M3CJ06JDRCLSKV2FJ6Z3CLLA\" , page=i, n=100)\n",
|
||
" for data in form_data.get('data'):\n",
|
||
" ALL_DATA.append([data['formData'][\"textField_dv032lp\"],data['formData'][\"textField_cwqfrcq\"],data['formData'][\"textField_qplm0p9\"]+data['formData'][\"textField_wy749n8\"]])\n",
|
||
"print(f'读取到流程表中 {len(ALL_DATA)} 条数据')\n",
|
||
"df_DataFrame = pd.DataFrame(ALL_DATA, columns=[ '优惠券金额', '提前续约优惠', '公司名称门店名称'])\n",
|
||
"# '''批量删除NGV数据'''\n",
|
||
"for i in range(0,10):\n",
|
||
" default = True\n",
|
||
" while default:\n",
|
||
" FORMID = \"FORM-GI666T81ZBWAFJZVABUMA80PJSDC2YCOZ20ILZ\" \n",
|
||
" form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
|
||
" PAGES = form_data.get('totalCount')//100 +1 \n",
|
||
" print(form_data.get('totalCount'))\n",
|
||
" if form_data.get('totalCount')<=0:\n",
|
||
" default = False\n",
|
||
" for i in range(PAGES, 1,-1):\n",
|
||
" ALL_DATA_instance = []\n",
|
||
" form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
|
||
" for data in form_data.get('data'):\n",
|
||
" ALL_DATA_instance.append(data['formInstanceId'])\n",
|
||
" print(f'读取到表单中 {len(ALL_DATA_instance)} 条数据!')\n",
|
||
" red_delete = delete_in_batches(FORMID,TOKEN,ALL_DATA_instance)\n",
|
||
" form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
|
||
" for data in form_data.get('data'):\n",
|
||
" formInstanceId = data['formInstanceId']\n",
|
||
" delete_in(TOKEN,formInstanceId)\n",
|
||
" print(f'单条删除 {formInstanceId} 数据!')\n",
|
||
"\n",
|
||
"'''遍历数据进行新建'''\n",
|
||
"data_details = data_details.astype('string')\n",
|
||
"data_details = data_details.fillna('',inplace=False)\n",
|
||
"for a in range(0,len(data_details[\"year_id\"]),100):\n",
|
||
" ALL_formData = []\n",
|
||
" for i in range(a,a+100): # for i in range(len(data_NGV[\"date_fmt\"])):\n",
|
||
" try:\n",
|
||
" try:\n",
|
||
" if data_details[\"franchise_group_name\"][i] ==\"\":\n",
|
||
" data_details[\"franchise_group_name\"][i] = \"普通SAAS\"\n",
|
||
" except:\n",
|
||
" pass\n",
|
||
" formData = {\n",
|
||
" 'textField_l556qrj':data_details[\"year_id\"][i],#\"year_id\"\n",
|
||
" 'textField_ioghzon':data_details[\"org_crm_id\"][i],#\"org_crm_id\"\n",
|
||
" 'textField_kr3pc6c':data_details[\"org_id\"][i],#\"org_id\"\n",
|
||
" 'textField_sv3xmix':data_details[\"org_code\"][i],#\"org_code\"\n",
|
||
" 'textField_nk98j1i':data_details[\"org_name\"][i],#\"org_name\"\n",
|
||
" 'textField_gvdimtj':data_details[\"group_id\"][i],#\"group_id\"\n",
|
||
" 'textField_ntc1mqo':data_details[\"group_name\"][i],#\"group_name\"\n",
|
||
" 'textField_dssu351':data_details[\"group_grade\"][i],#\"group_grade\"\n",
|
||
" 'dateField_hgp5gh8':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_create_time\"\n",
|
||
" 'textField_m6wvkhp':data_details[\"from_flag_fmt\"][i],#\"from_flag_fmt\"\n",
|
||
" 'textField_rzrq44v':data_details[\"franchise_group_name\"][i],#\"franchise_group_name\"\n",
|
||
" 'textField_s8u1211':data_details[\"region_name\"][i],#\"region_name\"\n",
|
||
" 'textField_bifjpqz':data_details[\"branch_name\"][i],#\"branch_name\"\n",
|
||
" 'textField_zz547i2':data_details[\"province_name\"][i],#\"province_name\"\n",
|
||
" 'textField_j86bqku':data_details[\"city_name\"][i],#\"city_name\"\n",
|
||
" # 'employeeField_li0304o0':ALL_DATA_staff[data_details[\"area_manager\"][i]] if data_details[\"area_manager\"][i] !='' else '',#\"area_manager\"\n",
|
||
" # 'employeeField_li0304o1':ALL_DATA_staff[data_details[\"service_impl_principal\"][i]] if data_details[\"service_impl_principal\"][i] !='' else '',#\"service_impl_principal\"\n",
|
||
" # 'employeeField_li0304o2':ALL_DATA_staff[data_details[\"technician\"][i]] if data_details[\"technician\"][i] !='' else '',#\"technician\"\n",
|
||
" 'dateField_f7cjejs':int(time.mktime(time.strptime(data_details[\"to_renew_time\"][i], \"%Y-%m-%d %H:%M:%S\"))*1000) if data_details[\"to_renew_time\"][i] !='' else '',#\"to_renew_time\"\n",
|
||
" 'textField_4a171yy':data_details[\"saas_edition_fmt\"][i],#\"saas_edition_fmt\"\n",
|
||
" 'textField_9cja7t3':data_details[\"version_amount_total\"][i],#\"version_amount_total\"\n",
|
||
" 'textField_tdd8vic':data_details[\"version_amount_saas\"][i],#\"version_amount_saas\"\n",
|
||
" 'textField_yc1liag':data_details[\"version_amount_other\"][i],#\"version_amount_other\"\n",
|
||
" 'textField_sazuktm':data_details[\"unversion_amount_total\"][i],#\"unversion_amount_total\"\n",
|
||
" 'textField_dzyddir':data_details[\"unversion_amount_mngv\"][i],#\"unversion_amount_mngv\"\n",
|
||
" 'textField_rimc2k8':data_details[\"unversion_amount_message\"][i],#\"unversion_amount_message\"\n",
|
||
" 'textField_whlq8rb':data_details[\"irregular_amount_total\"][i],#\"irregular_amount_total\"\n",
|
||
" 'textField_jm29spy':data_details[\"irregular_amount_activity\"][i],#\"irregular_amount_activity\"\n",
|
||
" 'textField_hf46l34':data_details[\"irregular_amount_service\"][i],#\"irregular_amount_service\"\n",
|
||
" 'textField_pkyoug6':data_details[\"coupon_amount\"][i],#\"coupon_amount\"\n",
|
||
" 'dateField_uwztkat':int(time.mktime(time.strptime(data_details[\"etl_time\"][i], \"%Y-%m-%d %H:%M:%S\"))*1000) if data_details[\"etl_time\"][i] !='' else '',#\"etl_time\"\n",
|
||
" 'textField_s6mf0at':data_details[\"pt\"][i],#\"pt\"\n",
|
||
" 'textField_llm3mclm':\"0\" #\"提前续约优惠\"\n",
|
||
" }\n",
|
||
" try:\n",
|
||
" formData['employeeField_li0304o2'] = ALL_DATA_staff[data_details[\"technician\"][i]]\n",
|
||
" except:\n",
|
||
" formData['employeeField_li0304o2'] = \"\"\n",
|
||
" try:\n",
|
||
" formData['employeeField_li0304o1'] = ALL_DATA_staff[data_details[\"service_impl_principal\"][i]]\n",
|
||
" except:\n",
|
||
" formData['employeeField_li0304o1'] = \"\"\n",
|
||
" try:\n",
|
||
" formData['employeeField_li0304o0'] = ALL_DATA_staff[data_details[\"area_manager\"][i]]\n",
|
||
" except:\n",
|
||
" formData['employeeField_li0304o0'] = \"\"\n",
|
||
" try:\n",
|
||
" group_name_org_name = formData['textField_ntc1mqo'] + formData['textField_nk98j1i']\n",
|
||
" row_numbers = df_DataFrame.index[df_DataFrame['公司名称门店名称'] == group_name_org_name].tolist()\n",
|
||
" if row_numbers[0]>0:\n",
|
||
" pandan_new = int(float(df_DataFrame.loc[row_numbers,'优惠券金额'].values[0])) - int(float(formData['textField_pkyoug6']))\n",
|
||
" if pandan_new == 0 or df_DataFrame.loc[row_numbers,'优惠券金额'].values[0] == \"0\":\n",
|
||
" formData['textField_llm3mclm'] = df_DataFrame.loc[row_numbers[0],'提前续约优惠'] # 提前续约优惠\n",
|
||
" except:\n",
|
||
" formData['textField_llm3mclm'] = \"0\"\n",
|
||
"\n",
|
||
" ALL_formData.append(json.dumps(formData, cls=NpEncoder)) \n",
|
||
" except:\n",
|
||
" pass\n",
|
||
" FORMID = \"FORM-GI666T81ZBWAFJZVABUMA80PJSDC2YCOZ20ILZ\" \n",
|
||
" res_new = Batch_creation(FORMID,TOKEN,ALL_formData)\n",
|
||
" print(\"新建第\",i,\"条数据!\")\n",
|
||
" time.sleep(10)\n",
|
||
" \n",
|
||
"'''校验是否新建正常'''\n",
|
||
"time.sleep(120)\n",
|
||
"FORMID = \"FORM-GI666T81ZBWAFJZVABUMA80PJSDC2YCOZ20ILZ\" \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 = \"4、年度滚动续费率分子:holo_ads_report_sales_saas_org_summary_income_m 新建条数不正确!\"\n",
|
||
" res_yujing = start_instance_process(TOKEN,name)\n",
|
||
" except:\n",
|
||
" pass"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"21261\n",
|
||
"' textField_l556qrj ': data_details[ \"计算年份\" ][i], # \"计算年份\"\n",
|
||
"' textField_ioghzon ': data_details[ \"商户id\" ][i], # \"商户id\"\n",
|
||
"' textField_kr3pc6c ': data_details[ \"门店id\" ][i], # \"门店id\"\n",
|
||
"' textField_sv3xmix ': data_details[ \"门店编码\" ][i], # \"门店编码\"\n",
|
||
"' textField_nk98j1i ': data_details[ \"门店名称\" ][i], # \"门店名称\"\n",
|
||
"' textField_gvdimtj ': data_details[ \"公司id\" ][i], # \"公司id\"\n",
|
||
"' textField_ntc1mqo ': data_details[ \"公司名称\" ][i], # \"公司名称\"\n",
|
||
"' textField_dssu351 ': data_details[ \"公司等级\" ][i], # \"公司等级\"\n",
|
||
"' dateField_hgp5gh8 ': data_details[ \"开户日期\" ][i], # \"开户日期\"\n",
|
||
"' textField_m6wvkhp ': data_details[ \"开户渠道来源\" ][i], # \"开户渠道来源\"\n",
|
||
"' textField_rzrq44v ': data_details[ \"加盟商公司名称\" ][i], # \"加盟商公司名称\"\n",
|
||
"' textField_s8u1211 ': data_details[ \"大区\" ][i], # \"大区\"\n",
|
||
"' textField_bifjpqz ': data_details[ \"小区\" ][i], # \"小区\"\n",
|
||
"' textField_zz547i2 ': data_details[ \"省份\" ][i], # \"省份\"\n",
|
||
"' textField_j86bqku ': data_details[ \"城市\" ][i], # \"城市\"\n",
|
||
"' employeeField_li0304o0 ': data_details[ \"区域经理\" ][i], # \"区域经理\"\n",
|
||
"' employeeField_li0304o1 ': data_details[ \"运营负责人\" ][i], # \"运营负责人\"\n",
|
||
"' employeeField_li0304o2 ': data_details[ \"技术专家\" ][i], # \"技术专家\"\n",
|
||
"' dateField_f7cjejs ': data_details[ \"应续约时间\" ][i], # \"应续约时间\"\n",
|
||
"' textField_4a171yy ': data_details[ \"当前saas版本\" ][i], # \"当前saas版本\"\n",
|
||
"' textField_9cja7t3 ': data_details[ \"经常性_版本收入合计\" ][i], # \"经常性_版本收入合计\"\n",
|
||
"' textField_tdd8vic ': data_details[ \"经常性_版本收入_saas\" ][i], # \"经常性_版本收入_saas\"\n",
|
||
"' textField_yc1liag ': data_details[ \"经常性_版本收入_其他\" ][i], # \"经常性_版本收入_其他\"\n",
|
||
"' textField_sazuktm ': data_details[ \"经常性_非版本收入合计\" ][i], # \"经常性_非版本收入合计\"\n",
|
||
"' textField_dzyddir ': data_details[ \"经常性_非版本收入_企业钱包\" ][i], # \"经常性_非版本收入_企业钱包\"\n",
|
||
"' textField_rimc2k8 ': data_details[ \"经常性_非版本收入_短信\" ][i], # \"经常性_非版本收入_短信\"\n",
|
||
"' textField_whlq8rb ': data_details[ \"非经常性_收入合计\" ][i], # \"非经常性_收入合计\"\n",
|
||
"' textField_jm29spy ': data_details[ \"非经常性_活动广场\" ][i], # \"非经常性_活动广场\"\n",
|
||
"' textField_hf46l34 ': data_details[ \"非经常性_服务包\" ][i], # \"非经常性_服务包\"\n",
|
||
"' textField_pkyoug6 ': data_details[ \"券金额(只做展示用,saas和服务包等已补回券金额)\" ][i], # \"券金额(只做展示用,saas和服务包等已补回券金额)\"\n",
|
||
"' dateField_uwztkat ': data_details[ \"数据处理时间\" ][i], # \"数据处理时间\"\n",
|
||
"' textField_llm3mclm ': data_details[ \"提前立减额\" ][i], # \"提前立减额\"\n",
|
||
"' textField_s6mf0at ': data_details[ \"月分区(存储年初至本月累计分子)\" ][i], # \"月分区(存储年初至本月累计分子)\"\n",
|
||
"读取到流程表中 75 条数据\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",
|
||
"today = datetime.date.today()\n",
|
||
"# 获取当月\n",
|
||
"first_day_of_month = int(today.replace().strftime('%Y%m'))-2\n",
|
||
"\n",
|
||
"# sql语句 建表\n",
|
||
"sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_sales_saas_org_summary_income_m\" WHERE \"pt\" >= '{first_day_of_month}'\"\"\"\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",
|
||
"from decimal import Decimal\n",
|
||
"data_details['version_amount_total'] = data_details['version_amount_total'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['version_amount_saas'] = data_details['version_amount_saas'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['version_amount_other'] = data_details['version_amount_other'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['unversion_amount_total'] = data_details['unversion_amount_total'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['unversion_amount_mngv'] = data_details['unversion_amount_mngv'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['unversion_amount_message'] = data_details['unversion_amount_message'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['irregular_amount_total'] = data_details['irregular_amount_total'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['irregular_amount_activity'] = data_details['irregular_amount_activity'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['irregular_amount_service'] = data_details['irregular_amount_service'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"data_details['coupon_amount'] = data_details['coupon_amount'].apply(lambda x: float(x) if isinstance(x, Decimal) else x)\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"# 基础函数配置\n",
|
||
"import pandas as pd\n",
|
||
"import pandas as pd\n",
|
||
"import requests\n",
|
||
"from pathlib import Path\n",
|
||
"from urllib.parse import quote\n",
|
||
"import json\n",
|
||
"import numpy as np\n",
|
||
"import time\n",
|
||
"\n",
|
||
"ROOT = Path('.').absolute() # 当前工作目录\n",
|
||
"\n",
|
||
"def generateToken() -> str:\n",
|
||
" \"\"\" 生成 token \"\"\"\n",
|
||
"\n",
|
||
" token_api = 'https://api.dingtalk.com/v1.0/oauth2/accessToken'\n",
|
||
"\n",
|
||
" # 该信息在钉钉开放应用中\n",
|
||
" data = {\n",
|
||
" \"appKey\": \"ding5kqocon5s9oph5uq\",\n",
|
||
" \"appSecret\": 'HL1jgsIIfLAC0eTH0A1m4mwxUDqbgsiPeCCGGE3ocM6qJBTIW7Ivt9drxF_Z4Kb_'\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.post(token_api, json=data)\n",
|
||
" token = res.json()['accessToken']\n",
|
||
"\n",
|
||
" return token\n",
|
||
"\n",
|
||
"def read_instances(token, formUuid, page, n):\n",
|
||
" \"\"\" 函数功能:读取普通表单的所有数据 \"\"\"\n",
|
||
"\n",
|
||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": token\n",
|
||
" }\n",
|
||
"\n",
|
||
" formData = {\n",
|
||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||
" \"userId\" : \"yida_pub_account\",\n",
|
||
" \"language\" : \"zh_CN\",\n",
|
||
" \"formUuid\" : formUuid,\n",
|
||
" \"currentPage\" : page,\n",
|
||
" \"pageSize\" : n\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.post(api, headers=headers, json=formData)\n",
|
||
" return res.json()\n",
|
||
"\n",
|
||
"def read_delete(token, formInstanceId):\n",
|
||
" \"\"\" 函数功能:调用本接口删除表单数据。 \"\"\"\n",
|
||
"\n",
|
||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": token\n",
|
||
" }\n",
|
||
"\n",
|
||
" formData = {\n",
|
||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||
" \"userId\" : \"yida_pub_account\",\n",
|
||
" \"language\" : \"zh_CN\",\n",
|
||
" \"formInstanceId\" : formInstanceId\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.delete(api, headers=headers, json=formData)\n",
|
||
" return res.json()\n",
|
||
"\n",
|
||
"def read_new(FORMID,formData):\n",
|
||
" \"\"\" 通过实例id 获取表单内容 \"\"\"\n",
|
||
" api = f'https://api.dingtalk.com/v1.0/yida/forms/instances'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||
" }\n",
|
||
" payload = {\n",
|
||
" \"formUuid\" : FORMID,\n",
|
||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||
" \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||
" \"language\" : \"zh_CN\",\n",
|
||
" \"userId\" : \"yida_pub_account\"\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.post(api, headers=headers, json=payload)\n",
|
||
" print(res.json())\n",
|
||
"\n",
|
||
" return res.json()\n",
|
||
"\n",
|
||
"\n",
|
||
"def component(FORMID,TOKEN):\n",
|
||
" \"\"\" 获取组件信息 \"\"\"\n",
|
||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/formFields'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||
" }\n",
|
||
" payload = {\n",
|
||
" \"formUuid\" : FORMID,\n",
|
||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||
" # \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||
" # \"language\" : \"zh_CN\",\n",
|
||
" \"userId\" : \"yida_pub_account\"\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.get(api, headers=headers, json=payload)\n",
|
||
"\n",
|
||
" return res.json()\n",
|
||
"def Batch_creation(FORMID,TOKEN,ALL_formData):\n",
|
||
" \"\"\" 获取组件信息 \"\"\"\n",
|
||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchSave'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||
" }\n",
|
||
" payload = {\n",
|
||
" # \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
||
" \"noExecuteExpression\" : \"true\",\n",
|
||
" \"formUuid\" : FORMID,\n",
|
||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||
" \"asynchronousExecution\" : \"true\",\n",
|
||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||
" \"keepRunningAfterException\" : \"true\",\n",
|
||
" \"userId\" : \"yida_pub_account\",\n",
|
||
" \"formDataJsonList\" : json.dumps(ALL_formData, cls=NpEncoder),\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.post(api, headers=headers, json=payload)\n",
|
||
" return res.json()\n",
|
||
"\n",
|
||
"def delete_in_batches(FORMID,TOKEN,ALL_DATA_instance):\n",
|
||
" \"\"\" 批量删除表单实例 \"\"\"\n",
|
||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchRemove'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||
" }\n",
|
||
"\n",
|
||
" payload = {\n",
|
||
" \"formUuid\" : FORMID,\n",
|
||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||
" \"asynchronousExecution\" : \"true\",\n",
|
||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||
" \"formInstanceIdList\" : json.dumps(ALL_DATA_instance, cls=NpEncoder),\n",
|
||
" \"userId\" : \"yida_pub_account\",\n",
|
||
" \"executeExpression\" : \"false\" # 不触发\n",
|
||
" }\n",
|
||
"\n",
|
||
" res = requests.post(api, headers=headers, json=payload)\n",
|
||
" return res.json()\n",
|
||
"def read_instances_pt(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 delete_in(TOKEN,formInstanceIdList):\n",
|
||
" \"\"\" 逐条删除表单实例 \"\"\"\n",
|
||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances?appType=APP_UYZ0KG6L0CCNV80GZ66O&systemToken=XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2&userId=yida_pub_account&language=zh_CN&formInstanceId={formInstanceIdList}'\n",
|
||
"\n",
|
||
" headers = {\n",
|
||
" \"Content-Type\": \"application/json\",\n",
|
||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||
" }\n",
|
||
" res = requests.delete(api, headers=headers)\n",
|
||
" return res.json()\n",
|
||
"\n",
|
||
"class NpEncoder(json.JSONEncoder):\n",
|
||
" def default(self, obj):\n",
|
||
" if isinstance(obj, np.integer):\n",
|
||
" return int(obj)\n",
|
||
" elif isinstance(obj, np.floating):\n",
|
||
" return float(obj)\n",
|
||
" elif isinstance(obj, np.ndarray):\n",
|
||
" return obj.tolist()\n",
|
||
" else:\n",
|
||
" return super(NpEncoder, self).default(obj)\n",
|
||
"TOKEN = generateToken() \n",
|
||
"'''读取员工对应关系:宜搭员工-ID对应表 '''\n",
|
||
"FORMID = \"FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6\" # 宜搭员工-ID对应表 FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6\n",
|
||
"# 读取流程表单数据\n",
|
||
"form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
|
||
"PAGES = form_data.get('totalCount')//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-GI666T81ZBWAFJZVABUMA80PJSDC2YCOZ20ILZ\"\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",
|
||
"form_data = read_instances_pt(token=TOKEN, formUuid=\"FORM-E6766M8103CDA5M3CJ06JDRCLSKV2FJ6Z3CLLA\" , page=1, n=100)\n",
|
||
"PAGES = form_data.get('totalCount')//100 + 1\n",
|
||
"ALL_DATA = []\n",
|
||
"\"\"\" 获取全量数据 \"\"\"\n",
|
||
"for i in range(1, PAGES+1):\n",
|
||
" form_data = read_instances_pt(token=TOKEN, formUuid=\"FORM-E6766M8103CDA5M3CJ06JDRCLSKV2FJ6Z3CLLA\" , page=i, n=100)\n",
|
||
" for data in form_data.get('data'):\n",
|
||
" ALL_DATA.append([data['formData'][\"textField_dv032lp\"],data['formData'][\"textField_cwqfrcq\"],data['formData'][\"textField_qplm0p9\"]+data['formData'][\"textField_wy749n8\"]])\n",
|
||
"print(f'读取到流程表中 {len(ALL_DATA)} 条数据')\n",
|
||
"df_DataFrame = pd.DataFrame(ALL_DATA, columns=[ '优惠券金额', '提前续约优惠', '公司名称门店名称'])\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"data_details = data_details.astype('string')\n",
|
||
"data_details = data_details.fillna('',inplace=False)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 15,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"332"
|
||
]
|
||
},
|
||
"execution_count": 15,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"row_numbers = data_details.index[data_details['org_name'] == \"志丹县奥丰宝汽车保养中心\"].tolist()\n",
|
||
"row_numbers[0]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 16,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"i = row_numbers[0]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 17,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"try:\n",
|
||
" if data_details[\"franchise_group_name\"][i] ==\"\":\n",
|
||
" data_details[\"franchise_group_name\"][i] = \"普通SAAS\"\n",
|
||
"except:\n",
|
||
" pass\n",
|
||
"formData = {\n",
|
||
"'textField_l556qrj':data_details[\"year_id\"][i],#\"year_id\"\n",
|
||
"'textField_ioghzon':data_details[\"org_crm_id\"][i],#\"org_crm_id\"\n",
|
||
"'textField_kr3pc6c':data_details[\"org_id\"][i],#\"org_id\"\n",
|
||
"'textField_sv3xmix':data_details[\"org_code\"][i],#\"org_code\"\n",
|
||
"'textField_nk98j1i':data_details[\"org_name\"][i],#\"org_name\"\n",
|
||
"'textField_gvdimtj':data_details[\"group_id\"][i],#\"group_id\"\n",
|
||
"'textField_ntc1mqo':data_details[\"group_name\"][i],#\"group_name\"\n",
|
||
"'textField_dssu351':data_details[\"group_grade\"][i],#\"group_grade\"\n",
|
||
"'dateField_hgp5gh8':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_create_time\"\n",
|
||
"'textField_m6wvkhp':data_details[\"from_flag_fmt\"][i],#\"from_flag_fmt\"\n",
|
||
"'textField_rzrq44v':data_details[\"franchise_group_name\"][i],#\"franchise_group_name\"\n",
|
||
"'textField_s8u1211':data_details[\"region_name\"][i],#\"region_name\"\n",
|
||
"'textField_bifjpqz':data_details[\"branch_name\"][i],#\"branch_name\"\n",
|
||
"'textField_zz547i2':data_details[\"province_name\"][i],#\"province_name\"\n",
|
||
"'textField_j86bqku':data_details[\"city_name\"][i],#\"city_name\"\n",
|
||
"# 'employeeField_li0304o0':ALL_DATA_staff[data_details[\"area_manager\"][i]] if data_details[\"area_manager\"][i] !='' else '',#\"area_manager\"\n",
|
||
"# 'employeeField_li0304o1':ALL_DATA_staff[data_details[\"service_impl_principal\"][i]] if data_details[\"service_impl_principal\"][i] !='' else '',#\"service_impl_principal\"\n",
|
||
"# 'employeeField_li0304o2':ALL_DATA_staff[data_details[\"technician\"][i]] if data_details[\"technician\"][i] !='' else '',#\"technician\"\n",
|
||
"'dateField_f7cjejs':int(time.mktime(time.strptime(data_details[\"to_renew_time\"][i], \"%Y-%m-%d %H:%M:%S\"))*1000) if data_details[\"to_renew_time\"][i] !='' else '',#\"to_renew_time\"\n",
|
||
"'textField_4a171yy':data_details[\"saas_edition_fmt\"][i],#\"saas_edition_fmt\"\n",
|
||
"'textField_9cja7t3':data_details[\"version_amount_total\"][i],#\"version_amount_total\"\n",
|
||
"'textField_tdd8vic':data_details[\"version_amount_saas\"][i],#\"version_amount_saas\"\n",
|
||
"'textField_yc1liag':data_details[\"version_amount_other\"][i],#\"version_amount_other\"\n",
|
||
"'textField_sazuktm':data_details[\"unversion_amount_total\"][i],#\"unversion_amount_total\"\n",
|
||
"'textField_dzyddir':data_details[\"unversion_amount_mngv\"][i],#\"unversion_amount_mngv\"\n",
|
||
"'textField_rimc2k8':data_details[\"unversion_amount_message\"][i],#\"unversion_amount_message\"\n",
|
||
"'textField_whlq8rb':data_details[\"irregular_amount_total\"][i],#\"irregular_amount_total\"\n",
|
||
"'textField_jm29spy':data_details[\"irregular_amount_activity\"][i],#\"irregular_amount_activity\"\n",
|
||
"'textField_hf46l34':data_details[\"irregular_amount_service\"][i],#\"irregular_amount_service\"\n",
|
||
"'textField_pkyoug6':data_details[\"coupon_amount\"][i],#\"coupon_amount\"\n",
|
||
"'dateField_uwztkat':int(time.mktime(time.strptime(data_details[\"etl_time\"][i], \"%Y-%m-%d %H:%M:%S\"))*1000) if data_details[\"etl_time\"][i] !='' else '',#\"etl_time\"\n",
|
||
"'textField_s6mf0at':data_details[\"pt\"][i],#\"pt\"\n",
|
||
"'textField_llm3mclm':\"0\" #\"提前续约优惠\"\n",
|
||
"}\n",
|
||
"try:\n",
|
||
" formData['employeeField_li0304o2'] = ALL_DATA_staff[data_details[\"technician\"][i]]\n",
|
||
"except:\n",
|
||
" formData['employeeField_li0304o2'] = \"\"\n",
|
||
"try:\n",
|
||
" formData['employeeField_li0304o1'] = ALL_DATA_staff[data_details[\"service_impl_principal\"][i]]\n",
|
||
"except:\n",
|
||
" formData['employeeField_li0304o1'] = \"\"\n",
|
||
"try:\n",
|
||
" formData['employeeField_li0304o0'] = ALL_DATA_staff[data_details[\"area_manager\"][i]]\n",
|
||
"except:\n",
|
||
" formData['employeeField_li0304o0'] = \"\"\n",
|
||
"try:\n",
|
||
" group_name_org_name = formData['textField_ntc1mqo'] + formData['textField_nk98j1i']\n",
|
||
" row_numbers = df_DataFrame.index[df_DataFrame['公司名称门店名称'] == group_name_org_name].tolist()\n",
|
||
" if row_numbers[0]>0:\n",
|
||
" pandan_new = int(float(df_DataFrame.loc[row_numbers,'优惠券金额'].values[0])) - int(float(formData['textField_pkyoug6']))\n",
|
||
" if pandan_new > 0 or df_DataFrame.loc[row_numbers,'优惠券金额'].values[0] == \"0\":\n",
|
||
" formData['textField_llm3mclm'] = df_DataFrame.loc[row_numbers[0],'提前续约优惠'].values[0] # 提前续约优惠\n",
|
||
"except:\n",
|
||
" formData['textField_llm3mclm'] = \"0\""
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 31,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"group_name_org_name = formData['textField_ntc1mqo'] + formData['textField_nk98j1i']\n",
|
||
"row_numbers = df_DataFrame.index[df_DataFrame['公司名称门店名称'] == group_name_org_name].tolist()\n",
|
||
"if row_numbers[0]>0:\n",
|
||
" pandan_new = int(float(df_DataFrame.loc[row_numbers,'优惠券金额'].values[0])) - int(float(formData['textField_pkyoug6']))\n",
|
||
" if pandan_new == 0 or df_DataFrame.loc[row_numbers,'优惠券金额'].values[0] == \"0\":\n",
|
||
" formData['textField_llm3mclm'] = df_DataFrame.loc[row_numbers[0],'提前续约优惠'] # 提前续约优惠"
|
||
]
|
||
}
|
||
],
|
||
"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
|
||
}
|