This commit is contained in:
2026-01-30 11:28:35 +08:00
commit f1831c31b4
399 changed files with 860978 additions and 0 deletions
@@ -0,0 +1,367 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"c:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\numpy\\_distributor_init.py:30: UserWarning: loaded more than 1 DLL from .libs:\n",
"c:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\numpy\\.libs\\libopenblas.EL2C6PLE4ZYW3ECEVIV3OXXGRN2NRFM2.gfortran-win_amd64.dll\n",
"c:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\numpy\\.libs\\libopenblas64__v0.3.21-gcc_10_3_0.dll\n",
" warnings.warn(\"loaded more than 1 DLL from .libs:\"\n"
]
}
],
"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": null,
"metadata": {},
"outputs": [],
"source": [
"TOKEN = generateToken()\n",
"# 26e090dc754f481ea23ca43756f93cbe \n",
"FORMID_two = \"FORM-E6766M8103CDA5M3CJ06JDRCLSKV2FJ6Z3CLLA\" \n",
"# 获取表单数据 ALL_DATA_list\n",
"form_data_two = read_instances_pt(token=TOKEN, formUuid=FORMID_two, page=1, n=100)\n",
"PAGES_two = form_data_two.get('totalCount')//100 + 1\n",
"ALL_DATA_list = []\n",
"for i in range(1, PAGES_two+1):\n",
" form_data_two = read_instances_pt(token=TOKEN, formUuid=FORMID_two, page=i, n=100)\n",
" for data in form_data_two.get('data'):\n",
" ALL_DATA_list.append(data)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# 数据加工 判断哪些数据需要写入值"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 测试------------------------------------"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'creatorUserId': '2268275546837446',\n",
" 'formUuid': 'FORM-E6766M8103CDA5M3CJ06JDRCLSKV2FJ6Z3CLLA',\n",
" 'modifiedTimeGMT': '2023-08-15T17:35Z',\n",
" 'createdTimeGMT': '2023-08-15T17:35Z',\n",
" 'formInstanceId': 'FINST-8G866MC1UB7DDQTHENGNY67766BL2QV7Z3CLLTAD',\n",
" 'originator': {'userName': {'nameInChinese': '曹伟',\n",
" 'nameInEnglish': '曹伟',\n",
" 'type': 'i18n'},\n",
" 'userId': '2268275546837446'},\n",
" 'modelUuid': 'FORM-E6766M8103CDA5M3CJ06JDRCLSKV2FJ6Z3CLLA',\n",
" 'title': '曹伟发起的26e090dc754f481ea23ca43756f93cbe',\n",
" 'instanceValue': '[{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"1690853644099\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_hhttznk\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"青岛山高汽车科技服务有限公司\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_qplm0p9\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"山东省\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_2eih8zi\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"青岛市\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_xfaqbkh\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"市北区\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_w41lcy4\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"赛轮养车延安三路店\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_wy749n8\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"18669858069\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_8o9i7q1\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"SaaS业务\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_q0flynk\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"Saas\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_9smefis\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"Saas续约\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_w84w24w\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"APP\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_90eeqb0\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"续约标准版-门店管理系统\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_wfrdf0q\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"2399.000000\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_bma18z3\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"1.00\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_fbbw9ag\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"2399.00\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_rsytkbj\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"0.00\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_x2puvac\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"0.00\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_dv032lp\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_e8v9u5s\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"0.00\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_ak864dm\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"0.00\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_cwqfrcq\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"2399.00\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_pirg1yu\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"2023-08-01 09:34:04\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_inch47e\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"2023-08-01 09:34:19\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_bf4w86m\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"支付宝\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_vh44f26\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_25kw3om\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"王斌\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_1158nc1\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_40nkuaj\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_0aer7ea\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"已完成\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_8wjmn1q\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"待申请\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_32vncpz\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_tk3zbat\"},{\"componentName\":\"TextField\",\"fieldData\":{\"value\":\"\"},\"fieldDataUpdated\":false,\"fieldId\":\"textField_6mke6vv\"}]',\n",
" 'version': 1,\n",
" 'modifierUserId': '2268275546837446',\n",
" 'modifyUser': {'userName': {'nameInChinese': '曹伟',\n",
" 'nameInEnglish': '曹伟',\n",
" 'type': 'i18n'},\n",
" 'userId': '2268275546837446'},\n",
" 'formData': {'textField_pirg1yu': '2399.00',\n",
" 'textField_bf4w86m': '2023-08-01 09:34:19',\n",
" 'textField_1158nc1': '王斌',\n",
" 'textField_25kw3om': '',\n",
" 'textField_tk3zbat': '',\n",
" 'textField_bma18z3': '2399.000000',\n",
" 'textField_0aer7ea': '',\n",
" 'textField_90eeqb0': 'APP',\n",
" 'textField_wfrdf0q': '续约标准版-门店管理系统',\n",
" 'textField_inch47e': '2023-08-01 09:34:04',\n",
" 'textField_8o9i7q1': '18669858069',\n",
" 'textField_qplm0p9': '青岛山高汽车科技服务有限公司',\n",
" 'textField_rsytkbj': '2399.00',\n",
" 'textField_q0flynk': 'SaaS业务',\n",
" 'textField_cwqfrcq': '0.00',\n",
" 'textField_dv032lp': '0.00',\n",
" 'textField_vh44f26': '支付宝',\n",
" 'textField_8wjmn1q': '已完成',\n",
" 'textField_wy749n8': '赛轮养车延安三路店',\n",
" 'textField_fbbw9ag': '1.00',\n",
" 'textField_6mke6vv': '',\n",
" 'textField_w41lcy4': '市北区',\n",
" 'textField_e8v9u5s': '',\n",
" 'textField_w84w24w': 'Saas续约',\n",
" 'textField_x2puvac': '0.00',\n",
" 'textField_9smefis': 'Saas',\n",
" 'textField_hhttznk': '1690853644099',\n",
" 'textField_40nkuaj': '',\n",
" 'textField_ak864dm': '0.00',\n",
" 'textField_32vncpz': '待申请',\n",
" 'textField_xfaqbkh': '青岛市',\n",
" 'textField_2eih8zi': '山东省'}}"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ALL_DATA_list[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
}