脚本
This commit is contained in:
+178
@@ -0,0 +1,178 @@
|
||||
### Python template
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
|
||||
# C extensions
|
||||
*.so
|
||||
|
||||
# 数据文件
|
||||
*.csv
|
||||
*.xls
|
||||
*.xlsx
|
||||
*.db
|
||||
|
||||
# 环境文件
|
||||
.conda
|
||||
.idea
|
||||
.vscode
|
||||
文件输出
|
||||
|
||||
# Distribution / packaging
|
||||
.Python
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
downloads/
|
||||
eggs/
|
||||
.eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
var/
|
||||
wheels/
|
||||
share/python-wheels/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
MANIFEST
|
||||
|
||||
# PyInstaller
|
||||
# Usually these files are written by a python script from a template
|
||||
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||
*.manifest
|
||||
*.spec
|
||||
|
||||
# Installer logs
|
||||
pip-log.txt
|
||||
pip-delete-this-directory.txt
|
||||
|
||||
# Unit test / coverage reports
|
||||
htmlcov/
|
||||
.tox/
|
||||
.nox/
|
||||
.coverage
|
||||
.coverage.*
|
||||
.cache
|
||||
nosetests.xml
|
||||
coverage.xml
|
||||
*.cover
|
||||
*.py,cover
|
||||
.hypothesis/
|
||||
.pytest_cache/
|
||||
cover/
|
||||
|
||||
# Translations
|
||||
*.mo
|
||||
*.pot
|
||||
|
||||
# Django stuff:
|
||||
*.log
|
||||
local_settings.py
|
||||
db.sqlite3
|
||||
db.sqlite3-journal
|
||||
|
||||
# Flask stuff:
|
||||
instance/
|
||||
.webassets-cache
|
||||
|
||||
# Scrapy stuff:
|
||||
.scrapy
|
||||
|
||||
# Sphinx documentation
|
||||
docs/_build/
|
||||
|
||||
# PyBuilder
|
||||
.pybuilder/
|
||||
target/
|
||||
|
||||
# Jupyter Notebook
|
||||
.ipynb_checkpoints
|
||||
|
||||
# IPython
|
||||
profile_default/
|
||||
ipython_config.py
|
||||
|
||||
# pyenv
|
||||
# For a library or package, you might want to ignore these files since the code is
|
||||
# intended to run in multiple environments; otherwise, check them in:
|
||||
# .python-version
|
||||
|
||||
# pipenv
|
||||
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
||||
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
||||
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
||||
# install all needed dependencies.
|
||||
#Pipfile.lock
|
||||
|
||||
# poetry
|
||||
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
||||
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
||||
# commonly ignored for libraries.
|
||||
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
||||
#poetry.lock
|
||||
|
||||
# pdm
|
||||
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
||||
#pdm.lock
|
||||
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
||||
# in version control.
|
||||
# https://pdm.fming.dev/latest/usage/project/#working-with-version-control
|
||||
.pdm.toml
|
||||
.pdm-python
|
||||
.pdm-build/
|
||||
|
||||
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
||||
__pypackages__/
|
||||
|
||||
# Celery stuff
|
||||
celerybeat-schedule
|
||||
celerybeat.pid
|
||||
|
||||
# SageMath parsed files
|
||||
*.sage.py
|
||||
|
||||
# Environments
|
||||
.env
|
||||
.venv
|
||||
env/
|
||||
venv/
|
||||
ENV/
|
||||
env.bak/
|
||||
venv.bak/
|
||||
|
||||
# Spyder project settings
|
||||
.spyderproject
|
||||
.spyproject
|
||||
|
||||
# Rope project settings
|
||||
.ropeproject
|
||||
|
||||
# mkdocs documentation
|
||||
/site
|
||||
|
||||
# mypy
|
||||
.mypy_cache/
|
||||
.dmypy.json
|
||||
dmypy.json
|
||||
|
||||
# Pyre type checker
|
||||
.pyre/
|
||||
|
||||
# pytype static type analyzer
|
||||
.pytype/
|
||||
|
||||
# Cython debug symbols
|
||||
cython_debug/
|
||||
|
||||
|
||||
|
||||
# PyCharm
|
||||
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
||||
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
||||
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
||||
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
||||
#.idea/
|
||||
|
||||
+232
@@ -0,0 +1,232 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"metadata": {},
|
||||
"cell_type": "markdown",
|
||||
"source": "# 权鉴请求",
|
||||
"id": "531f1a2429f3444a"
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"id": "initial_id",
|
||||
"metadata": {
|
||||
"collapsed": true,
|
||||
"ExecuteTime": {
|
||||
"end_time": "2025-08-04T06:16:16.333259Z",
|
||||
"start_time": "2025-08-04T06:16:16.069427Z"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"import requests\n",
|
||||
"import time\n",
|
||||
"import hashlib\n",
|
||||
"\n",
|
||||
"# 参数\n",
|
||||
"app_id = \"ac331f73-8071-4caa-7b06-84d2f5371a52\"\n",
|
||||
"sid = \"123456789abcdef\"\n",
|
||||
"secret = \"secret-b78b4e07-9310-44ff-749c-367240b5a0f5\" # 这相当于 secret\n",
|
||||
"\n",
|
||||
"# 当前时间戳(秒级)\n",
|
||||
"ts = str(int(time.time()))\n",
|
||||
"\n",
|
||||
"# 生成 sign:SHA-1(salt + secret + ts)\n",
|
||||
"sign_str = sid + secret + ts\n",
|
||||
"sign = hashlib.sha1(sign_str.encode('utf-8')).hexdigest()\n",
|
||||
"\n",
|
||||
"# 构造 URL\n",
|
||||
"url = f\"https://f6car.udesk.cn/ccapi/v2/spnumbers?AppId={app_id}&Timestamp={ts}&Sid={sid}&Sign={sign}\"\n",
|
||||
"\n",
|
||||
"# 发起请求\n",
|
||||
"res = requests.get(url)\n",
|
||||
"print(\"Response:\", res.text)\n",
|
||||
"print(\"Timestamp:\", ts)\n",
|
||||
"print(\"Sign String (raw):\", sign_str)\n",
|
||||
"print(\"Sign (SHA-1):\", sign)"
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Response: <!DOCTYPE html>\n",
|
||||
"<html lang=\"en\">\n",
|
||||
"<head>\n",
|
||||
" <meta charset=\"UTF-8\">\n",
|
||||
" <title>ERROR 404</title>\n",
|
||||
" <meta name=\"baidu-site-verification\" content=\"bfnCTh0lxs\" />\n",
|
||||
" <style>\n",
|
||||
" html,body{height: 100%;margin: 0;padding: 0;min-width: 1024px;font-family: \"Microsoft Yahei\",Tahoma,Arial,STHeiti,sans-serif,\"宋体\";}\n",
|
||||
" .error{position: absolute;top: 50%;left: 50%;width: 1000px;margin-left: -500px;}\n",
|
||||
" body.error-404{min-height: 400px;}\n",
|
||||
" body.error-404 .error{height: 262px;margin-top: -180px;background: url('/assets/error/error-404-bg.png') no-repeat;}\n",
|
||||
" .btn{position: absolute;top: 0;left: 0;width: 130px;height: 46px;color: #fff;font-size: 18px;line-height: 46px;background: #2ea1ca;border-radius: 3px;text-align: center;text-decoration: none;box-shadow: 1px 1px 2px #41899e;}\n",
|
||||
" a:hover{text-decoration: underline;}\n",
|
||||
" .btn1{position: absolute;top: 0;left: 0;width: 130px;height: 46px;color: #fff;font-size: 18px;line-height: 46px;background: #7fb602;border-radius: 3px;text-align: center;text-decoration: none;}\n",
|
||||
" </style>\n",
|
||||
"</head>\n",
|
||||
"<body class=\"error-404\">\n",
|
||||
" <div class=\"error\">\n",
|
||||
" <p style=\"position: absolute;top: 228px;left: 70px;font-size: 18px;color: #002934;\">请下达指示:</p>\n",
|
||||
" <a class=\"btn\" style=\"top: 300px;left: 70px;\" href=\"/\">返回控制台</a>\n",
|
||||
" </div>\n",
|
||||
" <!-- ga -->\n",
|
||||
" <script type=\"text/javascript\">\n",
|
||||
" (function(i, s, o, g, r, a, m) {\n",
|
||||
" i['GoogleAnalyticsObject'] = r;\n",
|
||||
" i[r] = i[r] || function() {\n",
|
||||
" (i[r].q = i[r].q || []).push(arguments)\n",
|
||||
" }, i[r].l = 1 * new Date();\n",
|
||||
" a = s.createElement(o),\n",
|
||||
" m = s.getElementsByTagName(o)[0];\n",
|
||||
" a.async = 1;\n",
|
||||
" a.src = g;\n",
|
||||
" m.parentNode.insertBefore(a, m)\n",
|
||||
" })(window, document, 'script', '/assets/google/analytics.js', 'ga');\n",
|
||||
" (function(ga) {\n",
|
||||
" var r = new RegExp(\"[\\\\?&]client_uuid=([^&#]*)\"),\n",
|
||||
" p = r.exec(location.search);\n",
|
||||
" if (p === null) {\n",
|
||||
" ci = undefined;\n",
|
||||
" } else {\n",
|
||||
" ci = decodeURIComponent(p[1].replace(/\\+/g, \" \"));\n",
|
||||
" }\n",
|
||||
" ga('create', 'UA-69864074-1', {\n",
|
||||
" 'clientId': ci\n",
|
||||
" });\n",
|
||||
" ga('send', 'pageview');\n",
|
||||
" })(ga);\n",
|
||||
" </script>\n",
|
||||
"</body>\n",
|
||||
"</html>\n",
|
||||
"\n",
|
||||
"Timestamp: 1754288176\n",
|
||||
"Sign String (raw): 123456789abcdefsecret-b78b4e07-9310-44ff-749c-367240b5a0f51754288176\n",
|
||||
"Sign (SHA-1): 41c3bf8f1e77436f19d238e9842359db0bfdeacb\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"execution_count": 14
|
||||
},
|
||||
{
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
"end_time": "2025-08-04T06:01:03.742483Z",
|
||||
"start_time": "2025-08-04T06:01:03.452284Z"
|
||||
}
|
||||
},
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"import requests\n",
|
||||
"import time\n",
|
||||
"import hashlib\n",
|
||||
"\n",
|
||||
"# 参数\n",
|
||||
"app_id = \"ac331f73-8071-4caa-7b06-84d2f5371a52\"\n",
|
||||
"sid = \"123456789abcdef\"\n",
|
||||
"secret = \"secret-b78b4e07-9310-44ff-749c-367240b5a0f5\" # 这相当于 secret\n",
|
||||
"\n",
|
||||
"# 当前时间戳(秒级)\n",
|
||||
"ts = str(int(time.time()))\n",
|
||||
"\n",
|
||||
"# 生成 sign:SHA-1(salt + secret + ts)\n",
|
||||
"sign_str = sid + secret + ts\n",
|
||||
"sign = hashlib.sha1(sign_str.encode('utf-8')).hexdigest()\n",
|
||||
"\n",
|
||||
"# 构造 URL\n",
|
||||
"url = f\"https://f6car.udesk.cn/ccapi/v2/agents?AppId={app_id}&Timestamp={ts}&Sid={sid}&Sign={sign}\"\n",
|
||||
"\n",
|
||||
"# 发起请求\n",
|
||||
"res = requests.get(url)\n",
|
||||
"print(\"Response:\", res.text)\n",
|
||||
"print(\"Timestamp:\", ts)\n",
|
||||
"print(\"Sign String (raw):\", sign_str)\n",
|
||||
"print(\"Sign (SHA-1):\", sign)"
|
||||
],
|
||||
"id": "f78184bf27c5ef49",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Response: <!DOCTYPE html>\n",
|
||||
"<html lang=\"en\">\n",
|
||||
"<head>\n",
|
||||
" <meta charset=\"UTF-8\">\n",
|
||||
" <title>ERROR 404</title>\n",
|
||||
" <meta name=\"baidu-site-verification\" content=\"bfnCTh0lxs\" />\n",
|
||||
" <style>\n",
|
||||
" html,body{height: 100%;margin: 0;padding: 0;min-width: 1024px;font-family: \"Microsoft Yahei\",Tahoma,Arial,STHeiti,sans-serif,\"宋体\";}\n",
|
||||
" .error{position: absolute;top: 50%;left: 50%;width: 1000px;margin-left: -500px;}\n",
|
||||
" body.error-404{min-height: 400px;}\n",
|
||||
" body.error-404 .error{height: 262px;margin-top: -180px;background: url('/assets/error/error-404-bg.png') no-repeat;}\n",
|
||||
" .btn{position: absolute;top: 0;left: 0;width: 130px;height: 46px;color: #fff;font-size: 18px;line-height: 46px;background: #2ea1ca;border-radius: 3px;text-align: center;text-decoration: none;box-shadow: 1px 1px 2px #41899e;}\n",
|
||||
" a:hover{text-decoration: underline;}\n",
|
||||
" .btn1{position: absolute;top: 0;left: 0;width: 130px;height: 46px;color: #fff;font-size: 18px;line-height: 46px;background: #7fb602;border-radius: 3px;text-align: center;text-decoration: none;}\n",
|
||||
" </style>\n",
|
||||
"</head>\n",
|
||||
"<body class=\"error-404\">\n",
|
||||
" <div class=\"error\">\n",
|
||||
" <p style=\"position: absolute;top: 228px;left: 70px;font-size: 18px;color: #002934;\">请下达指示:</p>\n",
|
||||
" <a class=\"btn\" style=\"top: 300px;left: 70px;\" href=\"/\">返回控制台</a>\n",
|
||||
" </div>\n",
|
||||
" <!-- ga -->\n",
|
||||
" <script type=\"text/javascript\">\n",
|
||||
" (function(i, s, o, g, r, a, m) {\n",
|
||||
" i['GoogleAnalyticsObject'] = r;\n",
|
||||
" i[r] = i[r] || function() {\n",
|
||||
" (i[r].q = i[r].q || []).push(arguments)\n",
|
||||
" }, i[r].l = 1 * new Date();\n",
|
||||
" a = s.createElement(o),\n",
|
||||
" m = s.getElementsByTagName(o)[0];\n",
|
||||
" a.async = 1;\n",
|
||||
" a.src = g;\n",
|
||||
" m.parentNode.insertBefore(a, m)\n",
|
||||
" })(window, document, 'script', '/assets/google/analytics.js', 'ga');\n",
|
||||
" (function(ga) {\n",
|
||||
" var r = new RegExp(\"[\\\\?&]client_uuid=([^&#]*)\"),\n",
|
||||
" p = r.exec(location.search);\n",
|
||||
" if (p === null) {\n",
|
||||
" ci = undefined;\n",
|
||||
" } else {\n",
|
||||
" ci = decodeURIComponent(p[1].replace(/\\+/g, \" \"));\n",
|
||||
" }\n",
|
||||
" ga('create', 'UA-69864074-1', {\n",
|
||||
" 'clientId': ci\n",
|
||||
" });\n",
|
||||
" ga('send', 'pageview');\n",
|
||||
" })(ga);\n",
|
||||
" </script>\n",
|
||||
"</body>\n",
|
||||
"</html>\n",
|
||||
"\n",
|
||||
"Timestamp: 1754287263\n",
|
||||
"Sign String (raw): 123456789abcdefsecret-b78b4e07-9310-44ff-749c-367240b5a0f51754287263\n",
|
||||
"Sign (SHA-1): dcc90771f98740f723956a94d43bc9821894a677\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"execution_count": 11
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 2
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython2",
|
||||
"version": "2.7.6"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,25 @@
|
||||
import pandas as pd
|
||||
import requests
|
||||
|
||||
cookies_str = 'memberSESSIONID=628612b7-606b-48d0-900a-8fb76fd6f1fa; sensorsdata2015jssdkcross={"distinct_id":"10691192243902595917","first_id":"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0","props":{"$latest_traffic_source_type":"直接流量","$latest_search_keyword":"未取到值_直接打开","$latest_referrer":""},"$device_id":"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0"}; gr_user_id=408fef1a-77ed-4e74-8f1e-31dde3446f2e; prodOrg=10546443563896246051; unp=10546443563896246058; un=10546443563896246058; _up=-NillNN-qyBEJ--t3vnSknvoOFt6yfeJtM4A1Xg3U-FfUvfBopHQjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbrEfoUqYom1gII-vlRv-ZNHu3M-GTZ25y3EXOrq-tWgeIcklLFPhZnrEj95Rm-8c22MyI.; currMenu=客户车辆; sensorsdata2015jssdkcross={"distinct_id":"10546443563896246058","first_id":"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0","props":{"$latest_traffic_source_type":"直接流量","$latest_search_keyword":"未取到值_直接打开","$latest_referrer":""},"$device_id":"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0"}'
|
||||
|
||||
cookies_str = cookies_str.encode('utf-8').decode('latin-1')
|
||||
|
||||
cookie_dict = {item.split('=')[0]: item.split('=')[1]
|
||||
for item in cookies_str.split('; ')}
|
||||
|
||||
headers = {
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40',
|
||||
"Content-Type": "application/json",
|
||||
'origin': 'https://yunxiu.f6car.cn'
|
||||
}
|
||||
|
||||
df = pd.read_excel(r'C:\Users\admin\Desktop\天猫养车手机号匹配.xls')
|
||||
df = df.astype('string')
|
||||
df.drop_duplicates(subset=['客户id'])
|
||||
links = []
|
||||
num = 1
|
||||
for userID in df['客户id']:
|
||||
res = requests.delete(f'https://yunxiu.f6car.cn/member/customer/{userID}',cookies=cookie_dict)
|
||||
num = num + 1
|
||||
print(num,userID,res.text)
|
||||
@@ -0,0 +1,256 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"打印出响应信息: {\"code\":200,\"data\":{\"accId\":\"\",\"applyModel\":\"\",\"brand\":\"品牌\",\"brandId\":\"212\",\"categoryName\":\"维修配件-其它\",\"chain\":1,\"channel\":\"\",\"creationTime\":\"2022-01-18 09:15:52\",\"creatorName\":\"曹伟\",\"customCode\":\"CL0000001\",\"defSeat\":\"\",\"errorMsg\":\"\",\"finalSellPrice\":0.00,\"groupId\":null,\"headquarterGroupId\":null,\"headquarterInfoId\":null,\"idMdmPart\":\"\",\"idOwnOrg\":\"11240984669917217520\",\"idPartCategory\":\"14438164991364920793\",\"infoId\":\"14582097882896378201\",\"isDel\":0,\"isSourcePartId\":null,\"itemId\":\"\",\"labelId\":\"1297423\",\"labelName\":\"维修\",\"lastPurchasePrice\":null,\"manageStatus\":0,\"memo\":\"\",\"modifiedTime\":\"2022-03-08 13:54:33\",\"modifierName\":\"曹伟\",\"moduleType\":0,\"name\":\"测试材料名称2\",\"newPartId\":null,\"oe\":\"\",\"partBarCodeVos\":null,\"partCategoryAmountVos\":null,\"partId\":1016814095,\"partInfoImageVoList\":null,\"partPriceRuleResponse\":null,\"pkId\":\"14582097882896378201\",\"priceBenchmark\":null,\"priceMode\":0,\"priceRate\":null,\"purchasePrice\":0.0,\"safeStock\":0.0,\"sellPrice\":0.0,\"sellPurchaseStatus\":2,\"showName\":\"测试材料名称2 品牌 测试规格型号 (测试)\",\"skuId\":null,\"spec\":\"测试规格型号\",\"standard\":\"\",\"status\":0,\"stockNumber\":null,\"supplierCode\":\"测试\",\"supplierId\":null,\"supplierName\":\"\",\"taxRateOutput\":0.13,\"tmallId\":null,\"tmallSkuId\":null,\"transferPrice\":0.0,\"unit\":\"个\",\"universalGroupCode\":\"\",\"universalGroupDetailId\":null,\"universalGroupDetailLevel\":null,\"universalGroupId\":null,\"uspuId\":\"\",\"validityPeriod\":\"\"},\"message\":\"SUCCESS\"}\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"import time\n",
|
||||
"import requests\n",
|
||||
"import json\n",
|
||||
"\n",
|
||||
"cookies_str = 'f6-ids-goodsSESSIONID=374257af-49bd-4761-a0e9-80943cf8cc43; gr_user_id=408fef1a-77ed-4e74-8f1e-31dde3446f2e; prodOrg=11240984669917217520; unp=15503028824961978372; _up=-NillNN-qyBEJ--t3vnSknvoOF56zfKNssUN0X82XOZUUfnCoJvQjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbrEPUXoYsi0QEE-_VRv-ZNHu3M-GTc25iyFXWgpu9RgO0bmVHLPRRtrEj9nBi9_Mu2cQM.; sensorsdata2015jssdkcross={\"distinct_id\":\"15503028824961978372\",\"first_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\",\"props\":{\"$latest_traffic_source_type\":\"直接流量\",\"$latest_search_keyword\":\"未取到值_直接打开\",\"$latest_referrer\":\"\"},\"$device_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\"}'\n",
|
||||
"\n",
|
||||
"cookies_str = cookies_str.encode('utf-8').decode('latin-1')\n",
|
||||
"\n",
|
||||
"cookie_dict = {item.split('=')[0]: item.split('=')[1]\n",
|
||||
" for item in cookies_str.split('; ')}\n",
|
||||
"\n",
|
||||
"headers = {\n",
|
||||
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40',\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" 'origin': 'https://yunxiu.f6car.cn'\n",
|
||||
"}\n",
|
||||
"#get材料属性\n",
|
||||
"url = 'https://ids-goods.f6car.cn/f6-ids-goods/part/getPartInfo?partId=1016814095'\n",
|
||||
"res = requests.get(url,cookies=cookie_dict)\n",
|
||||
"print(\"打印出响应信息:\",res.text)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"{'accId': '', 'applyModel': '', 'brand': '品牌', 'brandId': '212', 'categoryName': '维修配件-其它', 'chain': 1, 'channel': '', 'creationTime': '2022-01-18 09:15:52', 'creatorName': '曹伟', 'customCode': 'CL0000001', 'defSeat': '', 'errorMsg': '', 'finalSellPrice': 0.0, 'groupId': None, 'headquarterGroupId': None, 'headquarterInfoId': None, 'idMdmPart': '', 'idOwnOrg': '11240984669917217520', 'idPartCategory': '14438164991364920793', 'infoId': '14582097882896378201', 'isDel': 0, 'isSourcePartId': None, 'itemId': '', 'labelId': '1297423', 'labelName': '维修', 'lastPurchasePrice': None, 'manageStatus': 0, 'memo': '', 'modifiedTime': '2022-03-08 13:59:15', 'modifierName': '曹伟', 'moduleType': 0, 'name': '测试材料名称2', 'newPartId': None, 'oe': '', 'partBarCodeVos': None, 'partCategoryAmountVos': None, 'partId': 1016814095, 'partInfoImageVoList': None, 'partPriceRuleResponse': None, 'pkId': '14582097882896378201', 'priceBenchmark': None, 'priceMode': 0, 'priceRate': None, 'purchasePrice': 0.0, 'safeStock': 0.0, 'sellPrice': 0.0, 'sellPurchaseStatus': 2, 'showName': '测试材料名称2 品牌 测试规格型号 (测试)', 'skuId': None, 'spec': '测试规格型号', 'standard': '', 'status': 0, 'stockNumber': None, 'supplierCode': 'caowei', 'supplierId': None, 'supplierName': '', 'taxRateOutput': 0.13, 'tmallId': None, 'tmallSkuId': None, 'transferPrice': 0.0, 'unit': '个', 'universalGroupCode': '', 'universalGroupDetailId': None, 'universalGroupDetailLevel': None, 'universalGroupId': None, 'uspuId': '', 'validityPeriod': ''}\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"strele = res.text[19:-21]\n",
|
||||
"pastebin_url_json = json.loads(strele)\n",
|
||||
"pastebin_url_json['supplierCode'] = \"caowei\"\n",
|
||||
"pastebin_url_json_1 = pastebin_url_json['supplierCode']\n",
|
||||
"print(pastebin_url_json)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"{\"code\":200,\"data\":{\"accId\":\"\",\"applyModel\":\"\",\"brand\":\"品牌\",\"brandId\":\"212\",\"categoryName\":\"维修配件-其它\",\"chain\":1,\"channel\":\"\",\"creationTime\":\"2022-01-18 09:15:52\",\"creatorName\":\"曹伟\",\"customCode\":\"CL0000001\",\"defSeat\":\"\",\"errorMsg\":\"\",\"finalSellPrice\":0.00,\"groupId\":null,\"headquarterGroupId\":null,\"headquarterInfoId\":null,\"idMdmPart\":\"\",\"idOwnOrg\":\"11240984669917217520\",\"idPartCategory\":\"14438164991364920793\",\"infoId\":\"14582097882896378201\",\"isDel\":0,\"isSourcePartId\":null,\"itemId\":\"\",\"labelId\":\"1297423\",\"labelName\":\"维修\",\"lastPurchasePrice\":null,\"manageStatus\":0,\"memo\":\"\",\"modifiedTime\":\"2022-03-08 13:59:25\",\"modifierName\":\"曹伟\",\"moduleType\":0,\"name\":\"测试材料名称2\",\"newPartId\":null,\"oe\":\"\",\"partBarCodeVos\":null,\"partCategoryAmountVos\":null,\"partId\":1016814095,\"partInfoImageVoList\":null,\"partPriceRuleResponse\":null,\"pkId\":\"14582097882896378201\",\"priceBenchmark\":null,\"priceMode\":0,\"priceRate\":null,\"purchasePrice\":0.0,\"safeStock\":0.0,\"sellPrice\":0.0,\"sellPurchaseStatus\":2,\"showName\":\"测试材料名称2 品牌 测试规格型号 (caowei)\",\"skuId\":null,\"spec\":\"测试规格型号\",\"standard\":\"\",\"status\":0,\"stockNumber\":null,\"supplierCode\":\"caowei\",\"supplierId\":null,\"supplierName\":\"\",\"taxRateOutput\":0.13,\"tmallId\":null,\"tmallSkuId\":null,\"transferPrice\":0.0,\"unit\":\"个\",\"universalGroupCode\":\"\",\"universalGroupDetailId\":null,\"universalGroupDetailLevel\":null,\"universalGroupId\":null,\"uspuId\":\"\",\"validityPeriod\":\"\"},\"message\":\"SUCCESS\"}\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"import time\n",
|
||||
"import requests\n",
|
||||
"import json\n",
|
||||
"\n",
|
||||
"cookies_str = 'hiveSESSIONID=7b4b3c13-2518-48b6-8aa4-e0952d270394; sensorsdata2015jssdkcross={\"distinct_id\":\"10691192243902595917\",\"first_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\",\"props\":{\"$latest_traffic_source_type\":\"直接流量\",\"$latest_search_keyword\":\"未取到值_直接打开\",\"$latest_referrer\":\"\"},\"$device_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\"}; gr_user_id=408fef1a-77ed-4e74-8f1e-31dde3446f2e; prodOrg=11240984669917217520; unp=15503028824961978372; un=15503028824961978372; _up=-NillNN-qyBEJ--t3vnSknvoOF56zfKNssUN0X82XOZUUfnCoJvQjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbrEPUTqIMn0wcN_fBRv-ZNHu3M-GTc25iyFXWgpu9RgO0bmVHLPRRtrEj94nvl9sC4Mys.; currMenu=客户车辆; sensorsdata2015jssdkcross={\"distinct_id\":\"15503028824961978372\",\"first_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\",\"props\":{\"$latest_traffic_source_type\":\"直接流量\",\"$latest_search_keyword\":\"未取到值_直接打开\",\"$latest_referrer\":\"\"},\"$device_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\"}'\n",
|
||||
"cookies_str = cookies_str.encode('utf-8').decode('latin-1')\n",
|
||||
"\n",
|
||||
"cookie_dict = {item.split('=')[0]: item.split('=')[1]\n",
|
||||
" for item in cookies_str.split('; ')}\n",
|
||||
"\n",
|
||||
"headers = {\n",
|
||||
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40',\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" 'origin': 'https://yunxiu.f6car.cn'\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"#修改值读取\n",
|
||||
"res = requests.post(f'https://ids-goods.f6car.cn/f6-ids-goods/part/updatePartInfo', headers=headers,\n",
|
||||
" cookies=cookie_dict, json=pastebin_url_json)\n",
|
||||
"print(res.text)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"'''#材料属性明细\n",
|
||||
" data = {\n",
|
||||
" \"accId\": \"\",\n",
|
||||
" \"applyModel\": \"适用车型\",#适用车型\n",
|
||||
" \"brand\": \"倍耐力\",#品牌\n",
|
||||
" \"brandId\": \"203\",#品牌识别\n",
|
||||
" \"categoryName\": \"轮胎\",#材料分类\n",
|
||||
" \"chain\": 1,\n",
|
||||
" \"channel\": \"\",\n",
|
||||
" \"creationTime\": \"2022-01-22 16:09:00\",#创建时间\n",
|
||||
" \"creatorName\": \"曹伟\",#创建人\n",
|
||||
" \"customCode\": \"CL0000003\",#材料编码\n",
|
||||
" \"defSeat\": \"\",\n",
|
||||
" \"errorMsg\": \"\",\n",
|
||||
" \"finalSellPrice\": 222,#参考销售价\n",
|
||||
" \"groupId\": \"\",\n",
|
||||
" \"headquarterGroupId\": \"\",\n",
|
||||
" \"headquarterInfoId\": \"\",\n",
|
||||
" \"idMdmPart\": \"1149460\",\n",
|
||||
" \"idOwnOrg\": \"11240984669917217520\",#门店id\n",
|
||||
" \"idPartCategory\": \"14438164991364920801\",\n",
|
||||
" \"infoId\": \"14582097882897530818\",\n",
|
||||
" \"isDel\": 0,\n",
|
||||
" \"isSourcePartId\": \"\",\n",
|
||||
" \"itemId\": \"\",\n",
|
||||
" \"labelId\": \"1297424\",\n",
|
||||
" \"labelName\": \"保养\",#业务分类\n",
|
||||
" \"lastPurchasePrice\": \"\",\n",
|
||||
" \"manageStatus\": 0,\n",
|
||||
" \"memo\": \"\",\n",
|
||||
" \"modifiedTime\": \"2022-03-02 14:47:25\",#更新时间\n",
|
||||
" \"modifierName\": \"曹伟\",#修改人\n",
|
||||
" \"moduleType\": 0,\n",
|
||||
" \"name\": \"255/55R20 Scorpion Verde All Season 110Y1\",#材料名称\n",
|
||||
" \"newPartId\": \"\",\n",
|
||||
" \"oe\": \"oe码\",#oe码\n",
|
||||
" \"partBarCodeVos\": \"\",\n",
|
||||
" \"partCategoryAmountVos\": \"\",\n",
|
||||
" \"partId\": {nameid},#材料id\n",
|
||||
" \"partInfoImageVoList\": \"\",\n",
|
||||
" \"partPriceRuleResponse\": \"\",\n",
|
||||
" \"pkId\": \"14582097882897530818\",\n",
|
||||
" \"priceBenchmark\": \"\",\n",
|
||||
" \"priceMode\": 0,\n",
|
||||
" \"priceRate\": \"\",\n",
|
||||
" \"purchasePrice\": 111,#参考采购价\n",
|
||||
" \"safeStock\": 0,\n",
|
||||
" \"sellPrice\": 222,#参考销售价\n",
|
||||
" \"sellPurchaseStatus\": 2,\n",
|
||||
" \"showName\": \"255/55R20 Scorpion Verde All Season 110Y 倍耐力 规格型号 (BNL2555520-Fa)\",\n",
|
||||
" \"skuId\": \"\",\n",
|
||||
" \"spec\": {xiugai},#规格型号\n",
|
||||
" \"standard\": \"\",\n",
|
||||
" \"status\": 0,\n",
|
||||
" \"stockNumber\": \"\",\n",
|
||||
" \"supplierCode\": \"BNL2555520-Fa\",#零件号\n",
|
||||
" \"supplierId\": \"\",\n",
|
||||
" \"supplierName\": \"\",\n",
|
||||
" \"taxRateOutput\": 0.13,#税率\n",
|
||||
" \"tmallId\": \"\",\n",
|
||||
" \"tmallSkuId\": \"\",\n",
|
||||
" \"transferPrice\": 0,\n",
|
||||
" \"unit\": \"条\",#单位\n",
|
||||
" \"universalGroupCode\": \"\",\n",
|
||||
" \"universalGroupDetailId\": \"\",\n",
|
||||
" \"universalGroupDetailLevel\": \"\",\n",
|
||||
" \"universalGroupId\": \"\",\n",
|
||||
" \"uspuId\": \"\",\n",
|
||||
" \"validityPeriod\": \"\"\n",
|
||||
" }\n",
|
||||
"'''"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 14,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"表数据的行数为2,列数为2\n",
|
||||
"1050177984 {\"code\":200,\"data\":{\"accId\":\"\",\"applyModel\":\"大众捷达\",\"brand\":\"博世\",\"brandId\":\"218\",\"categoryName\":\"刹车片\",\"chain\":1,\"channel\":\"\",\"creationTime\":\"2022-05-13 14:07:42\",\"creatorName\":\"曹伟\",\"customCode\":\"CL0000019\",\"defSeat\":\"\",\"errorMsg\":\"\",\"finalSellPrice\":2650.00,\"groupId\":null,\"headquarterGroupId\":null,\"headquarterInfoId\":null,\"idMdmPart\":\"000001\",\"idOwnOrg\":\"11240984669917217520\",\"idPartCategory\":\"14438164991364920777\",\"infoId\":\"14582097882908443102\",\"isDel\":0,\"isSourcePartId\":null,\"itemId\":\"\",\"labelId\":\"1297423\",\"labelName\":\"维修\",\"lastPurchasePrice\":null,\"manageStatus\":0,\"memo\":\"\",\"modifiedTime\":\"2022-05-23 16:50:48\",\"modifierName\":\"曹伟\",\"moduleType\":0,\"name\":\"前刹车片\",\"newPartId\":null,\"oe\":\"191698151K,191698151J,191608151H,191698151D,19198151C,1H0698151\",\"partBarCodeVos\":null,\"partCategoryAmountVos\":null,\"partId\":1050177984,\"partInfoImageVoList\":null,\"partPriceRuleResponse\":null,\"pkId\":\"14582097882908443102\",\"priceBenchmark\":null,\"priceMode\":0,\"priceRate\":null,\"purchasePrice\":0.0,\"safeStock\":0.0,\"sellPrice\":2650.0,\"sellPurchaseStatus\":2,\"showName\":\"前刹车片 博世 (测试1024)\",\"skuId\":null,\"spec\":\"\",\"standard\":\"\",\"status\":0,\"stockNumber\":null,\"supplierCode\":\"测试1024\",\"supplierId\":null,\"supplierName\":\"\",\"taxRateOutput\":0.13,\"tmallId\":null,\"tmallSkuId\":null,\"transferPrice\":null,\"unit\":\"组\",\"universalGroupCode\":\"\",\"universalGroupDetailId\":null,\"universalGroupDetailLevel\":null,\"universalGroupId\":null,\"uspuId\":\"\",\"validityPeriod\":\"\"},\"message\":\"SUCCESS\"}\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"import time\n",
|
||||
"import requests\n",
|
||||
"import json\n",
|
||||
"import xlrd\n",
|
||||
"\n",
|
||||
"cookies_str = 'f6-ids-goodsSESSIONID=e7b2f4da-a1db-42e0-b9c7-cdfdf0fe4b4f; sajssdk_2015_cross_new_user=1; prodOrg=11240984669917217520; unp=15503028824961978372; _up=-NillNN-qyBEJ--t3vnSknvoOF56zfKNssUN0X82XOZUUfnCoJvQjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbrEfAWoIgr3gIM9_BRv-ZNHu3M-GTc25iyFXWgpu9RgO0bmVHLPRRtrEj9mlzy8brLZzo.; sensorsdata2015jssdkcross={\"distinct_id\":\"15503028824961978372\",\"first_id\":\"180effbdceb2f8-07e420bc2cb8df-6b3e555b-1327104-180effbdcec72\",\"props\":{\"$latest_traffic_source_type\":\"直接流量\",\"$latest_search_keyword\":\"未取到值_直接打开\",\"$latest_referrer\":\"\"},\"$device_id\":\"180effbdceb2f8-07e420bc2cb8df-6b3e555b-1327104-180effbdcec72\"}'\n",
|
||||
"\n",
|
||||
"cookies_str = cookies_str.encode('utf-8').decode('latin-1')\n",
|
||||
"\n",
|
||||
"cookie_dict = {item.split('=')[0]: item.split('=')[1]\n",
|
||||
" for item in cookies_str.split('; ')}\n",
|
||||
"\n",
|
||||
"headers = {\n",
|
||||
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40',\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" 'origin': 'https://yunxiu.f6car.cn'\n",
|
||||
"}\n",
|
||||
"#读取excel文件\n",
|
||||
"data = xlrd.open_workbook(r\"C:\\Users\\admin\\Desktop\\Python脚本\\图形界面自动化脚本\\F6系统常用脚本\\Excel通用存储位置.xls\")\n",
|
||||
"table = data.sheet_by_index(0) # 通过索引顺序获取\n",
|
||||
"h = table.nrows\n",
|
||||
"l = table.ncols\n",
|
||||
"print(u\"表数据的行数为%s,列数为%s\"%(h,l))\n",
|
||||
"for i in range(1,h):\n",
|
||||
" idMember =table.cell(i, 0).value #材料id\n",
|
||||
" idMember1 =table.cell(i, 1).value #修改内容\n",
|
||||
" #get材料属性\n",
|
||||
" url = 'https://ids-goods.f6car.cn/f6-ids-goods/part/getPartInfo?partId={}'.format(idMember)\n",
|
||||
" res = requests.get(url,cookies=cookie_dict)\n",
|
||||
" strele = res.text[19:-21]\n",
|
||||
" pastebin_url_json = json.loads(strele)\n",
|
||||
" pastebin_url_json['supplierCode'] = idMember1#修改内容\n",
|
||||
" #修改值读取\n",
|
||||
" res = requests.post(f'https://ids-goods.f6car.cn/f6-ids-goods/part/updatePartInfo', headers=headers,cookies=cookie_dict, json=pastebin_url_json)\n",
|
||||
" print(idMember,res.text)"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"interpreter": {
|
||||
"hash": "f83923c7d0b4d2e003073efbd633777fa3fd66b7578149f24f67f4796b9b3ac4"
|
||||
},
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3.9.4 ('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
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
import pandas as pd
|
||||
import requests
|
||||
import json
|
||||
import xlrd
|
||||
|
||||
cookies_str = 'hiveSESSIONID=7b4b3c13-2518-48b6-8aa4-e0952d270394; sensorsdata2015jssdkcross={"distinct_id":"10691192243902595917","first_id":"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0","props":{"$latest_traffic_source_type":"直接流量","$latest_search_keyword":"未取到值_直接打开","$latest_referrer":""},"$device_id":"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0"}; gr_user_id=408fef1a-77ed-4e74-8f1e-31dde3446f2e; prodOrg=11240984669917217520; unp=15503028824961978372; un=15503028824961978372; _up=-NillNN-qyBEJ--t3vnSknvoOF56zfKNssUN0X82XOZUUfnCoJvQjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbrEPUTqIMn0wcN_fBRv-ZNHu3M-GTc25iyFXWgpu9RgO0bmVHLPRRtrEj94nvl9sC4Mys.; currMenu=客户车辆; sensorsdata2015jssdkcross={"distinct_id":"15503028824961978372","first_id":"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0","props":{"$latest_traffic_source_type":"直接流量","$latest_search_keyword":"未取到值_直接打开","$latest_referrer":""},"$device_id":"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0"}'
|
||||
|
||||
cookies_str = cookies_str.encode('utf-8').decode('latin-1')
|
||||
|
||||
cookie_dict = {item.split('=')[0]: item.split('=')[1]
|
||||
for item in cookies_str.split('; ')}
|
||||
|
||||
headers = {
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40',
|
||||
"Content-Type": "application/json",
|
||||
'origin': 'https://yunxiu.f6car.cn'
|
||||
}
|
||||
#读取excel文件
|
||||
data = xlrd.open_workbook(r"C:\Users\admin\Desktop\Python脚本\图形界面自动化脚本\F6系统常用脚本\Excel通用存储位置.xls")
|
||||
|
||||
table = data.sheet_by_index(0) # 通过索引顺序获取
|
||||
|
||||
h = table.nrows
|
||||
|
||||
l = table.ncols
|
||||
|
||||
print(u"表数据的行数为%s,列数为%s"%(h,l))
|
||||
|
||||
for i in range(0,h):
|
||||
|
||||
idMember =table.cell(i, 0).value #材料id
|
||||
|
||||
idMember1 =table.cell(i, 1).value #修改内容
|
||||
|
||||
#get材料属性
|
||||
url = 'https://ids-goods.f6car.cn/f6-ids-goods/part/getPartInfo?partId={}'.format(idMember)
|
||||
|
||||
res = requests.get(url,cookies=cookie_dict)
|
||||
|
||||
strele = res.text[19:-21]
|
||||
|
||||
pastebin_url_json = json.loads(strele)
|
||||
|
||||
pastebin_url_json['supplierCode'] = idMember1#修改内容
|
||||
|
||||
#修改值读取
|
||||
res = requests.post(f'https://ids-goods.f6car.cn/f6-ids-goods/part/updatePartInfo', headers=headers,cookies=cookie_dict, json=pastebin_url_json)
|
||||
|
||||
print(idMember,res.text)
|
||||
@@ -0,0 +1,112 @@
|
||||
import pandas as pd
|
||||
import time
|
||||
import requests
|
||||
import json
|
||||
import xlrd
|
||||
|
||||
cookies_str ='marketingSESSIONID=f9282002-952a-43ef-adeb-115a10f86582; unp=10979894419862873377; un=10979894419862873377; _up=-NillNN-qyBEJ--t3vnSknvoOFt2yviFuckB0nI3XOVVUfLCoJ7QjaZJ9Q3d-WrAAGgt60MgQHajH2BEMqCxilqvQjl2xs5PR0K-R6Uw93buFvYcrYgm0QYQ7LQU-bEeWP7G42LQ1pG1EXahputXgewZk1HELF5853znmxrs988.; sensorsdata2015jssdkcross={"distinct_id":"10979894419862873377","first_id":"1807ab08f0d1e5-01a788ed4f63b8-6b3e555b-1327104-1807ab08f0e219","props":{"$latest_traffic_source_type":"直接流量","$latest_search_keyword":"未取到值_直接打开","$latest_referrer":""},"$device_id":"1807ab08f0d1e5-01a788ed4f63b8-6b3e555b-1327104-1807ab08f0e219"}; currMenu=营销; prodOrg=11240984669917132579'
|
||||
|
||||
cookies_str = cookies_str.encode('utf-8').decode('latin-1')
|
||||
|
||||
cookie_dict = {item.split('=')[0]: item.split('=')[1]
|
||||
for item in cookies_str.split('; ')}
|
||||
|
||||
headers = {
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40',
|
||||
"Content-Type": "application/json",
|
||||
'origin': 'https://yunxiu.f6car.cn'
|
||||
}
|
||||
#读取excel文件
|
||||
data = xlrd.open_workbook(r"C:\Users\admin\Desktop\Python脚本\图形界面自动化脚本\F6系统常用脚本\Excel通用存储位置.xls")
|
||||
|
||||
table = data.sheet_by_index(0) # 通过索引顺序获取
|
||||
|
||||
h = table.nrows
|
||||
|
||||
l = table.ncols
|
||||
|
||||
print(u"表数据的行数为%s,列数为%s"%(h,l))
|
||||
|
||||
for i in range(1,h):
|
||||
idMember =table.cell(i, 0).value #卡id
|
||||
idMember1 =table.cell(i, 1).value #退款金额
|
||||
idMember2 =table.cell(i, 2).value #退款金额
|
||||
idOwnOrg =table.cell(i, 3).value #门店ID
|
||||
employeeId =table.cell(i, 4).value #退卡服务顾问ID
|
||||
#读取cardVersion信息并配置退卡data
|
||||
url = 'https://yunxiu.f6car.cn/marketing/tkdBill/baseInfo?pkId={}'.format(idMember)
|
||||
resget = requests.get(url,cookies=cookie_dict)
|
||||
resget = json.loads(resget.text)
|
||||
cardVersion = resget['data']['cardVersion']
|
||||
data = {
|
||||
"cardId": idMember, # 退卡实体id
|
||||
"cardVersion": cardVersion,
|
||||
"employeeId": employeeId, # 退卡服务顾问ID 手动更新
|
||||
"idOwnOrg": idOwnOrg, # 门店ID 手动更新
|
||||
"refundAmount": idMember1, # 退卡金额
|
||||
"remark": "" # 备注
|
||||
}
|
||||
#生成退卡单
|
||||
res = requests.post(f'https://yunxiu.f6car.cn/marketing/tkdBill/add',
|
||||
headers=headers,cookies=cookie_dict, json=data)
|
||||
resdata = res.json().get('data')
|
||||
#print(data)
|
||||
|
||||
|
||||
#读取Version信息并配置退卡data
|
||||
url1 = 'https://yunxiu.f6car.cn/marketing/tkdBill/detail/{}'.format(resdata)
|
||||
resget1 = requests.get(url1,cookies=cookie_dict)
|
||||
resget1 = json.loads(resget1.text)
|
||||
cardVersion1 = resget1['data']['version']
|
||||
#完成收款
|
||||
if idMember1 != "0":
|
||||
data = {
|
||||
"idOwnOrg": idOwnOrg,# 门店ID 手动更新
|
||||
"idOperationOrg": idOwnOrg,# 退卡门店ID 手动更新
|
||||
"idSourceBill": resdata,# 退卡单ID
|
||||
"sourceBillType": "TKD",#类型
|
||||
"receiptMemo": "",# 备注
|
||||
"version": cardVersion1,
|
||||
"favourableList": [],
|
||||
"gatheringFavourable": 0,
|
||||
"paymentTypeGroupId": "",
|
||||
"czkList": [],
|
||||
"paymentList": [
|
||||
{
|
||||
"paymentTypeId": "7941750",# 各门店不同 手动更新
|
||||
"paymentType": "现金",
|
||||
"paymentAmount": idMember2,
|
||||
"gatheringType": 0,
|
||||
"kind": "normal"
|
||||
}
|
||||
],
|
||||
"pkId": 0,
|
||||
"billType": "YSF",
|
||||
"domainCode": "SAAS"
|
||||
}
|
||||
else:
|
||||
data = {
|
||||
"idOwnOrg": idOwnOrg,# 门店ID 手动更新
|
||||
"idOperationOrg": idOwnOrg,# 退卡门店ID 手动更新
|
||||
"idSourceBill": resdata,# 退卡单ID
|
||||
"sourceBillType": "TKD",#类型
|
||||
"receiptMemo": "",# 备注
|
||||
"version": cardVersion1,
|
||||
"favourableList": [],
|
||||
"gatheringFavourable": 0,
|
||||
"paymentTypeGroupId": "",
|
||||
"czkList": [],
|
||||
"paymentList": [
|
||||
{
|
||||
"status": 0,
|
||||
"paymentAmount": 0
|
||||
}
|
||||
],
|
||||
"pkId": 0,
|
||||
"billType": "YSF",
|
||||
"domainCode": "SAAS"
|
||||
}
|
||||
#print(data)
|
||||
res = requests.post(f'https://yunxiu.f6car.cn/financial/advance/payment/singleGathering',
|
||||
headers=headers,cookies=cookie_dict, json=data)
|
||||
print("打印出响应信息:",cardVersion,cardVersion1,resdata,idMember,res.text)
|
||||
@@ -0,0 +1,724 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 75,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"0 11680450638495363092 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"1 11680450638440837213 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"2 11680450638134648879 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"3 11680450638122065922 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"4 11680450637878796292 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"5 11680450637803302975 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"6 11680450637681664015 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"7 11680450637400649759 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"8 11680450637383872543 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"9 11680450637153185817 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"10 11680450636884750377 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"11 11680450636670836778 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"12 11680450636431765595 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"13 11680450636196884519 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"14 11680450627611144260 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"15 11680450627367870524 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"16 11680450627082661890 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"17 11680450626835193932 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"18 11680450626814222413 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"19 11680450626533204046 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"20 11680450626352853024 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"21 11680450626084417606 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"22 11680450626038276100 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"23 11680450626029887562 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"24 11680450625803395170 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"25 11680450625782423609 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"26 11680450625664987183 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"27 11680450625623044131 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"28 11680450625421717598 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"29 11680450625371381795 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"30 11680450625354604628 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"31 11680450624943566855 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"32 11680450624930983939 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"33 11680450624889040910 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"34 11680450624666742799 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"35 11680450624368947228 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"36 11680450624314421281 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"37 11680450624289255512 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"38 11680450624264085597 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"39 11680450623983071255 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"40 11680450623840460811 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"41 11680450623836266592 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"42 11680450623689470036 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"43 11680450623626551372 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"44 11680450623530082336 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"45 11680450623521693760 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"46 11680450623446200352 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"47 11680450623278424086 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"48 11680450623202926673 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"49 11680450623186153480 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"50 11680450623127433267 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"51 11680450622972239908 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"52 11680450622972239907 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"53 11680450622867386384 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"54 11680450622854799386 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"55 11680450622745751613 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"56 11680450622741553249 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"57 11680450622565396521 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"58 11680450622548615196 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"59 11680450622506672139 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n",
|
||||
"60 11680450622502481985 {\"success\":true,\"code\":200,\"message\":null,\"data\":null}\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"import requests\n",
|
||||
"import json\n",
|
||||
"from pprint import pprint\n",
|
||||
"cookies_str = 'marketingSESSIONID=2a0fc89f-dec7-4e56-9e71-b297636783d6; sensorsdata2015jssdkcross={\"distinct_id\":\"10691192243902595917\",\"first_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\",\"props\":{\"$latest_traffic_source_type\":\"直接流量\",\"$latest_search_keyword\":\"未取到值_直接打开\",\"$latest_referrer\":\"\"},\"$device_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\"}; gr_user_id=408fef1a-77ed-4e74-8f1e-31dde3446f2e; currMenu=安全退出; prodOrg=11240984669917405035; unp=15570772930810884182; un=15570772930810884182; _up=-NillNN-qyBEJ--t3vnSknvoOF56yvGKt88M0Hs3W-dVXvXAr5vQjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbrEfsXoYsl0AMM9vJRv-ZNHu3M-GTc25-xEnCqp-5VgeoamF7HPxttrEj9mxu48Lq4d2c.; sensorsdata2015jssdkcross={\"distinct_id\":\"10691192243902595917\",\"first_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\",\"props\":{\"$latest_traffic_source_type\":\"直接流量\",\"$latest_search_keyword\":\"未取到值_直接打开\",\"$latest_referrer\":\"\"},\"$device_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\"}'\n",
|
||||
"cookies = cookies_str.encode('utf-8').decode('latin-1')\n",
|
||||
"cookies={item.split('=')[0]:item.split('=')[1] for item in cookies.split('; ')}\n",
|
||||
"headers = {\n",
|
||||
"'accept': 'application/json, text/plain, */*',\n",
|
||||
"'accept-encoding': 'gzip, deflate, br',\n",
|
||||
"'accept-language': 'zh-CN,zh;q=0.9',\n",
|
||||
"'content-length': '1598',\n",
|
||||
"'content-type': 'application/json;charset=UTF-8',\n",
|
||||
"'cookie': 'blazerSESSIONID=fb383a80-6ed8-48e4-bfde-3e7cc35ef146; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2210691192243902595917%22%2C%22first_id%22%3A%221750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%221750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0%22%7D; gr_user_id=408fef1a-77ed-4e74-8f1e-31dde3446f2e; currMenu=%E5%AE%89%E5%85%A8%E9%80%80%E5%87%BA; prodOrg=11240984669917405035; unp=15570772930810884182; un=15570772930810884182; _up=-NillNN-qyBEJ--t3vnSknvoOF56yvGKt88M0Hs3W-dVXvXAr5vQjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbrEfsXoYsl0AMM9vJRv-ZNHu3M-GTc25-xEnCqp-5VgeoamF7HPxttrEj9mxu48Lq4d2c.; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2210691192243902595917%22%2C%22first_id%22%3A%221750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%221750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0%22%7D',\n",
|
||||
"'origin': 'https://yunxiu.f6car.cn',\n",
|
||||
"'referer': 'https://yunxiu.f6car.cn/macan/view/index.html',\n",
|
||||
"'sec-ch-ua': '\" Not A;Brand\";v=\"99\", \"Chromium\";v=\"100\", \"Google Chrome\";v=\"100\"',\n",
|
||||
"'sec-ch-ua-mobile': '?0',\n",
|
||||
"'sec-ch-ua-platform': \"Windows\",\n",
|
||||
"'sec-fetch-dest': 'empty',\n",
|
||||
"'sec-fetch-mode': 'cors',\n",
|
||||
"'sec-fetch-site': 'same-origin',\n",
|
||||
"'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36'\n",
|
||||
"}\n",
|
||||
"df = pd.read_excel(r'C:\\Users\\admin\\Downloads\\会员卡信息 (1).xlsx',sheet_name='Sheet1',dtype='string') \n",
|
||||
"for item in df.index:\n",
|
||||
" py_id= df.loc[item,'卡实体id']\n",
|
||||
" py_idkh= df.loc[item,'卡号']\n",
|
||||
" py_xc= df.loc[item,'洗车项目折扣']\n",
|
||||
" py_mr= df.loc[item,'美容项目折扣']\n",
|
||||
" # print(py_id)\n",
|
||||
" url1 = 'https://yunxiu.f6car.cn/marketing/card/detail/{}'.format(py_id)\n",
|
||||
" resget1 = requests.get(url1,cookies=cookies)\n",
|
||||
" resget = json.loads(resget1.text)\n",
|
||||
" py_version = resget['data']['version']\n",
|
||||
" data = resget['data']['cardEntityCarInfoList']\n",
|
||||
" lst= []\n",
|
||||
" for record in data:\n",
|
||||
" supplierCodeidCar = record.get('idCar')\n",
|
||||
" supplierCodeidCustomer = record.get('idCustomer')\n",
|
||||
" lst.append({'idCustomer':supplierCodeidCustomer,'idCar':supplierCodeidCar})\n",
|
||||
"\n",
|
||||
" py_json={\n",
|
||||
" \"id\": py_id,\n",
|
||||
" \"cardNo\": py_idkh,\n",
|
||||
" \"memo\": \"\",\n",
|
||||
" \"useTerm\": \"\",\n",
|
||||
" \"idCustomer\": supplierCodeidCustomer,\n",
|
||||
" \"version\": py_version,\n",
|
||||
" \"useType\": 1,\n",
|
||||
" \"permanent\": 1,\n",
|
||||
" \"carList\": lst,\n",
|
||||
" \"cardEntityBusinessList\": [\n",
|
||||
" {\n",
|
||||
" \"labelName\": \"维修\",\n",
|
||||
" \"businessType\": 0,\n",
|
||||
" \"labelId\": \"1620368\"\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"labelName\": \"保养\",\n",
|
||||
" \"businessType\": 0,\n",
|
||||
" \"labelId\": \"1620369\"\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"labelName\": \"美容\",\n",
|
||||
" \"businessType\": 0,\n",
|
||||
" \"labelId\": \"1620370\"\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"labelName\": \"钣喷\",\n",
|
||||
" \"businessType\": 0,\n",
|
||||
" \"labelId\": \"1620371\"\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"labelName\": \"轮胎\",\n",
|
||||
" \"businessType\": 0,\n",
|
||||
" \"labelId\": \"1620372\"\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"labelName\": \"洗车\",\n",
|
||||
" \"businessType\": 0,\n",
|
||||
" \"labelId\": \"1620373\"\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"labelName\": \"精品\",\n",
|
||||
" \"businessType\": 0,\n",
|
||||
" \"labelId\": \"1620374\"\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"labelName\": \"其他\",\n",
|
||||
" \"businessType\": 0,\n",
|
||||
" \"labelId\": \"1620375\"\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"labelName\": \"零售\",\n",
|
||||
" \"businessType\": 0,\n",
|
||||
" \"labelId\": \"1620376\"\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"labelName\": \"装潢\",\n",
|
||||
" \"businessType\": 0,\n",
|
||||
" \"labelId\": \"1622187\"\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"labelName\": \"维修\",\n",
|
||||
" \"businessType\": 1,\n",
|
||||
" \"labelId\": \"1620368\"\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"labelName\": \"保养\",\n",
|
||||
" \"businessType\": 1,\n",
|
||||
" \"labelId\": \"1620369\"\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"labelName\": \"美容\",\n",
|
||||
" \"businessType\": 1,\n",
|
||||
" \"labelId\": \"1620370\"\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"labelName\": \"钣喷\",\n",
|
||||
" \"businessType\": 1,\n",
|
||||
" \"labelId\": \"1620371\"\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"labelName\": \"轮胎\",\n",
|
||||
" \"businessType\": 1,\n",
|
||||
" \"labelId\": \"1620372\"\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"labelName\": \"洗车\",\n",
|
||||
" \"businessType\": 1,\n",
|
||||
" \"labelId\": \"1620373\"\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"labelName\": \"精品\",\n",
|
||||
" \"businessType\": 1,\n",
|
||||
" \"labelId\": \"1620374\"\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"labelName\": \"其他\",\n",
|
||||
" \"businessType\": 1,\n",
|
||||
" \"labelId\": \"1620375\"\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"labelName\": \"零售\",\n",
|
||||
" \"businessType\": 1,\n",
|
||||
" \"labelId\": \"1620376\"\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"labelName\": \"装潢\",\n",
|
||||
" \"businessType\": 1,\n",
|
||||
" \"labelId\": \"1622187\"\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"businessType\": 2,\n",
|
||||
" \"labelId\": \"0\"\n",
|
||||
" }\n",
|
||||
" ],\n",
|
||||
" \"cardEntityBusinessDiscountList\": [\n",
|
||||
" {\n",
|
||||
" \"labelName\": \"美容\",\n",
|
||||
" \"businessType\": 0,\n",
|
||||
" \"discount\": py_mr,\n",
|
||||
" \"labelId\": \"1620370\"\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"labelName\": \"洗车\",\n",
|
||||
" \"businessType\": 0,\n",
|
||||
" \"discount\": py_xc,\n",
|
||||
" \"labelId\": \"1620373\"\n",
|
||||
" }\n",
|
||||
" ],\n",
|
||||
" \"businessType\": 1\n",
|
||||
"}\n",
|
||||
" url = 'https://yunxiu.f6car.cn/marketing/card/modifyCzkCardEntity4Gray'\n",
|
||||
" res = requests.post(url,cookies=cookies,json=py_json,headers =headers)\n",
|
||||
" print(item,py_id,res.text)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"[\n",
|
||||
" {\n",
|
||||
" \"idCustomer\": \"11679749121492660508\",\n",
|
||||
" \"idCar\": \"11679749142107665194\"\n",
|
||||
" }\n",
|
||||
"]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 68,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"{'success': True,\n",
|
||||
" 'code': 200,\n",
|
||||
" 'message': None,\n",
|
||||
" 'data': {'pkId': '11680450674105000003',\n",
|
||||
" 'idCustomer': '11679749121492660508',\n",
|
||||
" 'customerName': '朱先生',\n",
|
||||
" 'customerExclusiveConsultantId': None,\n",
|
||||
" 'customerExclusiveConsultantName': None,\n",
|
||||
" 'cellPhone': '13816556331',\n",
|
||||
" 'idMemberCard': '11680439895070879838',\n",
|
||||
" 'memberCardNo': '20201008100204',\n",
|
||||
" 'cardType': 'CZK',\n",
|
||||
" 'useType': 1,\n",
|
||||
" 'name': '洗车美容7.5折卡',\n",
|
||||
" 'password': None,\n",
|
||||
" 'memo': '',\n",
|
||||
" 'permanent': 1,\n",
|
||||
" 'validate': 1,\n",
|
||||
" 'endDate': 2145899646000,\n",
|
||||
" 'activeDate': 1658246400000,\n",
|
||||
" 'idOwnOrg': '11240984669917405035',\n",
|
||||
" 'abbreviation': '特伯动力',\n",
|
||||
" 'isDel': 0,\n",
|
||||
" 'useTerm': '',\n",
|
||||
" 'availableForOwnerOnly': 0,\n",
|
||||
" 'usable': 1,\n",
|
||||
" 'activationDeadline': None,\n",
|
||||
" 'realActiveDate': 1658246400000,\n",
|
||||
" 'idBuyer': '11679749121492660508',\n",
|
||||
" 'buyerName': '朱先生',\n",
|
||||
" 'buyerCellPhone': '13816556331',\n",
|
||||
" 'version': '2',\n",
|
||||
" 'czkBusinessType': 1,\n",
|
||||
" 'czkBusinessLabelId': None,\n",
|
||||
" 'czkBusinessLabelName': None,\n",
|
||||
" 'totalAmount': '16.50',\n",
|
||||
" 'consumeAmount': '0.00',\n",
|
||||
" 'balanceAmount': '16.50',\n",
|
||||
" 'cardEntityStationList': None,\n",
|
||||
" 'cardEntityCarInfoList': [{'pkId': '11680813696216477700',\n",
|
||||
" 'idMember': '11680450674105000003',\n",
|
||||
" 'idCustomer': '11679749121492660508',\n",
|
||||
" 'idCar': '11679749142107665194',\n",
|
||||
" 'idOwnOrg': '11240984669917405035',\n",
|
||||
" 'creator': None,\n",
|
||||
" 'creationtime': None,\n",
|
||||
" 'modifier': None,\n",
|
||||
" 'modifiedtime': None,\n",
|
||||
" 'groupId': None,\n",
|
||||
" 'carNo': '沪A36J52',\n",
|
||||
" 'carModel': None,\n",
|
||||
" 'carModelShort': None}],\n",
|
||||
" 'itemList': None,\n",
|
||||
" 'partList': None,\n",
|
||||
" 'packageInfoList': None,\n",
|
||||
" 'cardEntityBusinessList': None,\n",
|
||||
" 'cardEntityBusinessDiscountList': [{'id': 151873,\n",
|
||||
" 'cardEntityId': '11680450674105000003',\n",
|
||||
" 'labelId': '1620370',\n",
|
||||
" 'businessType': 0,\n",
|
||||
" 'discount': '0.10',\n",
|
||||
" 'creationtime': 1658383743000,\n",
|
||||
" 'creator': None,\n",
|
||||
" 'modifier': None,\n",
|
||||
" 'modifiedtime': None,\n",
|
||||
" 'isDeleted': None,\n",
|
||||
" 'groupId': None,\n",
|
||||
" 'labelName': '美容'},\n",
|
||||
" {'id': 151874,\n",
|
||||
" 'cardEntityId': '11680450674105000003',\n",
|
||||
" 'labelId': '1620373',\n",
|
||||
" 'businessType': 0,\n",
|
||||
" 'discount': '0.10',\n",
|
||||
" 'creationtime': 1658383743000,\n",
|
||||
" 'creator': None,\n",
|
||||
" 'modifier': None,\n",
|
||||
" 'modifiedtime': None,\n",
|
||||
" 'isDeleted': None,\n",
|
||||
" 'groupId': None,\n",
|
||||
" 'labelName': '洗车'}]}}"
|
||||
]
|
||||
},
|
||||
"execution_count": 68,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"resget"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 71,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"[{'idCustomer': '11679749121492660508', 'idCar': '11679749142107665194'}]"
|
||||
]
|
||||
},
|
||||
"execution_count": 71,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"[\n",
|
||||
" {\n",
|
||||
" \"idCustomer\": \"11679749121492660508\",\n",
|
||||
" \"idCar\": \"11679749142107665194\"\n",
|
||||
" }\n",
|
||||
"]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 70,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"[{'idCustomer': '11679749121492660508', 'idCar': '11679749142107665194'}]"
|
||||
]
|
||||
},
|
||||
"execution_count": 70,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"lst"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 57,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"[]"
|
||||
]
|
||||
},
|
||||
"execution_count": 57,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"resget1['data'].get('cardEntityCarInfoList')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 58,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"{'pkId': '11680450674105000003',\n",
|
||||
" 'idCustomer': '11679749121492660508',\n",
|
||||
" 'customerName': '朱先生',\n",
|
||||
" 'customerExclusiveConsultantId': None,\n",
|
||||
" 'customerExclusiveConsultantName': None,\n",
|
||||
" 'cellPhone': None,\n",
|
||||
" 'idMemberCard': '11680439895070879838',\n",
|
||||
" 'memberCardNo': '20201008100204',\n",
|
||||
" 'cardType': 'CZK',\n",
|
||||
" 'useType': 1,\n",
|
||||
" 'name': '洗车美容7.5折卡',\n",
|
||||
" 'password': None,\n",
|
||||
" 'memo': '',\n",
|
||||
" 'permanent': 1,\n",
|
||||
" 'validate': 1,\n",
|
||||
" 'endDate': 2145899646000,\n",
|
||||
" 'activeDate': 1658246400000,\n",
|
||||
" 'idOwnOrg': '11240984669917405035',\n",
|
||||
" 'abbreviation': '特伯动力',\n",
|
||||
" 'isDel': 0,\n",
|
||||
" 'useTerm': '',\n",
|
||||
" 'availableForOwnerOnly': 0,\n",
|
||||
" 'usable': 1,\n",
|
||||
" 'activationDeadline': None,\n",
|
||||
" 'realActiveDate': 1658246400000,\n",
|
||||
" 'idBuyer': '11679749121492660508',\n",
|
||||
" 'buyerName': '朱先生',\n",
|
||||
" 'buyerCellPhone': None,\n",
|
||||
" 'version': '1',\n",
|
||||
" 'czkBusinessType': 1,\n",
|
||||
" 'czkBusinessLabelId': None,\n",
|
||||
" 'czkBusinessLabelName': None,\n",
|
||||
" 'totalAmount': '16.50',\n",
|
||||
" 'consumeAmount': '0.00',\n",
|
||||
" 'balanceAmount': '16.50',\n",
|
||||
" 'cardEntityStationList': None,\n",
|
||||
" 'cardEntityCarInfoList': [],\n",
|
||||
" 'itemList': None,\n",
|
||||
" 'partList': None,\n",
|
||||
" 'packageInfoList': None,\n",
|
||||
" 'cardEntityBusinessList': None,\n",
|
||||
" 'cardEntityBusinessDiscountList': [{'id': 139305,\n",
|
||||
" 'cardEntityId': '11680450674105000003',\n",
|
||||
" 'labelId': '1620370',\n",
|
||||
" 'businessType': 0,\n",
|
||||
" 'discount': '0.75',\n",
|
||||
" 'creationtime': 1658299571000,\n",
|
||||
" 'creator': None,\n",
|
||||
" 'modifier': None,\n",
|
||||
" 'modifiedtime': None,\n",
|
||||
" 'isDeleted': None,\n",
|
||||
" 'groupId': None,\n",
|
||||
" 'labelName': None},\n",
|
||||
" {'id': 139306,\n",
|
||||
" 'cardEntityId': '11680450674105000003',\n",
|
||||
" 'labelId': '1620373',\n",
|
||||
" 'businessType': 0,\n",
|
||||
" 'discount': '0.75',\n",
|
||||
" 'creationtime': 1658299571000,\n",
|
||||
" 'creator': None,\n",
|
||||
" 'modifier': None,\n",
|
||||
" 'modifiedtime': None,\n",
|
||||
" 'isDeleted': None,\n",
|
||||
" 'groupId': None,\n",
|
||||
" 'labelName': None}]}"
|
||||
]
|
||||
},
|
||||
"execution_count": 58,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"resget1.get('data')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 49,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"{'pkId': '11680450674105000003',\n",
|
||||
" 'idCustomer': '11679749121492660508',\n",
|
||||
" 'customerName': '朱先生',\n",
|
||||
" 'customerExclusiveConsultantId': None,\n",
|
||||
" 'customerExclusiveConsultantName': None,\n",
|
||||
" 'cellPhone': None,\n",
|
||||
" 'idMemberCard': '11680439895070879838',\n",
|
||||
" 'memberCardNo': '20201008100204',\n",
|
||||
" 'cardType': 'CZK',\n",
|
||||
" 'useType': 1,\n",
|
||||
" 'name': '洗车美容7.5折卡',\n",
|
||||
" 'password': None,\n",
|
||||
" 'memo': '',\n",
|
||||
" 'permanent': 1,\n",
|
||||
" 'validate': 1,\n",
|
||||
" 'endDate': 2145899646000,\n",
|
||||
" 'activeDate': 1658246400000,\n",
|
||||
" 'idOwnOrg': '11240984669917405035',\n",
|
||||
" 'abbreviation': '特伯动力',\n",
|
||||
" 'isDel': 0,\n",
|
||||
" 'useTerm': '',\n",
|
||||
" 'availableForOwnerOnly': 0,\n",
|
||||
" 'usable': 1,\n",
|
||||
" 'activationDeadline': None,\n",
|
||||
" 'realActiveDate': 1658246400000,\n",
|
||||
" 'idBuyer': '11679749121492660508',\n",
|
||||
" 'buyerName': '朱先生',\n",
|
||||
" 'buyerCellPhone': None,\n",
|
||||
" 'version': '1',\n",
|
||||
" 'czkBusinessType': 1,\n",
|
||||
" 'czkBusinessLabelId': None,\n",
|
||||
" 'czkBusinessLabelName': None,\n",
|
||||
" 'totalAmount': '16.50',\n",
|
||||
" 'consumeAmount': '0.00',\n",
|
||||
" 'balanceAmount': '16.50',\n",
|
||||
" 'cardEntityStationList': None,\n",
|
||||
" 'cardEntityCarInfoList': [],\n",
|
||||
" 'itemList': None,\n",
|
||||
" 'partList': None,\n",
|
||||
" 'packageInfoList': None,\n",
|
||||
" 'cardEntityBusinessList': None,\n",
|
||||
" 'cardEntityBusinessDiscountList': [{'id': 139305,\n",
|
||||
" 'cardEntityId': '11680450674105000003',\n",
|
||||
" 'labelId': '1620370',\n",
|
||||
" 'businessType': 0,\n",
|
||||
" 'discount': '0.75',\n",
|
||||
" 'creationtime': 1658299571000,\n",
|
||||
" 'creator': None,\n",
|
||||
" 'modifier': None,\n",
|
||||
" 'modifiedtime': None,\n",
|
||||
" 'isDeleted': None,\n",
|
||||
" 'groupId': None,\n",
|
||||
" 'labelName': None},\n",
|
||||
" {'id': 139306,\n",
|
||||
" 'cardEntityId': '11680450674105000003',\n",
|
||||
" 'labelId': '1620373',\n",
|
||||
" 'businessType': 0,\n",
|
||||
" 'discount': '0.75',\n",
|
||||
" 'creationtime': 1658299571000,\n",
|
||||
" 'creator': None,\n",
|
||||
" 'modifier': None,\n",
|
||||
" 'modifiedtime': None,\n",
|
||||
" 'isDeleted': None,\n",
|
||||
" 'groupId': None,\n",
|
||||
" 'labelName': None}]}"
|
||||
]
|
||||
},
|
||||
"execution_count": 49,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"resget1['data']"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 59,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"{'success': True,\n",
|
||||
" 'code': 200,\n",
|
||||
" 'message': None,\n",
|
||||
" 'data': {'pkId': '11680450674105000003',\n",
|
||||
" 'idCustomer': '11679749121492660508',\n",
|
||||
" 'customerName': '朱先生',\n",
|
||||
" 'customerExclusiveConsultantId': None,\n",
|
||||
" 'customerExclusiveConsultantName': None,\n",
|
||||
" 'cellPhone': None,\n",
|
||||
" 'idMemberCard': '11680439895070879838',\n",
|
||||
" 'memberCardNo': '20201008100204',\n",
|
||||
" 'cardType': 'CZK',\n",
|
||||
" 'useType': 1,\n",
|
||||
" 'name': '洗车美容7.5折卡',\n",
|
||||
" 'password': None,\n",
|
||||
" 'memo': '',\n",
|
||||
" 'permanent': 1,\n",
|
||||
" 'validate': 1,\n",
|
||||
" 'endDate': 2145899646000,\n",
|
||||
" 'activeDate': 1658246400000,\n",
|
||||
" 'idOwnOrg': '11240984669917405035',\n",
|
||||
" 'abbreviation': '特伯动力',\n",
|
||||
" 'isDel': 0,\n",
|
||||
" 'useTerm': '',\n",
|
||||
" 'availableForOwnerOnly': 0,\n",
|
||||
" 'usable': 1,\n",
|
||||
" 'activationDeadline': None,\n",
|
||||
" 'realActiveDate': 1658246400000,\n",
|
||||
" 'idBuyer': '11679749121492660508',\n",
|
||||
" 'buyerName': '朱先生',\n",
|
||||
" 'buyerCellPhone': None,\n",
|
||||
" 'version': '1',\n",
|
||||
" 'czkBusinessType': 1,\n",
|
||||
" 'czkBusinessLabelId': None,\n",
|
||||
" 'czkBusinessLabelName': None,\n",
|
||||
" 'totalAmount': '16.50',\n",
|
||||
" 'consumeAmount': '0.00',\n",
|
||||
" 'balanceAmount': '16.50',\n",
|
||||
" 'cardEntityStationList': None,\n",
|
||||
" 'cardEntityCarInfoList': [],\n",
|
||||
" 'itemList': None,\n",
|
||||
" 'partList': None,\n",
|
||||
" 'packageInfoList': None,\n",
|
||||
" 'cardEntityBusinessList': None,\n",
|
||||
" 'cardEntityBusinessDiscountList': [{'id': 139305,\n",
|
||||
" 'cardEntityId': '11680450674105000003',\n",
|
||||
" 'labelId': '1620370',\n",
|
||||
" 'businessType': 0,\n",
|
||||
" 'discount': '0.75',\n",
|
||||
" 'creationtime': 1658299571000,\n",
|
||||
" 'creator': None,\n",
|
||||
" 'modifier': None,\n",
|
||||
" 'modifiedtime': None,\n",
|
||||
" 'isDeleted': None,\n",
|
||||
" 'groupId': None,\n",
|
||||
" 'labelName': None},\n",
|
||||
" {'id': 139306,\n",
|
||||
" 'cardEntityId': '11680450674105000003',\n",
|
||||
" 'labelId': '1620373',\n",
|
||||
" 'businessType': 0,\n",
|
||||
" 'discount': '0.75',\n",
|
||||
" 'creationtime': 1658299571000,\n",
|
||||
" 'creator': None,\n",
|
||||
" 'modifier': None,\n",
|
||||
" 'modifiedtime': None,\n",
|
||||
" 'isDeleted': None,\n",
|
||||
" 'groupId': None,\n",
|
||||
" 'labelName': None}]}}"
|
||||
]
|
||||
},
|
||||
"execution_count": 59,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"resget1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3.9.4 ('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,
|
||||
"vscode": {
|
||||
"interpreter": {
|
||||
"hash": "f83923c7d0b4d2e003073efbd633777fa3fd66b7578149f24f67f4796b9b3ac4"
|
||||
}
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
@@ -0,0 +1,417 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"'''\n",
|
||||
"1、单据管理中导出单据列表\n",
|
||||
"2、通过接口获取单据id\n",
|
||||
"3、进入单据详情页面、点击取消收款、点击取消完工\n",
|
||||
"4、通过接口删除单据\n",
|
||||
"'''"
|
||||
]
|
||||
},
|
||||
{
|
||||
"attachments": {},
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# 获取单据id"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# 获取单据id\n",
|
||||
"import pandas as pd\n",
|
||||
"import requests\n",
|
||||
"\n",
|
||||
"cookies_str = 'maintainSESSIONID=c9f660ff-291a-4c85-858b-db4420cbc038; sensorsdata2015jssdkcross={\"distinct_id\":\"10691192243902595917\",\"first_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\",\"props\":{\"$latest_traffic_source_type\":\"直接流量\",\"$latest_search_keyword\":\"未取到值_直接打开\",\"$latest_referrer\":\"\"},\"$device_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\"}; gr_user_id=408fef1a-77ed-4e74-8f1e-31dde3446f2e; prodOrg=11240984669917702548; unp=15658998626808512553; un=15658998626808512553; _up=-NillNN-qyBEJ--t3vnSknvoOF55yPmEucUD0X03Wu9YV_PEoprQjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbrE_oQrI4k0wIL_fFRv-ZNHu3M-GTc2J25HH6gqO9TgesSlVfBOxZsrEj93n659sC4UWM.; tmall=false; sensorsdata2015jssdkcross={\"distinct_id\":\"15658998626808512553\",\"first_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\",\"props\":{\"$latest_traffic_source_type\":\"直接流量\",\"$latest_search_keyword\":\"未取到值_直接打开\",\"$latest_referrer\":\"\"},\"$device_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\"}'\n",
|
||||
"\n",
|
||||
"cookies_str = cookies_str.encode('utf-8').decode('latin-1')\n",
|
||||
"\n",
|
||||
"cookie_dict = {item.split('=')[0]: item.split('=')[1]\n",
|
||||
" for item in cookies_str.split('; ')}\n",
|
||||
"\n",
|
||||
"headers = {\n",
|
||||
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40',\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" 'origin': 'https://yunxiu.f6car.cn'\n",
|
||||
"}\n",
|
||||
"list_new = []\n",
|
||||
"for i in range(1,10):\n",
|
||||
" res = requests.get(f'https://yunxiu.f6car.cn/maintain/list/getMaintainList?currentPage={i}&pageSize=100&idOwnOrgList=11240984669917702548&maintainTypeList=GD&beginDate=2022-12-21&endDate=2023-03-21&idEmployeeList=&serviceEmployeeIdList=&isDel=0&sourceFrom=maintainNormal&enableCount=true',cookies=cookie_dict)\n",
|
||||
" for a in range(len(res.json()['data']['list'])):\n",
|
||||
" print(res.json()['data']['list'][a]['billNo'],res.json()['data']['list'][a]['pkId'])"
|
||||
]
|
||||
},
|
||||
{
|
||||
"attachments": {},
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# 进入单据详情页面:取消收款"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"GD20230319017 11768276383074107439 2023-03-22 11:47:16\n",
|
||||
"GD20230309005 11764479936146985055 2023-03-22 11:47:24\n",
|
||||
"GD20230319013 11768187725428047918 2023-03-22 11:47:32\n",
|
||||
"GD20230313012 11766014184293158987 2023-03-22 11:47:40\n",
|
||||
"GD20230208001 11767025915467415585 2023-03-22 11:47:48\n",
|
||||
"GD20230308003 11767746673583870043 2023-03-22 11:47:55\n",
|
||||
"GD20230308009 11768284042280063006 2023-03-22 11:48:03\n",
|
||||
"GD20230310002 11767090740411256864 2023-03-22 11:48:10\n",
|
||||
"GD20230311001 11765172295016923178 2023-03-22 11:48:17\n",
|
||||
"GD20230313010 11766001634784591881 2023-03-22 11:48:23\n",
|
||||
"GD20230314005 11766342718580604955 2023-03-22 11:48:30\n",
|
||||
"GD20230314006 11766346247563137102 2023-03-22 11:48:37\n",
|
||||
"GD20230316016 11767060428914442326 2023-03-22 11:48:45\n",
|
||||
"GD20230316028 11767120027042467935 2023-03-22 11:48:52\n",
|
||||
"GD20230318020 11767828869023809571 2023-03-22 11:48:59\n",
|
||||
"GD20230319003 11768074023303397433 2023-03-22 11:49:06\n",
|
||||
"GD20230308002 11767106703382822918 2023-03-22 11:49:14\n",
|
||||
"GD20230312004 11765576222329819181 2023-03-22 11:49:22\n",
|
||||
"GD20230313014 11766032078532005985 2023-03-22 11:49:29\n",
|
||||
"GD20230313016 11766036423570903115 2023-03-22 11:49:36\n",
|
||||
"GD20230314002 11766324742951288907 2023-03-22 11:49:44\n",
|
||||
"GD20230314009 11766357941635010601 2023-03-22 11:49:52\n",
|
||||
"GD20230315002 11766608897853374505 2023-03-22 11:49:59\n",
|
||||
"GD20230316003 11766971868362326039 2023-03-22 11:50:06\n",
|
||||
"GD20230316010 11767018950355861600 2023-03-22 11:50:13\n",
|
||||
"GD20230316013 11767027763922358282 2023-03-22 11:50:20\n",
|
||||
"GD20230317001 11767348061230088287 2023-03-22 11:50:28\n",
|
||||
"GD20230319001\n",
|
||||
"GD20230319004 11768075129513328649 2023-03-22 11:50:42\n",
|
||||
"GD20230319006 11768091781583880281 2023-03-22 11:50:50\n",
|
||||
"GD20230308001 11764555581682110487 2023-03-22 11:50:57\n",
|
||||
"GD20230308004 11767773481192669275 2023-03-22 11:51:04\n",
|
||||
"GD20230310004 11767543705731354662 2023-03-22 11:51:11\n",
|
||||
"GD20230311007 11765384945608966182 2023-03-22 11:51:18\n",
|
||||
"GD20230312003 11765575737032069166 2023-03-22 11:51:25\n",
|
||||
"GD20230312016 11765719958393208922 2023-03-22 11:51:32\n",
|
||||
"GD20230314004 11766339050632396858 2023-03-22 11:51:39\n",
|
||||
"GD20230315006 11766636528153935953 2023-03-22 11:51:46\n",
|
||||
"GD20230315007 11766643584479019054 2023-03-22 11:51:53\n",
|
||||
"GD20230315009 11766702143711498260 2023-03-22 11:52:00\n",
|
||||
"GD20230316018 11767064603312275505 2023-03-22 11:52:07\n",
|
||||
"GD20230316027 11767111906303692881 2023-03-22 11:52:14\n",
|
||||
"GD20230319005 11768077574054367330 2023-03-22 11:52:21\n",
|
||||
"GD20230320003 11768440913121001562 2023-03-22 11:52:28\n",
|
||||
"GD20230224002 11765668846638219320 2023-03-22 11:52:36\n",
|
||||
"GD20230309001 11764439496739799063 2023-03-22 11:52:44\n",
|
||||
"GD20230309008 11764494383657795587 2023-03-22 11:52:50\n",
|
||||
"GD20230309010 11764543445606092841 2023-03-22 11:52:56\n",
|
||||
"GD20230311004 11765363081071312985 2023-03-22 11:53:03\n",
|
||||
"GD20230311008 11767089137738338378 2023-03-22 11:53:09\n",
|
||||
"GD20230312006 11765618351802437659 2023-03-22 11:53:16\n",
|
||||
"GD20230312007 11765619672580374625 2023-03-22 11:53:22\n",
|
||||
"GD20230312011 11765671644129935389 2023-03-22 11:53:28\n",
|
||||
"GD20230312014 11765715726608912421 2023-03-22 11:53:35\n",
|
||||
"GD20230313001 11765932839273517089 2023-03-22 11:53:41\n",
|
||||
"GD20230315001 11766606346894458940 2023-03-22 11:53:47\n",
|
||||
"GD20230315008 11766684928220090406 2023-03-22 11:53:53\n",
|
||||
"GD20230316006 11767003271867158604 2023-03-22 11:54:00\n",
|
||||
"GD20230317002 11767371537093513231 2023-03-22 11:54:06\n",
|
||||
"GD20230318003 11767709188736700508 2023-03-22 11:54:13\n",
|
||||
"GD20230318005 11767734533108023389 2023-03-22 11:54:19\n",
|
||||
"GD20230318015 11767807019652763707 2023-03-22 11:54:25\n",
|
||||
"GD20230318017 11767820305911791705 2023-03-22 11:54:31\n",
|
||||
"GD20230318021 11767829427952570380 2023-03-22 11:54:37\n",
|
||||
"GD20230319008 11768115353333284922 2023-03-22 11:54:44\n",
|
||||
"GD20230319009 11768135358850547763 2023-03-22 11:54:51\n",
|
||||
"GD20230319010 11768138699068428359 2023-03-22 11:54:58\n",
|
||||
"GD20230319016 11768272995422851156 2023-03-22 11:55:07\n",
|
||||
"GD20230320004 11768444464194928738 2023-03-22 11:55:15\n",
|
||||
"GD20230309004 11764460796711555163 2023-03-22 11:55:21\n",
|
||||
"GD20230309007 11764484232548732969 2023-03-22 11:55:28\n",
|
||||
"GD20230313019 11766094525343223828 2023-03-22 11:55:34\n",
|
||||
"GD20230315011 11766723414440562785 2023-03-22 11:55:41\n",
|
||||
"GD20230315012 11766732719491403855 2023-03-22 11:55:47\n",
|
||||
"GD20230316009 11767014278576492547 2023-03-22 11:55:53\n",
|
||||
"GD20230316022 11767101440936394765 2023-03-22 11:55:59\n",
|
||||
"GD20230317007 11767406742277738515 2023-03-22 11:56:05\n",
|
||||
"GD20230318006 11767735424217272393 2023-03-22 11:56:12\n",
|
||||
"GD20230318023 11767848850784538704 2023-03-22 11:56:18\n",
|
||||
"GD20230224001 11765662166550597691 2023-03-22 11:56:25\n",
|
||||
"GD20230302001 11768155761350295606 2023-03-22 11:56:33\n",
|
||||
"GD20230309003 11764453220749950975 2023-03-22 11:56:41\n",
|
||||
"GD20230309012 11767545970307387478 2023-03-22 11:56:50\n",
|
||||
"GD20230310005 11768498060362006533 2023-03-22 11:56:58\n",
|
||||
"GD20230311003 11765262602479882244 2023-03-22 11:57:04\n",
|
||||
"GD20230311009 11767836173127405647 2023-03-22 11:57:11\n",
|
||||
"GD20230313008 11765997375045255171 2023-03-22 11:57:18\n",
|
||||
"GD20230317008 11767416479270584358 2023-03-22 11:57:25\n",
|
||||
"GD20230317011 11767450084927623241 2023-03-22 11:57:32\n",
|
||||
"GD20230317016 11767523474665390152 2023-03-22 11:57:39\n",
|
||||
"GD20230318008 11767749542886264859 2023-03-22 11:57:46\n",
|
||||
"GD20230318010 11767766291610353740 2023-03-22 11:57:52\n",
|
||||
"GD20230320001 11768432913417261135 2023-03-22 11:57:59\n",
|
||||
"GD20230320002 11768435473532338182 2023-03-22 11:58:07\n",
|
||||
"GD20230227001 11768259670920151076 2023-03-22 11:58:13\n",
|
||||
"GD20230308005 11767778371986018357 2023-03-22 11:58:20\n",
|
||||
"GD20230308006 11767780448254578777 2023-03-22 11:58:27\n",
|
||||
"GD20230308007 11767783487086547022 2023-03-22 11:58:33\n",
|
||||
"GD20230308008 11767806217311764487 2023-03-22 11:58:40\n",
|
||||
"GD20230309002 11764443512068657161 2023-03-22 11:58:46\n",
|
||||
"GD20230309011 11764551493007458338 2023-03-22 11:58:52\n",
|
||||
"GD20230310003 11767097652569722957 2023-03-22 11:58:58\n",
|
||||
"GD20230312001 11765541387305504815 2023-03-22 11:59:04\n",
|
||||
"GD20230312002 11765575164249526275 2023-03-22 11:59:10\n",
|
||||
"GD20230312009 11765648082547527681 2023-03-22 11:59:17\n",
|
||||
"GD20230312013 11765713231736229938 2023-03-22 11:59:23\n",
|
||||
"GD20230312017 11765729965356630075 2023-03-22 11:59:29\n",
|
||||
"GD20230312021 11767417093861949481 2023-03-22 11:59:36\n",
|
||||
"GD20230313002 11765933554968576043 2023-03-22 11:59:41\n",
|
||||
"GD20230313003 11765975327577227302 2023-03-22 11:59:47\n",
|
||||
"GD20230313005 11765992118818983940 2023-03-22 11:59:54\n",
|
||||
"GD20230313006 11765993418822537274 2023-03-22 12:00:00\n",
|
||||
"GD20230313007 11765996406228140078 2023-03-22 12:00:05\n",
|
||||
"GD20230313009 11765998306541457494 2023-03-22 12:00:11\n",
|
||||
"GD20230313017 11766037326784905252 2023-03-22 12:00:17\n",
|
||||
"GD20230313020 11767121376194875402 2023-03-22 12:00:23\n",
|
||||
"GD20230314003 11766333837821366309 2023-03-22 12:00:30\n",
|
||||
"GD20230315004 11766629223626723371 2023-03-22 12:00:36\n",
|
||||
"GD20230315005 11766632838739279886 2023-03-22 12:00:42\n",
|
||||
"GD20230315013 11766745699461382157 2023-03-22 12:00:49\n",
|
||||
"GD20230316005 11766998645784727607 2023-03-22 12:00:55\n",
|
||||
"GD20230316008 11767012436748554276 2023-03-22 12:01:01\n",
|
||||
"GD20230316015 11767057978534940764 2023-03-22 12:01:08\n",
|
||||
"GD20230316019 11767067711253794828 2023-03-22 12:01:14\n",
|
||||
"GD20230316020 11767079710968791045 2023-03-22 12:01:20\n",
|
||||
"GD20230316021 11767096913164255265 2023-03-22 12:01:26\n",
|
||||
"GD20230316023 11767102972075462704 2023-03-22 12:01:32\n",
|
||||
"GD20230316024 11767103372694409305 2023-03-22 12:01:38\n",
|
||||
"GD20230316025 11767105651543654493 2023-03-22 12:01:44\n",
|
||||
"GD20230316026 11767111613537075234 2023-03-22 12:01:50\n",
|
||||
"GD20230317004 11767386220907216971 2023-03-22 12:01:56\n",
|
||||
"GD20230317014 11767461272700862469 2023-03-22 12:02:02\n",
|
||||
"GD20230317015 11767473235866701896 2023-03-22 12:02:08\n",
|
||||
"GD20230318002 11767704408756867135 2023-03-22 12:02:14\n",
|
||||
"GD20230318004 11767721288716533810 2023-03-22 12:02:21\n",
|
||||
"GD20230318016 11767816479670550604 2023-03-22 12:02:26\n",
|
||||
"GD20230318018 11767823683979067392 2023-03-22 12:02:32\n",
|
||||
"GD20230318019 11767824964948869140 2023-03-22 12:02:38\n",
|
||||
"GD20230318024 11767891686699585632 2023-03-22 12:02:45\n",
|
||||
"GD20230319002 11768060190400725083 2023-03-22 12:02:50\n",
|
||||
"GD20230319014 11768189399316054102 2023-03-22 12:02:57\n",
|
||||
"GD20230319015 11768193205026181191 2023-03-22 12:03:03\n",
|
||||
"GD20230319018 11768277935696396315 2023-03-22 12:03:09\n",
|
||||
"GD20230320009 11768548487862435859 2023-03-22 12:03:15\n",
|
||||
"GD20230321001 11768790079013671005 2023-03-22 12:03:21\n",
|
||||
"GD20230321004 11768813218510684204 2023-03-22 12:03:27\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# 进入单据详情页面:取消收款\n",
|
||||
"from selenium import webdriver\n",
|
||||
"from selenium.webdriver.support.ui import Select\n",
|
||||
"from selenium.webdriver import ActionChains\n",
|
||||
"import time\n",
|
||||
"from xlutils.copy import copy\n",
|
||||
"from selenium.webdriver.common.keys import Keys\n",
|
||||
"from selenium.webdriver.support.ui import WebDriverWait\n",
|
||||
"from selenium.webdriver.support import expected_conditions as EC\n",
|
||||
"from selenium.webdriver.common.by import By\n",
|
||||
"from selenium.webdriver.support.wait import WebDriverWait\n",
|
||||
"import pandas as pd\n",
|
||||
"from selenium import webdriver\n",
|
||||
"from time import sleep,ctime\n",
|
||||
"#获取基础信息#获取基础信息\n",
|
||||
"name = '18522921001'\n",
|
||||
"password = 'Aa36349@'\n",
|
||||
"option_chrome = webdriver.ChromeOptions()\n",
|
||||
"option_chrome.add_argument('--headless')\n",
|
||||
"\n",
|
||||
"http='https://m.f6car.cn/'\n",
|
||||
"#driver = webdriver.Chrome(chrome_options=option_chrome)\n",
|
||||
"driver = webdriver.Chrome(executable_path=r\"C:\\Users\\admin\\Desktop\\Python脚本\\chromedriver.exe\")\n",
|
||||
"driver.maximize_window()\n",
|
||||
"driver.implicitly_wait(2)\n",
|
||||
"driver.get(http)\n",
|
||||
"\n",
|
||||
"# 在输入框中输入账号和密码\n",
|
||||
"username = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"pane-username\"]/form/div[1]/div/div[1]/input')))\n",
|
||||
"enter = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"pane-username\"]/form/div[3]/div/button')))\n",
|
||||
"username.clear()\n",
|
||||
"username.send_keys(name)\n",
|
||||
"driver.find_element_by_xpath(r'//*[@id=\"pane-username\"]/form/div[2]/div/div[1]/input').send_keys(password)\n",
|
||||
"enter.click()\n",
|
||||
"time.sleep(10)#预设时间\n",
|
||||
"\n",
|
||||
"df = pd.read_excel(r'C:\\Users\\admin\\Downloads\\工单详细列表导出 (1).xlsx',sheet_name='导出计数_单号',dtype='string')\n",
|
||||
"df.fillna('', inplace=True)\n",
|
||||
"for i in range(0,len(df)):\n",
|
||||
" try:\n",
|
||||
" code = df.loc[i,'单号']\n",
|
||||
" pkid = df.loc[i,'ID']\n",
|
||||
" https=f'https://yunxiu.f6car.cn/erp/view/index.html#/index/frame?toUrl=%2Fmaintain%2FgetMaintainInfoNew%2F{pkid}.do%3FlistQueryParam%3D%7B%22currentPage%22%3A1,%22pageSize%22%3A100,%22idOwnOrg%22%3A%2211240984669917702548%22,%22idOwnOrgList%22%3A%2211240984669917702548%22,%22maintainTypeList%22%3A%22GD%22,%22beginDate%22%3A%222022-12-22%22,%22endDate%22%3A%222023-03-22%22,%22idEmployeeList%22%3A%22%22,%22serviceEmployeeIdList%22%3A%22%22,%22isDel%22%3A0,%22sourceFrom%22%3A%22maintainNormal%22,%22rowNum%22%3A47%7D'\n",
|
||||
" driver.get(https)\n",
|
||||
" #传值转换\n",
|
||||
" driver.switch_to.frame('erp-qiankun-iframe')\n",
|
||||
" driver.find_element_by_xpath('//*[@id=\"cancelGathering\"]').click() # 取消收款\n",
|
||||
" time.sleep(0.5)\n",
|
||||
" driver.find_element_by_xpath('/html/body/ul/li/div/div/span[1]/a').click() # 确定\n",
|
||||
" time.sleep(0.5)\n",
|
||||
" print(code,pkid,time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()))\n",
|
||||
" except:\n",
|
||||
" print(code)\n",
|
||||
" "
|
||||
]
|
||||
},
|
||||
{
|
||||
"attachments": {},
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# 进入单据详情页面:取消完工"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# 进入单据详情页面:取消完工\n",
|
||||
"from selenium import webdriver\n",
|
||||
"from selenium.webdriver.support.ui import Select\n",
|
||||
"from selenium.webdriver import ActionChains\n",
|
||||
"import time\n",
|
||||
"from xlutils.copy import copy\n",
|
||||
"from selenium.webdriver.common.keys import Keys\n",
|
||||
"from selenium.webdriver.support.ui import WebDriverWait\n",
|
||||
"from selenium.webdriver.support import expected_conditions as EC\n",
|
||||
"from selenium.webdriver.common.by import By\n",
|
||||
"from selenium.webdriver.support.wait import WebDriverWait\n",
|
||||
"import pandas as pd\n",
|
||||
"from selenium import webdriver\n",
|
||||
"from time import sleep,ctime\n",
|
||||
"#获取基础信息#获取基础信息\n",
|
||||
"name = '18522921001'\n",
|
||||
"password = 'Aa36349@'\n",
|
||||
"option_chrome = webdriver.ChromeOptions()\n",
|
||||
"option_chrome.add_argument('--headless')\n",
|
||||
"\n",
|
||||
"http='https://m.f6car.cn/'\n",
|
||||
"#driver = webdriver.Chrome(chrome_options=option_chrome)\n",
|
||||
"driver = webdriver.Chrome(executable_path=r\"C:\\Users\\admin\\Desktop\\Python脚本\\chromedriver.exe\")\n",
|
||||
"driver.maximize_window()\n",
|
||||
"driver.implicitly_wait(2)\n",
|
||||
"driver.get(http)\n",
|
||||
"\n",
|
||||
"# 在输入框中输入账号和密码\n",
|
||||
"username = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"pane-username\"]/form/div[1]/div/div[1]/input')))\n",
|
||||
"enter = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"pane-username\"]/form/div[3]/div/button')))\n",
|
||||
"username.clear()\n",
|
||||
"username.send_keys(name)\n",
|
||||
"driver.find_element_by_xpath(r'//*[@id=\"pane-username\"]/form/div[2]/div/div[1]/input').send_keys(password)\n",
|
||||
"enter.click()\n",
|
||||
"time.sleep(10)#预设时间\n",
|
||||
"\n",
|
||||
"df = pd.read_excel(r'C:\\Users\\admin\\Downloads\\工单详细列表导出 (1).xlsx',sheet_name='导出计数_单号',dtype='string')\n",
|
||||
"df.fillna('', inplace=True)\n",
|
||||
"for i in range(1,len(df)):\n",
|
||||
" try:\n",
|
||||
" code = df.loc[i,'单号']\n",
|
||||
" pkid = df.loc[i,'ID']\n",
|
||||
" https=f'https://yunxiu.f6car.cn/erp/view/index.html#/index/frame?toUrl=%2Fmaintain%2FgetMaintainInfoNew%2F{pkid}.do%3FlistQueryParam%3D%7B%22currentPage%22%3A1,%22pageSize%22%3A100,%22idOwnOrg%22%3A%2211240984669917702548%22,%22idOwnOrgList%22%3A%2211240984669917702548%22,%22maintainTypeList%22%3A%22GD%22,%22beginDate%22%3A%222022-12-22%22,%22endDate%22%3A%222023-03-22%22,%22idEmployeeList%22%3A%22%22,%22serviceEmployeeIdList%22%3A%22%22,%22isDel%22%3A0,%22sourceFrom%22%3A%22maintainNormal%22,%22rowNum%22%3A47%7D'\n",
|
||||
" driver.get(https)\n",
|
||||
" #传值转换\n",
|
||||
" driver.switch_to.frame('erp-qiankun-iframe')\n",
|
||||
" driver.find_element_by_xpath('//*[@id=\"cancelComplete\"]').click() # 取消完工\n",
|
||||
" time.sleep(0.5)\n",
|
||||
" alert=driver.switch_to.alert #创建弹窗对象\n",
|
||||
" alert.accept() #点击弹窗中的【确定】\n",
|
||||
" time.sleep(0.5)\n",
|
||||
" print(code,pkid,time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()))\n",
|
||||
" except:\n",
|
||||
" print(code)\n",
|
||||
" "
|
||||
]
|
||||
},
|
||||
{
|
||||
"attachments": {},
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# 删除单据"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# 删除单据\n",
|
||||
"import pandas as pd\n",
|
||||
"import requests\n",
|
||||
"\n",
|
||||
"cookies_str = 'maintainSESSIONID=f5071220-d211-4e5e-9c77-c8000d010c1f; sensorsdata2015jssdkcross={\"distinct_id\":\"10691192243902595917\",\"first_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\",\"props\":{\"$latest_traffic_source_type\":\"直接流量\",\"$latest_search_keyword\":\"未取到值_直接打开\",\"$latest_referrer\":\"\"},\"$device_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\"}; gr_user_id=408fef1a-77ed-4e74-8f1e-31dde3446f2e; prodOrg=11240984669917188035; unp=15632739166222045268; un=15632739166222045268; _up=-NillNN-qyBEJ--t3vnSknvoOF55zvOKs8QE1X09WOVdUvTDoZHQjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbrE_oXr4kj1QYE-flRv-ZNHu3M-GTc2JuzEnShr-tTi-kYkFLGPBVnrEj9mRTDoJuzcWA.; tmall=false; sensorsdata2015jssdkcross={\"distinct_id\":\"15632739166222045268\",\"first_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\",\"props\":{\"$latest_traffic_source_type\":\"直接流量\",\"$latest_search_keyword\":\"未取到值_直接打开\",\"$latest_referrer\":\"\"},\"$device_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\"}'\n",
|
||||
"\n",
|
||||
"cookies_str = cookies_str.encode('utf-8').decode('latin-1')\n",
|
||||
"\n",
|
||||
"cookie_dict = {item.split('=')[0]: item.split('=')[1]\n",
|
||||
" for item in cookies_str.split('; ')}\n",
|
||||
"\n",
|
||||
"headers = {\n",
|
||||
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40',\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" 'origin': 'https://yunxiu.f6car.cn'\n",
|
||||
"}\n",
|
||||
"df = pd.read_excel(r'C:\\Users\\admin\\Downloads\\工单列表导出.xlsx',sheet_name='Sheet1',dtype='string')\n",
|
||||
"df.fillna('', inplace=True)\n",
|
||||
"for i in range(1,len(df)):\n",
|
||||
" code = df.loc[i,'单号']\n",
|
||||
" pkid = df.loc[i,'ID']\n",
|
||||
" # 获取version\n",
|
||||
" res = requests.get(f'https://yunxiu.f6car.cn/maintain/onlineeditor/getOnlineEditorsNew?idSourceBill={pkid}&type=1',cookies=cookie_dict,headers=headers)\n",
|
||||
" version = res.json()['data']['version']\n",
|
||||
" data={\n",
|
||||
" \"pkId\": pkid,\n",
|
||||
" \"version\": version\n",
|
||||
" }\n",
|
||||
" res = requests.post(f'https://yunxiu.f6car.cn/maintain/detail/delMaintain',cookies=cookie_dict,headers=headers,json=data)\n",
|
||||
" print(i,code,res.json(),time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()))"
|
||||
]
|
||||
}
|
||||
],
|
||||
"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
|
||||
}
|
||||
@@ -0,0 +1,347 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## 材料信息删除"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"c:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\numpy\\_distributor_init.py:30: UserWarning: loaded more than 1 DLL from .libs:\n",
|
||||
"c:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\numpy\\.libs\\libopenblas.EL2C6PLE4ZYW3ECEVIV3OXXGRN2NRFM2.gfortran-win_amd64.dll\n",
|
||||
"c:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\numpy\\.libs\\libopenblas64__v0.3.21-gcc_10_3_0.dll\n",
|
||||
" warnings.warn(\"loaded more than 1 DLL from .libs:\"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"CL0005884 @ 14582097882978937643\n",
|
||||
"CL0005883 @ 14582097882978840768\n",
|
||||
"CL0005882 @ 14582097882978836413\n",
|
||||
"CL0005871 @ 14582097882978835910\n",
|
||||
"CL0005875 @ 14582097882978835914\n",
|
||||
"CL0005870 @ 14582097882978835909\n",
|
||||
"CL0005879 @ 14582097882978835918\n",
|
||||
"CL0005869 @ 14582097882978835908\n",
|
||||
"CL0005876 @ 14582097882978835915\n",
|
||||
"CL0005873 @ 14582097882978835912\n",
|
||||
"CL0005878 @ 14582097882978835917\n",
|
||||
"CL0005874 @ 14582097882978835913\n",
|
||||
"CL0005880 @ 14582097882978835919\n",
|
||||
"CL0005868 @ 14582097882978835907\n",
|
||||
"CL0005872 @ 14582097882978835911\n",
|
||||
"CL0005877 @ 14582097882978835916\n",
|
||||
"CL0005881 @ 14582097882978835920\n",
|
||||
"CL0005861 @ 14582097882978832878\n",
|
||||
"CL0005864 @ 14582097882978832881\n",
|
||||
"CL0005866 @ 14582097882978832883\n",
|
||||
"CL0005867 @ 14582097882978832884\n",
|
||||
"CL0005863 @ 14582097882978832880\n",
|
||||
"CL0005865 @ 14582097882978832882\n",
|
||||
"CL0005862 @ 14582097882978832879\n",
|
||||
"CL0005669 @ 14582097882978831686\n",
|
||||
"CL0005673 @ 14582097882978831690\n",
|
||||
"CL0005683 @ 14582097882978831700\n",
|
||||
"CL0005686 @ 14582097882978831703\n",
|
||||
"CL0005693 @ 14582097882978831710\n",
|
||||
"CL0005704 @ 14582097882978831721\n",
|
||||
"CL0005705 @ 14582097882978831722\n",
|
||||
"CL0005716 @ 14582097882978831733\n",
|
||||
"CL0005717 @ 14582097882978831734\n",
|
||||
"CL0005733 @ 14582097882978831750\n",
|
||||
"CL0005741 @ 14582097882978831758\n",
|
||||
"CL0005748 @ 14582097882978831765\n",
|
||||
"CL0005755 @ 14582097882978831772\n",
|
||||
"CL0005765 @ 14582097882978831782\n",
|
||||
"CL0005761 @ 14582097882978831778\n",
|
||||
"CL0005766 @ 14582097882978831783\n",
|
||||
"CL0005780 @ 14582097882978832797\n",
|
||||
"CL0005784 @ 14582097882978832801\n",
|
||||
"CL0005786 @ 14582097882978832803\n",
|
||||
"CL0005795 @ 14582097882978832812\n",
|
||||
"CL0005797 @ 14582097882978832814\n",
|
||||
"CL0005800 @ 14582097882978832817\n",
|
||||
"CL0005859 @ 14582097882978832876\n",
|
||||
"CL0005860 @ 14582097882978832877\n",
|
||||
"CL0005811 @ 14582097882978832828\n",
|
||||
"CL0005812 @ 14582097882978832829\n",
|
||||
"CL0005816 @ 14582097882978832833\n",
|
||||
"CL0005823 @ 14582097882978832840\n",
|
||||
"CL0005832 @ 14582097882978832849\n",
|
||||
"CL0005838 @ 14582097882978832855\n",
|
||||
"CL0005849 @ 14582097882978832866\n",
|
||||
"CL0005672 @ 14582097882978831689\n",
|
||||
"CL0005675 @ 14582097882978831692\n",
|
||||
"CL0005682 @ 14582097882978831699\n",
|
||||
"CL0005690 @ 14582097882978831707\n",
|
||||
"CL0005702 @ 14582097882978831719\n",
|
||||
"CL0005706 @ 14582097882978831723\n",
|
||||
"CL0005718 @ 14582097882978831735\n",
|
||||
"CL0005720 @ 14582097882978831737\n",
|
||||
"CL0005725 @ 14582097882978831742\n",
|
||||
"CL0005731 @ 14582097882978831748\n",
|
||||
"CL0005732 @ 14582097882978831749\n",
|
||||
"CL0005746 @ 14582097882978831763\n",
|
||||
"CL0005757 @ 14582097882978831774\n",
|
||||
"CL0005759 @ 14582097882978831776\n",
|
||||
"CL0005763 @ 14582097882978831780\n",
|
||||
"CL0005769 @ 14582097882978831786\n",
|
||||
"CL0005778 @ 14582097882978832795\n",
|
||||
"CL0005779 @ 14582097882978832796\n",
|
||||
"CL0005799 @ 14582097882978832816\n",
|
||||
"CL0005825 @ 14582097882978832842\n",
|
||||
"CL0005829 @ 14582097882978832846\n",
|
||||
"CL0005831 @ 14582097882978832848\n",
|
||||
"CL0005842 @ 14582097882978832859\n",
|
||||
"CL0005852 @ 14582097882978832869\n",
|
||||
"CL0005854 @ 14582097882978832871\n",
|
||||
"CL0005681 @ 14582097882978831698\n",
|
||||
"CL0005688 @ 14582097882978831705\n",
|
||||
"CL0005692 @ 14582097882978831709\n",
|
||||
"CL0005698 @ 14582097882978831715\n",
|
||||
"CL0005699 @ 14582097882978831716\n",
|
||||
"CL0005700 @ 14582097882978831717\n",
|
||||
"CL0005710 @ 14582097882978831727\n",
|
||||
"CL0005712 @ 14582097882978831729\n",
|
||||
"CL0005724 @ 14582097882978831741\n",
|
||||
"CL0005745 @ 14582097882978831762\n",
|
||||
"CL0005753 @ 14582097882978831770\n",
|
||||
"CL0005758 @ 14582097882978831775\n",
|
||||
"CL0005764 @ 14582097882978831781\n",
|
||||
"CL0005767 @ 14582097882978831784\n",
|
||||
"CL0005770 @ 14582097882978831787\n",
|
||||
"CL0005776 @ 14582097882978832793\n",
|
||||
"CL0005777 @ 14582097882978832794\n",
|
||||
"CL0005790 @ 14582097882978832807\n",
|
||||
"CL0005792 @ 14582097882978832809\n",
|
||||
"CL0005807 @ 14582097882978832824\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"import requests\n",
|
||||
"import json\n",
|
||||
"import xlrd\n",
|
||||
"from pprint import pprint\n",
|
||||
"cookies_str = 'f6-ids-goodsSESSIONID=af571e86-4e73-4006-9c8a-255f6977165c; erpLanguage=zh-CN; tmall=false; unp=10546443564007523766; _up=-NillNN-qyBEJ--t3vnSknvoOFt6yfeJtM4A1X8_WuBYVPLGoZ_QjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbqFPoUqI4i0wsJ9_JRv-ZNHu3M-GTZ25y3EXOrq-tRiesdlVTAORVprEj9-knQgcH6NGI.; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2215605564149906554899%22%2C%22first_id%22%3A%2217e08ece80f53a-0448dc86383ae5-3e604809-1327104-17e08ece81094e%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22https%3A%2F%2Fyunxiu.f6car.com%2Ferp%2Fview%2Findex.html%22%7D%2C%22%24device_id%22%3A%2217e08ece80f53a-0448dc86383ae5-3e604809-1327104-17e08ece81094e%22%7D; prodOrg=11240984669917926035'\n",
|
||||
"\n",
|
||||
"cookies_str = cookies_str.encode('utf-8').decode('latin-1')\n",
|
||||
"\n",
|
||||
"cookie_dict = {item.split('=')[0]: item.split('=')[1]\n",
|
||||
" for item in cookies_str.split('; ')}\n",
|
||||
"\n",
|
||||
"headers = {\n",
|
||||
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40',\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" 'origin': 'https://yunxiu.f6car.cn'\n",
|
||||
"}\n",
|
||||
"url = 'https://ids-goods.f6car.com/f6-ids-goods/part/getExactPartStockInfo'\n",
|
||||
"for a in range(1,56):\n",
|
||||
" json={\n",
|
||||
" 'applyModel': \"\",\n",
|
||||
" 'brand': \"\",\n",
|
||||
" 'categoryId': \"\",\n",
|
||||
" 'categoryName': \"\",\n",
|
||||
" 'currentPage': a,\n",
|
||||
" 'customCode': \"\",\n",
|
||||
" 'idOwnOrg': \"11240984669917926035\",\n",
|
||||
" 'keyWord': \"\",\n",
|
||||
" 'labelId': \"\",\n",
|
||||
" 'labelName': \"\",\n",
|
||||
" 'name': \"\",\n",
|
||||
" 'pageSize': 100,\n",
|
||||
" 'sellPurchaseStatuses': [2, 3, 4, 5],\n",
|
||||
" 'spec': \"\",\n",
|
||||
" 'supplierCode': \"\"\n",
|
||||
" }\n",
|
||||
" res = requests.post(url,cookies=cookie_dict,json=json)\n",
|
||||
" rr = res.json()\n",
|
||||
" le=len(rr['data']['records'])\n",
|
||||
" for i in range(0,le):\n",
|
||||
" id1={}\n",
|
||||
" rr0=rr['data']['records'][i]['customCode']\n",
|
||||
" rr1=rr['data']['records'][i]['infoId']\n",
|
||||
" print(rr0,\"@\",rr1)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"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": [
|
||||
"1\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"import requests\n",
|
||||
"import json\n",
|
||||
"import xlrd\n",
|
||||
"from pprint import pprint\n",
|
||||
"cookies_str = 'f6-ids-goodsSESSIONID=f20a1664-54ba-46e9-acad-3c911970b63b; gr_user_id=408fef1a-77ed-4e74-8f1e-31dde3446f2e; erpLanguage=zh-CN; tmall=false; unp=10546443564007523766; _up=-NillNN-qyBEJ--t3vnSknvoOFt6yfeJtM4A1X8_WuBYVPLGoZ_QjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbqFPoUqIgm1QMN-flRv-ZNHu3M-GTZ25y3EXOrq-tRiesdlVTAORVprEj9zRT49czKaSs.; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2210546443564007523766%22%2C%22first_id%22%3A%221750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%221750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0%22%7D; prodOrg=11240984669917926035'\n",
|
||||
"\n",
|
||||
"cookies_str = cookies_str.encode('utf-8').decode('latin-1')\n",
|
||||
"\n",
|
||||
"cookie_dict = {item.split('=')[0]: item.split('=')[1]\n",
|
||||
" for item in cookies_str.split('; ')}\n",
|
||||
"\n",
|
||||
"headers = {\n",
|
||||
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40',\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" 'origin': 'https://yunxiu.f6car.com'\n",
|
||||
"}\n",
|
||||
"result = []\n",
|
||||
"url = 'https://ids-goods.f6car.com/f6-ids-goods/part/getExactPartStockInfo'\n",
|
||||
"for a in range(1,60):\n",
|
||||
" try:\n",
|
||||
" json={\n",
|
||||
" 'applyModel': \"\",\n",
|
||||
" 'brand': \"\",\n",
|
||||
" 'categoryId': \"\",\n",
|
||||
" 'categoryName': \"\",\n",
|
||||
" 'currentPage': a,\n",
|
||||
" 'customCode': \"\",\n",
|
||||
" 'idOwnOrg': \"11240984669917926035\",\n",
|
||||
" 'keyWord': \"\",\n",
|
||||
" 'labelId': \"\",\n",
|
||||
" 'labelName': \"\",\n",
|
||||
" 'name': \"\",\n",
|
||||
" 'pageSize': 100,\n",
|
||||
" 'sellPurchaseStatuses': [2, 3, 4, 5],\n",
|
||||
" 'spec': \"\",\n",
|
||||
" 'supplierCode': \"\"\n",
|
||||
" }\n",
|
||||
" res = requests.post(url,cookies=cookie_dict,json=json)\n",
|
||||
" rr = res.json()\n",
|
||||
" le=len(rr['data']['records'])\n",
|
||||
" for i in range(0,le):\n",
|
||||
" applyModel=rr['data']['records'][i]['applyModel']\n",
|
||||
" infoId=rr['data']['records'][i]['infoId']\n",
|
||||
" name=rr['data']['records'][i]['name']\n",
|
||||
" accId=rr['data']['records'][i]['accId']\n",
|
||||
" supplierCode=rr['data']['records'][i]['supplierCode']\n",
|
||||
" brand=rr['data']['records'][i]['brand']\n",
|
||||
" result.append({'infoId':infoId,'材料编码':accId,'材料名称':name,'品牌':brand,'零件号':supplierCode,'规格型号':applyModel})\n",
|
||||
" print(a)\n",
|
||||
" except:\n",
|
||||
" pass\n",
|
||||
"df = pd.DataFrame(result)\n",
|
||||
"df.to_excel(r'C:\\Users\\admin\\Desktop\\88888888888888888888888888888888888888888品牌零件号查询云材料.xlsx')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"### 删除材料信息"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"c:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\numpy\\_distributor_init.py:30: UserWarning: loaded more than 1 DLL from .libs:\n",
|
||||
"c:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\numpy\\.libs\\libopenblas.EL2C6PLE4ZYW3ECEVIV3OXXGRN2NRFM2.gfortran-win_amd64.dll\n",
|
||||
"c:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\numpy\\.libs\\libopenblas64__v0.3.21-gcc_10_3_0.dll\n",
|
||||
" warnings.warn(\"loaded more than 1 DLL from .libs:\"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"<Response [200]> {'infoIds': ['14582097882978832878'], 'idOwnOrg': '10546443564007523756'}\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"import requests\n",
|
||||
"import json\n",
|
||||
"import xlrd\n",
|
||||
"from pprint import pprint\n",
|
||||
"import time\n",
|
||||
"cookies_str = 'f6-ids-goodsSESSIONID=f0a4838b-8512-4057-a826-0b1b8ba37c6d; gr_user_id=408fef1a-77ed-4e74-8f1e-31dde3446f2e; erpLanguage=zh-CN; prodOrg=10546443564007523756; unp=10546443564007523766; _up=-NillNN-qyBEJ--t3vnSknvoOFt6yfeJtM4A1X8_WuBYVPLGoZ_QjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbqFPoUoYMj0QQF_vFRv-ZNHu3M-GTZ25y3EXOrq-tRiesdlVTAORVprEj94m_voc22PGg.; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2210546443564007523766%22%2C%22first_id%22%3A%221750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%221750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0%22%7D; tmall=false'\n",
|
||||
"\n",
|
||||
"cookies_str = cookies_str.encode('utf-8').decode('latin-1')\n",
|
||||
"\n",
|
||||
"cookie_dict = {item.split('=')[0]: item.split('=')[1]\n",
|
||||
" for item in cookies_str.split('; ')}\n",
|
||||
"\n",
|
||||
"headers = {\n",
|
||||
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40',\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" 'origin': 'https://yunxiu.f6car.cn'\n",
|
||||
"}\n",
|
||||
"url = 'https://ids-goods.f6car.cn/f6-ids-goods/part/deletePartInfo'\n",
|
||||
"\n",
|
||||
"data = pd.read_excel(r\"C:\\Users\\admin\\Desktop\\材料信息删除.xlsx\", sheet_name='Sheet1')\n",
|
||||
"for a in data.index:\n",
|
||||
" infoId =data.loc[a,\"材料长码\"]\n",
|
||||
" json={\"infoIds\":[str(infoId)],\"idOwnOrg\":\"10546443564007523756\"}\n",
|
||||
" resquest = requests.post(url,cookies=cookie_dict,json=json)\n",
|
||||
" print(resquest,json)\n",
|
||||
" time.sleep(1)"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3.9.4 ('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,
|
||||
"vscode": {
|
||||
"interpreter": {
|
||||
"hash": "f83923c7d0b4d2e003073efbd633777fa3fd66b7578149f24f67f4796b9b3ac4"
|
||||
}
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
@@ -0,0 +1,134 @@
|
||||
# -*- coding:UTF-8 -*-
|
||||
# 功能:
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.support.ui import Select
|
||||
from selenium.webdriver import ActionChains
|
||||
import time
|
||||
import xlrd
|
||||
import xlwt
|
||||
import re
|
||||
import datetime
|
||||
from xlutils.copy import copy
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
|
||||
# 获取会员卡基础信息
|
||||
pkId = '4061359779622808474' # 手动获取
|
||||
name = '15888265981'
|
||||
password = 'F6123456'
|
||||
zhi = 1
|
||||
option_chrome = webdriver.ChromeOptions()
|
||||
option_chrome.add_argument('--headless')
|
||||
for hum in range(zhi):
|
||||
# http='https://yunxiu-trial.f6car.cn/member/customer/list?pageSize=5000&pageNo=1'
|
||||
httptx = 'https://yunxiu.f6car.cn'
|
||||
# 初步加载处理
|
||||
# chrom_opt = webdriver.ChromeOptions()
|
||||
# prefs = { "profile.managed_default_content_settings.images": 2 }
|
||||
# chrom_opt.add_experimental_option("prefs", prefs)
|
||||
# driver = webdriver.Chrome(executable_path="E:/Python/chromedriver.exe", chrome_options=chrom_opt)
|
||||
# 无显示预处理
|
||||
# option=webdriver.ChromeOptions()
|
||||
# option.add_argument('headless') # 设置option
|
||||
# driver = webdriver.Chrome(chrome_options=option)
|
||||
# 进入链接获取json
|
||||
# driver = webdriver.Chrome(chrome_options=option_chrome)
|
||||
driver = webdriver.Chrome(executable_path=r"C:\迅雷下载\python 暂存文件\Python\chromedriver.exe")
|
||||
driver.maximize_window()
|
||||
driver.implicitly_wait(0.2)
|
||||
|
||||
driver.get(httptx)
|
||||
driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[1]/div/div/input').send_keys(name)
|
||||
driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[2]/div/div[1]/input').send_keys(password)
|
||||
driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[3]/div/button/span').click()
|
||||
'''
|
||||
try:
|
||||
driver.find_element_by_xpath(
|
||||
'//*[@id="app"]/div/div[1]/div[2]/div/div/div[2]/div[2]/div/div[1]/div/div[1]/p[1]').click()
|
||||
except:
|
||||
print('未识别到多门店')
|
||||
'''
|
||||
time.sleep(4) # 预设时间
|
||||
print("登陆系统")
|
||||
print("创建文件")
|
||||
# 新建一个excel文件
|
||||
file = xlwt.Workbook() # 注意这里的Workbook首字母是大写,无语吧
|
||||
# 新建sheet
|
||||
table = file.add_sheet('sheet name', cell_overwrite_ok=True)
|
||||
|
||||
# 打开excel文件
|
||||
print("打开文件")
|
||||
data = xlrd.open_workbook(r'C:\Users\admin\Desktop\Python脚本\图形界面自动化脚本\F6系统常用脚本\Excel通用存储位置.xls')
|
||||
print(data)
|
||||
table = data.sheet_by_index(0) # 通过索引顺序获取
|
||||
h = table.nrows
|
||||
https = 'https://yunxiu.f6car.cn/kzf6/partInfo/newPageList.do?page=view%2Fmaterial.html%23/info/list/cloud'
|
||||
driver.get(https)
|
||||
# 传值转换
|
||||
driver.switch_to.frame('weixin-page-iframe')
|
||||
# 获取卡项目
|
||||
num = 0
|
||||
for i in range(0, h): # 浮点型
|
||||
|
||||
try:
|
||||
d1 = datetime.datetime.now()
|
||||
receiveAmount1 = table.cell(num, 0).value # 按行品牌
|
||||
receiveAmount2 = table.cell(num, 1).value # 按行零件号
|
||||
receiveAmount3 = table.cell(num, 2).value # 按行自编码
|
||||
# https='https://yunxiu-trial.f6car.cn/kzf6/member/index.do?page=/view/index.html%23/customer/detail/'+idMember
|
||||
# 进入链接获取json
|
||||
num = num + 1
|
||||
time.sleep(0.2)
|
||||
input_box = driver.find_element_by_xpath('/html/body/div/div/div/div/div/div/div/div/div[2]/div/div[3]/input')
|
||||
input_box.send_keys(Keys.CONTROL, 'a')
|
||||
input_box.send_keys(Keys.BACK_SPACE)
|
||||
# input_box.send_keys(Keys.CONTROL, 'v')
|
||||
driver.find_element_by_xpath('/html/body/div/div/div/div/div/div/div/div/div[2]/div/div[3]/input').send_keys(
|
||||
receiveAmount1)
|
||||
time.sleep(0.2)
|
||||
driver.find_element_by_xpath('/html/body/div/div/div/div/div/div/div/div/div[2]/div/div[3]/div/button/i').click()#确定
|
||||
time.sleep(0.2)
|
||||
|
||||
try:
|
||||
input1=driver.find_element_by_xpath('/html/body/div/div/div/div/div/div/div[2]/div[1]/div/div/ul/li/span')
|
||||
if input1.text==receiveAmount1:
|
||||
driver.find_element_by_xpath(
|
||||
'/html/body/div/div/div/div/div/div/div/div/div/div/ul/li[1]/span').click() # 选择
|
||||
time.sleep(0.2)
|
||||
input_box = driver.find_element_by_xpath(
|
||||
'/html/body/div/div/div/div/div/div/div/div/div[2]/div/div[3]/input')
|
||||
input_box.send_keys(Keys.CONTROL, 'a')
|
||||
input_box.send_keys(Keys.BACK_SPACE)
|
||||
# input_box.send_keys(Keys.CONTROL, 'v')
|
||||
driver.find_element_by_xpath(
|
||||
'/html/body/div/div/div/div/div/div/div/div/div[2]/div/div[3]/input').send_keys(receiveAmount2)
|
||||
time.sleep(0.2)
|
||||
driver.find_element_by_xpath(
|
||||
'/html/body/div/div/div/div/div/div/div/div/div[2]/div/div[3]/div/button/i').click() # 确定
|
||||
time.sleep(0.2)
|
||||
'//*[@id="cloudTable"]/div[1]/div[3]/table/tbody/tr/td[7]/div'
|
||||
input1 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div/div/table/tbody/tr[1]/td[2]/div')
|
||||
input2 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div/div/table/tbody/tr[1]/td[3]/div')
|
||||
input3 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div/div/table/tbody/tr[1]/td[5]/div')
|
||||
input4 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div/div/table/tbody/tr[1]/td[6]/div')
|
||||
input6 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div/div/table/tbody/tr[1]/td[7]/div')
|
||||
|
||||
input5 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div[2]/span')
|
||||
d3 = d1 + datetime.timedelta(hours=10)
|
||||
print(num, '@', receiveAmount3, '@', input1.text, '@', input2.text, '@', input3.text, '@', input4.text, '@', input6.text,'@', input5.text)
|
||||
except:
|
||||
print('未识别到品牌字段')
|
||||
'/html/body/div/div/div/div/div[2]/div[3]/div[2]/div[3]/div/button/span/i'
|
||||
driver.find_element_by_xpath(
|
||||
'/html/body/div/div/div/div/div/div/div/div/div/button/span/i').click() # 取消
|
||||
'''
|
||||
input1 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div/div/table/tbody/tr[1]/td[1]/div')
|
||||
input2 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div/div/table/tbody/tr[1]/td[2]/div')
|
||||
input3 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div/div/table/tbody/tr[1]/td[4]/div')
|
||||
input4 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div/div/table/tbody/tr[1]/td[6]/div')
|
||||
|
||||
input5 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div[2]/span')
|
||||
d3 = d1 + datetime.timedelta(hours=10)
|
||||
print(num, '@', input1.text, '@', input2.text, '@', input3.text, '@', input4.text, '@', input5.text)
|
||||
'''
|
||||
except:
|
||||
continue
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,103 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"11月—维修领料配件财务审统计表(汇总)已删除需减产值的.xls\n",
|
||||
"4月维修领料配件财务审统计表(汇总).xls\n",
|
||||
"5月材料同捷+畅天.xls\n",
|
||||
"报表---维修领料配件财务审统计表.xls\n",
|
||||
"报表--维修领料配件财务审统计表.xls\n",
|
||||
"报表-维修领料配件财务审统计表--汇总.xls\n",
|
||||
"报表-维修领料配件财务审统计表-汇总.xls\n",
|
||||
"报表-维修领料配件财务审统计表.xls\n",
|
||||
"报表-维修领料配件财务审统计表0228.xls\n",
|
||||
"报表-维修领料配件财务审统计表10..xls\n",
|
||||
"报表-维修领料配件财务审统计表10.xls\n",
|
||||
"报表-维修领料配件财务审统计表11.xls\n",
|
||||
"报表-维修领料配件财务审统计表12(4).xls\n",
|
||||
"报表-维修领料配件财务审统计表12月.xls\n",
|
||||
"报表-维修领料配件财务审统计表2019.xls\n",
|
||||
"报表-维修领料配件财务审统计表202001.xls\n",
|
||||
"报表-维修领料配件财务审统计表2021年9月.xls\n",
|
||||
"报表-维修领料配件财务审统计表202201.xls\n",
|
||||
"报表-维修领料配件财务审统计表331.xls\n",
|
||||
"报表-维修领料配件财务审统计表3月.xls\n",
|
||||
"报表-维修领料配件财务审统计表5.xls\n",
|
||||
"报表-维修领料配件财务审统计表6.xls\n",
|
||||
"报表-维修领料配件财务审统计表7.xls\n",
|
||||
"报表-维修领料配件财务审统计表8.xls\n",
|
||||
"报表-维修领料配件财务审统计表9.xls\n",
|
||||
"报表-维修领料配件财务审统计表—12月汇总.xls\n",
|
||||
"汇总----维修领料配件财务审统计表.xls\n",
|
||||
"汇总-维修领料配件财务审统计表.xls\n",
|
||||
"汇总-维修领料配件财务审统计表2月.xls\n",
|
||||
"汇总6月报表-维修领料配件财务审统计表.xls\n",
|
||||
"汇总7月报表-维修领料配件财务审统计表.xls\n",
|
||||
"汇总报表-维修领料配件财务审统计表.xls\n",
|
||||
"汇总报表.-维修领料配件财务审统计表.xls\n",
|
||||
"维修领料配件财务审统计表-2月.xls\n",
|
||||
"维修领料配件财务审统计表—10月汇总.xls\n",
|
||||
"维修领料配件财务审统计表—汇总.xls\n",
|
||||
"!维修领料配件财务审统计表-汇总一下.xls\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"<ipython-input-2-d7b0f52d1f5d>:18: UserWarning: Pandas requires version '1.4.3' or newer of 'xlsxwriter' (version '1.3.8' currently installed).\n",
|
||||
" merged_df.to_excel(output_file, index=False)\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"import os\n",
|
||||
"\n",
|
||||
"folder_path = r'C:\\Users\\admin\\Desktop\\历史记录(1)\\材料'\n",
|
||||
"excel_files = [f for f in os.listdir(folder_path) if f.endswith('.xlsx') or f.endswith('.xls')]\n",
|
||||
"\n",
|
||||
"# 读取每个Excel文件并将其存储在一个列表中\n",
|
||||
"dataframes = []\n",
|
||||
"for file in excel_files:\n",
|
||||
" print(file)\n",
|
||||
" file_path = os.path.join(folder_path, file)\n",
|
||||
" df = pd.read_excel(file_path)\n",
|
||||
" dataframes.append(df)\n",
|
||||
"\n",
|
||||
"merged_df = pd.concat(dataframes, ignore_index=True)\n",
|
||||
"\n",
|
||||
"output_file = '合并后材料.xlsx'\n",
|
||||
"merged_df.to_excel(output_file, index=False)"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "F6processing",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.9.4"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
@@ -0,0 +1,112 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"c:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\numpy\\_distributor_init.py:30: UserWarning: loaded more than 1 DLL from .libs:\n",
|
||||
"c:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\numpy\\.libs\\libopenblas.EL2C6PLE4ZYW3ECEVIV3OXXGRN2NRFM2.gfortran-win_amd64.dll\n",
|
||||
"c:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\numpy\\.libs\\libopenblas64__v0.3.21-gcc_10_3_0.dll\n",
|
||||
" warnings.warn(\"loaded more than 1 DLL from .libs:\"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"11月—维修产值财务审统计表(汇总)已删除需减产值的.xls\n",
|
||||
"4月维修产值财务审统计表(汇总).xls\n",
|
||||
"5月产值同捷+畅天.xls\n",
|
||||
"报表---维修产值财务审统计表.xls\n",
|
||||
"报表--维修产值财务审统计表.xls\n",
|
||||
"报表-维修产值财务审统计表--汇总.xls\n",
|
||||
"报表-维修产值财务审统计表-汇总.xls\n",
|
||||
"报表-维修产值财务审统计表.xls\n",
|
||||
"报表-维修产值财务审统计表0228.xls\n",
|
||||
"报表-维修产值财务审统计表10..xls\n",
|
||||
"报表-维修产值财务审统计表10.xls\n",
|
||||
"报表-维修产值财务审统计表11.xls\n",
|
||||
"报表-维修产值财务审统计表12月.xls\n",
|
||||
"报表-维修产值财务审统计表2019.xls\n",
|
||||
"报表-维修产值财务审统计表202101.xls\n",
|
||||
"报表-维修产值财务审统计表2021年9月.xls\n",
|
||||
"报表-维修产值财务审统计表202201.xls\n",
|
||||
"报表-维修产值财务审统计表331.xls\n",
|
||||
"报表-维修产值财务审统计表3月.xls\n",
|
||||
"报表-维修产值财务审统计表5.xls\n",
|
||||
"报表-维修产值财务审统计表6.xls\n",
|
||||
"报表-维修产值财务审统计表7.xls\n",
|
||||
"报表-维修产值财务审统计表8.xls\n",
|
||||
"报表-维修产值财务审统计表9.xls\n",
|
||||
"报表-维修产值财务审统计表—12月汇总.xls\n",
|
||||
"汇总----维修产值财务审统计表.xls\n",
|
||||
"汇总-维修产值财务审统计表.xls\n",
|
||||
"汇总-维修产值财务审统计表2月.xls\n",
|
||||
"汇总6月报表-维修产值财务审统计表.xls\n",
|
||||
"汇总7月报表-维修产值财务审统计表.xls\n",
|
||||
"汇总报表-维修产值财务审统计表.xls\n",
|
||||
"汇总报表.-维修产值财务审统计表.xls\n",
|
||||
"维修产值财务审统计表-2月.xls\n",
|
||||
"维修产值财务审统计表—10月汇总.xls\n",
|
||||
"维修产值财务审统计表—汇总.xls\n",
|
||||
"!维修产值财务审统计表-汇总一下.xls\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"<ipython-input-1-225ed455547c>:18: UserWarning: Pandas requires version '1.4.3' or newer of 'xlsxwriter' (version '1.3.8' currently installed).\n",
|
||||
" merged_df.to_excel(output_file, index=False)\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"import os\n",
|
||||
"\n",
|
||||
"folder_path = r'C:\\Users\\admin\\Desktop\\历史记录(1)\\产值'\n",
|
||||
"excel_files = [f for f in os.listdir(folder_path) if f.endswith('.xlsx') or f.endswith('.xls')]\n",
|
||||
"\n",
|
||||
"# 读取每个Excel文件并将其存储在一个列表中\n",
|
||||
"dataframes = []\n",
|
||||
"for file in excel_files:\n",
|
||||
" print(file)\n",
|
||||
" file_path = os.path.join(folder_path, file)\n",
|
||||
" df = pd.read_excel(file_path)\n",
|
||||
" dataframes.append(df)\n",
|
||||
"\n",
|
||||
"merged_df = pd.concat(dataframes, ignore_index=True)\n",
|
||||
"\n",
|
||||
"output_file = '合并后产值.xlsx'\n",
|
||||
"merged_df.to_excel(output_file, index=False)"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "F6processing",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.9.4"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"11月—维修工时财务审统计表(汇总)已删除需减产值的.xls\n",
|
||||
"4月维修工时财务审统计表(汇总).xls\n",
|
||||
"5月工时同捷+畅天.xls\n",
|
||||
"报表---维修工时财务审统计表.xls\n",
|
||||
"报表--维修工时财务审统计表.xls\n",
|
||||
"报表-维修工时财务审统计表--汇总.xls\n",
|
||||
"报表-维修工时财务审统计表-汇总.xls\n",
|
||||
"报表-维修工时财务审统计表.xls\n",
|
||||
"报表-维修工时财务审统计表0228.xls\n",
|
||||
"报表-维修工时财务审统计表10..xls\n",
|
||||
"报表-维修工时财务审统计表10.xls\n",
|
||||
"报表-维修工时财务审统计表11.xls\n",
|
||||
"报表-维修工时财务审统计表12月.xls\n",
|
||||
"报表-维修工时财务审统计表2019.xls\n",
|
||||
"报表-维修工时财务审统计表202101.xls\n",
|
||||
"报表-维修工时财务审统计表2021年9月.xls\n",
|
||||
"报表-维修工时财务审统计表202201.xls\n",
|
||||
"报表-维修工时财务审统计表331.xls\n",
|
||||
"报表-维修工时财务审统计表3月.xls\n",
|
||||
"报表-维修工时财务审统计表6.xls\n",
|
||||
"报表-维修工时财务审统计表7.xls\n",
|
||||
"报表-维修工时财务审统计表8.xls\n",
|
||||
"报表-维修工时财务审统计表9.xls\n",
|
||||
"报表-维修工时财务审统计表—12月汇总.xls\n",
|
||||
"汇总----维修工时财务审统计表.xls\n",
|
||||
"汇总-维修工时财务审统计表.xls\n",
|
||||
"汇总-维修工时财务审统计表2月.xls\n",
|
||||
"汇总6月报表-维修工时财务审统计表.xls\n",
|
||||
"汇总7月报表-维修工时财务审统计表.xls\n",
|
||||
"汇总报表-维修工时财务审统计表.xls\n",
|
||||
"汇总报表.-维修工时财务审统计表.xls\n",
|
||||
"维修工时财务审统计表-2月.xls\n",
|
||||
"维修工时财务审统计表—10月汇总.xls\n",
|
||||
"维修工时财务审统计表—汇总.xls\n",
|
||||
"!维修工时财务审统计表-汇总一下.xls\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"<ipython-input-3-a54f8128be16>:17: UserWarning: Pandas requires version '1.4.3' or newer of 'xlsxwriter' (version '1.3.8' currently installed).\n",
|
||||
" merged_df.to_excel(output_file, index=False)\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"import os\n",
|
||||
"\n",
|
||||
"folder_path = r'C:\\Users\\admin\\Desktop\\历史记录(1)\\工时'\n",
|
||||
"excel_files = [f for f in os.listdir(folder_path) if f.endswith('.xlsx') or f.endswith('.xls')]\n",
|
||||
"\n",
|
||||
"# 读取每个Excel文件并将其存储在一个列表中\n",
|
||||
"dataframes = []\n",
|
||||
"for file in excel_files:\n",
|
||||
" print(file)\n",
|
||||
" file_path = os.path.join(folder_path, file)\n",
|
||||
" df = pd.read_excel(file_path)\n",
|
||||
" dataframes.append(df)\n",
|
||||
"\n",
|
||||
"merged_df = pd.concat(dataframes, ignore_index=True)\n",
|
||||
"output_file = '合并后工时.xlsx'\n",
|
||||
"merged_df.to_excel(output_file, index=False)"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "F6processing",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.9.4"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
@@ -0,0 +1,382 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"表数据的行数为210,列数为2\n",
|
||||
"13084101247 0 14365556958328588048 : 10546443563809684189 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804496\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958328588048\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13096562469 0 15655280450073546798 : 11240984669917074568 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804497\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15655280450073546798\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13134871931 0 10546172455180031723 : 10546172455153749935 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804498\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455180031723\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13143461200 0 15477426816720838742 : 11240984669917165532 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804499\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15477426816720838742\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13149141143 0 10546172455234514111 : 10546443563654861858 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804500\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455234514111\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13149141143 1 10546172455234514111 : 11240984669917082528 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804501\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455234514111\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13170030052 0 14582097882792073980 : 11240984669917671535 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804502\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882792073980\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13172736740 0 15634284891867205679 : 11240984669917614026 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804503\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15634284891867205679\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13231661722 0 14365556958321342330 : 10546443563761385049 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804504\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958321342330\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13252159215 0 15621863064071061565 : 11240984669917578546 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804505\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15621863064071061565\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13253749993 0 14365556958323166338 : 10546443563772655608 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804506\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958323166338\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13320902011 0 15644792238037286950 : 11240984669917640199 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804507\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15644792238037286950\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13341026930 0 15516795996867661913 : 11240984669917109107 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804508\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15516795996867661913\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13341026930 1 15516795996867661913 : 11240984669917324032 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804509\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15516795996867661913\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13341026930 2 15516795996867661913 : 10546443563772655620 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804510\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15516795996867661913\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13348918449 0 14582097882780289253 : 10546443564026546883 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804511\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882780289253\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13353830804 0 15607757450747334666 : 11240984669917076077 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804512\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15607757450747334666\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13356660099 0 14582097882771362399 : 10546443563980415801 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804513\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882771362399\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13356895033 0 15419086738819203099 : 11240984669917013516 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804514\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15419086738819203099\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13386637308 0 10546172455180030284 : 10546050787356325512 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804515\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455180030284\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13457252947 0 15652661244060516429 : 11240984669917066578 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804516\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15652661244060516429\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13469725111 0 15454558237189214240 : 11240984669917116525 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804517\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15454558237189214240\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13472225525 0 14582097882772803317 : 10546443563990884979 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804518\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882772803317\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13508842871 0 14365556958315724725 : 10546443563710234005 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804519\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958315724725\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13508842871 1 14365556958315724725 : 11240984669917456533 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804520\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958315724725\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13509735502 0 10546172455231166525 : 10546172455231166542 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804521\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455231166525\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13521852845 0 15516160778360070196 : 11240984669917341029 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804522\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15516160778360070196\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13527433330 0 15498774411678322729 : 11240984669917322553 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804523\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15498774411678322729\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13527588826 0 15408809789215559775 : 11240984669916920582 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804524\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15408809789215559775\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13542343666 0 15486405891980267600 : 11240984669917190521 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804525\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15486405891980267600\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13572193083 0 10546172455180024665 : 11240984669917058054 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804526\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455180024665\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13572193083 1 10546172455180024665 : 11240984669917051036 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804527\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455180024665\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13572193083 2 10546172455180024665 : 11240984669917325046 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804528\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455180024665\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13572193083 3 10546172455180024665 : 11240984669917081563 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804529\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455180024665\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13610944443 0 14582097882812119282 : 11240984669917029058 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804530\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882812119282\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13621112531 0 15577335444466053123 : 10691192243963987046 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804531\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15577335444466053123\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13628715240 0 15670531276169834588 : 11240984669917340051 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804532\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15670531276169834588\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13637119818 0 15548020492995670079 : 10546443563860524123 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804533\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15548020492995670079\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13644121818 0 15454844702628520008 : 10691192243905800085 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804534\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15454844702628520008\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13654925482 0 14582097882792621975 : 10691192243938382620 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804535\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882792621975\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13654925482 1 14582097882792621975 : 11240984669917304842 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804536\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882792621975\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13663166918 0 10546443563704415552 : 10546443563703204802 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804537\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546443563704415552\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13664609354 0 15664389788843130964 : 10691192243928557589 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804538\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15664389788843130964\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13699932099 0 14365556958336471021 : 10546443563846903494 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804539\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958336471021\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13699932099 1 14365556958336471021 : 11240984669917108036 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804540\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958336471021\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13703829924 0 15551404104403136583 : 10545724654284683189 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804541\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15551404104403136583\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13704729167 0 14582097882780508638 : 11240984669917139536 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804542\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882780508638\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13706745920 0 10546172455180032810 : 10546172455170763509 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804543\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455180032810\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13720257818 0 15386439567133429779 : 11240984669917640177 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804544\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15386439567133429779\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13726678657 0 15483062767522418705 : 11240984669917116029 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804545\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15483062767522418705\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13733861617 0 10546172455193582497 : 10546172455192881887 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804546\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455193582497\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13750705085 0 14365556958315407316 : 10546443563713251614 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804547\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958315407316\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13756565277 0 14582097882801749963 : 10907434497309977926 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804548\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882801749963\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13769648332 0 15418572417219510283 : 11240984669917005516 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804549\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15418572417219510283\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13771033035 0 14582097882779535108 : 11240984669917041689 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804550\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882779535108\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13771033035 1 14582097882779535108 : 11240984669917094600 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804551\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882779535108\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13771033035 2 14582097882779535108 : 11240984669917042678 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804552\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882779535108\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13771033035 3 14582097882779535108 : 11240984669917089516 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804553\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882779535108\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13785610483 0 15642209571114602572 : 11240984669917500517 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804554\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15642209571114602572\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13785610483 1 15642209571114602572 : 11240984669917722281 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804555\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15642209571114602572\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13801049572 0 15483806845167996942 : 10546443563846887410 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804556\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15483806845167996942\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13801049572 1 15483806845167996942 : 10546443563667385385 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804557\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15483806845167996942\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13814658520 0 14582097882822500376 : 11240984669917070035 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804558\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882822500376\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13815850804 0 14582097882822732849 : 11240984669917075577 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804559\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882822732849\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13820299066 0 14365556958328424528 : 10546443563808567608 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804560\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958328424528\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13834164983 0 15383412198302867510 : 11240984669917485518 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804561\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15383412198302867510\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13834164983 1 15383412198302867510 : 11240984669917737714 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804562\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15383412198302867510\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13855445529 0 14582097882762078242 : 10546443563918222824 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804563\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882762078242\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13855445529 1 14582097882762078242 : 11240984669917388083 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804564\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882762078242\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13855445529 2 14582097882762078242 : 11240984669917670818 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804565\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882762078242\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13881905839 0 14582097882763068224 : 10546443563926014205 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804566\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882763068224\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13882114645 0 10546172455191863386 : 11240984669917055593 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804567\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455191863386\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13882114645 1 10546172455191863386 : 11240984669917058033 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804568\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455191863386\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13894891941 0 14365556958342912038 : 10546443563903522801 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804569\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958342912038\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13894891941 1 14365556958342912038 : 11240984669916892059 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804570\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958342912038\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13898911456 0 14365556958343125896 : 10546443563905175967 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804571\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958343125896\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13905130053 0 10546172455180025634 : 10545511425557179090 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804572\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455180025634\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13926689077 0 15387918248200687632 : 11240984669917068076 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804573\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15387918248200687632\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13940825660 0 15393905072245104675 : 11240984669917346526 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804574\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15393905072245104675\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13966729816 0 14582097882822895241 : 10907434497450512778 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804575\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882822895241\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13966729816 1 14582097882822895241 : 11240984669917201029 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804576\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882822895241\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13967369520 0 15479134043626278951 : 11240984669916923605 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804577\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15479134043626278951\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13970859533 0 14582097882811944564 : 10907434497369226917 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804578\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882811944564\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13970859533 1 14582097882811944564 : 11240984669917162518 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804579\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882811944564\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13971090477 0 15412027765460914178 : 11240984669917031558 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804580\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15412027765460914178\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13972926052 0 14582097882810914059 : 10907434497363731166 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804581\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882810914059\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13987233722 0 14582097882821862951 : 11240984669917027544 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804582\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882821862951\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"13998682517 0 15595500173306904610 : 11240984669917496519 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804583\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15595500173306904610\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15037199912 0 10546443563652930572 : 10546443563652930589 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804584\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546443563652930572\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15041187878 0 14365556958335260311 : 10546443563846895401 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804585\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958335260311\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15056898457 0 15665364314259210248 : 11240984669917052604 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804586\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15665364314259210248\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15061626715 0 10546172455180031833 : 10546172455157874869 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804587\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455180031833\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15071415865 0 14582097882822899622 : 11240984669917075079 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804588\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882822899622\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15094060610 0 14365556958342806150 : 10546443563902304693 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804589\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958342806150\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15119172877 0 15542664056878931998 : 11240984669917068577 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804590\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15542664056878931998\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15139302902 0 10546443563677183904 : 10546443563677592836 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804591\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546443563677183904\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15141344544 0 15540068992885465181 : 11240984669917340558 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804592\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15540068992885465181\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15145422888 0 14582097882774453302 : 10546443563994718349 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804593\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882774453302\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15161519000 0 15444733014805844029 : 11240984669917094600 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804594\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15444733014805844029\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15189102573 0 10546172455180026857 : 10545511425563997353 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804595\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455180026857\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15205348366 0 15434558374779293696 : 11240984669917059522 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804596\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15434558374779293696\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15235809909 0 10546443563673014870 : 10546443563888007235 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804597\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546443563673014870\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15240271100 0 10546443563703401678 : 10546443563722997239 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804598\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546443563703401678\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15292029236 0 14582097882822871040 : 10546443563753455462 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804599\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882822871040\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15304732017 0 14582097882784032487 : 10546443564045194949 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804600\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882784032487\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15305389999 0 15438232527516467211 : 11240984669917075525 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804601\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15438232527516467211\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15305389999 1 15438232527516467211 : 11240984669917320025 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804602\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15438232527516467211\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15307130681 0 15433884972728979506 : 11240984669917033058 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804603\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15433884972728979506\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15349921660 0 15428755180060938253 : 11240984669916901554 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804604\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15428755180060938253\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15351705982 0 15646928444871168008 : 11240984669917096695 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804605\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15646928444871168008\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15365014189 0 15524071847237783625 : 10546443563772660110 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804606\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15524071847237783625\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15368067083 0 14365556958340105100 : 10546443563883561403 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804607\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958340105100\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15506603699 0 14582097882803550931 : None {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804608\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882803550931\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15514097725 0 14582097882822699619 : 11240984669917342542 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804609\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882822699619\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15538410612 0 15551922566850424857 : 11240984669917020556 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804610\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15551922566850424857\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15544015606 0 15450567107212742680 : 11240984669917066087 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804611\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15450567107212742680\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15553735222 0 14365556958327741588 : 10546443563805250042 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804612\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958327741588\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15556831289 0 15611129082601820240 : 11240984669917545551 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804613\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15611129082601820240\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15564897977 0 14365556958321280494 : 10546443563761385018 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804614\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958321280494\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15611712299 0 10546443563680934860 : 11240984669917066077 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804615\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546443563680934860\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15684341158 0 15413526187795890212 : None {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804616\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15413526187795890212\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15701291789 0 15481235705283223590 : 11240984669917331043 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804617\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15481235705283223590\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15716621301 0 10546443563682533424 : 10907434497447412722 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804618\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546443563682533424\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15716621301 1 10546443563682533424 : 11240984669917140050 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804619\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546443563682533424\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15734737009 0 15459194581362413593 : 11240984669917053025 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804620\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15459194581362413593\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15803145012 0 15470110433242779665 : 11240984669917118521 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804621\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15470110433242779665\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15803145012 1 15470110433242779665 : 10546443563723002739 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804622\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15470110433242779665\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15809916955 0 14365556958321624883 : 10546443563767202690 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804623\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958321624883\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15811330638 0 15664717065288175668 : 11240984669917731021 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804624\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15664717065288175668\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15815757879 0 15486897794182025243 : 11240984669917330530 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804625\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15486897794182025243\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15821407811 0 14582097882801780424 : None {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804626\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882801780424\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15828945227 0 14365556958318476699 : 11240984669917584023 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804627\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958318476699\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15830492616 0 10546172455187599413 : 10546172455187881427 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804628\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455187599413\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15867407760 0 15645405324192530466 : 10545055917999719687 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804629\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15645405324192530466\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15883036830 0 15523376230945525841 : 11240984669917322603 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804630\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15523376230945525841\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15896850979 0 14365556958338470357 : 10546443563866231436 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804631\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958338470357\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15902245707 0 15429849475690008641 : 11240984669917047054 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804632\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15429849475690008641\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15903913677 0 14582097882817523971 : 10907434497400085871 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804633\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882817523971\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15914519972 0 14365556958326579070 : 11240984669917705560 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804634\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958326579070\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15926175050 0 15409611704736235570 : 11240984669917068594 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804635\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15409611704736235570\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15935551687 0 10546172455186072143 : 10546172455186072161 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804636\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455186072143\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15937683177 0 10546443563667180063 : 10546443563667180147 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804637\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546443563667180063\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15940865696 0 15541157543412772874 : 11240984669917349034 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804638\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15541157543412772874\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15941266279 0 15420430946809241610 : 11240984669917026548 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804639\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15420430946809241610\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15952051001 0 14582097882774651684 : 10546443563916755470 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804640\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882774651684\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15954760888 0 14582097882775479719 : None {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804641\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882775479719\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"15976981542 0 15494798719018082377 : None {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804642\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15494798719018082377\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"17310327169 0 15654960202036297768 : 11240984669917681553 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804643\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15654960202036297768\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"17310327169 1 15654960202036297768 : 11240984669917717131 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804644\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15654960202036297768\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"17361171775 0 15417563046733758471 : 11240984669917040542 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804645\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15417563046733758471\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"17397300016 0 10546172455180032996 : 10546443563960780262 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804646\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455180032996\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"17613650175 0 15659213020607823893 : 11240984669917067574 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804647\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15659213020607823893\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"17616554906 0 15622603032020140124 : 11240984669917426092 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804648\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15622603032020140124\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"17621029933 0 15656015072289902654 : 11240984669917700731 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804649\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15656015072289902654\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"17671296067 0 10546172455229881562 : 11240984669917068095 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804650\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455229881562\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"17671398899 0 14365556958332057016 : 10546443563828889284 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804651\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958332057016\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"17671398899 1 14365556958332057016 : 11240984669917328035 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804652\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958332057016\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"17752186513 0 15647715467416584212 : 11240984669917348530 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804653\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15647715467416584212\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"17773157222 0 15494734236694351947 : 11240984669917085051 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804654\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15494734236694351947\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"17795732496 0 15466851614869954561 : 11240984669917168527 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804655\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15466851614869954561\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18009084812 0 10546172455231778765 : 10546443563658312609 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804656\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455231778765\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18009084812 1 10546172455231778765 : 11240984669917496016 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804657\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455231778765\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18032293793 0 14582097882818812373 : 11240984669917128171 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804658\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882818812373\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18035818668 0 14582097882768428280 : 10691192243946427667 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804659\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882768428280\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18058188890 0 15656019828458672196 : 11240984669917698562 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804660\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15656019828458672196\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18059585999 0 15495431278693453877 : 11240984669917193517 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804661\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15495431278693453877\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18068801370 0 14582097882791329899 : 11240984669917043099 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804662\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882791329899\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18075784750 0 15663550217016328223 : 11240984669917738049 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804663\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15663550217016328223\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18075791000 0 15442863497779609622 : 11240984669917085041 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804664\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15442863497779609622\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18075791000 1 15442863497779609622 : 11240984669917738049 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804665\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15442863497779609622\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18090877604 0 15655936342502690911 : None {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804666\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15655936342502690911\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18098606198 0 10546172455180027018 : 10545511425565073559 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804667\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455180027018\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18103199133 0 15435373620406255680 : 11240984669917066523 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804668\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15435373620406255680\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18112882552 0 14582097882789879991 : 10691192243917935678 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804669\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882789879991\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18136362966 0 10546172455235298397 : 10546443563900963864 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804670\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455235298397\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18149055915 0 14365556958342685269 : 10546443563904836244 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804671\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958342685269\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18173299555 0 14365556958330582166 : 10546443563816610238 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804672\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958330582166\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18173299555 1 14365556958330582166 : 11240984669917457528 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804673\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958330582166\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18199229966 0 14365556958321214008 : 10546443563754919099 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804674\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958321214008\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18199229966 1 14365556958321214008 : 11240984669917255017 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804675\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958321214008\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18224727137 0 15439231587954196487 : 11240984669917096617 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804676\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15439231587954196487\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18224727137 1 15439231587954196487 : 11240984669917011523 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804677\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15439231587954196487\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18246825999 0 15593395625931063360 : 11240984669917438543 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804678\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15593395625931063360\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18257040311 0 15500149827680866371 : 10691192243941243947 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804679\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15500149827680866371\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18260579997 0 15432327575162064963 : 11240984669917041043 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804680\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15432327575162064963\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18260579997 1 15432327575162064963 : 11240984669917356018 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804681\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15432327575162064963\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18260579997 2 15432327575162064963 : 11240984669917529023 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804682\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15432327575162064963\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18292545111 0 14365556958315912141 : 11240984669917186075 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804683\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958315912141\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18297777080 0 15399461748444553268 : 11240984669916866026 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804684\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15399461748444553268\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18338376868 0 15527994867052453966 : 11240984669917067574 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804685\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15527994867052453966\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18340171717 0 15607417531415937058 : None {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804686\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15607417531415937058\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18361094005 0 15616494398374694947 : 11240984669917524517 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804687\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15616494398374694947\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18366770521 0 10546443563651054187 : 11240984669917630529 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804688\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546443563651054187\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18366770521 1 10546443563651054187 : 11240984669917021076 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804689\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546443563651054187\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18385153126 0 15514614918362963986 : None {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804690\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15514614918362963986\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18396116316 0 15453793591121420384 : 11240984669917058543 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804691\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15453793591121420384\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18452315177 0 14365556958316139990 : 11240984669916911550 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804692\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958316139990\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18524433799 0 15514663353506078724 : 11240984669917335535 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804693\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15514663353506078724\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18531515168 0 14365556958317743869 : 10546443563723021925 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804694\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958317743869\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18545005911 0 15513889906886713390 : 11240984669917644472 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804695\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15513889906886713390\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18576312406 0 15500932147224514629 : 11240984669917042098 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804696\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15500932147224514629\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18576312406 1 15500932147224514629 : 11240984669917102526 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804697\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15500932147224514629\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18576312406 2 15500932147224514629 : 11240984669917115529 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804698\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15500932147224514629\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18611639321 0 15538231972894617602 : 11240984669917350031 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804699\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15538231972894617602\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18612585799 0 14365556958326146909 : 10546172455159761837 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804700\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958326146909\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18622199443 0 10546443563680271200 : 10546443563876151610 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804701\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546443563680271200\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18628557990 0 14582097882787348062 : 11240984669917105073 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804702\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882787348062\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18628557990 1 14582097882787348062 : 11240984669917081563 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804703\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882787348062\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18638090871 0 15642949626124845093 : 11240984669917637602 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804704\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15642949626124845093\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18653475988 0 10546172455227741282 : 10546443563656464112 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804705\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455227741282\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18662997123 0 15469021882845503547 : 11240984669917147532 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804706\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15469021882845503547\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18668920258 0 14365556958318209518 : 10546443563722998819 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804707\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958318209518\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18669860863 0 15373712527854723145 : 10691192243961762604 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804708\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15373712527854723145\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18669860863 1 15373712527854723145 : 11240984669917378586 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804709\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15373712527854723145\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18670000078 0 10546172455231131828 : 10546443563665315338 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804710\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455231131828\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18671008383 0 15530657076043845657 : 11240984669917329620 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804711\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15530657076043845657\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18686669783 0 15387050183225303071 : 11240984669917031561 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804712\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15387050183225303071\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18705859599 0 14365556958327357892 : 10546443563802663245 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804713\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958327357892\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18712607162 0 15389602040883765306 : 11240984669917051581 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804714\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15389602040883765306\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18735221988 0 10546172455180033987 : 10546172455177477843 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804715\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455180033987\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18735221988 1 10546172455180033987 : 11240984669917039662 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804716\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455180033987\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18738969887 0 10546172455180031491 : 10546443563985538885 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804717\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455180031491\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18738969887 1 10546172455180031491 : 11240984669917496016 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804718\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455180031491\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18767308205 0 15536355514236543038 : None {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804719\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15536355514236543038\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18776732160 0 15663919242602893348 : 11240984669917066089 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804720\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15663919242602893348\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18800672828 0 10546172455180028773 : 10545724654292209692 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804721\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455180028773\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18800672828 1 10546172455180028773 : 11240984669917734286 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804722\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455180028773\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18909923693 0 15569371044706787384 : 11240984669917388546 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804723\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15569371044706787384\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18916586623 0 10546443563649477212 : 10546443563662141246 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804724\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546443563649477212\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18921476222 0 10546172455214824358 : 11240984669917206023 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804725\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546172455214824358\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18946552228 0 15658100199811727418 : 11240984669917710571 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804726\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15658100199811727418\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18946622227 0 15416443753887514720 : 11240984669916990519 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804727\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15416443753887514720\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18949658501 0 15493327195048255542 : 11240984669917185615 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804728\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15493327195048255542\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18991915336 0 10546443563692844943 : 10546443563710832463 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804729\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546443563692844943\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18991915336 1 10546443563692844943 : 11240984669916965034 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804730\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"10546443563692844943\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"18996480252 0 15541040030096044122 : 10546443563722987634 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804731\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15541040030096044122\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"19337550070 0 15600842357300285460 : 11240984669917067571 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804732\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15600842357300285460\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"19931943913 0 15513686770288959549 : 11240984669917147031 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804733\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15513686770288959549\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"19933002300 0 15665448789458571344 : 11240984669917074590 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804734\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"15665448789458571344\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"19976952809 0 14582097882767848645 : 10546172455173793094 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804735\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882767848645\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"19993869392 0 14582097882822899824 : 11240984669916892038 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804736\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14582097882822899824\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n",
|
||||
"19999211922 0 14365556958340975282 : 10546443563888005007 {\"code\":200,\"data\":{\"code\":\"\",\"error\":\"\",\"result\":[{\"code\":\"take_success\",\"couponIds\":[\"10804737\"],\"couponTemplateId\":\"137178\",\"couponTemplateName\":\"短信进阶包满300减60元优惠券\",\"customerId\":\"14365556958340975282\",\"failCount\":0,\"message\":\"领取成功\",\"successCount\":1}],\"sourceIp\":\"\",\"sourceStack\":\"\",\"success\":true},\"message\":\"SUCCESS\"}\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"import time\n",
|
||||
"import requests\n",
|
||||
"import json\n",
|
||||
"import xlrd\n",
|
||||
"\n",
|
||||
"cookies_str ='hive-adminSESSIONID=d91e99b8-fa2b-4c89-b17a-89a5abb2ce5b; sensorsdata2015jssdkcross={\"distinct_id\":\"0627252740652855\",\"first_id\":\"1753edeb75a603-0155d23aa05675-3d634f03-1327104-1753edeb75b347\",\"props\":{\"$latest_traffic_source_type\":\"直接流量\",\"$latest_search_keyword\":\"未取到值_直接打开\",\"$latest_referrer\":\"\"},\"$device_id\":\"1753edeb75a603-0155d23aa05675-3d634f03-1327104-1753edeb75b347\"}; _yg_prod=EkX_f7K7eYt61spccZtpCE7FHQQyLJPTP_kPD6E4jSHBSVLYfszIPQQqjcJjPPEZL0J2pO07cfpwVG-hQiHtBfYzvRdjXVIjT2H6eZnX9EGazQgL3YqvVma_W4j_-vDH247_STHNHRGDiyfdHndACpNXGE_oaRhA'\n",
|
||||
"\n",
|
||||
"cookies_str = cookies_str.encode('utf-8').decode('latin-1')\n",
|
||||
"\n",
|
||||
"cookie_dict = {item.split('=')[0]: item.split('=')[1]\n",
|
||||
" for item in cookies_str.split('; ')}\n",
|
||||
"\n",
|
||||
"headers = {\n",
|
||||
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40',\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" 'origin': 'https://yunxiu.f6car.cn'\n",
|
||||
"}\n",
|
||||
"data = xlrd.open_workbook(r\"C:\\Users\\admin\\Desktop\\新建XLS 工作表 (3).xls\")\n",
|
||||
"table = data.sheet_by_index(0) # 通过索引顺序获取\n",
|
||||
"h = table.nrows\n",
|
||||
"l = table.ncols\n",
|
||||
"print(u\"表数据的行数为%s,列数为%s\"%(h,l))\n",
|
||||
"for i in range(1,h):\n",
|
||||
" idMember = table.cell(i, 0).value #按行读取数据\n",
|
||||
" namecode = table.cell(i, 1).value #按行读取数据\n",
|
||||
" url1 = 'https://manage.f6yc.com/hive-admin/coupon/getUserInfoByCellPhone?cellPhone={}&pageSize=10¤tPage=1'.format(idMember)\n",
|
||||
" resget1 = requests.get(url1,cookies=cookie_dict)\n",
|
||||
" resget1 = json.loads(resget1.text)\n",
|
||||
"\n",
|
||||
" for v in range(0,len(resget1['data'])):#len(resget1['data'])\n",
|
||||
" customerId = resget1['data'][v]['passportId']\n",
|
||||
" employeeName = resget1['data'][v]['employeeName']\n",
|
||||
" applyOrg = resget1['data'][v]['groupId']\n",
|
||||
" # print(customerId,':',employeeName,':',applyOrg)\n",
|
||||
"\n",
|
||||
" url = 'https://manage.f6yc.com/hive-admin/coupon/takeCoupon'\n",
|
||||
" data_1 = {\n",
|
||||
" \"couponParamVoList\": [\n",
|
||||
" {\n",
|
||||
" \"couponTemplateId\": namecode,\n",
|
||||
" \"quantity\": 1,\n",
|
||||
" \"couponValue\": 50\n",
|
||||
" }\n",
|
||||
" ],\n",
|
||||
" \"customerList\": [\n",
|
||||
" {\n",
|
||||
" \"customerId\": customerId,\n",
|
||||
" \"customerName\":employeeName,\n",
|
||||
" \"cellPhone\": idMember\n",
|
||||
" }\n",
|
||||
" ],\n",
|
||||
" \"applyOrg\": applyOrg\n",
|
||||
" }\n",
|
||||
" res = requests.post(url,headers=headers,cookies=cookie_dict, json=data_1)\n",
|
||||
" time.sleep(0.05)\n",
|
||||
" # print(idMember,namecode,v,customerId,':',employeeName,':',applyOrg,\"打印出响应信息:\",res.text)\n",
|
||||
" print(idMember,v,customerId,':',applyOrg,res.text)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"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(day=1).strftime('%Y%m%d'))\n",
|
||||
"# 获取当月的最后一天\n",
|
||||
"last_day_of_month = int(today.replace(day=calendar.monthrange(today.year, today.month)[1]).strftime('%Y%m%d'))\n",
|
||||
"\n",
|
||||
"# sql语句 建表\n",
|
||||
"sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_sales_saas_to_renew_org_regular_income_d\" WHERE \"pt\" >= '{first_day_of_month}' AND \"pt\" <= '{last_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_details.to_excel(r'D:\\Idea Project\\F6+宜搭+其它(1)\\new\\文件输出\\NGV明细.xlsx')\n",
|
||||
"conn.close()"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "base",
|
||||
"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.12.4"
|
||||
},
|
||||
"orig_nbformat": 4
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
@@ -0,0 +1,218 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"表数据的行数为91,列数为2\n",
|
||||
"1 11794822649434107975\n",
|
||||
"2 11794822610343194660\n",
|
||||
"3 11794822584443367517\n",
|
||||
"4 11794822565963259947\n",
|
||||
"5 11794822565699022922\n",
|
||||
"6 11794822565447364615\n",
|
||||
"7 11794822565246034006\n",
|
||||
"8 11794822565216677917\n",
|
||||
"9 11794822564944048209\n",
|
||||
"10 11794822564927270948\n",
|
||||
"11 11794822564679807025\n",
|
||||
"12 11794822564650442822\n",
|
||||
"13 11794822564419760211\n",
|
||||
"14 11794822564117770335\n",
|
||||
"15 11794822564113571881\n",
|
||||
"16 11794822563870302277\n",
|
||||
"17 11794822563606065188\n",
|
||||
"18 11794822563606061089\n",
|
||||
"19 11794822563375378461\n",
|
||||
"20 11794822563333435457\n",
|
||||
"21 11794822563098554445\n",
|
||||
"22 11794822543263686738\n",
|
||||
"23 11794822491950571602\n",
|
||||
"24 11794822490675507289\n",
|
||||
"25 11794822490377707558\n",
|
||||
"26 11794822474674237441\n",
|
||||
"27 11794822458610049072\n",
|
||||
"28 11794822451718807606\n",
|
||||
"29 11794822444240367619\n",
|
||||
"30 11794822444068397105\n",
|
||||
"31 11794822411252162630\n",
|
||||
"32 11794822378691784767\n",
|
||||
"33 11794822369174909021\n",
|
||||
"34 11794821134514417726\n",
|
||||
"35 11794821129598693384\n",
|
||||
"36 11794819320947695684\n",
|
||||
"37 11794819311858642963\n",
|
||||
"38 11794818932647424069\n",
|
||||
"39 11794816766427815999\n",
|
||||
"40 11794816720122699835\n",
|
||||
"41 11794816716440104993\n",
|
||||
"42 11794816707707559948\n",
|
||||
"43 11794816704838656013\n",
|
||||
"44 11794816701361582109\n",
|
||||
"45 11794816693023305767\n",
|
||||
"46 11794816689835634737\n",
|
||||
"47 11794815182620876857\n",
|
||||
"48 11794814950390657101\n",
|
||||
"49 11794814939057643611\n",
|
||||
"50 11794814935995801671\n",
|
||||
"51 11794814852537540629\n",
|
||||
"52 11794814821025734689\n",
|
||||
"53 11794814815011102781\n",
|
||||
"54 11794814762888491027\n",
|
||||
"55 11794814746576842801\n",
|
||||
"56 11794814316601958474\n",
|
||||
"57 11794814300579717192\n",
|
||||
"58 11794814285660581912\n",
|
||||
"59 11794814284192571399\n",
|
||||
"60 11794814267016900666\n",
|
||||
"61 11794814260645752843\n",
|
||||
"62 11794814259467153426\n",
|
||||
"63 11794814242765434935\n",
|
||||
"64 11794814238688571416\n",
|
||||
"65 11794814217125650436\n",
|
||||
"66 11794814188063322141\n",
|
||||
"67 11794814181457289237\n",
|
||||
"68 11794814177149743170\n",
|
||||
"69 11794814149798682707\n",
|
||||
"70 11794814147940610103\n",
|
||||
"71 11794814146669735989\n",
|
||||
"72 11794814137962356767\n",
|
||||
"73 11794814134502056028\n",
|
||||
"74 11794814133474455559\n",
|
||||
"75 11794814133092769877\n",
|
||||
"76 11794814131868037199\n",
|
||||
"77 11794814119364816971\n",
|
||||
"78 11794814104173047877\n",
|
||||
"79 11794814080114516007\n",
|
||||
"80 11794814077321109574\n",
|
||||
"81 11794814076637442115\n",
|
||||
"82 11794814070358564923\n",
|
||||
"83 11794814070039801868\n",
|
||||
"84 11794814064218107931\n",
|
||||
"85 11794814059633729627\n",
|
||||
"86 11794814059004583971\n",
|
||||
"87 11794814051136069659\n",
|
||||
"88 11794814041791164418\n",
|
||||
"89 11794814038418944079\n",
|
||||
"90 11794814032739852385\n",
|
||||
"表数据的行数为91,列数为2\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# -*- coding:UTF-8 -*-\n",
|
||||
"from selenium import webdriver\n",
|
||||
"from selenium.webdriver.support.ui import Select\n",
|
||||
"from selenium.webdriver import ActionChains\n",
|
||||
"import time\n",
|
||||
"import xlrd\n",
|
||||
"import xlwt\n",
|
||||
"import re\n",
|
||||
"from xlutils.copy import copy\n",
|
||||
"from selenium.webdriver.common.keys import Keys\n",
|
||||
"from selenium.webdriver.support.ui import WebDriverWait\n",
|
||||
"import datetime\n",
|
||||
"import os\n",
|
||||
"from selenium.webdriver.support import expected_conditions as EC\n",
|
||||
"from selenium.webdriver.common.by import By\n",
|
||||
"from selenium.webdriver.support.wait import WebDriverWait\n",
|
||||
"import pandas as pd\n",
|
||||
"#获取基础信息\n",
|
||||
"name = '15888265981'\n",
|
||||
"password = 'Ff123456'\n",
|
||||
"option_chrome = webdriver.ChromeOptions()\n",
|
||||
"option_chrome.add_argument('--headless')\n",
|
||||
"A = 1\n",
|
||||
"for v in range(0,1000):\n",
|
||||
" try:\n",
|
||||
" http='https://m.f6car.cn/'\n",
|
||||
" #driver = webdriver.Chrome(chrome_options=option_chrome)\n",
|
||||
" driver = webdriver.Chrome(executable_path=r\"C:\\Users\\admin\\Desktop\\Python脚本\\chromedriver.exe\")\n",
|
||||
" driver.maximize_window()\n",
|
||||
" driver.implicitly_wait(2)\n",
|
||||
" driver.get(http)\n",
|
||||
"\n",
|
||||
" # 在输入框中输入账号和密码\n",
|
||||
" username = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"pane-username\"]/form/div[1]/div/div[1]/input')))\n",
|
||||
" enter = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"pane-username\"]/form/div[3]/div/button')))\n",
|
||||
" username.clear()\n",
|
||||
" username.send_keys(name)\n",
|
||||
" driver.find_element_by_xpath(r'//*[@id=\"pane-username\"]/form/div[2]/div/div[1]/input').send_keys(password)\n",
|
||||
" enter.click()\n",
|
||||
" time.sleep(2)#预设时间\n",
|
||||
" driver.find_element_by_xpath(\"//*[text()='长葛市顺达汽车销售服务有限公司']\").click() #点击公司\n",
|
||||
" time.sleep(5)#预设时间\n",
|
||||
" file = xlwt.Workbook()\n",
|
||||
" # table = file.add_sheet('sheet name', cell_overwrite_ok=True)\n",
|
||||
" #打开excel文件\n",
|
||||
" data = xlrd.open_workbook(r\"C:\\Users\\admin\\Desktop\\新建XLS 工作表 (6).xls\")\n",
|
||||
" # print(data)\n",
|
||||
" table = data.sheet_by_index(0) # 通过索引顺序获取\n",
|
||||
" h = table.nrows\n",
|
||||
" l = table.ncols\n",
|
||||
" print(u\"表数据的行数为%s,列数为%s\"%(h,l))\n",
|
||||
"\n",
|
||||
" for i in range(A,A+500):\n",
|
||||
" try:\n",
|
||||
" idMember =table.cell(i, 0).value #按行读取数据\n",
|
||||
" code_new =table.cell(i, 1).value #按行读取数据\n",
|
||||
" # idMembervin =table.cell(i, 1).value #按行读取数据\n",
|
||||
" https='https://yunxiu.f6car.cn/erp/view/index.html#/macan-view/cardManage/cardEdit/'+idMember #进入页面\n",
|
||||
" # driver.get(\"https://yunxiu.f6car.cn/erp/view/index.html#/\")\n",
|
||||
" driver.get(https)\n",
|
||||
" time.sleep(0.1)\n",
|
||||
" driver.get(https)\n",
|
||||
" time.sleep(0.3)\n",
|
||||
" try: \n",
|
||||
" # driver.find_element_by_xpath('//*[@id=\"app\"]/div/div/div/div/div/div/div/div/div/form/div/div/div/div/div/div/input').send_keys(code_new) # 输入卡号\n",
|
||||
" input_bos =driver.find_element_by_xpath('//*[@id=\"app\"]/div/div/div/div/div/div/div/div/div/form/div/div/div/div/div/div/input')\n",
|
||||
" # input_bos.send_keys(Keys.CONTROL, 'a')\n",
|
||||
" # input_bos.send_keys(Keys.BACK_SPACE)\n",
|
||||
" time.sleep(0.1)\n",
|
||||
" input_bos.clear()\n",
|
||||
" time.sleep(0.1)\n",
|
||||
" input_bos.send_keys(code_new)# 输入卡号\n",
|
||||
" time.sleep(0.1)\n",
|
||||
" driver.find_element_by_xpath('//*[@id=\"app\"]/div/div/div/div/div/div/button[1]/span').click() #点击保存\n",
|
||||
" time.sleep(0.1)\n",
|
||||
" print(i, idMember)\n",
|
||||
" A = A + 1\n",
|
||||
" except:\n",
|
||||
" driver.find_element_by_xpath('//*[@id=\"app\"]/div[3]/div/div[1]/div/span').click() # 新手引导\n",
|
||||
" time.sleep(0.1)\n",
|
||||
" except:\n",
|
||||
" pass\n",
|
||||
" except:\n",
|
||||
" driver.close()\n",
|
||||
" A = A + 1\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "F6processing",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.9.4"
|
||||
},
|
||||
"orig_nbformat": 4
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
# -*- coding:UTF-8 -*-
|
||||
#修改套餐卡-永久有效-按表格中的有效期进行处理
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.support.ui import Select
|
||||
from selenium.webdriver import ActionChains
|
||||
import time
|
||||
import xlrd
|
||||
import xlwt
|
||||
import re
|
||||
from xlutils.copy import copy
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
import datetime
|
||||
import os
|
||||
from selenium.webdriver.support import expected_conditions as EC
|
||||
from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver.support.wait import WebDriverWait
|
||||
import pandas as pd
|
||||
#获取基础信息
|
||||
name = '16621142776'
|
||||
password = 'f6wuyanzu'
|
||||
option_chrome = webdriver.ChromeOptions()
|
||||
option_chrome.add_argument('--headless')
|
||||
|
||||
http='https://m.f6car.cn/'
|
||||
#driver = webdriver.Chrome(chrome_options=option_chrome)
|
||||
driver = webdriver.Chrome(executable_path=r"C:\迅雷下载\python 暂存文件\Python\chromedriver.exe")
|
||||
driver.maximize_window()
|
||||
driver.implicitly_wait(2)
|
||||
driver.get(http)
|
||||
|
||||
# 在输入框中输入账号和密码
|
||||
username = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id="pane-username"]/form/div[1]/div/div[1]/input')))
|
||||
enter = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id="pane-username"]/form/div[3]/div/button')))
|
||||
username.clear()
|
||||
username.send_keys(name)
|
||||
driver.find_element_by_xpath(r'//*[@id="pane-username"]/form/div[2]/div/div[1]/input').send_keys(password)
|
||||
enter.click()
|
||||
time.sleep(15)#预设时间
|
||||
|
||||
file = xlwt.Workbook()
|
||||
table = file.add_sheet('sheet name', cell_overwrite_ok=True)
|
||||
#打开excel文件
|
||||
data = xlrd.open_workbook(r"C:\Users\admin\Desktop\Python脚本\图形界面自动化脚本\F6系统常用脚本\Excel通用存储位置.xls")
|
||||
print(data)
|
||||
table = data.sheet_by_index(0) # 通过索引顺序获取
|
||||
h = table.nrows
|
||||
l = table.ncols
|
||||
print(u"表数据的行数为%s,列数为%s"%(h,l))
|
||||
|
||||
for i in range(1,h):
|
||||
try:
|
||||
idMember =table.cell(i, 0).value #id
|
||||
#idMember1 =table.cell(i, 1).value #日期
|
||||
'''
|
||||
httpas='https://yunxiu.f6car.cn/cayenne/view/index.html#/cayenne-promotion/marketing/vipList'
|
||||
driver.get(httpas)
|
||||
time.sleep(0.5)
|
||||
try:
|
||||
driver.find_element_by_xpath('/html/body/div/div/div[3]/button[1]').click()
|
||||
time.sleep(0.5)
|
||||
except:
|
||||
a = 1
|
||||
'''
|
||||
https='https://yunxiu.f6car.cn/kzf6/macan/index.do?page=/view/index.html%23/macan-view/cardManage/cardEdit/'+idMember #进入页面
|
||||
driver.get(https)
|
||||
time.sleep(0.3)
|
||||
#传值转换
|
||||
driver.switch_to.frame('weixin-page-iframe')
|
||||
driver.find_element_by_xpath(
|
||||
'//*[@id="app"]/div[2]/div/div/div[2]/div[1]/div/div/div[1]/div[6]/form/div[2]/div[1]/div/div/div').click() #点击可以门店
|
||||
time.sleep(0.3)
|
||||
driver.find_element_by_xpath('//*[@id="app"]/div[2]/div/div/div[2]/div[1]/div/div/div[2]/div/div[2]/div/div[2]/table/thead/tr/th[1]/div/label/span/span').click()
|
||||
time.sleep(0.3)
|
||||
driver.find_element_by_xpath('//*[@id="app"]/div[2]/div/div/div[2]/div[1]/div/div/div[2]/div/div[3]/span/button[1]/span').click()
|
||||
time.sleep(0.3)
|
||||
driver.find_element_by_xpath('//*[@id="app"]/div[2]/div/div/div[2]/div[2]/div/button[1]/span').click()
|
||||
time.sleep(0.2)
|
||||
endtime = datetime.datetime.now()
|
||||
print(i,'@', idMember)
|
||||
except:
|
||||
print('失败')
|
||||
continue
|
||||
@@ -0,0 +1,289 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# -*- coding:UTF-8 -*-\n",
|
||||
"# 功能:F6修改项目信息-工时单价\n",
|
||||
"from selenium import webdriver\n",
|
||||
"from selenium.webdriver.support.ui import Select\n",
|
||||
"from selenium.webdriver import ActionChains\n",
|
||||
"import time\n",
|
||||
"import xlrd\n",
|
||||
"import xlwt\n",
|
||||
"import re\n",
|
||||
"from xlutils.copy import copy\n",
|
||||
"from selenium.webdriver.common.keys import Keys\n",
|
||||
"from selenium.webdriver.support.ui import WebDriverWait\n",
|
||||
"import datetime\n",
|
||||
"from selenium import webdriver\n",
|
||||
"from selenium.webdriver.support.ui import Select\n",
|
||||
"from selenium.webdriver import ActionChains\n",
|
||||
"import time\n",
|
||||
"import xlrd\n",
|
||||
"import xlwt\n",
|
||||
"import re\n",
|
||||
"from xlutils.copy import copy\n",
|
||||
"from selenium.webdriver.common.keys import Keys\n",
|
||||
"from selenium.webdriver.support.ui import WebDriverWait\n",
|
||||
"import datetime\n",
|
||||
"import os\n",
|
||||
"from selenium.webdriver.support import expected_conditions as EC\n",
|
||||
"from selenium.webdriver.common.by import By\n",
|
||||
"from selenium.webdriver.support.wait import WebDriverWait\n",
|
||||
"import pandas as pd\n",
|
||||
"\n",
|
||||
"# 获取会员卡基础信息\n",
|
||||
"name = '18906245518'\n",
|
||||
"password = 'Jb123456'\n",
|
||||
"option_chrome = webdriver.ChromeOptions()\n",
|
||||
"option_chrome.add_argument('--headless')\n",
|
||||
"\n",
|
||||
"http = 'https://m.f6car.cn/'\n",
|
||||
"# 进入链接获取json\n",
|
||||
"# driver = webdriver.Chrome(chrome_options=option_chrome)\n",
|
||||
"driver = webdriver.Chrome(executable_path=r\"C:\\Users\\admin\\Desktop\\Python脚本\\chromedriver.exe\")\n",
|
||||
"driver.maximize_window()\n",
|
||||
"driver.implicitly_wait(2)\n",
|
||||
"driver.get(http)\n",
|
||||
"driver.find_element_by_xpath('//*[@id=\"pane-username\"]/form/div[1]/div/div/input').send_keys(name)\n",
|
||||
"driver.find_element_by_xpath('//*[@id=\"pane-username\"]/form/div[2]/div/div[1]/input').send_keys(password)\n",
|
||||
"driver.find_element_by_xpath('//*[@id=\"pane-username\"]/form/div[3]/div/button/span').click()\n",
|
||||
"time.sleep(5) # 预设时间\n",
|
||||
"\n",
|
||||
"# 新建一个excel文件\n",
|
||||
"file = xlwt.Workbook() # 注意这里的Workbook首字母是大写,无语吧\n",
|
||||
"# 新建sheet\n",
|
||||
"table = file.add_sheet('sheet name', cell_overwrite_ok=True)\n",
|
||||
"if 1 == 1:\n",
|
||||
" he = 0\n",
|
||||
" hen = 0\n",
|
||||
" heng = 0\n",
|
||||
" hang = 0\n",
|
||||
" len = 0\n",
|
||||
"# 获取所有内容\n",
|
||||
"# 打开excel文件\n",
|
||||
"data = xlrd.open_workbook(r'C:\\Users\\admin\\Desktop\\新建XLS 工作表 (3).xls') \n",
|
||||
"print(data)\n",
|
||||
"table = data.sheet_by_index(0) # 通过索引顺序获取\n",
|
||||
"h = table.nrows\n",
|
||||
"l = table.ncols\n",
|
||||
"print(u\"表数据的行数为%s,列数为%s\" % (h, l))\n",
|
||||
"\n",
|
||||
"# 获取卡项目\n",
|
||||
"for i in range(1, h):\n",
|
||||
" starttime = datetime.datetime.now()\n",
|
||||
" idMember = table.cell(i, 0).value # 按行读取数据\n",
|
||||
" https = 'https://yunxiu.f6car.cn/erp/view/index.html#/index/frame?pageType=vue&toUrl=%2F%2Fids-goods.f6car.cn%2Ff6-ids-goods%2Fview%2FserviceInfo.html&_ts=1706520727551&route=%2FeditServiceInfo%2F3%2F'+idMember\n",
|
||||
" # http = 'https://yunxiu-trial.f6car.cn/kzf6/payment/toGathering.do?idSourceBill=' + idMember + '&billType=TKD'\n",
|
||||
" # 进入链接获取json\n",
|
||||
" driver.get(https)\n",
|
||||
" time.sleep(0.2)\n",
|
||||
" driver.switch_to.frame('erp-qiankun-iframe')\n",
|
||||
" driver.find_element_by_xpath('/html/body/div/div[1]/div[3]/span/button[1]/span').click()\n",
|
||||
" # enter = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'/html/body/div/div[1]/div[3]/span/button[1]/span')))\n",
|
||||
" # enter.clear()\n",
|
||||
" time.sleep(0.2)\n",
|
||||
" input_bos = driver.find_element_by_xpath('//*[@id=\"priceDialog\"]/form/div[3]/div/div/div/div[3]/table/tbody/tr[1]/td[2]/div/div/input')\n",
|
||||
" input_bos.send_keys(Keys.CONTROL, 'a')\n",
|
||||
" input_bos.send_keys(Keys.BACK_SPACE)\n",
|
||||
" input_bos.send_keys(38)\n",
|
||||
" # time.sleep(0.5)\n",
|
||||
" input_bos = driver.find_element_by_xpath('//*[@id=\"priceDialog\"]/form/div[3]/div/div/div/div[3]/table/tbody/tr[2]/td[2]/div/div/input')\n",
|
||||
" input_bos.send_keys(Keys.CONTROL, 'a')\n",
|
||||
" input_bos.send_keys(Keys.BACK_SPACE)\n",
|
||||
" input_bos.send_keys(38)\n",
|
||||
" # time.sleep(0.5)\n",
|
||||
" input_bos = driver.find_element_by_xpath('//*[@id=\"priceDialog\"]/form/div[3]/div/div/div/div[3]/table/tbody/tr[3]/td[2]/div/div/input')\n",
|
||||
" input_bos.send_keys(Keys.CONTROL, 'a')\n",
|
||||
" input_bos.send_keys(Keys.BACK_SPACE)\n",
|
||||
" input_bos.send_keys(38)\n",
|
||||
" # time.sleep(0.5)\n",
|
||||
" input_bos = driver.find_element_by_xpath('//*[@id=\"priceDialog\"]/form/div[3]/div/div/div/div[3]/table/tbody/tr[4]/td[2]/div/div/input')\n",
|
||||
" input_bos.send_keys(Keys.CONTROL, 'a')\n",
|
||||
" input_bos.send_keys(Keys.BACK_SPACE)\n",
|
||||
" input_bos.send_keys(38)\n",
|
||||
" # time.sleep(0.5)\n",
|
||||
" input_bos = driver.find_element_by_xpath('//*[@id=\"priceDialog\"]/form/div[3]/div/div/div/div[3]/table/tbody/tr[5]/td[2]/div/div/input')\n",
|
||||
" input_bos.send_keys(Keys.CONTROL, 'a')\n",
|
||||
" input_bos.send_keys(Keys.BACK_SPACE)\n",
|
||||
" input_bos.send_keys(38)\n",
|
||||
" time.sleep(0.2)\n",
|
||||
" driver.find_element_by_xpath('//*[@id=\"priceDialog\"]/div/button[1]/span').click()\n",
|
||||
" time.sleep(0.2)\n",
|
||||
" driver.switch_to.default_content()\n",
|
||||
" # 点击首页\n",
|
||||
" driver.find_element_by_xpath('/html/body/div[1]/div[1]/div[1]/div[1]/div/div[2]/div/div[1]/div').click()\n",
|
||||
" time.sleep(0.2)\n",
|
||||
" endtime = datetime.datetime.now()\n",
|
||||
" implement = (endtime - starttime).seconds\n",
|
||||
" print(i, implement)\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# 运行"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 20,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"<xlrd.book.Book object at 0x000001F1477FFD90>\n",
|
||||
"表数据的行数为3,列数为1\n",
|
||||
"1 4\n",
|
||||
"2 3\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# -*- coding:UTF-8 -*-\n",
|
||||
"# 功能:F6修改项目信息-工时单价\n",
|
||||
"from selenium import webdriver\n",
|
||||
"from selenium.webdriver.support.ui import Select\n",
|
||||
"from selenium.webdriver import ActionChains\n",
|
||||
"import time\n",
|
||||
"import xlrd\n",
|
||||
"import xlwt\n",
|
||||
"import re\n",
|
||||
"from xlutils.copy import copy\n",
|
||||
"from selenium.webdriver.common.keys import Keys\n",
|
||||
"from selenium.webdriver.support.ui import WebDriverWait\n",
|
||||
"import datetime\n",
|
||||
"from selenium import webdriver\n",
|
||||
"from selenium.webdriver.support.ui import Select\n",
|
||||
"from selenium.webdriver import ActionChains\n",
|
||||
"import time\n",
|
||||
"import xlrd\n",
|
||||
"import xlwt\n",
|
||||
"import re\n",
|
||||
"from xlutils.copy import copy\n",
|
||||
"from selenium.webdriver.common.keys import Keys\n",
|
||||
"from selenium.webdriver.support.ui import WebDriverWait\n",
|
||||
"import datetime\n",
|
||||
"import os\n",
|
||||
"from selenium.webdriver.support import expected_conditions as EC\n",
|
||||
"from selenium.webdriver.common.by import By\n",
|
||||
"from selenium.webdriver.support.wait import WebDriverWait\n",
|
||||
"import pandas as pd\n",
|
||||
"\n",
|
||||
"# 获取会员卡基础信息\n",
|
||||
"name = '18906245518'\n",
|
||||
"password = 'Jb123456'\n",
|
||||
"option_chrome = webdriver.ChromeOptions()\n",
|
||||
"option_chrome.add_argument('--headless')\n",
|
||||
"\n",
|
||||
"http = 'https://m.f6car.cn/'\n",
|
||||
"# 进入链接获取json\n",
|
||||
"# driver = webdriver.Chrome(chrome_options=option_chrome)\n",
|
||||
"driver = webdriver.Chrome(executable_path=r\"C:\\Users\\admin\\Desktop\\Python脚本\\chromedriver.exe\")\n",
|
||||
"driver.maximize_window()\n",
|
||||
"driver.implicitly_wait(2)\n",
|
||||
"driver.get(http)\n",
|
||||
"driver.find_element_by_xpath('//*[@id=\"pane-username\"]/form/div[1]/div/div/input').send_keys(name)\n",
|
||||
"driver.find_element_by_xpath('//*[@id=\"pane-username\"]/form/div[2]/div/div[1]/input').send_keys(password)\n",
|
||||
"driver.find_element_by_xpath('//*[@id=\"pane-username\"]/form/div[3]/div/button/span').click()\n",
|
||||
"time.sleep(10) # 预设时间\n",
|
||||
"\n",
|
||||
"# 新建一个excel文件\n",
|
||||
"file = xlwt.Workbook() # 注意这里的Workbook首字母是大写,无语吧\n",
|
||||
"# 新建sheet\n",
|
||||
"table = file.add_sheet('sheet name', cell_overwrite_ok=True)\n",
|
||||
"if 1 == 1:\n",
|
||||
" he = 0\n",
|
||||
" hen = 0\n",
|
||||
" heng = 0\n",
|
||||
" hang = 0\n",
|
||||
" len = 0\n",
|
||||
"# 获取所有内容\n",
|
||||
"# 打开excel文件\n",
|
||||
"data = xlrd.open_workbook(r'C:\\Users\\admin\\Desktop\\新建XLS 工作表 (3).xls') \n",
|
||||
"print(data)\n",
|
||||
"table = data.sheet_by_index(0) # 通过索引顺序获取\n",
|
||||
"h = table.nrows\n",
|
||||
"l = table.ncols\n",
|
||||
"print(u\"表数据的行数为%s,列数为%s\" % (h, l))\n",
|
||||
"\n",
|
||||
"# 获取卡项目\n",
|
||||
"for i in range(1, h):\n",
|
||||
" starttime = datetime.datetime.now()\n",
|
||||
" idMember = table.cell(i, 0).value # 按行读取数据\n",
|
||||
" https = 'https://yunxiu.f6car.cn/erp/view/index.html#/index/frame?pageType=vue&toUrl=%2F%2Fids-goods.f6car.cn%2Ff6-ids-goods%2Fview%2FserviceInfo.html&_ts=1706520727551&route=%2FeditServiceInfo%2F3%2F'+idMember\n",
|
||||
" # http = 'https://yunxiu-trial.f6car.cn/kzf6/payment/toGathering.do?idSourceBill=' + idMember + '&billType=TKD'\n",
|
||||
" # 进入链接获取json\n",
|
||||
" driver.get(https)\n",
|
||||
" time.sleep(0.2)\n",
|
||||
" driver.switch_to.frame('erp-qiankun-iframe')\n",
|
||||
" driver.find_element_by_xpath('/html/body/div/div[1]/div[3]/span/button[1]/span').click()\n",
|
||||
" # enter = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'/html/body/div/div[1]/div[3]/span/button[1]/span')))\n",
|
||||
" # enter.clear()\n",
|
||||
" time.sleep(0.2)\n",
|
||||
" input_bos = driver.find_element_by_xpath('//*[@id=\"priceDialog\"]/form/div[3]/div/div/div/div[3]/table/tbody/tr[1]/td[2]/div/div/input')\n",
|
||||
" input_bos.send_keys(Keys.CONTROL, 'a')\n",
|
||||
" input_bos.send_keys(Keys.BACK_SPACE)\n",
|
||||
" input_bos.send_keys(38)\n",
|
||||
" # time.sleep(0.5)\n",
|
||||
" input_bos = driver.find_element_by_xpath('//*[@id=\"priceDialog\"]/form/div[3]/div/div/div/div[3]/table/tbody/tr[2]/td[2]/div/div/input')\n",
|
||||
" input_bos.send_keys(Keys.CONTROL, 'a')\n",
|
||||
" input_bos.send_keys(Keys.BACK_SPACE)\n",
|
||||
" input_bos.send_keys(38)\n",
|
||||
" # time.sleep(0.5)\n",
|
||||
" input_bos = driver.find_element_by_xpath('//*[@id=\"priceDialog\"]/form/div[3]/div/div/div/div[3]/table/tbody/tr[3]/td[2]/div/div/input')\n",
|
||||
" input_bos.send_keys(Keys.CONTROL, 'a')\n",
|
||||
" input_bos.send_keys(Keys.BACK_SPACE)\n",
|
||||
" input_bos.send_keys(38)\n",
|
||||
" # time.sleep(0.5)\n",
|
||||
" input_bos = driver.find_element_by_xpath('//*[@id=\"priceDialog\"]/form/div[3]/div/div/div/div[3]/table/tbody/tr[4]/td[2]/div/div/input')\n",
|
||||
" input_bos.send_keys(Keys.CONTROL, 'a')\n",
|
||||
" input_bos.send_keys(Keys.BACK_SPACE)\n",
|
||||
" input_bos.send_keys(38)\n",
|
||||
" # time.sleep(0.5)\n",
|
||||
" input_bos = driver.find_element_by_xpath('//*[@id=\"priceDialog\"]/form/div[3]/div/div/div/div[3]/table/tbody/tr[5]/td[2]/div/div/input')\n",
|
||||
" input_bos.send_keys(Keys.CONTROL, 'a')\n",
|
||||
" input_bos.send_keys(Keys.BACK_SPACE)\n",
|
||||
" input_bos.send_keys(38)\n",
|
||||
" time.sleep(0.2)\n",
|
||||
" driver.find_element_by_xpath('//*[@id=\"priceDialog\"]/div/button[1]/span').click()\n",
|
||||
" time.sleep(0.2)\n",
|
||||
" driver.switch_to.default_content()\n",
|
||||
" # 点击首页\n",
|
||||
" driver.find_element_by_xpath('/html/body/div[1]/div[1]/div[1]/div[1]/div/div[2]/div/div[1]/div').click()\n",
|
||||
" time.sleep(0.2)\n",
|
||||
" endtime = datetime.datetime.now()\n",
|
||||
" implement = (endtime - starttime).seconds\n",
|
||||
" print(i, implement)\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "F6processing",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.9.4"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
@@ -0,0 +1,141 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# 获取储值卡现有属性信息,组合生成修改需要的载荷内容"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"{'code': 200, 'data': None, 'errInfo': None, 'ext': None, 'info': None, 'message': '', 'msg': 'success', 'traceId': ''}\n",
|
||||
"{'code': 200, 'data': None, 'errInfo': None, 'ext': None, 'info': None, 'message': '', 'msg': 'success', 'traceId': ''}\n",
|
||||
"{'code': 200, 'data': None, 'errInfo': None, 'ext': None, 'info': None, 'message': '', 'msg': 'success', 'traceId': ''}\n",
|
||||
"{'code': 200, 'data': None, 'errInfo': None, 'ext': None, 'info': None, 'message': '', 'msg': 'success', 'traceId': ''}\n",
|
||||
"{'code': 200, 'data': None, 'errInfo': None, 'ext': None, 'info': None, 'message': '', 'msg': 'success', 'traceId': ''}\n",
|
||||
"{'code': 200, 'data': None, 'errInfo': None, 'ext': None, 'info': None, 'message': '', 'msg': 'success', 'traceId': ''}\n",
|
||||
"{'code': 200, 'data': None, 'errInfo': None, 'ext': None, 'info': None, 'message': '', 'msg': 'success', 'traceId': ''}\n",
|
||||
"{'code': 200, 'data': None, 'errInfo': None, 'ext': None, 'info': None, 'message': '', 'msg': 'success', 'traceId': ''}\n",
|
||||
"{'code': 200, 'data': None, 'errInfo': None, 'ext': None, 'info': None, 'message': '', 'msg': 'success', 'traceId': ''}\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# # 获取储值卡现有属性信息,组合生成修改需要的载荷内容\n",
|
||||
"import pandas as pd\n",
|
||||
"import time\n",
|
||||
"import requests\n",
|
||||
"import json\n",
|
||||
"import datetime\n",
|
||||
"\n",
|
||||
"cookies_str = 'marketingSESSIONID=0082626e-060f-46e6-acc3-f220b7439091; gr_user_id=408fef1a-77ed-4e74-8f1e-31dde3446f2e; erpLanguage=zh-CN; prodOrg=11240984669918116047; unp=15852100371620065343; un=15852100371620065343; _up=-NillNN-qyBEJ--t3vnSknvoOF53yPOMsM0G1Ho5WOddUPTCo5rQjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbqFvYWrYkh0wAO_PJRv-ZNHu3M-GTc1p2zFHeorepUj-kakFDGPRdsrEj9zBy995e3SxM.; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2215852100371620065343%22%2C%22first_id%22%3A%221750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%221750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0%22%7D; tmall=false; Hm_lvt_25f5e7a3a5dbb293d7dd35d5f1be8d0a=1724314408,1724655996,1724923121,1725242343; HMACCOUNT=B4D963E4DD28B6C3; Hm_lpvt_25f5e7a3a5dbb293d7dd35d5f1be8d0a=1725242520'\n",
|
||||
"\n",
|
||||
"cookies_str = cookies_str.encode('utf-8').decode('latin-1')\n",
|
||||
"\n",
|
||||
"cookie_dict = {item.split('=')[0]: item.split('=')[1]\n",
|
||||
" for item in cookies_str.split('; ')}\n",
|
||||
"headers = {\n",
|
||||
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40',\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"try:\n",
|
||||
" df = pd.read_excel(r'C:\\Users\\admin\\Desktop\\会员卡信息 (鸿宇).xlsx',sheet_name='会员卡详情',dtype='string')\n",
|
||||
" for da in df.values:\n",
|
||||
" # 获取储值卡属性信息\n",
|
||||
" url_version = 'https://yunxiu.f6car.cn/marketing/card/detail/'+da[0]\n",
|
||||
" res_version = requests.get(url_version,cookies=cookie_dict,headers=headers)\n",
|
||||
" res_version = res_version.json()\n",
|
||||
" # 获取储值卡属性信息\n",
|
||||
" url = 'https://yunxiu.f6car.cn/macan/card/entity/czk/queryWithBenefit?pkId='+da[0]\n",
|
||||
" res = requests.get(url,cookies=cookie_dict,headers=headers)\n",
|
||||
" res = res.json()\n",
|
||||
" # 组合载荷内容\n",
|
||||
" # 时间戳转格式\n",
|
||||
" timestamp = res['info']['entityDTO']['endDate'] / 1000\n",
|
||||
" dt_object = datetime.datetime.fromtimestamp(timestamp)\n",
|
||||
" endDate = dt_object.strftime(\"%Y-%m-%d %H:%M:%S\")\n",
|
||||
" # 提取carInfoList\n",
|
||||
" carInfoList = []\n",
|
||||
" for carInfo in res['info']['carInfoList']:\n",
|
||||
" List = {\n",
|
||||
" \"idCar\": carInfo['idCar'],\n",
|
||||
" \"idCustomer\": carInfo['idCustomer']\n",
|
||||
" }\n",
|
||||
" carInfoList.append(List)\n",
|
||||
" # 提取cardEntityBusinessList\n",
|
||||
" cardEntityBusinessList = []\n",
|
||||
" for cardEntityBusiness in res['info']['valueCardBusinessDiscountInfoList']:\n",
|
||||
" List = {\n",
|
||||
" \"labelName\": cardEntityBusiness['labelName'],\n",
|
||||
" \"businessType\": cardEntityBusiness['businessType'],\n",
|
||||
" \"labelId\": cardEntityBusiness['labelId']\n",
|
||||
" }\n",
|
||||
" cardEntityBusinessList.append(List)\n",
|
||||
" # 提取cardEntityBusinessDiscountList\n",
|
||||
" cardEntityBusinessDiscountList = []\n",
|
||||
" for cardEntityBusinessDiscount in res['info']['valueCardBusinessDiscountInfoList']:\n",
|
||||
" List = {\n",
|
||||
" \"labelName\": cardEntityBusinessDiscount['labelName'],\n",
|
||||
" \"businessType\": cardEntityBusinessDiscount['businessType'],\n",
|
||||
" \"discount\": cardEntityBusinessDiscount['discount'],\n",
|
||||
" \"labelId\": cardEntityBusinessDiscount['labelId']\n",
|
||||
" }\n",
|
||||
" cardEntityBusinessDiscountList.append(List)\n",
|
||||
" data = {\n",
|
||||
" \"id\": res['info']['entityDTO']['pkId'],\n",
|
||||
" \"carList\": carInfoList,\n",
|
||||
" \"cardNo\": res['info']['entityDTO']['memberCardNo'],\n",
|
||||
" \"memo\": res['info']['entityDTO']['memo'],\n",
|
||||
" \"useTerm\": res['info']['entityDTO']['useTerm'],\n",
|
||||
" \"idCustomer\": res['info']['entityDTO']['idCustomer'],\n",
|
||||
" \"version\": res_version['data']['version'],\n",
|
||||
" \"useType\": res['info']['entityDTO']['useType'],\n",
|
||||
" \"consumeLimitFlag\": res['info']['entityDTO']['consumeLimitFlag'],\n",
|
||||
" \"consumeLimitAmount\": int(float(res['info']['entityDTO']['consumeLimitAmount'])),\n",
|
||||
" \"permanent\": res['info']['entityDTO']['permanent'],\n",
|
||||
" \"endDate\": endDate,\n",
|
||||
" \"cardEntityBusinessList\": cardEntityBusinessList,\n",
|
||||
" \"cardEntityBusinessDiscountList\": cardEntityBusinessDiscountList,\n",
|
||||
" \"businessType\": 1,\n",
|
||||
" \"cardEntitySkuDiscountList\": res['info']['valueCardEntitySkuDiscountInfoList']\n",
|
||||
" }\n",
|
||||
" url = 'https://yunxiu.f6car.cn/marketing/card/modifyCzkCardEntity4Gray'\n",
|
||||
" res = requests.post(url,cookies=cookie_dict,headers=headers,json=data)\n",
|
||||
" res = res.json()\n",
|
||||
" print(res,da[0])\n",
|
||||
"except:\n",
|
||||
" pass"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "base",
|
||||
"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.12.4"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
@@ -0,0 +1,214 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"C:\\Users\\杨国栋\\AppData\\Local\\Temp/ipykernel_2228/4239557569.py:23: DeprecationWarning: executable_path has been deprecated, please pass in a Service object\n",
|
||||
" driver = webdriver.Chrome(executable_path=r'C:\\chromedriver\\chromedriver_107\\chromedriver.exe')\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"from selenium import webdriver\n",
|
||||
"from selenium.webdriver.support.ui import Select\n",
|
||||
"from selenium.webdriver import ActionChains\n",
|
||||
"import time\n",
|
||||
"import xlrd\n",
|
||||
"import xlwt\n",
|
||||
"import re\n",
|
||||
"import datetime\n",
|
||||
"import pandas as pd\n",
|
||||
"from xlutils.copy import copy\n",
|
||||
"from selenium.webdriver.common.keys import Keys\n",
|
||||
"from selenium.webdriver.common.action_chains import ActionChains\n",
|
||||
"from selenium.webdriver.common.by import By\n",
|
||||
"\n",
|
||||
"#获取会员卡基础信息\n",
|
||||
"name = '15882131247'\n",
|
||||
"password = 'Ff123456'\n",
|
||||
"option_chrome = webdriver.ChromeOptions()\n",
|
||||
"option_chrome.add_argument('--headless')\n",
|
||||
"\n",
|
||||
"http='https://m.f6car.cn/'\n",
|
||||
"\n",
|
||||
"driver = webdriver.Chrome(executable_path=r'C:\\chromedriver\\chromedriver_113\\chromedriver.exe')\n",
|
||||
"driver.maximize_window()\n",
|
||||
"driver.implicitly_wait(5)\n",
|
||||
"driver.get(http)\n",
|
||||
"driver.find_element(By.XPATH,'//*[@id=\"pane-username\"]/form/div[1]/div/div/input').send_keys(name)\n",
|
||||
"driver.find_element(By.XPATH,'//*[@id=\"pane-username\"]/form/div[2]/div/div[1]/input').send_keys(password)\n",
|
||||
"driver.find_element(By.XPATH,'//*[@id=\"pane-username\"]/form/div[3]/div/button/span').click()\n",
|
||||
"\n",
|
||||
"time.sleep(4)#预设时间\n",
|
||||
"\n",
|
||||
"df = pd.read_excel(r'C:\\Users\\admin\\Downloads\\会员卡信息 (23).xlsx',sheet_name='会员卡详情',dtype='string') \n",
|
||||
"for item in df.index:\n",
|
||||
" try:\n",
|
||||
" cardid= df.loc[item,'卡实体id']\n",
|
||||
" https='https://yunxiu.f6car.cn/kzf6/consumeBill/index.do?page=view/index.html%23/marketing/cardEdit/'+cardid\n",
|
||||
" driver.get(https)\n",
|
||||
" time.sleep(0.5)\n",
|
||||
"\n",
|
||||
" #点击全选,多车牌\n",
|
||||
" \n",
|
||||
" driver.find_element(By.XPATH,'//*[@id=\"app\"]/div/div/div/div/div/div/div/div/div/div/label/span/span').click()\n",
|
||||
" driver.find_element(By.XPATH,'//*[@id=\"app\"]/div/div/div/div/div/div/div/div/div/div/label/span/span').click()\n",
|
||||
" time.sleep(0.5)\n",
|
||||
" driver.find_element(By.XPATH,'//*[@id=\"app\"]/div/div/div/div/div/div/button[1]/span').click()\n",
|
||||
" time.sleep(0.5)\n",
|
||||
" # #点击勾选,单车牌\n",
|
||||
" # driver.find_element(By.XPATH,'//*[@id=\"app\"]/div/div/div/div/div[1]/div/div/div/div/div/div/div/label/span/span').click()\n",
|
||||
" # time.sleep(0.5)\n",
|
||||
" # driver.find_element(By.XPATH,'//*[@id=\"app\"]/div/div/div/div/div/div/button[1]/span').click()\n",
|
||||
" # time.sleep(0.5)\n",
|
||||
" except:\n",
|
||||
" pass"
|
||||
]
|
||||
},
|
||||
{
|
||||
"attachments": {},
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## 卡选择不限制车牌使用"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"c:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\numpy\\_distributor_init.py:30: UserWarning: loaded more than 1 DLL from .libs:\n",
|
||||
"c:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\numpy\\.libs\\libopenblas.EL2C6PLE4ZYW3ECEVIV3OXXGRN2NRFM2.gfortran-win_amd64.dll\n",
|
||||
"c:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\numpy\\.libs\\libopenblas64__v0.3.21-gcc_10_3_0.dll\n",
|
||||
" warnings.warn(\"loaded more than 1 DLL from .libs:\"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"成功:11961263688167485444\n",
|
||||
"成功:11961263687672553540\n",
|
||||
"成功:11961263687613837405\n",
|
||||
"成功:11961263687047606309\n",
|
||||
"成功:11961263686603010082\n",
|
||||
"成功:11961263686032580698\n",
|
||||
"成功:11961263685915144279\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"from selenium import webdriver\n",
|
||||
"from selenium.webdriver.support.ui import Select\n",
|
||||
"from selenium.webdriver import ActionChains\n",
|
||||
"import time\n",
|
||||
"import xlrd\n",
|
||||
"import xlwt\n",
|
||||
"import re\n",
|
||||
"import datetime\n",
|
||||
"import pandas as pd\n",
|
||||
"from xlutils.copy import copy\n",
|
||||
"from selenium.webdriver.common.keys import Keys\n",
|
||||
"from selenium.webdriver.common.action_chains import ActionChains\n",
|
||||
"from selenium.webdriver.common.by import By\n",
|
||||
"\n",
|
||||
"#获取会员卡基础信息\n",
|
||||
"name = '15888265981'\n",
|
||||
"password = 'Ff123456'\n",
|
||||
"option_chrome = webdriver.ChromeOptions()\n",
|
||||
"option_chrome.add_argument('--headless')\n",
|
||||
"\n",
|
||||
"http='https://m.f6car.com/'\n",
|
||||
"\n",
|
||||
"driver = webdriver.Chrome(executable_path=r\"C:\\Users\\admin\\Desktop\\Python脚本\\chromedriver.exe\")\n",
|
||||
"\n",
|
||||
"driver.maximize_window()\n",
|
||||
"\n",
|
||||
"driver.implicitly_wait(5)\n",
|
||||
"\n",
|
||||
"driver.get(http)\n",
|
||||
"driver.find_element(By.XPATH,'//*[@id=\"pane-username\"]/form/div[1]/div/div/input').send_keys(name)\n",
|
||||
"driver.find_element(By.XPATH,'//*[@id=\"pane-username\"]/form/div[2]/div/div[1]/input').send_keys(password)\n",
|
||||
"driver.find_element(By.XPATH,'//*[@id=\"pane-username\"]/form/div[3]/div/button/span').click()\n",
|
||||
"#新手引导关闭\n",
|
||||
"driver.find_element(By.XPATH,'/html/body/div/div/div[1]/button').click()\n",
|
||||
"driver.find_element(By.XPATH,'//*[@id=\"subMain\"]/div/div[3]/div/div/div/span[2]').click()\n",
|
||||
"\n",
|
||||
"df = pd.read_excel(r'C:\\Users\\admin\\Downloads\\会员卡信息 (23).xlsx',sheet_name='会员卡详情',dtype='string') \n",
|
||||
"\n",
|
||||
"for item in range(0,693):\n",
|
||||
" try:\n",
|
||||
" time.sleep(2)\n",
|
||||
" # 点击首页\n",
|
||||
" driver.find_element(By.XPATH,'//*[@id=\"main\"]/div/div/div/div/div/div/div[1]/div/div/span').click()\n",
|
||||
" time.sleep(2)\n",
|
||||
" cardid= df.loc[item,'卡实体id']\n",
|
||||
" https='https://yunxiu.f6car.com/erp/view/index.html#/macan-view/cardManage/cardEdit/'+cardid\n",
|
||||
" driver.get(https)\n",
|
||||
" time.sleep(2)\n",
|
||||
"\n",
|
||||
" #点击不限制车牌使用\n",
|
||||
" driver.find_element(By.XPATH,'//*[@id=\"app\"]/div/div/div/div/div/div/div/div/div/div/div[1]/label/span/span').click()\n",
|
||||
" time.sleep(1)\n",
|
||||
" #点击保存\n",
|
||||
" driver.find_element(By.XPATH,'//*[@id=\"app\"]/div/div/div/div/div/div/button[1]/span').click()\n",
|
||||
" time.sleep(2)\n",
|
||||
" #点击确定\n",
|
||||
" driver.find_element(By.XPATH,'/html/body/div[5]/div/div/button[1]/span').click()\n",
|
||||
"\n",
|
||||
" print(\"成功:\"+str(cardid))\n",
|
||||
" except:\n",
|
||||
" pass"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from selenium import webdriver\n",
|
||||
"from selenium.webdriver.chrome.service import Service\n",
|
||||
"\n",
|
||||
"# create a new ChromeDriver service\n",
|
||||
"service = Service(r'C:\\chromedriver\\chromedriver_113\\chromedriver.exe')\n",
|
||||
"\n",
|
||||
"# create a new ChromeDriver instance using the service\n",
|
||||
"driver = webdriver.Chrome(service=service)"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "base",
|
||||
"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.12.4"
|
||||
},
|
||||
"orig_nbformat": 4
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,82 @@
|
||||
# -*- coding:UTF-8 -*-
|
||||
# 遍历车辆信息中的数据判断,如果能查询到就点击车辆 完成车牌与卡数据绑定关系
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.support.ui import Select
|
||||
from selenium.webdriver import ActionChains
|
||||
import time
|
||||
import xlrd
|
||||
import xlwt
|
||||
import re
|
||||
from xlutils.copy import copy
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
import datetime
|
||||
import os
|
||||
from selenium.webdriver.support import expected_conditions as EC
|
||||
from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver.support.wait import WebDriverWait
|
||||
import pandas as pd
|
||||
#获取基础信息
|
||||
name = '15827030879'
|
||||
password = 'jhb@123456'
|
||||
option_chrome = webdriver.ChromeOptions()
|
||||
option_chrome.add_argument('--headless')
|
||||
|
||||
http='https://m.f6car.cn/'
|
||||
#driver = webdriver.Chrome(chrome_options=option_chrome)
|
||||
driver = webdriver.Chrome(executable_path=r"C:\Users\admin\Desktop\Python脚本\chromedriver.exe")
|
||||
driver.maximize_window()
|
||||
driver.implicitly_wait(2)
|
||||
driver.get(http)
|
||||
|
||||
# 在输入框中输入账号和密码
|
||||
username = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id="pane-username"]/form/div[1]/div/div[1]/input')))
|
||||
enter = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id="pane-username"]/form/div[3]/div/button')))
|
||||
username.clear()
|
||||
username.send_keys(name)
|
||||
driver.find_element_by_xpath(r'//*[@id="pane-username"]/form/div[2]/div/div[1]/input').send_keys(password)
|
||||
enter.click()
|
||||
time.sleep(5)#预设时间
|
||||
|
||||
file = xlwt.Workbook()
|
||||
table = file.add_sheet('sheet name', cell_overwrite_ok=True)
|
||||
#打开excel文件
|
||||
data = xlrd.open_workbook(r"C:\Users\admin\Desktop\Python脚本\图形界面自动化脚本\F6系统常用脚本\Excel通用存储位置.xls")
|
||||
print(data)
|
||||
table = data.sheet_by_index(0) # 通过索引顺序获取
|
||||
h = table.nrows
|
||||
l = table.ncols
|
||||
print(u"表数据的行数为%s,列数为%s"%(h,l))
|
||||
|
||||
for i in range(1,h):
|
||||
try:
|
||||
idMember =table.cell(i, 0).value #id
|
||||
idMember1 =table.cell(i, 1).value #名称
|
||||
https1='https://yunxiu.f6car.cn/erp/view/index.html#/'
|
||||
https='https://yunxiu.f6car.cn/erp/view/index.html#/macan-view/cardManage/cardEdit/'+idMember #进入页面
|
||||
driver.get(https1)
|
||||
time.sleep(0.5)
|
||||
driver.get(https)
|
||||
time.sleep(0.5)
|
||||
#传值转换
|
||||
#driver.switch_to.frame('__qiankun_microapp_wrapper_for_macan_1647410136310_639__')
|
||||
for a in range(1,20):
|
||||
try:
|
||||
input1 = driver.find_element_by_xpath('//*[@id="app"]/div/div/div/div[2]/div[1]/div/div/div[1]/div[4]/div[2]/div[1]/div/label[{}]/span[2]'.format(a))
|
||||
input1 = input1.text
|
||||
input1 = input1[:7]
|
||||
if input1 == idMember1:
|
||||
driver.find_element_by_xpath('//*[@id="app"]/div/div/div/div[2]/div[1]/div/div/div[1]/div[4]/div[2]/div[1]/div/label[{}]/span[1]'.format(a)).click()
|
||||
aimnuw = input1
|
||||
time.sleep(0.2)
|
||||
break
|
||||
except:
|
||||
print(input1)
|
||||
continue
|
||||
driver.find_element_by_xpath('//*[@id="app"]/div/div/div/div[2]/div[2]/div/button[1]/span').click()
|
||||
endtime = datetime.datetime.now()
|
||||
print(i,'@', idMember,'@',endtime)
|
||||
time.sleep(0.2)
|
||||
except:
|
||||
print('失败')
|
||||
continue
|
||||
@@ -0,0 +1,84 @@
|
||||
# -*- coding:UTF-8 -*-
|
||||
# 功能:F6系统页面会员卡退卡操作
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.support.ui import Select
|
||||
from selenium.webdriver import ActionChains
|
||||
import time
|
||||
import xlrd
|
||||
import xlwt
|
||||
import re
|
||||
from xlutils.copy import copy
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
import datetime
|
||||
|
||||
# 获取会员卡基础信息
|
||||
name = '15651006300'
|
||||
password = 'Wamh523364'
|
||||
option_chrome = webdriver.ChromeOptions()
|
||||
option_chrome.add_argument('--headless')
|
||||
|
||||
http = 'https://m.f6car.cn/'
|
||||
# 进入链接获取json
|
||||
# driver = webdriver.Chrome(chrome_options=option_chrome)
|
||||
#driver = webdriver.Chrome(chrome_options=option_chrome)
|
||||
driver = webdriver.Chrome(executable_path=r"C:\迅雷下载\python 暂存文件\Python\chromedriver.exe")
|
||||
driver.maximize_window()
|
||||
driver.implicitly_wait(2)
|
||||
driver.get(http)
|
||||
driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[1]/div/div/input').send_keys(name)
|
||||
driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[2]/div/div[1]/input').send_keys(password)
|
||||
driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[3]/div/button/span').click()
|
||||
time.sleep(10) # 预设时间
|
||||
|
||||
# 新建一个excel文件
|
||||
file = xlwt.Workbook() # 注意这里的Workbook首字母是大写,无语吧
|
||||
# 新建sheet
|
||||
table = file.add_sheet('sheet name', cell_overwrite_ok=True)
|
||||
# 获取所有内容
|
||||
# 打开excel文件
|
||||
data = xlrd.open_workbook(r'C:\Users\admin\Desktop\Python脚本\图形界面自动化脚本\F6系统常用脚本\Excel通用存储位置.xls')
|
||||
print(data)
|
||||
table = data.sheet_by_index(0) # 通过索引顺序获取
|
||||
h = table.nrows
|
||||
l = table.ncols
|
||||
print(u"表数据的行数为%s,列数为%s" % (h, l))
|
||||
|
||||
# 获取卡项目
|
||||
for i in range(1, h):
|
||||
try:
|
||||
starttime = datetime.datetime.now()
|
||||
https = 'https://yunxiu.f6car.cn/kzf6/contactBook/contactBookList.do?page=view/index.html%23/'
|
||||
# http = 'https://yunxiu-trial.f6car.cn/kzf6/payment/toGathering.do?idSourceBill=' + idMember + '&billType=TKD'
|
||||
# 进入链接获取json
|
||||
driver.get(https)
|
||||
# 传值转换
|
||||
driver.switch_to.frame('weixin-page-iframe')
|
||||
time.sleep(0.2)
|
||||
idMember = table.cell(i, 0).value # 按行读取数据
|
||||
input_box = driver.find_element_by_xpath('//*[@id="pane-1"]/div/div[2]/div[1]/div[1]/div/input')
|
||||
input_box.send_keys(Keys.CONTROL, 'a')
|
||||
input_box.send_keys(Keys.BACK_SPACE)
|
||||
time.sleep(0.3)
|
||||
driver.find_element_by_xpath(
|
||||
'//*[@id="pane-1"]/div/div[2]/div[1]/div[1]/div/input').send_keys(idMember)
|
||||
# driver.find_element_by_xpath(
|
||||
# '//*[@id="app"]/div[2]/div[2]/div/section[2]/div[2]/div[2]/div[3]/div/div/input').send_keys(onename)
|
||||
# 通过父类进行定位
|
||||
time.sleep(0.3)
|
||||
driver.find_element_by_xpath(
|
||||
'//*[@id="pane-1"]/div/div[2]/div[1]/div[1]/div/div/button/i').click() # 点击查询
|
||||
time.sleep(0.2)
|
||||
driver.find_element_by_xpath(
|
||||
'//*[@id="pane-1"]/div/div[2]/div[3]/div/div[1]/div[3]/table/tbody/tr/td[8]/div/button[3]/span').click() # 离职
|
||||
time.sleep(0.2)
|
||||
driver.find_element_by_xpath('/html/body/div[4]/div/div[3]/button[1]/span').click() # 离职
|
||||
time.sleep(0.2)
|
||||
# 进入结算
|
||||
endtime = datetime.datetime.now()
|
||||
implement = (endtime - starttime).seconds
|
||||
print(i, idMember,implement)
|
||||
|
||||
except:
|
||||
print('失败')
|
||||
continue
|
||||
@@ -0,0 +1,168 @@
|
||||
{
|
||||
"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": [
|
||||
"import pandas as pd\n",
|
||||
"import time\n",
|
||||
"import requests\n",
|
||||
"import json\n",
|
||||
"import xlwt\n",
|
||||
"import xlrd\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"df1 = pd.read_excel(r'C:\\Users\\admin\\Desktop\\库存配件查询.xls',sheet_name='导出计数_产地',dtype='string') \n",
|
||||
"for item in df1.index:\n",
|
||||
" new_brand_name= df1.loc[item,'品牌新建']\n",
|
||||
"\n",
|
||||
" data = {\n",
|
||||
" \"partBrandName\": new_brand_name \n",
|
||||
" }\n",
|
||||
" cookies_str = 'f6-ids-goodsSESSIONID=33b3add2-c869-46d3-b4ec-163bfc628018; sajssdk_2015_cross_new_user=1; erpLanguage=zh-CN; prodOrg=11240984669917991522; unp=15815448158550388788; _up=-NillNN-qyBEJ--t3vnSknvoOF53zPSJtMUE1nM6X-deXvnGr5HQjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbqFfURqI8m0gsM-vNRv-ZNHu3M-GTc1pm0EXOgr-hdjO4ak17LORtnrEj9nxiw_Mi4PBA.; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2215815448158550388788%22%2C%22first_id%22%3A%2218fa83be71061f-03f4b144c21fe2c-26001c51-1327104-18fa83be711283%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%2218fa83be71061f-03f4b144c21fe2c-26001c51-1327104-18fa83be711283%22%7D; tmall=false'\n",
|
||||
" cookies_str = cookies_str.encode('utf-8').decode('latin-1')\n",
|
||||
"\n",
|
||||
" cookie_dict = {item.split('=')[0]: item.split('=')[1]\n",
|
||||
" for item in cookies_str.split('; ')}\n",
|
||||
" url ='https://ids-goods.f6car.com/f6-ids-goods/brand/checkDuplicateBrand?brandName='+new_brand_name\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',\n",
|
||||
" \"Content-Type\": \"application/json;charset=UTF-8\",\n",
|
||||
" 'origin': 'https://ids-goods.f6car.com'\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" if requests.get(url = url,cookies=cookie_dict,headers=headers).json().get('data'):\n",
|
||||
"\n",
|
||||
" res = requests.post(f'https://ids-goods.f6car.com/f6-ids-goods/brand/addTmCustomPartBrand', \n",
|
||||
" headers=headers,cookies=cookie_dict, json=data)\n",
|
||||
" print(f'品牌:{new_brand_name} 新建成功')\n",
|
||||
" else:\n",
|
||||
" print(f'品牌:{new_brand_name} 重复,无法新建')\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"attachments": {},
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## python 中的格式化字符串"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"ename": "",
|
||||
"evalue": "",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;31m运行具有“F6processing (Python 3.9.4)”的单元格需要ipykernel包。\n",
|
||||
"\u001b[1;31m运行以下命令,将 \"ipykernel\" 安装到 Python 环境中。\n",
|
||||
"\u001b[1;31m命令: \"conda install -n F6processing ipykernel --update-deps --force-reinstall\""
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"a = 15\n",
|
||||
"b = 3.14\n",
|
||||
"# 1. %\n",
|
||||
"print('abc%d,%.2f'%(a,b))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 19,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"'abc12ddd'"
|
||||
]
|
||||
},
|
||||
"execution_count": 19,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"a = 12\n",
|
||||
"b = 3.14\n",
|
||||
"\n",
|
||||
"\"abc\"+str(a)+'ddd'"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 20,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"'ghjk12,3.14'"
|
||||
]
|
||||
},
|
||||
"execution_count": 20,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# f字符串\n",
|
||||
"\n",
|
||||
"f'ghjk{a},{b:.2f}'"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "F6",
|
||||
"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,
|
||||
"vscode": {
|
||||
"interpreter": {
|
||||
"hash": "59310123ccd3619229d524789fb6029e22b3ae7206c94adf033078aa9a774872"
|
||||
}
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
@@ -0,0 +1,246 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import requests\n",
|
||||
"\n",
|
||||
"\"\"\" 处理流程开始 \"\"\"\n",
|
||||
"cookies_str = 'memberSESSIONID=7b034fdc-7edd-45a5-a615-ad0033608b6e; sensorsdata2015jssdkcross={\"distinct_id\":\"10691192243902595917\",\"first_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\",\"props\":{\"$latest_traffic_source_type\":\"直接流量\",\"$latest_search_keyword\":\"未取到值_直接打开\",\"$latest_referrer\":\"\"},\"$device_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\"}; gr_user_id=408fef1a-77ed-4e74-8f1e-31dde3446f2e; prodOrg=11240984669917188035; unp=15632739166222045268; un=15632739166222045268; _up=-NillNN-qyBEJ--t3vnSknvoOF55zvOKs8QE1X09WOVdUvTDoZHQjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbrE_QSqoIn0wAO-_RRv-ZNHu3M-GTc2JuzEnShr-tTi-kYkFLGPBVnrEj9nRXn_Km3UDc.; tmall=false; sensorsdata2015jssdkcross={\"distinct_id\":\"15632739166222045268\",\"first_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\",\"props\":{\"$latest_traffic_source_type\":\"直接流量\",\"$latest_search_keyword\":\"未取到值_直接打开\",\"$latest_referrer\":\"\"},\"$device_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\"}'\n",
|
||||
"\n",
|
||||
"cookies_str = cookies_str.encode('utf-8').decode('latin-1')\n",
|
||||
"\n",
|
||||
"cookie_dict = {item.split('=')[0]: item.split('=')[1]\n",
|
||||
" for item in cookies_str.split('; ')}\n",
|
||||
"\n",
|
||||
"headers = {\n",
|
||||
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40',\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" 'origin': 'https://yunxiu.f6car.cn'\n",
|
||||
"}\n",
|
||||
"# 获取id\n",
|
||||
"api = f'https://yunxiu.f6car.cn/member/feedback/list?searchTab=2&billIdOwnOrgList=&pageSize=100&pageNo=1'\n",
|
||||
"\n",
|
||||
"res = requests.get(api, headers=headers,cookies=cookie_dict)\n",
|
||||
"\n",
|
||||
"res_new = res.json()\n",
|
||||
"\n",
|
||||
"for i in range(0,100):\n",
|
||||
" a_new = res_new['data']['data'][i]['id']\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"'10474413'"
|
||||
]
|
||||
},
|
||||
"execution_count": 8,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"res_new['data']['data'][0]['id']"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 17,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"167764198600\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import time\n",
|
||||
"mkt = round(time.time())\n",
|
||||
"print(str(mkt)+\"00\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 38,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"1677642600000\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"mkt = str(round(time.time()))[0:8]+\"00000\"\n",
|
||||
"print(str(mkt))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 46,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# -- coding: utf-8 --\n",
|
||||
"api = 'https://yunxiu.f6car.cn/member/feedback/completeAll'\n",
|
||||
"\n",
|
||||
"a_new = res_new['data']['data'][0]['id']\n",
|
||||
"# 时间转化\n",
|
||||
"mkt = str(round(time.time()))[0:8]+\"00000\"\n",
|
||||
"\n",
|
||||
"data= {\n",
|
||||
" \"feedbackId\": a_new,\n",
|
||||
" \"feedbackBaseParam\": {\n",
|
||||
" \"id\": a_new,\n",
|
||||
" \"scheduleDate\": mkt,\n",
|
||||
" \"isEffective\": 1\n",
|
||||
" },\n",
|
||||
" \"feedbackProcessLogParam\": 'null',\n",
|
||||
" \"feedbackQuestionResultParams\": [\n",
|
||||
" {\n",
|
||||
" \"feedbackId\": a_new,\n",
|
||||
" \"questionId\": 101942,\n",
|
||||
" \"questionContent\": \"服务态度\",\n",
|
||||
" \"questionType\": 0\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"feedbackId\": a_new,\n",
|
||||
" \"questionId\": 101942,\n",
|
||||
" \"questionContent\": \"施工质量\",\n",
|
||||
" \"questionType\": 0\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"feedbackId\": a_new,\n",
|
||||
" \"questionId\": 101942,\n",
|
||||
" \"questionContent\": \"店面环境\",\n",
|
||||
" \"questionType\": 0\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"feedbackId\": a_new,\n",
|
||||
" \"questionId\": 101942,\n",
|
||||
" \"questionContent\": \"对技师服务水平\",\n",
|
||||
" \"questionType\": 0\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"feedbackId\": a_new,\n",
|
||||
" \"questionId\": 101942,\n",
|
||||
" \"questionContent\": \"如果您的亲友也需要 {业务分类名称} 项目,您是否愿意推荐 {门店简称} ?\",\n",
|
||||
" \"questionType\": 0\n",
|
||||
" }\n",
|
||||
" ]\n",
|
||||
"}\n",
|
||||
"res = requests.post(api, headers=headers,cookies=cookie_dict,json=data)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 48,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"''"
|
||||
]
|
||||
},
|
||||
"execution_count": 48,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"res.text"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"{\n",
|
||||
" \"feedbackId\": \"10474413\",\n",
|
||||
" \"feedbackBaseParam\": {\n",
|
||||
" \"id\": \"10474413\",\n",
|
||||
" \"scheduleDate\": 1639958400000,\n",
|
||||
" \"isEffective\": 1\n",
|
||||
" },\n",
|
||||
" \"feedbackProcessLogParam\": null,\n",
|
||||
" \"feedbackQuestionResultParams\": [\n",
|
||||
" {\n",
|
||||
" \"feedbackId\": \"10474413\",\n",
|
||||
" \"questionId\": 101942,\n",
|
||||
" \"questionContent\": \"服务态度\",\n",
|
||||
" \"questionType\": 0\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"feedbackId\": \"10474413\",\n",
|
||||
" \"questionId\": 101942,\n",
|
||||
" \"questionContent\": \"施工质量\",\n",
|
||||
" \"questionType\": 0\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"feedbackId\": \"10474413\",\n",
|
||||
" \"questionId\": 101942,\n",
|
||||
" \"questionContent\": \"店面环境\",\n",
|
||||
" \"questionType\": 0\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"feedbackId\": \"10474413\",\n",
|
||||
" \"questionId\": 101942,\n",
|
||||
" \"questionContent\": \"对技师服务水平\",\n",
|
||||
" \"questionType\": 1\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"feedbackId\": \"10474413\",\n",
|
||||
" \"questionId\": 101942,\n",
|
||||
" \"questionContent\": \"如果您的亲友也需要 {业务分类名称} 项目,您是否愿意推荐 {门店简称} ?\",\n",
|
||||
" \"questionType\": 2\n",
|
||||
" }\n",
|
||||
" ]\n",
|
||||
"}"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "F6processing",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.9.4"
|
||||
},
|
||||
"orig_nbformat": 4,
|
||||
"vscode": {
|
||||
"interpreter": {
|
||||
"hash": "f83923c7d0b4d2e003073efbd633777fa3fd66b7578149f24f67f4796b9b3ac4"
|
||||
}
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,98 @@
|
||||
# -*- coding:UTF-8 -*-
|
||||
#修改套餐卡-永久有效-按表格中的有效期进行处理
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.support.ui import Select
|
||||
from selenium.webdriver import ActionChains
|
||||
import time
|
||||
import xlrd
|
||||
import xlwt
|
||||
import re
|
||||
from xlutils.copy import copy
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
import datetime
|
||||
import os
|
||||
from selenium.webdriver.support import expected_conditions as EC
|
||||
from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver.support.wait import WebDriverWait
|
||||
import pandas as pd
|
||||
#获取基础信息
|
||||
name = '15888265981'
|
||||
password = 'F6123456'
|
||||
option_chrome = webdriver.ChromeOptions()
|
||||
option_chrome.add_argument('--headless')
|
||||
|
||||
http='https://m.f6car.cn/'
|
||||
#driver = webdriver.Chrome(chrome_options=option_chrome)
|
||||
driver = webdriver.Chrome(executable_path=r"C:\迅雷下载\python 暂存文件\Python\chromedriver.exe")
|
||||
driver.maximize_window()
|
||||
driver.implicitly_wait(2)
|
||||
driver.get(http)
|
||||
|
||||
# 在输入框中输入账号和密码
|
||||
username = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id="pane-username"]/form/div[1]/div/div[1]/input')))
|
||||
enter = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id="pane-username"]/form/div[3]/div/button')))
|
||||
username.clear()
|
||||
username.send_keys(name)
|
||||
driver.find_element_by_xpath(r'//*[@id="pane-username"]/form/div[2]/div/div[1]/input').send_keys(password)
|
||||
enter.click()
|
||||
time.sleep(15)#预设时间
|
||||
|
||||
file = xlwt.Workbook()
|
||||
table = file.add_sheet('sheet name', cell_overwrite_ok=True)
|
||||
#打开excel文件
|
||||
data = xlrd.open_workbook(r"C:\Users\admin\Desktop\Python脚本\图形界面自动化脚本\F6系统常用脚本\Excel通用存储位置.xls")
|
||||
print(data)
|
||||
table = data.sheet_by_index(0) # 通过索引顺序获取
|
||||
h = table.nrows
|
||||
l = table.ncols
|
||||
print(u"表数据的行数为%s,列数为%s"%(h,l))
|
||||
|
||||
for i in range(1,h):
|
||||
try:
|
||||
idMember =table.cell(i, 0).value #id
|
||||
idMember1 =table.cell(i, 1).value #日期
|
||||
httpas='https://yunxiu.f6car.cn/cayenne/view/index.html#/cayenne-promotion/marketing/vipList'
|
||||
driver.get(httpas)
|
||||
time.sleep(0.5)
|
||||
try:
|
||||
driver.find_element_by_xpath('/html/body/div/div/div[3]/button[1]').click()
|
||||
time.sleep(0.5)
|
||||
except:
|
||||
a = 1
|
||||
https='https://yunxiu.f6car.cn/cayenne/view/index.html#/cayenne-promotion/marketing/cardEdit/'+idMember #进入页面
|
||||
driver.get(https)
|
||||
time.sleep(0.5)
|
||||
#传值转换
|
||||
#driver.switch_to.frame('weixin-page-iframe')
|
||||
driver.find_element_by_xpath(
|
||||
'//*[@id="app"]/div[2]/div[2]/div/div[2]/div/form/div[1]/div/div/div/div/div[2]/label/span[1]/span').click() #点击永久
|
||||
time.sleep(0.5)
|
||||
#荣大
|
||||
#time.sleep(0.1)
|
||||
# 先通过日期输入框的id="train_date"来定位输入框,再通过removeAttribute方法移除"readonly"属性
|
||||
#js = 'document.getElementById("train_date").removeAttribute("readonly");'
|
||||
#ele = driver.find_element_by_xpath('//*[@id="app"]/div[2]/div[2]/div/div[2]/div[6]/form/div[1]/div[4]/div/div/div/div[1]/div/input')
|
||||
#driver.execute_script("arguments[0].removeAttribute('readonly');", ele)
|
||||
# js = """
|
||||
# var date = document.getElementById('train_date').removeAttribute('readonly');
|
||||
# """
|
||||
|
||||
# driver.execute_script(js)
|
||||
#ele.click() # 先点击,清空后赋值。
|
||||
#ele.clear()
|
||||
#time.sleep(0.2)
|
||||
driver.find_element_by_xpath('//*[@id="app"]/div[2]/div[2]/div/div[2]/div[6]/form/div[1]/div[4]/div/div/div/div[1]/div/input').send_keys(idMember1)
|
||||
time.sleep(0.5)
|
||||
driver.find_element_by_xpath('//*[@id="app"]/div[2]/div[2]/div/div[2]/div[6]/form/div[1]/div[3]/div/div/div/div[1]/div/input').click()
|
||||
time.sleep(0.5)
|
||||
driver.find_element_by_xpath('/html/body/div/div/div[3]/button[1]').click()
|
||||
time.sleep(0.5)
|
||||
driver.find_element_by_xpath(
|
||||
'//*[@id="app"]/div[2]/div[2]/div/div[3]/button[1]').click() #点击保存
|
||||
time.sleep(0.5)
|
||||
endtime = datetime.datetime.now()
|
||||
print(i,'@', idMember)
|
||||
except:
|
||||
print('失败')
|
||||
continue
|
||||
@@ -0,0 +1,89 @@
|
||||
# -*- coding:UTF-8 -*-
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.support.ui import Select
|
||||
from selenium.webdriver import ActionChains
|
||||
import time
|
||||
import xlrd
|
||||
import xlwt
|
||||
import re
|
||||
from xlutils.copy import copy
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
import datetime
|
||||
|
||||
#获取会员卡基础信息
|
||||
name = '15888265981'
|
||||
password = 'F6123456'
|
||||
option_chrome = webdriver.ChromeOptions()
|
||||
option_chrome.add_argument('--headless')
|
||||
|
||||
http='https://m.f6car.cn/'
|
||||
#进入链接获取json
|
||||
#driver = webdriver.Chrome(chrome_options=option_chrome)
|
||||
driver = webdriver.Chrome(executable_path=r"C:\迅雷下载\python 暂存文件\Python\chromedriver.exe")
|
||||
driver.maximize_window()
|
||||
driver.implicitly_wait(2)
|
||||
driver.get(http)
|
||||
driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[1]/div/div/input').send_keys(name)
|
||||
driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[2]/div/div[1]/input').send_keys(password)
|
||||
driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[3]/div/button/span').click()
|
||||
time.sleep(15)#预设时间
|
||||
|
||||
# 新建一个excel文件
|
||||
file = xlwt.Workbook() # 注意这里的Workbook首字母是大写,无语吧
|
||||
# 新建sheet
|
||||
table = file.add_sheet('sheet name', cell_overwrite_ok=True)
|
||||
if 1==1:
|
||||
he = 0
|
||||
hen = 0
|
||||
heng = 0
|
||||
hang = 0
|
||||
len = 0
|
||||
#获取所有内容
|
||||
#打开excel文件
|
||||
data = xlrd.open_workbook(r"C:\Users\admin\Desktop\Python脚本\图形界面自动化脚本\F6系统常用脚本\Excel通用存储位置.xls")
|
||||
print(data)
|
||||
table = data.sheet_by_index(0) # 通过索引顺序获取
|
||||
h = table.nrows
|
||||
l = table.ncols
|
||||
print(u"表数据的行数为%s,列数为%s"%(h,l))
|
||||
|
||||
time.sleep(0.2)
|
||||
for i in range(0,h):
|
||||
#try:
|
||||
https='https://yunxiu.f6car.cn/cayenne/view/index.html#/cayenne-member/customer/list' #进入客户信息页面
|
||||
driver.get(https)
|
||||
idMember =table.cell(i, 0).value #按行读取数据
|
||||
idMembername =table.cell(i, 1).value #按行读取数据
|
||||
#传值转换
|
||||
#driver.switch_to.frame('weixin-page-iframe')
|
||||
time.sleep(0.2)
|
||||
|
||||
driver.find_element_by_xpath(
|
||||
'//*[@id="app"]/div/div/div/div[2]/div/div[1]/div[1]/div/input').send_keys(idMember) #输入手机号
|
||||
time.sleep(0.2)
|
||||
driver.find_element_by_xpath(
|
||||
'//*[@id="app"]/div/div/div/div[2]/div/div[1]/div[1]/div/div/button').click() #点击搜索
|
||||
time.sleep(0.5)
|
||||
input1 = driver.find_element_by_xpath('//*[@id="app"]/div/div/div/div[2]/div/div[3]/div[1]/div[3]/table/tbody/tr/td[2]/div/span').text
|
||||
input2 = driver.find_element_by_xpath('//*[@id="app"]/div/div/div/div[2]/div/div[3]/div[1]/div[3]/table/tbody/tr/td[3]/div').text
|
||||
time.sleep(0.2)
|
||||
if input2 == idMember :
|
||||
driver.find_element_by_xpath('//*[@id="app"]/div/div/div/div[2]/div/div[3]/div[1]/div[3]/table/tbody/tr/td[8]/div/span').click() #点击修改
|
||||
time.sleep(0.5)
|
||||
input_box = driver.find_element_by_xpath('//*[@id="app"]/div/div[2]/form/div[1]/div/div/div[1]/form/div[2]/div[2]/div[1]/div/div/div/input')
|
||||
input_box.send_keys(Keys.CONTROL, 'a')
|
||||
input_box.send_keys(Keys.BACK_SPACE)
|
||||
time.sleep(0.2)
|
||||
driver.find_element_by_xpath('//*[@id="app"]/div/div[2]/form/div[1]/div/div/div[1]/form/div[2]/div[2]/div[1]/div/div/div/input').click() #点击客户名称
|
||||
time.sleep(0.2)
|
||||
driver.find_element_by_xpath('//*[@id="app"]/div/div/div/div[2]/div/div[3]/div[1]/div[3]/table/tbody/tr/td[8]/div/span').click() #点击客户来源
|
||||
time.sleep(0.2)
|
||||
driver.find_element_by_xpath('/html/body/div[3]/div[2]/div[1]/ul/li[1]').click() #点击 主动获取
|
||||
time.sleep(0.2)
|
||||
driver.find_element_by_xpath('//*[@id="app"]/div/div[2]/form/div[2]/button[1]').click() #点击保存
|
||||
endtime = datetime.datetime.now()
|
||||
print(i,'@', idMember,'@',input1,'@',input2 )
|
||||
#except:
|
||||
# print('失败')
|
||||
# continue
|
||||
@@ -0,0 +1,76 @@
|
||||
# -*- coding:UTF-8 -*-
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.support.ui import Select
|
||||
from selenium.webdriver import ActionChains
|
||||
import time
|
||||
import xlrd
|
||||
import xlwt
|
||||
import re
|
||||
from xlutils.copy import copy
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
import datetime
|
||||
|
||||
#获取会员卡基础信息
|
||||
name = '15888265981'
|
||||
password = 'F6123456'
|
||||
option_chrome = webdriver.ChromeOptions()
|
||||
option_chrome.add_argument('--headless')
|
||||
|
||||
http='https://m.f6car.cn/'
|
||||
#进入链接获取json
|
||||
#driver = webdriver.Chrome(chrome_options=option_chrome)
|
||||
driver = webdriver.Chrome(executable_path=r"C:\迅雷下载\python 暂存文件\Python\chromedriver.exe")
|
||||
driver.maximize_window()
|
||||
driver.implicitly_wait(2)
|
||||
driver.get(http)
|
||||
driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[1]/div/div/input').send_keys(name)
|
||||
driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[2]/div/div[1]/input').send_keys(password)
|
||||
driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[3]/div/button/span').click()
|
||||
time.sleep(15)#预设时间
|
||||
|
||||
# 新建一个excel文件
|
||||
file = xlwt.Workbook() # 注意这里的Workbook首字母是大写,无语吧
|
||||
# 新建sheet
|
||||
table = file.add_sheet('sheet name', cell_overwrite_ok=True)
|
||||
if 1==1:
|
||||
he = 0
|
||||
hen = 0
|
||||
heng = 0
|
||||
hang = 0
|
||||
len = 0
|
||||
#获取所有内容
|
||||
#打开excel文件
|
||||
data = xlrd.open_workbook(r"C:\Users\admin\Desktop\Python脚本\图形界面自动化脚本\F6系统常用脚本\Excel通用存储位置.xls")
|
||||
print(data)
|
||||
table = data.sheet_by_index(0) # 通过索引顺序获取
|
||||
h = table.nrows
|
||||
l = table.ncols
|
||||
print(u"表数据的行数为%s,列数为%s"%(h,l))
|
||||
https='https://yunxiu.f6car.cn/cayenne/view/index.html#/cayenne-member/customer/list' #进入客户信息页面
|
||||
driver.get(https)
|
||||
time.sleep(0.2)
|
||||
for i in range(0,h):
|
||||
try:
|
||||
idMember =table.cell(i, 0).value #按行读取数据
|
||||
#传值转换
|
||||
#driver.switch_to.frame('weixin-page-iframe')
|
||||
#time.sleep(0.1)
|
||||
|
||||
driver.find_element_by_xpath(
|
||||
'//*[@id="app"]/div/div/div/div[2]/div/div[1]/div[1]/div/input').send_keys(idMember) #输入手机号
|
||||
#time.sleep(0.1)
|
||||
driver.find_element_by_xpath(
|
||||
'//*[@id="app"]/div/div/div/div[2]/div/div[1]/div[1]/div/div/button').click() #点击搜索
|
||||
time.sleep(0.2)
|
||||
input1 = driver.find_element_by_xpath('//*[@id="app"]/div/div/div/div[2]/div/div[3]/div[1]/div[3]/table/tbody/tr/td[2]/div/span').text
|
||||
input2 = driver.find_element_by_xpath('//*[@id="app"]/div/div/div/div[2]/div/div[3]/div[1]/div[3]/table/tbody/tr/td[3]/div').text
|
||||
time.sleep(0.2)
|
||||
input_box = driver.find_element_by_xpath('//*[@id="app"]/div/div/div/div[2]/div/div[1]/div[1]/div/input')
|
||||
input_box.send_keys(Keys.CONTROL, 'a')
|
||||
input_box.send_keys(Keys.BACK_SPACE)
|
||||
endtime = datetime.datetime.now()
|
||||
print(i,'@', idMember,'@',input1,'@',input2 )
|
||||
except:
|
||||
print('失败')
|
||||
continue
|
||||
@@ -0,0 +1,91 @@
|
||||
# -*- coding:UTF-8 -*-
|
||||
# 功能:F6系统页面会员卡退卡操作
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.support.ui import Select
|
||||
from selenium.webdriver import ActionChains
|
||||
import time
|
||||
import xlrd
|
||||
import xlwt
|
||||
import re
|
||||
from xlutils.copy import copy
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
import datetime
|
||||
|
||||
# 获取会员卡基础信息
|
||||
name = '15888265981'
|
||||
password = 'F6123456'
|
||||
option_chrome = webdriver.ChromeOptions()
|
||||
option_chrome.add_argument('--headless')
|
||||
|
||||
http = 'https://m.f6car.cn/'
|
||||
# 进入链接获取json
|
||||
# driver = webdriver.Chrome(chrome_options=option_chrome)
|
||||
driver = webdriver.Chrome(executable_path=r"C:\迅雷下载\python 暂存文件\Python\chromedriver.exe")
|
||||
driver.maximize_window()
|
||||
driver.implicitly_wait(2)
|
||||
driver.get(http)
|
||||
driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[1]/div/div/input').send_keys(name)
|
||||
driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[2]/div/div[1]/input').send_keys(password)
|
||||
driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[3]/div/button/span').click()
|
||||
time.sleep(15) # 预设时间
|
||||
|
||||
# 新建一个excel文件
|
||||
file = xlwt.Workbook() # 注意这里的Workbook首字母是大写,无语吧
|
||||
# 新建sheet
|
||||
table = file.add_sheet('sheet name', cell_overwrite_ok=True)
|
||||
if 1 == 1:
|
||||
he = 0
|
||||
hen = 0
|
||||
heng = 0
|
||||
hang = 0
|
||||
len = 0
|
||||
# 获取所有内容
|
||||
# 打开excel文件
|
||||
data = xlrd.open_workbook(r'C:\Users\admin\Desktop\Python脚本\图形界面自动化脚本\F6系统常用脚本\Excel通用存储位置.xls')
|
||||
print(data)
|
||||
table = data.sheet_by_index(0) # 通过索引顺序获取
|
||||
h = table.nrows
|
||||
l = table.ncols
|
||||
print(u"表数据的行数为%s,列数为%s" % (h, l))
|
||||
|
||||
# 获取卡项目
|
||||
for i in range(0, h):
|
||||
try:
|
||||
starttime = datetime.datetime.now()
|
||||
idMember = table.cell(i, 0).value # 按行读取数据
|
||||
receiveAmount = table.cell(i, 1).value # 按行读取数据
|
||||
https = 'https://yunxiu.f6car.cn/cayenne/view/index.html#/cayenne-goods/info/list/local'
|
||||
# http = 'https://yunxiu-trial.f6car.cn/kzf6/payment/toGathering.do?idSourceBill=' + idMember + '&billType=TKD'
|
||||
# 进入链接获取json
|
||||
driver.get(https)
|
||||
|
||||
# 传值转换
|
||||
#driver.switch_to.frame('weixin-page-iframe')
|
||||
time.sleep(0.2)
|
||||
# driver.find_element_by_xpath(
|
||||
# '//*[@id="app"]/div[2]/div[2]/div/section[2]/div[2]/div[2]/div[3]/div/div/input').send_keys(onename)
|
||||
input_bos = driver.find_element_by_xpath(
|
||||
'/html/body/div[1]/div[1]/div[3]/div[2]/div/div/div/div/div/div[2]/div[3]/div[1]/div[1]/div[1]/div[1]/input')
|
||||
input_bos.send_keys(Keys.CONTROL, 'a')
|
||||
input_bos.send_keys(Keys.BACK_SPACE)
|
||||
input_bos.send_keys(idMember)
|
||||
time.sleep(0.2)
|
||||
driver.find_element_by_xpath(
|
||||
'/html/body/div[1]/div[1]/div[3]/div[2]/div/div/div/div/div/div[2]/div[3]/div[1]/div[1]/div[1]/div[1]/div/button').click()
|
||||
time.sleep(0.5)
|
||||
driver.find_element_by_xpath(
|
||||
'//*[@id="table"]/div[1]/div[3]/table/tbody/tr/td[13]/div/span[2]').click()
|
||||
time.sleep(0.5)
|
||||
driver.find_element_by_xpath(
|
||||
'/html/body/div[3]/div/div[2]/div/div[1]/form/div[3]/div[3]/div/div/div/div/form/div/div[2]/div/div/input').send_keys(receiveAmount)
|
||||
time.sleep(0.5)
|
||||
driver.find_element_by_xpath(
|
||||
'/html/body/div[3]/div/div[2]/div/div[2]/button[1]/span').click()
|
||||
time.sleep(0.5)
|
||||
endtime = datetime.datetime.now()
|
||||
implement = (endtime - starttime).seconds
|
||||
print(i, idMember,receiveAmount,implement)
|
||||
except:
|
||||
print('失败')
|
||||
continue
|
||||
@@ -0,0 +1,134 @@
|
||||
# -*- coding:UTF-8 -*-
|
||||
# 功能:
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.support.ui import Select
|
||||
from selenium.webdriver import ActionChains
|
||||
import time
|
||||
import xlrd
|
||||
import xlwt
|
||||
import re
|
||||
import datetime
|
||||
from xlutils.copy import copy
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
|
||||
# 获取会员卡基础信息
|
||||
pkId = '4061359779622808474' # 手动获取
|
||||
name = '15888265981'
|
||||
password = 'F6123456'
|
||||
zhi = 1
|
||||
option_chrome = webdriver.ChromeOptions()
|
||||
option_chrome.add_argument('--headless')
|
||||
for hum in range(zhi):
|
||||
# http='https://yunxiu-trial.f6car.cn/member/customer/list?pageSize=5000&pageNo=1'
|
||||
httptx = 'https://yunxiu.f6car.cn'
|
||||
# 初步加载处理
|
||||
# chrom_opt = webdriver.ChromeOptions()
|
||||
# prefs = { "profile.managed_default_content_settings.images": 2 }
|
||||
# chrom_opt.add_experimental_option("prefs", prefs)
|
||||
# driver = webdriver.Chrome(executable_path="E:/Python/chromedriver.exe", chrome_options=chrom_opt)
|
||||
# 无显示预处理
|
||||
# option=webdriver.ChromeOptions()
|
||||
# option.add_argument('headless') # 设置option
|
||||
# driver = webdriver.Chrome(chrome_options=option)
|
||||
# 进入链接获取json
|
||||
# driver = webdriver.Chrome(chrome_options=option_chrome)
|
||||
driver = webdriver.Chrome(executable_path=r"C:\迅雷下载\python 暂存文件\Python\chromedriver.exe")
|
||||
driver.maximize_window()
|
||||
driver.implicitly_wait(0.2)
|
||||
|
||||
driver.get(httptx)
|
||||
driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[1]/div/div/input').send_keys(name)
|
||||
driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[2]/div/div[1]/input').send_keys(password)
|
||||
driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[3]/div/button/span').click()
|
||||
'''
|
||||
try:
|
||||
driver.find_element_by_xpath(
|
||||
'//*[@id="app"]/div/div[1]/div[2]/div/div/div[2]/div[2]/div/div[1]/div/div[1]/p[1]').click()
|
||||
except:
|
||||
print('未识别到多门店')
|
||||
'''
|
||||
time.sleep(10) # 预设时间
|
||||
print("登陆系统")
|
||||
print("创建文件")
|
||||
# 新建一个excel文件
|
||||
file = xlwt.Workbook() # 注意这里的Workbook首字母是大写,无语吧
|
||||
# 新建sheet
|
||||
table = file.add_sheet('sheet name', cell_overwrite_ok=True)
|
||||
|
||||
# 打开excel文件
|
||||
print("打开文件")
|
||||
data = xlrd.open_workbook(r'C:\Users\admin\Desktop\Python脚本\图形界面自动化脚本\F6系统常用脚本\Excel通用存储位置.xls')
|
||||
print(data)
|
||||
table = data.sheet_by_index(0) # 通过索引顺序获取
|
||||
h = table.nrows
|
||||
https = 'https://yunxiu.f6car.cn/kzf6/partInfo/newPageList.do?page=view%2Fmaterial.html%23/info/list/cloud'
|
||||
driver.get(https)
|
||||
# 传值转换
|
||||
driver.switch_to.frame('weixin-page-iframe')
|
||||
# 获取卡项目
|
||||
num = 0
|
||||
for i in range(0, h): # 浮点型
|
||||
|
||||
try:
|
||||
d1 = datetime.datetime.now()
|
||||
receiveAmount1 = table.cell(num, 0).value # 按行品牌
|
||||
receiveAmount2 = table.cell(num, 1).value # 按行零件号
|
||||
receiveAmount3 = table.cell(num, 2).value # 按行自编码
|
||||
# https='https://yunxiu-trial.f6car.cn/kzf6/member/index.do?page=/view/index.html%23/customer/detail/'+idMember
|
||||
# 进入链接获取json
|
||||
num = num + 1
|
||||
time.sleep(0.2)
|
||||
input_box = driver.find_element_by_xpath('/html/body/div/div/div/div/div/div/div/div/div[2]/div/div[3]/input')
|
||||
input_box.send_keys(Keys.CONTROL, 'a')
|
||||
input_box.send_keys(Keys.BACK_SPACE)
|
||||
# input_box.send_keys(Keys.CONTROL, 'v')
|
||||
driver.find_element_by_xpath('/html/body/div/div/div/div/div/div/div/div/div[2]/div/div[3]/input').send_keys(
|
||||
receiveAmount1)
|
||||
time.sleep(0.2)
|
||||
driver.find_element_by_xpath('/html/body/div/div/div/div/div/div/div/div/div[2]/div/div[3]/div/button/i').click()#确定
|
||||
time.sleep(0.2)
|
||||
|
||||
try:
|
||||
input1=driver.find_element_by_xpath('/html/body/div/div/div/div/div/div/div[2]/div[1]/div/div/ul/li/span')
|
||||
if input1.text==receiveAmount1:
|
||||
driver.find_element_by_xpath(
|
||||
'/html/body/div/div/div/div/div/div/div/div/div/div/ul/li[1]/span').click() # 选择
|
||||
time.sleep(0.2)
|
||||
input_box = driver.find_element_by_xpath(
|
||||
'/html/body/div/div/div/div/div/div/div/div/div[2]/div/div[3]/input')
|
||||
input_box.send_keys(Keys.CONTROL, 'a')
|
||||
input_box.send_keys(Keys.BACK_SPACE)
|
||||
# input_box.send_keys(Keys.CONTROL, 'v')
|
||||
driver.find_element_by_xpath(
|
||||
'/html/body/div/div/div/div/div/div/div/div/div[2]/div/div[3]/input').send_keys(receiveAmount2)
|
||||
time.sleep(0.2)
|
||||
driver.find_element_by_xpath(
|
||||
'/html/body/div/div/div/div/div/div/div/div/div[2]/div/div[3]/div/button/i').click() # 确定
|
||||
time.sleep(0.2)
|
||||
'//*[@id="cloudTable"]/div[1]/div[3]/table/tbody/tr/td[7]/div'
|
||||
input1 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div/div/table/tbody/tr[1]/td[2]/div')
|
||||
input2 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div/div/table/tbody/tr[1]/td[3]/div')
|
||||
input3 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div/div/table/tbody/tr[1]/td[5]/div')
|
||||
input4 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div/div/table/tbody/tr[1]/td[6]/div')
|
||||
input6 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div/div/table/tbody/tr[1]/td[7]/div')
|
||||
|
||||
input5 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div[2]/span')
|
||||
d3 = d1 + datetime.timedelta(hours=10)
|
||||
print(num, '@', receiveAmount3, '@', input1.text, '@', input2.text, '@', input3.text, '@', input4.text, '@', input6.text,'@', input5.text)
|
||||
except:
|
||||
print('未识别到品牌字段')
|
||||
'/html/body/div/div/div/div/div[2]/div[3]/div[2]/div[3]/div/button/span/i'
|
||||
driver.find_element_by_xpath(
|
||||
'/html/body/div/div/div/div/div/div/div/div/div/button/span/i').click() # 取消
|
||||
'''
|
||||
input1 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div/div/table/tbody/tr[1]/td[1]/div')
|
||||
input2 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div/div/table/tbody/tr[1]/td[2]/div')
|
||||
input3 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div/div/table/tbody/tr[1]/td[4]/div')
|
||||
input4 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div/div/table/tbody/tr[1]/td[6]/div')
|
||||
|
||||
input5 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div[2]/span')
|
||||
d3 = d1 + datetime.timedelta(hours=10)
|
||||
print(num, '@', input1.text, '@', input2.text, '@', input3.text, '@', input4.text, '@', input5.text)
|
||||
'''
|
||||
except:
|
||||
continue
|
||||
@@ -0,0 +1,96 @@
|
||||
# -*- coding:UTF-8 -*-
|
||||
# 功能:
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.support.ui import Select
|
||||
from selenium.webdriver import ActionChains
|
||||
import time
|
||||
import xlrd
|
||||
import xlwt
|
||||
import re
|
||||
import datetime
|
||||
from xlutils.copy import copy
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
|
||||
# 获取会员卡基础信息
|
||||
name = '15888265981'
|
||||
password = 'F6123456'
|
||||
zhi = 1
|
||||
option_chrome = webdriver.ChromeOptions()
|
||||
option_chrome.add_argument('--headless')
|
||||
for hum in range(zhi):
|
||||
# http='https://yunxiu-trial.f6car.cn/member/customer/list?pageSize=5000&pageNo=1'
|
||||
httptx = 'https://yunxiu.f6car.cn'
|
||||
# 初步加载处理
|
||||
# chrom_opt = webdriver.ChromeOptions()
|
||||
# prefs = { "profile.managed_default_content_settings.images": 2 }
|
||||
# chrom_opt.add_experimental_option("prefs", prefs)
|
||||
# driver = webdriver.Chrome(executable_path="E:/Python/chromedriver.exe", chrome_options=chrom_opt)
|
||||
# 无显示预处理
|
||||
# option=webdriver.ChromeOptions()
|
||||
# option.add_argument('headless') # 设置option
|
||||
# driver = webdriver.Chrome(chrome_options=option)
|
||||
# 进入链接获取json
|
||||
# driver = webdriver.Chrome(chrome_options=option_chrome)
|
||||
driver = webdriver.Chrome(executable_path=r"C:\迅雷下载\python 暂存文件\Python\chromedriver.exe")
|
||||
driver.maximize_window()
|
||||
driver.implicitly_wait(0.1)
|
||||
|
||||
driver.get(httptx)
|
||||
driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[1]/div/div/input').send_keys(name)
|
||||
driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[2]/div/div[1]/input').send_keys(password)
|
||||
driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[3]/div/button/span').click()
|
||||
|
||||
time.sleep(10) # 预设时间
|
||||
print("登陆系统")
|
||||
print("创建文件")
|
||||
# 新建一个excel文件
|
||||
file = xlwt.Workbook() # 注意这里的Workbook首字母是大写,无语吧
|
||||
# 新建sheet
|
||||
table = file.add_sheet('sheet name', cell_overwrite_ok=True)
|
||||
|
||||
# 打开excel文件
|
||||
print("打开文件")
|
||||
data = xlrd.open_workbook(r'C:\Users\admin\Desktop\Python脚本\图形界面自动化脚本\F6系统常用脚本\Excel通用存储位置.xls')
|
||||
print(data)
|
||||
table = data.sheet_by_index(0) # 通过索引顺序获取
|
||||
h = table.nrows
|
||||
l = table.ncols
|
||||
print(u"表数据的行数为%s,列数为%s" % (h, l))
|
||||
https = 'https://yunxiu.f6car.cn/kzf6/partInfo/newPageList.do?page=view%2Fmaterial.html%23/info/list/cloud'
|
||||
driver.get(https)
|
||||
# 传值转换
|
||||
driver.switch_to.frame('weixin-page-iframe')
|
||||
# 获取卡项目
|
||||
num = 0
|
||||
for i in range(0, h): # 浮点型
|
||||
try:
|
||||
|
||||
d1 = datetime.datetime.now()
|
||||
receiveAmount1 = table.cell(num, 0).value # 按行读取数据
|
||||
receiveAmount2 = table.cell(num, 1).value # 按行读取数据
|
||||
# https='https://yunxiu-trial.f6car.cn/kzf6/member/index.do?page=/view/index.html%23/customer/detail/'+idMember
|
||||
# 进入链接获取json
|
||||
num = num + 1
|
||||
|
||||
time.sleep(0.1)
|
||||
input_box = driver.find_element_by_xpath('/html/body/div/div/div/div/div/div/div/div/div[2]/div/div[3]/input')
|
||||
input_box.send_keys(Keys.CONTROL, 'a')
|
||||
input_box.send_keys(Keys.BACK_SPACE)
|
||||
# input_box.send_keys(Keys.CONTROL, 'v')
|
||||
driver.find_element_by_xpath('/html/body/div/div/div/div/div/div/div/div/div[2]/div/div[3]/input').send_keys(
|
||||
receiveAmount1)
|
||||
|
||||
time.sleep(0.1)
|
||||
driver.find_element_by_xpath('/html/body/div/div/div/div/div/div/div/div/div[2]/div/div[3]/div/button/i').click()
|
||||
time.sleep(0.1)
|
||||
input1 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div/div/table/tbody/tr[1]/td[2]/div')
|
||||
input2 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div/div/table/tbody/tr[1]/td[3]/div')
|
||||
input3 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div/div/table/tbody/tr[1]/td[5]/div')
|
||||
input4 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div/div/table/tbody/tr[1]/td[6]/div')
|
||||
input6 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div/div/table/tbody/tr[1]/td[7]/div')
|
||||
|
||||
input5 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div[2]/span')
|
||||
d3 = d1 + datetime.timedelta(hours=10)
|
||||
print(num, '@',receiveAmount1,'@', receiveAmount2,'@', input1.text, '@', input2.text, '@', input3.text, '@', input4.text, '@', input6.text, '@', input5.text, '@',d1)
|
||||
except:
|
||||
print(num,receiveAmount1,':未识别到内容',d1)
|
||||
@@ -0,0 +1,71 @@
|
||||
# -*- coding:UTF-8 -*-
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.support.ui import Select
|
||||
from selenium.webdriver import ActionChains
|
||||
import time
|
||||
import xlrd
|
||||
import xlwt
|
||||
import re
|
||||
from xlutils.copy import copy
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
import datetime
|
||||
|
||||
#获取会员卡基础信息
|
||||
name = '15888265981'
|
||||
password = 'Ff123456'
|
||||
option_chrome = webdriver.ChromeOptions()
|
||||
option_chrome.add_argument('--headless')
|
||||
|
||||
http='https://m.f6car.cn/'
|
||||
#进入链接获取json
|
||||
#driver = webdriver.Chrome(chrome_options=option_chrome)
|
||||
driver = webdriver.Chrome(executable_path=r"C:\Users\admin\Desktop\Python脚本\chromedriver.exe")
|
||||
driver.maximize_window()
|
||||
driver.implicitly_wait(2)
|
||||
driver.get(http)
|
||||
driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[1]/div/div/input').send_keys(name)
|
||||
driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[2]/div/div[1]/input').send_keys(password)
|
||||
driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[3]/div/button/span').click()
|
||||
time.sleep(15)#预设时间
|
||||
|
||||
# 新建一个excel文件
|
||||
file = xlwt.Workbook() # 注意这里的Workbook首字母是大写,无语吧
|
||||
# 新建sheet
|
||||
table = file.add_sheet('sheet name', cell_overwrite_ok=True)
|
||||
if 1==1:
|
||||
he = 0
|
||||
hen = 0
|
||||
heng = 0
|
||||
hang = 0
|
||||
len = 0
|
||||
#获取所有内容
|
||||
#打开excel文件
|
||||
data = xlrd.open_workbook(r"C:\Users\admin\Desktop\新建XLS 工作表.xls")
|
||||
table = data.sheet_by_index(0) # 通过索引顺序获取
|
||||
h = table.nrows
|
||||
l = table.ncols
|
||||
print(u"表数据的行数为%s,列数为%s"%(h,l))
|
||||
time.sleep(0.2)
|
||||
for i in range(1,h):
|
||||
try:
|
||||
hettps1 = 'https://yunxiu.f6car.cn/cayenne/view/index.html#/index/home'
|
||||
https='https://yunxiu.f6car.cn/cayenne/view/index.html#/cayenne-member/customer/list' #进入客户信息页面
|
||||
driver.get(https)
|
||||
idMember =table.cell(i, 0).value #按行读取数据
|
||||
#传值转换
|
||||
#driver.switch_to.frame('weixin-page-iframe')
|
||||
time.sleep(0.5)
|
||||
|
||||
driver.find_element_by_xpath(
|
||||
'//*[@id="app"]/div/div/div/div[2]/div/div[1]/div[1]/div/input').send_keys(idMember) #输入手机号
|
||||
time.sleep(1)
|
||||
driver.find_element_by_xpath(
|
||||
'//*[@id="app"]/div/div/div/div[2]/div/div[1]/div[1]/div/div/button').click() #点击搜索
|
||||
time.sleep(2)
|
||||
input1 = driver.find_element_by_xpath('//*[@id="app"]/div/div/div/div[2]/div/div[3]/div[1]/div[3]/table/tbody/tr/td[2]/div/div/span').text
|
||||
input2 = driver.find_element_by_xpath('//*[@id="app"]/div/div/div/div[2]/div/div[3]/div[1]/div[3]/table/tbody/tr/td[4]/div').text
|
||||
print(i,'@', idMember,'@',input1,'@',input2 )
|
||||
except:
|
||||
print('失败')
|
||||
continue
|
||||
@@ -0,0 +1,176 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# 打开网页进行登陆"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# 导入库\n",
|
||||
"import os\n",
|
||||
"from selenium import webdriver\n",
|
||||
"from selenium.webdriver.common.keys import Keys\n",
|
||||
"from selenium.webdriver.support import expected_conditions as EC\n",
|
||||
"from selenium.webdriver.common.by import By\n",
|
||||
"from selenium.webdriver.support.wait import WebDriverWait\n",
|
||||
"import time\n",
|
||||
"import pandas as pd\n",
|
||||
"\n",
|
||||
"# 账号密码 -- 需要修改\n",
|
||||
"name = '15888265981'\n",
|
||||
"password = 'Ff123456'\n",
|
||||
"\n",
|
||||
"driver = webdriver.Chrome(executable_path=r\"C:\\Users\\admin\\Desktop\\Python脚本\\chromedriver.exe\")\n",
|
||||
"\n",
|
||||
"driver.maximize_window() # 最大化浏览器窗口\n",
|
||||
"real_https = 'https://m.f6car.cn/' # 正式网址\n",
|
||||
"fake_https = 'https://m-trial.f6car.cn/' # 测试网址\n",
|
||||
"# 打开网页,根据情况更改网址变量\n",
|
||||
"driver.get(real_https)\n",
|
||||
"\n",
|
||||
"# 在输入框中输入账号和密码\n",
|
||||
"username = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"pane-username\"]/form/div[1]/div/div[1]/input')))\n",
|
||||
"enter = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"pane-username\"]/form/div[3]/div/button')))\n",
|
||||
"username.clear()\n",
|
||||
"username.send_keys(name)\n",
|
||||
"driver.find_element_by_xpath(r'//*[@id=\"pane-username\"]/form/div[2]/div/div[1]/input').send_keys(password)\n",
|
||||
"enter.click()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"ename": "TimeoutException",
|
||||
"evalue": "Message: \n",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
|
||||
"\u001b[1;31mTimeoutException\u001b[0m Traceback (most recent call last)",
|
||||
"\u001b[1;32m<ipython-input-2-9042f014b2b4>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;31m# 点击基础资料下拉菜单\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 4\u001b[1;33m \u001b[0mWebDriverWait\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdriver\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m10\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0muntil\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mEC\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0melement_to_be_clickable\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mBy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mXPATH\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34mr'//*[@id=\"user-nav\"]/ul/li[3]/a/span'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mclick\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[0m\u001b[0;32m 5\u001b[0m \u001b[1;31m# 点击 数据导入 菜单项\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 6\u001b[0m \u001b[0mWebDriverWait\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdriver\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m10\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0muntil\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mEC\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0melement_to_be_clickable\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mBy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mXPATH\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34mr'//*[@id=\"user-nav\"]/ul/li[3]/ul/li[17]/a'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mclick\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\\selenium\\webdriver\\support\\wait.py\u001b[0m in \u001b[0;36muntil\u001b[1;34m(self, method, message)\u001b[0m\n\u001b[0;32m 78\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mtime\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtime\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m>\u001b[0m \u001b[0mend_time\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 79\u001b[0m \u001b[1;32mbreak\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 80\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mTimeoutException\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmessage\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mscreen\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstacktrace\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 81\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 82\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0muntil_not\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmessage\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m''\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;31mTimeoutException\u001b[0m: Message: \n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# 等待一点时间,手动选择门店\n",
|
||||
"\n",
|
||||
"# 点击基础资料下拉菜单\n",
|
||||
"WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"user-nav\"]/ul/li[3]/a/span'))).click()\n",
|
||||
"# 点击 数据导入 菜单项\n",
|
||||
"WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"user-nav\"]/ul/li[3]/ul/li[17]/a'))).click()\n",
|
||||
"# 点击 套餐卡信息 \n",
|
||||
"WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"content\"]/div/div/ul/li[5]/a'))).click()\n",
|
||||
"\n",
|
||||
"\n",
|
||||
" # 进入框架 iframe -- weixin-page-iframe ,方法1,可行(原等待时间 2 2 1)\n",
|
||||
"time.sleep(0.5)\n",
|
||||
"iframe = driver.find_element_by_xpath(r'//*[@id=\"weixin-page-iframe\"]')\n",
|
||||
"time.sleep(1)\n",
|
||||
"driver.switch_to.frame(iframe)\n",
|
||||
"time.sleep(0.5)\n",
|
||||
"print('已进入iframe 框架')\n",
|
||||
"\n",
|
||||
"files_path = r'C:\\Users\\admin\\Downloads\\套餐卡导入模板'\n",
|
||||
"\n",
|
||||
"# 开始批量导入\n",
|
||||
"\n",
|
||||
"for file in os.listdir(files_path):\n",
|
||||
" try:\n",
|
||||
" # 找到按钮里的 input 标签\n",
|
||||
" to_input = driver.find_element_by_xpath(r'//*[@id=\"app\"]/div/div/div/div[2]/form/div[1]/div/div/div/div[1]/input')\n",
|
||||
" time.sleep(0.2)\n",
|
||||
" upload_file = os.path.join(files_path,file)\n",
|
||||
" to_input.send_keys(upload_file)\n",
|
||||
" time.sleep(1)\n",
|
||||
" # print(f'已经上传excel文件:{file}!')\n",
|
||||
" # 点击 立即导入按钮\n",
|
||||
" WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"app\"]/div/div/div/div[2]/form/div[1]/div/button/span'))).click()\n",
|
||||
" # 点击 查看导入记录 按钮\n",
|
||||
" WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"app\"]/div/div/div/div[2]/form/div[2]/div/div[1]'))).click()\n",
|
||||
" # 检查文件名\n",
|
||||
" upload_file_name = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r' //*[@id=\"app\"]/div/div/div/div[3]/div/div[2]/div[1]/div[3]/table/tbody/tr[1]/td[1]/div'))).text\n",
|
||||
" time.sleep(0.5)\n",
|
||||
" while upload_file_name != file:\n",
|
||||
" # 关闭再打开 导入记录\n",
|
||||
" WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"app\"]/div/div/div/div[3]/div/div[1]/button/i'))).click() # 关闭按钮\n",
|
||||
" time.sleep(1)\n",
|
||||
" WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"app\"]/div/div/div/div[2]/form/div[2]/div/div[1]'))).click() \n",
|
||||
" time.sleep(1)\n",
|
||||
" upload_file_name = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r' //*[@id=\"app\"]/div/div/div/div[3]/div/div[2]/div[1]/div[3]/table/tbody/tr[1]/td[1]/div'))).text\n",
|
||||
"\n",
|
||||
" print('导入文件已经进入导入记录中!')\n",
|
||||
"\n",
|
||||
" # 打印卡导入 状态 信息\n",
|
||||
" succeed_cards = driver.find_element_by_xpath(r'//*[@id=\"app\"]/div/div/div/div[3]/div/div[2]/div[1]/div[3]/table/tbody/tr[1]/td[3]/div').text \n",
|
||||
" time.sleep(0.5)\n",
|
||||
" lost_cards = driver.find_element_by_xpath(r'//*[@id=\"app\"]/div/div/div/div[3]/div/div[2]/div[1]/div[3]/table/tbody/tr[1]/td[4]/div').text \n",
|
||||
" time.sleep(0.5)\n",
|
||||
" print(f'成功卡数:{succeed_cards},失败卡数:{lost_cards}')\n",
|
||||
" while succeed_cards == '' or lost_cards == '':\n",
|
||||
" # 不断的关闭打开 导入记录 ,刷新页面\n",
|
||||
" WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"app\"]/div/div/div/div[3]/div/div[1]/button/i'))).click() # 关闭按钮\n",
|
||||
" time.sleep(1)\n",
|
||||
" WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"app\"]/div/div/div/div[2]/form/div[2]/div/div[1]'))).click() # 导入记录\n",
|
||||
" time.sleep(1)\n",
|
||||
" succeed_cards = driver.find_element_by_xpath(r'//*[@id=\"app\"]/div/div/div/div[3]/div/div[2]/div[1]/div[3]/table/tbody/tr[1]/td[3]/div').text \n",
|
||||
" time.sleep(1)\n",
|
||||
" lost_cards = driver.find_element_by_xpath(r'//*[@id=\"app\"]/div/div/div/div[3]/div/div[2]/div[1]/div[3]/table/tbody/tr[1]/td[4]/div').text \n",
|
||||
" time.sleep(1)\n",
|
||||
" print(f'succeed_cards:{succeed_cards},lost_cards:{lost_cards}',end='-')\n",
|
||||
"\n",
|
||||
" print()\n",
|
||||
" print('#######################可以导入下一个文件!#######################')\n",
|
||||
" # 关闭 导入记录 窗口\n",
|
||||
" WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"app\"]/div/div/div/div[3]/div/div[1]/button/i'))).click()\n",
|
||||
" except Exception as e :\n",
|
||||
" print(f'{file} 导入出错')\n",
|
||||
" print(repr(e))\n",
|
||||
" continue\n",
|
||||
" finally:\n",
|
||||
" time.sleep(6) # 如果时间足够的话,保险起见可以多等一会\n",
|
||||
"\n",
|
||||
"print('所有文件上传完成!')\n",
|
||||
"time.sleep(1)\n",
|
||||
"# driver.close()"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3.9.4 ('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,
|
||||
"vscode": {
|
||||
"interpreter": {
|
||||
"hash": "f83923c7d0b4d2e003073efbd633777fa3fd66b7578149f24f67f4796b9b3ac4"
|
||||
}
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
@@ -0,0 +1,341 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# 打开网页进行登陆"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# 导入库\n",
|
||||
"import os\n",
|
||||
"from selenium import webdriver\n",
|
||||
"from selenium.webdriver.common.keys import Keys\n",
|
||||
"from selenium.webdriver.support import expected_conditions as EC\n",
|
||||
"from selenium.webdriver.common.by import By\n",
|
||||
"from selenium.webdriver.support.wait import WebDriverWait\n",
|
||||
"import time\n",
|
||||
"import pandas as pd\n",
|
||||
"import numpy as np\n",
|
||||
"import requests\n",
|
||||
"import json\n",
|
||||
"import time\n",
|
||||
"import re\n",
|
||||
"from datetime import datetime\n",
|
||||
"from dateutil.relativedelta import relativedelta\n",
|
||||
"from pathlib import Path\n",
|
||||
"from urllib.parse import quote\n",
|
||||
"from io import BytesIO\n",
|
||||
"\n",
|
||||
"# 账号密码 -- 需要修改\n",
|
||||
"name = '15888265981'\n",
|
||||
"password = 'Ff123456'\n",
|
||||
"\n",
|
||||
"driver = webdriver.Chrome(executable_path=r\"C:\\Users\\admin\\Desktop\\Python脚本\\chromedriver.exe\")\n",
|
||||
"\n",
|
||||
"driver.maximize_window() # 最大化浏览器窗口\n",
|
||||
"real_https = 'https://m.f6car.cn/' # 正式网址\n",
|
||||
"fake_https = 'https://m-trial.f6car.cn/' # 测试网址\n",
|
||||
"# 打开网页,根据情况更改网址变量\n",
|
||||
"driver.get(real_https)\n",
|
||||
"# 在输入框中输入账号和密码\n",
|
||||
"username = WebDriverWait(driver, 100).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"pane-username\"]/form/div[1]/div/div[1]/input')))\n",
|
||||
"enter = WebDriverWait(driver, 100).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"pane-username\"]/form/div[3]/div/button')))\n",
|
||||
"username.clear()\n",
|
||||
"username.send_keys(name)\n",
|
||||
"driver.find_element_by_xpath(r'//*[@id=\"pane-username\"]/form/div[2]/div/div[1]/input').send_keys(password)\n",
|
||||
"enter.click()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"files_path = r'C:\\Users\\admin\\Desktop\\锋行者三次\\套餐卡导入模板'"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# 生成 token,参数不需要修改\n",
|
||||
"def generateToken() -> str:\n",
|
||||
"\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",
|
||||
"class NpEncoder(json.JSONEncoder):\n",
|
||||
" def default(self, obj):\n",
|
||||
" if isinstance(obj, np.integer):\n",
|
||||
" return int(obj)\n",
|
||||
" elif isinstance(obj, np.floating):\n",
|
||||
" return float(obj)\n",
|
||||
" elif isinstance(obj, np.ndarray):\n",
|
||||
" return obj.tolist()\n",
|
||||
" else:\n",
|
||||
" return super(NpEncoder, self).default(obj)\n",
|
||||
"\n",
|
||||
"def ceshi(formData)-> str:\n",
|
||||
" \"\"\" 处理流程开始 \"\"\"\n",
|
||||
" TOKEN = generateToken()\n",
|
||||
"\n",
|
||||
" \"\"\" 通过实例id 获取表单内容 \"\"\"\n",
|
||||
"\n",
|
||||
" api = f'https://api.dingtalk.com//v1.0/yida/processes/instances/start'\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||||
" }\n",
|
||||
" payload = {\n",
|
||||
" \"appType\" : \"APP_TNVBVZ3K8G56HG03Z45Q\",\n",
|
||||
" \"systemToken\" : \"CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1\",\n",
|
||||
" \"userId\" : \"2268275546837446\",\n",
|
||||
" \"language\" : \"zh_CN\",\n",
|
||||
" \"formUuid\" : \"FORM-UP96637151Q3XIFU9NNW9BKFUVHU2XWN0EF9L84\",\n",
|
||||
" \"formDataJson\" :json.dumps(formData, cls=NpEncoder),\n",
|
||||
" \"processCode\" : \"TPROC--UP96637151Q3XIFU9NNW9BKFUVHU2YWN0EF9L94\",\n",
|
||||
" \"departmentId\" : \"574140511\" # 560526483 2706271\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(api, headers=headers, json=payload)\n",
|
||||
" res_new = res.json()\n",
|
||||
" print(\"生成失败预警!\")\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"已经上传excel文件:0.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:1277,lost_cards:10-\n",
|
||||
"#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:1.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:1057,lost_cards:4-\n",
|
||||
"#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:10.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:1192,lost_cards:10-\n",
|
||||
"#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:11.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:1270,lost_cards:4-\n",
|
||||
"#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:12.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:1328,lost_cards:4-\n",
|
||||
"#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:13.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:1415,lost_cards:6-\n",
|
||||
"#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:14.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:1508,lost_cards:12-\n",
|
||||
"#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:15.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:1585,lost_cards:11-\n",
|
||||
"#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:16.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:1820,lost_cards:4-\n",
|
||||
"#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:17.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:2175,lost_cards:9-\n",
|
||||
"#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:18.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:778,lost_cards:2-\n",
|
||||
"#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:2.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:1328,lost_cards:0-\n",
|
||||
"#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:3.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:1214,lost_cards:5-\n",
|
||||
"#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:4.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:1159,lost_cards:3-\n",
|
||||
"#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:5.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:998,lost_cards:2-\n",
|
||||
"#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:6.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:783,lost_cards:5-\n",
|
||||
"#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:7.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:779,lost_cards:3-\n",
|
||||
"#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:8.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:776,lost_cards:4-\n",
|
||||
"#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:9.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:1157,lost_cards:11-\n",
|
||||
"#######################可以导入下一个文件!#######################\n",
|
||||
"所有文件上传完成!\n",
|
||||
"生成失败预警!\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# 开始批量导入\n",
|
||||
"\n",
|
||||
"for file in os.listdir(files_path):\n",
|
||||
" try:\n",
|
||||
" # 找到按钮里的 input 标签\n",
|
||||
" to_input = driver.find_element_by_xpath(r'//*[@id=\"app\"]/div/div/div/div[2]/form/div[1]/div/div/div/div[1]/input')\n",
|
||||
" time.sleep(0.2)\n",
|
||||
" upload_file = os.path.join(files_path,file)\n",
|
||||
" to_input.send_keys(upload_file)\n",
|
||||
" time.sleep(1)\n",
|
||||
" print(f'已经上传excel文件:{file}!')\n",
|
||||
" # 点击 立即导入按钮\n",
|
||||
" WebDriverWait(driver, 100).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"app\"]/div/div/div/div[2]/form/div[1]/div/button/span'))).click()\n",
|
||||
" # 刷新页面\n",
|
||||
" time.sleep(5)\n",
|
||||
" driver.refresh()\n",
|
||||
" # 点击 查看导入记录 按钮\n",
|
||||
" WebDriverWait(driver, 100).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"app\"]/div/div/div/div[2]/form/div[2]/div/div[1]'))).click()\n",
|
||||
" # 检查文件名\n",
|
||||
" upload_file_name = WebDriverWait(driver, 100).until(EC.element_to_be_clickable((By.XPATH, r' //*[@id=\"app\"]/div/div/div/div[3]/div/div[2]/div[1]/div[3]/table/tbody/tr[1]/td[1]/div'))).text\n",
|
||||
" time.sleep(0.5)\n",
|
||||
" while upload_file_name != file:\n",
|
||||
" # 关闭再打开 导入记录\n",
|
||||
" WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"app\"]/div/div/div/div[3]/div/div[1]/button/i'))).click() # 关闭按钮\n",
|
||||
" time.sleep(1)\n",
|
||||
" WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"app\"]/div/div/div/div[2]/form/div[2]/div/div[1]'))).click() \n",
|
||||
" time.sleep(1)\n",
|
||||
" upload_file_name = WebDriverWait(driver, 100).until(EC.element_to_be_clickable((By.XPATH, r' //*[@id=\"app\"]/div/div/div/div[3]/div/div[2]/div[1]/div[3]/table/tbody/tr[1]/td[1]/div'))).text\n",
|
||||
"\n",
|
||||
" print('导入文件已经进入导入记录中!')\n",
|
||||
"\n",
|
||||
" # 打印卡导入 状态 信息\n",
|
||||
" succeed_cards = driver.find_element_by_xpath(r'//*[@id=\"app\"]/div/div/div/div[3]/div/div[2]/div[1]/div[3]/table/tbody/tr[1]/td[3]/div').text \n",
|
||||
" time.sleep(0.5)\n",
|
||||
" lost_cards = driver.find_element_by_xpath(r'//*[@id=\"app\"]/div/div/div/div[3]/div/div[2]/div[1]/div[3]/table/tbody/tr[1]/td[4]/div').text \n",
|
||||
" time.sleep(0.5)\n",
|
||||
" print(f'成功卡数:{succeed_cards},失败卡数:{lost_cards}')\n",
|
||||
" while succeed_cards == '' or lost_cards == '':\n",
|
||||
" # 不断的关闭打开 导入记录 ,刷新页面\n",
|
||||
" WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"app\"]/div/div/div/div[3]/div/div[1]/button/i'))).click() # 关闭按钮\n",
|
||||
" time.sleep(1)\n",
|
||||
" WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"app\"]/div/div/div/div[2]/form/div[2]/div/div[1]'))).click() # 导入记录\n",
|
||||
" time.sleep(1)\n",
|
||||
" succeed_cards = driver.find_element_by_xpath(r'//*[@id=\"app\"]/div/div/div/div[3]/div/div[2]/div[1]/div[3]/table/tbody/tr[1]/td[3]/div').text \n",
|
||||
" time.sleep(1)\n",
|
||||
" lost_cards = driver.find_element_by_xpath(r'//*[@id=\"app\"]/div/div/div/div[3]/div/div[2]/div[1]/div[3]/table/tbody/tr[1]/td[4]/div').text \n",
|
||||
" time.sleep(20)\n",
|
||||
" print(f'succeed_cards:{succeed_cards},lost_cards:{lost_cards}',end='-')\n",
|
||||
"\n",
|
||||
" print()\n",
|
||||
" print('#######################可以导入下一个文件!#######################')\n",
|
||||
" # 关闭 导入记录 窗口\n",
|
||||
" WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"app\"]/div/div/div/div[3]/div/div[1]/button/i'))).click()\n",
|
||||
" except Exception as e :\n",
|
||||
" print(f'{file} 导入出错')\n",
|
||||
" print(repr(e))\n",
|
||||
" formData = {\n",
|
||||
" \"textField_l9fe0uiw\": file,\n",
|
||||
" \"textField_l9fe0uiv\": '套餐卡导入异常!!'\n",
|
||||
" } \n",
|
||||
" ceshi(formData)\n",
|
||||
" continue\n",
|
||||
" finally:\n",
|
||||
" time.sleep(200) # 如果时间足够的话,保险起见可以多等一会\n",
|
||||
"\n",
|
||||
"print('所有文件上传完成!')\n",
|
||||
"time.sleep(1)\n",
|
||||
"formData = {\n",
|
||||
" \"textField_l9fe0uiw\": '套餐卡数据导入完成!',\n",
|
||||
" \"textField_l9fe0uiv\": '套餐卡数据导入完成!'\n",
|
||||
" } \n",
|
||||
"ceshi(formData)\n",
|
||||
"# driver.close()"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3.9.4 ('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,
|
||||
"vscode": {
|
||||
"interpreter": {
|
||||
"hash": "f83923c7d0b4d2e003073efbd633777fa3fd66b7578149f24f67f4796b9b3ac4"
|
||||
}
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
@@ -0,0 +1,303 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"attachments": {},
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# 打开网页进行登陆"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 9,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# 导入库\n",
|
||||
"import os\n",
|
||||
"from selenium import webdriver\n",
|
||||
"from selenium.webdriver.common.keys import Keys\n",
|
||||
"from selenium.webdriver.support import expected_conditions as EC\n",
|
||||
"from selenium.webdriver.common.by import By\n",
|
||||
"from selenium.webdriver.support.wait import WebDriverWait\n",
|
||||
"import time\n",
|
||||
"import pandas as pd\n",
|
||||
"import numpy as np\n",
|
||||
"import requests\n",
|
||||
"import json\n",
|
||||
"import time\n",
|
||||
"import re\n",
|
||||
"from datetime import datetime\n",
|
||||
"from dateutil.relativedelta import relativedelta\n",
|
||||
"from pathlib import Path\n",
|
||||
"from urllib.parse import quote\n",
|
||||
"from io import BytesIO\n",
|
||||
"\n",
|
||||
"# 账号密码 -- 需要修改\n",
|
||||
"name = '15888265981'\n",
|
||||
"password = 'Ff123456'\n",
|
||||
"\n",
|
||||
"driver = webdriver.Chrome(executable_path=r\"C:\\Users\\admin\\Desktop\\Python脚本\\chromedriver.exe\")\n",
|
||||
"\n",
|
||||
"driver.maximize_window() # 最大化浏览器窗口\n",
|
||||
"real_https = 'https://m.f6car.cn/' # 正式网址\n",
|
||||
"fake_https = 'https://m-trial.f6car.cn/' # 测试网址\n",
|
||||
"# 打开网页,根据情况更改网址变量\n",
|
||||
"driver.get(real_https)\n",
|
||||
"# 在输入框中输入账号和密码\n",
|
||||
"username = WebDriverWait(driver, 100).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"pane-username\"]/form/div[1]/div/div[1]/input')))\n",
|
||||
"enter = WebDriverWait(driver, 100).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"pane-username\"]/form/div[3]/div/button')))\n",
|
||||
"username.clear()\n",
|
||||
"username.send_keys(name)\n",
|
||||
"driver.find_element_by_xpath(r'//*[@id=\"pane-username\"]/form/div[2]/div/div[1]/input').send_keys(password)\n",
|
||||
"enter.click()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 10,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"files_path = r'C:\\Users\\admin\\Desktop\\202312爱义行数据迁移\\20231228F6提报数据\\最终导入文件\\套餐卡导入模板 - 已过期'"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 11,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# 生成 token,参数不需要修改\n",
|
||||
"def generateToken() -> str:\n",
|
||||
"\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",
|
||||
"class NpEncoder(json.JSONEncoder):\n",
|
||||
" def default(self, obj):\n",
|
||||
" if isinstance(obj, np.integer):\n",
|
||||
" return int(obj)\n",
|
||||
" elif isinstance(obj, np.floating):\n",
|
||||
" return float(obj)\n",
|
||||
" elif isinstance(obj, np.ndarray):\n",
|
||||
" return obj.tolist()\n",
|
||||
" else:\n",
|
||||
" return super(NpEncoder, self).default(obj)\n",
|
||||
"\n",
|
||||
"def ceshi(formData)-> str:\n",
|
||||
" \"\"\" 处理流程开始 \"\"\"\n",
|
||||
" TOKEN = generateToken()\n",
|
||||
"\n",
|
||||
" \"\"\" 通过实例id 获取表单内容 \"\"\"\n",
|
||||
"\n",
|
||||
" api = f'https://api.dingtalk.com//v1.0/yida/processes/instances/start'\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||||
" }\n",
|
||||
" payload = {\n",
|
||||
" \"appType\" : \"APP_TNVBVZ3K8G56HG03Z45Q\",\n",
|
||||
" \"systemToken\" : \"CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1\",\n",
|
||||
" \"userId\" : \"2268275546837446\",\n",
|
||||
" \"language\" : \"zh_CN\",\n",
|
||||
" \"formUuid\" : \"FORM-UP96637151Q3XIFU9NNW9BKFUVHU2XWN0EF9L84\",\n",
|
||||
" \"formDataJson\" :json.dumps(formData, cls=NpEncoder),\n",
|
||||
" \"processCode\" : \"TPROC--UP96637151Q3XIFU9NNW9BKFUVHU2YWN0EF9L94\",\n",
|
||||
" \"departmentId\" : \"574140511\" # 560526483 2706271\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(api, headers=headers, json=payload)\n",
|
||||
" res_new = res.json()\n",
|
||||
" print(\"生成失败预警!\")\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 12,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"已经上传excel文件:65.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:1823,lost_cards:13-#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:66.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:2051,lost_cards:29-#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:67.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:1823,lost_cards:24-#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:68.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:1884,lost_cards:20-#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:69.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:1771,lost_cards:26-#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:7.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:1755,lost_cards:16-#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:70.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:2217,lost_cards:17-#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:71.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:1847,lost_cards:28-#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:72.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:2096,lost_cards:31-#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:73.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:2064,lost_cards:20-#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:74.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:1923,lost_cards:23-#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:75.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:1278,lost_cards:25-#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:8.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:1902,lost_cards:25-#######################可以导入下一个文件!#######################\n",
|
||||
"已经上传excel文件:9.xlsx!\n",
|
||||
"导入文件已经进入导入记录中!\n",
|
||||
"成功卡数:,失败卡数:\n",
|
||||
"succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:,lost_cards:-succeed_cards:1953,lost_cards:16-#######################可以导入下一个文件!#######################\n",
|
||||
"所有文件上传完成!\n",
|
||||
"生成失败预警!\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# 开始批量导入\n",
|
||||
"for file in os.listdir(files_path):\n",
|
||||
" try:\n",
|
||||
" # 找到按钮里的 input 标签\n",
|
||||
" to_input = driver.find_element_by_xpath(r'//*[@id=\"app\"]/div/div/div/div[2]/form/div[1]/div/div/div/div[1]/input')\n",
|
||||
" time.sleep(0.2)\n",
|
||||
" upload_file = os.path.join(files_path,file)\n",
|
||||
" to_input.send_keys(upload_file)\n",
|
||||
" time.sleep(1)\n",
|
||||
" print(f'已经上传excel文件:{file}!')\n",
|
||||
" # 点击 立即导入按钮\n",
|
||||
" WebDriverWait(driver, 100).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"app\"]/div/div/div/div[2]/form/div[1]/div/button/span'))).click()\n",
|
||||
" # 刷新页面\n",
|
||||
" time.sleep(5)\n",
|
||||
" driver.refresh()\n",
|
||||
" # 点击 查看导入记录 按钮\n",
|
||||
" WebDriverWait(driver, 100).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"app\"]/div/div/div/div[2]/form/div[2]/div/div[1]'))).click()\n",
|
||||
" # 检查文件名\n",
|
||||
" upload_file_name = WebDriverWait(driver, 100).until(EC.element_to_be_clickable((By.XPATH, r' //*[@id=\"app\"]/div/div/div/div[3]/div/div[2]/div[1]/div[3]/table/tbody/tr[1]/td[1]/div'))).text\n",
|
||||
" time.sleep(0.5)\n",
|
||||
" while upload_file_name != file:\n",
|
||||
" # 关闭再打开 导入记录\n",
|
||||
" WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"app\"]/div/div/div/div[3]/div/div[1]/button/i'))).click() # 关闭按钮\n",
|
||||
" time.sleep(1)\n",
|
||||
" WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"app\"]/div/div/div/div[2]/form/div[2]/div/div[1]'))).click() \n",
|
||||
" time.sleep(1)\n",
|
||||
" upload_file_name = WebDriverWait(driver, 100).until(EC.element_to_be_clickable((By.XPATH, r' //*[@id=\"app\"]/div/div/div/div[3]/div/div[2]/div[1]/div[3]/table/tbody/tr[1]/td[1]/div'))).text\n",
|
||||
"\n",
|
||||
" print('导入文件已经进入导入记录中!')\n",
|
||||
"\n",
|
||||
" # 打印卡导入 状态 信息\n",
|
||||
" succeed_cards = driver.find_element_by_xpath(r'//*[@id=\"app\"]/div/div/div/div[3]/div/div[2]/div[1]/div[3]/table/tbody/tr[1]/td[3]/div').text \n",
|
||||
" time.sleep(0.5)\n",
|
||||
" lost_cards = driver.find_element_by_xpath(r'//*[@id=\"app\"]/div/div/div/div[3]/div/div[2]/div[1]/div[3]/table/tbody/tr[1]/td[4]/div').text \n",
|
||||
" time.sleep(0.5)\n",
|
||||
" print(f'成功卡数:{succeed_cards},失败卡数:{lost_cards}')\n",
|
||||
" alen = 0\n",
|
||||
" while succeed_cards == '' or lost_cards == '' or alen >=15:\n",
|
||||
" alen = alen + 1\n",
|
||||
" # 不断的关闭打开 导入记录 ,刷新页面\n",
|
||||
" WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"app\"]/div/div/div/div[3]/div/div[1]/button/i'))).click() # 关闭按钮\n",
|
||||
" time.sleep(1)\n",
|
||||
" WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"app\"]/div/div/div/div[2]/form/div[2]/div/div[1]'))).click() # 导入记录\n",
|
||||
" time.sleep(1)\n",
|
||||
" succeed_cards = driver.find_element_by_xpath(r'//*[@id=\"app\"]/div/div/div/div[3]/div/div[2]/div[1]/div[3]/table/tbody/tr[1]/td[3]/div').text \n",
|
||||
" time.sleep(1)\n",
|
||||
" lost_cards = driver.find_element_by_xpath(r'//*[@id=\"app\"]/div/div/div/div[3]/div/div[2]/div[1]/div[3]/table/tbody/tr[1]/td[4]/div').text \n",
|
||||
" time.sleep(30)\n",
|
||||
" print(f'succeed_cards:{succeed_cards},lost_cards:{lost_cards}',end='-')\n",
|
||||
"\n",
|
||||
" print('#######################可以导入下一个文件!#######################')\n",
|
||||
" # 关闭 导入记录 窗口\n",
|
||||
" WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id=\"app\"]/div/div/div/div[3]/div/div[1]/button/i'))).click()\n",
|
||||
" except Exception as e :\n",
|
||||
" print(f'{file} 导入出错')\n",
|
||||
" print(repr(e))\n",
|
||||
" formData = {\n",
|
||||
" \"textField_l9fe0uiw\": file,\n",
|
||||
" \"textField_l9fe0uiv\": '套餐卡导入异常!!'\n",
|
||||
" } \n",
|
||||
" ceshi(formData)\n",
|
||||
" continue\n",
|
||||
" finally:\n",
|
||||
" time.sleep(300) # 如果时间足够的话,保险起见可以多等一会\n",
|
||||
"\n",
|
||||
"print('所有文件上传完成!')\n",
|
||||
"time.sleep(1)\n",
|
||||
"formData = {\n",
|
||||
" \"textField_l9fe0uiw\": '套餐卡数据导入完成!',\n",
|
||||
" \"textField_l9fe0uiv\": '套餐卡数据导入完成!'\n",
|
||||
" } \n",
|
||||
"ceshi(formData)\n",
|
||||
"driver.close()"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3.9.4 ('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,
|
||||
"vscode": {
|
||||
"interpreter": {
|
||||
"hash": "f83923c7d0b4d2e003073efbd633777fa3fd66b7578149f24f67f4796b9b3ac4"
|
||||
}
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,80 @@
|
||||
# -*- coding:UTF-8 -*-
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.support.ui import Select
|
||||
from selenium.webdriver import ActionChains
|
||||
import time
|
||||
import xlrd
|
||||
import xlwt
|
||||
import re
|
||||
from xlutils.copy import copy
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
import datetime
|
||||
import os
|
||||
from selenium.webdriver.support import expected_conditions as EC
|
||||
from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver.support.wait import WebDriverWait
|
||||
import pandas as pd
|
||||
#获取基础信息
|
||||
name = '18609901513'
|
||||
password = 'Jz12345'
|
||||
option_chrome = webdriver.ChromeOptions()
|
||||
option_chrome.add_argument('--headless')
|
||||
|
||||
http='https://m.f6car.cn/'
|
||||
#driver = webdriver.Chrome(chrome_options=option_chrome)
|
||||
driver = webdriver.Chrome(executable_path=r"C:\迅雷下载\python 暂存文件\Python\chromedriver.exe")
|
||||
driver.maximize_window()
|
||||
driver.implicitly_wait(2)
|
||||
driver.get(http)
|
||||
|
||||
# 在输入框中输入账号和密码
|
||||
username = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id="pane-username"]/form/div[1]/div/div[1]/input')))
|
||||
enter = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id="pane-username"]/form/div[3]/div/button')))
|
||||
username.clear()
|
||||
username.send_keys(name)
|
||||
driver.find_element_by_xpath(r'//*[@id="pane-username"]/form/div[2]/div/div[1]/input').send_keys(password)
|
||||
enter.click()
|
||||
time.sleep(15)#预设时间
|
||||
|
||||
file = xlwt.Workbook()
|
||||
table = file.add_sheet('sheet name', cell_overwrite_ok=True)
|
||||
#打开excel文件
|
||||
data = xlrd.open_workbook(r"C:\Users\admin\Desktop\Python脚本\图形界面自动化脚本\F6系统常用脚本\Excel通用存储位置.xls")
|
||||
print(data)
|
||||
table = data.sheet_by_index(0) # 通过索引顺序获取
|
||||
h = table.nrows
|
||||
l = table.ncols
|
||||
print(u"表数据的行数为%s,列数为%s"%(h,l))
|
||||
|
||||
for i in range(1,h):
|
||||
try:
|
||||
idMember =table.cell(i, 0).value #id
|
||||
idMember1 =table.cell(i, 1).value #日期
|
||||
https='https://yunxiu.f6car.cn/kzf6/member/index.do?page=/view/index.html%23/car/edit/'+idMember #进入页面
|
||||
driver.get(https)
|
||||
time.sleep(2.2)
|
||||
#传值转换
|
||||
driver.switch_to.frame('weixin-page-iframe')
|
||||
#time.sleep(0.1)
|
||||
# 先通过日期输入框的id="train_date"来定位输入框,再通过removeAttribute方法移除"readonly"属性
|
||||
#js = 'document.getElementById("train_date").removeAttribute("readonly");'
|
||||
ele = driver.find_element_by_xpath('//*[@id="app"]/div/div[2]/div/form/div/div[2]/div/div[10]/div/div[2]/div/div/div/input')
|
||||
driver.execute_script("arguments[0].removeAttribute('readonly');", ele)
|
||||
# js = """
|
||||
# var date = document.getElementById('train_date').removeAttribute('readonly');
|
||||
# """
|
||||
# driver.execute_script(js)
|
||||
ele.click() # 先点击,清空后赋值。
|
||||
ele.clear()
|
||||
time.sleep(0.2)
|
||||
ele.send_keys(idMember1)
|
||||
time.sleep(2.2)
|
||||
driver.find_element_by_xpath(
|
||||
'//*[@id="app"]/div/div[2]/div/form/div/div[3]/button[1]/span').click() #点击保存
|
||||
time.sleep(0.2)
|
||||
endtime = datetime.datetime.now()
|
||||
print(i,'@', idMember)
|
||||
except:
|
||||
print('失败')
|
||||
continue
|
||||
@@ -0,0 +1,196 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"\n",
|
||||
"import numpy as np\n",
|
||||
"import pandas as pd\n",
|
||||
"import time\n",
|
||||
"import requests\n",
|
||||
"import json\n",
|
||||
"import xlrd\n",
|
||||
"# 生成 token,参数不需要修改\n",
|
||||
"def generateToken() -> str:\n",
|
||||
"\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",
|
||||
"class NpEncoder(json.JSONEncoder):\n",
|
||||
" def default(self, obj):\n",
|
||||
" if isinstance(obj, np.integer):\n",
|
||||
" return int(obj)\n",
|
||||
" elif isinstance(obj, np.floating):\n",
|
||||
" return float(obj)\n",
|
||||
" elif isinstance(obj, np.ndarray):\n",
|
||||
" return obj.tolist()\n",
|
||||
" else:\n",
|
||||
" return super(NpEncoder, self).default(obj)\n",
|
||||
"\n",
|
||||
"def ceshi(formData)-> str:\n",
|
||||
" \"\"\" 处理流程开始 \"\"\"\n",
|
||||
" TOKEN = generateToken()\n",
|
||||
"\n",
|
||||
" \"\"\" 通过实例id 获取表单内容 \"\"\"\n",
|
||||
"\n",
|
||||
" api = f'https://api.dingtalk.com//v1.0/yida/processes/instances/start'\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||||
" }\n",
|
||||
" payload = {\n",
|
||||
" \"appType\" : \"APP_TNVBVZ3K8G56HG03Z45Q\",\n",
|
||||
" \"systemToken\" : \"CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1\",\n",
|
||||
" \"userId\" : \"2268275546837446\",\n",
|
||||
" \"language\" : \"zh_CN\",\n",
|
||||
" \"formUuid\" : \"FORM-UP96637151Q3XIFU9NNW9BKFUVHU2XWN0EF9L84\",\n",
|
||||
" \"formDataJson\" :json.dumps(formData, cls=NpEncoder),\n",
|
||||
" \"processCode\" : \"TPROC--UP96637151Q3XIFU9NNW9BKFUVHU2YWN0EF9L94\",\n",
|
||||
" \"departmentId\" : \"574140511\" # 560526483 2706271\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(api, headers=headers, json=payload)\n",
|
||||
" res_new = res.json()\n",
|
||||
" print(\"生成失败预警!\")\n",
|
||||
"\n",
|
||||
"cookies_str ='financialSESSIONID=e2b2d95e-3a50-4175-9e52-a0b18856ec15; sensorsdata2015jssdkcross={\"distinct_id\":\"10691192243902595917\",\"first_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\",\"props\":{\"$latest_traffic_source_type\":\"直接流量\",\"$latest_search_keyword\":\"未取到值_直接打开\",\"$latest_referrer\":\"\"},\"$device_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\"}; gr_user_id=408fef1a-77ed-4e74-8f1e-31dde3446f2e; erpLanguage=zh-CN; prodOrg=11240984669917823109; unp=15730317166966239268; un=15730317166966239268; _up=-NillNN-qyBEJ--t3vnSknvoOF54zvGOscoE1X02XOFfVfjDoZHQjaZJ9Q3d-WrAAGgt60MgQHajH2BEMqCxjECoWyNjxpYEXk7xGLY883HkEvEUoY0h1gQJ-e1f6PpAWPXU62De3ZiyFHCpqOtcj-0Yk1_BOBt98xac7BTv9bbzPA..; tmall=false; sensorsdata2015jssdkcross={\"distinct_id\":\"15730317166966239268\",\"first_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\",\"props\":{\"$latest_traffic_source_type\":\"直接流量\",\"$latest_search_keyword\":\"未取到值_直接打开\",\"$latest_referrer\":\"\"},\"$device_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\"}'\n",
|
||||
"\n",
|
||||
"cookies_str = cookies_str.encode('utf-8').decode('latin-1')\n",
|
||||
"\n",
|
||||
"cookie_dict = {item.split('=')[0]: item.split('=')[1]\n",
|
||||
" for item in cookies_str.split('; ')}\n",
|
||||
"\n",
|
||||
"headers = {\n",
|
||||
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40',\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" 'origin': 'https://yunxiu.f6car.cn'\n",
|
||||
"}\n",
|
||||
"#读取excel文件\n",
|
||||
"data = xlrd.open_workbook(r\"C:\\Users\\admin\\Desktop\\新建XLS 工作表 (2).xls\")\n",
|
||||
"\n",
|
||||
"table = data.sheet_by_index(0) # 通过索引顺序获取\n",
|
||||
"\n",
|
||||
"h = table.nrows\n",
|
||||
"\n",
|
||||
"l = table.ncols\n",
|
||||
"\n",
|
||||
"print(u\"表数据的行数为%s,列数为%s\"%(h,l))\n",
|
||||
"\n",
|
||||
"for i in range(1,h):\n",
|
||||
" try:\n",
|
||||
" idMember =table.cell(i, 0).value #卡id\n",
|
||||
" idMember1 =table.cell(i, 1).value #退款金额\n",
|
||||
" idMember2 =table.cell(i, 2).value #退款金额\n",
|
||||
" idOwnOrg =table.cell(i, 3).value #门店ID\n",
|
||||
" employeeId =table.cell(i, 4).value #退卡服务顾问ID\n",
|
||||
" #读取cardVersion信息并配置退卡data\n",
|
||||
" url = 'https://yunxiu.f6car.cn/marketing/tkdBill/baseInfo?pkId={}'.format(idMember)\n",
|
||||
" resget = requests.get(url,cookies=cookie_dict)\n",
|
||||
" resget = json.loads(resget.text)\n",
|
||||
" cardVersion = resget['data']['cardVersion']\n",
|
||||
" data = {\n",
|
||||
" \"cardId\": idMember, # 退卡实体id\n",
|
||||
" \"cardVersion\": cardVersion,\n",
|
||||
" \"employeeId\": employeeId, # 退卡服务顾问ID 手动更新\n",
|
||||
" \"idOwnOrg\": idOwnOrg, # 门店ID 手动更新\n",
|
||||
" \"refundAmount\": idMember1, # 退卡金额\n",
|
||||
" \"remark\": \"过期保险代金券清理\" # 备注\n",
|
||||
" }\n",
|
||||
" #生成退卡单\n",
|
||||
" res = requests.post(f'https://yunxiu.f6car.cn/marketing/tkdBill/add',\n",
|
||||
" headers=headers,cookies=cookie_dict, json=data)\n",
|
||||
" resdata = res.json().get('data')\n",
|
||||
" #print(data)\n",
|
||||
" \n",
|
||||
"\n",
|
||||
" #读取Version信息并配置退卡data\n",
|
||||
" url1 = 'https://yunxiu.f6car.cn/marketing/tkdBill/detail/{}'.format(resdata)\n",
|
||||
" resget1 = requests.get(url1,cookies=cookie_dict)\n",
|
||||
" resget1 = json.loads(resget1.text)\n",
|
||||
" cardVersion1 = resget1['data']['version']\n",
|
||||
" #完成收款\n",
|
||||
" if idMember1 != \"0\":\n",
|
||||
" data = {\n",
|
||||
" \"idOwnOrg\": idOwnOrg,# 门店ID 手动更新\n",
|
||||
" \"idOperationOrg\": idOwnOrg,# 退卡门店ID 手动更新\n",
|
||||
" \"idSourceBill\": resdata,# 退卡单ID\n",
|
||||
" \"sourceBillType\": \"TKD\",#类型\n",
|
||||
" \"receiptMemo\": \"过期保险代金券清理\",# 备注\n",
|
||||
" \"version\": cardVersion1,\n",
|
||||
" \"favourableList\": [],\n",
|
||||
" \"gatheringFavourable\": 0,\n",
|
||||
" \"paymentTypeGroupId\": \"\",\n",
|
||||
" \"czkList\": [],\n",
|
||||
" \"paymentList\": [\n",
|
||||
" {\n",
|
||||
" \"paymentTypeId\": \"113071\",# 各门店不同 手动更新\n",
|
||||
" \"paymentType\": \"内部结算\",\n",
|
||||
" \"paymentAmount\": idMember2,\n",
|
||||
" \"gatheringType\": 0,\n",
|
||||
" \"kind\": \"normal\"\n",
|
||||
" }\n",
|
||||
" ],\n",
|
||||
" \"pkId\": 0,\n",
|
||||
" \"billType\": \"YSF\",\n",
|
||||
" \"domainCode\": \"SAAS\"\n",
|
||||
" }\n",
|
||||
" else:\n",
|
||||
" data = {\n",
|
||||
" \"idOwnOrg\": idOwnOrg,# 门店ID 手动更新\n",
|
||||
" \"idOperationOrg\": idOwnOrg,# 退卡门店ID 手动更新\n",
|
||||
" \"idSourceBill\": resdata,# 退卡单ID\n",
|
||||
" \"sourceBillType\": \"TKD\",#类型\n",
|
||||
" \"receiptMemo\": \"过期保险代金券清理\",# 备注\n",
|
||||
" \"version\": cardVersion1,\n",
|
||||
" \"favourableList\": [],\n",
|
||||
" \"gatheringFavourable\": 0,\n",
|
||||
" \"paymentTypeGroupId\": \"\",\n",
|
||||
" \"czkList\": [],\n",
|
||||
" \"paymentList\": [\n",
|
||||
" {\n",
|
||||
" \"status\": 0,\n",
|
||||
" \"paymentAmount\": 0\n",
|
||||
" }\n",
|
||||
" ],\n",
|
||||
" \"pkId\": 0,\n",
|
||||
" \"billType\": \"YSF\",\n",
|
||||
" \"domainCode\": \"SAAS\"\n",
|
||||
" }\n",
|
||||
" #print(data)\n",
|
||||
" res = requests.post(f'https://yunxiu.f6car.cn/financial/advance/payment/singleGathering', \n",
|
||||
" headers=headers,cookies=cookie_dict, json=data)\n",
|
||||
" print(\"打印出响应信息:\",i,cardVersion,cardVersion1,resdata,idMember,res.text)\n",
|
||||
" except:\n",
|
||||
" formData = {\n",
|
||||
" \"textField_l9fe0uiw\": idMember,\n",
|
||||
" \"textField_l9fe0uiv\": '恒泰退卡异常!!'\n",
|
||||
" } \n",
|
||||
" ceshi(formData)\n",
|
||||
" continue"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"language_info": {
|
||||
"name": "python"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
# -*- coding:UTF-8 -*-
|
||||
# 功能:
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.support.ui import Select
|
||||
from selenium.webdriver import ActionChains
|
||||
import time
|
||||
import xlrd
|
||||
import xlwt
|
||||
import re
|
||||
import datetime
|
||||
from xlutils.copy import copy
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
from shutil import which
|
||||
|
||||
# 输入基础信息
|
||||
name = '15888265981'
|
||||
password = 'F6123456'
|
||||
cycles = 1
|
||||
option_chrome = webdriver.ChromeOptions()
|
||||
option_chrome.add_argument('--headless')
|
||||
for hum in range(cycles):
|
||||
# 初步加载处理
|
||||
# chrom_opt = webdriver.ChromeOptions()
|
||||
# prefs = { "profile.managed_default_content_settings.images": 2 }
|
||||
# chrom_opt.add_experimental_option("prefs", prefs)
|
||||
# driver = webdriver.Chrome(executable_path="E:/Python/chromedriver.exe", chrome_options=chrom_opt)
|
||||
# 无显示预处理
|
||||
# option=webdriver.ChromeOptions()
|
||||
# option.add_argument('headless') # 设置option
|
||||
# driver = webdriver.Chrome(chrome_options=option)
|
||||
# 进入链接获取json
|
||||
# driver = webdriver.Chrome(chrome_options=option_chrome)
|
||||
driver = webdriver.Chrome(executable_path=r"C:\迅雷下载\python 暂存文件\Python\chromedriver.exe")
|
||||
driver.maximize_window()
|
||||
driver.implicitly_wait(0.2)
|
||||
httptx = 'https://yunxiu.f6car.cn'
|
||||
driver.get(httptx)
|
||||
driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[1]/div/div/input').send_keys(name)
|
||||
driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[2]/div/div[1]/input').send_keys(password)
|
||||
driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[3]/div/button/span').click()
|
||||
time.sleep(10) # 预设时间
|
||||
print("登陆系统")
|
||||
print("创建文件")
|
||||
# 新建一个excel文件
|
||||
file = xlwt.Workbook() # 注意这里的Workbook首字母是大写,无语吧
|
||||
# 新建sheet
|
||||
table = file.add_sheet('sheet name', cell_overwrite_ok=True)
|
||||
|
||||
# 打开excel文件
|
||||
print("打开文件")
|
||||
data = xlrd.open_workbook(r'C:\Users\admin\Desktop\Python脚本\图形界面自动化脚本\F6系统常用脚本\Excel通用存储位置.xls')
|
||||
print(data)
|
||||
table = data.sheet_by_index(0) # 通过索引顺序获取
|
||||
h = table.nrows
|
||||
https = 'https://yunxiu.f6car.cn/kzf6/partInfo/newPageList.do?page=view%2Fmaterial.html%23/info/list/cloud'
|
||||
driver.get(https)
|
||||
# 传值转换
|
||||
#driver.switch_to.frame('weixin-page-iframe')
|
||||
# 获取信息
|
||||
for i in range(1, h):
|
||||
try:
|
||||
d1 = datetime.datetime.now()
|
||||
receiveAmount1 = table.cell(i, 0).value # 按行品牌
|
||||
receiveAmount2 = table.cell(i, 1).value # 按行零件号
|
||||
receiveAmount3 = table.cell(i, 2).value # 按行自编码
|
||||
receiveAmount4 = "空值 " # 预设一个值
|
||||
try:
|
||||
receiveAmount5 = driver.find_element_by_xpath('/html/body/div/div/div/div/div/div/div/div[3]/div/button/span') # 获取一个品牌信息
|
||||
receiveAmount4 = receiveAmount5.text
|
||||
except:
|
||||
cycles = 1
|
||||
if receiveAmount1 != receiveAmount4: # 不相等则说明 需要重新选择品牌
|
||||
# 判断之前是否有筛选品牌
|
||||
try:
|
||||
driver.find_element_by_xpath('/html/body/div/div/div/div/div/div/div/div[3]/div/button/span/i').click()
|
||||
except:
|
||||
cycles = 1
|
||||
# 输入品牌进行筛选
|
||||
time.sleep(0.2)
|
||||
input_box = driver.find_element_by_xpath('/html/body/div/div/div/div/div/div/div/div/div/div/div[3]/input')
|
||||
input_box.send_keys(Keys.CONTROL, 'a')
|
||||
input_box.send_keys(Keys.BACK_SPACE)
|
||||
# input_box.send_keys(Keys.CONTROL, 'v')
|
||||
driver.find_element_by_xpath('/html/body/div/div/div/div/div/div/div/div/div/div/div[3]/input').send_keys(
|
||||
receiveAmount1)
|
||||
time.sleep(0.2)
|
||||
driver.find_element_by_xpath('/html/body/div/div/div/div/div/div/div/div/div/div/div[3]/div/button/i').click()
|
||||
time.sleep(0.2)
|
||||
try:
|
||||
input0=driver.find_element_by_xpath('/html/body/div/div/div/div/div/div/div/div/div/div/ul/li/span')
|
||||
if input0.text==receiveAmount1:
|
||||
driver.find_element_by_xpath(
|
||||
'/html/body/div/div/div/div/div/div/div/div/div/div/ul/li[1]/span').click()
|
||||
except:
|
||||
cycles = 1
|
||||
# 输入零件号进行查询并记录内容
|
||||
try:
|
||||
time.sleep(0.2)
|
||||
input_box = driver.find_element_by_xpath(
|
||||
'/html/body/div/div/div/div/div/div/div/div/div/div/div[3]/input')
|
||||
input_box.send_keys(Keys.CONTROL, 'a')
|
||||
input_box.send_keys(Keys.BACK_SPACE)
|
||||
# input_box.send_keys(Keys.CONTROL, 'v')
|
||||
driver.find_element_by_xpath(
|
||||
'/html/body/div/div/div/div/div/div/div/div/div/div/div[3]/input').send_keys(receiveAmount2)
|
||||
time.sleep(0.2)
|
||||
driver.find_element_by_xpath(
|
||||
'/html/body/div/div/div/div/div/div/div/div/div/div/div[3]/div/button/i').click() # 确定
|
||||
time.sleep(0.2)
|
||||
input1 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div/div/table/tbody/tr[1]/td[1]/div')
|
||||
input2 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div/div/table/tbody/tr[1]/td[2]/div')
|
||||
input3 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div/div/table/tbody/tr[1]/td[4]/div')
|
||||
input4 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div/div/table/tbody/tr[1]/td[6]/div')
|
||||
|
||||
input5 = driver.find_element_by_xpath('//*[@id="cloudTable"]/div[2]/span')
|
||||
print(i, '@', receiveAmount3, '@', input1.text, '@', input2.text, '@', input3.text, '@', input4.text, '@', input5.text, '@',d1)
|
||||
except:
|
||||
print(i,d1)
|
||||
except:
|
||||
continue
|
||||
@@ -0,0 +1,82 @@
|
||||
# -*- coding:UTF-8 -*-
|
||||
# 功能:F6系统页面会员卡退卡操作
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.support.ui import Select
|
||||
from selenium.webdriver import ActionChains
|
||||
import time
|
||||
import xlrd
|
||||
import xlwt
|
||||
import re
|
||||
from xlutils.copy import copy
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
import datetime
|
||||
|
||||
# 获取会员卡基础信息
|
||||
name = '15888265981'
|
||||
password = 'F6123456'
|
||||
option_chrome = webdriver.ChromeOptions()
|
||||
option_chrome.add_argument('--headless')
|
||||
|
||||
http = 'https://m.f6car.cn/'
|
||||
# 进入链接获取json
|
||||
# driver = webdriver.Chrome(chrome_options=option_chrome)
|
||||
driver = webdriver.Chrome(executable_path=r"C:\Users\admin\Desktop\Python脚本\chromedriver.exe")
|
||||
driver.maximize_window()
|
||||
driver.implicitly_wait(2)
|
||||
driver.get(http)
|
||||
driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[1]/div/div/input').send_keys(name)
|
||||
driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[2]/div/div[1]/input').send_keys(password)
|
||||
driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[3]/div/button/span').click()
|
||||
time.sleep(15) # 预设时间
|
||||
|
||||
# 新建一个excel文件
|
||||
file = xlwt.Workbook() # 注意这里的Workbook首字母是大写,无语吧
|
||||
# 新建sheet
|
||||
table = file.add_sheet('sheet name', cell_overwrite_ok=True)
|
||||
if 1 == 1:
|
||||
he = 0
|
||||
hen = 0
|
||||
heng = 0
|
||||
hang = 0
|
||||
len = 0
|
||||
# 获取所有内容
|
||||
# 打开excel文件
|
||||
data = xlrd.open_workbook(r'C:\Users\admin\Desktop\新建XLS 工作表 (4).xls')
|
||||
print(data)
|
||||
table = data.sheet_by_index(0) # 通过索引顺序获取
|
||||
h = table.nrows
|
||||
l = table.ncols
|
||||
print(u"表数据的行数为%s,列数为%s" % (h, l))
|
||||
|
||||
# 获取卡项目
|
||||
for i in range(0, h):
|
||||
try:
|
||||
starttime = datetime.datetime.now()
|
||||
idMember = table.cell(i, 0).value # 按行读取数据
|
||||
receiveAmount = table.cell(i, 1).value # 按行读取数据
|
||||
https = 'https://yunxiu.f6car.cn/kzf6/partInfo/newPageList.do?page=view%2Fmaterial.html%23/info/edit/'+idMember+'&idOwnOrg=11240984669917170626&manageStatus=0'
|
||||
# http = 'https://yunxiu-trial.f6car.cn/kzf6/payment/toGathering.do?idSourceBill=' + idMember + '&billType=TKD'
|
||||
# 进入链接获取json
|
||||
driver.get(https)
|
||||
|
||||
# 传值转换
|
||||
driver.switch_to.frame('weixin-page-iframe')
|
||||
time.sleep(0.2)
|
||||
# driver.find_element_by_xpath(
|
||||
# '//*[@id="app"]/div[2]/div[2]/div/section[2]/div[2]/div[2]/div[3]/div/div/input').send_keys(onename)
|
||||
input_bos = driver.find_element_by_xpath(
|
||||
'//*[@id="material-content"]/form/div[5]/div[2]/div/div/div/input')
|
||||
input_bos.send_keys(Keys.CONTROL, 'a')
|
||||
input_bos.send_keys(Keys.BACK_SPACE)
|
||||
input_bos.send_keys(receiveAmount)
|
||||
time.sleep(0.2)
|
||||
driver.find_element_by_xpath(
|
||||
'//*[@id="material-content"]/div[1]/span[1]/button/span').click()
|
||||
time.sleep(0.2)
|
||||
endtime = datetime.datetime.now()
|
||||
implement = (endtime - starttime).seconds
|
||||
print(i, implement)
|
||||
except:
|
||||
print('失败')
|
||||
continue
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,259 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"import requests\n",
|
||||
"import json\n",
|
||||
"import xlrd\n",
|
||||
"from pprint import pprint\n",
|
||||
"cookies_str = 'f6-ids-goodsSESSIONID=0b378941-65f1-4ec2-8852-fd6bc499576d; erpLanguage=zh-CN; prodOrg=11240984669917816032; unp=15721517460790206472; _up=-NillNN-qyBEJ--t3vnSknvoOF54z_CIscoB1Xs4U-dfVvfFoJvQjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbrHfsXqYkl1wEF-fFRv-ZNHu3M-GTc2ZqwEHavqutVjuIaklbFOhRtrEj90BS_prS1PQQ.; tmall=false; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2215721517460790206472%22%2C%22first_id%22%3A%2217e08ece80f53a-0448dc86383ae5-3e604809-1327104-17e08ece81094e%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22https%3A%2F%2Fyunxiu.f6car.com%2Ferp%2Fview%2Findex.html%22%7D%2C%22%24device_id%22%3A%2217e08ece80f53a-0448dc86383ae5-3e604809-1327104-17e08ece81094e%22%7D'\n",
|
||||
"\n",
|
||||
"cookies_str = cookies_str.encode('utf-8').decode('latin-1')\n",
|
||||
"\n",
|
||||
"cookie_dict = {item.split('=')[0]: item.split('=')[1]\n",
|
||||
" for item in cookies_str.split('; ')}\n",
|
||||
"\n",
|
||||
"headers = {\n",
|
||||
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40',\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" 'origin': 'https://yunxiu.f6car.cn'\n",
|
||||
"}\n",
|
||||
"#读取excel文件\n",
|
||||
"\n",
|
||||
"df = pd.read_excel(r'C:\\Users\\杨国栋\\Desktop\\修改.xls',sheet_name='Sheet4',dtype='string')\n",
|
||||
"for item in df.index:\n",
|
||||
" mid= df.loc[item,'材料ID']\n",
|
||||
" Cid= df.loc[item,'材料编码']\n",
|
||||
" name= df.loc[item,'材料名称']\n",
|
||||
" brand= df.loc[item,'品牌']\n",
|
||||
" if pd.isna(brand):\n",
|
||||
" brand =''\n",
|
||||
" supplierCode= df.loc[item,'零件号']\n",
|
||||
" if pd.isna(supplierCode):\n",
|
||||
" supplierCode =''\n",
|
||||
" spec= df.loc[item,'规格型号']\n",
|
||||
" if pd.isna(spec):\n",
|
||||
" spec =''\n",
|
||||
" applyModel= df.loc[item,'适用车型']\n",
|
||||
" if pd.isna(applyModel):\n",
|
||||
" applyModel =''\n",
|
||||
" #get材料属性\n",
|
||||
" url = 'https://ids-goods.f6car.cn/f6-ids-goods/part/getPartInfo?partId={}'.format(mid)\n",
|
||||
"\n",
|
||||
" res = requests.get(url,cookies=cookie_dict)\n",
|
||||
" strele = res.json()\n",
|
||||
" \n",
|
||||
" strele['data']['name'] = name#修改内容\n",
|
||||
" strele['data']['brand'] = brand#修改内容\n",
|
||||
" strele['data']['supplierCode'] = supplierCode#修改内容\n",
|
||||
" strele['data']['spec'] = spec#修改内容\n",
|
||||
" strele['data']['applyModel'] = applyModel#修改内容\n",
|
||||
"\n",
|
||||
" #修改值读取\n",
|
||||
" res = requests.post(f'https://ids-goods.f6car.cn/f6-ids-goods/part/updatePartInfo', timeout=None,headers=headers,cookies=cookie_dict, json=strele['data'])\n",
|
||||
" re=res.json()\n",
|
||||
" print(item+1,Cid,mid,re['message'])"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## 获取材料ID"
|
||||
]
|
||||
},
|
||||
{
|
||||
"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"
|
||||
]
|
||||
},
|
||||
{
|
||||
"ename": "KeyboardInterrupt",
|
||||
"evalue": "",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001B[1;31m---------------------------------------------------------------------------\u001B[0m",
|
||||
"\u001B[1;31mKeyboardInterrupt\u001B[0m Traceback (most recent call last)",
|
||||
"\u001B[1;32m<ipython-input-1-d5eec088eb9c>\u001B[0m in \u001B[0;36m<module>\u001B[1;34m\u001B[0m\n\u001B[0;32m 41\u001B[0m }\n\u001B[0;32m 42\u001B[0m \u001B[0murl\u001B[0m \u001B[1;33m=\u001B[0m \u001B[1;34m'https://ids-goods.f6car.com/f6-ids-goods/part/getExactPartStockInfo'\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m---> 43\u001B[1;33m \u001B[0mres\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mrequests\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mpost\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0murl\u001B[0m\u001B[1;33m,\u001B[0m\u001B[0mcookies\u001B[0m\u001B[1;33m=\u001B[0m\u001B[0mcookie_dict\u001B[0m\u001B[1;33m,\u001B[0m\u001B[0mheaders\u001B[0m\u001B[1;33m=\u001B[0m\u001B[0mheaders\u001B[0m\u001B[1;33m,\u001B[0m\u001B[0mjson\u001B[0m\u001B[1;33m=\u001B[0m\u001B[0mjson\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 44\u001B[0m \u001B[0mstrele\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mres\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mjson\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 45\u001B[0m \u001B[0mle\u001B[0m\u001B[1;33m=\u001B[0m\u001B[0mlen\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mstrele\u001B[0m\u001B[1;33m[\u001B[0m\u001B[1;34m'data'\u001B[0m\u001B[1;33m]\u001B[0m\u001B[1;33m[\u001B[0m\u001B[1;34m'records'\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\\requests\\api.py\u001B[0m in \u001B[0;36mpost\u001B[1;34m(url, data, json, **kwargs)\u001B[0m\n\u001B[0;32m 117\u001B[0m \"\"\"\n\u001B[0;32m 118\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m--> 119\u001B[1;33m \u001B[1;32mreturn\u001B[0m \u001B[0mrequest\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;34m'post'\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0murl\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mdata\u001B[0m\u001B[1;33m=\u001B[0m\u001B[0mdata\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mjson\u001B[0m\u001B[1;33m=\u001B[0m\u001B[0mjson\u001B[0m\u001B[1;33m,\u001B[0m \u001B[1;33m**\u001B[0m\u001B[0mkwargs\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 120\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 121\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n",
|
||||
"\u001B[1;32mc:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\requests\\api.py\u001B[0m in \u001B[0;36mrequest\u001B[1;34m(method, url, **kwargs)\u001B[0m\n\u001B[0;32m 59\u001B[0m \u001B[1;31m# cases, and look like a memory leak in others.\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 60\u001B[0m \u001B[1;32mwith\u001B[0m \u001B[0msessions\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mSession\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;33m)\u001B[0m \u001B[1;32mas\u001B[0m \u001B[0msession\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m---> 61\u001B[1;33m \u001B[1;32mreturn\u001B[0m \u001B[0msession\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mrequest\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mmethod\u001B[0m\u001B[1;33m=\u001B[0m\u001B[0mmethod\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0murl\u001B[0m\u001B[1;33m=\u001B[0m\u001B[0murl\u001B[0m\u001B[1;33m,\u001B[0m \u001B[1;33m**\u001B[0m\u001B[0mkwargs\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 62\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 63\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n",
|
||||
"\u001B[1;32mc:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\requests\\sessions.py\u001B[0m in \u001B[0;36mrequest\u001B[1;34m(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)\u001B[0m\n\u001B[0;32m 540\u001B[0m }\n\u001B[0;32m 541\u001B[0m \u001B[0msend_kwargs\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mupdate\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0msettings\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m--> 542\u001B[1;33m \u001B[0mresp\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0msend\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mprep\u001B[0m\u001B[1;33m,\u001B[0m \u001B[1;33m**\u001B[0m\u001B[0msend_kwargs\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 543\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 544\u001B[0m \u001B[1;32mreturn\u001B[0m \u001B[0mresp\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\\requests\\sessions.py\u001B[0m in \u001B[0;36msend\u001B[1;34m(self, request, **kwargs)\u001B[0m\n\u001B[0;32m 653\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 654\u001B[0m \u001B[1;31m# Send the request\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m--> 655\u001B[1;33m \u001B[0mr\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0madapter\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0msend\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mrequest\u001B[0m\u001B[1;33m,\u001B[0m \u001B[1;33m**\u001B[0m\u001B[0mkwargs\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 656\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 657\u001B[0m \u001B[1;31m# Total elapsed time of the request (approximately)\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\\requests\\adapters.py\u001B[0m in \u001B[0;36msend\u001B[1;34m(self, request, stream, timeout, verify, cert, proxies)\u001B[0m\n\u001B[0;32m 437\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[0;32m 438\u001B[0m \u001B[1;32mif\u001B[0m \u001B[1;32mnot\u001B[0m \u001B[0mchunked\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m--> 439\u001B[1;33m resp = conn.urlopen(\n\u001B[0m\u001B[0;32m 440\u001B[0m \u001B[0mmethod\u001B[0m\u001B[1;33m=\u001B[0m\u001B[0mrequest\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mmethod\u001B[0m\u001B[1;33m,\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 441\u001B[0m \u001B[0murl\u001B[0m\u001B[1;33m=\u001B[0m\u001B[0murl\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\\urllib3\\connectionpool.py\u001B[0m in \u001B[0;36murlopen\u001B[1;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw)\u001B[0m\n\u001B[0;32m 697\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 698\u001B[0m \u001B[1;31m# Make the request on the httplib connection object.\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m--> 699\u001B[1;33m httplib_response = self._make_request(\n\u001B[0m\u001B[0;32m 700\u001B[0m \u001B[0mconn\u001B[0m\u001B[1;33m,\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 701\u001B[0m \u001B[0mmethod\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\\urllib3\\connectionpool.py\u001B[0m in \u001B[0;36m_make_request\u001B[1;34m(self, conn, method, url, timeout, chunked, **httplib_request_kw)\u001B[0m\n\u001B[0;32m 443\u001B[0m \u001B[1;31m# Python 3 (including for exceptions like SystemExit).\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 444\u001B[0m \u001B[1;31m# Otherwise it looks like a bug in the code.\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m--> 445\u001B[1;33m \u001B[0msix\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mraise_from\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0me\u001B[0m\u001B[1;33m,\u001B[0m \u001B[1;32mNone\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 446\u001B[0m \u001B[1;32mexcept\u001B[0m \u001B[1;33m(\u001B[0m\u001B[0mSocketTimeout\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mBaseSSLError\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mSocketError\u001B[0m\u001B[1;33m)\u001B[0m \u001B[1;32mas\u001B[0m \u001B[0me\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 447\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0m_raise_timeout\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0merr\u001B[0m\u001B[1;33m=\u001B[0m\u001B[0me\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0murl\u001B[0m\u001B[1;33m=\u001B[0m\u001B[0murl\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mtimeout_value\u001B[0m\u001B[1;33m=\u001B[0m\u001B[0mread_timeout\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\\urllib3\\packages\\six.py\u001B[0m in \u001B[0;36mraise_from\u001B[1;34m(value, from_value)\u001B[0m\n",
|
||||
"\u001B[1;32mc:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\urllib3\\connectionpool.py\u001B[0m in \u001B[0;36m_make_request\u001B[1;34m(self, conn, method, url, timeout, chunked, **httplib_request_kw)\u001B[0m\n\u001B[0;32m 438\u001B[0m \u001B[1;31m# Python 3\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 439\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--> 440\u001B[1;33m \u001B[0mhttplib_response\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mconn\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mgetresponse\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[0m\u001B[0;32m 441\u001B[0m \u001B[1;32mexcept\u001B[0m \u001B[0mBaseException\u001B[0m \u001B[1;32mas\u001B[0m \u001B[0me\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 442\u001B[0m \u001B[1;31m# Remove the TypeError from the exception chain in\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\\http\\client.py\u001B[0m in \u001B[0;36mgetresponse\u001B[1;34m(self)\u001B[0m\n\u001B[0;32m 1343\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[0;32m 1344\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-> 1345\u001B[1;33m \u001B[0mresponse\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mbegin\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[0m\u001B[0;32m 1346\u001B[0m \u001B[1;32mexcept\u001B[0m \u001B[0mConnectionError\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 1347\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mclose\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\\http\\client.py\u001B[0m in \u001B[0;36mbegin\u001B[1;34m(self)\u001B[0m\n\u001B[0;32m 305\u001B[0m \u001B[1;31m# read until we get a non-100 response\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 306\u001B[0m \u001B[1;32mwhile\u001B[0m \u001B[1;32mTrue\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m--> 307\u001B[1;33m \u001B[0mversion\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mstatus\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mreason\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0m_read_status\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[0m\u001B[0;32m 308\u001B[0m \u001B[1;32mif\u001B[0m \u001B[0mstatus\u001B[0m \u001B[1;33m!=\u001B[0m \u001B[0mCONTINUE\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 309\u001B[0m \u001B[1;32mbreak\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n",
|
||||
"\u001B[1;32mc:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\http\\client.py\u001B[0m in \u001B[0;36m_read_status\u001B[1;34m(self)\u001B[0m\n\u001B[0;32m 266\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 267\u001B[0m \u001B[1;32mdef\u001B[0m \u001B[0m_read_status\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mself\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;32m--> 268\u001B[1;33m \u001B[0mline\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mstr\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mfp\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mreadline\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0m_MAXLINE\u001B[0m \u001B[1;33m+\u001B[0m \u001B[1;36m1\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m,\u001B[0m \u001B[1;34m\"iso-8859-1\"\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 269\u001B[0m \u001B[1;32mif\u001B[0m \u001B[0mlen\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mline\u001B[0m\u001B[1;33m)\u001B[0m \u001B[1;33m>\u001B[0m \u001B[0m_MAXLINE\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 270\u001B[0m \u001B[1;32mraise\u001B[0m \u001B[0mLineTooLong\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;34m\"status line\"\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\\socket.py\u001B[0m in \u001B[0;36mreadinto\u001B[1;34m(self, b)\u001B[0m\n\u001B[0;32m 702\u001B[0m \u001B[1;32mwhile\u001B[0m \u001B[1;32mTrue\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 703\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--> 704\u001B[1;33m \u001B[1;32mreturn\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0m_sock\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mrecv_into\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mb\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 705\u001B[0m \u001B[1;32mexcept\u001B[0m \u001B[0mtimeout\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 706\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0m_timeout_occurred\u001B[0m \u001B[1;33m=\u001B[0m \u001B[1;32mTrue\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n",
|
||||
"\u001B[1;32mc:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\ssl.py\u001B[0m in \u001B[0;36mrecv_into\u001B[1;34m(self, buffer, nbytes, flags)\u001B[0m\n\u001B[0;32m 1239\u001B[0m \u001B[1;34m\"non-zero flags not allowed in calls to recv_into() on %s\"\u001B[0m \u001B[1;33m%\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 1240\u001B[0m self.__class__)\n\u001B[1;32m-> 1241\u001B[1;33m \u001B[1;32mreturn\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mread\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mnbytes\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mbuffer\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 1242\u001B[0m \u001B[1;32melse\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 1243\u001B[0m \u001B[1;32mreturn\u001B[0m \u001B[0msuper\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mrecv_into\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mbuffer\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mnbytes\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mflags\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\\ssl.py\u001B[0m in \u001B[0;36mread\u001B[1;34m(self, len, buffer)\u001B[0m\n\u001B[0;32m 1097\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[0;32m 1098\u001B[0m \u001B[1;32mif\u001B[0m \u001B[0mbuffer\u001B[0m \u001B[1;32mis\u001B[0m \u001B[1;32mnot\u001B[0m \u001B[1;32mNone\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m-> 1099\u001B[1;33m \u001B[1;32mreturn\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0m_sslobj\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mread\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mlen\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mbuffer\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 1100\u001B[0m \u001B[1;32melse\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 1101\u001B[0m \u001B[1;32mreturn\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0m_sslobj\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mread\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mlen\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n",
|
||||
"\u001B[1;31mKeyboardInterrupt\u001B[0m: "
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"import requests\n",
|
||||
"import json\n",
|
||||
"import xlrd\n",
|
||||
"from pprint import pprint\n",
|
||||
"cookies_str = 'f6-ids-goodsSESSIONID=b6d441f0-5656-4e48-bb58-6aca41a7de08; gr_user_id=408fef1a-77ed-4e74-8f1e-31dde3446f2e; erpLanguage=zh-CN; prodOrg=11240984669918090119; unp=15845818048897376354; _up=-NillNN-qyBEJ--t3vnSknvoOF53yfSFscUF13M3U-BeUffCop3QjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbqFvASoY0i3gMF-vVRv-ZNHu3M-GTc1py0HXagruldgeIdk1HFPRZrrEj9klyw8Le1Nhk.; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2215845818048897376354%22%2C%22first_id%22%3A%221750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%221750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0%22%7D; tmall=false'\n",
|
||||
"\n",
|
||||
"cookies_str = cookies_str.encode('utf-8').decode('latin-1')\n",
|
||||
"\n",
|
||||
"cookie_dict = {item.split('=')[0]: item.split('=')[1]\n",
|
||||
" for item in cookies_str.split('; ')}\n",
|
||||
"\n",
|
||||
"headers = {\n",
|
||||
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40',\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" 'origin': 'https://yunxiu.f6car.cn'\n",
|
||||
"}\n",
|
||||
"ID=[]\n",
|
||||
"for a in range(1,55):\n",
|
||||
" json={\n",
|
||||
" \"keyWord\":\"\",\n",
|
||||
" \"idOwnOrg\":\"11240984669918090119\",\n",
|
||||
" \"currentPage\":a,\n",
|
||||
" \"pageSize\":100,\n",
|
||||
" \"name\":\"\",\n",
|
||||
" \"brand\":\"\",\n",
|
||||
" \"supplierCode\":\"\",\n",
|
||||
" \"customCode\":\"\",\n",
|
||||
" \"categoryName\":\"\",\n",
|
||||
" \"categoryId\":\"\",\n",
|
||||
" \"labelId\":\"\",\n",
|
||||
" \"labelName\":\"\",\n",
|
||||
" \"spec\":\"\",\n",
|
||||
" \"applyModel\":\"\",\n",
|
||||
" \"sellPurchaseStatuses\":[\n",
|
||||
" 2,\n",
|
||||
" 3,\n",
|
||||
" 4,\n",
|
||||
" 5\n",
|
||||
" ]\n",
|
||||
" }\n",
|
||||
" url = 'https://ids-goods.f6car.com/f6-ids-goods/part/getExactPartStockInfo'\n",
|
||||
" res = requests.post(url,cookies=cookie_dict,headers=headers,json=json)\n",
|
||||
" strele = res.json()\n",
|
||||
" le=len(strele['data']['records'])\n",
|
||||
"\n",
|
||||
" for i in range(0,le):\n",
|
||||
" MX={}\n",
|
||||
" partId=strele['data']['records'][i]['partId']\n",
|
||||
" customCode=strele['data']['records'][i]['customCode']\n",
|
||||
" supplierCode=strele['data']['records'][i]['supplierCode']\n",
|
||||
" MX['材料编码']=customCode\n",
|
||||
" MX['材料ID']=partId\n",
|
||||
" MX['零件号']=supplierCode\n",
|
||||
" ID.append(MX)\n",
|
||||
"df=pd.DataFrame(ID)\n",
|
||||
"df.to_excel(r'C:\\Users\\admin\\Desktop\\材料ID.xlsx',index=False)\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"metadata": {},
|
||||
"cell_type": "markdown",
|
||||
"source": "## 材料信息修改保存"
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## 根据材料编码获取材料ID"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"import requests\n",
|
||||
"import json\n",
|
||||
"import xlrd\n",
|
||||
"from pprint import pprint\n",
|
||||
"cookies_str = 'f6-ids-goodsSESSIONID=fe148c9e-e01a-4a90-b1b5-d76d51cfa6af; erpLanguage=zh-CN; tmall=false; prodOrg=11240984669917891540; unp=15763324200216977433; _up=-NillNN-qyBEJ--t3vnSknvoOF54y_KOsskH03s9W-FUUfbFpJrQjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbqFPcWr44i1gYP__hRv-ZNHu3M-GTc2Z6yFnWsrO1Vi-ocmVHEOhBsrEj96Xjc98vYSjk.; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2215605564149906554899%22%2C%22first_id%22%3A%2217e08ece80f53a-0448dc86383ae5-3e604809-1327104-17e08ece81094e%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22https%3A%2F%2Fyunxiu.f6car.com%2Ferp%2Fview%2Findex.html%22%7D%2C%22%24device_id%22%3A%2217e08ece80f53a-0448dc86383ae5-3e604809-1327104-17e08ece81094e%22%7D'\n",
|
||||
"cookies_str = cookies_str.encode('utf-8').decode('latin-1')\n",
|
||||
"\n",
|
||||
"cookie_dict = {item.split('=')[0]: item.split('=')[1]\n",
|
||||
" for item in cookies_str.split('; ')}\n",
|
||||
"\n",
|
||||
"headers = {\n",
|
||||
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40',\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" 'origin': 'https://yunxiu.f6car.cn'\n",
|
||||
"}\n",
|
||||
"df = pd.read_excel(r'C:\\Users\\杨国栋\\Desktop\\材料.xlsx',sheet_name='Sheet1',dtype='string') \n",
|
||||
"for item in df.index:\n",
|
||||
" CLID= df.loc[item,'材料编码']\n",
|
||||
" json={\n",
|
||||
" \"keyWord\":CLID,\n",
|
||||
" \"idOwnOrg\":\"11240984669917891540\",\n",
|
||||
" \"currentPage\":1,\n",
|
||||
" \"pageSize\":10,\n",
|
||||
" \"name\":\"\",\n",
|
||||
" \"brand\":\"\",\n",
|
||||
" \"supplierCode\":\"\",\n",
|
||||
" \"customCode\":\"\",\n",
|
||||
" \"categoryName\":\"\",\n",
|
||||
" \"categoryId\":\"\",\n",
|
||||
" \"labelId\":\"\",\n",
|
||||
" \"labelName\":\"\",\n",
|
||||
" \"spec\":\"\",\n",
|
||||
" \"applyModel\":\"\",\n",
|
||||
" \"sellPurchaseStatuses\":[\n",
|
||||
" 2,\n",
|
||||
" 3,\n",
|
||||
" 4,\n",
|
||||
" 5\n",
|
||||
" ]\n",
|
||||
" }\n",
|
||||
" url = 'https://ids-goods.f6car.com/f6-ids-goods/part/getExactPartStockInfo'\n",
|
||||
" res = requests.post(url,cookies=cookie_dict,headers=headers,json=json)\n",
|
||||
" re=res.json()\n",
|
||||
" print(CLID,re['data']['records'][0]['partId'])\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "F6processing",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.9.4"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
import pandas as pd
|
||||
import requests
|
||||
import json
|
||||
import xlrd
|
||||
from pprint import pprint
|
||||
cookies_str = 'f6-ids-goodsSESSIONID=af571e86-4e73-4006-9c8a-255f6977165c; erpLanguage=zh-CN; tmall=false; unp=10546443564007523766; _up=-NillNN-qyBEJ--t3vnSknvoOFt6yfeJtM4A1X8_WuBYVPLGoZ_QjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbqFPoUqI4i0wsJ9_JRv-ZNHu3M-GTZ25y3EXOrq-tRiesdlVTAORVprEj9-knQgcH6NGI.; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2215605564149906554899%22%2C%22first_id%22%3A%2217e08ece80f53a-0448dc86383ae5-3e604809-1327104-17e08ece81094e%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22https%3A%2F%2Fyunxiu.f6car.com%2Ferp%2Fview%2Findex.html%22%7D%2C%22%24device_id%22%3A%2217e08ece80f53a-0448dc86383ae5-3e604809-1327104-17e08ece81094e%22%7D; prodOrg=11240984669917926035'
|
||||
|
||||
cookies_str = cookies_str.encode('utf-8').decode('latin-1')
|
||||
|
||||
cookie_dict = {item.split('=')[0]: item.split('=')[1]
|
||||
for item in cookies_str.split('; ')}
|
||||
|
||||
headers = {
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40',
|
||||
"Content-Type": "application/json",
|
||||
'origin': 'https://yunxiu.f6car.cn'
|
||||
}
|
||||
url = 'https://ids-goods.f6car.com/f6-ids-goods/part/deletePartInfo'
|
||||
|
||||
data = pd.read_excel(r"C:\Users\admin\Desktop\新建XLS 工作表(1).xls", sheet_name='Sheet5')
|
||||
for a in data.index:
|
||||
infoId =data.loc[a,"材料长码"]
|
||||
json={"infoIds":[str(infoId)],"idOwnOrg":"11240984669917926035"}
|
||||
resquest = requests.post(url,cookies=cookie_dict,json=json)
|
||||
print(resquest,json)
|
||||
+41801
File diff suppressed because it is too large
Load Diff
+17201
File diff suppressed because it is too large
Load Diff
+6236
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,131 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 14,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"data = {\n",
|
||||
" \"keyWord\": \"\",\n",
|
||||
" \"brand\": \"\",\n",
|
||||
" \"categoryId\": \"\",\n",
|
||||
" \"spec\": \"\",\n",
|
||||
" \"supplierIdList\": \"\",\n",
|
||||
" \"applyModel\": \"\",\n",
|
||||
" \"oe\": \"\",\n",
|
||||
" \"includeZeroStock\": 0,\n",
|
||||
" \"partName\": \"\",\n",
|
||||
" \"customCode\": \"\",\n",
|
||||
" \"supplierCode\": \"\",\n",
|
||||
" \"searchType\": 1,\n",
|
||||
" \"defSeat\": \"\",\n",
|
||||
" \"needOrgBaseInfo\": \"0\",\n",
|
||||
" \"needStorageBaseInfo\": 1,\n",
|
||||
" \"defSeatStorageId\": \"\",\n",
|
||||
" \"idOwnOrgList\": [\n",
|
||||
" \"11240984669917398647\"\n",
|
||||
" ],\n",
|
||||
" \"labelIds\": [],\n",
|
||||
" \"sellPurchaseStatusList\": [\n",
|
||||
" 2,\n",
|
||||
" 3,\n",
|
||||
" 4,\n",
|
||||
" 5\n",
|
||||
" ],\n",
|
||||
" \"storageIdList\": [],\n",
|
||||
" \"sorts\": [],\n",
|
||||
" \"currentPage\": 1,\n",
|
||||
" \"pageSize\": 100\n",
|
||||
"}"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 15,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"{'code': 200,\n",
|
||||
" 'data': {'storageVoList': [],\n",
|
||||
" 'page': {'endRow': 0,\n",
|
||||
" 'firstPage': 0,\n",
|
||||
" 'hasNextPage': False,\n",
|
||||
" 'hasPreviousPage': False,\n",
|
||||
" 'isFirstPage': False,\n",
|
||||
" 'isLastPage': False,\n",
|
||||
" 'lastPage': 0,\n",
|
||||
" 'list': [],\n",
|
||||
" 'navigateFirstPage': 0,\n",
|
||||
" 'navigateLastPage': 0,\n",
|
||||
" 'navigatePages': 0,\n",
|
||||
" 'navigatepageNums': None,\n",
|
||||
" 'nextPage': 0,\n",
|
||||
" 'orderBy': '',\n",
|
||||
" 'pageNum': 0,\n",
|
||||
" 'pageSize': 0,\n",
|
||||
" 'pages': 0,\n",
|
||||
" 'prePage': 0,\n",
|
||||
" 'size': 0,\n",
|
||||
" 'startRow': 0,\n",
|
||||
" 'total': 0}},\n",
|
||||
" 'message': 'SUCCESS'}"
|
||||
]
|
||||
},
|
||||
"execution_count": 15,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"import time\n",
|
||||
"import requests\n",
|
||||
"import json\n",
|
||||
"\n",
|
||||
"cookies_str = 'stockSESSIONID=0e42a44b-1c08-4087-9cdf-4203d0611552; sensorsdata2015jssdkcross={\"distinct_id\":\"10691192243902595917\",\"first_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\",\"props\":{\"$latest_traffic_source_type\":\"直接流量\",\"$latest_search_keyword\":\"未取到值_直接打开\",\"$latest_referrer\":\"\"},\"$device_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\"}; gr_user_id=408fef1a-77ed-4e74-8f1e-31dde3446f2e; erpLanguage=zh-CN; currMenu=工单; prodOrg=11240984669917217520; unp=15503028824961978372; un=15503028824961978372; _up=-NillNN-qyBEJ--t3vnSknvoOF56zfKNssUN0X82XOZUUfnCoJvQjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbrHfYWoYgr0gQL-vBRv-ZNHu3M-GTc25iyFXWgpu9RgO0bmVHLPRRtrEj9yXq_98vOMyM.; tmall=false; sensorsdata2015jssdkcross={\"distinct_id\":\"15503028824961978372\",\"first_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\",\"props\":{\"$latest_traffic_source_type\":\"直接流量\",\"$latest_search_keyword\":\"未取到值_直接打开\",\"$latest_referrer\":\"\"},\"$device_id\":\"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0\"}'\n",
|
||||
"\n",
|
||||
"cookies_str = cookies_str.encode('utf-8').decode('latin-1')\n",
|
||||
"\n",
|
||||
"cookie_dict = {item.split('=')[0]: item.split('=')[1]\n",
|
||||
" for item in cookies_str.split('; ')}\n",
|
||||
"headers = {\n",
|
||||
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40',\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"#get材料属性\n",
|
||||
"url = 'https://yunxiu.f6car.cn/stock/stockSearch/stockSearchInfo'\n",
|
||||
"\n",
|
||||
"res = requests.post(url,cookies=cookie_dict,headers=headers,json=data)\n",
|
||||
"res = res.json()\n",
|
||||
"res\n",
|
||||
" "
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"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
|
||||
}
|
||||
@@ -0,0 +1,112 @@
|
||||
# 导入库
|
||||
import os
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
from selenium.webdriver.support import expected_conditions as EC
|
||||
from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver.support.wait import WebDriverWait
|
||||
import time
|
||||
import pandas as pd
|
||||
|
||||
# 账号密码 -- 需要修改
|
||||
name = '15888265981'
|
||||
password = 'F6123456'
|
||||
|
||||
driver = webdriver.Chrome(executable_path=r"C:\Users\admin\Desktop\Python脚本\chromedriver.exe")
|
||||
|
||||
driver.maximize_window() # 最大化浏览器窗口
|
||||
real_https = 'https://yunxiu.f6car.cn/' # 正式网址
|
||||
fake_https = 'https://m-trial.f6car.cn/' # 测试网址
|
||||
# 打开网页,根据情况更改网址变量
|
||||
driver.get(real_https)
|
||||
|
||||
# 在输入框中输入账号和密码
|
||||
username = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id="pane-username"]/form/div[1]/div/div[1]/input')))
|
||||
enter = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id="pane-username"]/form/div[3]/div/button')))
|
||||
username.clear()
|
||||
username.send_keys(name)
|
||||
driver.find_element_by_xpath(r'//*[@id="pane-username"]/form/div[2]/div/div[1]/input').send_keys(password)
|
||||
enter.click()
|
||||
|
||||
|
||||
# 等待一点时间,手动选择门店
|
||||
time.sleep(5)
|
||||
|
||||
# 点击基础资料下拉菜单
|
||||
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id="user-nav"]/ul/li[3]/a/span'))).click()
|
||||
# 点击 数据导入 菜单项
|
||||
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id="user-nav"]/ul/li[3]/ul/li[17]/a'))).click()
|
||||
# 点击 套餐卡信息
|
||||
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id="content"]/div/div/ul/li[5]/a'))).click()
|
||||
|
||||
|
||||
# 进入框架 iframe -- weixin-page-iframe ,方法1,可行(原等待时间 2 2 1)
|
||||
time.sleep(0.5)
|
||||
iframe = driver.find_element_by_xpath(r'//*[@id="weixin-page-iframe"]')
|
||||
time.sleep(1)
|
||||
driver.switch_to.frame(iframe)
|
||||
time.sleep(0.5)
|
||||
print('已进入iframe 框架')
|
||||
|
||||
files_path = r'D:\F6_data\套餐卡导入测试数据\批量导入3'
|
||||
|
||||
# 开始批量导入
|
||||
|
||||
for file in os.listdir(files_path):
|
||||
try:
|
||||
# 找到按钮里的 input 标签
|
||||
to_input = driver.find_element_by_xpath(r'//*[@id="app"]/div/div/div/div[2]/form/div[1]/div/div/div/div[1]/input')
|
||||
time.sleep(0.2)
|
||||
upload_file = os.path.join(files_path,file)
|
||||
to_input.send_keys(upload_file)
|
||||
time.sleep(1)
|
||||
# print(f'已经上传excel文件:{file}!')
|
||||
# 点击 立即导入按钮
|
||||
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id="app"]/div/div/div/div[2]/form/div[1]/div/button/span'))).click()
|
||||
# 点击 查看导入记录 按钮
|
||||
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id="app"]/div/div/div/div[2]/form/div[2]/div/div[1]'))).click()
|
||||
# 检查文件名
|
||||
upload_file_name = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r' //*[@id="app"]/div/div/div/div[3]/div/div[2]/div[1]/div[3]/table/tbody/tr[1]/td[1]/div'))).text
|
||||
time.sleep(0.5)
|
||||
while upload_file_name != file:
|
||||
# 关闭再打开 导入记录
|
||||
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id="app"]/div/div/div/div[3]/div/div[1]/button/i'))).click() # 关闭按钮
|
||||
time.sleep(1)
|
||||
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id="app"]/div/div/div/div[2]/form/div[2]/div/div[1]'))).click()
|
||||
time.sleep(1)
|
||||
upload_file_name = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r' //*[@id="app"]/div/div/div/div[3]/div/div[2]/div[1]/div[3]/table/tbody/tr[1]/td[1]/div'))).text
|
||||
|
||||
print('导入文件已经进入导入记录中!')
|
||||
|
||||
# 打印卡导入 状态 信息
|
||||
succeed_cards = driver.find_element_by_xpath(r'//*[@id="app"]/div/div/div/div[3]/div/div[2]/div[1]/div[3]/table/tbody/tr[1]/td[3]/div').text
|
||||
time.sleep(0.5)
|
||||
lost_cards = driver.find_element_by_xpath(r'//*[@id="app"]/div/div/div/div[3]/div/div[2]/div[1]/div[3]/table/tbody/tr[1]/td[4]/div').text
|
||||
time.sleep(0.5)
|
||||
print(f'成功卡数:{succeed_cards},失败卡数:{lost_cards}')
|
||||
while succeed_cards == '' or lost_cards == '':
|
||||
# 不断的关闭打开 导入记录 ,刷新页面
|
||||
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id="app"]/div/div/div/div[3]/div/div[1]/button/i'))).click() # 关闭按钮
|
||||
time.sleep(1)
|
||||
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id="app"]/div/div/div/div[2]/form/div[2]/div/div[1]'))).click() # 导入记录
|
||||
time.sleep(1)
|
||||
succeed_cards = driver.find_element_by_xpath(r'//*[@id="app"]/div/div/div/div[3]/div/div[2]/div[1]/div[3]/table/tbody/tr[1]/td[3]/div').text
|
||||
time.sleep(1)
|
||||
lost_cards = driver.find_element_by_xpath(r'//*[@id="app"]/div/div/div/div[3]/div/div[2]/div[1]/div[3]/table/tbody/tr[1]/td[4]/div').text
|
||||
time.sleep(1)
|
||||
print(f'succeed_cards:{succeed_cards},lost_cards:{lost_cards}',end='-')
|
||||
|
||||
print()
|
||||
print('#######################可以导入下一个文件!#######################')
|
||||
# 关闭 导入记录 窗口
|
||||
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id="app"]/div/div/div/div[3]/div/div[1]/button/i'))).click()
|
||||
except Exception as e :
|
||||
print(f'{file} 导入出错')
|
||||
print(repr(e))
|
||||
continue
|
||||
finally:
|
||||
time.sleep(600) # 如果时间足够的话,保险起见可以多等一会
|
||||
|
||||
print('所有文件上传完成!')
|
||||
time.sleep(1)
|
||||
# driver.close()
|
||||
@@ -0,0 +1,40 @@
|
||||
from numpy import dtype
|
||||
import pandas as pd
|
||||
import asyncio
|
||||
import aiohttp
|
||||
import sqlalchemy
|
||||
import time
|
||||
import requests
|
||||
|
||||
cookies_str = 'memberSESSIONID=ae16b0e4-7de3-4de1-b719-413777250fa2; gr_user_id=408fef1a-77ed-4e74-8f1e-31dde3446f2e; erpLanguage=zh-CN; tmall=false; Hm_lvt_25f5e7a3a5dbb293d7dd35d5f1be8d0a=1716516379,1716602530,1716620891,1717378558; prodOrg=11240984669918002048; unp=15818631886583914510; un=15818631886583914510; _up=-NillNN-qyBEJ--t3vnSknvoOF53zPmLs8wN2306UuRUV_XEppnQjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbqFfQXroIq1AEO9vZRv-ZNHu3M-GTc1pm5E3SppuVTjOMZmVfHOxJvrEj9xx2wrcDUSiQ.; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2215818631886583914510%22%2C%22first_id%22%3A%221750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%221750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0%22%7D; Hm_lpvt_25f5e7a3a5dbb293d7dd35d5f1be8d0a=1717379834'
|
||||
|
||||
cookies_str = cookies_str.encode('utf-8').decode('latin-1')
|
||||
|
||||
cookie_dict = {item.split('=')[0]: item.split('=')[1]
|
||||
for item in cookies_str.split('; ')}
|
||||
|
||||
headers = {
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40',
|
||||
"Content-Type": "application/json;charset=UTF-8",
|
||||
'origin': 'https://yunxiu.f6car.cn'
|
||||
}
|
||||
|
||||
XM=[]
|
||||
response = requests.get(f'https://yunxiu.f6car.com/member/customer/listForPermission?pageSize=2000&pageNo=1',cookies=cookie_dict)
|
||||
res=response.json()
|
||||
le=len(res['data']['data'])
|
||||
for i in range(0,le):
|
||||
XM1={}
|
||||
kehu=res['data']['data'][i]['idCustomer']
|
||||
XM1['客户ID']=kehu
|
||||
|
||||
XM.append(XM1)
|
||||
df=pd.DataFrame(XM)
|
||||
df = df.astype('string')
|
||||
df.drop_duplicates(subset=['客户ID'])
|
||||
num = 1
|
||||
for userID in df['客户ID']:
|
||||
res = requests.delete(f'https://yunxiu.f6car.cn/member/customer/{userID}',cookies=cookie_dict)
|
||||
num = num + 1
|
||||
|
||||
print(num,userID,res.text)
|
||||
@@ -0,0 +1,27 @@
|
||||
from numpy import dtype
|
||||
import pandas as pd
|
||||
import asyncio
|
||||
import aiohttp
|
||||
import sqlalchemy
|
||||
import time
|
||||
import requests
|
||||
|
||||
cookies_str = 'memberSESSIONID=fdcde7d6-4315-458f-99ee-5012d3813972; sensorsdata2015jssdkcross={"distinct_id":"10691192243902595917","first_id":"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0","props":{"$latest_traffic_source_type":"直接流量","$latest_search_keyword":"未取到值_直接打开","$latest_referrer":""},"$device_id":"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0"}; gr_user_id=408fef1a-77ed-4e74-8f1e-31dde3446f2e; prodOrg=11240984669917728541; unp=15661085929949384773; un=15661085929949384773; _up=-NillNN-qyBEJ--t3vnSknvoOF55y_CNuMgM0XI2Xu5eXvXGoJrQjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbrE_oSrYMj1QUK9_ZRv-ZNHu3M-GTc2J6wFX-tp-9cgO8Tk17HORRsrEj9x2f_jLHZND8.; tmall=false; sensorsdata2015jssdkcross={"distinct_id":"15661085929949384773","first_id":"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0","props":{"$latest_traffic_source_type":"直接流量","$latest_search_keyword":"未取到值_直接打开","$latest_referrer":""},"$device_id":"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0"}'
|
||||
|
||||
cookies_str = cookies_str.encode('utf-8').decode('latin-1')
|
||||
|
||||
cookie_dict = {item.split('=')[0]: item.split('=')[1]
|
||||
for item in cookies_str.split('; ')}
|
||||
|
||||
headers = {
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40',
|
||||
"Content-Type": "application/json;charset=UTF-8",
|
||||
'origin': 'https://yunxiu.f6car.cn'
|
||||
}
|
||||
|
||||
df_data = pd.read_excel(r'C:\Users\admin\Desktop\客户车辆信息.xlsx',sheet_name='Sheet3',dtype='string')
|
||||
num = 1
|
||||
for userID in df_data['车辆ID']:
|
||||
res = requests.delete(f'https://yunxiu.f6car.cn/member/car/deleteCar/{userID}/11769977820724347538',cookies=cookie_dict)
|
||||
num = num + 1
|
||||
print(num,userID,res.text)
|
||||
@@ -0,0 +1,82 @@
|
||||
import pandas as pd
|
||||
import time
|
||||
import requests
|
||||
import json
|
||||
import xlrd
|
||||
|
||||
cookies_str = 'stockSESSIONID=4e48c8e9-6aad-41d0-9c40-ec0e67c5419e; sensorsdata2015jssdkcross={"distinct_id":"10691192243902595917","first_id":"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0","props":{"$latest_traffic_source_type":"直接流量","$latest_search_keyword":"未取到值_直接打开","$latest_referrer":""},"$device_id":"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0"}; gr_user_id=408fef1a-77ed-4e74-8f1e-31dde3446f2e; prodOrg=11240984669917337122; unp=15531725281298481155; un=15531725281298481155; _up=-NillNN-qyBEJ--t3vnSknvoOF56zvCKssgH23o9U-9ZXvDAopzQjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbrEPodqY8j1wUI-_dRv-ZNHu3M-GTc25uwEnWtrOVUi-ISlF7CPxZqrEj9k0rY98uxN2Q.; currMenu=下载中心; sensorsdata2015jssdkcross={"distinct_id":"15531725281298481155","first_id":"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0","props":{"$latest_traffic_source_type":"直接流量","$latest_search_keyword":"未取到值_直接打开","$latest_referrer":""},"$device_id":"1750b4690af1f6-089dd3a4874eb8-3d634f03-1327104-1750b4690b09d0"}'
|
||||
|
||||
cookies_str = cookies_str.encode('utf-8').decode('latin-1')
|
||||
|
||||
cookie_dict = {item.split('=')[0]: item.split('=')[1]
|
||||
for item in cookies_str.split('; ')}
|
||||
|
||||
headers = {
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40',
|
||||
"Content-Type": "application/json",
|
||||
'origin': 'https://yunxiu.f6car.cn'
|
||||
}
|
||||
#读取excel文件
|
||||
data = xlrd.open_workbook(r"C:\Users\admin\Desktop\Python脚本\图形界面自动化脚本\F6系统常用脚本\怡康街店.xls")
|
||||
|
||||
table = data.sheet_by_index(0) # 通过索引顺序获取
|
||||
|
||||
h = table.nrows
|
||||
|
||||
l = table.ncols
|
||||
|
||||
print(u"表数据的行数为%s,列数为%s"%(h,l))
|
||||
|
||||
for i in range(1,h):
|
||||
idMember =table.cell(i, 0).value #卡id
|
||||
idMember1 =table.cell(i, 1).value #退款金额
|
||||
idMember2 =table.cell(i, 2).value #退款金额
|
||||
|
||||
#读取cardVersion信息并配置退卡data
|
||||
url = 'https://yunxiu.f6car.cn/marketing/tkdBill/baseInfo?pkId={}'.format(idMember)
|
||||
resget = requests.get(url,cookies=cookie_dict)
|
||||
resget = json.loads(resget.text)
|
||||
cardVersion = resget['data']['cardVersion']
|
||||
data = {
|
||||
"cardId": idMember, # 退卡实体id
|
||||
"cardVersion": cardVersion,
|
||||
"employeeId": "10979894419857291646", # 退卡服务顾问ID 手动更新
|
||||
"idOwnOrg": "11240984669917132579", # 门店ID 手动更新
|
||||
"refundAmount": idMember1, # 退卡金额
|
||||
"remark": "" # 备注
|
||||
}
|
||||
|
||||
#生成退卡单
|
||||
res = requests.post(f'https://yunxiu.f6car.cn/marketing/tkdBill/add',
|
||||
headers=headers,cookies=cookie_dict, json=data)
|
||||
resdata = res.json().get('data')
|
||||
|
||||
#完成收款
|
||||
data = {
|
||||
"idOwnOrg": "11240984669917132579",# 门店ID 手动更新
|
||||
"idOperationOrg": "11240984669917132579",# 退卡门店ID 手动更新
|
||||
"idSourceBill": resdata,# 退卡单ID
|
||||
"sourceBillType": "TKD",#类型
|
||||
"receiptMemo": "",# 备注
|
||||
"version": cardVersion,
|
||||
"favourableList": [],
|
||||
"gatheringFavourable": 0,
|
||||
"paymentTypeGroupId": "",
|
||||
"czkList": [],
|
||||
"paymentList": [
|
||||
{
|
||||
"paymentTypeId": "9876312",# 各门店不同 手动更新
|
||||
"paymentType": "现金",
|
||||
"paymentAmount": idMember2,
|
||||
"gatheringType": 0,
|
||||
"kind": "normal"
|
||||
}
|
||||
],
|
||||
"pkId": 0,
|
||||
"billType": "YSF",
|
||||
"domainCode": "SAAS"
|
||||
}
|
||||
|
||||
res = requests.post(f'https://yunxiu.f6car.cn/financial/advance/payment/singleGathering',
|
||||
headers=headers,cookies=cookie_dict, json=data)
|
||||
print("打印出响应信息:",res.text)
|
||||
@@ -0,0 +1,89 @@
|
||||
# -*- coding:UTF-8 -*-
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.support.ui import Select
|
||||
from selenium.webdriver import ActionChains
|
||||
import time
|
||||
import xlrd
|
||||
import xlwt
|
||||
import re
|
||||
from xlutils.copy import copy
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
import datetime
|
||||
import os
|
||||
from selenium.webdriver.support import expected_conditions as EC
|
||||
from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver.support.wait import WebDriverWait
|
||||
import pandas as pd
|
||||
#获取基础信息
|
||||
name = '15888265981'
|
||||
password = 'Ff123456'
|
||||
option_chrome = webdriver.ChromeOptions()
|
||||
option_chrome.add_argument('--headless')
|
||||
A = 0
|
||||
for v in range(0,1000):
|
||||
try:
|
||||
http='https://m.f6car.cn/'
|
||||
#driver = webdriver.Chrome(chrome_options=option_chrome)
|
||||
driver = webdriver.Chrome(executable_path=r"C:\Users\admin\Desktop\Python脚本\chromedriver.exe")
|
||||
driver.maximize_window()
|
||||
driver.implicitly_wait(2)
|
||||
driver.get(http)
|
||||
|
||||
# 在输入框中输入账号和密码
|
||||
username = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id="pane-username"]/form/div[1]/div/div[1]/input')))
|
||||
enter = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, r'//*[@id="pane-username"]/form/div[3]/div/button')))
|
||||
username.clear()
|
||||
username.send_keys(name)
|
||||
driver.find_element_by_xpath(r'//*[@id="pane-username"]/form/div[2]/div/div[1]/input').send_keys(password)
|
||||
enter.click()
|
||||
time.sleep(10)#预设时间
|
||||
# driver.find_element_by_xpath("//*[text()='东港市金阳汽车修理修配厂']").click() #点击公司
|
||||
time.sleep(10)#预设时间
|
||||
file = xlwt.Workbook()
|
||||
table = file.add_sheet('sheet name', cell_overwrite_ok=True)
|
||||
#打开excel文件
|
||||
data = xlrd.open_workbook(r"C:\Users\admin\Desktop\新建XLS 工作表 (2).xls")
|
||||
print(data)
|
||||
table = data.sheet_by_index(0) # 通过索引顺序获取
|
||||
h = table.nrows
|
||||
l = table.ncols
|
||||
print(u"表数据的行数为%s,列数为%s"%(h,l))
|
||||
|
||||
for i in range(A,h):
|
||||
idMember =table.cell(i, 0).value #按行读取数据
|
||||
# idMembervin =table.cell(i, 1).value #按行读取数据
|
||||
https='https://yunxiu.f6car.cn/kzf6/member/index.do?page=/view/index.html%23/car/edit/'+idMember #进入页面
|
||||
driver.get(https)
|
||||
time.sleep(3)
|
||||
try:
|
||||
driver.find_element_by_xpath("//*[text()=' 下一步']").click()
|
||||
time.sleep(1)
|
||||
driver.find_element_by_xpath("//*[text()=' 我知道了']").click()
|
||||
except:
|
||||
pass
|
||||
#传值转换
|
||||
#driver.switch_to.frame('weixin-page-iframe')
|
||||
driver.find_element_by_xpath('//*[@maxlength="17"]').click() #点击VIN
|
||||
time.sleep(1)
|
||||
try:
|
||||
driver.find_element_by_xpath('//*[@maxlength="4"]').click() #点击车牌
|
||||
time.sleep(1)
|
||||
driver.find_element_by_xpath('//*[@maxlength="17"]').click() #点击VIN
|
||||
except:
|
||||
pass
|
||||
try:
|
||||
driver.find_element_by_xpath(
|
||||
'/html/body/div[3]/div/div[3]/button[1]/span').click() #点击确定
|
||||
time.sleep(1)
|
||||
except:
|
||||
pass
|
||||
driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")
|
||||
time.sleep(1)
|
||||
driver.find_element_by_xpath("//*[text()='保存']").click() #点击保存
|
||||
time.sleep(2)
|
||||
print(i, idMember)
|
||||
A = A + 1
|
||||
except:
|
||||
driver.close()
|
||||
A = A + 1
|
||||
@@ -0,0 +1,731 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"attachments": {},
|
||||
"cell_type": "markdown",
|
||||
"id": "b461eaf2",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## 字符集库\n",
|
||||
"+ zhon 它提供了中文文本处理中常用的常量。"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"id": "b6dc3dc0",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"〇一-鿿㐀-䶿豈-𠀀-𪛟𪜀-𫝀-丽-\n",
|
||||
""#$%&'()*+,-/:;<=>@[\]^_`{|}~⦅⦆「」、 、〃〈〉《》「」『』【】〔〕〖〗〘〙〚〛〜〝〞〟〰〾〿–—‘’‛“”„‟…‧﹏﹑﹔·.!?。。\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"from zhon import hanzi\n",
|
||||
"\n",
|
||||
"# 返回的是中文正则\n",
|
||||
"print(hanzi.characters)\n",
|
||||
"\n",
|
||||
"# 返回所有中文标点符号\n",
|
||||
"print(hanzi.punctuation)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"id": "66e07ee5",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"'你好¥%@中文'"
|
||||
]
|
||||
},
|
||||
"execution_count": 5,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import re\n",
|
||||
"\n",
|
||||
"re.sub(f'[{hanzi.punctuation}]','','你好¥%@!中文')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"attachments": {},
|
||||
"cell_type": "markdown",
|
||||
"id": "53a28e98",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"+ string库 提供了常用 英文字符集"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"id": "8507180e",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\n",
|
||||
"!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!\"#$%&\\'()*+,-./:;<=>?@[\\\\]^_`{|}~ \\t\\n\\r\\x0b\\x0c'"
|
||||
]
|
||||
},
|
||||
"execution_count": 6,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import string\n",
|
||||
"\n",
|
||||
"print(string.ascii_letters) # 所有的字母\n",
|
||||
"print(string.punctuation) # 返回所有英文标点\n",
|
||||
"string.printable # 所有可打印字符包含 数字,英文大小写,英文符号,空格,换行符等"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"id": "ac6ebde7",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"['你', '好', '他', '中', '文']"
|
||||
]
|
||||
},
|
||||
"execution_count": 7,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import re\n",
|
||||
"\n",
|
||||
"re.findall(f'[{hanzi.characters}]','你好xxx hello,他中文')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
"id": "473d1970-1321-4323-9c98-78cac2d88c68",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import re\n",
|
||||
"import pandas as pd\n",
|
||||
"import numpy as np\n",
|
||||
"import emoji\n",
|
||||
"from zhon import hanzi\n",
|
||||
"import string"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 9,
|
||||
"id": "78520850",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"<>:3: SyntaxWarning: invalid escape sequence '\\S'\n",
|
||||
"<>:3: SyntaxWarning: invalid escape sequence '\\S'\n",
|
||||
"C:\\Users\\Administrator.DESKTOP-7IC2USJ\\AppData\\Local\\Temp\\ipykernel_36048\\1735783563.py:3: SyntaxWarning: invalid escape sequence '\\S'\n",
|
||||
" text = re.sub(':\\S+?:', '', text)\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"def filter_emoji(text):\n",
|
||||
" # 先过滤 emoji 表情\n",
|
||||
" text = re.sub(':\\S+?:', '', text)\n",
|
||||
" # 在过滤其他表情,只保留 数字,中英文,中英文符号,空格\n",
|
||||
" return re.sub(r'[^{}^{}^{}]'.format(hanzi.characters,hanzi.punctuation,string.printable),'',text)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 14,
|
||||
"id": "2551fd66",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"',{106} 晋JBT717丰田陈平 #19《67》{56} 海湾280晋A513LR长城哈弗H6'"
|
||||
]
|
||||
},
|
||||
"execution_count": 14,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# 测试\n",
|
||||
"s = \"😃,{106} ★♚♚晋JBT717丰田陈平 #19《67》{56} ★️海湾280晋A513LR长城哈弗H6\"\n",
|
||||
"filter_emoji(s)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"attachments": {},
|
||||
"cell_type": "markdown",
|
||||
"id": "dbf763b4",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# 处理 Excel 文件"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 11,
|
||||
"id": "b8efc024",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"ename": "SyntaxError",
|
||||
"evalue": "invalid syntax (332018563.py, line 1)",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;36m Cell \u001b[1;32mIn[11], line 1\u001b[1;36m\u001b[0m\n\u001b[1;33m curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 12,
|
||||
"id": "282388e6",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Requirement already satisfied: pip in d:\\programtools\\anaconda\\lib\\site-packages (24.3.1)\n",
|
||||
"Note: you may need to restart the kernel to use updated packages.\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"pip install --upgrade pip"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 13,
|
||||
"id": "70e97daf",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Requirement already satisfied: emoji in d:\\programtools\\anaconda\\lib\\site-packages (2.14.0)\n",
|
||||
"Note: you may need to restart the kernel to use updated packages.\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"pip install emoji"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"id": "e0d0887b-dbb0-4776-bf46-1ae8787c455c",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"ename": "ValueError",
|
||||
"evalue": "No engine for filetype: 'xls'",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
|
||||
"\u001b[1;31mOptionError\u001b[0m Traceback (most recent call last)",
|
||||
"\u001b[1;32mc:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\pandas\\io\\excel\\_base.py\u001b[0m in \u001b[0;36m__new__\u001b[1;34m(cls, path, engine, date_format, datetime_format, mode, storage_options, if_sheet_exists, engine_kwargs)\u001b[0m\n\u001b[0;32m 1110\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-> 1111\u001b[1;33m \u001b[0mengine\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mconfig\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_option\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34mf\"io.excel.{ext}.writer\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msilent\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\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 1112\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mengine\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m\"auto\"\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\\_config\\config.py\u001b[0m in \u001b[0;36m__call__\u001b[1;34m(self, *args, **kwds)\u001b[0m\n\u001b[0;32m 260\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m__call__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m->\u001b[0m \u001b[0mT\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 261\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__func__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwds\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 262\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
|
||||
"\u001b[1;32mc:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\pandas\\_config\\config.py\u001b[0m in \u001b[0;36m_get_option\u001b[1;34m(pat, silent)\u001b[0m\n\u001b[0;32m 134\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m_get_option\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpat\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mstr\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msilent\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mbool\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mFalse\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m->\u001b[0m \u001b[0mAny\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 135\u001b[1;33m \u001b[0mkey\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_get_single_key\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpat\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msilent\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 136\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
|
||||
"\u001b[1;32mc:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\pandas\\_config\\config.py\u001b[0m in \u001b[0;36m_get_single_key\u001b[1;34m(pat, silent)\u001b[0m\n\u001b[0;32m 120\u001b[0m \u001b[0m_warn_if_deprecated\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpat\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 121\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mOptionError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34mf\"No such keys(s): {repr(pat)}\"\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 122\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkeys\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
||||
"\u001b[1;31mOptionError\u001b[0m: \"No such keys(s): 'io.excel.xls.writer'\"",
|
||||
"\nThe above exception was the direct cause of the following exception:\n",
|
||||
"\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)",
|
||||
"\u001b[1;32m<ipython-input-5-4582534eeafe>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m 16\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mcolumn\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mdf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 17\u001b[0m \u001b[0mdf\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mcolumn\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mdf\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mcolumn\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mapply\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;32mlambda\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mfilter_emoji\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstr\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32melse\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 18\u001b[1;33m \u001b[0mdf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mto_excel\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34mr\"C:\\Users\\admin\\Desktop\\大唛养车总部_Sheet1_6_去除后.xls\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
|
||||
"\u001b[1;32mc:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\pandas\\core\\generic.py\u001b[0m in \u001b[0;36mto_excel\u001b[1;34m(self, excel_writer, sheet_name, na_rep, float_format, columns, header, index, index_label, startrow, startcol, engine, merge_cells, inf_rep, freeze_panes, storage_options)\u001b[0m\n\u001b[0;32m 2250\u001b[0m \u001b[0minf_rep\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0minf_rep\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2251\u001b[0m )\n\u001b[1;32m-> 2252\u001b[1;33m formatter.write(\n\u001b[0m\u001b[0;32m 2253\u001b[0m \u001b[0mexcel_writer\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2254\u001b[0m \u001b[0msheet_name\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0msheet_name\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\\io\\formats\\excel.py\u001b[0m in \u001b[0;36mwrite\u001b[1;34m(self, writer, sheet_name, startrow, startcol, freeze_panes, engine, storage_options)\u001b[0m\n\u001b[0;32m 932\u001b[0m \u001b[1;31m# error: Cannot instantiate abstract class 'ExcelWriter' with abstract\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 933\u001b[0m \u001b[1;31m# attributes 'engine', 'save', 'supported_extensions' and 'write_cells'\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 934\u001b[1;33m writer = ExcelWriter( # type: ignore[abstract]\n\u001b[0m\u001b[0;32m 935\u001b[0m \u001b[0mwriter\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mengine\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mengine\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstorage_options\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mstorage_options\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 936\u001b[0m )\n",
|
||||
"\u001b[1;32mc:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\pandas\\io\\excel\\_base.py\u001b[0m in \u001b[0;36m__new__\u001b[1;34m(cls, path, engine, date_format, datetime_format, mode, storage_options, if_sheet_exists, engine_kwargs)\u001b[0m\n\u001b[0;32m 1113\u001b[0m \u001b[0mengine\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mget_default_engine\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mext\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmode\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m\"writer\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1114\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mKeyError\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-> 1115\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34mf\"No engine for filetype: '{ext}'\"\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 1116\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1117\u001b[0m \u001b[1;31m# for mypy\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: No engine for filetype: 'xls'"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import re\n",
|
||||
"import pandas as pd\n",
|
||||
"import numpy as np\n",
|
||||
"import emoji\n",
|
||||
"from zhon import hanzi\n",
|
||||
"import string\n",
|
||||
" \n",
|
||||
"def filter_emoji(text):\n",
|
||||
" # 先过滤 emoji 表情\n",
|
||||
" text = re.sub(':\\S+?:', '', text)\n",
|
||||
" # 在过滤其他表情,只保留 数字,中英文,中英文符号,空格\n",
|
||||
" return re.sub(r'[^{}^{}^{}]'.format(hanzi.characters,hanzi.punctuation,string.printable),'',text)\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"df = pd.read_excel(r\"C:\\Users\\admin\\Desktop\\大唛养车总部_Sheet1_6.xls\", sheet_name='Sheet1', dtype='string')\n",
|
||||
"for column in df.columns:\n",
|
||||
" df[column]=df[column].apply(lambda x: filter_emoji(x) if isinstance(x, str) else x)\n",
|
||||
"df.to_excel(r\"C:\\Users\\admin\\Desktop\\大唛养车总部_Sheet1_6_去除后.xls\",index=False)\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"id": "ff220721",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"old = df['客户姓名']"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"id": "802e9a09",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# 替换\n",
|
||||
"\n",
|
||||
"df['客户姓名'] = df['客户姓名'].apply(filter_emoji)\n",
|
||||
"df.to_excel('output_remove_emoji.xlsx',index=False)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"id": "55471334",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"new = df['客户姓名']"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"id": "c13b60a8",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"execution_count": 5,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"(old != new).sum()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"id": "fee4d084",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"Series([], Name: 客户姓名, dtype: object)"
|
||||
]
|
||||
},
|
||||
"execution_count": 6,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"old.loc[old != new]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
"id": "3dfa1b3d-dbd1-4128-95d4-ad54e43bd7ee",
|
||||
"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",
|
||||
" <th>手机号码</th>\n",
|
||||
" <th>标签</th>\n",
|
||||
" <th>VIN码</th>\n",
|
||||
" <th>车身颜色</th>\n",
|
||||
" <th>备注</th>\n",
|
||||
" <th>车辆所有人</th>\n",
|
||||
" <th>发动机号</th>\n",
|
||||
" <th>...</th>\n",
|
||||
" <th>会员号</th>\n",
|
||||
" <th>可用积分</th>\n",
|
||||
" <th>累计获取积分</th>\n",
|
||||
" <th>专属门店</th>\n",
|
||||
" <th>专属顾问</th>\n",
|
||||
" <th>客户推广员工</th>\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>杨义林</td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td>宁E5E155</td>\n",
|
||||
" <td>18395213630</td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td>LSVCG6C43LN102469</td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>1</th>\n",
|
||||
" <td>仁合鹏</td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td>宁DU0512</td>\n",
|
||||
" <td>15209679692</td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>2</th>\n",
|
||||
" <td>苏琴</td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td>宁DP0726</td>\n",
|
||||
" <td>18409548289</td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td>LSVUD60N2MN010961</td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>3</th>\n",
|
||||
" <td>苏彦林</td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td>宁D5E765</td>\n",
|
||||
" <td>13995443053</td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>4</th>\n",
|
||||
" <td>马成</td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td>宁DBL138</td>\n",
|
||||
" <td>14795049132</td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" <td><NA></td>\n",
|
||||
" </tr>\n",
|
||||
" </tbody>\n",
|
||||
"</table>\n",
|
||||
"<p>5 rows × 37 columns</p>\n",
|
||||
"</div>"
|
||||
],
|
||||
"text/plain": [
|
||||
" 客户姓名 性别 车牌号 手机号码 标签 VIN码 车身颜色 备注 车辆所有人 \\\n",
|
||||
"0 杨义林 <NA> 宁E5E155 18395213630 <NA> LSVCG6C43LN102469 <NA> <NA> <NA> \n",
|
||||
"1 仁合鹏 <NA> 宁DU0512 15209679692 <NA> <NA> <NA> <NA> <NA> \n",
|
||||
"2 苏琴 <NA> 宁DP0726 18409548289 <NA> LSVUD60N2MN010961 <NA> <NA> <NA> \n",
|
||||
"3 苏彦林 <NA> 宁D5E765 13995443053 <NA> <NA> <NA> <NA> <NA> \n",
|
||||
"4 马成 <NA> 宁DBL138 14795049132 <NA> <NA> <NA> <NA> <NA> \n",
|
||||
"\n",
|
||||
" 发动机号 ... 会员号 可用积分 累计获取积分 专属门店 专属顾问 客户推广员工 注册日期 发证日期 车辆来源 车辆推广员工 \n",
|
||||
"0 <NA> ... <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> \n",
|
||||
"1 <NA> ... <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> \n",
|
||||
"2 <NA> ... <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> \n",
|
||||
"3 <NA> ... <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> \n",
|
||||
"4 <NA> ... <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> \n",
|
||||
"\n",
|
||||
"[5 rows x 37 columns]"
|
||||
]
|
||||
},
|
||||
"execution_count": 8,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"df.head()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"id": "17e9c41c",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple\n",
|
||||
"Collecting cowsay\n",
|
||||
" Downloading https://pypi.tuna.tsinghua.edu.cn/packages/6b/b8/9f497fd045d74fe21d91cbe8debae0b451229989e35b539d218547d79fc6/cowsay-5.0.tar.gz (25 kB)\n",
|
||||
" Preparing metadata (setup.py): started\n",
|
||||
" Preparing metadata (setup.py): finished with status 'done'\n",
|
||||
"Building wheels for collected packages: cowsay\n",
|
||||
" Building wheel for cowsay (setup.py): started\n",
|
||||
" Building wheel for cowsay (setup.py): finished with status 'done'\n",
|
||||
" Created wheel for cowsay: filename=cowsay-5.0-py2.py3-none-any.whl size=25707 sha256=6f5c2b68adcfbcf789f1904146a473ad977272737279c74167e6726335c6e89a\n",
|
||||
" Stored in directory: c:\\users\\杨国栋\\appdata\\local\\pip\\cache\\wheels\\26\\07\\b6\\ce0395a0094046669a36aa4995af91f543476d725b9b2baccc\n",
|
||||
"Successfully built cowsay\n",
|
||||
"Installing collected packages: cowsay\n",
|
||||
"Successfully installed cowsay-5.0\n",
|
||||
"Note: you may need to restart the kernel to use updated packages.\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"pip install cowsay"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"id": "b84d6cb7",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"ename": "ModuleNotFoundError",
|
||||
"evalue": "No module named 'cowsay'",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
|
||||
"\u001b[1;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)",
|
||||
"\u001b[1;32m<ipython-input-1-cde26d015784>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[1;32mimport\u001b[0m \u001b[0mcowsay\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2\u001b[0m \u001b[0mcowsay\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdaemon\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'哈哈哈'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
||||
"\u001b[1;31mModuleNotFoundError\u001b[0m: No module named 'cowsay'"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import cowsay\n",
|
||||
"cowsay.daemon('哈哈哈111')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"id": "c89a5d5b",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple\n",
|
||||
"Collecting freegames\n",
|
||||
" Downloading https://pypi.tuna.tsinghua.edu.cn/packages/b9/22/3da53ac5d408c88ce53c589eb5a7a0e18cccdd6a8b0be40616635db18ca3/freegames-2.5.3-py3-none-any.whl (112 kB)\n",
|
||||
" -------------------------------------- 112.8/112.8 kB 1.6 MB/s eta 0:00:00\n",
|
||||
"Installing collected packages: freegames\n",
|
||||
"Successfully installed freegames-2.5.3\n",
|
||||
"Note: you may need to restart the kernel to use updated packages.\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"pip install freegames"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"id": "1df1bc35",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"0"
|
||||
]
|
||||
},
|
||||
"execution_count": 4,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import os\n",
|
||||
"# 查看所有游戏名称\n",
|
||||
"os.system('python -m freegames list')\n",
|
||||
"# 运行指定游戏\n",
|
||||
"os.system('python -m freegames.snake')\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"id": "9634389d",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"ename": "ValueError",
|
||||
"evalue": "invalid literal for int() with base 16: 'ð\\xa0\\x93¾'",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
|
||||
"\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)",
|
||||
"\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_10260/1880065888.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[0mencoded_str\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m'\\xF0\\xA0\\x93\\xBE'\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mdecoded_str\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mchr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mencoded_str\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m16\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[0m\u001b[0;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdecoded_str\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: invalid literal for int() with base 16: 'ð\\xa0\\x93¾'"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"encoded_str = '\\xF0\\xA0\\x93\\xBE'\n",
|
||||
"decoded_str = chr(int(encoded_str, 16))\n",
|
||||
"print(decoded_str)"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "base",
|
||||
"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.12.4"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,118 @@
|
||||
# -*- coding:UTF-8 -*-
|
||||
# 功能:F6系统页面会员卡退卡操作
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.support.ui import Select
|
||||
from selenium.webdriver import ActionChains
|
||||
import time
|
||||
import xlrd
|
||||
import xlwt
|
||||
import re
|
||||
from xlutils.copy import copy
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
import datetime
|
||||
from selenium.webdriver import Chrome
|
||||
from selenium.webdriver.chrome.service import Service
|
||||
from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
from selenium.webdriver.support import expected_conditions as EC
|
||||
|
||||
#获取会员卡基础信息
|
||||
name = '15596363210'
|
||||
password = 'Aa123456'
|
||||
option_chrome = webdriver.ChromeOptions()
|
||||
option_chrome.add_argument('--headless')
|
||||
|
||||
http='https://m.f6car.cn/'
|
||||
#进入链接获取json
|
||||
#driver = webdriver.Chrome(chrome_options=option_chrome)
|
||||
#driver = webdriver.Chrome(chrome_options=option_chrome)
|
||||
chrom_dirverpath = "D:\ProgramTools\chromedriver-win64\chromedriver.exe"
|
||||
# chrome_options = Options()
|
||||
# chrome_options.add_argument("--headless")
|
||||
service = Service(executable_path=f'{chrom_dirverpath}')
|
||||
driver = Chrome(service=service)
|
||||
driver.maximize_window()
|
||||
driver.implicitly_wait(2)
|
||||
driver.get(http)
|
||||
driver.find_element(By.XPATH,'//*[@id="pane-username"]/form/div[1]/div/div/input').send_keys(name)
|
||||
driver.find_element(By.XPATH,'//*[@id="pane-username"]/form/div[2]/div/div[1]/input').send_keys(password)
|
||||
driver.find_element(By.XPATH,'//*[@id="pane-username"]/form/div[3]/div/button/span').click()
|
||||
# 多店模式需要下面一行代码
|
||||
# WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.XPATH, '//*[@id="app"]/div[2]/div[1]/div[1]/div[2]/div/div/div[2]/div[2]/div/div[1]/div/div[6]/p[1]'))).click()
|
||||
WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.XPATH, "/html/body/div[3]/div/div[1]/button"))).click()
|
||||
WebDriverWait(driver, 3).until(EC.presence_of_element_located((By.XPATH, '//*[@id="subMain"]/div/div[3]/div[1]/div[1]/div/span[2]'))).click()
|
||||
# driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[1]/div/div/input').send_keys(name)
|
||||
# driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[2]/div/div[1]/input').send_keys(password)
|
||||
# driver.find_element_by_xpath('//*[@id="pane-username"]/form/div[3]/div/button/span').click()
|
||||
time.sleep(15)#预设时间
|
||||
|
||||
# 新建一个excel文件
|
||||
file = xlwt.Workbook() # 注意这里的Workbook首字母是大写,无语吧
|
||||
# 新建sheet
|
||||
table = file.add_sheet('sheet name', cell_overwrite_ok=True)
|
||||
if 1==1:
|
||||
he = 0
|
||||
hen = 0
|
||||
heng = 0
|
||||
hang = 0
|
||||
len = 0
|
||||
#获取所有内容
|
||||
#打开excel文件
|
||||
data = xlrd.open_workbook(r'D:\Idea Project\F6+宜搭+其它(1)\new\文件输出\Excel通用存储位置 - 副本.xls')
|
||||
print(data)
|
||||
table = data.sheet_by_index(0) # 通过索引顺序获取
|
||||
h = table.nrows
|
||||
l = table.ncols
|
||||
print(u"表数据的行数为%s,列数为%s"%(h,l))
|
||||
|
||||
#获取卡项目
|
||||
for i in range(0,h):
|
||||
try:
|
||||
starttime = datetime.datetime.now()
|
||||
idMember =table.cell(i, 0).value #按行读取数据
|
||||
receiveAmount = table.cell(i, 1).value # 按行读取数据
|
||||
https='https://yunxiu.f6car.cn/kzf6/consumeBill/index.do?page=view/index.html%23/memberCard/tkdAdd&cardId='+idMember
|
||||
#http = 'https://yunxiu-trial.f6car.cn/kzf6/payment/toGathering.do?idSourceBill=' + idMember + '&billType=TKD'
|
||||
#进入链接获取json
|
||||
driver.get(https)
|
||||
|
||||
#传值转换
|
||||
#driver.switch_to.frame('weixin-page-iframe')
|
||||
time.sleep(0.5)
|
||||
driver.find_element_by_xpath(
|
||||
'//*[@id="app"]/div[2]/div[2]/div/section[2]/div[2]/div[2]/div[1]/div/div/input').send_keys(receiveAmount)
|
||||
#driver.find_element_by_xpath(
|
||||
#'//*[@id="app"]/div[2]/div[2]/div/section[2]/div[2]/div[2]/div[3]/div/div/input').send_keys(onename)
|
||||
# 通过父类进行定位
|
||||
time.sleep(0.5)
|
||||
|
||||
driver.find_element_by_xpath(
|
||||
'//*[@id="app"]/div[2]/div[2]/div/section[2]/div[2]/div[2]/div[3]/div/div[1]/input').click()
|
||||
time.sleep(0.5)
|
||||
driver.find_element_by_xpath('/html/body/div[3]/div[3]/div[1]/ul/li[9]/span').click()
|
||||
time.sleep(0.5)
|
||||
# 进入结算
|
||||
''
|
||||
driver.find_element_by_xpath('//*[@id="app"]/div[2]/div[2]/div/section[3]/div/button[1]/span').click()
|
||||
time.sleep(1)
|
||||
try:
|
||||
driver.find_element_by_xpath('/html/body/div[3]/div/div[3]/button[1]/span').click()
|
||||
time.sleep(0.5)
|
||||
except:
|
||||
len = 1
|
||||
# 第四次切换
|
||||
#driver.switch_to.frame('weixin-page-iframe')
|
||||
time.sleep(0.5)
|
||||
driver.find_element_by_xpath(
|
||||
'//*[@id="app"]/div/div/div/div/div/div[2]/div[2]/div[2]/div[1]/div[1]/div/div/div/div[2]/div').click()
|
||||
time.sleep(0.5)
|
||||
driver.find_element_by_xpath(
|
||||
'//*[@id="app"]/div/div/div/div/div/div[3]/div/div/button[1]/span').click()
|
||||
time.sleep(0.5)
|
||||
endtime = datetime.datetime.now()
|
||||
implement = (endtime - starttime).seconds
|
||||
print(i,idMember, implement )
|
||||
except:
|
||||
print('失败')
|
||||
continue
|
||||
@@ -0,0 +1,214 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# 车辆信息"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from numpy import dtype\n",
|
||||
"import pandas as pd\n",
|
||||
"import asyncio\n",
|
||||
"import aiohttp\n",
|
||||
"import sqlalchemy\n",
|
||||
"import time\n",
|
||||
"import requests\n",
|
||||
"headers = {\n",
|
||||
" 'Accept': 'application/json, text/plain, */*',\n",
|
||||
" 'Accept-Encoding' : 'gzip, deflate, br',\n",
|
||||
" 'Accept-Language' : 'zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7',\n",
|
||||
" 'Authorization' : 'Jekun 0019005:n8S1k6pX0z:Q/JK0CyyM3AzyR+uI4RjR9JZI9g=',\n",
|
||||
" 'Cache-Control' : 'no-cache',\n",
|
||||
" 'Entity-Date' : 'Thu, 04 Jan 2024 04:02:22 GMT',\n",
|
||||
" 'Entity-Length' : '0',\n",
|
||||
" 'Host' : 'business-api.jekunauto.com',\n",
|
||||
" 'Origin' : 'https://fnstore.jekunauto.com',\n",
|
||||
" 'Postcode' : 'M021001A0144',\n",
|
||||
" 'Pragma' : 'no-cache',\n",
|
||||
" 'Referer' : 'https://fnstore.jekunauto.com/',\n",
|
||||
" 'Sec-Ch-Ua' : '\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"120\", \"Google Chrome\";v=\"120\"',\n",
|
||||
" 'Sec-Ch-Ua-Mobile' : '?0',\n",
|
||||
" 'Sec-Ch-Ua-Platform' : '\"Windows\"',\n",
|
||||
" 'Sec-Fetch-Dest' : 'empty',\n",
|
||||
" 'Sec-Fetch-Mode' : 'cors',\n",
|
||||
" 'Sec-Fetch-Site' : 'same-site',\n",
|
||||
" 'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'\n",
|
||||
"}\n",
|
||||
"# 创建一个空的dataframe\n",
|
||||
"df = pd.DataFrame()\n",
|
||||
"\n",
|
||||
"for i in range(1,20):\n",
|
||||
" api = f'https://business-api.jekunauto.com/v1/car-archive/admin-index?query=%7B%22filter%22:%7B%22and%22:[]%7D,%22perPage%22:100,%22sort%22:%22-createdAt%22,%22page%22:{i}%7D&fields=id,vendorName,vendorCode,carLicense,mobileStr,vin,carModel,carModel.carBrandName,carModel.carSeriesName,carModel.modelName,carModel.jekunModelCode,identifyFlagLabel,unitClient,unitClient.clientName,unitClient.clientName,annualCardBeautyFlagLabel,annualCardMaintainFlagLabel,insuranceFlagLabel,maintainFlagLabel,storeName,updatedAt,createdAt,jekunModelCode,identifyFlag,failureStatusLabel,failureStatus,failureCauseLabel0'\n",
|
||||
" res = requests.get(api,headers=headers)\n",
|
||||
" print(res.text)\n",
|
||||
" # 遍历res.json()['data']中的每个元素\n",
|
||||
" for a in range(0, len(res.json()['data'])):\n",
|
||||
" # 将遍历的元素添加到dataframe中\n",
|
||||
" df = df._append(res.json()['data'][a], ignore_index=True)\n",
|
||||
" \n",
|
||||
"df = df.drop_duplicates(subset='id')\n",
|
||||
"df.to_excel(r\"C:\\Users\\admin\\Desktop\\车辆信息.xlsx\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# 库存信息"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from numpy import dtype\n",
|
||||
"import pandas as pd\n",
|
||||
"import asyncio\n",
|
||||
"import aiohttp\n",
|
||||
"import sqlalchemy\n",
|
||||
"import time\n",
|
||||
"import requests\n",
|
||||
"headers = {\n",
|
||||
" 'Accept': 'application/json',\n",
|
||||
" 'Accept-Encoding': 'gzip, deflate, br',\n",
|
||||
" 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7',\n",
|
||||
" 'Cache-Control': 'no-cache',\n",
|
||||
" 'Content-Length': '430',\n",
|
||||
" 'Content-Type': 'application/json;charset=UTF-8',\n",
|
||||
" 'Ngsw-Bypass': 'true',\n",
|
||||
" 'Origin': 'https://fnstore.jekunauto.com',\n",
|
||||
" 'Pragma': 'no-cache',\n",
|
||||
" 'Referer': 'https://fnstore.jekunauto.com/erp/',\n",
|
||||
" 'Sec-Ch-Ua': '\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"120\", \"Google Chrome\";v=\"120\"',\n",
|
||||
" 'Sec-Ch-Ua-Mobile': '?0',\n",
|
||||
" 'Sec-Ch-Ua-Platform': '\"Windows\"',\n",
|
||||
" 'Sec-Fetch-Dest': 'empty',\n",
|
||||
" 'Sec-Fetch-Mode': 'cors',\n",
|
||||
" 'Sec-Fetch-Site': 'same-origin',\n",
|
||||
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'\n",
|
||||
"}\n",
|
||||
"# 创建一个空的dataframe\n",
|
||||
"df = pd.DataFrame()\n",
|
||||
"\n",
|
||||
"for i in range(0,30):\n",
|
||||
" api = 'https://fnstore.jekunauto.com/erp/router'\n",
|
||||
"\n",
|
||||
" data_json = {\n",
|
||||
" \"body\": \"{\\\"noSum\\\":true,\\\"condition\\\":[{\\\"field\\\":\\\"USABLE_QTY_T\\\",\\\"operator\\\":\\\"EQ\\\",\\\"value\\\":\\\"0\\\"},{\\\"field\\\":\\\"CONDI_STOP_LOCATION\\\",\\\"operator\\\":\\\"EQ\\\",\\\"value\\\":\\\"true\\\"}],\\\"size\\\":50,\\\"page\\\":\" + str(i) + \",\\\"queryid\\\":\\\"stock.query\\\",\\\"customAction\\\":false,\\\"customQuery\\\":false}\",\n",
|
||||
" \"method\": \"pub.query\",\n",
|
||||
" \"appKey\": \"00001\",\n",
|
||||
" \"version\": \"1.0\",\n",
|
||||
" \"sessionId\": \"3fc5a90b8ab46915c2d0914fe2a0cec3\",\n",
|
||||
" \"sign\": \"3ADF7E1243BAAA1F731247CFDEADC71A70548D6C\"\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(api,headers=headers,json=data_json)\n",
|
||||
" print(res.text)\n",
|
||||
" # 遍历res.json()['data']中的每个元素\n",
|
||||
" for a in range(0, len(res.json()['body']['content'])):\n",
|
||||
" # 将遍历的元素添加到dataframe中\n",
|
||||
" df = df._append(res.json()['body']['content'][a], ignore_index=True)\n",
|
||||
" \n",
|
||||
"df = df.drop_duplicates(subset='ID')\n",
|
||||
"df.to_excel(r\"C:\\Users\\admin\\Desktop\\库存信息.xlsx\")\n",
|
||||
" "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# 历史维修记录"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from numpy import dtype\n",
|
||||
"import pandas as pd\n",
|
||||
"import asyncio\n",
|
||||
"import aiohttp\n",
|
||||
"import sqlalchemy\n",
|
||||
"import time\n",
|
||||
"import requests\n",
|
||||
"headers = {\n",
|
||||
" 'Accept': 'application/json',\n",
|
||||
" 'Accept-Encoding': 'gzip, deflate, br',\n",
|
||||
" 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7',\n",
|
||||
" 'Cache-Control': 'no-cache',\n",
|
||||
" 'Content-Length': '430',\n",
|
||||
" 'Content-Type': 'application/json;charset=UTF-8',\n",
|
||||
" 'Ngsw-Bypass': 'true',\n",
|
||||
" 'Origin': 'https://fnstore.jekunauto.com',\n",
|
||||
" 'Pragma': 'no-cache',\n",
|
||||
" 'Referer': 'https://fnstore.jekunauto.com/erp/',\n",
|
||||
" 'Sec-Ch-Ua': '\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"120\", \"Google Chrome\";v=\"120\"',\n",
|
||||
" 'Sec-Ch-Ua-Mobile': '?0',\n",
|
||||
" 'Sec-Ch-Ua-Platform': '\"Windows\"',\n",
|
||||
" 'Sec-Fetch-Dest': 'empty',\n",
|
||||
" 'Sec-Fetch-Mode': 'cors',\n",
|
||||
" 'Sec-Fetch-Site': 'same-origin',\n",
|
||||
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"# 创建一个空的dataframe\n",
|
||||
"df = pd.DataFrame()\n",
|
||||
"\n",
|
||||
"for i in range(0,30):\n",
|
||||
" api = 'https://fnstore.jekunauto.com/erp/router'\n",
|
||||
"\n",
|
||||
" data_json = {\n",
|
||||
" \"body\": \"{\\\"noSum\\\":true,\\\"condition\\\":[{\\\"field\\\":\\\"CREATE_DATE\\\",\\\"operator\\\":\\\"GTE\\\",\\\"value\\\":\\\"2023-12-29 00:00:00\\\",\\\"type\\\":\\\"date\\\"},{\\\"field\\\":\\\"CREATE_DATE\\\",\\\"operator\\\":\\\"LTE\\\",\\\"value\\\":\\\"2024-01-04 23:59:59\\\",\\\"type\\\":\\\"date\\\"}],\\\"size\\\":50,\\\"page\\\":\" + str(i) + \",\\\"queryid\\\":\\\"fnWorkOrder.query\\\",\\\"customAction\\\":false,\\\"customQuery\\\":false}\",\n",
|
||||
" \"method\": \"pub.query\",\n",
|
||||
" \"appKey\": \"00001\",\n",
|
||||
" \"version\": \"1.0\",\n",
|
||||
" \"sessionId\": \"60d3f8c7ffe5ca815bcd57fdb87c13b6\",\n",
|
||||
" \"sign\": \"DB960DAFACF9F5CDAB1BB26BE26B989AD4D2BB92\"\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(api,headers=headers,json=data_json)\n",
|
||||
" print(res.text)\n",
|
||||
" # 遍历res.json()['data']中的每个元素\n",
|
||||
" for a in range(0, len(res.json()['body']['content'])):\n",
|
||||
" # 将遍历的元素添加到dataframe中\n",
|
||||
" df = df._append(res.json()['body']['content'][a], ignore_index=True)\n",
|
||||
" \n",
|
||||
"df.to_excel(r\"C:\\Users\\admin\\Desktop\\历史维修记录.xlsx\")\n",
|
||||
" "
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "F6processing",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.9.4"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,750 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# 获取项目信息:pkId、infoId、name"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
"end_time": "2025-07-16T01:41:05.810989Z",
|
||||
"start_time": "2025-07-16T01:41:05.508353Z"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"# 获取项目信息:pkId、infoId、name\n",
|
||||
"import pandas as pd\n",
|
||||
"import time\n",
|
||||
"import requests\n",
|
||||
"import json\n",
|
||||
"\n",
|
||||
"cookies_str = 'f6-ids-goodsSESSIONID=9f24d30a-336b-4e88-adb3-4b183de53f2d; erpLanguage=zh-CN; prodOrg=11240984669917217520; unp=15865484595890778191; _up=-NillNN-qyBEJ--t3vnSknvoOF53y_SJuMkA2n43U-daUfnArpjQjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbqEfESq4Im0wYL-_BRv-ZNHu3M-GTc1p60EX-sq-RQgeIal1HLPxpurEj9-k7898i3PR0.; tmall=false; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2215865484595890778191%22%2C%22first_id%22%3A%221928984bbc1271-065c3758008fd68-4c657b58-1327104-1928984bbc213fe%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%221928984bbc1271-065c3758008fd68-4c657b58-1327104-1928984bbc213fe%22%7D'\n",
|
||||
"\n",
|
||||
"cookies_str = cookies_str.encode('utf-8').decode('latin-1')\n",
|
||||
"\n",
|
||||
"cookie_dict = {item.split('=')[0]: item.split('=')[1]\n",
|
||||
" for item in cookies_str.split('; ')}\n",
|
||||
"headers = {\n",
|
||||
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40',\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
"}\n",
|
||||
"try:\n",
|
||||
" url = 'https://ids-goods.f6car.cn/f6-ids-goods/service/getServiceList'\n",
|
||||
" data = {\n",
|
||||
" \"param\": \"\",\n",
|
||||
" \"name\": \"\",\n",
|
||||
" \"customCode\": \"\",\n",
|
||||
" \"currentPage\": 1,\n",
|
||||
" \"pageSize\": 20,\n",
|
||||
" \"isDel\": 0,\n",
|
||||
" \"idOwnOrg\": \"11240984669917217520\"\n",
|
||||
" }\n",
|
||||
" all_data = []\n",
|
||||
" res = requests.post(url,cookies=cookie_dict,headers=headers,json=data)\n",
|
||||
" res = res.json()\n",
|
||||
" for i in range(len(res['data']['records'])):\n",
|
||||
" print(res['data']['records'][i]['name'],\"@\",res['data']['records'][i]['infoId'],\"@\",res['data']['records'][i]['pkId'])\n",
|
||||
" # print(res['data']['records'][i]['name'])\n",
|
||||
" all_data.append({\"name\":res['data']['records'][i]['name'],\"infoId\":res['data']['records'][i]['infoId'],\"pkId\":res['data']['records'][i]['pkId']})\n",
|
||||
" df = pd.DataFrame(all_data)\n",
|
||||
" df.to_excel(r\"C:\\Users\\Administrator.DESKTOP-7IC2USJ\\Desktop\\卡id表.xlsx\",index=False)\n",
|
||||
"except:\n",
|
||||
" pass"
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"修小灯线路 @ 14582097883002123023 @ 1307770869\n",
|
||||
"更换分动箱油 @ 14582097883002122841 @ 1307770687\n",
|
||||
"更换前挡风玻璃 @ 14582097883002122740 @ 1307770586\n",
|
||||
"更换下摆臂球头 @ 14582097883002122870 @ 1307770716\n",
|
||||
"拆装普通座垫座椅套(水洗) @ 14582097883002123033 @ 1307770879\n",
|
||||
"更换倒车影像摄像头 @ 14582097883002122989 @ 1307770835\n",
|
||||
"清洗车厢 @ 14582097883002122991 @ 1307770837\n",
|
||||
"后门(拆装) @ 14582097883002123011 @ 1307770857\n",
|
||||
"全车去污打蜡 @ 14582097883002123013 @ 1307770859\n",
|
||||
"换右倒车镜支架 @ 14582097883002123017 @ 1307770863\n",
|
||||
"换左右大灯灯泡 @ 14582097883002123024 @ 1307770870\n",
|
||||
"拆装传动轴,修漏油 @ 14582097883002123027 @ 1307770873\n",
|
||||
"右后门整形 拆装门把手 @ 14582097883002123036 @ 1307770882\n",
|
||||
"全车燃油管路清洗 @ 14582097883002122967 @ 1307770813\n",
|
||||
"钢圈修复喷漆 @ 14582097883002122968 @ 1307770814\n",
|
||||
"右前叶子板钣金 油漆 @ 14582097883002122973 @ 1307770819\n",
|
||||
"更换钢圈4只 @ 14582097883002122974 @ 1307770820\n",
|
||||
"后骨架(修复) @ 14582097883002122979 @ 1307770825\n",
|
||||
"去厂里开车,换半轴螺丝 @ 14582097883002122985 @ 1307770831\n",
|
||||
"更换前刹车感应线 @ 14582097883002122987 @ 1307770833\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"execution_count": 7
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# 判断项目是否可以停用"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
"end_time": "2025-07-16T01:33:19.557223Z",
|
||||
"start_time": "2025-07-16T01:33:19.513454Z"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"# 判断项目是否可以停用\n",
|
||||
"import pandas as pd\n",
|
||||
"import time\n",
|
||||
"import requests\n",
|
||||
"import json\n",
|
||||
"\n",
|
||||
"cookies_str = 'f6-ids-goodsSESSIONID=9f24d30a-336b-4e88-adb3-4b183de53f2d; erpLanguage=zh-CN; prodOrg=11240984669917217520; unp=15865484595890778191; _up=-NillNN-qyBEJ--t3vnSknvoOF53y_SJuMkA2n43U-daUfnArpjQjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbqEfESq4Im0wYL-_BRv-ZNHu3M-GTc1p60EX-sq-RQgeIal1HLPxpurEj9-k7898i3PR0.; tmall=false; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2215865484595890778191%22%2C%22first_id%22%3A%221928984bbc1271-065c3758008fd68-4c657b58-1327104-1928984bbc213fe%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%221928984bbc1271-065c3758008fd68-4c657b58-1327104-1928984bbc213fe%22%7D'\n",
|
||||
"\n",
|
||||
"cookies_str = cookies_str.encode('utf-8').decode('latin-1')\n",
|
||||
"\n",
|
||||
"cookie_dict = {item.split('=')[0]: item.split('=')[1]\n",
|
||||
" for item in cookies_str.split('; ')}\n",
|
||||
"headers = {\n",
|
||||
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40',\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
"}\n",
|
||||
"try:\n",
|
||||
" df = pd.read_excel(r'C:\\Users\\admin\\Desktop\\项目信息.xls',sheet_name='Sheet1',dtype='string')\n",
|
||||
" url = 'https://ids-goods.f6car.cn/f6-ids-goods/service/validateDisableBatch'\n",
|
||||
" for da in df.values:\n",
|
||||
" data = {\n",
|
||||
" \"infoId\": da[1],\n",
|
||||
" \"orgIdList\": [\n",
|
||||
" \"11240984669917217520\",\n",
|
||||
" \"11240984669917400547\"\n",
|
||||
" ],\n",
|
||||
" \"idOwnOrg\": \"11240984669917217520\"\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(url,cookies=cookie_dict,headers=headers,json=data)\n",
|
||||
" res = res.json()\n",
|
||||
" print(res['data']['message'],\"@\",da[1],\"@\",da[0])\n",
|
||||
"except:\n",
|
||||
" pass"
|
||||
],
|
||||
"outputs": [],
|
||||
"execution_count": 3
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"项目被占用(),无法停用。 @ 10545724654279931712 @ 右后轮眉更换\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882948268689 @ 洗车19.9\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882906592123 @ 更换左后上弯臂\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882956021695 @ 右前轮毂喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 10545055918001050943 @ 更换右前减震\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425564168145 @ 更换前轮刹车片\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425557031323 @ 前杠左侧喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654275399828 @ 更换传动轴轴承\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882985597617 @ 更换右后座位头枕\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882982161528 @ 更换前大梁头\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882981542129 @ 更换左前钢圈\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882979756450 @ 前桥左右和二桥右边轮子保养\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882979757927 @ 更换前轮左右轮芯工时\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882976982509 @ 右后尾灯底座修复\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882975656435 @ 左后钢圈喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882975369529 @ 换发动机胶垫\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882974004876 @ 更换行驶记录仪\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882973941047 @ 铆刹车片工时\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882973361505 @ 修复车门工时\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882972520656 @ 更换柴滤工时\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882972382531 @ 外请临时工\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882971272962 @ 离合器总泵\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882971249425 @ 更换节温器总成\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882971246520 @ 政策外出路费\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882971247383 @ 更换钢圈总成\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882971193450 @ 更换继动阀工时\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882969231004 @ 左后门亮条喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882969230951 @ 左前门亮条喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882969136754 @ 更换右前门升降器\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882968621426 @ 左前钢盆修复\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882968472255 @ 更换差速器分总成\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882968472851 @ 更换横拉杆总成\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882968468778 @ 更换继电器总成\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882968463673 @ 更换点火开关壳体\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882968459140 @ 更换转向闪光器\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882968460029 @ 更换积水杯部件\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882968384576 @ 修复差速器锁工时\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882966191574 @ 做后防撞梁\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882965544115 @ 更换脚制动开关\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882965512273 @ 修复电动加热泵工时\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882965505399 @ 更换转向油罐工时\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882965255628 @ 更换左前轮毂\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882963564165 @ 左前门饰板拆装\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882963518124 @ 拔左右后轮及铆刹车片\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882963520133 @ 后轮保养及铆左右刹车片\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882963459588 @ 吊货箱更换横梁 修复货箱边门及尾门\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882963305841 @ 轮毂修复\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654281037397 @ 模块数据匹配(外修陈勇))\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654281153604 @ 更换水箱(含拆装龙门架)\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654290317154 @ 更换倒车灯泡\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654296806216 @ 右后墙板修复\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654300811872 @ 二级维护\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455157840560 @ 四轮定位(十月活动)\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563727748428 @ 更换右前饰条\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563727752088 @ 更换方向内拉杆\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563727930419 @ 拆装阳角\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882805684427 @ 右后尾灯折装\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882946038161 @ 更换点火锁\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882950757235 @ 拖车费,吊车费\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882952862328 @ 外出费\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882952871921 @ 更换中间下支架\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425566832670 @ 前杠左角补漆\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654285346340 @ 左前杠点漆\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563663149539 @ 清理蒸发箱树叶\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563729948343 @ 更换左前玻璃外压条\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425560665495 @ 更换暖风水管\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654290833880 @ 配钥匙\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882903317285 @ 洗车(240会员卡)\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882912817587 @ 享洗车会员价19.9/每次\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425557736542 @ 更换变速箱脚胶\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654281665851 @ 更换左右后尾灯灯泡\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654289174771 @ 右前叶子板调校\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455199439157 @ 更换发动机右下机脚㬵\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455215192927 @ 更换左后缓冲胶\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563730705973 @ 拆装冷疑器(定损)\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563847477189 @ 更换前左右上支臂\n",
|
||||
"项目被占用(),无法停用。 @ 10691192243930556310 @ 更换叶子板亮条60\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882805897089 @ 四轮调换\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882946632271 @ 左前缸盆修复\n",
|
||||
"项目被占用(),无法停用。 @ 10907434497424391401 @ 检查ABS泵\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425557443579 @ 更换前油封\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654274589427 @ 右前喷水盖喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654278623763 @ 左后门喷漆(大地钣喷)\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654280586397 @ 更换波箱脚胶\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654282888439 @ 更换右前轮包\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654282888951 @ 右A柱更换\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654285115446 @ 水箱盖待检\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654292005396 @ 更换发动机线束\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563659258275 @ 保养(十月活动)\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563737692103 @ 左门坎装饰条喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563797174405 @ 后围修复\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563960950345 @ 车内消毒杀菌\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563839261387 @ 更换暖水管\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425564195980 @ 更换左右后减震\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654274296923 @ 更换两前减震\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882929661289 @ 更换仪表台面板\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654282553613 @ 代办审车(含租胎)\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654282883895 @ 右B柱喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882893098531 @ 更换右前转向内外拉杆\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425556138510 @ 拆装排气管\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654288792038 @ 更换变速箱电脑版\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654289173305 @ 修复右龙门架\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654289176812 @ 右龙门架补漆\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654299965084 @ 铆钉\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455187761276 @ 更换左右内衬\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455194884265 @ 更换前半轴防尘套\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455200788745 @ 更换大灯喷水电机\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455216858006 @ 钢圈外修\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563727750760 @ 更换方向外拉杆\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882952663941 @ 更换缓速器油\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654280341945 @ 更换钥匙\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563667541586 @ 玻璃水(会员卡)\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563915445219 @ 更换涡轮增压\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882883443000 @ 更换转向节\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882954197588 @ 更换方向机防尘套\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654278307702 @ 更换发动机脚胶\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882806418579 @ 更换左后侧围\n",
|
||||
"项目被占用(),无法停用。 @ 10545360218999990120 @ 更换平衡杆胶套\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654282883743 @ 右门框喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654278616972 @ 左门框修复\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882887653489 @ 更换前杠下骨架\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882954423221 @ 做底盘首保工时费\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882954427268 @ 夜间补助\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882958827366 @ 更换牙箱\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654281885857 @ 右后门磨砂板喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455176614123 @ 更换左右前减震角胶\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455199439867 @ 更换发动机左下机脚㬵\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455200904062 @ 更换变速箱壳体\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563728391493 @ 更换蒸发箱温度传感器\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563840519154 @ 更换前杠中段\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882917655347 @ 更换防冻液水管\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882917956976 @ 右前钢盆拆装\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882948252576 @ 洗车(开业活动)\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882950538956 @ 右前雾灯框喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882950743187 @ 更换 轴乘\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882952865425 @ 更换中后桥支架\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882952865820 @ 更换后挡泥板\n",
|
||||
"项目被占用(),无法停用。 @ 10545478359239208540 @ 右前大梁修复\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425564206671 @ 更换方向助力油管\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654279296729 @ 更换电磁阀工时\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654280341631 @ 年审代办\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654282891356 @ 右后纵梁修复\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563659794320 @ 更换前平面轴承和顶胶\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563904136506 @ 更换左前遮阳板\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563951183841 @ 更换风圈\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563960947625 @ 臭氧消毒\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882802599425 @ 更换右前座椅\n",
|
||||
"项目被占用(),无法停用。 @ 10545491164348667828 @ 更换右前门内拉手\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563730058429 @ 加冷媒\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425560717426 @ 更换右后门玻璃开关\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425555031987 @ 拆装右前悬挂\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882919614037 @ 更换右后门拉手\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654283293657 @ 拆装水箱框架\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654289177082 @ 右A柱补漆\n",
|
||||
"项目被占用(),无法停用。 @ 10545478359238987446 @ 更换左右后减缓冲胶\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654286519455 @ 右后门拆装外压条\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654289284925 @ 脚步空间传感器外修\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563725016449 @ 更换前后护杠(自带)\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563727467465 @ 检查天窗关不起\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563727853642 @ 更换前支背座子\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882933769633 @ 左后围挡板喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654283299580 @ 拆装中冷器\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563661874782 @ 更换油泵控制器\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563667540091 @ 毛巾(会员卡)\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563740488093 @ 更换左右机脚\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563798707549 @ 发动机机舱清洗\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882799094750 @ 左后门下部补漆\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882902030084 @ 更换分动向传动轴十字节\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455221636590 @ 车内改装\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563792975115 @ 更换外拉杆\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654285162045 @ 检查水箱\n",
|
||||
"项目被占用(),无法停用。 @ 10545491164348465318 @ 更换钥匙电池\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425557771724 @ 外出急救\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654273942571 @ 处理机油格漏油\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654276830079 @ 更换前减(材料自备)\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654276831259 @ 拆焊元宝梁螺丝\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654281166219 @ 更换后刹盘\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654282590030 @ 更换右进光灯\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654285912667 @ 发动机更换\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654289159164 @ 加装导航\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455172359390 @ 修复左右大粱\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563730921360 @ 拆装主副气囊(定损)\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563736646016 @ 更换消音器吊耳胶\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563736724126 @ 检查后轮漏油\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563737592369 @ 更换空调格盖板\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563812333798 @ 拆装顶灯\n",
|
||||
"项目被占用(),无法停用。 @ 10691192243905179178 @ 以上喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 10691192243944396489 @ 更换牙包总成\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882933769494 @ 后围挡板喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882934287573 @ 更换左前机脚\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882950743659 @ 外出服务费\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882951040035 @ 四轮定位外修工时\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654282888717 @ 右前墙板修复\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654282967633 @ 拆装后杠更换倒车雷达\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654284712221 @ 机修试车检查底盘异响\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654285115170 @ 压缩机更换\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563691090109 @ 修复行李箱\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882887654242 @ 左后D柱喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882954405588 @ 更换中支座工时费\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425554879462 @ 左右门槛修复\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654282027828 @ 更换空调出风口\n",
|
||||
"项目被占用(),无法停用。 @ 10907434497320748830 @ 右前轮毂修复\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654280390111 @ 更换刹车感应线\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563960948216 @ 空调管道清洗\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654280725032 @ 更换左后刹车灯泡\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425560678698 @ 左前轮眉喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882928596865 @ 更换机油(全店通用套餐)\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882963014096 @ 维修电机\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882961738680 @ 租新胎工时\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882961174421 @ 修随车吊工时\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882958865412 @ 发动机缸体积碳清洗\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882957066999 @ 更换右后胎压传感器\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882956663948 @ 喷油嘴清洗\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882956663900 @ 更换前刹车片报警线\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882956663876 @ 更换后刹车片报警线\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882956663843 @ 更换发动机油底壳放油螺丝\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882956658468 @ 更换空调滤清器(外置)\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882956565450 @ 修复顺风顶\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882955145490 @ 冷藏箱前挡板修复\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882948733988 @ 拆装后尾盖\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882947662220 @ 全车玻璃贴膜\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882946125763 @ 牌照板喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882940817371 @ 左侧围更换\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882940771918 @ 更换左右前下叉臂\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882932125604 @ 挖补右后叶子板\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882929684316 @ 拆装左前叶子板内衬\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882929684224 @ 散热器框架调校\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882917085203 @ 【免费 】搭电救援\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882925165695 @ 再生\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882919516710 @ 后机盖下段喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882919029777 @ 99元保养卡兑换券\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882917091866 @ 【20】更换雨刷代金券\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882917088872 @ 【免费】空调管路杀菌劵\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882915657086 @ 【免费】排水孔检查\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882912817802 @ 送一次打蜡\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882912817779 @ 送雾化杀菌一次\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882912817754 @ 享全车32项免费检查\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882912817711 @ 享全年无限次数免费加玻璃水\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882912817696 @ 享全年无限次数免费补胎/加气\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882912817657 @ 享维修工时85折\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882912817634 @ 享美容装饰85折\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882912565753 @ 赠送价值150元免费全年无次数补胎/加气(胶皮补胎)\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882912565728 @ 赠送价值150元全年免费加玻璃水\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882912565376 @ 赠送价值150元打蜡一次\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882912562363 @ 赠送价值150元雾化杀菌一次\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882901191097 @ 免费车辆安全检测\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882908822073 @ 一个面喷漆---合资漆(不含钣金)\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882908821511 @ 大桶油嘉实多金嘉护小保养套餐\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882908641830 @ 右后钢盆修复\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882907424612 @ 更换左前门装饰板\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882905708664 @ 贴尾门标\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882904234358 @ 更换玻璃卡槽\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882902361593 @ 右后视镜喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882902361529 @ 右后后视镜喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882901194948 @ 保养、维修、钣金、喷漆、洗车、美容、装饰8折优惠\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882901190799 @ 全年免费补胎/加气\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882898746198 @ 更换水箱下支架\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882898122022 @ 左右叶子板调校\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882898121931 @ 更换上盖板左右\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882895128313 @ 洗车(赠送)\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882892577721 @ 更换刹车液\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882889317226 @ 右后门外拉手喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882886137282 @ 更换前杠右侧亮条\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882886137057 @ 更换空气谐振器\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882885468616 @ 更换前杠上饰板\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882877231943 @ 更换排污阀\n",
|
||||
"项目被占用(),无法停用。 @ 10545491164348556817 @ 更换油浮子\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882869868463 @ 拆装后减震气袋\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882868257241 @ 更换真空管\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882846595219 @ 更换左右前驱离合器\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882821642894 @ 更换助力油油压开关\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882812585423 @ 右后门装饰板喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882801200375 @ 喷漆一面(限合资)\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882801199875 @ 796更换机油\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882801197849 @ 398更换机油\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882801197820 @ 198更换机油\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882799628212 @ 左前杠灯罩喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882799211818 @ 全车改色\n",
|
||||
"项目被占用(),无法停用。 @ 14582097882798575134 @ 更换暖水泵\n",
|
||||
"项目被占用(),无法停用。 @ 10907434497474864905 @ 左侧A柱整形修复\n",
|
||||
"项目被占用(),无法停用。 @ 10907434497462102788 @ 更换方向盘盖\n",
|
||||
"项目被占用(),无法停用。 @ 10907434497460263415 @ 更换增压机油管\n",
|
||||
"项目被占用(),无法停用。 @ 10907434497376202118 @ 拆装发动机电脑板\n",
|
||||
"项目被占用(),无法停用。 @ 10907434497374354497 @ 车内杀菌(总厂活动)\n",
|
||||
"项目被占用(),无法停用。 @ 10907434497374040637 @ 车内杀菌(工会)\n",
|
||||
"项目被占用(),无法停用。 @ 10907434497353031582 @ 左后门装饰板修复\n",
|
||||
"项目被占用(),无法停用。 @ 10907434497353030933 @ 左前门装饰板修复\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425556840079 @ 加液体黄金\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425558256343 @ 更换左前杠灯框\n",
|
||||
"项目被占用(),无法停用。 @ 10907434497345200213 @ 右门槛内侧修复\n",
|
||||
"项目被占用(),无法停用。 @ 10907434497345197038 @ 右门槛内侧喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 10907434497340920757 @ 更换右后减震气管\n",
|
||||
"项目被占用(),无法停用。 @ 10907434497334753373 @ 刷系统隐藏功能\n",
|
||||
"项目被占用(),无法停用。 @ 10691192243947120750 @ 左后门装饰板喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 10691192243924209738 @ 右前门装饰板喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563998297957 @ 香水\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563983014160 @ 喷底盘装甲\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563868238641 @ 安装电瓶正极板(材料自带)\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425559992766 @ 更换外球笼\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563862953144 @ 处理ABS传感器线路\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563862948437 @ 电脑编程\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563851109039 @ 一次车内甲醛及空气质量检测(舒研团队联盟会员)\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563851106319 @ 更换机油(舒研团队联盟会员)\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563837777722 @ 拆装修复下护板\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563829114111 @ 检漏加氟及处理低尾管漏气\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563817896566 @ 更换离合器踏板\n",
|
||||
"项目被占用(),无法停用。 @ 10545435426612136631 @ 更换真空泵\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563805218131 @ 拆装固定右半轴\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425555673563 @ 更换差速器油\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425561597477 @ 更换碳罐电磁阀\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563799897478 @ 处理风扇\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563799743387 @ 固定排气管\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563792335338 @ 调刹车 拆马鞍\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563789420383 @ 更换右后小吊杆\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563789267678 @ 更换安全气囊电脑板\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563777735856 @ 拆装蒸发箱\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563747880733 @ 毛巾(电销部活动)\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563736730985 @ 检查右后门玻璃\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563681899307 @ 在我公司办理保险,可抵商业险198元,其他优惠不变\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563681897917 @ 一年内保养,每次送2升机油,价值250,不限保养次数\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563668271352 @ 推荐朋友办卡可送价值130元1升机油可累计(会员卡)\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563667766875 @ 推荐朋友办卡可送价值115元1升机油可累计(会员卡)\n",
|
||||
"项目被占用(),无法停用。 @ 10546443563667765343 @ 现金维修享95折优惠(会员卡)\n",
|
||||
"项目被占用(),无法停用。 @ 10545055918001019185 @ 更换右大灯\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455160594476 @ 检查ABS故障灯\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455228337161 @ 更换左后玻璃\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455228131945 @ 检查刹车片报警\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455228115649 @ 右后叶子板更换\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455187193319 @ 固定右后门装饰板\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455187128733 @ 拆装右后门玻璃开关\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455187104102 @ 后杠装饰板补漆\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455184750627 @ 添加助力油\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455183761753 @ 更换排气管总成\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455181854737 @ 拆装右前叶子板内衬\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455174942187 @ 右前A柱装饰板固定\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455174941680 @ 检查充电系统故障\n",
|
||||
"项目被占用(),无法停用。 @ 10545055918000863129 @ 前杠补漆\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455171138973 @ 前杠装饰板修复\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455171138744 @ 前杠装饰板补漆\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455169874048 @ 调雨刮喷水嘴\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455169873530 @ 检查右前轮异响\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455169871612 @ 空调右边不出风\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455166234412 @ 修复机盖\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455164697175 @ 更换高位传感器\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455162474544 @ 三十六项检查\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455162474103 @ 空调消毒\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455160688840 @ 更换左后轮芯\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455159278289 @ 更换拉杆球头外(左前)\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455159277877 @ 更换拉杆内球头(左前)\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455158243383 @ 拆装右后门玻璃\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455158086984 @ 贴右后门膜\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455157296884 @ 固定下护板\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455157126384 @ 检查尾门打不开\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455156993415 @ 检查踩刹车发抖\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455155225350 @ 测试001\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455154436051 @ 检查后牌照灯\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455154326008 @ 前下护板固定\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455153122961 @ 拆装变速箱阀体\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455152890233 @ 免费三十六项检查\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455152173985 @ 修理碟机\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455151708060 @ 检修左前头枕故障\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455149187698 @ 拆装波箱调整差速器\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455149183431 @ 更换前下悬挂弯臂和球头\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455149182808 @ 更换下悬挂直臂\n",
|
||||
"项目被占用(),无法停用。 @ 10546172455148628620 @ 拆装后杠亮条\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787360738479 @ 检查左后刹车分泵\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787360738254 @ 检查后减震缓冲胶\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787360738084 @ 检查下支臂\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787360737784 @ 检查后刹车片\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787360367619 @ 检查防冻液缺少\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787358654506 @ 检查发电机皮带\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787358558833 @ 更换前下支臂胶套\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787358164242 @ 检查机油量够不够\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787358050940 @ 检查油表不动\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787357960391 @ 更换发动机正时上盖\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787357937259 @ 固定后装饰\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787357934496 @ 左后装饰板拆装\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787356358123 @ 检查喷水嘴\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787356357399 @ 检查雨刮喷水嘴\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787356340531 @ 调校后尾盖\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787356340123 @ 检查动力差\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787356339829 @ 检查后底盘有异响\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787355831524 @ 右前门装饰板固定\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787354826581 @ 固定左后门槛装饰板\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787354500491 @ 拆装左前杠灯罩\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787354413677 @ 外加工轮胎修复\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787353455166 @ 清洗助力油道\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787352830192 @ 检查方向机助力泵异响\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787351779448 @ 检查左右门\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787351473824 @ 检查右前玻璃异响\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787350773068 @ 检查发动机故障灯\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787350772866 @ 检查车身自动升降故障\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787350772750 @ 检查三元催化故障\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787350772633 @ 检查气囊故障灯\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787350772403 @ 检查右前门玻璃不能升降\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787350772161 @ 更换机油,机油格。\n",
|
||||
"项目被占用(),无法停用。 @ 10546050787350771704 @ 更换空气格,空调格\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654301002017 @ 更换左右平衡杆小吊杆\n",
|
||||
"项目被占用(),无法停用。 @ 10545360219000043431 @ 右前叶子板抛光\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425555954104 @ 添加波箱油\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654290896537 @ 前杠右侧漂漆\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654289087862 @ 右边门坎喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654289087755 @ 修复右边门坎\n",
|
||||
"项目被占用(),无法停用。 @ 10545055918001257335 @ 更换左后门玻璃\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654288508679 @ 检查无导航\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654288504838 @ 更换后杠装饰条\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654288504387 @ 左前大灯抛光\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654287580139 @ EPC灯亮\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654287315649 @ 维修敞篷车顶\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654286270081 @ 右后门边缘处补漆\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654286269507 @ 检查仪表台右侧异响\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654285896053 @ 左后门左后叶子板抛光\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654285895282 @ 后机盖点漆\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654285537264 @ 更换后装饰条\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654284839739 @ 检查发动机故障\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654282887621 @ 左前轮包校正\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654282882989 @ 机盖喷漆(内外)\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654281776326 @ 更换前杠雷达\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654280437758 @ 更换发动机机脚\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654280207812 @ 更换雾灯框\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654278197965 @ 以上自带配件更换工时\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654278197346 @ 更换左前缓冲胶\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654274617979 @ 清洗汽油格\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654274555451 @ 左前喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654274555387 @ 左前修复\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654274416695 @ 更换右轮鼓刹车片\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654274416548 @ 更换右分泵\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654274243787 @ 方向盘数据校准\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654274204593 @ 检查线路\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654274194142 @ 更换ABS线\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654274120973 @ 灯罩喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654273993032 @ 修复座子\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654273988898 @ 更换前大灯\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654273976954 @ 更换门拉手\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654273556880 @ 维修左前门开关\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654273144135 @ 修复装饰灯\n",
|
||||
"项目被占用(),无法停用。 @ 10545724654273144028 @ 修复前杠\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425566832572 @ 后杠左角补漆\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425566155400 @ 更换三元催化器(材料自备)\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425566053371 @ 更换水箱盖\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425565789404 @ 挡泥胶前左右\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425565721885 @ 更换出风口(左)\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425565484488 @ 更换压板片子轴承(材料自带)\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425565484178 @ 更换离合器\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425565484066 @ 更换抬牙箱\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425565210225 @ 刹车养护\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425565132891 @ 更换手刹拉链\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425565035735 @ 更换方向机助力油\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425564831481 @ 右前门更换\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425564816207 @ 拆装压箱\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425564788602 @ 后杠右角补漆\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425564788517 @ 左前钣金补漆\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425564788495 @ 左侧钣金修复\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425564788380 @ 左前钢盆喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425564630926 @ 右门槛钣金修复\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425564306959 @ 右前叶子板修复喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425564148792 @ 更换轮芯轴承总成\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425564148600 @ 更换轮芯轴承总成带传感器\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425564114669 @ 左前后门钣金喷漆\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425563993549 @ 检查方向盘发抖\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425563133522 @ 更换后备箱锁\n",
|
||||
"项目被占用(),无法停用。 @ 10545511425563080047 @ 左前翼子板喷漆\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# 判断项目是否可以停用\n",
|
||||
"import pandas as pd\n",
|
||||
"import time\n",
|
||||
"import requests\n",
|
||||
"import json\n",
|
||||
"\n",
|
||||
"cookies_str = 'f6-ids-goodsSESSIONID=a2fd5941-2e84-436f-bcd0-038b3f725aeb; sajssdk_2015_cross_new_user=1; erpLanguage=zh-CN; prodOrg=10545055918000198357; unp=10546443564005201400; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2210546443564005201400%22%2C%22first_id%22%3A%221900fa6310ff15-01dad8bd5944325-26001c51-2073600-1900fa6311010ba%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%221900fa6310ff15-01dad8bd5944325-26001c51-2073600-1900fa6311010ba%22%7D; tmall=false; _up=-NillNN-qyBEJ--t3vnSknvoOFt6yfeJtM4A1X8_WuJfVvDFp5nQjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbqFfsWrIsi1AoL__NRv-ZNHu3M-GTZ25y3EXOrq-tRiesfklbCOhNvrEj9mUS6hszRMWM.'\n",
|
||||
"\n",
|
||||
"cookies_str = cookies_str.encode('utf-8').decode('latin-1')\n",
|
||||
"\n",
|
||||
"cookie_dict = {item.split('=')[0]: item.split('=')[1]\n",
|
||||
" for item in cookies_str.split('; ')}\n",
|
||||
"headers = {\n",
|
||||
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40',\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
"}\n",
|
||||
"try:\n",
|
||||
" df = pd.read_excel(r'C:\\Users\\admin\\Desktop\\项目信息.xls',sheet_name='Sheet1',dtype='string')\n",
|
||||
" url = 'https://ids-goods.f6car.cn/f6-ids-goods/service/validateDisable?pkId='+da[2]\n",
|
||||
" for da in df.values:\n",
|
||||
" res = requests.post(url,cookies=cookie_dict,headers=headers)\n",
|
||||
" res = res.json()\n",
|
||||
" print(res['data']['message'],\"@\",da[1],\"@\",da[0])\n",
|
||||
"except:\n",
|
||||
" pass"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# 停用项目"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
"end_time": "2025-07-16T01:42:03.686565Z",
|
||||
"start_time": "2025-07-16T01:41:56.772597Z"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"# 停用项目\n",
|
||||
"import pandas as pd\n",
|
||||
"import time\n",
|
||||
"import requests\n",
|
||||
"import json\n",
|
||||
"\n",
|
||||
"cookies_str = 'f6-ids-goodsSESSIONID=9f24d30a-336b-4e88-adb3-4b183de53f2d; erpLanguage=zh-CN; prodOrg=11240984669917217520; unp=15865484595890778191; _up=-NillNN-qyBEJ--t3vnSknvoOF53y_SJuMkA2n43U-daUfnArpjQjaZJ9Q3d-WrAAGgt60MgQHajHWBHMKKxj0CuWypi1JgKCFP1EPEk-HbqEfESq4Im0wYL-_BRv-ZNHu3M-GTc1p60EX-sq-RQgeIal1HLPxpurEj9-k7898i3PR0.; tmall=false; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2215865484595890778191%22%2C%22first_id%22%3A%221928984bbc1271-065c3758008fd68-4c657b58-1327104-1928984bbc213fe%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%221928984bbc1271-065c3758008fd68-4c657b58-1327104-1928984bbc213fe%22%7D'\n",
|
||||
"\n",
|
||||
"cookies_str = cookies_str.encode('utf-8').decode('latin-1')\n",
|
||||
"\n",
|
||||
"cookie_dict = {item.split('=')[0]: item.split('=')[1]\n",
|
||||
" for item in cookies_str.split('; ')}\n",
|
||||
"headers = {\n",
|
||||
" 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40',\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
"}\n",
|
||||
"try:\n",
|
||||
" df = pd.read_excel(r\"C:\\Users\\Administrator.DESKTOP-7IC2USJ\\Desktop\\卡id表.xlsx\",sheet_name='Sheet1',dtype='string')\n",
|
||||
" url = 'https://ids-goods.f6car.cn/f6-ids-goods/service/editAttributeByType'\n",
|
||||
" for da in df.values:\n",
|
||||
" data = {\n",
|
||||
" \"orgIdList\": [\n",
|
||||
" \"11240984669917217520\",\n",
|
||||
" \"11240984669917400547\",\n",
|
||||
" ],\n",
|
||||
" \"isDel\": 1,\n",
|
||||
" \"infoId\": da[1],\n",
|
||||
" \"pkId\": da[2],\n",
|
||||
" \"type\": 1,\n",
|
||||
" \"idOwnOrg\": \"11240984669917217520\"\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(url,cookies=cookie_dict,headers=headers,json=data)\n",
|
||||
" res = res.json()\n",
|
||||
" print(res['message'],\"@\",da[0],\"@\",da[1],\"@\",da[2])\n",
|
||||
"except:\n",
|
||||
" pass"
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"SUCCESS @ 修小灯线路 @ 14582097883002123023 @ 1307770869\n",
|
||||
"项目被占用(绑定了会员卡),无法停用。 @ 更换分动箱油 @ 14582097883002122841 @ 1307770687\n",
|
||||
"项目被占用(绑定了会员卡),无法停用。 @ 更换前挡风玻璃 @ 14582097883002122740 @ 1307770586\n",
|
||||
"项目被占用(绑定了会员卡),无法停用。 @ 更换下摆臂球头 @ 14582097883002122870 @ 1307770716\n",
|
||||
"SUCCESS @ 拆装普通座垫座椅套(水洗) @ 14582097883002123033 @ 1307770879\n",
|
||||
"SUCCESS @ 更换倒车影像摄像头 @ 14582097883002122989 @ 1307770835\n",
|
||||
"SUCCESS @ 清洗车厢 @ 14582097883002122991 @ 1307770837\n",
|
||||
"SUCCESS @ 后门(拆装) @ 14582097883002123011 @ 1307770857\n",
|
||||
"SUCCESS @ 全车去污打蜡 @ 14582097883002123013 @ 1307770859\n",
|
||||
"SUCCESS @ 换右倒车镜支架 @ 14582097883002123017 @ 1307770863\n",
|
||||
"SUCCESS @ 换左右大灯灯泡 @ 14582097883002123024 @ 1307770870\n",
|
||||
"SUCCESS @ 拆装传动轴,修漏油 @ 14582097883002123027 @ 1307770873\n",
|
||||
"SUCCESS @ 右后门整形 拆装门把手 @ 14582097883002123036 @ 1307770882\n",
|
||||
"SUCCESS @ 全车燃油管路清洗 @ 14582097883002122967 @ 1307770813\n",
|
||||
"SUCCESS @ 钢圈修复喷漆 @ 14582097883002122968 @ 1307770814\n",
|
||||
"SUCCESS @ 右前叶子板钣金 油漆 @ 14582097883002122973 @ 1307770819\n",
|
||||
"SUCCESS @ 更换钢圈4只 @ 14582097883002122974 @ 1307770820\n",
|
||||
"SUCCESS @ 后骨架(修复) @ 14582097883002122979 @ 1307770825\n",
|
||||
"SUCCESS @ 去厂里开车,换半轴螺丝 @ 14582097883002122985 @ 1307770831\n",
|
||||
"SUCCESS @ 更换前刹车感应线 @ 14582097883002122987 @ 1307770833\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"execution_count": 8
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "F6processing",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.9.4"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+75
@@ -0,0 +1,75 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"metadata": {},
|
||||
"cell_type": "markdown",
|
||||
"source": "re",
|
||||
"id": "9100b86a92c5dc60"
|
||||
},
|
||||
{
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
"end_time": "2025-10-20T06:26:47.364635Z",
|
||||
"start_time": "2025-10-20T06:26:47.327525Z"
|
||||
}
|
||||
},
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"import re\n",
|
||||
"\n",
|
||||
"with open (\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\text.txt\",\"r\",encoding=\"utf-8\") as f:\n",
|
||||
" text = f.read()\n",
|
||||
" print(re.findall(r\"/{[^}]*}\",text))"
|
||||
],
|
||||
"id": "2d9dc300d83e2ff3",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"<>:3: SyntaxWarning: invalid escape sequence '\\I'\n",
|
||||
"<>:3: SyntaxWarning: invalid escape sequence '\\I'\n",
|
||||
"C:\\Users\\zy187\\AppData\\Local\\Temp\\ipykernel_27692\\3995594842.py:3: SyntaxWarning: invalid escape sequence '\\I'\n",
|
||||
" with open (\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\text.txt\",\"r\",encoding=\"utf-8\") as f:\n",
|
||||
"C:\\Users\\zy187\\AppData\\Local\\Temp\\ipykernel_27692\\3995594842.py:3: SyntaxWarning: invalid escape sequence '\\I'\n",
|
||||
" with open (\"D:\\Idea Project\\F6+宜搭+其它(1)\\张阳脚本\\text.txt\",\"r\",encoding=\"utf-8\") as f:\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"ename": "OSError",
|
||||
"evalue": "[Errno 22] Invalid argument: 'D:\\\\Idea Project\\\\F6+宜搭+其它(1)\\\\张阳脚本\\text.txt'",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001B[31m---------------------------------------------------------------------------\u001B[39m",
|
||||
"\u001B[31mOSError\u001B[39m Traceback (most recent call last)",
|
||||
"\u001B[36mCell\u001B[39m\u001B[36m \u001B[39m\u001B[32mIn[3]\u001B[39m\u001B[32m, line 3\u001B[39m\n\u001B[32m 1\u001B[39m \u001B[38;5;28;01mimport\u001B[39;00m\u001B[38;5;250m \u001B[39m\u001B[34;01mre\u001B[39;00m\n\u001B[32m----> \u001B[39m\u001B[32m3\u001B[39m \u001B[38;5;28;01mwith\u001B[39;00m \u001B[38;5;28mopen\u001B[39m (\u001B[33m\"\u001B[39m\u001B[33mD:\u001B[39m\u001B[33m\\\u001B[39m\u001B[33mIdea Project\u001B[39m\u001B[33m\\\u001B[39m\u001B[33mF6+宜搭+其它(1)\u001B[39m\u001B[33m\\\u001B[39m\u001B[33m张阳脚本\u001B[39m\u001B[38;5;130;01m\\t\u001B[39;00m\u001B[33mext.txt\u001B[39m\u001B[33m\"\u001B[39m,\u001B[33m\"\u001B[39m\u001B[33mr\u001B[39m\u001B[33m\"\u001B[39m,encoding=\u001B[33m\"\u001B[39m\u001B[33mutf-8\u001B[39m\u001B[33m\"\u001B[39m) \u001B[38;5;28;01mas\u001B[39;00m f:\n\u001B[32m 4\u001B[39m text = f.read()\n\u001B[32m 5\u001B[39m \u001B[38;5;28mprint\u001B[39m(re.findall(\u001B[33mr\u001B[39m\u001B[33m\"\u001B[39m\u001B[33m/\u001B[39m\u001B[33m{\u001B[39m\u001B[33m[^}]*}\u001B[39m\u001B[33m\"\u001B[39m,text))\n",
|
||||
"\u001B[36mFile \u001B[39m\u001B[32mD:\\ProgramTools\\anaconda3\\envs\\f6\\Lib\\site-packages\\IPython\\core\\interactiveshell.py:326\u001B[39m, in \u001B[36m_modified_open\u001B[39m\u001B[34m(file, *args, **kwargs)\u001B[39m\n\u001B[32m 319\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m file \u001B[38;5;129;01min\u001B[39;00m {\u001B[32m0\u001B[39m, \u001B[32m1\u001B[39m, \u001B[32m2\u001B[39m}:\n\u001B[32m 320\u001B[39m \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mValueError\u001B[39;00m(\n\u001B[32m 321\u001B[39m \u001B[33mf\u001B[39m\u001B[33m\"\u001B[39m\u001B[33mIPython won\u001B[39m\u001B[33m'\u001B[39m\u001B[33mt let you open fd=\u001B[39m\u001B[38;5;132;01m{\u001B[39;00mfile\u001B[38;5;132;01m}\u001B[39;00m\u001B[33m by default \u001B[39m\u001B[33m\"\u001B[39m\n\u001B[32m 322\u001B[39m \u001B[33m\"\u001B[39m\u001B[33mas it is likely to crash IPython. If you know what you are doing, \u001B[39m\u001B[33m\"\u001B[39m\n\u001B[32m 323\u001B[39m \u001B[33m\"\u001B[39m\u001B[33myou can use builtins\u001B[39m\u001B[33m'\u001B[39m\u001B[33m open.\u001B[39m\u001B[33m\"\u001B[39m\n\u001B[32m 324\u001B[39m )\n\u001B[32m--> \u001B[39m\u001B[32m326\u001B[39m \u001B[38;5;28;01mreturn\u001B[39;00m io_open(file, *args, **kwargs)\n",
|
||||
"\u001B[31mOSError\u001B[39m: [Errno 22] Invalid argument: 'D:\\\\Idea Project\\\\F6+宜搭+其它(1)\\\\张阳脚本\\text.txt'"
|
||||
]
|
||||
}
|
||||
],
|
||||
"execution_count": 3
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 2
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython2",
|
||||
"version": "2.7.6"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
#-------------------------------------------------------------------------------#
|
||||
# Qodana analysis is configured by qodana.yaml file #
|
||||
# https://www.jetbrains.com/help/qodana/qodana-yaml.html #
|
||||
#-------------------------------------------------------------------------------#
|
||||
version: "1.0"
|
||||
|
||||
#Specify inspection profile for code analysis
|
||||
profile:
|
||||
name: qodana.starter
|
||||
|
||||
#Enable inspections
|
||||
#include:
|
||||
# - name: <SomeEnabledInspectionId>
|
||||
|
||||
#Disable inspections
|
||||
#exclude:
|
||||
# - name: <SomeDisabledInspectionId>
|
||||
# paths:
|
||||
# - <path/where/not/run/inspection>
|
||||
|
||||
#Execute shell command before Qodana execution (Applied in CI/CD pipeline)
|
||||
#bootstrap: sh ./prepare-qodana.sh
|
||||
|
||||
#Install IDE plugins before Qodana execution (Applied in CI/CD pipeline)
|
||||
#plugins:
|
||||
# - id: <plugin.id> #(plugin id can be found at https://plugins.jetbrains.com)
|
||||
|
||||
#Specify Qodana linter for analysis (Applied in CI/CD pipeline)
|
||||
linter: jetbrains/qodana-jvm-community:latest
|
||||
@@ -0,0 +1,34 @@
|
||||
aiohttp==3.13.2
|
||||
apscheduler==3.11.2
|
||||
beautifulsoup4==4.14.3
|
||||
chardet==5.2.0
|
||||
cpca==0.5.5
|
||||
emoji==2.15.0
|
||||
Flask==3.1.2
|
||||
holidays==0.87
|
||||
matplotlib==3.10.8
|
||||
numpy==2.4.0
|
||||
openpyxl==3.1.5
|
||||
pandas==2.3.3
|
||||
Pillow==12.0.0
|
||||
playwright==1.57.0
|
||||
psycopg2==2.9.11
|
||||
pyautogui==0.9.54
|
||||
pydes==2.0.1
|
||||
pydotplus==2.0.2
|
||||
pyexcel==0.7.4
|
||||
pyexcel_io==0.6.7
|
||||
PySimpleGUI==5.0.8.3
|
||||
pytesseract==0.3.13
|
||||
python_dateutil==2.9.0.post0
|
||||
Requests==2.32.5
|
||||
scikit_learn==1.8.0
|
||||
selenium==4.39.0
|
||||
SQLAlchemy==2.0.45
|
||||
sympy==1.14.0
|
||||
tqdm==4.67.1
|
||||
xgboost==3.1.2
|
||||
xlrd==2.0.2
|
||||
xlutils==2.0.0
|
||||
xlwt==1.3.0
|
||||
zhon==2.1.1
|
||||
@@ -0,0 +1,30 @@
|
||||
import requests
|
||||
import json
|
||||
import json
|
||||
import xlrd
|
||||
import xlwt
|
||||
import pandas as pd
|
||||
from pprint import pprint
|
||||
headers = {
|
||||
'Accept': 'application/json, text/javascript, */*; q=0.01',
|
||||
'Accept-Encoding': 'gzip, deflate',
|
||||
'Accept-Language': 'zh-CN,zh;q=0.9',
|
||||
'Connection': 'keep-alive',
|
||||
'Content-Length': '81',
|
||||
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
|
||||
'Cookie': 'JSESSIONID=52DB78DAB54F9F8154968A66B1316389',
|
||||
'Host': 'www.idsz.xin:7070',
|
||||
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
|
||||
'Referer':'http://www.idsz.xin:7070/Sale_Order',
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
|
||||
'X-Requested-With': 'XMLHttpRequest'
|
||||
}
|
||||
|
||||
for a in range(0,1):
|
||||
url='http://www.idsz.xin:7070/posapi_invoke?apiname=kpi_memberVerifiAndSurplusQuery&detailtype=4&startTime=2010-01-01&endTime=2022-02-18&key=totalCount&sshopId=×CardId=&option=&page={}&pageSize=50'.format(a)
|
||||
response = requests.get(url=url,headers=headers)
|
||||
res = response.json()
|
||||
# for record in response:
|
||||
|
||||
# df=pd.DataFrame(KH)
|
||||
# df.to_excel('流失客户.xlsx',index=False)
|
||||
@@ -0,0 +1,805 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 32,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# -*- coding: utf-8 -*-\n",
|
||||
"import psycopg2\n",
|
||||
"import pandas as pd\n",
|
||||
"# 获得连接\n",
|
||||
"conn = psycopg2.connect(database=\"f6_bi\", user=\"BASIC$ro_caowei\", password=\"!ro_caowei123\", host=\"hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com\", port=\"80\")\n",
|
||||
"# 获得游标对象,一个游标对象可以对数据库进行执行操作\n",
|
||||
"cursor = conn.cursor()\n",
|
||||
"\n",
|
||||
"import datetime\n",
|
||||
"now_time = datetime.datetime.now()\n",
|
||||
"yes_time = now_time + datetime.timedelta(days=-43)\n",
|
||||
"yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前一天日期\n",
|
||||
"# sql语句 建表\n",
|
||||
"sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_saas_profile_ngv_detail_d\" WHERE \"date_id\" = '{yes_time_nyr}';\"\"\"\n",
|
||||
"# 执行语句\n",
|
||||
"cursor.execute(sql)\n",
|
||||
"# 获取结果集的每一行\n",
|
||||
"rows = cursor.fetchall()\n",
|
||||
"# 获取所有字段名\n",
|
||||
"all_fields = cursor.description\n",
|
||||
"#执行结果转化为dataframe\n",
|
||||
"col = []\n",
|
||||
"for i in all_fields:\n",
|
||||
" col.append(i[0])\n",
|
||||
"data_NGV = pd.DataFrame(list(rows),columns=col)\n",
|
||||
"# data_NGV.to_excel(r'C:\\Users\\admin\\Desktop\\NGV明细.xlsx')\n",
|
||||
"# 关闭数据库连接\n",
|
||||
"cursor.close()\n",
|
||||
"conn.close()\n",
|
||||
"\n",
|
||||
"# -*- coding: utf-8 -*-\n",
|
||||
"import psycopg2\n",
|
||||
"import pandas as pd\n",
|
||||
"# 获得连接\n",
|
||||
"conn = psycopg2.connect(database=\"f6_bi\", user=\"BASIC$ro_caowei\", password=\"!ro_caowei123\", host=\"hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com\", port=\"80\")\n",
|
||||
"# 获得游标对象,一个游标对象可以对数据库进行执行操作\n",
|
||||
"cursor = conn.cursor()\n",
|
||||
"\n",
|
||||
"import datetime\n",
|
||||
"now_time = datetime.datetime.now()\n",
|
||||
"yes_time = now_time + datetime.timedelta(days=-1)\n",
|
||||
"yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前一天日期\n",
|
||||
"# sql语句 建表\n",
|
||||
"sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_saas_profile_ngv_detail_d\" WHERE \"date_id\" = '{yes_time_nyr}';\"\"\"\n",
|
||||
"# 执行语句\n",
|
||||
"cursor.execute(sql)\n",
|
||||
"# 获取结果集的每一行\n",
|
||||
"rows = cursor.fetchall()\n",
|
||||
"# 获取所有字段名\n",
|
||||
"all_fields = cursor.description\n",
|
||||
"#执行结果转化为dataframe\n",
|
||||
"col = []\n",
|
||||
"for i in all_fields:\n",
|
||||
" col.append(i[0])\n",
|
||||
"data_NGV_new = pd.DataFrame(list(rows),columns=col)\n",
|
||||
"# data_NGV.to_excel(r'C:\\Users\\admin\\Desktop\\NGV明细.xlsx')\n",
|
||||
"# 关闭数据库连接\n",
|
||||
"cursor.close()\n",
|
||||
"conn.close()\n",
|
||||
"\n",
|
||||
"# 使用isin方法筛选出A表中id_own_org字段不在B表中的行\n",
|
||||
"c_data = data_NGV_new[~data_NGV_new['id_own_org'].isin(data_NGV['id_own_org'])]\n",
|
||||
"\n",
|
||||
"# 输出C表内容\n",
|
||||
"c_data = c_data.reset_index()\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_FE5IWP670JPRC5ZA6HK0\",\n",
|
||||
" \"systemToken\" : \"HP666C71ZLASJ0MPWC5ZOUA4AGDP17QU7TPRK92\",\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_FE5IWP670JPRC5ZA6HK0\",\n",
|
||||
" \"systemToken\" : \"HP666C71ZLASJ0MPWC5ZOUA4AGDP17QU7TPRK92\",\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_FE5IWP670JPRC5ZA6HK0\",\n",
|
||||
" \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
||||
" \"systemToken\" : \"HP666C71ZLASJ0MPWC5ZOUA4AGDP17QU7TPRK92\",\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_FE5IWP670JPRC5ZA6HK0\",\n",
|
||||
" # \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
||||
" \"systemToken\" : \"HP666C71ZLASJ0MPWC5ZOUA4AGDP17QU7TPRK92\",\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_FE5IWP670JPRC5ZA6HK0\",\n",
|
||||
" \"asynchronousExecution\" : \"true\",\n",
|
||||
" \"systemToken\" : \"HP666C71ZLASJ0MPWC5ZOUA4AGDP17QU7TPRK92\",\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_FE5IWP670JPRC5ZA6HK0\",\n",
|
||||
" \"asynchronousExecution\" : \"true\",\n",
|
||||
" \"systemToken\" : \"HP666C71ZLASJ0MPWC5ZOUA4AGDP17QU7TPRK92\",\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_FE5IWP670JPRC5ZA6HK0&systemToken=HP666C71ZLASJ0MPWC5ZOUA4AGDP17QU7TPRK92&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() "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 33,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"新建第 99 条数据! {'result': ['FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLXE', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLYE', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLZE', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KL0F', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KL1F', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KL2F', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KL3F', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KL4F', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KL5F', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KL6F', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KL7F', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KL8F', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KL9F', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLAF', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLBF', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLCF', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLDF', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLEF', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLFF', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLGF', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLHF', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLIF', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLJF', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLKF', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLLF', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLMF', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLNF', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLOF', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLPF', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLQF', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLRF', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLSF', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLTF', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLUF', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLVF', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLWF', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLXF', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLYF', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLZF', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KL0G', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KL1G', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KL2G', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KL3G', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KL4G', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KL5G', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KL6G', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KL7G', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KL8G', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KL9G', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLAG', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLBG', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLCG', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLDG', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLEG', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLFG', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLGG', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLHG', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLIG', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLJG', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLKG', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLLG', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLMG', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLNG', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLOG', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLPG', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLQG', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLRG', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLSG', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLTG', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLUG', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1HPHC08KLVG', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1IPHC08KLWG', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1IPHC08KLXG', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1IPHC08KLYG', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1IPHC08KLZG', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1IPHC08KL0H', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1IPHC08KL1H', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1IPHC08KL2H', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1IPHC08KL3H', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1IPHC08KL4H', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1IPHC08KL5H', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1IPHC08KL6H', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1IPHC08KL7H', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1IPHC08KL8H', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1IPHC08KL9H', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1IPHC08KLAH', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1IPHC08KLBH', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1IPHC08KLCH', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1IPHC08KLDH', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1IPHC08KLEH', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1IPHC08KLFH', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1IPHC08KLGH', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1IPHC08KLHH', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1IPHC08KLIH', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1IPHC08KLJH', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1IPHC08KLKH', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1IPHC08KLLH', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1IPHC08KLMH', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1IPHC08KLNH', 'FINST-8K966U7190LCMIA36G9DH8RMXX5Z1IPHC08KLOH']}\n",
|
||||
"新建第 199 条数据! {'result': ['FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLW2', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLX2', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLY2', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLZ2', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KL03', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KL13', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KL23', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KL33', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KL43', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KL53', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KL63', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KL73', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KL83', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KL93', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLA3', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLB3', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLC3', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLD3', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLE3', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLF3', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLG3', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLH3', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLI3', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLJ3', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLK3', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLL3', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLM3', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLN3', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLO3', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLP3', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLQ3', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLR3', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLS3', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLT3', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLU3', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLV3', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLW3', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLX3', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLY3', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLZ3', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KL04', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KL14', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KL24', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KL34', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KL44', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KL54', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KL64', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KL74', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KL84', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KL94', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLA4', 'FINST-7X866C817YKCELIUD3N7S49XJKER3XZHC08KLB4', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLC4', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLD4', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLE4', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLF4', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLG4', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLH4', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLI4', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLJ4', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLK4', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLL4', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLM4', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLN4', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLO4', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLP4', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLQ4', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLR4', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLS4', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLT4', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLU4', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLV4', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLW4', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLX4', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLY4', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLZ4', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KL05', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KL15', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KL25', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KL35', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KL45', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KL55', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KL65', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KL75', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KL85', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KL95', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLA5', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLB5', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLC5', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLD5', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLE5', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLF5', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLG5', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLH5', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLI5', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLJ5', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLK5', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLL5', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLM5', 'FINST-7X866C817YKCELIUD3N7S49XJKER3YZHC08KLN5']}\n",
|
||||
"新建第 299 条数据! {'result': ['FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLB5', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLC5', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLD5', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLE5', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLF5', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLG5', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLH5', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLI5', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLJ5', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLK5', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLL5', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLM5', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLN5', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLO5', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLP5', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLQ5', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLR5', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLS5', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLT5', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLU5', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLV5', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLW5', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLX5', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLY5', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLZ5', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KL06', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KL16', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KL26', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KL36', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KL46', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KL56', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KL66', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KL76', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KL86', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KL96', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLA6', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLB6', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLC6', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLD6', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLE6', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLF6', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLG6', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLH6', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLI6', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLJ6', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLK6', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLL6', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLM6', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLN6', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLO6', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLP6', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLQ6', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLR6', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLS6', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLT6', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLU6', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLV6', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLW6', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLX6', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLY6', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KLZ6', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KL07', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KL17', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KL27', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KL37', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KL47', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KL57', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3N9IC08KL67', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KL77', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KL87', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KL97', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KLA7', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KLB7', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KLC7', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KLD7', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KLE7', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KLF7', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KLG7', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KLH7', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KLI7', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KLJ7', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KLK7', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KLL7', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KLM7', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KLN7', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KLO7', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KLP7', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KLQ7', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KLR7', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KLS7', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KLT7', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KLU7', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KLV7', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KLW7', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KLX7', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KLY7', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KLZ7', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KL08', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KL18', 'FINST-9X866BD1SOLCY4CXCPEIR5YI12TA3O9IC08KL28']}\n",
|
||||
"新建第 399 条数据! {'result': ['FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLE', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLF', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLG', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLH', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLI', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLJ', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLK', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLL', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLM', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLN', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLO', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLP', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLQ', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLR', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLS', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLT', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLU', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLV', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLW', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLX', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLY', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLZ', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KL01', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KL11', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KL21', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KL31', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KL41', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KL51', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KL61', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KL71', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KL81', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KL91', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLA1', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLB1', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLC1', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLD1', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLE1', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLF1', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLG1', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLH1', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLI1', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLJ1', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLK1', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLL1', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLM1', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLN1', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLO1', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLP1', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLQ1', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLR1', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLS1', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLT1', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLU1', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLV1', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLW1', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLX1', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLY1', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KLZ1', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KL02', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2DIIC08KL12', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KL22', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KL32', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KL42', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KL52', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KL62', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KL72', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KL82', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KL92', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KLA2', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KLB2', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KLC2', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KLD2', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KLE2', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KLF2', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KLG2', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KLH2', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KLI2', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KLJ2', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KLK2', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KLL2', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KLM2', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KLN2', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KLO2', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KLP2', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KLQ2', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KLR2', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KLS2', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KLT2', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KLU2', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KLV2', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KLW2', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KLX2', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KLY2', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KLZ2', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KL03', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KL13', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KL23', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KL33', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KL43', 'FINST-RA766M91HOLCZ2QHEFL268U64SHD2EIIC08KL53']}\n",
|
||||
"新建第 499 条数据! {'result': ['FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KL45', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KL55', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KL65', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KL75', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KL85', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KL95', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLA5', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLB5', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLC5', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLD5', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLE5', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLF5', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLG5', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLH5', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLI5', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLJ5', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLK5', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLL5', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLM5', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLN5', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLO5', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLP5', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLQ5', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLR5', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLS5', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLT5', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLU5', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLV5', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLW5', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLX5', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLY5', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLZ5', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KL06', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KL16', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KL26', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KL36', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KL46', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KL56', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KL66', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KL76', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KL86', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KL96', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLA6', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLB6', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLC6', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLD6', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLE6', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLF6', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLG6', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLH6', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLI6', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLJ6', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLK6', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLL6', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLM6', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLN6', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLO6', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLP6', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLQ6', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLR6', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLS6', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLT6', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLU6', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLV6', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLW6', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLX6', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLY6', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLZ6', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KL07', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KL17', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KL27', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KL37', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KL47', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KL57', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KL67', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KL77', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KL87', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KL97', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLA7', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLB7', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLC7', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLD7', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLE7', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLF7', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLG7', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLH7', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLI7', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLJ7', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLK7', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLL7', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLM7', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLN7', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLO7', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLP7', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLQ7', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLR7', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLS7', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLT7', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLU7', 'FINST-UT866MB1SLLC5NKH7GLGK7YN0OW133RIC08KLV7']}\n",
|
||||
"新建第 599 条数据! {'result': ['FINST-FE8668B1KHLC3WJG6527Z42BTFS53KYIC08KL8C', 'FINST-FE8668B1KHLC3WJG6527Z42BTFS53KYIC08KL9C', 'FINST-FE8668B1KHLC3WJG6527Z42BTFS53KYIC08KLAC', 'FINST-FE8668B1KHLC3WJG6527Z42BTFS53KYIC08KLBC', 'FINST-FE8668B1KHLC3WJG6527Z42BTFS53KYIC08KLCC']}\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"'''遍历数据进行新建'''\n",
|
||||
"c_data = c_data.astype('string')\n",
|
||||
"c_data = c_data.fillna('',inplace=False)\n",
|
||||
"for a in range(0,len(c_data[\"date_fmt\"]),100):\n",
|
||||
" ALL_formData = []\n",
|
||||
" for i in range(a,a+100): # for i in range(len(c_data[\"date_fmt\"])):\n",
|
||||
" try:\n",
|
||||
" formData = {\n",
|
||||
" 'textField_kwcwsccn': c_data[\"group_name\"][i], # 公司名称\n",
|
||||
" 'textField_kwcwsccj': c_data[\"org_name\"][i], # 门店名称\n",
|
||||
" 'textField_kwcwscci': c_data[\"org_code\"][i], # 门店编码\n",
|
||||
" 'textField_kwcwsccm': c_data[\"group_grade\"][i], # 公司等级\n",
|
||||
" 'textField_kwcwy3tw': c_data[\"saas_use_year\"][i], # 使用时间\n",
|
||||
" 'textField_kwcwscck': c_data[\"org_size\"][i], # 门店规模\n",
|
||||
" 'textField_kwcwy3tx': c_data[\"org_stage\"][i], # 门店阶段\n",
|
||||
" 'textField_kwcwsccl': c_data[\"saas_customer_type\"][i] # 门店分层\n",
|
||||
" }\n",
|
||||
" ALL_formData.append(json.dumps(formData, cls=NpEncoder)) \n",
|
||||
" except:\n",
|
||||
" pass\n",
|
||||
" FORMID = \"FORM-NC966W8174MVWULSY88ZN2WHTF6J3JTWRWCWK2\" \n",
|
||||
" res_new = Batch_creation(FORMID,TOKEN,ALL_formData)\n",
|
||||
" print(\"新建第\",i,\"条数据!\",res_new)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# ces "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"c:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\numpy\\_distributor_init.py:30: UserWarning: loaded more than 1 DLL from .libs:\n",
|
||||
"c:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\numpy\\.libs\\libopenblas.EL2C6PLE4ZYW3ECEVIV3OXXGRN2NRFM2.gfortran-win_amd64.dll\n",
|
||||
"c:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\numpy\\.libs\\libopenblas64__v0.3.21-gcc_10_3_0.dll\n",
|
||||
" warnings.warn(\"loaded more than 1 DLL from .libs:\"\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# -*- coding: utf-8 -*-\n",
|
||||
"import psycopg2\n",
|
||||
"import pandas as pd\n",
|
||||
"# 获得连接\n",
|
||||
"conn = psycopg2.connect(database=\"f6_bi\", user=\"BASIC$ro_caowei\", password=\"!ro_caowei123\", host=\"hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com\", port=\"80\")\n",
|
||||
"# 获得游标对象,一个游标对象可以对数据库进行执行操作\n",
|
||||
"cursor = conn.cursor()\n",
|
||||
"\n",
|
||||
"import datetime\n",
|
||||
"now_time = datetime.datetime.now()\n",
|
||||
"yes_time = now_time + datetime.timedelta(days=-1)\n",
|
||||
"yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前一天日期\n",
|
||||
"# sql语句 建表\n",
|
||||
"sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_saas_profile_ngv_detail_d\" WHERE \"date_id\" = '{yes_time_nyr}';\"\"\"\n",
|
||||
"# 执行语句\n",
|
||||
"cursor.execute(sql)\n",
|
||||
"# 获取结果集的每一行\n",
|
||||
"rows = cursor.fetchall()\n",
|
||||
"# 获取所有字段名\n",
|
||||
"all_fields = cursor.description\n",
|
||||
"#执行结果转化为dataframe\n",
|
||||
"col = []\n",
|
||||
"for i in all_fields:\n",
|
||||
" col.append(i[0])\n",
|
||||
"data_NGV = pd.DataFrame(list(rows),columns=col)\n",
|
||||
"# data_NGV.to_excel(r'C:\\Users\\admin\\Desktop\\NGV明细.xlsx')\n",
|
||||
"# 关闭数据库连接\n",
|
||||
"cursor.close()\n",
|
||||
"conn.close()\n",
|
||||
"\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_FE5IWP670JPRC5ZA6HK0\",\n",
|
||||
" \"systemToken\" : \"HP666C71ZLASJ0MPWC5ZOUA4AGDP17QU7TPRK92\",\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_FE5IWP670JPRC5ZA6HK0\",\n",
|
||||
" \"systemToken\" : \"HP666C71ZLASJ0MPWC5ZOUA4AGDP17QU7TPRK92\",\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_FE5IWP670JPRC5ZA6HK0\",\n",
|
||||
" \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
||||
" \"systemToken\" : \"HP666C71ZLASJ0MPWC5ZOUA4AGDP17QU7TPRK92\",\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_FE5IWP670JPRC5ZA6HK0\",\n",
|
||||
" # \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
||||
" \"systemToken\" : \"HP666C71ZLASJ0MPWC5ZOUA4AGDP17QU7TPRK92\",\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_FE5IWP670JPRC5ZA6HK0\",\n",
|
||||
" \"asynchronousExecution\" : \"true\",\n",
|
||||
" \"systemToken\" : \"HP666C71ZLASJ0MPWC5ZOUA4AGDP17QU7TPRK92\",\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_FE5IWP670JPRC5ZA6HK0\",\n",
|
||||
" \"asynchronousExecution\" : \"true\",\n",
|
||||
" \"systemToken\" : \"HP666C71ZLASJ0MPWC5ZOUA4AGDP17QU7TPRK92\",\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_FE5IWP670JPRC5ZA6HK0&systemToken=HP666C71ZLASJ0MPWC5ZOUA4AGDP17QU7TPRK92&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"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"25278\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n",
|
||||
"读取到表单中 100 条数据!\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"'''批量删除NGV数据'''\n",
|
||||
"for i in range(0,10):\n",
|
||||
" default = True\n",
|
||||
" while default:\n",
|
||||
" FORMID = \"FORM-NC966W8174MVWULSY88ZN2WHTF6J3JTWRWCWK2\" \n",
|
||||
" form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
|
||||
" PAGES = form_data.get('totalCount')//100 +1 \n",
|
||||
" PAGES = PAGES * 2\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} 数据!')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"'''遍历数据进行新建'''\n",
|
||||
"data_NGV = data_NGV.astype('string')\n",
|
||||
"data_NGV = data_NGV.fillna('',inplace=False)\n",
|
||||
"for a in range(0,len(data_NGV[\"date_fmt\"]),100):\n",
|
||||
" ALL_formData = []\n",
|
||||
" for i in range(a,a+100): # for i in range(len(data_NGV[\"date_fmt\"])):\n",
|
||||
" try:\n",
|
||||
" formData = {\n",
|
||||
" 'textField_kwcwsccn': data_NGV[\"group_name\"][i], # 公司名称\n",
|
||||
" 'textField_kwcwsccj': data_NGV[\"org_name\"][i], # 门店名称\n",
|
||||
" 'textField_kwcwscci': data_NGV[\"org_code\"][i], # 门店编码\n",
|
||||
" 'textField_kwcwsccm': data_NGV[\"group_grade\"][i], # 公司等级\n",
|
||||
" 'textField_kwcwy3tw': data_NGV[\"saas_use_year\"][i], # 使用时间\n",
|
||||
" 'textField_kwcwscck': data_NGV[\"org_size\"][i], # 门店规模\n",
|
||||
" 'textField_kwcwy3tx': data_NGV[\"org_stage\"][i], # 门店阶段\n",
|
||||
" 'textField_kwcwsccl': data_NGV[\"saas_customer_type\"][i] # 门店分层\n",
|
||||
" }\n",
|
||||
" ALL_formData.append(json.dumps(formData, cls=NpEncoder)) \n",
|
||||
" except:\n",
|
||||
" pass\n",
|
||||
" FORMID = \"FORM-NC966W8174MVWULSY88ZN2WHTF6J3JTWRWCWK2\" \n",
|
||||
" res_new = Batch_creation(FORMID,TOKEN,ALL_formData)\n",
|
||||
" print(\"新建第\",i,\"条数据!\",res_new)"
|
||||
]
|
||||
}
|
||||
],
|
||||
"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
|
||||
}
|
||||
@@ -0,0 +1,646 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"c:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\numpy\\_distributor_init.py:30: UserWarning: loaded more than 1 DLL from .libs:\n",
|
||||
"c:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\numpy\\.libs\\libopenblas.EL2C6PLE4ZYW3ECEVIV3OXXGRN2NRFM2.gfortran-win_amd64.dll\n",
|
||||
"c:\\Users\\admin\\.conda\\envs\\F6processing\\lib\\site-packages\\numpy\\.libs\\libopenblas64__v0.3.21-gcc_10_3_0.dll\n",
|
||||
" warnings.warn(\"loaded more than 1 DLL from .libs:\"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"距离今天还有120天的日期是:2024-03-06\n",
|
||||
"读取到省市小六技术专家区域客服区域客成表单中 347 条数据!\n",
|
||||
"{'result': '5ce89321-8e14-4016-9b55-ac6da3a03f8c'}\n",
|
||||
"822nD4EbxXditOPJubTmbIvyxEi+COcZaBRldfuxFsnKAkPyXtJN96KdyJl7cOQcxpADdZpNsuSMoeq1uL63E0M7iZKv/3CFUhhmSg+44e/UW/r/ScVimB/IhawLrONxwkMMi/wWvdX+cWTv8C7Fc4oJKDgf3aNd\n",
|
||||
"数据新建成功!\n",
|
||||
"{'result': '4dba907e-ccc1-4afc-b1dd-461add579fae'}\n",
|
||||
"biLXruec3L6UiEULuRxpjVp82qHniLOkSpQKyK49bQM3ftKoIyQkX3DqZIrRj4FSlMWlFb73RYT+D6G+HyXmeOeJbm/2BbzlgK5egXVNolgEI4cOPy+takTuKnxsYFV3Dle0nDZWOrCLj/Q2+LlFnMJrhOz4fjwJ\n",
|
||||
"数据新建成功!\n",
|
||||
"{'result': '8f840e95-8494-47bf-b901-553c87082a7e'}\n",
|
||||
"ZvZTULI5JDia+KZ24gbQKJQMHx22ldUiaMH+S5CUtoYeqyRGJiVBc8dXfwEMFrki1XFigdkP+/rddI07MiCUTfE6Ka1p8gYpw2H6oSdrXsQ54GRB97D3PKsAIBk0BFUJTVfaHEI319y2QU+C958769x2v1EJCVei\n",
|
||||
"数据新建成功!\n",
|
||||
"{'result': '46e8da0c-122d-4c6a-9ff8-179b2080f485'}\n",
|
||||
"HS1mUBmKrfJ+LabI/KEo2CvHz74dy+u4QqjD/zcDEiJbc8fR0OwwFLDaCHiJsWy1s6SAl8nRr/btZzBz9dReYENFIiisx8olCqzW1nbZVHyNHnBLmDbWMZXEy8EIy20Rp4PMm/O00nj2erk+j+CU5ByDV6nQMn+D\n",
|
||||
"数据新建成功!\n",
|
||||
"{'result': '3c0829e7-2087-4471-b660-625c816f1ffe'}\n",
|
||||
"WSYW+js1pkNj/nWMvN5iYY/nlbIquZj6qlK45Q1dlFwlhNkkEY9mIYyJj3eT/uHxSMnD04oAW8vxjt49iSk8DlwZK50bS8nQDZbR1DNrOoIJGvLCwK23HJTo6Tv7vAcjr4CChUa9K2KAofFxaaBuJfjSPF4jn8l3\n",
|
||||
"数据新建成功!\n",
|
||||
"{'result': 'aa4c2ec4-5d4b-4561-aad1-0d41cc399975'}\n",
|
||||
"ymWUIxkJ0OBw3KLOT+NLSXfnkU0RgS9GXCIui4Ff7fZ0qpfkfR0zbixab7RzzXH6+7XeskLicG0n9QSdMDJWarWHLFeQvjYs7F8soTnNlHTk1Iwh7yifShunDIRWMesam743uKG6yEA4AWQP1NKpUbi5kQZc6H7o\n",
|
||||
"数据新建成功!\n",
|
||||
"{'result': 'f3923ce1-dcdd-4e55-a6be-fa6592c72eee'}\n",
|
||||
"VC85mF8oXumLAr+iii37x42SrGVOde1sW7qfU8M3+ccFSHvdpf2YQnBaSvxFXWDtYTP5OVOuZHMkrv5ThFbRF5inX9yST3fDYwxjSlkfjFIIXjXq4jjn45ot+uW4eaf+ERiafQd43La4b9I9ZFmvWRFPVC/bWsp6\n",
|
||||
"数据新建成功!\n",
|
||||
"{'result': '7624615b-4d8a-4c54-a03d-54e240f77e9e'}\n",
|
||||
"WNoQlr/OnJGAyXK38XpK9JEKuzqKodsvwhAaFvHi4RW+AOkt6LEp6U0aPTx884YF4Q+FXBLxVomRs/uG2iKY4//xDB9CwAq4B+7crJMsKrOLl2wFUpggv+BD5Vv1hTMmwvnC3FUJllq8A3szFBaU9cTZDjo7pnbo\n",
|
||||
"数据新建成功!\n",
|
||||
"{'result': '15cfa17e-393a-4141-bf54-aedd9e18641b'}\n",
|
||||
"ZlIvORb0WqZPxCw+fIxakRsCixvAvfsEVhsFnypPEcDnJUPxulqvfNwZnWttJW4UZdu8yxFSQkQK3/VxUsuiUVtj87DvgPq/7LLA4awG6SJtTpGTToqZsYK+nghBhHr+YhkRHezg3W9up8DSGWjqcT/aSVI5Nnaf\n",
|
||||
"数据新建成功!\n",
|
||||
"{'result': '73d1729d-c51f-4d7e-8c5b-c1c2c66178aa'}\n",
|
||||
"lUImzsoHx7qI5AZOGPapFgY27gINa/UB9G2bHVtSexxrU9jQwqfstW1kIF/3kKTW6GAEmibu9uaOqkBpAjD1MHqUCmbBES3FARpaII9yZXOnIG2o+D4SgdgcwV2Uw70aaOYg7x0eX1XJ/ET8YqtUBg9CqNNJw0dT\n",
|
||||
"数据新建成功!\n",
|
||||
"{'result': 'db5a8a19-ec97-401c-b624-dc07b53009b2'}\n",
|
||||
"ZyG1udQrPlJ29D3wWERKOa/MAi+lsHoLKJvawKvM3L+ewc80COFPymiiTUhwKAwJKMcWmy0J/tX7C4I1fPxyaV9qvDmi9f+QNALssF7FcgVo/hEYuf5xJm1LMDatt1SkfCnOSYWgDdidvAVlO4BLnbbwMHWm8XQQ\n",
|
||||
"数据新建成功!\n",
|
||||
"{'result': '2b9c4d8f-db00-4ecd-8ba5-e9a4769ce855'}\n",
|
||||
"0UxjQrJM06bnJDB6QlflN+2ilcDMC1iS5+tbSXFSSqaSSBjv4lOvAoF/aqAXRQgejic33brBMsID6oLP1POg4UbLL5GsUd3dEBrZ8reXn39f05SDv2uFRLyHYWu+LZNmxMYuDTUYzSVp9XO2tBVECB1HisI4dvOD\n",
|
||||
"数据新建成功!\n",
|
||||
"{'result': '69db386d-4ab7-4fa0-8a32-907e42658ae2'}\n",
|
||||
"WuQMK2XXKgQtyejein8KQuTeomOOGmr8YXH0/VrxNTWGdtM65arSzzQRFwgD9EkJZWMiDqR16ViyRTMvu1IMDuHfKzs+JU7mLNZNuotLP8CRthZr1YgOfR/z1Ewp6zNYDlzONKJMNH1kUUf3KqYOH94bucfeRorV\n",
|
||||
"数据新建成功!\n",
|
||||
"{'result': '7fac1b7d-9c8f-43de-879c-7d5bda2fe50b'}\n",
|
||||
"z6PCc+2vQde5UO47TLB/4fkVXoGs0s2/Vl16+zZ/HfnVEjI6jsmoqVDIZQigDyGHP0ElfEdLk5DlOudtcCFzJODccSYp90xJH3dujg9Tg4PY/VVMSmfFmv4ZdwtK2zmhmLbkb6pWa2u4HzhEq+OvOvEvRb2qlv3g\n",
|
||||
"数据新建成功!\n",
|
||||
"{'result': 'bc927e89-467f-4253-a1be-ab6997eb4b56'}\n",
|
||||
"9VKzvxSXHrtcxp4xzcC0npJxZqEpGZVNvgy2eI95dUivppHVnfz0431kuURxJ75You2s8A4FVBYoHfKVx2kEjT9yQHF7WMAFGHS8GgOJUVORCG9pn9rBwKHBkQqJWRf0kj1RekC1DX3nZrxNJLONyCQIA6veiCMG\n",
|
||||
"数据新建成功!\n",
|
||||
"{'result': 'cbf11b36-3727-40b6-af70-1aa11768ae41'}\n",
|
||||
"a8Cc9to5p4NMZdQ9+5ZP4PnXuZU2GzFaza05ocEaadI8iYwO0+u/MM25kJJdYXSEpugfQtR02+Ex6rgQVpZ1UbEftZ+XpUhncR+XP32sRdt5H0uoUBCEDIk7a5REDBpGODCBbjUasblsdSMYtsf5BL7v2RiSgnGL\n",
|
||||
"数据新建成功!\n",
|
||||
"{'result': '4ae91c77-7181-4817-bad3-2b8cc2647c29'}\n",
|
||||
"2cwjAMQfVN18Z7a7S4zV0IEef2LL5KfGc1eHaD7ewiTAy9KNgXkPAoiVA+tmQ34sXhg/oHjzKcHlVzTJmCf2E7uddrrYvUoWqifunRpEslDVDJaeE9PR1gPs2UQJpuv0PHWYaSPIHojLcKn7HintaiYEDDxc7gUj\n",
|
||||
"数据新建成功!\n",
|
||||
"{'result': 'a83aa44f-4a5c-45ce-8915-ec6a47dc0410'}\n",
|
||||
"0KfgiCYFf7OKL/uPWK2ZGbGSLu5R0Naj6xTjUT9xqdz/+gucRkiD8Jol/yYcnM9H3WxGRR8CtKrECdepMwkjWgAJHddBRnLhely9ZYYg6yp1epmz0PfliaeLh3Ffc83E7y2ju47+/TW0a1N0CkQCnBDe5kv5hw/D\n",
|
||||
"数据新建成功!\n",
|
||||
"{'result': '6192b72c-9a7d-4baa-8884-52823ca0f1a7'}\n",
|
||||
"6TvpLPHBFlUBjrnyWqAjq8Y7BnXaIDxDTm5jzT45m35xX+FaXwt/Z/O0oSyLwi61pfsAWgRcTq1ft4SKuCMsxv0tSQH5e5C8S5D2XZSTCj6NXlhdh27pDeA9HlLllu+iW8q6EdFrEynv9p3K8kJFtxkM10U5O08T\n",
|
||||
"数据新建成功!\n",
|
||||
"{'result': 'c3680f75-6968-4488-87e7-a071c3499f24'}\n",
|
||||
"e3Dgoq7Gk47Czmk596NFrbEqUOTzVZdlRXOz/ooVVOWk1emls0TagrOscybZILeXfvv0w42IkfTzwGgFdrr4G7hHfBHv3lW7rrF7lruwL2WElbcRQUtfRkcVF3lv/vi7cDPX3ggbnGWGf54UPkb4el4KxfzmdZZX\n",
|
||||
"数据新建成功!\n",
|
||||
"{'result': 'c1139d67-a673-4759-be79-59360f058397'}\n",
|
||||
"qBXdbTi6NFgKO6qBhXSz1yHmVaPbwLk0LqsRXE92ff66HOpmpA4VX21cUkQnNl3KxmYpO4yRJm/LZ/7g47giH7RXSI1SqP2YNJQjPzutbV1ivTd91Nkv+bS0iamdnk8EdwtPAyYBi9rpIxIW+D8EOTtl8uBGCCDR\n",
|
||||
"数据新建成功!\n",
|
||||
"{'result': '44250c2e-5379-441d-b570-97bfb403b653'}\n",
|
||||
"Gzx54m1v6lZFYUbHBQDldPFQesrbay2TsQbao0EOhD3neeAr5NwOVhZiDgDAbTefKwLxg4OXR7WQnRyrhzg4hntgyKzEULAZ0JuGJbATep7fC1YPmZzj3pWXi7V53a9nkGFihH0wXY0+6pEpbuAsirt3TcNbvP0k\n",
|
||||
"数据新建成功!\n",
|
||||
"{'result': 'f2dfbe7c-1660-404b-a2aa-bacd68711b25'}\n",
|
||||
"I5Y7t6zYO4gp2ezeBKCPkpW9su8/dUbql99PUXDBuvjRR8kHTK7O1PstnzVGw98D/jcd0k0T3fHd1o2N9QYHsdcBkVEX6bybbEUTKLNPeSbMCKJaEAeWpmBZ+ssMVQFs9yFobFufBdyaQmGsz5pOhiXKPmoB9QZQ\n",
|
||||
"数据新建成功!\n",
|
||||
"{'result': '41cfb243-2dbf-49d4-9fe1-5d89ae27f618'}\n",
|
||||
"OBy5m79v6w3BMSsJTCvKaq3RDn6u+5tfs+5H4tRB7ZzQknbDHQwnbJW6ur+nrXHqgt7cV8dF5KyBQyBBrA9yM7uVfwR7C+m4TYPjLrtdR1HzoVBMsLeev7kgLCdH7xI0A3S4FX9Nd+tjaksQUCX9ycf3CzSx8d54\n",
|
||||
"数据新建成功!\n",
|
||||
"{'result': '71fd6f1b-dce6-4274-b182-07c978223254'}\n",
|
||||
"+YDyhLGF2xSsPUmNbiZRaKKJsK64nyxSYOnNVeklP7VP6hb9ToiSfnQ4XG/ggmg7Hr5rzTossYIW3AaIDnwoMmpu5NaR/BjzXMWfMOo7Go9RQetZ4X6p+q4PmNAC57m1VP2iBDnO6mTJBIMqupQHMcMFU1Bi90OV\n",
|
||||
"数据新建成功!\n",
|
||||
"{'result': 'c46b75c4-3a06-439c-b46b-47c4c2b24613'}\n",
|
||||
"YO8872zuAncd+24CGdKkJH7xJ6DJyqUyyF8P7Eu5oz9A1F0iQbbOX/Xf/5IprzvHFlwmo/fOXCk9bUlxfup+rlhyrAptBKk1s/3qS99ElWNyBKztujn6CGx2KRqsTKwtOUK/Hmi5e84Nj4MhLvQWmWIKR4S4ZZU7\n",
|
||||
"数据新建成功!\n",
|
||||
"{'result': '0d28935c-8320-4d5c-9e57-cc1443eb4c83'}\n",
|
||||
"D1EabFjV+CleVZX3HrxaoZmGQxKyWmqmTvMoMBg3cNMPROAStj/Ox5KyKPmyClljJWSCqZDFrkaVeMnXegAuxvBs91VpXADF3K5qigTjVqXvegPWSvDYvypEat7hxL9LIpGuc5qzmUqR6CiTPMLm9ttggEQE2qcv\n",
|
||||
"数据新建成功!\n",
|
||||
"{'result': 'a4154f9a-fd17-4035-9b45-16f6a00ffc97'}\n",
|
||||
"DIiDjfnUufelcORkchmwJnmDbSqIw+6Op3x+KMIrTIbLGwV7ExyalB+o7nwqbu5U0dk8wvScfryKkjGgnuq3dyjaCoVD2yMX6cItTszj+C6dSRuGl710290efH/vBc9mZOtnOs38IVkCyIcrRO3WjwJNvfsaV8Mc\n",
|
||||
"数据新建成功!\n",
|
||||
"{'result': '020363e7-b42c-4ed1-aa96-fe27c9593eb0'}\n",
|
||||
"GUA0jP3WlnYlAQrbMg5bjmG2HqH3vOrg6Sc5gc2MHvaduTGeySc/HpvT423u72ZpEQjY8fRMWVplSCGWedD/hGbK3CxnHdZtAilP4uzAVg9aVl/D0oM5RQpp5t+k6Be7EZRXoipechvACI64m8TVVYv+NUHzvdc2\n",
|
||||
"数据新建成功!\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# -*- coding: utf-8 -*-\n",
|
||||
"import psycopg2\n",
|
||||
"import pandas as pd\n",
|
||||
"from datetime import date, timedelta\n",
|
||||
"# 获得连接\n",
|
||||
"conn = psycopg2.connect(database=\"f6_bi\", user=\"BASIC$ro_caowei\", password=\"!ro_caowei123\", host=\"hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com\", port=\"80\")\n",
|
||||
"# 获得游标对象,一个游标对象可以对数据库进行执行操作\n",
|
||||
"cursor = conn.cursor()\n",
|
||||
"\n",
|
||||
"import datetime\n",
|
||||
"now_time = datetime.datetime.now()\n",
|
||||
"yes_time = now_time + datetime.timedelta(days=-2)\n",
|
||||
"yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前一天日期\n",
|
||||
"\n",
|
||||
"today = date.today()\n",
|
||||
"days_to_add = 120\n",
|
||||
"future_date = str(today + timedelta(days=days_to_add))\n",
|
||||
"# 输出结果\n",
|
||||
"print(\"距离今天还有{}天的日期是:{}\".format(days_to_add, future_date))\n",
|
||||
"# sql语句 建表\n",
|
||||
"sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_saas_profile_ngv_detail_d\" WHERE \"date_id\" = '{yes_time_nyr}' and \"expiry_time\" like '%{future_date}%';\"\"\"\n",
|
||||
"# 执行语句\n",
|
||||
"cursor.execute(sql)\n",
|
||||
"# 获取结果集的每一行\n",
|
||||
"rows = cursor.fetchall()\n",
|
||||
"# 获取所有字段名\n",
|
||||
"all_fields = cursor.description\n",
|
||||
"#执行结果转化为dataframe\n",
|
||||
"col = []\n",
|
||||
"for i in all_fields:\n",
|
||||
" col.append(i[0])\n",
|
||||
"data_NGV = pd.DataFrame(list(rows),columns=col)\n",
|
||||
"# data_NGV.to_excel(r'C:\\Users\\admin\\Desktop\\NGV明细.xlsx')\n",
|
||||
"# 关闭数据库连接\n",
|
||||
"cursor.close()\n",
|
||||
"conn.close()\n",
|
||||
"\n",
|
||||
"# 基础函数配置\n",
|
||||
"import pandas as pd\n",
|
||||
"import pandas as pd\n",
|
||||
"import requests\n",
|
||||
"from pathlib import Path\n",
|
||||
"from urllib.parse import quote\n",
|
||||
"import json\n",
|
||||
"import numpy as np\n",
|
||||
"import time\n",
|
||||
"from datetime import date, timedelta\n",
|
||||
"\n",
|
||||
"ROOT = Path('.').absolute() # 当前工作目录\n",
|
||||
"\n",
|
||||
"def generateToken() -> str:\n",
|
||||
" \"\"\" 生成 token \"\"\"\n",
|
||||
"\n",
|
||||
" token_api = 'https://api.dingtalk.com/v1.0/oauth2/accessToken'\n",
|
||||
"\n",
|
||||
" # 该信息在钉钉开放应用中\n",
|
||||
" data = {\n",
|
||||
" \"appKey\": \"ding5kqocon5s9oph5uq\",\n",
|
||||
" \"appSecret\": 'HL1jgsIIfLAC0eTH0A1m4mwxUDqbgsiPeCCGGE3ocM6qJBTIW7Ivt9drxF_Z4Kb_'\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(token_api, json=data)\n",
|
||||
" token = res.json()['accessToken']\n",
|
||||
"\n",
|
||||
" return token\n",
|
||||
"\n",
|
||||
"def read_instances(token, formUuid, page, n):\n",
|
||||
" \"\"\" 函数功能:读取普通表单的所有数据 \"\"\"\n",
|
||||
"\n",
|
||||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" \"x-acs-dingtalk-access-token\": token\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" formData = {\n",
|
||||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||||
" \"userId\" : \"yida_pub_account\",\n",
|
||||
" \"language\" : \"zh_CN\",\n",
|
||||
" \"formUuid\" : formUuid,\n",
|
||||
" \"currentPage\" : page,\n",
|
||||
" \"pageSize\" : n\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(api, headers=headers, json=formData)\n",
|
||||
" return res.json()\n",
|
||||
"\n",
|
||||
"def read_delete(token, formInstanceId):\n",
|
||||
" \"\"\" 函数功能:调用本接口删除表单数据。 \"\"\"\n",
|
||||
"\n",
|
||||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances'\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" \"x-acs-dingtalk-access-token\": token\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" formData = {\n",
|
||||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||||
" \"userId\" : \"yida_pub_account\",\n",
|
||||
" \"language\" : \"zh_CN\",\n",
|
||||
" \"formInstanceId\" : formInstanceId\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.delete(api, headers=headers, json=formData)\n",
|
||||
" return res.json()\n",
|
||||
"\n",
|
||||
"def read_new(FORMID,formData):\n",
|
||||
" \"\"\" 通过实例id 获取表单内容 \"\"\"\n",
|
||||
" api = f'https://api.dingtalk.com/v1.0/yida/forms/instances'\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||||
" }\n",
|
||||
" payload = {\n",
|
||||
" \"formUuid\" : FORMID,\n",
|
||||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||||
" \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
||||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||||
" \"language\" : \"zh_CN\",\n",
|
||||
" \"userId\" : \"yida_pub_account\"\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(api, headers=headers, json=payload)\n",
|
||||
" print(res.json())\n",
|
||||
"\n",
|
||||
" return res.json()\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"def component(FORMID,TOKEN):\n",
|
||||
" \"\"\" 获取组件信息 \"\"\"\n",
|
||||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/formFields'\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||||
" }\n",
|
||||
" payload = {\n",
|
||||
" \"formUuid\" : FORMID,\n",
|
||||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||||
" # \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
||||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||||
" # \"language\" : \"zh_CN\",\n",
|
||||
" \"userId\" : \"yida_pub_account\"\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.get(api, headers=headers, json=payload)\n",
|
||||
"\n",
|
||||
" return res.json()\n",
|
||||
"def initiate_process(TOKEN,formData):\n",
|
||||
" \"\"\" 发起宜搭审批流程 \"\"\"\n",
|
||||
" api = f'https://api.dingtalk.com//v1.0/yida/processes/instances/start'\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||||
" }\n",
|
||||
" payload = {\n",
|
||||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||||
" \"userId\" : \"yida_pub_account\",\n",
|
||||
" \"language\" : \"zh_CN\",\n",
|
||||
" \"formUuid\" : \"FORM-PE866MD1MJMU0WGLYRFLYEN5YN9L1I55Z7ZUK22\",\n",
|
||||
" \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
||||
" \"processCode\" : \"TPROC--PE866MD1MJMU0WGLYRFLYEN5YN9L1885Z7ZUK32\",\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(api, headers=headers, json=payload)\n",
|
||||
" return res.json()\n",
|
||||
"\n",
|
||||
"def delete_in_batches(FORMID,TOKEN,ALL_DATA_instance):\n",
|
||||
" \"\"\" 批量删除表单实例 \"\"\"\n",
|
||||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchRemove'\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" payload = {\n",
|
||||
" \"formUuid\" : FORMID,\n",
|
||||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||||
" \"asynchronousExecution\" : \"true\",\n",
|
||||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||||
" \"formInstanceIdList\" : json.dumps(ALL_DATA_instance, cls=NpEncoder),\n",
|
||||
" \"userId\" : \"yida_pub_account\",\n",
|
||||
" \"executeExpression\" : \"false\" # 不触发\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(api, headers=headers, json=payload)\n",
|
||||
" return res.json()\n",
|
||||
"\n",
|
||||
"def delete_in(TOKEN,formInstanceIdList):\n",
|
||||
" \"\"\" 逐条删除表单实例 \"\"\"\n",
|
||||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances?appType=APP_UYZ0KG6L0CCNV80GZ66O&systemToken=XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2&userId=yida_pub_account&language=zh_CN&formInstanceId={formInstanceIdList}'\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||||
" }\n",
|
||||
" res = requests.delete(api, headers=headers)\n",
|
||||
" return res.json()\n",
|
||||
"\n",
|
||||
"class NpEncoder(json.JSONEncoder):\n",
|
||||
" def default(self, obj):\n",
|
||||
" if isinstance(obj, np.integer):\n",
|
||||
" return int(obj)\n",
|
||||
" elif isinstance(obj, np.floating):\n",
|
||||
" return float(obj)\n",
|
||||
" elif isinstance(obj, np.ndarray):\n",
|
||||
" return obj.tolist()\n",
|
||||
" else:\n",
|
||||
" return super(NpEncoder, self).default(obj)\n",
|
||||
" \n",
|
||||
"import binascii\n",
|
||||
"import time\n",
|
||||
"import random\n",
|
||||
"from pyDes import des, CBC, PAD_PKCS5\n",
|
||||
"import requests\n",
|
||||
"\n",
|
||||
"def des_encrypt(s):\n",
|
||||
" \"\"\"\n",
|
||||
" DES 加密\n",
|
||||
" :param s: 原始字符串\n",
|
||||
" :return: 加密后字符串,16进制\n",
|
||||
" \"\"\"\n",
|
||||
" secret_key = 'HwdMBW8o'\n",
|
||||
" iv = secret_key\n",
|
||||
" k = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)\n",
|
||||
" en = k.encrypt(s, padmode=PAD_PKCS5)\n",
|
||||
" return binascii.b2a_base64(en, newline=False)\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"def des_descrypt(s):\n",
|
||||
" \"\"\"\n",
|
||||
" DES 解密\n",
|
||||
" :param s: 加密后的字符串,16进制\n",
|
||||
" :return: 解密后的字符串\n",
|
||||
" \"\"\"\n",
|
||||
" secret_key = 'HwdMBW8o'\n",
|
||||
" iv = secret_key\n",
|
||||
" k = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)\n",
|
||||
" de = k.decrypt(binascii.a2b_base64(s), padmode=PAD_PKCS5)\n",
|
||||
" return de\n",
|
||||
"\n",
|
||||
"TOKEN = generateToken() \n",
|
||||
"'''读取省市小六技术专家区域客服区域客成 '''\n",
|
||||
"FORMID = \"FORM-TP866D918DFCA4FW79YZU5X43FO32QZJQDZJL7\" #省市小六技术专家区域客服区域客成\n",
|
||||
"try:\n",
|
||||
" # 读取流程表单数据\n",
|
||||
" form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
|
||||
" PAGES = form_data.get('totalCount')//100 + 1\n",
|
||||
" textField_gif29wy = {}\n",
|
||||
" textField_3athky8 = {}\n",
|
||||
" textField_3hgho1m = {}\n",
|
||||
" textField_nc7gskc = {}\n",
|
||||
" \"\"\" 获取全量数据 \"\"\"\n",
|
||||
" for i in range(1, PAGES+1):\n",
|
||||
" # form_data = read_processes_instances(token=TOKEN, formUuid=FORMID, createFromTimeGMT=CREATE_FROM, createToTimeGMT=CREATE_TO, page=i, n=100, searchField={'textField_l7if5ff9': '否'})\n",
|
||||
" form_data = read_instances(token=TOKEN, formUuid=FORMID, page=i, n=100)\n",
|
||||
" for data in form_data.get('data'):\n",
|
||||
" textField_gif29wy[data['formData']['textField_m3hchxc']]=data['formData']['textField_gif29wy'] #区域客成id\n",
|
||||
" textField_3athky8[data['formData']['textField_m3hchxc']]=data['formData']['textField_3athky8'] #区域客服id\n",
|
||||
" textField_3hgho1m[data['formData']['textField_3hgho1m']]=data['formData']['textField_3hgho1m'] #小六id\n",
|
||||
" textField_nc7gskc[data['formData']['textField_nc7gskc']]=data['formData']['textField_nc7gskc'] #技术专家id\n",
|
||||
" print(f'读取到省市小六技术专家区域客服区域客成表单中 {len(textField_gif29wy)} 条数据!')\n",
|
||||
"\n",
|
||||
"\n",
|
||||
" '''遍历数据进行新建'''\n",
|
||||
" data_NGV = data_NGV.astype('string')\n",
|
||||
" data_NGV = data_NGV.fillna('',inplace=False)\n",
|
||||
" group_grade = {\n",
|
||||
" \"普通客户(VIP)\":10,\n",
|
||||
" \"重要客户(SVIP)\":20,\n",
|
||||
" \"区域KA(MVP)\":30,\n",
|
||||
" \"全国KA(FMVP)\":50\n",
|
||||
" }\n",
|
||||
" # 过滤数据\n",
|
||||
" for i in range(0,len(data_NGV[\"date_fmt\"])):\n",
|
||||
" try:\n",
|
||||
" t = time.time()\n",
|
||||
" ts = int(round(t * 1000))\n",
|
||||
" randint = random.randint(100000000, 999999999)\n",
|
||||
" req = data_NGV['id_own_org'][i] + \"_\" + str(ts) + \"_\" + str(randint)\n",
|
||||
" str_en = des_encrypt(req)\n",
|
||||
" req_new = str_en.decode('utf-8')\n",
|
||||
"\n",
|
||||
" url = f\"http://manage.f6yc.com/hive-admin/py/yida/renewal/orgInfo\"\n",
|
||||
" data = {\n",
|
||||
" 'req':req_new,\n",
|
||||
" 't':ts,\n",
|
||||
" 'r':randint\n",
|
||||
" }\n",
|
||||
" res = requests.post(url,data=data)\n",
|
||||
" formData = res.json()['data']['yidaFormData']\n",
|
||||
" # 过期日期的时间戳\n",
|
||||
" expire_timestamp = int(formData['dateField_ksirro5l'])/1000\n",
|
||||
"\n",
|
||||
" # 获取距离过期日期前120天,前90天,前60天,前30天的日期\n",
|
||||
" expire_date = datetime.datetime.fromtimestamp(expire_timestamp)\n",
|
||||
" before_90_days = expire_date - datetime.timedelta(days=90)\n",
|
||||
" before_60_days = expire_date - datetime.timedelta(days=60)\n",
|
||||
" before_30_days = expire_date - datetime.timedelta(days=30)\n",
|
||||
" # print(formData)\n",
|
||||
" formData['dateField_ljzefdm4'] = str(int(before_90_days.timestamp()*1000)) # 90天限制日期\n",
|
||||
" formData['dateField_ljzefdm5'] = str(int(before_60_days.timestamp()*1000)) # 60天限制日期\n",
|
||||
" formData['dateField_ljzefdm6'] = str(int(before_30_days.timestamp()*1000)) # 30天限制日期\n",
|
||||
"\n",
|
||||
"\n",
|
||||
" employeeField_kykw5ege = str(formData['employeeField_kykw5ege'])\n",
|
||||
" employeeField_ksydghrd = str(formData['employeeField_ksydghrd'])\n",
|
||||
" formData['employeeField_ljz6gvwc'] = f\"['{textField_gif29wy[formData['textField_kuj8nx01']]}', '{textField_3athky8[formData['textField_kuj8nx01']]}']\" # 区域客成+区域客服\n",
|
||||
" # formData['employeeField_ljz6416i'] = f\"[{textField_gif29wy[formData['textField_kuj8nx01']]}, {employeeField_kykw5ege}]\" # 区域客成+小六\n",
|
||||
" formData['employeeField_ljz6416i'] = f\"['{textField_gif29wy[formData['textField_kuj8nx01']]}', '{employeeField_kykw5ege}']\" # 区域客成+小六\n",
|
||||
" formData['employeeField_ljz6416j'] = f\"['{textField_gif29wy[formData['textField_kuj8nx01']]}', '{employeeField_ksydghrd}']\" # 区域客成+技术专家\n",
|
||||
" formData['employeeField_ljz6gvwd'] = textField_3athky8[formData['textField_kuj8nx01']] # 区域客服\n",
|
||||
" formData['employeeField_ksydght0'] = textField_gif29wy[formData['textField_kuj8nx01']] # 区域客成\n",
|
||||
"\n",
|
||||
" if employeeField_kykw5ege ==\"1824534815658365\" or employeeField_kykw5ege ==\"0627252740652855\": \n",
|
||||
" if employeeField_ksydghrd ==\"\":\n",
|
||||
" employeeField_kykw5ege = '0627252740652855'\n",
|
||||
" formData['employeeField_ljz6gvwc'] = '0627252740652855' # 区域客成+区域客服\n",
|
||||
" formData['employeeField_ljz6416i'] = '0627252740652855' # 区域客成+小六\n",
|
||||
" formData['employeeField_ljz6416j'] = '0627252740652855' # 区域客成+技术专家\n",
|
||||
" formData['employeeField_ljz6gvwd'] = '0627252740652855' # 区域客服\n",
|
||||
" formData['employeeField_ksydght0'] = '0627252740652855' # 区域客成\n",
|
||||
" formData['employeeField_kykw5ege'] = '0627252740652855' # 专属运营顾问\n",
|
||||
" formData['employeeField_ksirro5o'] = '0627252740652855' # 续约绩效归属人\n",
|
||||
" else:\n",
|
||||
" employeeField_kykw5ege = employeeField_ksydghrd\n",
|
||||
" formData['employeeField_ljz6gvwc'] = employeeField_ksydghrd # 区域客成+区域客服\n",
|
||||
" formData['employeeField_ljz6416i'] = employeeField_ksydghrd # 区域客成+小六\n",
|
||||
" formData['employeeField_ljz6416j'] = employeeField_ksydghrd # 区域客成+技术专家\n",
|
||||
" formData['employeeField_ljz6gvwd'] = employeeField_ksydghrd # 区域客服\n",
|
||||
" formData['employeeField_ksydght0'] = employeeField_ksydghrd # 区域客成\n",
|
||||
" formData['employeeField_kykw5ege'] = employeeField_ksydghrd # 专属运营顾问\n",
|
||||
" formData['employeeField_ksirro5o'] = employeeField_ksydghrd # 续约绩效归属人\n",
|
||||
" if formData['textField_kycfic6o'] == \"区域KA(MVP)\" or formData['textField_kycfic6o'] == \"全国KA(FMVP)\":\n",
|
||||
" formData['employeeField_ljz6gvwc'] = f\"['{employeeField_kykw5ege}', '{employeeField_ksydghrd}']\" # 小六+技术专家\n",
|
||||
" formData['employeeField_ljz6416i'] = f\"['{employeeField_kykw5ege}', '{employeeField_ksydghrd}']\" # 小六+技术专家\n",
|
||||
" formData['employeeField_ljz6416j'] = f\"['{employeeField_kykw5ege}', '{employeeField_ksydghrd}']\" # 小六+技术专家\n",
|
||||
" formData['employeeField_ljz6gvwd'] = f\"['{employeeField_kykw5ege}', '{employeeField_ksydghrd}']\" # 小六+技术专家\n",
|
||||
" try:\n",
|
||||
" formData['textField_ksirro5g'] = group_grade[data_NGV['group_grade'][i]]\n",
|
||||
" formData['textField_kycfic6o'] = data_NGV['group_grade'][i]\n",
|
||||
" except:\n",
|
||||
" pass\n",
|
||||
" res_new = initiate_process(TOKEN,formData)\n",
|
||||
" time.sleep(2)\n",
|
||||
" print(res_new)\n",
|
||||
"\n",
|
||||
" # 回传信息-------------------------------------------------------------------------------------------------------------\n",
|
||||
" default_new = True\n",
|
||||
" a_len = 1\n",
|
||||
" while default_new:\n",
|
||||
" t = time.time()\n",
|
||||
" ts = int(round(t * 1000))\n",
|
||||
" randint = random.randint(100000000, 999999999)\n",
|
||||
" req = res_new['result'] + \"|\" + formData['textField_kuntp6fk'] + \"|\" + formData['textField_kuntp6fl']+ \"|\" + formData['employeeField_kykw5ege'] + \"_\" + str(ts) + \"_\" + str(randint)\n",
|
||||
" str_en = des_encrypt(req)\n",
|
||||
" print(str_en.decode('utf-8'))\n",
|
||||
" req_new = str_en.decode('utf-8')\n",
|
||||
" url = f\"http://manage.f6yc.com/hive-admin/py/yida/renewal/insertRenewalFormsData\"\n",
|
||||
" data = {\n",
|
||||
" 'req':req_new,\n",
|
||||
" 't':ts,\n",
|
||||
" 'r':randint\n",
|
||||
" }\n",
|
||||
" res = requests.post(url,data=data)\n",
|
||||
" res.json()\n",
|
||||
" \n",
|
||||
" if res.json()['message'] == \"SUCCESS\":\n",
|
||||
" default_new = False\n",
|
||||
" a_len = a_len + 1\n",
|
||||
" if a_len > 5:\n",
|
||||
" default_new = False\n",
|
||||
" time.sleep(1)\n",
|
||||
" '''校验是否新建正常'''\n",
|
||||
" FORMID = \"FORM-L8966281PTZA73CDBTGQBDLM628M2P4X1OYHL0\" \n",
|
||||
"\n",
|
||||
" if a_len < 5:\n",
|
||||
" print(\"数据新建成功!\")\n",
|
||||
" else:\n",
|
||||
" def start_instance_process(token: str, name):\n",
|
||||
"\n",
|
||||
" \"\"\"发送宜搭表单 -- 发起流程表单\n",
|
||||
"\n",
|
||||
" Args:\n",
|
||||
" token \n",
|
||||
" data:需要发送的数据字典\n",
|
||||
" \"\"\"\n",
|
||||
"\n",
|
||||
" yida_api = \"https://api.dingtalk.com/v1.0/yida/processes/instances/start\"\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" \"x-acs-dingtalk-access-token\": token\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" send_data = {\n",
|
||||
" \"textField_l9fe0uiw\": name,\n",
|
||||
" \"textField_l9fe0uiv\": name\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" payload = {\n",
|
||||
" \"appType\": \"APP_TNVBVZ3K8G56HG03Z45Q\",\n",
|
||||
" \"systemToken\": \"CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1\",\n",
|
||||
" \"userId\": \"yida_pub_account\",# 超级管理员账号\n",
|
||||
" \"language\": \"zh_CN\",\n",
|
||||
" \"formUuid\": \"FORM-UX866Q61GNLAZBCIEDF77BGVIIR83K82WYPHLH2\",\n",
|
||||
" \"formDataJson\": json.dumps(send_data),\n",
|
||||
" \"processCode\":\"TPROC--UX866Q61GNLAZBCIEDF77BGVIIR83M92WYPHLI2\"\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(yida_api, headers=headers, json=payload)\n",
|
||||
" return res\n",
|
||||
" try:\n",
|
||||
" name = f\"[流程]续约服务流程 新建后接口回传失败,请检查!{data_NGV['id_own_org'][i]}\"\n",
|
||||
" res_yujing = start_instance_process(TOKEN,name)\n",
|
||||
" except:\n",
|
||||
" pass\n",
|
||||
" except:\n",
|
||||
" '''校验是否新建正常'''\n",
|
||||
" FORMID = \"FORM-L8966281PTZA73CDBTGQBDLM628M2P4X1OYHL0\" \n",
|
||||
" def start_instance_process(token: str, name):\n",
|
||||
"\n",
|
||||
" \"\"\"发送宜搭表单 -- 发起流程表单\n",
|
||||
"\n",
|
||||
" Args:\n",
|
||||
" token \n",
|
||||
" data:需要发送的数据字典\n",
|
||||
" \"\"\"\n",
|
||||
"\n",
|
||||
" yida_api = \"https://api.dingtalk.com/v1.0/yida/processes/instances/start\"\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" \"x-acs-dingtalk-access-token\": token\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" send_data = {\n",
|
||||
" \"textField_l9fe0uiw\": name,\n",
|
||||
" \"textField_l9fe0uiv\": name\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" payload = {\n",
|
||||
" \"appType\": \"APP_TNVBVZ3K8G56HG03Z45Q\",\n",
|
||||
" \"systemToken\": \"CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1\",\n",
|
||||
" \"userId\": \"yida_pub_account\",# 超级管理员账号\n",
|
||||
" \"language\": \"zh_CN\",\n",
|
||||
" \"formUuid\": \"FORM-UX866Q61GNLAZBCIEDF77BGVIIR83K82WYPHLH2\",\n",
|
||||
" \"formDataJson\": json.dumps(send_data),\n",
|
||||
" \"processCode\":\"TPROC--UX866Q61GNLAZBCIEDF77BGVIIR83M92WYPHLI2\"\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(yida_api, headers=headers, json=payload)\n",
|
||||
" return res\n",
|
||||
" try:\n",
|
||||
" name = f\"[流程]续约服务流程 未成功新建,请检查!{data_NGV['id_own_org'][i]}\"\n",
|
||||
" res_yujing = start_instance_process(TOKEN,name)\n",
|
||||
" except:\n",
|
||||
" pass\n",
|
||||
"except:\n",
|
||||
" '''校验是否新建正常'''\n",
|
||||
" FORMID = \"FORM-L8966281PTZA73CDBTGQBDLM628M2P4X1OYHL0\" \n",
|
||||
" def start_instance_process(token: str, name):\n",
|
||||
"\n",
|
||||
" \"\"\"发送宜搭表单 -- 发起流程表单\n",
|
||||
"\n",
|
||||
" Args:\n",
|
||||
" token \n",
|
||||
" data:需要发送的数据字典\n",
|
||||
" \"\"\"\n",
|
||||
"\n",
|
||||
" yida_api = \"https://api.dingtalk.com/v1.0/yida/processes/instances/start\"\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" \"x-acs-dingtalk-access-token\": token\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" send_data = {\n",
|
||||
" \"textField_l9fe0uiw\": name,\n",
|
||||
" \"textField_l9fe0uiv\": name\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" payload = {\n",
|
||||
" \"appType\": \"APP_TNVBVZ3K8G56HG03Z45Q\",\n",
|
||||
" \"systemToken\": \"CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1\",\n",
|
||||
" \"userId\": \"yida_pub_account\",# 超级管理员账号\n",
|
||||
" \"language\": \"zh_CN\",\n",
|
||||
" \"formUuid\": \"FORM-UX866Q61GNLAZBCIEDF77BGVIIR83K82WYPHLH2\",\n",
|
||||
" \"formDataJson\": json.dumps(send_data),\n",
|
||||
" \"processCode\":\"TPROC--UX866Q61GNLAZBCIEDF77BGVIIR83M92WYPHLI2\"\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(yida_api, headers=headers, json=payload)\n",
|
||||
" return res\n",
|
||||
" try:\n",
|
||||
" name = f\"[流程]续约服务流程 表单数据读取失败,请检查!{data_NGV['id_own_org'][i]}\"\n",
|
||||
" res_yujing = start_instance_process(TOKEN,name)\n",
|
||||
" except:\n",
|
||||
" pass"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "F6processing",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.9.4"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
@@ -0,0 +1,531 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import psycopg2
|
||||
import pandas as pd
|
||||
# 获得连接
|
||||
conn = psycopg2.connect(database="f6_bi", user="BASIC$ro_caowei", password="!ro_caowei123", host="hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com", port="80")
|
||||
# 获得游标对象,一个游标对象可以对数据库进行执行操作
|
||||
cursor = conn.cursor()
|
||||
|
||||
import datetime
|
||||
now_time = datetime.datetime.now()
|
||||
yes_time = now_time + datetime.timedelta(days=-1)
|
||||
yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前一天日期
|
||||
# sql语句 建表
|
||||
sql =f"""SELECT * FROM "public"."holo_ads_report_saas_profile_ngv_detail_d" WHERE "date_id" = '{yes_time_nyr}';"""
|
||||
# 执行语句
|
||||
cursor.execute(sql)
|
||||
# 获取结果集的每一行
|
||||
rows = cursor.fetchall()
|
||||
# 获取所有字段名
|
||||
all_fields = cursor.description
|
||||
#执行结果转化为dataframe
|
||||
col = []
|
||||
for i in all_fields:
|
||||
col.append(i[0])
|
||||
data_NGV_new = pd.DataFrame(list(rows),columns=col)
|
||||
# data_NGV.to_excel(r'C:\Users\admin\Desktop\NGV明细.xlsx')
|
||||
# 关闭数据库连接
|
||||
cursor.close()
|
||||
conn.close()
|
||||
# 基础函数配置
|
||||
import pandas as pd
|
||||
import pandas as pd
|
||||
import requests
|
||||
from pathlib import Path
|
||||
from urllib.parse import quote
|
||||
import json
|
||||
import numpy as np
|
||||
import time
|
||||
|
||||
ROOT = Path('.').absolute() # 当前工作目录
|
||||
|
||||
def generateToken() -> str:
|
||||
""" 生成 token """
|
||||
|
||||
token_api = 'https://api.dingtalk.com/v1.0/oauth2/accessToken'
|
||||
|
||||
# 该信息在钉钉开放应用中
|
||||
data = {
|
||||
"appKey": "ding5kqocon5s9oph5uq",
|
||||
"appSecret": 'HL1jgsIIfLAC0eTH0A1m4mwxUDqbgsiPeCCGGE3ocM6qJBTIW7Ivt9drxF_Z4Kb_'
|
||||
}
|
||||
|
||||
res = requests.post(token_api, json=data)
|
||||
token = res.json()['accessToken']
|
||||
|
||||
return token
|
||||
|
||||
def read_instances_put(token, formInstanceId,data_new):
|
||||
""" 函数功能:读取普通表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId" : "2268275546837446", # 曹伟 id
|
||||
"language" : "zh_CN",
|
||||
"useLatestVersion" : "false",
|
||||
"formInstanceId" : formInstanceId,
|
||||
"updateFormDataJson" : json.dumps(data_new, cls=NpEncoder)
|
||||
}
|
||||
|
||||
res = requests.put(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
|
||||
def read_instances(token, formUuid, page, n):
|
||||
""" 函数功能:读取普通表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId" : "yida_pub_account",
|
||||
"language" : "zh_CN",
|
||||
"formUuid" : formUuid,
|
||||
"currentPage" : page,
|
||||
"pageSize" : n
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
|
||||
def read_delete(token, formInstanceId):
|
||||
""" 函数功能:调用本接口删除表单数据。 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId" : "yida_pub_account",
|
||||
"language" : "zh_CN",
|
||||
"formInstanceId" : formInstanceId
|
||||
}
|
||||
|
||||
res = requests.delete(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
|
||||
def read_new(FORMID,formData):
|
||||
""" 通过实例id 获取表单内容 """
|
||||
api = f'https://api.dingtalk.com/v1.0/yida/forms/instances'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
payload = {
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"formDataJson" : json.dumps(formData, cls=NpEncoder),
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"language" : "zh_CN",
|
||||
"userId" : "yida_pub_account"
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
print(res.json())
|
||||
|
||||
return res.json()
|
||||
|
||||
|
||||
def component(FORMID,TOKEN):
|
||||
""" 获取组件信息 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/formFields'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
payload = {
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
# "formDataJson" : json.dumps(formData, cls=NpEncoder),
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
# "language" : "zh_CN",
|
||||
"userId" : "yida_pub_account"
|
||||
}
|
||||
|
||||
res = requests.get(api, headers=headers, json=payload)
|
||||
|
||||
return res.json()
|
||||
def Batch_creation(FORMID,TOKEN,ALL_formData):
|
||||
""" 获取组件信息 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchSave'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
payload = {
|
||||
# "formDataJson" : json.dumps(formData, cls=NpEncoder),
|
||||
"noExecuteExpression" : "true",
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"asynchronousExecution" : "false",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"keepRunningAfterException" : "true",
|
||||
"userId" : "yida_pub_account",
|
||||
"formDataJsonList" : json.dumps(ALL_formData, cls=NpEncoder),
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
return res.json()
|
||||
|
||||
def delete_in_batches(FORMID,TOKEN,ALL_DATA_instance):
|
||||
""" 批量删除表单实例 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchRemove'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
|
||||
payload = {
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"asynchronousExecution" : "false",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"formInstanceIdList" : json.dumps(ALL_DATA_instance, cls=NpEncoder),
|
||||
"userId" : "yida_pub_account",
|
||||
"executeExpression" : "false" # 不触发
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
return res.json()
|
||||
|
||||
def delete_in(TOKEN,formInstanceIdList):
|
||||
""" 逐条删除表单实例 """
|
||||
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}'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
res = requests.delete(api, headers=headers)
|
||||
return res.json()
|
||||
|
||||
def read_form_instances(token, formUuid, page=1, n=100, searchField={},createFromTimeGMT='',createToTimeGMT=''):
|
||||
""" 函数功能:读取普通表单的所有数据 -- 应用:F6客户服务 """
|
||||
|
||||
api = f'https://api.dingtalk.com/v1.0/yida/forms/instances/search'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
'currentPage': page,
|
||||
'pageSize': n,
|
||||
"appType": "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken": "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId": "yida_pub_account",
|
||||
"language": "zh_CN",
|
||||
"formUuid": formUuid,
|
||||
'createFromTimeGMT':createFromTimeGMT,
|
||||
'createToTimeGMT':createToTimeGMT,
|
||||
"searchFieldJson": json.dumps(searchField)
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
|
||||
def create_form_instances(token, formUuid, formData={}):
|
||||
""" 函数功能:创建普通表单实例 -- 应用:F6客户服务 """
|
||||
|
||||
api = 'https://api.dingtalk.com/v1.0/yida/forms/instances'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
payload = {
|
||||
"appType": "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken": "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId": "yida_pub_account",
|
||||
"language": "zh_CN",
|
||||
"formUuid": formUuid,
|
||||
"formDataJson": json.dumps(formData)
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
return res
|
||||
def read_instances_1108(token, formUuid, page, n,formatted_today,formatted_today_two):
|
||||
""" 函数功能:读取普通表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId" : "yida_pub_account",
|
||||
"language" : "zh_CN",
|
||||
"formUuid" : formUuid,
|
||||
"createFromTimeGMT" : formatted_today,
|
||||
"createToTimeGMT" : formatted_today_two,
|
||||
"currentPage" : page,
|
||||
"pageSize" : n
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
class NpEncoder(json.JSONEncoder):
|
||||
def default(self, obj):
|
||||
if isinstance(obj, np.integer):
|
||||
return int(obj)
|
||||
elif isinstance(obj, np.floating):
|
||||
return float(obj)
|
||||
elif isinstance(obj, np.ndarray):
|
||||
return obj.tolist()
|
||||
else:
|
||||
return super(NpEncoder, self).default(obj)
|
||||
TOKEN = generateToken()
|
||||
'''读取员工对应关系:宜搭员工-ID对应表 '''
|
||||
FORMID = "FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6" # 宜搭员工-ID对应表 FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6
|
||||
# 读取流程表单数据
|
||||
form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)
|
||||
PAGES = form_data.get('totalCount')//100 + 1
|
||||
ALL_DATA_staff = {}
|
||||
""" 获取全量数据 """
|
||||
for i in range(1, PAGES+1):
|
||||
# form_data = read_processes_instances(token=TOKEN, formUuid=FORMID, createFromTimeGMT=CREATE_FROM, createToTimeGMT=CREATE_TO, page=i, n=100, searchField={'textField_l7if5ff9': '否'})
|
||||
form_data = read_instances(token=TOKEN, formUuid=FORMID, page=i, n=100)
|
||||
for data in form_data.get('data'):
|
||||
ALL_DATA_staff[data['formData']['textField_lfrw3u58']]=data['formData']['textField_lfrw3u59']
|
||||
|
||||
'''获取表内控件信息 '''
|
||||
# FORMID = "FORM-ZK866D91O9LA4NIHCARG2DPIPCXF3Z087PPHL91"
|
||||
# component_list = component(FORMID,TOKEN)
|
||||
# for i in range(len(component_list['result'])):
|
||||
# componentName = component_list['result'][i]['componentName']
|
||||
# name_value = component_list['result'][i]['label']['value']
|
||||
# fieldId = component_list['result'][i]['fieldId']
|
||||
# print("'",fieldId,"':","data_NGV[",name_value,"][i],")
|
||||
|
||||
'''读取市-技术专家id '''
|
||||
FORMID = "FORM-A8666NA1FJDEVPBB6VVTOCMP47UP2J2L6SPML2" #市-技术专家id
|
||||
# 读取流程表单数据
|
||||
form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)
|
||||
PAGES = form_data.get('totalCount')//100 + 1
|
||||
textField_lmps6q39 = {}
|
||||
""" 获取全量数据 """
|
||||
for i in range(1, PAGES+1):
|
||||
# form_data = read_processes_instances(token=TOKEN, formUuid=FORMID, createFromTimeGMT=CREATE_FROM, createToTimeGMT=CREATE_TO, page=i, n=100, searchField={'textField_l7if5ff9': '否'})
|
||||
form_data = read_instances(token=TOKEN, formUuid=FORMID, page=i, n=100)
|
||||
for data in form_data.get('data'):
|
||||
textField_lmps6q39[data['formData']['textField_lmps6q38']]=data['formData']['textField_lmps6q39'] #技术专家id
|
||||
print(f'读取到市-技术专家id表单中 {len(textField_lmps6q39)} 条数据!')
|
||||
|
||||
import datetime
|
||||
now_time = datetime.datetime.now()
|
||||
yes_time = now_time + datetime.timedelta(days=-2)
|
||||
yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前2天日期
|
||||
|
||||
searchField={'textField_nnyw1ge':str(yes_time_nyr)} # 'textField_nnyw1ge':str(yes_time_nyr)
|
||||
res = read_form_instances(token=TOKEN, formUuid='FORM-ZK866D91O9LA4NIHCARG2DPIPCXF3Z087PPHL91',searchField=searchField)
|
||||
|
||||
data_NGV_new = data_NGV_new.astype('string')
|
||||
data_NGV_new = data_NGV_new.fillna('',inplace=False)
|
||||
for i in range(0,len(res['data'])):
|
||||
res['data'][i]['formData']['textField_nnyw1ge']
|
||||
index = ""
|
||||
index = len(data_NGV_new[data_NGV_new['org_code'] == res['data'][i]['formData']['textField_zc1iowp']]) # 门店编码
|
||||
print(i,":",index,res['data'][i]['formData']['textField_zc1iowp'])
|
||||
if index > 0:
|
||||
# 更新
|
||||
try:
|
||||
formData = {
|
||||
'textField_nnyw1ge': data_NGV_new["date_id"][index],
|
||||
'dateField_e9jt02o': int(time.mktime(time.strptime(data_NGV_new["date_fmt"][index], "%Y-%m-%d"))*1000) if data_NGV_new["date_fmt"][index] !='' else '',
|
||||
'textField_ek9jnne': data_NGV_new["id_own_group"][index],
|
||||
'textField_35i6110': data_NGV_new["group_name"][index],
|
||||
'textField_l8nc9f2': data_NGV_new["id_own_org"][index],
|
||||
'textField_tdn6hsy': data_NGV_new["org_name"][index],
|
||||
'textField_zc1iowp': data_NGV_new["org_code"][index],
|
||||
'textField_2rulk5e': data_NGV_new["group_grade"][index],
|
||||
'textField_c54tztg': data_NGV_new["org_type"][index],
|
||||
'textField_qrtnel7': data_NGV_new["org_status"][index],
|
||||
'textField_7xgxe9g': data_NGV_new["saas_version"][index],
|
||||
'textField_pnig1i1': data_NGV_new["is_wechat"][index],
|
||||
'textField_qiovtdj': data_NGV_new["is_mini_app"][index],
|
||||
'textField_i0h0iqa': data_NGV_new["is_wx_shop"][index],
|
||||
'textField_qczj9vq': data_NGV_new["is_camera_service"][index],
|
||||
'textField_jouovty': data_NGV_new["is_maintenance_service"][index],
|
||||
'dateField_o1v1emn': int(time.mktime(time.strptime(data_NGV_new["saas_create_time"][index], "%Y-%m-%d %H:%M:%S"))*1000) if data_NGV_new["saas_create_time"][index] !='' else '',
|
||||
'dateField_6zdcfnf': int(time.mktime(time.strptime(data_NGV_new["expiry_time"][index], "%Y-%m-%d %H:%M:%S"))*1000) if data_NGV_new["expiry_time"][index] !='' else '',
|
||||
'textField_8uae70x': data_NGV_new["saas_use_days"][index],
|
||||
'textField_cjkvqpn': data_NGV_new["saas_use_year"][index],
|
||||
'textField_yhtmsxx': data_NGV_new["is_main_org"][index],
|
||||
'textField_gfigtpn': data_NGV_new["license_code"][index],
|
||||
'textField_662foev': data_NGV_new["license_name"][index],
|
||||
'textField_lco27te': data_NGV_new["org_crm_id"][index],
|
||||
'textField_1tygbmq': data_NGV_new["province_id"][index],
|
||||
'textField_z2rntja': data_NGV_new["city_id"][index],
|
||||
'textField_ohybc2g': data_NGV_new["city_name"][index],
|
||||
'textField_9oupoal': data_NGV_new["area_id"][index],
|
||||
'textField_m0rzgwb': data_NGV_new["area_name"][index],
|
||||
'textField_69po7o9': data_NGV_new["region_name"][index],
|
||||
'textField_vqxr0d9': data_NGV_new["region_short_name"][index],
|
||||
'textField_5wr3tj9': data_NGV_new["branch_name"][index],
|
||||
'textField_6hz7i81': data_NGV_new["carzone_store_id"][index],
|
||||
'textField_86wu9qm': data_NGV_new["carzone_store_name"][index],
|
||||
'textField_129quhy': data_NGV_new["customer_carzone_id"][index],
|
||||
'textField_j7i4mhn': data_NGV_new["salesmen"][index],
|
||||
'textField_qms107e': data_NGV_new["area_manager"][index],
|
||||
'textField_qc3blb5': data_NGV_new["service_salesmen"][index],
|
||||
'textField_vk0hf2u': data_NGV_new["impl_principal"][index],
|
||||
'textField_3lfom9a': data_NGV_new["service_impl_principal"][index],
|
||||
'textField_1ud1o2l': data_NGV_new["active_user_count"][index],
|
||||
'textField_kpdh7qc': data_NGV_new["active_user_type"][index],
|
||||
'textField_n2y4bmf': data_NGV_new["limit_user_count"][index],
|
||||
'textField_k5o5u2d': data_NGV_new["limit_user_type"][index],
|
||||
'textField_729y7jp': data_NGV_new["is_n"][index],
|
||||
'textField_six7heq': data_NGV_new["is_g"][index],
|
||||
'textField_tipmhx4': data_NGV_new["is_v"][index],
|
||||
'textField_qclt1dm': data_NGV_new["is_visited"][index],
|
||||
'textField_0sk94f9': data_NGV_new["is_active"][index],
|
||||
'textField_bzszf71': data_NGV_new["active_status_fmt"][index],
|
||||
'textField_c061ojt': data_NGV_new["bill_count_last_30_day"][index],
|
||||
'textField_07zkoii': data_NGV_new["bill_day_count_last_30_day"][index],
|
||||
'textField_3vnzvsx': data_NGV_new["bill_day_count_this_month"][index],
|
||||
'textField_3mxwdc4': data_NGV_new["bill_count_last_7_day"][index],
|
||||
'textField_4q3bh5w': data_NGV_new["bill_day_count_last_7_day"][index],
|
||||
'textField_u0rgodd': data_NGV_new["pv_count"][index],
|
||||
'textField_eau5xx6': data_NGV_new["uv_count"][index],
|
||||
'textField_tayz1vv': data_NGV_new["bill_count_1d"][index],
|
||||
'textField_k4b1a7x': data_NGV_new["bill_count_2d"][index],
|
||||
'textField_7lfqnm3': data_NGV_new["bill_count_3d"][index],
|
||||
'textField_g24x9fv': data_NGV_new["bill_count_4d"][index],
|
||||
'textField_0v3pm0r': data_NGV_new["bill_count_5d"][index],
|
||||
'textField_1nxvats': data_NGV_new["bill_count_6d"][index],
|
||||
'textField_vylq7uh': data_NGV_new["bill_count_7d"][index],
|
||||
'textField_0n1zd7o': data_NGV_new["bill_count_8d"][index],
|
||||
'textField_uuatjx7': data_NGV_new["bill_count_9d"][index],
|
||||
'textField_e16m62c': data_NGV_new["bill_count_10d"][index],
|
||||
'textField_anv4rco': data_NGV_new["bill_count_11d"][index],
|
||||
'textField_pz5cg65': data_NGV_new["bill_count_12d"][index],
|
||||
'textField_hamkvor': data_NGV_new["bill_count_13d"][index],
|
||||
'textField_kw9nvef': data_NGV_new["bill_count_14d"][index],
|
||||
'textField_ujbyern': data_NGV_new["bill_count_15d"][index],
|
||||
'textField_uqp3072': data_NGV_new["bill_count_16d"][index],
|
||||
'textField_2qsei19': data_NGV_new["bill_count_17d"][index],
|
||||
'textField_p5x4u8t': data_NGV_new["bill_count_18d"][index],
|
||||
'textField_2lv8ksl': data_NGV_new["bill_count_19d"][index],
|
||||
'textField_unl61g8': data_NGV_new["bill_count_20d"][index],
|
||||
'textField_cvtamin': data_NGV_new["bill_count_21d"][index],
|
||||
'textField_z0hs1c4': data_NGV_new["bill_count_22d"][index],
|
||||
'textField_9jln7lp': data_NGV_new["bill_count_23d"][index],
|
||||
'textField_jlst4j8': data_NGV_new["bill_count_24d"][index],
|
||||
'textField_ct6z2pu': data_NGV_new["bill_count_25d"][index],
|
||||
'textField_6s2qy9p': data_NGV_new["bill_count_26d"][index],
|
||||
'textField_l9lyxnr': data_NGV_new["bill_count_27d"][index],
|
||||
'textField_sz5xht3': data_NGV_new["bill_count_28d"][index],
|
||||
'textField_ccodrkd': data_NGV_new["bill_count_29d"][index],
|
||||
'textField_dy7c14l': data_NGV_new["bill_count_30d"][index],
|
||||
'textField_delij7o': data_NGV_new["bill_count_31d"][index],
|
||||
'dateField_4vp44kc': int(time.mktime(time.strptime(data_NGV_new["etl_time"][index], "%Y-%m-%d %H:%M:%S"))*1000) if data_NGV_new["etl_time"][index] !='' else '',
|
||||
'textField_0d97bpy': data_NGV_new["maintain_bill_count_last_30_day"][index],
|
||||
'textField_3nbi33y': data_NGV_new["washing_bill_count_last_30_day"][index],
|
||||
'textField_17yhr79': data_NGV_new["maintain_bill_day_count_last_30_day"][index],
|
||||
'textField_e1mrwvb': data_NGV_new["washing_bill_day_count_last_30_day"][index],
|
||||
'textField_8s47o64': data_NGV_new["retail_bill_count_last_30_day"][index],
|
||||
'textField_jr9otam': data_NGV_new["retail_bill_day_count_last_30_day"][index],
|
||||
'textField_mtg1zn1': data_NGV_new["purchase_bill_count_last_30_day"][index],
|
||||
'textField_96ggfjo': data_NGV_new["purchase_bill_day_count_last_30_day"][index],
|
||||
'textField_hk7pe9z': data_NGV_new["card_bill_count_last_30_day"][index],
|
||||
'textField_yj3vbwq': data_NGV_new["card_bill_day_count_last_30_day"][index],
|
||||
'textField_n2hdr45': data_NGV_new["gd_sales_bill_count_last_30_day"][index],
|
||||
'textField_p7xgdah': data_NGV_new["gd_sales_bill_day_count_last_30_day"][index],
|
||||
'textField_7xr2ar8': data_NGV_new["g_change_flag"][index],
|
||||
'textField_gpzxxmk': data_NGV_new["saas_package"][index],
|
||||
'textField_tq9g8in': data_NGV_new["manage_model"][index],
|
||||
'textField_zzchgop': data_NGV_new["contacts"][index],
|
||||
'textField_a2znmfb': data_NGV_new["contact_number"][index],
|
||||
'textField_0sadows': data_NGV_new["contact_mobile"][index],
|
||||
'textField_hz3ujlo': data_NGV_new["g_month_count"][index],
|
||||
'textField_m1gdeaa': data_NGV_new["g_month_percentage"][index],
|
||||
'textField_y7ds4oo': data_NGV_new["is_install_service"][index],
|
||||
'dateField_hiuaj0y': int(time.mktime(time.strptime(data_NGV_new["install_create_time"][index], "%Y-%m-%d %H:%M:%S"))*1000) if data_NGV_new["install_create_time"][index] !='' else '',
|
||||
'dateField_yubgpmy': int(time.mktime(time.strptime(data_NGV_new["last_end_date"][index], "%Y-%m-%d"))*1000) if data_NGV_new["last_end_date"][index] !='' else '',
|
||||
'dateField_8st5q1a': int(time.mktime(time.strptime(data_NGV_new["renew_date"][index], "%Y-%m-%d"))*1000) if data_NGV_new["renew_date"][index] !=''else '',
|
||||
'textField_u8h91r2': data_NGV_new["is_chain_owner"][index],
|
||||
'textField_qzzz8ux': data_NGV_new["group_org_count"][index],
|
||||
'textField_qzjf8mc': data_NGV_new["recent_bill_warning_days"][index],
|
||||
'textField_lvyu7z2': data_NGV_new["g_change_flag_d"][index],
|
||||
'textField_d72wy3d': data_NGV_new["g_lost_warning_days"][index],
|
||||
'textField_11ebiwp': data_NGV_new["saas_edition_fmt"][index],
|
||||
'textField_4yu5vlq': data_NGV_new["g_flag_1m"][index],
|
||||
'textField_8ydk27g': data_NGV_new["g_flag_2m"][index],
|
||||
'textField_ysoij3v': data_NGV_new["g_flag_3m"][index],
|
||||
'textField_a4t6iwp': data_NGV_new["g_flag_4m"][index],
|
||||
'textField_z1xfteb': data_NGV_new["g_flag_5m"][index],
|
||||
'textField_56x8u44': data_NGV_new["g_flag_6m"][index],
|
||||
'textField_zscafbj': data_NGV_new["g_flag_day_count"][index],
|
||||
'textField_4c0rpdd': data_NGV_new["add_org_flag"][index],
|
||||
'textField_14we48g': data_NGV_new["pt"][index],
|
||||
'textField_gukslqe': data_NGV_new["org_size"][index],
|
||||
'textField_y0tw39j': data_NGV_new["qualification_type_fmt"][index],
|
||||
'textField_3euralk': data_NGV_new["business_scope_fmt"][index],
|
||||
'textField_4jji26g': data_NGV_new["store_type_fmt"][index],
|
||||
'textField_z2mrvyk': data_NGV_new["area"][index],
|
||||
'textField_e7qmeix': data_NGV_new["station_number"][index],
|
||||
'textField_x9q5k8p': data_NGV_new["header_type_fmt"][index],
|
||||
'textField_h423ob8': data_NGV_new["org_stage"][index],
|
||||
'textField_w6dk6au': data_NGV_new["g_count_this_month"][index],
|
||||
'textField_67sllhy': data_NGV_new["saas_customer_type"][index]
|
||||
}
|
||||
try:
|
||||
if data_NGV_new["province_name"][index]=="":
|
||||
formData['textField_1q6dt9a'] = "无"
|
||||
else:
|
||||
formData['textField_1q6dt9a'] = data_NGV_new["province_name"][index]
|
||||
except:
|
||||
formData['textField_1q6dt9a'] = "无"
|
||||
try:
|
||||
formData['employeeField_llc00m15'] = ALL_DATA_staff[data_NGV_new["service_impl_principal"][index]] # 运营负责人_成员字段
|
||||
except:
|
||||
formData['employeeField_llc00m15'] = ""
|
||||
try:
|
||||
formData['employeeField_llc00m16'] = ALL_DATA_staff[data_NGV_new["area_manager"][index]] # 区域经理_成员字段
|
||||
except:
|
||||
formData['employeeField_llc00m16'] = ""
|
||||
try:
|
||||
formData['employeeField_lmpsfc04'] = textField_lmps6q39[data_NGV_new["city_name"][index]] # 技术专家_成员字段
|
||||
except:
|
||||
formData['employeeField_lmpsfc04'] = ""
|
||||
|
||||
read_instances_put(TOKEN, res['data'][i]['formInstanceId'],formData)
|
||||
print("更新",res['data'][i]['formInstanceId'],res['data'][i]['formData']['textField_zc1iowp'])
|
||||
except:
|
||||
pass
|
||||
else:
|
||||
# 删除这条数据
|
||||
try:
|
||||
read_delete(TOKEN, res['data'][i]['formInstanceId'])
|
||||
print("删除",res['data'][i]['formInstanceId'],res['data'][i]['formData']['textField_zc1iowp'])
|
||||
except:
|
||||
pass
|
||||
|
||||
@@ -0,0 +1,736 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import psycopg2
|
||||
import pandas as pd
|
||||
# 获得连接
|
||||
conn = psycopg2.connect(database="f6_bi", user="BASIC$ro_caowei", password="!ro_caowei123", host="hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com", port="80")
|
||||
# 获得游标对象,一个游标对象可以对数据库进行执行操作
|
||||
cursor = conn.cursor()
|
||||
|
||||
import datetime
|
||||
now_time = datetime.datetime.now()
|
||||
yes_time = now_time + datetime.timedelta(days=-1)
|
||||
yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前一天日期
|
||||
# sql语句 建表
|
||||
sql =f"""SELECT * FROM "public"."holo_ads_report_saas_profile_ngv_detail_d" WHERE "date_id" = '{yes_time_nyr}';"""
|
||||
# 执行语句
|
||||
cursor.execute(sql)
|
||||
# 获取结果集的每一行
|
||||
rows = cursor.fetchall()
|
||||
# 获取所有字段名
|
||||
all_fields = cursor.description
|
||||
#执行结果转化为dataframe
|
||||
col = []
|
||||
for i in all_fields:
|
||||
col.append(i[0])
|
||||
data_NGV_new = pd.DataFrame(list(rows),columns=col)
|
||||
# data_NGV.to_excel(r'C:\Users\admin\Desktop\NGV明细.xlsx')
|
||||
# 关闭数据库连接
|
||||
cursor.close()
|
||||
conn.close()
|
||||
# 基础函数配置
|
||||
import pandas as pd
|
||||
import pandas as pd
|
||||
import requests
|
||||
from pathlib import Path
|
||||
from urllib.parse import quote
|
||||
import json
|
||||
import numpy as np
|
||||
import time
|
||||
|
||||
ROOT = Path('.').absolute() # 当前工作目录
|
||||
|
||||
def generateToken() -> str:
|
||||
""" 生成 token """
|
||||
|
||||
token_api = 'https://api.dingtalk.com/v1.0/oauth2/accessToken'
|
||||
|
||||
# 该信息在钉钉开放应用中
|
||||
data = {
|
||||
"appKey": "ding5kqocon5s9oph5uq",
|
||||
"appSecret": 'HL1jgsIIfLAC0eTH0A1m4mwxUDqbgsiPeCCGGE3ocM6qJBTIW7Ivt9drxF_Z4Kb_'
|
||||
}
|
||||
|
||||
res = requests.post(token_api, json=data)
|
||||
token = res.json()['accessToken']
|
||||
|
||||
return token
|
||||
|
||||
def read_instances_put(token, formInstanceId,data_new):
|
||||
""" 函数功能:读取普通表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId" : "2268275546837446", # 曹伟 id
|
||||
"language" : "zh_CN",
|
||||
"useLatestVersion" : "false",
|
||||
"formInstanceId" : formInstanceId,
|
||||
"updateFormDataJson" : json.dumps(data_new, cls=NpEncoder)
|
||||
}
|
||||
|
||||
res = requests.put(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
|
||||
def read_instances(token, formUuid, page, n):
|
||||
""" 函数功能:读取普通表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId" : "yida_pub_account",
|
||||
"language" : "zh_CN",
|
||||
"formUuid" : formUuid,
|
||||
"currentPage" : page,
|
||||
"pageSize" : n
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
|
||||
def read_delete(token, formInstanceId):
|
||||
""" 函数功能:调用本接口删除表单数据。 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId" : "yida_pub_account",
|
||||
"language" : "zh_CN",
|
||||
"formInstanceId" : formInstanceId
|
||||
}
|
||||
|
||||
res = requests.delete(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
|
||||
def read_new(FORMID,formData):
|
||||
""" 通过实例id 获取表单内容 """
|
||||
api = f'https://api.dingtalk.com/v1.0/yida/forms/instances'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
payload = {
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"formDataJson" : json.dumps(formData, cls=NpEncoder),
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"language" : "zh_CN",
|
||||
"userId" : "yida_pub_account"
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
print(res.json())
|
||||
|
||||
return res.json()
|
||||
|
||||
|
||||
def component(FORMID,TOKEN):
|
||||
""" 获取组件信息 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/formFields'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
payload = {
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
# "formDataJson" : json.dumps(formData, cls=NpEncoder),
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
# "language" : "zh_CN",
|
||||
"userId" : "yida_pub_account"
|
||||
}
|
||||
|
||||
res = requests.get(api, headers=headers, json=payload)
|
||||
|
||||
return res.json()
|
||||
def Batch_creation(FORMID,TOKEN,ALL_formData):
|
||||
""" 获取组件信息 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchSave'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
payload = {
|
||||
# "formDataJson" : json.dumps(formData, cls=NpEncoder),
|
||||
"noExecuteExpression" : "true",
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"asynchronousExecution" : "false",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"keepRunningAfterException" : "true",
|
||||
"userId" : "yida_pub_account",
|
||||
"formDataJsonList" : json.dumps(ALL_formData, cls=NpEncoder),
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
return res.json()
|
||||
|
||||
def delete_in_batches(FORMID,TOKEN,ALL_DATA_instance):
|
||||
""" 批量删除表单实例 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchRemove'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
|
||||
payload = {
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"asynchronousExecution" : "false",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"formInstanceIdList" : json.dumps(ALL_DATA_instance, cls=NpEncoder),
|
||||
"userId" : "yida_pub_account",
|
||||
"executeExpression" : "false" # 不触发
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
return res.json()
|
||||
|
||||
def delete_in(TOKEN,formInstanceIdList):
|
||||
""" 逐条删除表单实例 """
|
||||
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}'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
res = requests.delete(api, headers=headers)
|
||||
return res.json()
|
||||
|
||||
def read_form_instances(token, formUuid, page=1, n=100, searchField={},createFromTimeGMT='',createToTimeGMT=''):
|
||||
""" 函数功能:读取普通表单的所有数据 -- 应用:F6客户服务 """
|
||||
|
||||
api = f'https://api.dingtalk.com/v1.0/yida/forms/instances/search'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
'currentPage': page,
|
||||
'pageSize': n,
|
||||
"appType": "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken": "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId": "yida_pub_account",
|
||||
"language": "zh_CN",
|
||||
"formUuid": formUuid,
|
||||
'createFromTimeGMT':createFromTimeGMT,
|
||||
'createToTimeGMT':createToTimeGMT,
|
||||
"searchFieldJson": json.dumps(searchField)
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
|
||||
def create_form_instances(token, formUuid, formData={}):
|
||||
""" 函数功能:创建普通表单实例 -- 应用:F6客户服务 """
|
||||
|
||||
api = 'https://api.dingtalk.com/v1.0/yida/forms/instances'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
payload = {
|
||||
"appType": "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken": "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId": "yida_pub_account",
|
||||
"language": "zh_CN",
|
||||
"formUuid": formUuid,
|
||||
"formDataJson": json.dumps(formData)
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
return res
|
||||
def read_instances_1108(token, formUuid, page, n,formatted_today,formatted_today_two):
|
||||
""" 函数功能:读取普通表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId" : "yida_pub_account",
|
||||
"language" : "zh_CN",
|
||||
"formUuid" : formUuid,
|
||||
"createFromTimeGMT" : formatted_today,
|
||||
"createToTimeGMT" : formatted_today_two,
|
||||
"currentPage" : page,
|
||||
"pageSize" : n
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
class NpEncoder(json.JSONEncoder):
|
||||
def default(self, obj):
|
||||
if isinstance(obj, np.integer):
|
||||
return int(obj)
|
||||
elif isinstance(obj, np.floating):
|
||||
return float(obj)
|
||||
elif isinstance(obj, np.ndarray):
|
||||
return obj.tolist()
|
||||
else:
|
||||
return super(NpEncoder, self).default(obj)
|
||||
TOKEN = generateToken()
|
||||
'''读取员工对应关系:宜搭员工-ID对应表 '''
|
||||
FORMID = "FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6" # 宜搭员工-ID对应表 FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6
|
||||
# 读取流程表单数据
|
||||
form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)
|
||||
PAGES = form_data.get('totalCount')//100 + 1
|
||||
ALL_DATA_staff = {}
|
||||
""" 获取全量数据 """
|
||||
for i in range(1, PAGES+1):
|
||||
# form_data = read_processes_instances(token=TOKEN, formUuid=FORMID, createFromTimeGMT=CREATE_FROM, createToTimeGMT=CREATE_TO, page=i, n=100, searchField={'textField_l7if5ff9': '否'})
|
||||
form_data = read_instances(token=TOKEN, formUuid=FORMID, page=i, n=100)
|
||||
for data in form_data.get('data'):
|
||||
ALL_DATA_staff[data['formData']['textField_lfrw3u58']]=data['formData']['textField_lfrw3u59']
|
||||
|
||||
'''获取表内控件信息 '''
|
||||
# FORMID = "FORM-ZK866D91O9LA4NIHCARG2DPIPCXF3Z087PPHL91"
|
||||
# component_list = component(FORMID,TOKEN)
|
||||
# for i in range(len(component_list['result'])):
|
||||
# componentName = component_list['result'][i]['componentName']
|
||||
# name_value = component_list['result'][i]['label']['value']
|
||||
# fieldId = component_list['result'][i]['fieldId']
|
||||
# print("'",fieldId,"':","data_NGV[",name_value,"][i],")
|
||||
|
||||
'''读取市-技术专家id '''
|
||||
FORMID = "FORM-A8666NA1FJDEVPBB6VVTOCMP47UP2J2L6SPML2" #市-技术专家id
|
||||
# 读取流程表单数据
|
||||
form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)
|
||||
PAGES = form_data.get('totalCount')//100 + 1
|
||||
textField_lmps6q39 = {}
|
||||
""" 获取全量数据 """
|
||||
for i in range(1, PAGES+1):
|
||||
# form_data = read_processes_instances(token=TOKEN, formUuid=FORMID, createFromTimeGMT=CREATE_FROM, createToTimeGMT=CREATE_TO, page=i, n=100, searchField={'textField_l7if5ff9': '否'})
|
||||
form_data = read_instances(token=TOKEN, formUuid=FORMID, page=i, n=100)
|
||||
for data in form_data.get('data'):
|
||||
textField_lmps6q39[data['formData']['textField_lmps6q38']]=data['formData']['textField_lmps6q39'] #技术专家id
|
||||
print(f'读取到市-技术专家id表单中 {len(textField_lmps6q39)} 条数据!')
|
||||
|
||||
NAME_LIST = ["无","江苏省","河南省","浙江省","陕西省","河北省","山东省","辽宁省","湖南省","四川省","广东省","上海市","贵州省","云南省","安徽省","湖北省","重庆市","新疆维吾尔自治区","内蒙古自治区","北京市","天津市","山西省","甘肃省","福建省","吉林省","广西壮族自治区","黑龙江省","江西省","宁夏回族自治区","青海省","海南省","西藏自治区","中华人民共和国","香港特别行政区"]
|
||||
data_new = {}
|
||||
FormDatas = []
|
||||
# 1.读取普通表单数据
|
||||
for name in NAME_LIST:
|
||||
searchField={'textField_1q6dt9a':name}
|
||||
res = read_form_instances(token=TOKEN, formUuid='FORM-ZK866D91O9LA4NIHCARG2DPIPCXF3Z087PPHL91',searchField=searchField)
|
||||
totalCount = res.get('totalCount')
|
||||
if totalCount>5000:
|
||||
# 创建一个异常提醒
|
||||
create_form_instances(token=TOKEN,formUuid='FORM-5Q966D91S1B8C9PP76L2O5BS9C2L3TXQ4JGELZ',formData={'textField_legj59bj':'NGV数据同步读取数据超过5000异常提醒。'})
|
||||
break
|
||||
else:
|
||||
PAGES = totalCount//100 + 1
|
||||
for page in range(1,PAGES+1):
|
||||
# print(name,page)
|
||||
res = read_form_instances(token=TOKEN, formUuid='FORM-ZK866D91O9LA4NIHCARG2DPIPCXF3Z087PPHL91',searchField=searchField,page=page,n=100)
|
||||
FormDatas.extend(res.get('data'))
|
||||
for v in range(0,len(FormDatas)):
|
||||
data_new[FormDatas[v]['formData']['textField_zc1iowp']] = FormDatas[v]['formInstanceId']
|
||||
print(f"表单数据共{len(data_new)}条!") #耗时7分钟左右
|
||||
|
||||
data_new
|
||||
# 将字典转换为DataFrame
|
||||
df_data_new = pd.DataFrame(list(data_new.items()), columns=['org_code', 'Value'])
|
||||
df_data_new
|
||||
|
||||
# 使用isin方法筛选出A表中id_own_org字段不在B表中的行
|
||||
c_data = data_NGV_new[~data_NGV_new['org_code'].isin(df_data_new['org_code'])]
|
||||
# 输出C表内容
|
||||
c_data = c_data.reset_index()
|
||||
data_NGV = c_data.copy()
|
||||
|
||||
try:
|
||||
alen_ong = []
|
||||
for c in range(0,len(data_NGV["date_fmt"])):
|
||||
searchField={'textField_zc1iowp':data_NGV["org_code"][c]}
|
||||
res = read_form_instances(token=TOKEN, formUuid='FORM-ZK866D91O9LA4NIHCARG2DPIPCXF3Z087PPHL91',searchField=searchField)
|
||||
totalCount = res.get('totalCount')
|
||||
if totalCount > 0:
|
||||
alen_ong.extend(str(c))
|
||||
print(f"表单数据{totalCount}条!",data_NGV["org_code"][c])
|
||||
if len(alen_ong) > 0:
|
||||
for d in range(0,len(alen_ong)):
|
||||
data_NGV = data_NGV.drop(int(alen_ong[d]))
|
||||
except:
|
||||
print("data_NGV:",len(data_NGV))
|
||||
data_NGV.reset_index(drop=True, inplace=True)
|
||||
|
||||
'''遍历数据进行新建'''
|
||||
data_NGV = data_NGV.astype('string')
|
||||
data_NGV = data_NGV.fillna('',inplace=False)
|
||||
for a in range(0,len(data_NGV["date_fmt"]),100):
|
||||
ALL_formData = []
|
||||
for i in range(a,a+100): # for i in range(len(data_NGV["date_fmt"])):
|
||||
try:
|
||||
formData = {
|
||||
'textField_nnyw1ge': data_NGV["date_id"][i],
|
||||
'dateField_e9jt02o': int(time.mktime(time.strptime(data_NGV["date_fmt"][i], "%Y-%m-%d"))*1000) if data_NGV["date_fmt"][i] !='' else '',
|
||||
'textField_ek9jnne': data_NGV["id_own_group"][i],
|
||||
'textField_35i6110': data_NGV["group_name"][i],
|
||||
'textField_l8nc9f2': data_NGV["id_own_org"][i],
|
||||
'textField_tdn6hsy': data_NGV["org_name"][i],
|
||||
'textField_zc1iowp': data_NGV["org_code"][i],
|
||||
'textField_2rulk5e': data_NGV["group_grade"][i],
|
||||
'textField_c54tztg': data_NGV["org_type"][i],
|
||||
'textField_qrtnel7': data_NGV["org_status"][i],
|
||||
'textField_7xgxe9g': data_NGV["saas_version"][i],
|
||||
'textField_pnig1i1': data_NGV["is_wechat"][i],
|
||||
'textField_qiovtdj': data_NGV["is_mini_app"][i],
|
||||
'textField_i0h0iqa': data_NGV["is_wx_shop"][i],
|
||||
'textField_qczj9vq': data_NGV["is_camera_service"][i],
|
||||
'textField_jouovty': data_NGV["is_maintenance_service"][i],
|
||||
'dateField_o1v1emn': int(time.mktime(time.strptime(data_NGV["saas_create_time"][i], "%Y-%m-%d %H:%M:%S"))*1000) if data_NGV["saas_create_time"][i] !='' else '',
|
||||
'dateField_6zdcfnf': int(time.mktime(time.strptime(data_NGV["expiry_time"][i], "%Y-%m-%d %H:%M:%S"))*1000) if data_NGV["expiry_time"][i] !='' else '',
|
||||
'textField_8uae70x': data_NGV["saas_use_days"][i],
|
||||
'textField_cjkvqpn': data_NGV["saas_use_year"][i],
|
||||
'textField_yhtmsxx': data_NGV["is_main_org"][i],
|
||||
'textField_gfigtpn': data_NGV["license_code"][i],
|
||||
'textField_662foev': data_NGV["license_name"][i],
|
||||
'textField_lco27te': data_NGV["org_crm_id"][i],
|
||||
'textField_1tygbmq': data_NGV["province_id"][i],
|
||||
'textField_z2rntja': data_NGV["city_id"][i],
|
||||
'textField_ohybc2g': data_NGV["city_name"][i],
|
||||
'textField_9oupoal': data_NGV["area_id"][i],
|
||||
'textField_m0rzgwb': data_NGV["area_name"][i],
|
||||
'textField_69po7o9': data_NGV["region_name"][i],
|
||||
'textField_vqxr0d9': data_NGV["region_short_name"][i],
|
||||
'textField_5wr3tj9': data_NGV["branch_name"][i],
|
||||
'textField_6hz7i81': data_NGV["carzone_store_id"][i],
|
||||
'textField_86wu9qm': data_NGV["carzone_store_name"][i],
|
||||
'textField_129quhy': data_NGV["customer_carzone_id"][i],
|
||||
'textField_j7i4mhn': data_NGV["salesmen"][i],
|
||||
'textField_qms107e': data_NGV["area_manager"][i],
|
||||
'textField_qc3blb5': data_NGV["service_salesmen"][i],
|
||||
'textField_vk0hf2u': data_NGV["impl_principal"][i],
|
||||
'textField_3lfom9a': data_NGV["service_impl_principal"][i],
|
||||
'textField_1ud1o2l': data_NGV["active_user_count"][i],
|
||||
'textField_kpdh7qc': data_NGV["active_user_type"][i],
|
||||
'textField_n2y4bmf': data_NGV["limit_user_count"][i],
|
||||
'textField_k5o5u2d': data_NGV["limit_user_type"][i],
|
||||
'textField_729y7jp': data_NGV["is_n"][i],
|
||||
'textField_six7heq': data_NGV["is_g"][i],
|
||||
'textField_tipmhx4': data_NGV["is_v"][i],
|
||||
'textField_qclt1dm': data_NGV["is_visited"][i],
|
||||
'textField_0sk94f9': data_NGV["is_active"][i],
|
||||
'textField_bzszf71': data_NGV["active_status_fmt"][i],
|
||||
'textField_c061ojt': data_NGV["bill_count_last_30_day"][i],
|
||||
'textField_07zkoii': data_NGV["bill_day_count_last_30_day"][i],
|
||||
'textField_3vnzvsx': data_NGV["bill_day_count_this_month"][i],
|
||||
'textField_3mxwdc4': data_NGV["bill_count_last_7_day"][i],
|
||||
'textField_4q3bh5w': data_NGV["bill_day_count_last_7_day"][i],
|
||||
'textField_u0rgodd': data_NGV["pv_count"][i],
|
||||
'textField_eau5xx6': data_NGV["uv_count"][i],
|
||||
'textField_tayz1vv': data_NGV["bill_count_1d"][i],
|
||||
'textField_k4b1a7x': data_NGV["bill_count_2d"][i],
|
||||
'textField_7lfqnm3': data_NGV["bill_count_3d"][i],
|
||||
'textField_g24x9fv': data_NGV["bill_count_4d"][i],
|
||||
'textField_0v3pm0r': data_NGV["bill_count_5d"][i],
|
||||
'textField_1nxvats': data_NGV["bill_count_6d"][i],
|
||||
'textField_vylq7uh': data_NGV["bill_count_7d"][i],
|
||||
'textField_0n1zd7o': data_NGV["bill_count_8d"][i],
|
||||
'textField_uuatjx7': data_NGV["bill_count_9d"][i],
|
||||
'textField_e16m62c': data_NGV["bill_count_10d"][i],
|
||||
'textField_anv4rco': data_NGV["bill_count_11d"][i],
|
||||
'textField_pz5cg65': data_NGV["bill_count_12d"][i],
|
||||
'textField_hamkvor': data_NGV["bill_count_13d"][i],
|
||||
'textField_kw9nvef': data_NGV["bill_count_14d"][i],
|
||||
'textField_ujbyern': data_NGV["bill_count_15d"][i],
|
||||
'textField_uqp3072': data_NGV["bill_count_16d"][i],
|
||||
'textField_2qsei19': data_NGV["bill_count_17d"][i],
|
||||
'textField_p5x4u8t': data_NGV["bill_count_18d"][i],
|
||||
'textField_2lv8ksl': data_NGV["bill_count_19d"][i],
|
||||
'textField_unl61g8': data_NGV["bill_count_20d"][i],
|
||||
'textField_cvtamin': data_NGV["bill_count_21d"][i],
|
||||
'textField_z0hs1c4': data_NGV["bill_count_22d"][i],
|
||||
'textField_9jln7lp': data_NGV["bill_count_23d"][i],
|
||||
'textField_jlst4j8': data_NGV["bill_count_24d"][i],
|
||||
'textField_ct6z2pu': data_NGV["bill_count_25d"][i],
|
||||
'textField_6s2qy9p': data_NGV["bill_count_26d"][i],
|
||||
'textField_l9lyxnr': data_NGV["bill_count_27d"][i],
|
||||
'textField_sz5xht3': data_NGV["bill_count_28d"][i],
|
||||
'textField_ccodrkd': data_NGV["bill_count_29d"][i],
|
||||
'textField_dy7c14l': data_NGV["bill_count_30d"][i],
|
||||
'textField_delij7o': data_NGV["bill_count_31d"][i],
|
||||
'dateField_4vp44kc': int(time.mktime(time.strptime(data_NGV["etl_time"][i], "%Y-%m-%d %H:%M:%S"))*1000) if data_NGV["etl_time"][i] !='' else '',
|
||||
'textField_0d97bpy': data_NGV["maintain_bill_count_last_30_day"][i],
|
||||
'textField_3nbi33y': data_NGV["washing_bill_count_last_30_day"][i],
|
||||
'textField_17yhr79': data_NGV["maintain_bill_day_count_last_30_day"][i],
|
||||
'textField_e1mrwvb': data_NGV["washing_bill_day_count_last_30_day"][i],
|
||||
'textField_8s47o64': data_NGV["retail_bill_count_last_30_day"][i],
|
||||
'textField_jr9otam': data_NGV["retail_bill_day_count_last_30_day"][i],
|
||||
'textField_mtg1zn1': data_NGV["purchase_bill_count_last_30_day"][i],
|
||||
'textField_96ggfjo': data_NGV["purchase_bill_day_count_last_30_day"][i],
|
||||
'textField_hk7pe9z': data_NGV["card_bill_count_last_30_day"][i],
|
||||
'textField_yj3vbwq': data_NGV["card_bill_day_count_last_30_day"][i],
|
||||
'textField_n2hdr45': data_NGV["gd_sales_bill_count_last_30_day"][i],
|
||||
'textField_p7xgdah': data_NGV["gd_sales_bill_day_count_last_30_day"][i],
|
||||
'textField_7xr2ar8': data_NGV["g_change_flag"][i],
|
||||
'textField_gpzxxmk': data_NGV["saas_package"][i],
|
||||
'textField_tq9g8in': data_NGV["manage_model"][i],
|
||||
'textField_zzchgop': data_NGV["contacts"][i],
|
||||
'textField_a2znmfb': data_NGV["contact_number"][i],
|
||||
'textField_0sadows': data_NGV["contact_mobile"][i],
|
||||
'textField_hz3ujlo': data_NGV["g_month_count"][i],
|
||||
'textField_m1gdeaa': data_NGV["g_month_percentage"][i],
|
||||
'textField_y7ds4oo': data_NGV["is_install_service"][i],
|
||||
'dateField_hiuaj0y': int(time.mktime(time.strptime(data_NGV["install_create_time"][i], "%Y-%m-%d %H:%M:%S"))*1000) if data_NGV["install_create_time"][i] !='' else '',
|
||||
'dateField_yubgpmy': int(time.mktime(time.strptime(data_NGV["last_end_date"][i], "%Y-%m-%d"))*1000) if data_NGV["last_end_date"][i] !='' else '',
|
||||
'dateField_8st5q1a': int(time.mktime(time.strptime(data_NGV["renew_date"][i], "%Y-%m-%d"))*1000) if data_NGV["renew_date"][i] !=''else '',
|
||||
'textField_u8h91r2': data_NGV["is_chain_owner"][i],
|
||||
'textField_qzzz8ux': data_NGV["group_org_count"][i],
|
||||
'textField_qzjf8mc': data_NGV["recent_bill_warning_days"][i],
|
||||
'textField_lvyu7z2': data_NGV["g_change_flag_d"][i],
|
||||
'textField_d72wy3d': data_NGV["g_lost_warning_days"][i],
|
||||
'textField_11ebiwp': data_NGV["saas_edition_fmt"][i],
|
||||
'textField_4yu5vlq': data_NGV["g_flag_1m"][i],
|
||||
'textField_8ydk27g': data_NGV["g_flag_2m"][i],
|
||||
'textField_ysoij3v': data_NGV["g_flag_3m"][i],
|
||||
'textField_a4t6iwp': data_NGV["g_flag_4m"][i],
|
||||
'textField_z1xfteb': data_NGV["g_flag_5m"][i],
|
||||
'textField_56x8u44': data_NGV["g_flag_6m"][i],
|
||||
'textField_zscafbj': data_NGV["g_flag_day_count"][i],
|
||||
'textField_4c0rpdd': data_NGV["add_org_flag"][i],
|
||||
'textField_14we48g': data_NGV["pt"][i],
|
||||
'textField_gukslqe': data_NGV["org_size"][i],
|
||||
'textField_y0tw39j': data_NGV["qualification_type_fmt"][i],
|
||||
'textField_3euralk': data_NGV["business_scope_fmt"][i],
|
||||
'textField_4jji26g': data_NGV["store_type_fmt"][i],
|
||||
'textField_z2mrvyk': data_NGV["area"][i],
|
||||
'textField_e7qmeix': data_NGV["station_number"][i],
|
||||
'textField_x9q5k8p': data_NGV["header_type_fmt"][i],
|
||||
'textField_h423ob8': data_NGV["org_stage"][i],
|
||||
'textField_w6dk6au': data_NGV["g_count_this_month"][i],
|
||||
'textField_67sllhy': data_NGV["saas_customer_type"][i]
|
||||
}
|
||||
try:
|
||||
if data_NGV["province_name"][i]=="":
|
||||
formData['textField_1q6dt9a'] = "无"
|
||||
else:
|
||||
formData['textField_1q6dt9a'] = data_NGV["province_name"][i]
|
||||
except:
|
||||
formData['textField_1q6dt9a'] = "无"
|
||||
try:
|
||||
formData['employeeField_llc00m15'] = ALL_DATA_staff[data_NGV["service_impl_principal"][i]] # 运营负责人_成员字段
|
||||
except:
|
||||
formData['employeeField_llc00m15'] = ""
|
||||
try:
|
||||
formData['employeeField_llc00m16'] = ALL_DATA_staff[data_NGV["area_manager"][i]] # 区域经理_成员字段
|
||||
except:
|
||||
formData['employeeField_llc00m16'] = ""
|
||||
try:
|
||||
formData['employeeField_lmpsfc04'] = textField_lmps6q39[data_NGV["city_name"][i]] # 技术专家_成员字段
|
||||
except:
|
||||
formData['employeeField_lmpsfc04'] = ""
|
||||
|
||||
ALL_formData.append(json.dumps(formData, cls=NpEncoder))
|
||||
except:
|
||||
pass
|
||||
FORMID = "FORM-ZK866D91O9LA4NIHCARG2DPIPCXF3Z087PPHL91"
|
||||
res_new = Batch_creation(FORMID,TOKEN,ALL_formData)
|
||||
print("新建第",i,"条数据!")
|
||||
|
||||
|
||||
'''遍历数据进行更新'''
|
||||
data_NGV_new = data_NGV_new.astype('string')
|
||||
data_NGV_new = data_NGV_new.fillna('',inplace=False)
|
||||
for a in range(0,len(data_NGV_new["date_fmt"]),100):
|
||||
for i in range(a,a+100): # for i in range(len(data_NGV_new["date_fmt"])):
|
||||
try:
|
||||
formData = {
|
||||
'textField_nnyw1ge': data_NGV_new["date_id"][i],
|
||||
'dateField_e9jt02o': int(time.mktime(time.strptime(data_NGV_new["date_fmt"][i], "%Y-%m-%d"))*1000) if data_NGV_new["date_fmt"][i] !='' else '',
|
||||
'textField_ek9jnne': data_NGV_new["id_own_group"][i],
|
||||
'textField_35i6110': data_NGV_new["group_name"][i],
|
||||
'textField_l8nc9f2': data_NGV_new["id_own_org"][i],
|
||||
'textField_tdn6hsy': data_NGV_new["org_name"][i],
|
||||
'textField_zc1iowp': data_NGV_new["org_code"][i],
|
||||
'textField_2rulk5e': data_NGV_new["group_grade"][i],
|
||||
'textField_c54tztg': data_NGV_new["org_type"][i],
|
||||
'textField_qrtnel7': data_NGV_new["org_status"][i],
|
||||
'textField_7xgxe9g': data_NGV_new["saas_version"][i],
|
||||
'textField_pnig1i1': data_NGV_new["is_wechat"][i],
|
||||
'textField_qiovtdj': data_NGV_new["is_mini_app"][i],
|
||||
'textField_i0h0iqa': data_NGV_new["is_wx_shop"][i],
|
||||
'textField_qczj9vq': data_NGV_new["is_camera_service"][i],
|
||||
'textField_jouovty': data_NGV_new["is_maintenance_service"][i],
|
||||
'dateField_o1v1emn': int(time.mktime(time.strptime(data_NGV_new["saas_create_time"][i], "%Y-%m-%d %H:%M:%S"))*1000) if data_NGV_new["saas_create_time"][i] !='' else '',
|
||||
'dateField_6zdcfnf': int(time.mktime(time.strptime(data_NGV_new["expiry_time"][i], "%Y-%m-%d %H:%M:%S"))*1000) if data_NGV_new["expiry_time"][i] !='' else '',
|
||||
'textField_8uae70x': data_NGV_new["saas_use_days"][i],
|
||||
'textField_cjkvqpn': data_NGV_new["saas_use_year"][i],
|
||||
'textField_yhtmsxx': data_NGV_new["is_main_org"][i],
|
||||
'textField_gfigtpn': data_NGV_new["license_code"][i],
|
||||
'textField_662foev': data_NGV_new["license_name"][i],
|
||||
'textField_lco27te': data_NGV_new["org_crm_id"][i],
|
||||
'textField_1tygbmq': data_NGV_new["province_id"][i],
|
||||
'textField_z2rntja': data_NGV_new["city_id"][i],
|
||||
'textField_ohybc2g': data_NGV_new["city_name"][i],
|
||||
'textField_9oupoal': data_NGV_new["area_id"][i],
|
||||
'textField_m0rzgwb': data_NGV_new["area_name"][i],
|
||||
'textField_69po7o9': data_NGV_new["region_name"][i],
|
||||
'textField_vqxr0d9': data_NGV_new["region_short_name"][i],
|
||||
'textField_5wr3tj9': data_NGV_new["branch_name"][i],
|
||||
'textField_6hz7i81': data_NGV_new["carzone_store_id"][i],
|
||||
'textField_86wu9qm': data_NGV_new["carzone_store_name"][i],
|
||||
'textField_129quhy': data_NGV_new["customer_carzone_id"][i],
|
||||
'textField_j7i4mhn': data_NGV_new["salesmen"][i],
|
||||
'textField_qms107e': data_NGV_new["area_manager"][i],
|
||||
'textField_qc3blb5': data_NGV_new["service_salesmen"][i],
|
||||
'textField_vk0hf2u': data_NGV_new["impl_principal"][i],
|
||||
'textField_3lfom9a': data_NGV_new["service_impl_principal"][i],
|
||||
'textField_1ud1o2l': data_NGV_new["active_user_count"][i],
|
||||
'textField_kpdh7qc': data_NGV_new["active_user_type"][i],
|
||||
'textField_n2y4bmf': data_NGV_new["limit_user_count"][i],
|
||||
'textField_k5o5u2d': data_NGV_new["limit_user_type"][i],
|
||||
'textField_729y7jp': data_NGV_new["is_n"][i],
|
||||
'textField_six7heq': data_NGV_new["is_g"][i],
|
||||
'textField_tipmhx4': data_NGV_new["is_v"][i],
|
||||
'textField_qclt1dm': data_NGV_new["is_visited"][i],
|
||||
'textField_0sk94f9': data_NGV_new["is_active"][i],
|
||||
'textField_bzszf71': data_NGV_new["active_status_fmt"][i],
|
||||
'textField_c061ojt': data_NGV_new["bill_count_last_30_day"][i],
|
||||
'textField_07zkoii': data_NGV_new["bill_day_count_last_30_day"][i],
|
||||
'textField_3vnzvsx': data_NGV_new["bill_day_count_this_month"][i],
|
||||
'textField_3mxwdc4': data_NGV_new["bill_count_last_7_day"][i],
|
||||
'textField_4q3bh5w': data_NGV_new["bill_day_count_last_7_day"][i],
|
||||
'textField_u0rgodd': data_NGV_new["pv_count"][i],
|
||||
'textField_eau5xx6': data_NGV_new["uv_count"][i],
|
||||
'textField_tayz1vv': data_NGV_new["bill_count_1d"][i],
|
||||
'textField_k4b1a7x': data_NGV_new["bill_count_2d"][i],
|
||||
'textField_7lfqnm3': data_NGV_new["bill_count_3d"][i],
|
||||
'textField_g24x9fv': data_NGV_new["bill_count_4d"][i],
|
||||
'textField_0v3pm0r': data_NGV_new["bill_count_5d"][i],
|
||||
'textField_1nxvats': data_NGV_new["bill_count_6d"][i],
|
||||
'textField_vylq7uh': data_NGV_new["bill_count_7d"][i],
|
||||
'textField_0n1zd7o': data_NGV_new["bill_count_8d"][i],
|
||||
'textField_uuatjx7': data_NGV_new["bill_count_9d"][i],
|
||||
'textField_e16m62c': data_NGV_new["bill_count_10d"][i],
|
||||
'textField_anv4rco': data_NGV_new["bill_count_11d"][i],
|
||||
'textField_pz5cg65': data_NGV_new["bill_count_12d"][i],
|
||||
'textField_hamkvor': data_NGV_new["bill_count_13d"][i],
|
||||
'textField_kw9nvef': data_NGV_new["bill_count_14d"][i],
|
||||
'textField_ujbyern': data_NGV_new["bill_count_15d"][i],
|
||||
'textField_uqp3072': data_NGV_new["bill_count_16d"][i],
|
||||
'textField_2qsei19': data_NGV_new["bill_count_17d"][i],
|
||||
'textField_p5x4u8t': data_NGV_new["bill_count_18d"][i],
|
||||
'textField_2lv8ksl': data_NGV_new["bill_count_19d"][i],
|
||||
'textField_unl61g8': data_NGV_new["bill_count_20d"][i],
|
||||
'textField_cvtamin': data_NGV_new["bill_count_21d"][i],
|
||||
'textField_z0hs1c4': data_NGV_new["bill_count_22d"][i],
|
||||
'textField_9jln7lp': data_NGV_new["bill_count_23d"][i],
|
||||
'textField_jlst4j8': data_NGV_new["bill_count_24d"][i],
|
||||
'textField_ct6z2pu': data_NGV_new["bill_count_25d"][i],
|
||||
'textField_6s2qy9p': data_NGV_new["bill_count_26d"][i],
|
||||
'textField_l9lyxnr': data_NGV_new["bill_count_27d"][i],
|
||||
'textField_sz5xht3': data_NGV_new["bill_count_28d"][i],
|
||||
'textField_ccodrkd': data_NGV_new["bill_count_29d"][i],
|
||||
'textField_dy7c14l': data_NGV_new["bill_count_30d"][i],
|
||||
'textField_delij7o': data_NGV_new["bill_count_31d"][i],
|
||||
'dateField_4vp44kc': int(time.mktime(time.strptime(data_NGV_new["etl_time"][i], "%Y-%m-%d %H:%M:%S"))*1000) if data_NGV_new["etl_time"][i] !='' else '',
|
||||
'textField_0d97bpy': data_NGV_new["maintain_bill_count_last_30_day"][i],
|
||||
'textField_3nbi33y': data_NGV_new["washing_bill_count_last_30_day"][i],
|
||||
'textField_17yhr79': data_NGV_new["maintain_bill_day_count_last_30_day"][i],
|
||||
'textField_e1mrwvb': data_NGV_new["washing_bill_day_count_last_30_day"][i],
|
||||
'textField_8s47o64': data_NGV_new["retail_bill_count_last_30_day"][i],
|
||||
'textField_jr9otam': data_NGV_new["retail_bill_day_count_last_30_day"][i],
|
||||
'textField_mtg1zn1': data_NGV_new["purchase_bill_count_last_30_day"][i],
|
||||
'textField_96ggfjo': data_NGV_new["purchase_bill_day_count_last_30_day"][i],
|
||||
'textField_hk7pe9z': data_NGV_new["card_bill_count_last_30_day"][i],
|
||||
'textField_yj3vbwq': data_NGV_new["card_bill_day_count_last_30_day"][i],
|
||||
'textField_n2hdr45': data_NGV_new["gd_sales_bill_count_last_30_day"][i],
|
||||
'textField_p7xgdah': data_NGV_new["gd_sales_bill_day_count_last_30_day"][i],
|
||||
'textField_7xr2ar8': data_NGV_new["g_change_flag"][i],
|
||||
'textField_gpzxxmk': data_NGV_new["saas_package"][i],
|
||||
'textField_tq9g8in': data_NGV_new["manage_model"][i],
|
||||
'textField_zzchgop': data_NGV_new["contacts"][i],
|
||||
'textField_a2znmfb': data_NGV_new["contact_number"][i],
|
||||
'textField_0sadows': data_NGV_new["contact_mobile"][i],
|
||||
'textField_hz3ujlo': data_NGV_new["g_month_count"][i],
|
||||
'textField_m1gdeaa': data_NGV_new["g_month_percentage"][i],
|
||||
'textField_y7ds4oo': data_NGV_new["is_install_service"][i],
|
||||
'dateField_hiuaj0y': int(time.mktime(time.strptime(data_NGV_new["install_create_time"][i], "%Y-%m-%d %H:%M:%S"))*1000) if data_NGV_new["install_create_time"][i] !='' else '',
|
||||
'dateField_yubgpmy': int(time.mktime(time.strptime(data_NGV_new["last_end_date"][i], "%Y-%m-%d"))*1000) if data_NGV_new["last_end_date"][i] !='' else '',
|
||||
'dateField_8st5q1a': int(time.mktime(time.strptime(data_NGV_new["renew_date"][i], "%Y-%m-%d"))*1000) if data_NGV_new["renew_date"][i] !=''else '',
|
||||
'textField_u8h91r2': data_NGV_new["is_chain_owner"][i],
|
||||
'textField_qzzz8ux': data_NGV_new["group_org_count"][i],
|
||||
'textField_qzjf8mc': data_NGV_new["recent_bill_warning_days"][i],
|
||||
'textField_lvyu7z2': data_NGV_new["g_change_flag_d"][i],
|
||||
'textField_d72wy3d': data_NGV_new["g_lost_warning_days"][i],
|
||||
'textField_11ebiwp': data_NGV_new["saas_edition_fmt"][i],
|
||||
'textField_4yu5vlq': data_NGV_new["g_flag_1m"][i],
|
||||
'textField_8ydk27g': data_NGV_new["g_flag_2m"][i],
|
||||
'textField_ysoij3v': data_NGV_new["g_flag_3m"][i],
|
||||
'textField_a4t6iwp': data_NGV_new["g_flag_4m"][i],
|
||||
'textField_z1xfteb': data_NGV_new["g_flag_5m"][i],
|
||||
'textField_56x8u44': data_NGV_new["g_flag_6m"][i],
|
||||
'textField_zscafbj': data_NGV_new["g_flag_day_count"][i],
|
||||
'textField_4c0rpdd': data_NGV_new["add_org_flag"][i],
|
||||
'textField_14we48g': data_NGV_new["pt"][i],
|
||||
'textField_gukslqe': data_NGV_new["org_size"][i],
|
||||
'textField_y0tw39j': data_NGV_new["qualification_type_fmt"][i],
|
||||
'textField_3euralk': data_NGV_new["business_scope_fmt"][i],
|
||||
'textField_4jji26g': data_NGV_new["store_type_fmt"][i],
|
||||
'textField_z2mrvyk': data_NGV_new["area"][i],
|
||||
'textField_e7qmeix': data_NGV_new["station_number"][i],
|
||||
'textField_x9q5k8p': data_NGV_new["header_type_fmt"][i],
|
||||
'textField_h423ob8': data_NGV_new["org_stage"][i],
|
||||
'textField_w6dk6au': data_NGV_new["g_count_this_month"][i],
|
||||
'textField_67sllhy': data_NGV_new["saas_customer_type"][i]
|
||||
}
|
||||
try:
|
||||
if data_NGV_new["province_name"][i]=="":
|
||||
formData['textField_1q6dt9a'] = "无"
|
||||
else:
|
||||
formData['textField_1q6dt9a'] = data_NGV_new["province_name"][i]
|
||||
except:
|
||||
formData['textField_1q6dt9a'] = "无"
|
||||
try:
|
||||
formData['employeeField_llc00m15'] = ALL_DATA_staff[data_NGV_new["service_impl_principal"][i]] # 运营负责人_成员字段
|
||||
except:
|
||||
formData['employeeField_llc00m15'] = ""
|
||||
try:
|
||||
formData['employeeField_llc00m16'] = ALL_DATA_staff[data_NGV_new["area_manager"][i]] # 区域经理_成员字段
|
||||
except:
|
||||
formData['employeeField_llc00m16'] = ""
|
||||
try:
|
||||
formData['employeeField_lmpsfc04'] = textField_lmps6q39[data_NGV_new["city_name"][i]] # 技术专家_成员字段
|
||||
except:
|
||||
formData['employeeField_lmpsfc04'] = ""
|
||||
|
||||
read_instances_put(TOKEN, data_new[data_NGV_new["org_code"][i]],formData)
|
||||
print("更新第",i,"条数据!")
|
||||
except:
|
||||
pass
|
||||
|
||||
@@ -0,0 +1,485 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import psycopg2
|
||||
import pandas as pd
|
||||
# 获得连接
|
||||
conn = psycopg2.connect(database="f6_bi", user="BASIC$ro_caowei", password="!ro_caowei123", host="hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com", port="80")
|
||||
# 获得游标对象,一个游标对象可以对数据库进行执行操作
|
||||
cursor = conn.cursor()
|
||||
|
||||
import datetime
|
||||
now_time = datetime.datetime.now()
|
||||
yes_time = now_time + datetime.timedelta(days=-1)
|
||||
yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前一天日期
|
||||
# sql语句 建表
|
||||
sql =f"""SELECT * FROM "public"."holo_ads_report_saas_profile_ngv_detail_d" WHERE "date_id" = '{yes_time_nyr}';"""
|
||||
# 执行语句
|
||||
cursor.execute(sql)
|
||||
# 获取结果集的每一行
|
||||
rows = cursor.fetchall()
|
||||
# 获取所有字段名
|
||||
all_fields = cursor.description
|
||||
#执行结果转化为dataframe
|
||||
col = []
|
||||
for i in all_fields:
|
||||
col.append(i[0])
|
||||
data_NGV = pd.DataFrame(list(rows),columns=col)
|
||||
# data_NGV.to_excel(r'C:\Users\admin\Desktop\NGV明细.xlsx')
|
||||
# 关闭数据库连接
|
||||
cursor.close()
|
||||
conn.close()
|
||||
|
||||
# 基础函数配置
|
||||
import pandas as pd
|
||||
import pandas as pd
|
||||
import requests
|
||||
from pathlib import Path
|
||||
from urllib.parse import quote
|
||||
import json
|
||||
import numpy as np
|
||||
import time
|
||||
|
||||
ROOT = Path('.').absolute() # 当前工作目录
|
||||
|
||||
def generateToken() -> str:
|
||||
""" 生成 token """
|
||||
|
||||
token_api = 'https://api.dingtalk.com/v1.0/oauth2/accessToken'
|
||||
|
||||
# 该信息在钉钉开放应用中
|
||||
data = {
|
||||
"appKey": "ding5kqocon5s9oph5uq",
|
||||
"appSecret": 'HL1jgsIIfLAC0eTH0A1m4mwxUDqbgsiPeCCGGE3ocM6qJBTIW7Ivt9drxF_Z4Kb_'
|
||||
}
|
||||
|
||||
res = requests.post(token_api, json=data)
|
||||
token = res.json()['accessToken']
|
||||
|
||||
return token
|
||||
|
||||
def read_instances(token, formUuid, page, n):
|
||||
""" 函数功能:读取普通表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId" : "yida_pub_account",
|
||||
"language" : "zh_CN",
|
||||
"formUuid" : formUuid,
|
||||
"currentPage" : page,
|
||||
"pageSize" : n
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
|
||||
def read_delete(token, formInstanceId):
|
||||
""" 函数功能:调用本接口删除表单数据。 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId" : "yida_pub_account",
|
||||
"language" : "zh_CN",
|
||||
"formInstanceId" : formInstanceId
|
||||
}
|
||||
|
||||
res = requests.delete(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
|
||||
def read_new(FORMID,formData):
|
||||
""" 通过实例id 获取表单内容 """
|
||||
api = f'https://api.dingtalk.com/v1.0/yida/forms/instances'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
payload = {
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"formDataJson" : json.dumps(formData, cls=NpEncoder),
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"language" : "zh_CN",
|
||||
"userId" : "yida_pub_account"
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
print(res.json())
|
||||
|
||||
return res.json()
|
||||
|
||||
|
||||
def component(FORMID,TOKEN):
|
||||
""" 获取组件信息 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/formFields'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
payload = {
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
# "formDataJson" : json.dumps(formData, cls=NpEncoder),
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
# "language" : "zh_CN",
|
||||
"userId" : "yida_pub_account"
|
||||
}
|
||||
|
||||
res = requests.get(api, headers=headers, json=payload)
|
||||
|
||||
return res.json()
|
||||
def Batch_creation(FORMID,TOKEN,ALL_formData):
|
||||
""" 获取组件信息 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchSave'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
payload = {
|
||||
# "formDataJson" : json.dumps(formData, cls=NpEncoder),
|
||||
"noExecuteExpression" : "true",
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"asynchronousExecution" : "true",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"keepRunningAfterException" : "true",
|
||||
"userId" : "yida_pub_account",
|
||||
"formDataJsonList" : json.dumps(ALL_formData, cls=NpEncoder),
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
return res.json()
|
||||
|
||||
def delete_in_batches(FORMID,TOKEN,ALL_DATA_instance):
|
||||
""" 批量删除表单实例 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchRemove'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
|
||||
payload = {
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"asynchronousExecution" : "true",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"formInstanceIdList" : json.dumps(ALL_DATA_instance, cls=NpEncoder),
|
||||
"userId" : "yida_pub_account",
|
||||
"executeExpression" : "false" # 不触发
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
return res.json()
|
||||
|
||||
def delete_in(TOKEN,formInstanceIdList):
|
||||
""" 逐条删除表单实例 """
|
||||
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}'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
res = requests.delete(api, headers=headers)
|
||||
return res.json()
|
||||
|
||||
class NpEncoder(json.JSONEncoder):
|
||||
def default(self, obj):
|
||||
if isinstance(obj, np.integer):
|
||||
return int(obj)
|
||||
elif isinstance(obj, np.floating):
|
||||
return float(obj)
|
||||
elif isinstance(obj, np.ndarray):
|
||||
return obj.tolist()
|
||||
else:
|
||||
return super(NpEncoder, self).default(obj)
|
||||
TOKEN = generateToken()
|
||||
'''读取员工对应关系:宜搭员工-ID对应表 '''
|
||||
FORMID = "FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6" # 宜搭员工-ID对应表 FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6
|
||||
# 读取流程表单数据
|
||||
form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)
|
||||
PAGES = form_data.get('totalCount')//100 + 1
|
||||
ALL_DATA_staff = {}
|
||||
""" 获取全量数据 """
|
||||
for i in range(1, PAGES+1):
|
||||
# form_data = read_processes_instances(token=TOKEN, formUuid=FORMID, createFromTimeGMT=CREATE_FROM, createToTimeGMT=CREATE_TO, page=i, n=100, searchField={'textField_l7if5ff9': '否'})
|
||||
form_data = read_instances(token=TOKEN, formUuid=FORMID, page=i, n=100)
|
||||
for data in form_data.get('data'):
|
||||
ALL_DATA_staff[data['formData']['textField_lfrw3u58']]=data['formData']['textField_lfrw3u59']
|
||||
|
||||
'''获取表内控件信息 '''
|
||||
# FORMID = "FORM-ZK866D91O9LA4NIHCARG2DPIPCXF3Z087PPHL91"
|
||||
# component_list = component(FORMID,TOKEN)
|
||||
# for i in range(len(component_list['result'])):
|
||||
# componentName = component_list['result'][i]['componentName']
|
||||
# name_value = component_list['result'][i]['label']['value']
|
||||
# fieldId = component_list['result'][i]['fieldId']
|
||||
# print("'",fieldId,"':","data_NGV[",name_value,"][i],")
|
||||
|
||||
'''读取市-技术专家id '''
|
||||
FORMID = "FORM-A8666NA1FJDEVPBB6VVTOCMP47UP2J2L6SPML2" #市-技术专家id
|
||||
# 读取流程表单数据
|
||||
form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)
|
||||
PAGES = form_data.get('totalCount')//100 + 1
|
||||
textField_lmps6q39 = {}
|
||||
""" 获取全量数据 """
|
||||
for i in range(1, PAGES+1):
|
||||
# form_data = read_processes_instances(token=TOKEN, formUuid=FORMID, createFromTimeGMT=CREATE_FROM, createToTimeGMT=CREATE_TO, page=i, n=100, searchField={'textField_l7if5ff9': '否'})
|
||||
form_data = read_instances(token=TOKEN, formUuid=FORMID, page=i, n=100)
|
||||
for data in form_data.get('data'):
|
||||
textField_lmps6q39[data['formData']['textField_lmps6q38']]=data['formData']['textField_lmps6q39'] #技术专家id
|
||||
print(f'读取到市-技术专家id表单中 {len(textField_lmps6q39)} 条数据!')
|
||||
|
||||
'''批量删除NGV数据'''
|
||||
for i in range(0,10):
|
||||
default = True
|
||||
while default:
|
||||
FORMID = "FORM-ZK866D91O9LA4NIHCARG2DPIPCXF3Z087PPHL91"
|
||||
form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)
|
||||
PAGES = form_data.get('totalCount')//100 +1
|
||||
print(form_data.get('totalCount'))
|
||||
if form_data.get('totalCount')<=0:
|
||||
default = False
|
||||
for i in range(PAGES, 1,-1):
|
||||
ALL_DATA_instance = []
|
||||
form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)
|
||||
for data in form_data.get('data'):
|
||||
ALL_DATA_instance.append(data['formInstanceId'])
|
||||
print(f'读取到表单中 {len(ALL_DATA_instance)} 条数据!')
|
||||
red_delete = delete_in_batches(FORMID,TOKEN,ALL_DATA_instance)
|
||||
form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)
|
||||
for data in form_data.get('data'):
|
||||
formInstanceId = data['formInstanceId']
|
||||
delete_in(TOKEN,formInstanceId)
|
||||
print(f'单条删除 {formInstanceId} 数据!')
|
||||
|
||||
'''遍历数据进行新建'''
|
||||
data_NGV = data_NGV.astype('string')
|
||||
data_NGV = data_NGV.fillna('',inplace=False)
|
||||
for a in range(0,len(data_NGV["date_fmt"]),100):
|
||||
ALL_formData = []
|
||||
for i in range(a,a+100): # for i in range(len(data_NGV["date_fmt"])):
|
||||
try:
|
||||
formData = {
|
||||
'textField_nnyw1ge': data_NGV["date_id"][i],
|
||||
'dateField_e9jt02o': int(time.mktime(time.strptime(data_NGV["date_fmt"][i], "%Y-%m-%d"))*1000) if data_NGV["date_fmt"][i] !='' else '',
|
||||
'textField_ek9jnne': data_NGV["id_own_group"][i],
|
||||
'textField_35i6110': data_NGV["group_name"][i],
|
||||
'textField_l8nc9f2': data_NGV["id_own_org"][i],
|
||||
'textField_tdn6hsy': data_NGV["org_name"][i],
|
||||
'textField_zc1iowp': data_NGV["org_code"][i],
|
||||
'textField_2rulk5e': data_NGV["group_grade"][i],
|
||||
'textField_c54tztg': data_NGV["org_type"][i],
|
||||
'textField_qrtnel7': data_NGV["org_status"][i],
|
||||
'textField_7xgxe9g': data_NGV["saas_version"][i],
|
||||
'textField_pnig1i1': data_NGV["is_wechat"][i],
|
||||
'textField_qiovtdj': data_NGV["is_mini_app"][i],
|
||||
'textField_i0h0iqa': data_NGV["is_wx_shop"][i],
|
||||
'textField_qczj9vq': data_NGV["is_camera_service"][i],
|
||||
'textField_jouovty': data_NGV["is_maintenance_service"][i],
|
||||
'dateField_o1v1emn': int(time.mktime(time.strptime(data_NGV["saas_create_time"][i], "%Y-%m-%d %H:%M:%S"))*1000) if data_NGV["saas_create_time"][i] !='' else '',
|
||||
'dateField_6zdcfnf': int(time.mktime(time.strptime(data_NGV["expiry_time"][i], "%Y-%m-%d %H:%M:%S"))*1000) if data_NGV["expiry_time"][i] !='' else '',
|
||||
'textField_8uae70x': data_NGV["saas_use_days"][i],
|
||||
'textField_cjkvqpn': data_NGV["saas_use_year"][i],
|
||||
'textField_yhtmsxx': data_NGV["is_main_org"][i],
|
||||
'textField_gfigtpn': data_NGV["license_code"][i],
|
||||
'textField_662foev': data_NGV["license_name"][i],
|
||||
'textField_lco27te': data_NGV["org_crm_id"][i],
|
||||
'textField_1tygbmq': data_NGV["province_id"][i],
|
||||
'textField_1q6dt9a': data_NGV["province_name"][i],
|
||||
'textField_z2rntja': data_NGV["city_id"][i],
|
||||
'textField_ohybc2g': data_NGV["city_name"][i],
|
||||
'textField_9oupoal': data_NGV["area_id"][i],
|
||||
'textField_m0rzgwb': data_NGV["area_name"][i],
|
||||
'textField_69po7o9': data_NGV["region_name"][i],
|
||||
'textField_vqxr0d9': data_NGV["region_short_name"][i],
|
||||
'textField_5wr3tj9': data_NGV["branch_name"][i],
|
||||
'textField_6hz7i81': data_NGV["carzone_store_id"][i],
|
||||
'textField_86wu9qm': data_NGV["carzone_store_name"][i],
|
||||
'textField_129quhy': data_NGV["customer_carzone_id"][i],
|
||||
'textField_j7i4mhn': data_NGV["salesmen"][i],
|
||||
'textField_qms107e': data_NGV["area_manager"][i],
|
||||
'textField_qc3blb5': data_NGV["service_salesmen"][i],
|
||||
'textField_vk0hf2u': data_NGV["impl_principal"][i],
|
||||
'textField_3lfom9a': data_NGV["service_impl_principal"][i],
|
||||
'textField_1ud1o2l': data_NGV["active_user_count"][i],
|
||||
'textField_kpdh7qc': data_NGV["active_user_type"][i],
|
||||
'textField_n2y4bmf': data_NGV["limit_user_count"][i],
|
||||
'textField_k5o5u2d': data_NGV["limit_user_type"][i],
|
||||
'textField_729y7jp': data_NGV["is_n"][i],
|
||||
'textField_six7heq': data_NGV["is_g"][i],
|
||||
'textField_tipmhx4': data_NGV["is_v"][i],
|
||||
'textField_qclt1dm': data_NGV["is_visited"][i],
|
||||
'textField_0sk94f9': data_NGV["is_active"][i],
|
||||
'textField_bzszf71': data_NGV["active_status_fmt"][i],
|
||||
'textField_c061ojt': data_NGV["bill_count_last_30_day"][i],
|
||||
'textField_07zkoii': data_NGV["bill_day_count_last_30_day"][i],
|
||||
'textField_3vnzvsx': data_NGV["bill_day_count_this_month"][i],
|
||||
'textField_3mxwdc4': data_NGV["bill_count_last_7_day"][i],
|
||||
'textField_4q3bh5w': data_NGV["bill_day_count_last_7_day"][i],
|
||||
'textField_u0rgodd': data_NGV["pv_count"][i],
|
||||
'textField_eau5xx6': data_NGV["uv_count"][i],
|
||||
'textField_tayz1vv': data_NGV["bill_count_1d"][i],
|
||||
'textField_k4b1a7x': data_NGV["bill_count_2d"][i],
|
||||
'textField_7lfqnm3': data_NGV["bill_count_3d"][i],
|
||||
'textField_g24x9fv': data_NGV["bill_count_4d"][i],
|
||||
'textField_0v3pm0r': data_NGV["bill_count_5d"][i],
|
||||
'textField_1nxvats': data_NGV["bill_count_6d"][i],
|
||||
'textField_vylq7uh': data_NGV["bill_count_7d"][i],
|
||||
'textField_0n1zd7o': data_NGV["bill_count_8d"][i],
|
||||
'textField_uuatjx7': data_NGV["bill_count_9d"][i],
|
||||
'textField_e16m62c': data_NGV["bill_count_10d"][i],
|
||||
'textField_anv4rco': data_NGV["bill_count_11d"][i],
|
||||
'textField_pz5cg65': data_NGV["bill_count_12d"][i],
|
||||
'textField_hamkvor': data_NGV["bill_count_13d"][i],
|
||||
'textField_kw9nvef': data_NGV["bill_count_14d"][i],
|
||||
'textField_ujbyern': data_NGV["bill_count_15d"][i],
|
||||
'textField_uqp3072': data_NGV["bill_count_16d"][i],
|
||||
'textField_2qsei19': data_NGV["bill_count_17d"][i],
|
||||
'textField_p5x4u8t': data_NGV["bill_count_18d"][i],
|
||||
'textField_2lv8ksl': data_NGV["bill_count_19d"][i],
|
||||
'textField_unl61g8': data_NGV["bill_count_20d"][i],
|
||||
'textField_cvtamin': data_NGV["bill_count_21d"][i],
|
||||
'textField_z0hs1c4': data_NGV["bill_count_22d"][i],
|
||||
'textField_9jln7lp': data_NGV["bill_count_23d"][i],
|
||||
'textField_jlst4j8': data_NGV["bill_count_24d"][i],
|
||||
'textField_ct6z2pu': data_NGV["bill_count_25d"][i],
|
||||
'textField_6s2qy9p': data_NGV["bill_count_26d"][i],
|
||||
'textField_l9lyxnr': data_NGV["bill_count_27d"][i],
|
||||
'textField_sz5xht3': data_NGV["bill_count_28d"][i],
|
||||
'textField_ccodrkd': data_NGV["bill_count_29d"][i],
|
||||
'textField_dy7c14l': data_NGV["bill_count_30d"][i],
|
||||
'textField_delij7o': data_NGV["bill_count_31d"][i],
|
||||
'dateField_4vp44kc': int(time.mktime(time.strptime(data_NGV["etl_time"][i], "%Y-%m-%d %H:%M:%S"))*1000) if data_NGV["etl_time"][i] !='' else '',
|
||||
'textField_0d97bpy': data_NGV["maintain_bill_count_last_30_day"][i],
|
||||
'textField_3nbi33y': data_NGV["washing_bill_count_last_30_day"][i],
|
||||
'textField_17yhr79': data_NGV["maintain_bill_day_count_last_30_day"][i],
|
||||
'textField_e1mrwvb': data_NGV["washing_bill_day_count_last_30_day"][i],
|
||||
'textField_8s47o64': data_NGV["retail_bill_count_last_30_day"][i],
|
||||
'textField_jr9otam': data_NGV["retail_bill_day_count_last_30_day"][i],
|
||||
'textField_mtg1zn1': data_NGV["purchase_bill_count_last_30_day"][i],
|
||||
'textField_96ggfjo': data_NGV["purchase_bill_day_count_last_30_day"][i],
|
||||
'textField_hk7pe9z': data_NGV["card_bill_count_last_30_day"][i],
|
||||
'textField_yj3vbwq': data_NGV["card_bill_day_count_last_30_day"][i],
|
||||
'textField_n2hdr45': data_NGV["gd_sales_bill_count_last_30_day"][i],
|
||||
'textField_p7xgdah': data_NGV["gd_sales_bill_day_count_last_30_day"][i],
|
||||
'textField_7xr2ar8': data_NGV["g_change_flag"][i],
|
||||
'textField_gpzxxmk': data_NGV["saas_package"][i],
|
||||
'textField_tq9g8in': data_NGV["manage_model"][i],
|
||||
'textField_zzchgop': data_NGV["contacts"][i],
|
||||
'textField_a2znmfb': data_NGV["contact_number"][i],
|
||||
'textField_0sadows': data_NGV["contact_mobile"][i],
|
||||
'textField_hz3ujlo': data_NGV["g_month_count"][i],
|
||||
'textField_m1gdeaa': data_NGV["g_month_percentage"][i],
|
||||
'textField_y7ds4oo': data_NGV["is_install_service"][i],
|
||||
'dateField_hiuaj0y': int(time.mktime(time.strptime(data_NGV["install_create_time"][i], "%Y-%m-%d %H:%M:%S"))*1000) if data_NGV["install_create_time"][i] !='' else '',
|
||||
'dateField_yubgpmy': int(time.mktime(time.strptime(data_NGV["last_end_date"][i], "%Y-%m-%d"))*1000) if data_NGV["last_end_date"][i] !='' else '',
|
||||
'dateField_8st5q1a': int(time.mktime(time.strptime(data_NGV["renew_date"][i], "%Y-%m-%d"))*1000) if data_NGV["renew_date"][i] !=''else '',
|
||||
'textField_u8h91r2': data_NGV["is_chain_owner"][i],
|
||||
'textField_qzzz8ux': data_NGV["group_org_count"][i],
|
||||
'textField_qzjf8mc': data_NGV["recent_bill_warning_days"][i],
|
||||
'textField_lvyu7z2': data_NGV["g_change_flag_d"][i],
|
||||
'textField_d72wy3d': data_NGV["g_lost_warning_days"][i],
|
||||
'textField_11ebiwp': data_NGV["saas_edition_fmt"][i],
|
||||
'textField_4yu5vlq': data_NGV["g_flag_1m"][i],
|
||||
'textField_8ydk27g': data_NGV["g_flag_2m"][i],
|
||||
'textField_ysoij3v': data_NGV["g_flag_3m"][i],
|
||||
'textField_a4t6iwp': data_NGV["g_flag_4m"][i],
|
||||
'textField_z1xfteb': data_NGV["g_flag_5m"][i],
|
||||
'textField_56x8u44': data_NGV["g_flag_6m"][i],
|
||||
'textField_zscafbj': data_NGV["g_flag_day_count"][i],
|
||||
'textField_4c0rpdd': data_NGV["add_org_flag"][i],
|
||||
'textField_14we48g': data_NGV["pt"][i],
|
||||
'textField_gukslqe': data_NGV["org_size"][i],
|
||||
'textField_y0tw39j': data_NGV["qualification_type_fmt"][i],
|
||||
'textField_3euralk': data_NGV["business_scope_fmt"][i],
|
||||
'textField_4jji26g': data_NGV["store_type_fmt"][i],
|
||||
'textField_z2mrvyk': data_NGV["area"][i],
|
||||
'textField_e7qmeix': data_NGV["station_number"][i],
|
||||
'textField_x9q5k8p': data_NGV["header_type_fmt"][i],
|
||||
'textField_h423ob8': data_NGV["org_stage"][i],
|
||||
'textField_w6dk6au': data_NGV["g_count_this_month"][i],
|
||||
'textField_67sllhy': data_NGV["saas_customer_type"][i]
|
||||
}
|
||||
try:
|
||||
formData['employeeField_llc00m15'] = ALL_DATA_staff[data_NGV["service_impl_principal"][i]] # 运营负责人_成员字段
|
||||
except:
|
||||
formData['employeeField_llc00m15'] = ""
|
||||
try:
|
||||
formData['employeeField_llc00m16'] = ALL_DATA_staff[data_NGV["area_manager"][i]] # 区域经理_成员字段
|
||||
except:
|
||||
formData['employeeField_llc00m16'] = ""
|
||||
try:
|
||||
formData['employeeField_lmpsfc04'] = textField_lmps6q39[data_NGV["city_name"][i]] # 技术专家_成员字段
|
||||
except:
|
||||
formData['employeeField_lmpsfc04'] = ""
|
||||
|
||||
ALL_formData.append(json.dumps(formData, cls=NpEncoder))
|
||||
except:
|
||||
pass
|
||||
FORMID = "FORM-ZK866D91O9LA4NIHCARG2DPIPCXF3Z087PPHL91"
|
||||
res_new = Batch_creation(FORMID,TOKEN,ALL_formData)
|
||||
print("新建第",i,"条数据!")
|
||||
|
||||
'''校验是否新建正常'''
|
||||
time.sleep(120)
|
||||
FORMID = "FORM-ZK866D91O9LA4NIHCARG2DPIPCXF3Z087PPHL91"
|
||||
form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)
|
||||
if int(form_data.get('totalCount')) ==len(data_NGV):
|
||||
print("数据新建成功!")
|
||||
else:
|
||||
|
||||
def start_instance_process(token: str, name):
|
||||
|
||||
"""发送宜搭表单 -- 发起流程表单
|
||||
|
||||
Args:
|
||||
token
|
||||
data:需要发送的数据字典
|
||||
"""
|
||||
|
||||
yida_api = "https://api.dingtalk.com/v1.0/yida/processes/instances/start"
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
send_data = {
|
||||
"textField_l9fe0uiw": name,
|
||||
"textField_l9fe0uiv": name
|
||||
}
|
||||
|
||||
payload = {
|
||||
"appType": "APP_TNVBVZ3K8G56HG03Z45Q",
|
||||
"systemToken": "CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1",
|
||||
"userId": "yida_pub_account",# 超级管理员账号
|
||||
"language": "zh_CN",
|
||||
"formUuid": "FORM-UX866Q61GNLAZBCIEDF77BGVIIR83K82WYPHLH2",
|
||||
"formDataJson": json.dumps(send_data),
|
||||
"processCode":"TPROC--UX866Q61GNLAZBCIEDF77BGVIIR83M92WYPHLI2"
|
||||
}
|
||||
|
||||
res = requests.post(yida_api, headers=headers, json=payload)
|
||||
return res
|
||||
try:
|
||||
name = "NGV明细数据新建条数不正确!"
|
||||
res_yujing = start_instance_process(TOKEN,name)
|
||||
except:
|
||||
pass
|
||||
+14591
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,24 @@
|
||||
#! python3
|
||||
import pyautogui, sys,time
|
||||
#功能说明:用于记录需要操作的位置信息
|
||||
#输入:鼠标移动到需要记录信息的位置
|
||||
#输出:位置代表的含义,位置x,y坐标信息
|
||||
print('程序说明:三秒后程序开始记录位置,每次位置记录间隔为5秒')
|
||||
# try:
|
||||
# while True:
|
||||
# x, y = pyautogui.position()
|
||||
# positionStr = 'X: ' + str(x).rjust(4) + ' Y: ' + str(y).rjust(4)
|
||||
# print(positionStr, end='')
|
||||
# print('\b' * len(positionStr), end='', flush=True)
|
||||
# except KeyboardInterrupt:
|
||||
# print('\n')
|
||||
time.sleep(3)
|
||||
try:
|
||||
while True:
|
||||
print('请移动鼠标至需要的位置!')
|
||||
Point = pyautogui.position()
|
||||
str = input("请输入位置代表的含义:")
|
||||
print(str,':',Point)
|
||||
time.sleep(5)
|
||||
except:
|
||||
print('\n')
|
||||
@@ -0,0 +1,441 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"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": [
|
||||
"' textField_fcjh3jf ': data_details[ \"org_id\" ][i], # \"org_id\"\n",
|
||||
"' textField_1xjn97l ': data_details[ \"org_code\" ][i], # \"org_code\"\n",
|
||||
"' textField_qeygkxz ': data_details[ \"org_name\" ][i], # \"org_name\"\n",
|
||||
"' textField_f02mhxz ': data_details[ \"org_type\" ][i], # \"org_type\"\n",
|
||||
"' textField_pd4rfu2 ': data_details[ \"org_stage\" ][i], # \"org_stage\"\n",
|
||||
"' textField_7u9b0m6 ': data_details[ \"group_name\" ][i], # \"group_name\"\n",
|
||||
"' textField_pepcc25 ': data_details[ \"group_grade\" ][i], # \"group_grade\"\n",
|
||||
"' dateField_hbdaida ': data_details[ \"saas_create_time\" ][i], # \"saas_create_time\"\n",
|
||||
"' textField_kk5nt1o ': data_details[ \"saas_version_fmt\" ][i], # \"saas_version_fmt\"\n",
|
||||
"' textField_xip14eb ': data_details[ \"saas_edition_fmt\" ][i], # \"saas_edition_fmt\"\n",
|
||||
"' textField_neha4cj ': data_details[ \"saas_customer_type\" ][i], # \"saas_customer_type\"\n",
|
||||
"' textField_nyoo8tc ': data_details[ \"contacts\" ][i], # \"contacts\"\n",
|
||||
"' textField_q9tl2ku ': data_details[ \"contact_mobile\" ][i], # \"contact_mobile\"\n",
|
||||
"' textField_ibhi8pf ': data_details[ \"region_name\" ][i], # \"region_name\"\n",
|
||||
"' textField_sxj46ug ': data_details[ \"branch_name\" ][i], # \"branch_name\"\n",
|
||||
"' employeeField_li8nejio ': data_details[ \"service_impl_principal\" ][i], # \"service_impl_principal\"\n",
|
||||
"' employeeField_li8nejip ': data_details[ \"area_manager\" ][i], # \"area_manager\"\n",
|
||||
"' textField_wsl56u7 ': data_details[ \"init_day\" ][i], # \"init_day\"\n",
|
||||
"' textField_w77lwkc ': data_details[ \"init_label_value\" ][i], # \"init_label_value\"\n",
|
||||
"' textField_hltglzr ': data_details[ \"init_label_code\" ][i], # \"init_label_code\"\n",
|
||||
"' textField_tar1oks ': data_details[ \"push_day\" ][i], # \"push_day\"\n",
|
||||
"' textField_6kppyas ': data_details[ \"push_label_value\" ][i], # \"push_label_value\"\n",
|
||||
"' textField_gkqdsug ': data_details[ \"push_label_code\" ][i], # \"push_label_code\"\n",
|
||||
"' textField_jrq7ztt ': data_details[ \"health_warning_info\" ][i], # \"health_warning_info\"\n",
|
||||
"' dateField_u67kc7t ': data_details[ \"etl_time\" ][i], # \"etl_time\"\n",
|
||||
"' textField_ltyul74 ': data_details[ \"province_name\" ][i], # \"province_name\"\n",
|
||||
"' textField_4mqbb1x ': data_details[ \"city_name\" ][i], # \"city_name\"\n",
|
||||
"' textField_t8u2y3u ': data_details[ \"pt\" ][i], # \"pt\"\n",
|
||||
"0\n",
|
||||
"0\n",
|
||||
"0\n",
|
||||
"0\n",
|
||||
"0\n",
|
||||
"0\n",
|
||||
"0\n",
|
||||
"0\n",
|
||||
"0\n",
|
||||
"0\n",
|
||||
"新建第 99 条数据! {'result': ['FINST-YI866S91BM6B4LTO8NOFRCPQK0T72I8EUN8IL1C', 'FINST-YI866S91BM6B4LTO8NOFRCPQK0T72I8EUN8IL2C', 'FINST-YI866S91BM6B4LTO8NOFRCPQK0T72I8EUN8IL3C', 'FINST-YI866S91BM6B4LTO8NOFRCPQK0T72I8EUN8IL4C', 'FINST-YI866S91BM6B4LTO8NOFRCPQK0T72I8EUN8IL5C', 'FINST-YI866S91BM6B4LTO8NOFRCPQK0T72I8EUN8IL6C', 'FINST-YI866S91BM6B4LTO8NOFRCPQK0T72I8EUN8IL7C', 'FINST-YI866S91BM6B4LTO8NOFRCPQK0T72I8EUN8IL8C', 'FINST-YI866S91BM6B4LTO8NOFRCPQK0T72I8EUN8IL9C', 'FINST-YI866S91BM6B4LTO8NOFRCPQK0T72I8EUN8ILAC', 'FINST-YI866S91BM6B4LTO8NOFRCPQK0T72I8EUN8ILBC', 'FINST-YI866S91BM6B4LTO8NOFRCPQK0T72I8EUN8ILCC', 'FINST-YI866S91BM6B4LTO8NOFRCPQK0T72I8EUN8ILDC', 'FINST-YI866S91BM6B4LTO8NOFRCPQK0T72I8EUN8ILEC', 'FINST-YI866S91BM6B4LTO8NOFRCPQK0T72J8EUN8ILFC', 'FINST-YI866S91BM6B4LTO8NOFRCPQK0T72J8EUN8ILGC', 'FINST-YI866S91BM6B4LTO8NOFRCPQK0T72J8EUN8ILHC', 'FINST-YI866S91BM6B4LTO8NOFRCPQK0T72J8EUN8ILIC', 'FINST-YI866S91BM6B4LTO8NOFRCPQK0T72J8EUN8ILJC', 'FINST-YI866S91BM6B4LTO8NOFRCPQK0T72J8EUN8ILKC', 'FINST-YI866S91BM6B4LTO8NOFRCPQK0T72J8EUN8ILLC', 'FINST-YI866S91BM6B4LTO8NOFRCPQK0T72J8EUN8ILMC']}\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# -*- coding: utf-8 -*-\n",
|
||||
"import psycopg2\n",
|
||||
"import pandas as pd\n",
|
||||
"import calendar\n",
|
||||
"import datetime\n",
|
||||
"# 获得连接\n",
|
||||
"conn = psycopg2.connect(database=\"f6_bi\", user=\"BASIC$ro_caowei\", password=\"!ro_caowei123\", host=\"hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com\", port=\"80\")\n",
|
||||
"# 获得游标对象,一个游标对象可以对数据库进行执行操作\n",
|
||||
"cursor = conn.cursor()\n",
|
||||
"\n",
|
||||
"# 获取当前日期\n",
|
||||
"now_time = datetime.datetime.now()\n",
|
||||
"yes_time = now_time + datetime.timedelta(days=-1)\n",
|
||||
"yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前一天日期\n",
|
||||
"# sql语句 建表\n",
|
||||
"sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_dataservice_saas_org_health_warning\" WHERE \"pt\" = '{yes_time_nyr}';\"\"\"\n",
|
||||
"# 执行语句\n",
|
||||
"cursor.execute(sql)\n",
|
||||
"# 获取结果集的每一行\n",
|
||||
"rows = cursor.fetchall()\n",
|
||||
"# 获取所有字段名\n",
|
||||
"all_fields = cursor.description\n",
|
||||
"#执行结果转化为dataframe\n",
|
||||
"col = []\n",
|
||||
"for i in all_fields:\n",
|
||||
" col.append(i[0])\n",
|
||||
"data_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",
|
||||
"\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",
|
||||
"\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')//10 + 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-6L9661712H0BQUQD6M2Q4818NY803GGSDN8ILI\"\n",
|
||||
"component_list = component(FORMID,TOKEN)\n",
|
||||
"for i in range(len(component_list['result'])):\n",
|
||||
" componentName = component_list['result'][i]['componentName']\n",
|
||||
" name_value = component_list['result'][i]['label']['value']\n",
|
||||
" fieldId = component_list['result'][i]['fieldId']\n",
|
||||
" print(\"'\",fieldId,\"':\",\"data_details[\",name_value,\"][i], # \",name_value)\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"# '''批量删除NGV数据'''\n",
|
||||
"for i in range(0,10):\n",
|
||||
" default = True\n",
|
||||
" while default:\n",
|
||||
" FORMID = \"FORM-6L9661712H0BQUQD6M2Q4818NY803GGSDN8ILI\" \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[\"pt\"]),100):\n",
|
||||
" ALL_formData = []\n",
|
||||
" for i in range(a,a+100): # for i in range(len(data_NGV[\"date_fmt\"])):\n",
|
||||
" try:\n",
|
||||
" formData = {\n",
|
||||
" 'textField_fcjh3jf':data_details[\"org_id\"][i],#\"org_id\"\n",
|
||||
" 'textField_1xjn97l':data_details[\"org_code\"][i],#\"org_code\"\n",
|
||||
" 'textField_qeygkxz':data_details[\"org_name\"][i],#\"org_name\"\n",
|
||||
" 'textField_f02mhxz':data_details[\"org_type\"][i],#\"org_type\"\n",
|
||||
" 'textField_pd4rfu2':data_details[\"org_stage\"][i],#\"org_stage\"\n",
|
||||
" 'textField_7u9b0m6':data_details[\"group_name\"][i],#\"group_name\"\n",
|
||||
" 'textField_pepcc25':data_details[\"group_grade\"][i],#\"group_grade\"\n",
|
||||
" 'dateField_hbdaida':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_kk5nt1o':data_details[\"saas_version_fmt\"][i],#\"saas_version_fmt\"\n",
|
||||
" 'textField_xip14eb':data_details[\"saas_edition_fmt\"][i],#\"saas_edition_fmt\"\n",
|
||||
" 'textField_neha4cj':data_details[\"saas_customer_type\"][i],#\"saas_customer_type\"\n",
|
||||
" 'textField_nyoo8tc':data_details[\"contacts\"][i],#\"contacts\"\n",
|
||||
" 'textField_q9tl2ku':data_details[\"contact_mobile\"][i],#\"contact_mobile\"\n",
|
||||
" 'textField_ibhi8pf':data_details[\"region_name\"][i],#\"region_name\"\n",
|
||||
" 'textField_sxj46ug':data_details[\"branch_name\"][i],#\"branch_name\"\n",
|
||||
" 'employeeField_li8nejio':ALL_DATA_staff[data_details[\"service_impl_principal\"][i]]if data_details[\"service_impl_principal\"][i]!=''else'',#\"service_impl_principal\"\n",
|
||||
" 'employeeField_li8nejip':ALL_DATA_staff[data_details[\"area_manager\"][i]]if data_details[\"area_manager\"][i]!=''else'',#\"area_manager\"\n",
|
||||
" 'textField_wsl56u7':data_details[\"init_day\"][i],#\"init_day\"\n",
|
||||
" 'textField_w77lwkc':data_details[\"init_label_value\"][i],#\"init_label_value\"\n",
|
||||
" 'textField_hltglzr':data_details[\"init_label_code\"][i],#\"init_label_code\"\n",
|
||||
" 'textField_tar1oks':data_details[\"push_day\"][i],#\"push_day\"\n",
|
||||
" 'textField_6kppyas':data_details[\"push_label_value\"][i],#\"push_label_value\"\n",
|
||||
" 'textField_gkqdsug':data_details[\"push_label_code\"][i],#\"push_label_code\"\n",
|
||||
" 'textField_jrq7ztt':data_details[\"health_warning_info\"][i],#\"health_warning_info\"\n",
|
||||
" 'dateField_u67kc7t':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_ltyul74':data_details[\"province_name\"][i],#\"province_name\"\n",
|
||||
" 'textField_4mqbb1x':data_details[\"city_name\"][i],#\"city_name\"\n",
|
||||
" 'textField_t8u2y3u':data_details[\"pt\"][i]#\"pt\"\n",
|
||||
" }\n",
|
||||
" ALL_formData.append(json.dumps(formData, cls=NpEncoder)) \n",
|
||||
" except:\n",
|
||||
" pass\n",
|
||||
" FORMID = \"FORM-6L9661712H0BQUQD6M2Q4818NY803GGSDN8ILI\" \n",
|
||||
" res_new = Batch_creation(FORMID,TOKEN,ALL_formData)\n",
|
||||
" print(\"新建第\",i,\"条数据!\",res_new)\n",
|
||||
" time.sleep(10)\n",
|
||||
"\n",
|
||||
"'''校验是否新建正常'''\n",
|
||||
"time.sleep(120)\n",
|
||||
"FORMID = \"FORM-6L9661712H0BQUQD6M2Q4818NY803GGSDN8ILI\" \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 = \"holo_ads_dataservice_saas_org_health_warning 新建条数不正确!\"\n",
|
||||
" res_yujing = start_instance_process(TOKEN,name)\n",
|
||||
" except:\n",
|
||||
" pass"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "F6processing",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.9.4"
|
||||
},
|
||||
"orig_nbformat": 4
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 9.5 KiB |
@@ -0,0 +1,372 @@
|
||||
import pandas as pd
|
||||
import pandas as pd
|
||||
import numpy as np
|
||||
import requests
|
||||
import json
|
||||
import time
|
||||
import re
|
||||
from datetime import datetime
|
||||
from dateutil.relativedelta import relativedelta
|
||||
from pathlib import Path
|
||||
from urllib.parse import quote
|
||||
from io import BytesIO
|
||||
|
||||
ROOT = Path('.').absolute() # 当前工作目录
|
||||
|
||||
def generateToken() -> str:
|
||||
""" 生成 token """
|
||||
|
||||
token_api = 'https://api.dingtalk.com/v1.0/oauth2/accessToken'
|
||||
|
||||
# 该信息在钉钉开放应用中
|
||||
data = {
|
||||
"appKey": "ding5kqocon5s9oph5uq",
|
||||
"appSecret": 'HL1jgsIIfLAC0eTH0A1m4mwxUDqbgsiPeCCGGE3ocM6qJBTIW7Ivt9drxF_Z4Kb_'
|
||||
}
|
||||
|
||||
res = requests.post(token_api, json=data)
|
||||
token = res.json()['accessToken']
|
||||
|
||||
return token
|
||||
|
||||
def read_processes_instances(token, formUuid, createFromTimeGMT, createToTimeGMT, page, n):
|
||||
""" 函数功能:读取流程表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com/v1.0/yida/processes/instances?pageNumber={page}&pageSize={n}'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType": "APP_TNVBVZ3K8G56HG03Z45Q",
|
||||
"systemToken": "CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1",
|
||||
"userId": "yida_pub_account", # 超级管理员账号
|
||||
"language": "zh_CN",
|
||||
"formUuid": formUuid,
|
||||
"createFromTimeGMT": createFromTimeGMT,
|
||||
"createToTimeGMT": createToTimeGMT,
|
||||
# "searchFieldJson": json.dumps(searchField), # 如果增加上这一项会要求升级宜搭存储
|
||||
"instanceStatus": "RUNNING"
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
|
||||
def read_instances(token, formUuid, page, n):
|
||||
""" 函数功能:读取流程表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search?pageNumber={page}&pageSize={n}'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType": "APP_TNVBVZ3K8G56HG03Z45Q",
|
||||
"systemToken": "CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1",
|
||||
"userId": "yida_pub_account", # 超级管理员账号
|
||||
"language": "zh_CN",
|
||||
"formUuid": formUuid,
|
||||
# "searchFieldJson": json.dumps(searchField), # 如果增加上这一项会要求升级宜搭存储
|
||||
"instanceStatus": "RUNNING"
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
|
||||
def timeStamp(timeNum):
|
||||
""" 函数功能:将时间戳(毫秒) 转化为时间日期格式"""
|
||||
timeStamp = float(timeNum/1000)
|
||||
timeArray = time.localtime(timeStamp)
|
||||
otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
|
||||
return otherStyleTime
|
||||
|
||||
def get_time_range_minute(n):
|
||||
""" 获取近n分钟的时间戳(单位是毫秒)"""
|
||||
|
||||
def delay_time(time_str, years=0, months=0, days=0, hours=0, minutes=0, seconds=0):
|
||||
if type(time_str) == str:
|
||||
time_str = datetime.strptime(time_str, '%Y-%m-%d %H:%M:%S')
|
||||
ret = time_str + relativedelta(years=years, months=months, days=days, hours=hours, minutes=minutes, seconds=seconds)
|
||||
return ret
|
||||
|
||||
# 获得当前时间
|
||||
now_time = datetime.now()
|
||||
endTime = int(time.mktime(time.strptime(now_time.strftime('%Y/%m/%d %H:%M:%S'), '%Y/%m/%d %H:%M:%S'))) * 1000 - 1000
|
||||
# n小时前的时间
|
||||
ret2 = delay_time(now_time, minutes=-n)
|
||||
startTime = int(time.mktime(time.strptime(ret2.strftime('%Y/%m/%d %H:%M:%S'), '%Y/%m/%d %H:%M:%S'))) * 1000
|
||||
|
||||
# print(f'时间区间:[{startTime}-{endTime}]')
|
||||
return startTime, endTime
|
||||
|
||||
def get_approval_records(token: str, processInstanceId: str):
|
||||
""" 函数功能:获取流程表单的审批记录 --F6客户服务 应用 """
|
||||
appType = "APP_TNVBVZ3K8G56HG03Z45Q"
|
||||
systemToken = "CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1"
|
||||
userId = "yida_pub_account"
|
||||
|
||||
api = f'https://api.dingtalk.com/v1.0/yida/processes/operationRecords?appType={appType}&systemToken={systemToken}&userId={userId}&language=zh_CN&processInstanceId={processInstanceId}'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
res = requests.get(api, headers=headers)
|
||||
print('获取流程表单的审批记录')
|
||||
return res.json()
|
||||
|
||||
def forms_isDone(TOKEN: str, FORMID: str, CREATE_FROM, CREATE_TO,PAGES,processInstanceId,isDone_id):
|
||||
'''
|
||||
返回isDone_id 对应的控件内容
|
||||
'''
|
||||
for i in range(1, PAGES+1):
|
||||
form_data = read_processes_instances(token=TOKEN, formUuid=FORMID, page=i, n=100)
|
||||
for data in form_data.get('data'):
|
||||
processInstanceId_1 = data.get('processInstanceId')
|
||||
if processInstanceId_1 == processInstanceId:
|
||||
isDone = data.get('data').get(isDone_id)
|
||||
return isDone
|
||||
|
||||
def aggree_approval(token: str, taskId: str, processInstanceId: str, formData: dict):
|
||||
""" 函数功能:同意审批节点 --F6客户服务 应用 """
|
||||
api = f'https://api.dingtalk.com/v1.0/yida/tasks/execute'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
payload = {
|
||||
"outResult": "AGREE",
|
||||
"appType": "APP_TNVBVZ3K8G56HG03Z45Q",
|
||||
"systemToken": "CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1",
|
||||
"remark": "同意(接口自动)",
|
||||
"formDataJson": json.dumps(formData, cls=NpEncoder),
|
||||
"processInstanceId": processInstanceId,
|
||||
# "userId": "yida_pub_account",
|
||||
"userId": "2268275546837446",
|
||||
"language": "zh_CN",
|
||||
"taskId": int(taskId)
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
print('同意审批节点')
|
||||
return res
|
||||
|
||||
def switch(token: str, processInstanceId: str, formData: dict):
|
||||
""" 函数说明:
|
||||
开关 程序调用时避免 重复进行(执行间隔 小于 单次执行时间时 发送 重复处理)
|
||||
"""
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
payload = {
|
||||
"appType" : "APP_TNVBVZ3K8G56HG03Z45Q",
|
||||
"systemToken" : "CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1",
|
||||
"userId" : "yida_pub_account", # 管理员
|
||||
"language" : "zh_CN",
|
||||
"useLatestVersion" : "false",
|
||||
"formInstanceId" : processInstanceId,
|
||||
"updateFormDataJson" : json.dumps(formData, cls=NpEncoder),
|
||||
}
|
||||
|
||||
res = requests.put(api, headers=headers, json=payload)
|
||||
print('开关 程序调用时避免 重复进行(执行间隔 小于 单次执行时间时 发送 重复处理)')
|
||||
|
||||
def update_form_staff(TOKEN: str,processInstanceId,staff_id,ModifiedField_value):
|
||||
""" 函数功能:员工更新表单内容 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
data_new = {
|
||||
ModifiedField_value:[staff_id]
|
||||
}
|
||||
payload = {
|
||||
"appType" : "APP_TNVBVZ3K8G56HG03Z45Q",
|
||||
"systemToken" : "CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1",
|
||||
"userId" : "yida_pub_account", # 曹伟 id
|
||||
"language" : "zh_CN",
|
||||
"useLatestVersion" : "false",
|
||||
"formInstanceId" : processInstanceId,
|
||||
"updateFormDataJson" : json.dumps(data_new, cls=NpEncoder),
|
||||
}
|
||||
|
||||
res = requests.put(api, headers=headers, json=payload)
|
||||
print('员工更新表单内容')
|
||||
return res
|
||||
|
||||
def get_staffID(TOKEN: str,staff_name):
|
||||
""" 函数功能:通过员工名称获取员工id"""
|
||||
# 读取员工对应关系:宜搭员工-ID对应表
|
||||
TOKEN = generateToken()
|
||||
FORMID = "FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6" # 宜搭员工-ID对应表 FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6
|
||||
# 读取流程表单数据
|
||||
form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)
|
||||
PAGES = form_data.get('totalCount')//100 + 1
|
||||
|
||||
ALL_DATA_staff = []
|
||||
""" 获取全量数据 """
|
||||
for i in range(1, PAGES+1):
|
||||
# form_data = read_processes_instances(token=TOKEN, formUuid=FORMID, createFromTimeGMT=CREATE_FROM, createToTimeGMT=CREATE_TO, page=i, n=100, searchField={'textField_l7if5ff9': '否'})
|
||||
form_data = read_instances(token=TOKEN, formUuid=FORMID, page=i, n=100)
|
||||
for data in form_data.get('data'):
|
||||
ALL_DATA_staff.append(data)
|
||||
res_new = [v['formData']['textField_lfrw3u59'] for v in ALL_DATA_staff if v['formData']['textField_lfrw3u58']== staff_name]
|
||||
print('通过员工名称获取员工id')
|
||||
return res_new
|
||||
|
||||
def get_type(TOKEN: str,ModifiedField_value,Form_id):
|
||||
""" 函数功能:通过唯一标识获取控件类型"""
|
||||
api = f'https://api.dingtalk.com/v1.0/yida/forms/formFields?appType=APP_TNVBVZ3K8G56HG03Z45Q&systemToken=CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1&formUuid='+Form_id+'&userId=yida_pub_account'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
|
||||
|
||||
res = requests.get(api, headers=headers)
|
||||
cnew = res.json().get('result')
|
||||
componentName = [i.get('componentName') for i in cnew if i.get('fieldId')== ModifiedField_value ]
|
||||
print('通过唯一标识获取控件类型')
|
||||
return componentName
|
||||
|
||||
def update_text(TOKEN: str, processInstanceId, formData):
|
||||
""" 函数说明:更新单行文本控件内容
|
||||
"""
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
payload = {
|
||||
"appType" : "APP_TNVBVZ3K8G56HG03Z45Q",
|
||||
"systemToken" : "CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1",
|
||||
"userId" : "yida_pub_account", # 管理员
|
||||
"language" : "zh_CN",
|
||||
"useLatestVersion" : "false",
|
||||
"formInstanceId" : processInstanceId,
|
||||
"updateFormDataJson" : json.dumps(formData, cls=NpEncoder),
|
||||
}
|
||||
|
||||
res = requests.put(api, headers=headers, json=payload)
|
||||
print('更新单行文本控件内容')
|
||||
return res
|
||||
def read_instances_V2(token, formUuid, createFromTimeGMT, createToTimeGMT, page, n):
|
||||
""" 函数功能:读取流程表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType": "APP_TNVBVZ3K8G56HG03Z45Q",
|
||||
"systemToken": "CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1",
|
||||
"userId": "yida_pub_account", # 超级管理员账号
|
||||
"language": "zh_CN",
|
||||
"formUuid": formUuid,
|
||||
'pageNumber':page,
|
||||
'pageSize':n,
|
||||
# "searchFieldJson": json.dumps(searchField), # 如果增加上这一项会要求升级宜搭存储
|
||||
"instanceStatus": "RUNNING"
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
|
||||
def pass_on(TOKEN: str,taskId, processInstanceId, staffid):
|
||||
""" 函数功能:转交审批节点 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/tasks/redirect'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
payload = {
|
||||
"processInstanceId" : processInstanceId,
|
||||
"byManager" : "y",
|
||||
"appType" : "APP_TNVBVZ3K8G56HG03Z45Q",
|
||||
"systemToken" : "CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1",
|
||||
"language": "zh_CN",
|
||||
"remark" : "转交(接口自动)",
|
||||
"nowActionExecutorId" : staffid,
|
||||
"userId" : "2268275546837446",
|
||||
"taskId" : int(taskId)
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
print('转交审批节点')
|
||||
return res
|
||||
|
||||
def read_instances_new(token, formUuid, createFromTimeGMT, createToTimeGMT, page, n):
|
||||
""" 函数功能:读取流程表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com/v1.0/yida/forms/instances/search'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType": "APP_TNVBVZ3K8G56HG03Z45Q",
|
||||
"systemToken": "CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1",
|
||||
"userId": "yida_pub_account", # 超级管理员账号
|
||||
"language": "zh_CN",
|
||||
"formUuid": formUuid,
|
||||
# "searchFieldJson": json.dumps(searchField), # 如果增加上这一项会要求升级宜搭存储
|
||||
'currentPage':page,
|
||||
'pageSize':n
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
|
||||
class NpEncoder(json.JSONEncoder):
|
||||
def default(self, obj):
|
||||
if isinstance(obj, np.integer):
|
||||
return int(obj)
|
||||
elif isinstance(obj, np.floating):
|
||||
return float(obj)
|
||||
elif isinstance(obj, np.ndarray):
|
||||
return obj.tolist()
|
||||
else:
|
||||
return super(NpEncoder, self).default(obj)
|
||||
|
||||
""" 处理流程开始 """
|
||||
TOKEN = generateToken()
|
||||
FORMID2 = "FORM-W46663A1DNH4EKZI6WCEZCQNPZXQ2ZZB92I9LZ"
|
||||
# 10分钟时间间隔
|
||||
CREATE_FROM, CREATE_TO = [timeStamp(t) for t in get_time_range_minute(100000)]
|
||||
|
||||
# 读取修改明细表全量数据
|
||||
form_data = read_instances_V2(token=TOKEN, formUuid=FORMID2, createFromTimeGMT=CREATE_FROM, createToTimeGMT=CREATE_TO, page=1, n=100)
|
||||
PAGES = form_data.get('totalCount')//100 + 1
|
||||
|
||||
LIST_DATA = []
|
||||
""" 获取全量数据 """
|
||||
for i in range(1, PAGES+1):
|
||||
# form_data = read_processes_instances(token=TOKEN, formUuid=FORMID, createFromTimeGMT=CREATE_FROM, createToTimeGMT=CREATE_TO, page=i, n=100, searchField={'textField_l7if5ff9': '否'})
|
||||
form_data = read_instances_new(token=TOKEN, formUuid=FORMID2, createFromTimeGMT=CREATE_FROM, createToTimeGMT=CREATE_TO, page=i, n=100)
|
||||
for v in range(0,len(form_data.get('data'))):
|
||||
pass
|
||||
if form_data.get('data')[v]['formData']['textField_l2zx3p5q'] =="0" and form_data.get('data')[v]['formData']['textField_l90wwpsz'] !="v423(auto_update)":
|
||||
formData = {'textField_l90wwpsz':'v423(auto_update)'}
|
||||
formInstanceId = form_data.get('data')[v]['formInstanceId']
|
||||
update_text(TOKEN, formInstanceId, formData)
|
||||
@@ -0,0 +1,354 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import psycopg2
|
||||
import pandas as pd
|
||||
# 获得连接
|
||||
conn = psycopg2.connect(database="f6_bi", user="BASIC$ro_caowei", password="!ro_caowei123", host="hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com", port="80")
|
||||
# 获得游标对象,一个游标对象可以对数据库进行执行操作
|
||||
cursor = conn.cursor()
|
||||
|
||||
import datetime
|
||||
now_time = datetime.datetime.now()
|
||||
yes_time = now_time + datetime.timedelta(days=-1)
|
||||
yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前一天日期
|
||||
# sql语句 建表
|
||||
sql =f"""SELECT * FROM "public"."holo_ads_report_saas_profile_ngv_detail_d" WHERE "date_id" = '{yes_time_nyr}';"""
|
||||
# 执行语句
|
||||
cursor.execute(sql)
|
||||
# 获取结果集的每一行
|
||||
rows = cursor.fetchall()
|
||||
# 获取所有字段名
|
||||
all_fields = cursor.description
|
||||
#执行结果转化为dataframe
|
||||
col = []
|
||||
for i in all_fields:
|
||||
col.append(i[0])
|
||||
data_NGV = pd.DataFrame(list(rows),columns=col)
|
||||
# data_NGV.to_excel(r'C:\Users\admin\Desktop\NGV明细.xlsx')
|
||||
# 关闭数据库连接
|
||||
cursor.close()
|
||||
conn.close()
|
||||
|
||||
# 基础函数配置
|
||||
import pandas as pd
|
||||
import pandas as pd
|
||||
import requests
|
||||
from pathlib import Path
|
||||
from urllib.parse import quote
|
||||
import json
|
||||
import numpy as np
|
||||
import time
|
||||
|
||||
ROOT = Path('.').absolute() # 当前工作目录
|
||||
|
||||
def generateToken() -> str:
|
||||
""" 生成 token """
|
||||
|
||||
token_api = 'https://api.dingtalk.com/v1.0/oauth2/accessToken'
|
||||
|
||||
# 该信息在钉钉开放应用中
|
||||
data = {
|
||||
"appKey": "ding5kqocon5s9oph5uq",
|
||||
"appSecret": 'HL1jgsIIfLAC0eTH0A1m4mwxUDqbgsiPeCCGGE3ocM6qJBTIW7Ivt9drxF_Z4Kb_'
|
||||
}
|
||||
|
||||
res = requests.post(token_api, json=data)
|
||||
token = res.json()['accessToken']
|
||||
|
||||
return token
|
||||
|
||||
def read_instances(token, formUuid, page, n):
|
||||
""" 函数功能:读取普通表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType" : "APP_RTPWHV37ENXPQUZHTL25",
|
||||
"systemToken" : "IA766O61SHFZT6UB0WNOB58GI5RW2K58KCU1LL6",
|
||||
"userId" : "yida_pub_account",
|
||||
"language" : "zh_CN",
|
||||
"formUuid" : formUuid,
|
||||
"currentPage" : page,
|
||||
"pageSize" : n
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
|
||||
def read_instances_TEBIE(token, formUuid, page, n):
|
||||
""" 函数功能:读取普通表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId" : "yida_pub_account",
|
||||
"language" : "zh_CN",
|
||||
"formUuid" : formUuid,
|
||||
"currentPage" : page,
|
||||
"pageSize" : n
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
def read_delete(token, formInstanceId):
|
||||
""" 函数功能:调用本接口删除表单数据。 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType" : "APP_RTPWHV37ENXPQUZHTL25",
|
||||
"systemToken" : "IA766O61SHFZT6UB0WNOB58GI5RW2K58KCU1LL6",
|
||||
"userId" : "yida_pub_account",
|
||||
"language" : "zh_CN",
|
||||
"formInstanceId" : formInstanceId
|
||||
}
|
||||
|
||||
res = requests.delete(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
|
||||
def read_new(FORMID,formData):
|
||||
""" 通过实例id 获取表单内容 """
|
||||
api = f'https://api.dingtalk.com/v1.0/yida/forms/instances'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
payload = {
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_RTPWHV37ENXPQUZHTL25",
|
||||
"formDataJson" : json.dumps(formData, cls=NpEncoder),
|
||||
"systemToken" : "IA766O61SHFZT6UB0WNOB58GI5RW2K58KCU1LL6",
|
||||
"language" : "zh_CN",
|
||||
"userId" : "yida_pub_account"
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
print(res.json())
|
||||
|
||||
return res.json()
|
||||
|
||||
|
||||
def component(FORMID,TOKEN):
|
||||
""" 获取组件信息 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/formFields'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
payload = {
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_RTPWHV37ENXPQUZHTL25",
|
||||
# "formDataJson" : json.dumps(formData, cls=NpEncoder),
|
||||
"systemToken" : "IA766O61SHFZT6UB0WNOB58GI5RW2K58KCU1LL6",
|
||||
# "language" : "zh_CN",
|
||||
"userId" : "yida_pub_account"
|
||||
}
|
||||
|
||||
res = requests.get(api, headers=headers, json=payload)
|
||||
|
||||
return res.json()
|
||||
def Batch_creation(FORMID,TOKEN,ALL_formData):
|
||||
""" 获取组件信息 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchSave'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
payload = {
|
||||
# "formDataJson" : json.dumps(formData, cls=NpEncoder),
|
||||
"noExecuteExpression" : "true",
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_RTPWHV37ENXPQUZHTL25",
|
||||
"asynchronousExecution" : "true",
|
||||
"systemToken" : "IA766O61SHFZT6UB0WNOB58GI5RW2K58KCU1LL6",
|
||||
"keepRunningAfterException" : "true",
|
||||
"userId" : "yida_pub_account",
|
||||
"formDataJsonList" : json.dumps(ALL_formData, cls=NpEncoder),
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
return res.json()
|
||||
|
||||
def delete_in_batches(FORMID,TOKEN,ALL_DATA_instance):
|
||||
""" 批量删除表单实例 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchRemove'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
|
||||
payload = {
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_RTPWHV37ENXPQUZHTL25",
|
||||
"asynchronousExecution" : "true",
|
||||
"systemToken" : "IA766O61SHFZT6UB0WNOB58GI5RW2K58KCU1LL6",
|
||||
"formInstanceIdList" : json.dumps(ALL_DATA_instance, cls=NpEncoder),
|
||||
"userId" : "yida_pub_account",
|
||||
"executeExpression" : "false" # 不触发
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
return res.json()
|
||||
|
||||
def delete_in(TOKEN,formInstanceIdList):
|
||||
""" 逐条删除表单实例 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances?appType=APP_RTPWHV37ENXPQUZHTL25&systemToken=IA766O61SHFZT6UB0WNOB58GI5RW2K58KCU1LL6&userId=yida_pub_account&language=zh_CN&formInstanceId={formInstanceIdList}'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
res = requests.delete(api, headers=headers)
|
||||
return res.json()
|
||||
|
||||
class NpEncoder(json.JSONEncoder):
|
||||
def default(self, obj):
|
||||
if isinstance(obj, np.integer):
|
||||
return int(obj)
|
||||
elif isinstance(obj, np.floating):
|
||||
return float(obj)
|
||||
elif isinstance(obj, np.ndarray):
|
||||
return obj.tolist()
|
||||
else:
|
||||
return super(NpEncoder, self).default(obj)
|
||||
TOKEN = generateToken()
|
||||
'''读取员工对应关系:宜搭员工-ID对应表 '''
|
||||
FORMID = "FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6" # 宜搭员工-ID对应表 FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6
|
||||
# 读取流程表单数据
|
||||
form_data = read_instances_TEBIE(token=TOKEN, formUuid=FORMID, page=1, n=100)
|
||||
PAGES = form_data.get('totalCount')//100 + 1
|
||||
ALL_DATA_staff = {}
|
||||
""" 获取全量数据 """
|
||||
for i in range(1, PAGES+1):
|
||||
# form_data = read_processes_instances(token=TOKEN, formUuid=FORMID, createFromTimeGMT=CREATE_FROM, createToTimeGMT=CREATE_TO, page=i, n=100, searchField={'textField_l7if5ff9': '否'})
|
||||
form_data = read_instances_TEBIE(token=TOKEN, formUuid=FORMID, page=i, n=100)
|
||||
for data in form_data.get('data'):
|
||||
ALL_DATA_staff[data['formData']['textField_lfrw3u58']]=data['formData']['textField_lfrw3u59']
|
||||
|
||||
|
||||
'''批量删除NGV数据'''
|
||||
for i in range(0,10):
|
||||
default = True
|
||||
while default:
|
||||
FORMID = "FORM-08866RA1DJ2EILGD9AVPY3VCL8OD3N68R7AML5"
|
||||
form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)
|
||||
PAGES = form_data.get('totalCount')//100 +1
|
||||
PAGES = PAGES * 2
|
||||
print(form_data.get('totalCount'))
|
||||
if form_data.get('totalCount')<=0:
|
||||
default = False
|
||||
for i in range(PAGES, 1,-1):
|
||||
ALL_DATA_instance = []
|
||||
form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)
|
||||
for data in form_data.get('data'):
|
||||
ALL_DATA_instance.append(data['formInstanceId'])
|
||||
print(f'读取到表单中 {len(ALL_DATA_instance)} 条数据!')
|
||||
red_delete = delete_in_batches(FORMID,TOKEN,ALL_DATA_instance)
|
||||
form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)
|
||||
for data in form_data.get('data'):
|
||||
formInstanceId = data['formInstanceId']
|
||||
delete_in(TOKEN,formInstanceId)
|
||||
print(f'单条删除 {formInstanceId} 数据!')
|
||||
time.sleep(60)
|
||||
'''遍历数据进行新建'''
|
||||
data_NGV = data_NGV.astype('string')
|
||||
data_NGV = data_NGV.fillna('',inplace=False)
|
||||
for a in range(0,len(data_NGV["date_fmt"]),100):
|
||||
try:
|
||||
ALL_formData = []
|
||||
for i in range(a,a+100): # for i in range(len(data_NGV["date_fmt"])):
|
||||
try:
|
||||
formData = {
|
||||
'textField_11ebiwp': data_NGV["saas_edition_fmt"][i],
|
||||
'dateField_yubgpmy': int(time.mktime(time.strptime(data_NGV["last_end_date"][i], "%Y-%m-%d"))*1000) if data_NGV["last_end_date"][i] !='' else '',
|
||||
'dateField_o1v1emn': int(time.mktime(time.strptime(data_NGV["saas_create_time"][i], "%Y-%m-%d %H:%M:%S"))*1000) if data_NGV["saas_create_time"][i] !='' else '',
|
||||
'textField_cjkvqpn': data_NGV["saas_use_year"][i],
|
||||
'textField_lma7s24z': data_NGV["group_name"][i],
|
||||
'textField_lma7s24y': data_NGV["org_name"][i],
|
||||
'textField_lma7s24x': data_NGV["org_code"][i]
|
||||
}
|
||||
try:
|
||||
formData['employeeField_lma7s255'] = ALL_DATA_staff[data_NGV["service_impl_principal"][i]] # 运营负责人_成员字段
|
||||
except:
|
||||
formData['employeeField_lma7s255'] = ""
|
||||
try:
|
||||
formData['employeeField_lma7s253'] = ALL_DATA_staff[data_NGV["area_manager"][i]] # 区域经理_成员字段
|
||||
except:
|
||||
formData['employeeField_lma7s253'] = ""
|
||||
|
||||
ALL_formData.append(json.dumps(formData, cls=NpEncoder))
|
||||
except:
|
||||
pass
|
||||
FORMID = "FORM-08866RA1DJ2EILGD9AVPY3VCL8OD3N68R7AML5"
|
||||
res_new = Batch_creation(FORMID,TOKEN,ALL_formData)
|
||||
print("新建第",i,"条数据!")
|
||||
time.sleep(10)
|
||||
except:
|
||||
pass
|
||||
|
||||
'''校验是否新建正常'''
|
||||
time.sleep(120)
|
||||
FORMID = "FORM-08866RA1DJ2EILGD9AVPY3VCL8OD3N68R7AML5"
|
||||
form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)
|
||||
if int(form_data.get('totalCount')) ==len(data_NGV):
|
||||
print("数据新建成功!")
|
||||
else:
|
||||
|
||||
def start_instance_process(token: str, name):
|
||||
|
||||
"""发送宜搭表单 -- 发起流程表单
|
||||
|
||||
Args:
|
||||
token
|
||||
data:需要发送的数据字典
|
||||
"""
|
||||
|
||||
yida_api = "https://api.dingtalk.com/v1.0/yida/processes/instances/start"
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
send_data = {
|
||||
"textField_l9fe0uiw": name,
|
||||
"textField_l9fe0uiv": name
|
||||
}
|
||||
|
||||
payload = {
|
||||
"appType": "APP_TNVBVZ3K8G56HG03Z45Q",
|
||||
"systemToken": "CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1",
|
||||
"userId": "yida_pub_account",# 超级管理员账号
|
||||
"language": "zh_CN",
|
||||
"formUuid": "FORM-UX866Q61GNLAZBCIEDF77BGVIIR83K82WYPHLH2",
|
||||
"formDataJson": json.dumps(send_data),
|
||||
"processCode":"TPROC--UX866Q61GNLAZBCIEDF77BGVIIR83M92WYPHLI2"
|
||||
}
|
||||
|
||||
res = requests.post(yida_api, headers=headers, json=payload)
|
||||
return res
|
||||
try:
|
||||
name = "XINQIAN_XUYUE_NGV明细数据新建条数不正确!"
|
||||
res_yujing = start_instance_process(TOKEN,name)
|
||||
except:
|
||||
pass
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,298 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import psycopg2
|
||||
import pandas as pd
|
||||
# 获得连接
|
||||
conn = psycopg2.connect(database="f6_bi", user="BASIC$ro_caowei", password="!ro_caowei123", host="hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com", port="80")
|
||||
# 获得游标对象,一个游标对象可以对数据库进行执行操作
|
||||
cursor = conn.cursor()
|
||||
|
||||
import datetime
|
||||
now_time = datetime.datetime.now()
|
||||
yes_time = now_time + datetime.timedelta(days=-1)
|
||||
yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前一天日期
|
||||
# sql语句 建表
|
||||
sql =f"""SELECT * FROM "public"."holo_ads_report_saas_profile_ngv_detail_d" WHERE "date_id" = '{yes_time_nyr}';"""
|
||||
# 执行语句
|
||||
cursor.execute(sql)
|
||||
# 获取结果集的每一行
|
||||
rows = cursor.fetchall()
|
||||
# 获取所有字段名
|
||||
all_fields = cursor.description
|
||||
#执行结果转化为dataframe
|
||||
col = []
|
||||
for i in all_fields:
|
||||
col.append(i[0])
|
||||
data_NGV = pd.DataFrame(list(rows),columns=col)
|
||||
# data_NGV.to_excel(r'C:\Users\admin\Desktop\NGV明细.xlsx')
|
||||
# 关闭数据库连接
|
||||
cursor.close()
|
||||
conn.close()
|
||||
|
||||
# 基础函数配置
|
||||
import pandas as pd
|
||||
import pandas as pd
|
||||
import requests
|
||||
from pathlib import Path
|
||||
from urllib.parse import quote
|
||||
import json
|
||||
import numpy as np
|
||||
import time
|
||||
|
||||
ROOT = Path('.').absolute() # 当前工作目录
|
||||
|
||||
def generateToken() -> str:
|
||||
""" 生成 token """
|
||||
|
||||
token_api = 'https://api.dingtalk.com/v1.0/oauth2/accessToken'
|
||||
|
||||
# 该信息在钉钉开放应用中
|
||||
data = {
|
||||
"appKey": "ding5kqocon5s9oph5uq",
|
||||
"appSecret": 'HL1jgsIIfLAC0eTH0A1m4mwxUDqbgsiPeCCGGE3ocM6qJBTIW7Ivt9drxF_Z4Kb_'
|
||||
}
|
||||
|
||||
res = requests.post(token_api, json=data)
|
||||
token = res.json()['accessToken']
|
||||
|
||||
return token
|
||||
|
||||
def read_instances(token, formUuid, page, n):
|
||||
""" 函数功能:读取普通表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType" : "APP_RTPWHV37ENXPQUZHTL25",
|
||||
"systemToken" : "IA766O61SHFZT6UB0WNOB58GI5RW2K58KCU1LL6",
|
||||
"userId" : "yida_pub_account",
|
||||
"language" : "zh_CN",
|
||||
"formUuid" : formUuid,
|
||||
"currentPage" : page,
|
||||
"pageSize" : n
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
|
||||
def read_instances_TEBIE(token, formUuid, page, n):
|
||||
""" 函数功能:读取普通表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId" : "yida_pub_account",
|
||||
"language" : "zh_CN",
|
||||
"formUuid" : formUuid,
|
||||
"currentPage" : page,
|
||||
"pageSize" : n
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
def read_delete(token, formInstanceId):
|
||||
""" 函数功能:调用本接口删除表单数据。 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType" : "APP_RTPWHV37ENXPQUZHTL25",
|
||||
"systemToken" : "IA766O61SHFZT6UB0WNOB58GI5RW2K58KCU1LL6",
|
||||
"userId" : "yida_pub_account",
|
||||
"language" : "zh_CN",
|
||||
"formInstanceId" : formInstanceId
|
||||
}
|
||||
|
||||
res = requests.delete(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
|
||||
def read_new(FORMID,formData):
|
||||
""" 通过实例id 获取表单内容 """
|
||||
api = f'https://api.dingtalk.com/v1.0/yida/forms/instances'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
payload = {
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_RTPWHV37ENXPQUZHTL25",
|
||||
"formDataJson" : json.dumps(formData, cls=NpEncoder),
|
||||
"systemToken" : "IA766O61SHFZT6UB0WNOB58GI5RW2K58KCU1LL6",
|
||||
"language" : "zh_CN",
|
||||
"userId" : "yida_pub_account"
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
print(res.json())
|
||||
|
||||
return res.json()
|
||||
|
||||
|
||||
def component(FORMID,TOKEN):
|
||||
""" 获取组件信息 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/formFields'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
payload = {
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_RTPWHV37ENXPQUZHTL25",
|
||||
# "formDataJson" : json.dumps(formData, cls=NpEncoder),
|
||||
"systemToken" : "IA766O61SHFZT6UB0WNOB58GI5RW2K58KCU1LL6",
|
||||
# "language" : "zh_CN",
|
||||
"userId" : "yida_pub_account"
|
||||
}
|
||||
|
||||
res = requests.get(api, headers=headers, json=payload)
|
||||
|
||||
return res.json()
|
||||
def Batch_creation(FORMID,TOKEN,ALL_formData):
|
||||
""" 获取组件信息 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchSave'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
payload = {
|
||||
# "formDataJson" : json.dumps(formData, cls=NpEncoder),
|
||||
"noExecuteExpression" : "true",
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_RTPWHV37ENXPQUZHTL25",
|
||||
"asynchronousExecution" : "true",
|
||||
"systemToken" : "IA766O61SHFZT6UB0WNOB58GI5RW2K58KCU1LL6",
|
||||
"keepRunningAfterException" : "true",
|
||||
"userId" : "yida_pub_account",
|
||||
"formDataJsonList" : json.dumps(ALL_formData, cls=NpEncoder),
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
return res.json()
|
||||
|
||||
def delete_in_batches(FORMID,TOKEN,ALL_DATA_instance):
|
||||
""" 批量删除表单实例 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchRemove'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
|
||||
payload = {
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_RTPWHV37ENXPQUZHTL25",
|
||||
"asynchronousExecution" : "true",
|
||||
"systemToken" : "IA766O61SHFZT6UB0WNOB58GI5RW2K58KCU1LL6",
|
||||
"formInstanceIdList" : json.dumps(ALL_DATA_instance, cls=NpEncoder),
|
||||
"userId" : "yida_pub_account",
|
||||
"executeExpression" : "false" # 不触发
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
return res.json()
|
||||
|
||||
def delete_in(TOKEN,formInstanceIdList):
|
||||
""" 逐条删除表单实例 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances?appType=APP_RTPWHV37ENXPQUZHTL25&systemToken=IA766O61SHFZT6UB0WNOB58GI5RW2K58KCU1LL6&userId=yida_pub_account&language=zh_CN&formInstanceId={formInstanceIdList}'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
res = requests.delete(api, headers=headers)
|
||||
return res.json()
|
||||
|
||||
class NpEncoder(json.JSONEncoder):
|
||||
def default(self, obj):
|
||||
if isinstance(obj, np.integer):
|
||||
return int(obj)
|
||||
elif isinstance(obj, np.floating):
|
||||
return float(obj)
|
||||
elif isinstance(obj, np.ndarray):
|
||||
return obj.tolist()
|
||||
else:
|
||||
return super(NpEncoder, self).default(obj)
|
||||
TOKEN = generateToken()
|
||||
'''读取员工对应关系:宜搭员工-ID对应表 '''
|
||||
FORMID = "FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6" # 宜搭员工-ID对应表 FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6
|
||||
# 读取流程表单数据
|
||||
form_data = read_instances_TEBIE(token=TOKEN, formUuid=FORMID, page=1, n=100)
|
||||
PAGES = form_data.get('totalCount')//100 + 1
|
||||
ALL_DATA_staff = {}
|
||||
""" 获取全量数据 """
|
||||
for i in range(1, PAGES+1):
|
||||
# form_data = read_processes_instances(token=TOKEN, formUuid=FORMID, createFromTimeGMT=CREATE_FROM, createToTimeGMT=CREATE_TO, page=i, n=100, searchField={'textField_l7if5ff9': '否'})
|
||||
form_data = read_instances_TEBIE(token=TOKEN, formUuid=FORMID, page=i, n=100)
|
||||
for data in form_data.get('data'):
|
||||
ALL_DATA_staff[data['formData']['textField_lfrw3u58']]=data['formData']['textField_lfrw3u59']
|
||||
|
||||
|
||||
'''批量删除NGV数据'''
|
||||
for i in range(0,10):
|
||||
default = True
|
||||
while default:
|
||||
FORMID = "FORM-08866RA1DJ2EILGD9AVPY3VCL8OD3N68R7AML5"
|
||||
form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)
|
||||
PAGES = form_data.get('totalCount')//100 +1
|
||||
print(form_data.get('totalCount'))
|
||||
if form_data.get('totalCount')<=0:
|
||||
default = False
|
||||
for i in range(PAGES, 1,-1):
|
||||
ALL_DATA_instance = []
|
||||
form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)
|
||||
for data in form_data.get('data'):
|
||||
ALL_DATA_instance.append(data['formInstanceId'])
|
||||
print(f'读取到表单中 {len(ALL_DATA_instance)} 条数据!')
|
||||
red_delete = delete_in_batches(FORMID,TOKEN,ALL_DATA_instance)
|
||||
form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)
|
||||
for data in form_data.get('data'):
|
||||
formInstanceId = data['formInstanceId']
|
||||
delete_in(TOKEN,formInstanceId)
|
||||
print(f'单条删除 {formInstanceId} 数据!')
|
||||
|
||||
'''遍历数据进行新建'''
|
||||
data_NGV = data_NGV.astype('string')
|
||||
data_NGV = data_NGV.fillna('',inplace=False)
|
||||
for a in range(0,len(data_NGV["date_fmt"]),100):
|
||||
ALL_formData = []
|
||||
for i in range(a,a+100): # for i in range(len(data_NGV["date_fmt"])):
|
||||
try:
|
||||
formData = {
|
||||
'textField_lma7s24z': data_NGV["group_name"][i],
|
||||
'textField_lma7s24y': data_NGV["org_name"][i],
|
||||
'textField_lma7s24x': data_NGV["org_code"][i]
|
||||
}
|
||||
try:
|
||||
formData['employeeField_lma7s255'] = ALL_DATA_staff[data_NGV["service_impl_principal"][i]] # 运营负责人_成员字段
|
||||
except:
|
||||
formData['employeeField_lma7s255'] = ""
|
||||
try:
|
||||
formData['employeeField_lma7s253'] = ALL_DATA_staff[data_NGV["area_manager"][i]] # 区域经理_成员字段
|
||||
except:
|
||||
formData['employeeField_lma7s253'] = ""
|
||||
|
||||
ALL_formData.append(json.dumps(formData, cls=NpEncoder))
|
||||
except:
|
||||
pass
|
||||
FORMID = "FORM-08866RA1DJ2EILGD9AVPY3VCL8OD3N68R7AML5"
|
||||
res_new = Batch_creation(FORMID,TOKEN,ALL_formData)
|
||||
print("新建第",i,"条数据!")
|
||||
@@ -0,0 +1,311 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import psycopg2
|
||||
import pandas as pd
|
||||
# 获得连接
|
||||
conn = psycopg2.connect(database="f6_bi", user="BASIC$ro_caowei", password="!ro_caowei123", host="hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com", port="80")
|
||||
# 获得游标对象,一个游标对象可以对数据库进行执行操作
|
||||
cursor = conn.cursor()
|
||||
|
||||
import datetime
|
||||
now_time = datetime.datetime.now()
|
||||
yes_time = now_time + datetime.timedelta(days=-2)
|
||||
yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前一天日期
|
||||
# sql语句 建表
|
||||
sql =f"""SELECT * FROM "public"."holo_ads_report_saas_profile_ngv_detail_d" WHERE "date_id" = '{yes_time_nyr}';"""
|
||||
# 执行语句
|
||||
cursor.execute(sql)
|
||||
# 获取结果集的每一行
|
||||
rows = cursor.fetchall()
|
||||
# 获取所有字段名
|
||||
all_fields = cursor.description
|
||||
#执行结果转化为dataframe
|
||||
col = []
|
||||
for i in all_fields:
|
||||
col.append(i[0])
|
||||
data_NGV = pd.DataFrame(list(rows),columns=col)
|
||||
# data_NGV.to_excel(r'C:\Users\admin\Desktop\NGV明细.xlsx')
|
||||
# 关闭数据库连接
|
||||
cursor.close()
|
||||
conn.close()
|
||||
|
||||
# -*- coding: utf-8 -*-
|
||||
import psycopg2
|
||||
import pandas as pd
|
||||
# 获得连接
|
||||
conn = psycopg2.connect(database="f6_bi", user="BASIC$ro_caowei", password="!ro_caowei123", host="hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com", port="80")
|
||||
# 获得游标对象,一个游标对象可以对数据库进行执行操作
|
||||
cursor = conn.cursor()
|
||||
|
||||
import datetime
|
||||
now_time = datetime.datetime.now()
|
||||
yes_time = now_time + datetime.timedelta(days=-1)
|
||||
yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前一天日期
|
||||
# sql语句 建表
|
||||
sql =f"""SELECT * FROM "public"."holo_ads_report_saas_profile_ngv_detail_d" WHERE "date_id" = '{yes_time_nyr}';"""
|
||||
# 执行语句
|
||||
cursor.execute(sql)
|
||||
# 获取结果集的每一行
|
||||
rows = cursor.fetchall()
|
||||
# 获取所有字段名
|
||||
all_fields = cursor.description
|
||||
#执行结果转化为dataframe
|
||||
col = []
|
||||
for i in all_fields:
|
||||
col.append(i[0])
|
||||
data_NGV_new = pd.DataFrame(list(rows),columns=col)
|
||||
# data_NGV.to_excel(r'C:\Users\admin\Desktop\NGV明细.xlsx')
|
||||
# 关闭数据库连接
|
||||
cursor.close()
|
||||
conn.close()
|
||||
|
||||
# 使用isin方法筛选出A表中id_own_org字段不在B表中的行
|
||||
c_data = data_NGV_new[~data_NGV_new['id_own_org'].isin(data_NGV['id_own_org'])]
|
||||
|
||||
# 输出C表内容
|
||||
c_data = c_data.reset_index()
|
||||
|
||||
# 基础函数配置
|
||||
import pandas as pd
|
||||
import pandas as pd
|
||||
import requests
|
||||
from pathlib import Path
|
||||
from urllib.parse import quote
|
||||
import json
|
||||
import numpy as np
|
||||
import time
|
||||
|
||||
ROOT = Path('.').absolute() # 当前工作目录
|
||||
|
||||
def generateToken() -> str:
|
||||
""" 生成 token """
|
||||
|
||||
token_api = 'https://api.dingtalk.com/v1.0/oauth2/accessToken'
|
||||
|
||||
# 该信息在钉钉开放应用中
|
||||
data = {
|
||||
"appKey": "ding5kqocon5s9oph5uq",
|
||||
"appSecret": 'HL1jgsIIfLAC0eTH0A1m4mwxUDqbgsiPeCCGGE3ocM6qJBTIW7Ivt9drxF_Z4Kb_'
|
||||
}
|
||||
|
||||
res = requests.post(token_api, json=data)
|
||||
token = res.json()['accessToken']
|
||||
|
||||
return token
|
||||
|
||||
def read_instances(token, formUuid, page, n):
|
||||
""" 函数功能:读取普通表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType" : "APP_RTPWHV37ENXPQUZHTL25",
|
||||
"systemToken" : "IA766O61SHFZT6UB0WNOB58GI5RW2K58KCU1LL6",
|
||||
"userId" : "yida_pub_account",
|
||||
"language" : "zh_CN",
|
||||
"formUuid" : formUuid,
|
||||
"currentPage" : page,
|
||||
"pageSize" : n
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
|
||||
def read_instances_TEBIE(token, formUuid, page, n):
|
||||
""" 函数功能:读取普通表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId" : "yida_pub_account",
|
||||
"language" : "zh_CN",
|
||||
"formUuid" : formUuid,
|
||||
"currentPage" : page,
|
||||
"pageSize" : n
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
def read_delete(token, formInstanceId):
|
||||
""" 函数功能:调用本接口删除表单数据。 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType" : "APP_RTPWHV37ENXPQUZHTL25",
|
||||
"systemToken" : "IA766O61SHFZT6UB0WNOB58GI5RW2K58KCU1LL6",
|
||||
"userId" : "yida_pub_account",
|
||||
"language" : "zh_CN",
|
||||
"formInstanceId" : formInstanceId
|
||||
}
|
||||
|
||||
res = requests.delete(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
|
||||
def read_new(FORMID,formData):
|
||||
""" 通过实例id 获取表单内容 """
|
||||
api = f'https://api.dingtalk.com/v1.0/yida/forms/instances'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
payload = {
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_RTPWHV37ENXPQUZHTL25",
|
||||
"formDataJson" : json.dumps(formData, cls=NpEncoder),
|
||||
"systemToken" : "IA766O61SHFZT6UB0WNOB58GI5RW2K58KCU1LL6",
|
||||
"language" : "zh_CN",
|
||||
"userId" : "yida_pub_account"
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
print(res.json())
|
||||
|
||||
return res.json()
|
||||
|
||||
|
||||
def component(FORMID,TOKEN):
|
||||
""" 获取组件信息 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/formFields'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
payload = {
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_RTPWHV37ENXPQUZHTL25",
|
||||
# "formDataJson" : json.dumps(formData, cls=NpEncoder),
|
||||
"systemToken" : "IA766O61SHFZT6UB0WNOB58GI5RW2K58KCU1LL6",
|
||||
# "language" : "zh_CN",
|
||||
"userId" : "yida_pub_account"
|
||||
}
|
||||
|
||||
res = requests.get(api, headers=headers, json=payload)
|
||||
|
||||
return res.json()
|
||||
def Batch_creation(FORMID,TOKEN,ALL_formData):
|
||||
""" 获取组件信息 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchSave'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
payload = {
|
||||
# "formDataJson" : json.dumps(formData, cls=NpEncoder),
|
||||
"noExecuteExpression" : "true",
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_RTPWHV37ENXPQUZHTL25",
|
||||
"asynchronousExecution" : "true",
|
||||
"systemToken" : "IA766O61SHFZT6UB0WNOB58GI5RW2K58KCU1LL6",
|
||||
"keepRunningAfterException" : "true",
|
||||
"userId" : "yida_pub_account",
|
||||
"formDataJsonList" : json.dumps(ALL_formData, cls=NpEncoder),
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
return res.json()
|
||||
|
||||
def delete_in_batches(FORMID,TOKEN,ALL_DATA_instance):
|
||||
""" 批量删除表单实例 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchRemove'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
|
||||
payload = {
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_RTPWHV37ENXPQUZHTL25",
|
||||
"asynchronousExecution" : "true",
|
||||
"systemToken" : "IA766O61SHFZT6UB0WNOB58GI5RW2K58KCU1LL6",
|
||||
"formInstanceIdList" : json.dumps(ALL_DATA_instance, cls=NpEncoder),
|
||||
"userId" : "yida_pub_account",
|
||||
"executeExpression" : "false" # 不触发
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
return res.json()
|
||||
|
||||
def delete_in(TOKEN,formInstanceIdList):
|
||||
""" 逐条删除表单实例 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances?appType=APP_RTPWHV37ENXPQUZHTL25&systemToken=IA766O61SHFZT6UB0WNOB58GI5RW2K58KCU1LL6&userId=yida_pub_account&language=zh_CN&formInstanceId={formInstanceIdList}'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
res = requests.delete(api, headers=headers)
|
||||
return res.json()
|
||||
|
||||
class NpEncoder(json.JSONEncoder):
|
||||
def default(self, obj):
|
||||
if isinstance(obj, np.integer):
|
||||
return int(obj)
|
||||
elif isinstance(obj, np.floating):
|
||||
return float(obj)
|
||||
elif isinstance(obj, np.ndarray):
|
||||
return obj.tolist()
|
||||
else:
|
||||
return super(NpEncoder, self).default(obj)
|
||||
TOKEN = generateToken()
|
||||
'''读取员工对应关系:宜搭员工-ID对应表 '''
|
||||
FORMID = "FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6" # 宜搭员工-ID对应表 FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6
|
||||
# 读取流程表单数据
|
||||
form_data = read_instances_TEBIE(token=TOKEN, formUuid=FORMID, page=1, n=100)
|
||||
PAGES = form_data.get('totalCount')//100 + 1
|
||||
ALL_DATA_staff = {}
|
||||
""" 获取全量数据 """
|
||||
for i in range(1, PAGES+1):
|
||||
# form_data = read_processes_instances(token=TOKEN, formUuid=FORMID, createFromTimeGMT=CREATE_FROM, createToTimeGMT=CREATE_TO, page=i, n=100, searchField={'textField_l7if5ff9': '否'})
|
||||
form_data = read_instances_TEBIE(token=TOKEN, formUuid=FORMID, page=i, n=100)
|
||||
for data in form_data.get('data'):
|
||||
ALL_DATA_staff[data['formData']['textField_lfrw3u58']]=data['formData']['textField_lfrw3u59']
|
||||
|
||||
|
||||
'''遍历数据进行新建'''
|
||||
data_NGV = c_data.astype('string')
|
||||
data_NGV = data_NGV.fillna('',inplace=False)
|
||||
for a in range(0,len(data_NGV["date_fmt"]),100):
|
||||
ALL_formData = []
|
||||
for i in range(a,a+100): # for i in range(len(data_NGV["date_fmt"])):
|
||||
try:
|
||||
formData = {
|
||||
'textField_lma7s24z': data_NGV["group_name"][i],
|
||||
'textField_lma7s24y': data_NGV["org_name"][i],
|
||||
'textField_lma7s24x': data_NGV["org_code"][i]
|
||||
}
|
||||
try:
|
||||
formData['employeeField_lma7s255'] = ALL_DATA_staff[data_NGV["service_impl_principal"][i]] # 运营负责人_成员字段
|
||||
except:
|
||||
formData['employeeField_lma7s255'] = ""
|
||||
try:
|
||||
formData['employeeField_lma7s253'] = ALL_DATA_staff[data_NGV["area_manager"][i]] # 区域经理_成员字段
|
||||
except:
|
||||
formData['employeeField_lma7s253'] = ""
|
||||
|
||||
ALL_formData.append(json.dumps(formData, cls=NpEncoder))
|
||||
except:
|
||||
pass
|
||||
FORMID = "FORM-08866RA1DJ2EILGD9AVPY3VCL8OD3N68R7AML5"
|
||||
res_new = Batch_creation(FORMID,TOKEN,ALL_formData)
|
||||
print("新建第",i,"条数据!")
|
||||
@@ -0,0 +1,724 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"' tableField_ljcfpjg4 ': data[ \"【导入】申请优惠券明细\" ][i],# \"【导入】申请优惠券明细\"\n",
|
||||
"' tableField_ljibuzgq ': data[ \"【check】申请优惠券明细\" ][i],# \"【check】申请优惠券明细\"\n",
|
||||
"' textField_ljcfpjgd ': data[ \"发券结果\" ][i],# \"发券结果\"\n",
|
||||
"开始处理发券!\n",
|
||||
"读取到 [[流程]自动化优惠券(+多年)表中 101 条数据!\n",
|
||||
"CHS201911260043499 18795561919 {'result': ['FINST-DOC66I91U7YOGXM8EUV9TBSR19WG240LQDK1MZ9']}\n",
|
||||
"CHS202108070135068 18112840707 {'result': ['FINST-ENC66381YZXO70SS7LVKVDJVDFOR27YMQDK1MZA1']}\n",
|
||||
"CHS201909220038177 13401251100 {'result': ['FINST-N9866581GAXOTEKYDFWHBAVR46ZB3ZSOQDK1MDL2']}\n",
|
||||
"CHS202210100189938 18061129944 {'result': ['FINST-57B66W91K7YOHIB0EN5RX64FW9H13ANQQDK1M0B']}\n",
|
||||
"CHS202109040139995 13812444401 {'result': ['FINST-KIC66X7167YOJ60UET60YC4AZR5A37JSQDK1MIB']}\n",
|
||||
"CHS202106220130205 13913803740 {'result': ['FINST-QRC66Q71B6YOCAYUA4I346MU3CJH34FUQDK1MUJ']}\n",
|
||||
"CHS201912300049618 15370049198 {'result': ['FINST-N9866581F6XOPN05B6E2A7V8LAJD3FBWQDK1M135']}\n",
|
||||
"CHS202106090128927 18360729265 {'result': ['FINST-PS666N71X7YOTBLQ6YAUW9CUOQN42W6YQDK1MIK']}\n",
|
||||
"CHS201906260031641 15852031790 {'result': ['FINST-QRC66Q71B1YOHEEA8PMME6KIDI7H3F30RDK1M69']}\n",
|
||||
"a0be439e-fc9c-4d90-9e50-61d8b36e01e6 {}\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# 基础信息\n",
|
||||
"import pandas as pd\n",
|
||||
"import numpy as np\n",
|
||||
"import requests\n",
|
||||
"import json\n",
|
||||
"import time\n",
|
||||
"import re\n",
|
||||
"import sys\n",
|
||||
"from datetime import datetime\n",
|
||||
"from dateutil.relativedelta import relativedelta\n",
|
||||
"from pathlib import Path\n",
|
||||
"from urllib.parse import quote\n",
|
||||
"from datetime import date, timedelta\n",
|
||||
"import datetime\n",
|
||||
"from io import BytesIO\n",
|
||||
"\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_processes_instances(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",
|
||||
"\n",
|
||||
"def queryLastSaasInfo(cellPhone):\n",
|
||||
" \"\"\" 函数功能:手机号查询最近一次购买saas明细 \"\"\"\n",
|
||||
"\n",
|
||||
" api = 'http://manage.f6yc.com/hive-admin/yida/order/queryLastSaasInfo?cellPhone=' + cellPhone\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"token\":\"af88h9KvLQrdvVhFhS8zD1yWx9cu\"\n",
|
||||
" }\n",
|
||||
" res = requests.post(api,headers=headers)\n",
|
||||
" return res.json()\n",
|
||||
"\n",
|
||||
"def get_approval_records(token: str, processInstanceId: str):\n",
|
||||
" \"\"\" 函数功能:获取流程表单的审批记录 \"\"\"\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",
|
||||
"\n",
|
||||
"\n",
|
||||
"def aggree_approval(token: str, taskId: str, processInstanceId: str,res_new,formDataJson):\n",
|
||||
" \"\"\" 函数功能:同意审批节点 \"\"\"\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(formDataJson),\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",
|
||||
"\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 queryCompanies(cellPhone):\n",
|
||||
" \"\"\" 函数功能:自动发券查询手机号所处公司 \"\"\"\n",
|
||||
"\n",
|
||||
" api = 'http://manage.f6yc.com/hive-admin/yida/account/query?cellPhone=' + cellPhone\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"token\":\"af88h9KvLQrdvVhFhS8zD1yWx9cu\"\n",
|
||||
" }\n",
|
||||
" res = requests.post(api,headers=headers)\n",
|
||||
" return res.json()\n",
|
||||
"def queryDetailByOrgId(orgId):\n",
|
||||
" \"\"\" 函数功能:自动发券查询门店上次成交价 \"\"\"\n",
|
||||
"\n",
|
||||
" api = 'http://manage.f6yc.com/hive-admin/yida/org/queryDetailByOrgId?orgId=' + orgId\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"token\":\"af88h9KvLQrdvVhFhS8zD1yWx9cu\"\n",
|
||||
" }\n",
|
||||
" res = requests.post(api,headers=headers)\n",
|
||||
" return res.json()\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",
|
||||
"\n",
|
||||
"def Batch_creation(FORMID,TOKEN,ALL_formData):\n",
|
||||
" \"\"\" 获取组件信息 \"\"\"\n",
|
||||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchSave'\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||||
" }\n",
|
||||
" payload = {\n",
|
||||
" # \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
||||
" \"noExecuteExpression\" : \"false\",\n",
|
||||
" \"formUuid\" : FORMID,\n",
|
||||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||||
" \"asynchronousExecution\" : \"false\",\n",
|
||||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||||
" \"keepRunningAfterException\" : \"true\",\n",
|
||||
" \"userId\" : \"yida_pub_account\",\n",
|
||||
" \"formDataJsonList\" : ALL_formData,\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 queryskuList():\n",
|
||||
" \"\"\" 函数功能:按照商品分类查询商品列表接口 \"\"\"\n",
|
||||
"\n",
|
||||
" api = 'http://manage.f6yc.com/hive-admin/yida/sku/category/query?category=4'\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"token\":\"af88h9KvLQrdvVhFhS8zD1yWx9cu\"\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(api,headers=headers)\n",
|
||||
" return res.json()\n",
|
||||
"\n",
|
||||
"def couponAvailableQuery(cellPhone,groupId,skuList,passportId):\n",
|
||||
" \"\"\" 函数功能:在当前选择场景下查询手机号可以使用的优惠券 http://manage.f6yc.com/hive-admin/ \"\"\"\n",
|
||||
"\n",
|
||||
" api = f'http://manage.f6yc.com/hive-admin/yida/coupon/available/query?passportId={passportId}&cellPhone={cellPhone}&groupId={groupId}&skuList' + str(skuList)\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"token\":\"af88h9KvLQrdvVhFhS8zD1yWx9cu\"\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(api,headers=headers)\n",
|
||||
" return res.json()\n",
|
||||
"\n",
|
||||
"def queryPriceInfoBySkuId(orgId,skuId,saasUpdate):\n",
|
||||
" \"\"\" 函数功能:商品价格查询\"\"\"\n",
|
||||
"\n",
|
||||
" api = f'http://manage.f6yc.com/hive-admin/yida/sku/queryPriceInfoBySkuId?orgId={orgId}&skuId={skuId}&saasUpdate={saasUpdate}'\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"token\":\"af88h9KvLQrdvVhFhS8zD1yWx9cu\"\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(api,headers=headers)\n",
|
||||
" return res.json()\n",
|
||||
"\n",
|
||||
"def read_instances_new(token, formUuid, page, n,CREATE_FROM, CREATE_TO):\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_RTPWHV37ENXPQUZHTL25\",\n",
|
||||
" \"systemToken\": \"IA766O61SHFZT6UB0WNOB58GI5RW2K58KCU1LL6\",\n",
|
||||
" \"userId\": \"yida_pub_account\", # 超级管理员账号\n",
|
||||
" \"language\": \"zh_CN\",\n",
|
||||
" \"formUuid\": formUuid,\n",
|
||||
" \"createFromTimeGMT\":CREATE_FROM,\n",
|
||||
" \"createToTimeGMT\":CREATE_TO\n",
|
||||
" # \"searchFieldJson\": json.dumps(searchField), # 如果增加上这一项会要求升级宜搭存储\n",
|
||||
" # \"instanceStatus\": \"RUNNING\"\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(api, headers=headers, json=formData)\n",
|
||||
" return res.json()\n",
|
||||
"\n",
|
||||
"def updateFormDataJson (token, formUuid, updateFormDataJson):\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_RTPWHV37ENXPQUZHTL25\",\n",
|
||||
" \"systemToken\": \"IA766O61SHFZT6UB0WNOB58GI5RW2K58KCU1LL6\",\n",
|
||||
" \"userId\": \"yida_pub_account\", # 超级管理员账号\n",
|
||||
" \"language\": \"zh_CN\",\n",
|
||||
" \"formInstanceId\": formUuid,\n",
|
||||
" \"updateFormDataJson\":updateFormDataJson\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.put(api, headers=headers, json=formData)\n",
|
||||
" return res.json()\n",
|
||||
"\n",
|
||||
"from datetime import datetime\n",
|
||||
"import time\n",
|
||||
"def get_time_range_minute(n):\n",
|
||||
" \"\"\" 获取近n分钟的时间戳(单位是毫秒)\"\"\"\n",
|
||||
"\n",
|
||||
" def delay_time(time_str, years=0, months=0, days=0, hours=0, minutes=0, seconds=0):\n",
|
||||
" if type(time_str) == str:\n",
|
||||
" time_str = datetime.strptime(time_str, '%Y-%m-%d %H:%M:%S')\n",
|
||||
" ret = time_str + relativedelta(years=years, months=months, days=days, hours=hours, minutes=minutes, seconds=seconds)\n",
|
||||
" return ret\n",
|
||||
"\n",
|
||||
" # 获得当前时间\n",
|
||||
" now_time = datetime.now()\n",
|
||||
" endTime = int(time.mktime(time.strptime(now_time.strftime('%Y/%m/%d %H:%M:%S'), '%Y/%m/%d %H:%M:%S'))) * 1000 - 1000\n",
|
||||
" # n小时前的时间\n",
|
||||
" ret2 = delay_time(now_time, minutes=-n)\n",
|
||||
" startTime = int(time.mktime(time.strptime(ret2.strftime('%Y/%m/%d %H:%M:%S'), '%Y/%m/%d %H:%M:%S'))) * 1000\n",
|
||||
"\n",
|
||||
" # print(f'时间区间:[{startTime}-{endTime}]')\n",
|
||||
" return startTime, endTime\n",
|
||||
"\n",
|
||||
"def timeStamp(timeNum):\n",
|
||||
" \"\"\" 函数功能:将时间戳(毫秒) 转化为时间日期格式\"\"\"\n",
|
||||
" timeStamp = float(timeNum/1000)\n",
|
||||
" timeArray = time.localtime(timeStamp)\n",
|
||||
" otherStyleTime = time.strftime(\"%Y-%m-%d %H:%M:%S\", timeArray)\n",
|
||||
" return otherStyleTime\n",
|
||||
"# 4320分钟时间间隔\n",
|
||||
"CREATE_FROM, CREATE_TO = [timeStamp(t) for t in get_time_range_minute(4320)]\n",
|
||||
"class NpEncoder(json.JSONEncoder):\n",
|
||||
" def default(self, obj):\n",
|
||||
" if isinstance(obj, np.integer):\n",
|
||||
" return int(obj)\n",
|
||||
" elif isinstance(obj, np.floating):\n",
|
||||
" return float(obj)\n",
|
||||
" elif isinstance(obj, np.ndarray):\n",
|
||||
" return obj.tolist()\n",
|
||||
" else:\n",
|
||||
" return super(NpEncoder, self).default(obj)\n",
|
||||
" \n",
|
||||
"'''获取表内控件信息 '''\n",
|
||||
"TOKEN = generateToken()\n",
|
||||
"FORMID_NEW = \"FORM-0A966I81N40CV1B48U18UBZAA8R92STJC7IJL9\"\n",
|
||||
"component_list = component(FORMID_NEW,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[\",name_value,\"][i],#\",name_value)\n",
|
||||
"\n",
|
||||
"\"\"\" 处理流程开始 \"\"\"\n",
|
||||
"FORMID = \"FORM-0A966I81N40CV1B48U18UBZAA8R92STJC7IJL9\" # 【测试版本】批量自动发券\n",
|
||||
"# 读取续约流程表单\n",
|
||||
"form_data = read_processes_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
|
||||
"PAGES = form_data.get('totalCount')//100 + 1\n",
|
||||
"\"\"\" 获取全量数据 \"\"\"\n",
|
||||
"for i in range(1, PAGES+1):\n",
|
||||
" form_data = read_processes_instances(token=TOKEN, formUuid=FORMID, page=i, n=100)\n",
|
||||
" for v in range(0,len(form_data.get('data'))):\n",
|
||||
" \n",
|
||||
" # 获取当前所处节点\n",
|
||||
" res_new = get_approval_records(token=TOKEN, processInstanceId=form_data['data'][v]['processInstanceId'])\n",
|
||||
" records_new = res_new.get('result')\n",
|
||||
" # 获取审批节点的 taskId\n",
|
||||
" records_new = [item for item in records_new if item.get('type') == \"TODO\"]\n",
|
||||
" taskId_new = records_new[0]['activityId']\n",
|
||||
" taskId = records_new[0]['taskId']\n",
|
||||
" if taskId_new==\"sid-6470221a-82ec-4bdd-a873-245ee47a5605\": # check\n",
|
||||
" print(\"开始处理!\")\n",
|
||||
" # 读取NGV明细\n",
|
||||
" import psycopg2\n",
|
||||
" import pandas as pd\n",
|
||||
" # 获得连接\n",
|
||||
" conn = psycopg2.connect(database=\"f6_bi\", user=\"BASIC$ro_caowei\", password=\"!ro_caowei123\", host=\"hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com\", port=\"80\")\n",
|
||||
" # 获得游标对象,一个游标对象可以对数据库进行执行操作\n",
|
||||
" cursor = conn.cursor()\n",
|
||||
" import datetime\n",
|
||||
" now_time = datetime.datetime.now()\n",
|
||||
" yes_time = now_time + datetime.timedelta(days=-1)\n",
|
||||
" yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前一天日期\n",
|
||||
" # sql语句 建表\n",
|
||||
" sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_saas_profile_ngv_detail_d\" WHERE \"date_id\" = '{yes_time_nyr}';\"\"\"\n",
|
||||
" # 执行语句\n",
|
||||
" cursor.execute(sql)\n",
|
||||
" # 获取结果集的每一行\n",
|
||||
" rows = cursor.fetchall()\n",
|
||||
" # 获取所有字段名\n",
|
||||
" all_fields = cursor.description\n",
|
||||
" #执行结果转化为dataframe\n",
|
||||
" col = []\n",
|
||||
" for i in all_fields:\n",
|
||||
" col.append(i[0])\n",
|
||||
" data_NGV = pd.DataFrame(list(rows),columns=col)\n",
|
||||
" # 关闭数据库连接\n",
|
||||
" cursor.close()\n",
|
||||
" conn.close()\n",
|
||||
" \n",
|
||||
" '''读取商品和券信息'''\n",
|
||||
" FORMID_TWO = \"FORM-6L966171O3RB70TJDB75R6RBI31V2NNACKCJLF1\" # 商品ID券ID关系表\n",
|
||||
" all_skuId = {}\n",
|
||||
" all_couponTemplateId = {}\n",
|
||||
" textField_ljwon3vt = {}\n",
|
||||
" textField_ljxv26ip = {}\n",
|
||||
" list_new = 0\n",
|
||||
" tableField_data_new = {}\n",
|
||||
" form_data_TWO = read_instances(token=TOKEN, formUuid=FORMID_TWO, page=1, n=100)\n",
|
||||
" PAGES_TWO = form_data_TWO.get('totalCount')//100 + 1\n",
|
||||
" for a in range(1, PAGES_TWO+1):\n",
|
||||
" form_data_TWO = read_instances(token=TOKEN, formUuid=FORMID_TWO, page=a, n=100)\n",
|
||||
" for data_TWO in form_data_TWO.get('data'):\n",
|
||||
" all_skuId[data_TWO['formData']['textField_vmqmrm1'] + data_TWO['formData']['textField_cfm11ut']] = data_TWO['formData']['textField_nt0h72h']\n",
|
||||
" all_couponTemplateId[data_TWO['formData']['textField_vmqmrm1'] + data_TWO['formData']['textField_cfm11ut']] = data_TWO['formData']['textField_47og525']\n",
|
||||
" textField_ljwon3vt[data_TWO['formData']['textField_vmqmrm1'] + data_TWO['formData']['textField_cfm11ut']] = data_TWO['formData']['textField_ljwon3vt']\n",
|
||||
" textField_ljxv26ip[data_TWO['formData']['textField_vmqmrm1'] + data_TWO['formData']['textField_cfm11ut']] = data_TWO['formData']['textField_ljxv26ip']\n",
|
||||
" \"\"\" 开始分别读取数据并填充数据进行创建 \"\"\"\n",
|
||||
" for data in form_data['data'][v]['data']['tableField_ljcfpjg4']:\n",
|
||||
" # 基础字段预设\n",
|
||||
" data_new = {}\n",
|
||||
" data_new['textField_ljibuzgd'] = \"\"\n",
|
||||
" data_new['textField_ljibuzge'] = \"\"\n",
|
||||
" try:\n",
|
||||
" # 获取门店编码对应的信息\n",
|
||||
" result = data_NGV[data_NGV['org_code'] == data['textField_ljcfpjg6']]\n",
|
||||
" result = result.reset_index()\n",
|
||||
" # 获取手机号+判断手机号是否在公司名下\n",
|
||||
" # 获取手机号+判断手机号是否在公司名下\n",
|
||||
" if data[\"textField_ljcfpjg8\"] ==\"\": # 手机号未填写,默认填充ngv中对应的手机号\n",
|
||||
" data_new['textField_ljibuzgl'] = result['contact_mobile'][0]\n",
|
||||
" else:\n",
|
||||
" data_new['textField_ljibuzgl'] = data[\"textField_ljcfpjg8\"]\n",
|
||||
" cellPhone_group_name = queryCompanies(data_new['textField_ljibuzgl'])\n",
|
||||
" groupName_all = {}\n",
|
||||
" for data_two in cellPhone_group_name['data']['groupList']:\n",
|
||||
" groupName_all[data_two[\"groupName\"]]=data_two[\"groupId\"]\n",
|
||||
" try:\n",
|
||||
" if len(cellPhone_group_name['data']['groupList']) > 0:\n",
|
||||
" pass\n",
|
||||
" else:\n",
|
||||
" data_new['textField_ljibuzgl'] = data[\"textField_ljcfpjg8\"] \n",
|
||||
" data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] + \"F6中不存在该手机号;\"\n",
|
||||
" except:\n",
|
||||
" data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] + \"F6中不存在该手机号;\"\n",
|
||||
" \n",
|
||||
" if result['group_name'][0] not in groupName_all:\n",
|
||||
" data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] + \"联系电话与门店编码关系错误;\"\n",
|
||||
" # # 本次成交年限(1、2、3) selectField_ljicmdwn\n",
|
||||
" # if data[\"selectField_ljicmdwn\"] ==\"1\" or data[\"selectField_ljicmdwn\"] ==\"2\" or data[\"selectField_ljicmdwn\"] ==\"3\":\n",
|
||||
" # data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] + \"本次成交年限填写错误,请填写【1、2、3】;\"\n",
|
||||
" # 获取公司名称+门店名称+门店版本+到期日+门店编码\n",
|
||||
" data_new['textField_ljibuzgm'] = result['group_name'][0]\n",
|
||||
" data_new['textField_ljibuzgh'] = result['org_name'][0]\n",
|
||||
" data_new['textField_ljibuzgi'] = result['saas_edition_fmt'][0]\n",
|
||||
" data_new['textField_ljibuzgf'] = result['expiry_time'][0]\n",
|
||||
" data_new['textField_ljibuzgn'] = result['org_code'][0]\n",
|
||||
" # 获取上次成交价 textField_ljibuzgg\n",
|
||||
" OrgId_list = queryDetailByOrgId(result['id_own_org'][0])\n",
|
||||
" data_new['textField_ljibuzgg'] = OrgId_list['data']['lastSaasOrderPrice']/OrgId_list['data']['lastTransactionYear']\n",
|
||||
" # 获取提前续约立减额 textField_ljibuzgj\n",
|
||||
" try:\n",
|
||||
" queryPriceInfoBySkuIdnew = queryPriceInfoBySkuId(result['id_own_org'][0],all_skuId[result['saas_edition_fmt'][0] + \"1\"],\"false\")\n",
|
||||
" data_new['textField_ljibuzgj'] = queryPriceInfoBySkuIdnew['data']['renewalDiscountAmount']\n",
|
||||
" except:\n",
|
||||
" data_new['textField_ljibuzgj'] = \"0\"\n",
|
||||
" # 版本续约金额\n",
|
||||
" data_new['textField_lk6g6e2l'] = textField_ljwon3vt[result['saas_edition_fmt'][0] + \"1\"] # 版本续约金额\n",
|
||||
" # 申请优惠券金额 numberField_ljwn6n7w_value 判断优惠券申请金额是否填写,如果没有填写则进行填充\n",
|
||||
" # 本次成交价 numberField_ljwn6n7w_value 判断本次成交价是否填写,如果没有填写则进行填充 \n",
|
||||
" if data[\"numberField_ljwn6n7w_value\"] != \"\":\n",
|
||||
" data_new['textField_ljibuzgk'] = data[\"numberField_ljwn6n7w_value\"]\n",
|
||||
" if int(data[\"numberField_ljwn6n7w_value\"]) <= 0:\n",
|
||||
" data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] + \"本次成交价需要大于0,或者为空;\"\n",
|
||||
" elif data[\"numberField_ljwn6n7w_value\"] == \"\": # 判断本次成交价是否填写,如果没有填写则进行填充 默认取 上次成交价\n",
|
||||
" data_new['textField_ljibuzgk'] = data_new['textField_ljibuzgg']\n",
|
||||
" else:\n",
|
||||
" data_new['textField_ljibuzgk'] =data[\"numberField_ljwn6n7w_value\"]\n",
|
||||
" \n",
|
||||
" # 获取申请优惠券金额 textField_ljibuzgp 申请优惠券金额= 版本价格-提前立减额-本次成交价\n",
|
||||
" data_new['textField_ljibuzgp'] = int(data_new['textField_lk6g6e2l']) - int(data_new['textField_ljibuzgj']) - int(data_new['textField_ljibuzgk'])\n",
|
||||
"\n",
|
||||
" # # 获取本次成交价格 textField_ljibuzgk\n",
|
||||
" # if data[\"numberField_ljwn6n7w_value\"] ==\"\":\n",
|
||||
" # data_new['textField_ljibuzgk'] = int(textField_ljwon3vt[result['saas_edition_fmt'][0] + \"1\"]) - int(data_new['textField_ljibuzgp'])- int(data_new['textField_ljibuzgj'])\n",
|
||||
" # else:\n",
|
||||
" # data_new['textField_ljibuzgk'] = int(textField_ljwon3vt[result['saas_edition_fmt'][0] + \"1\"]) - int(data_new['textField_ljibuzgp']) - int(data_new['textField_ljibuzgj'])\n",
|
||||
" # 获取已有优惠券\n",
|
||||
" passportId=int(cellPhone_group_name['data']['passportId'])\n",
|
||||
" cellPhone=int(data_new['textField_ljibuzgl'])\n",
|
||||
" groupId = int(result['id_own_group'][0])\n",
|
||||
" skuList = queryskuList()\n",
|
||||
" # 过滤 仅入参对应版本的\n",
|
||||
" filtered_data = [item for item in skuList[\"data\"] if item['saasEditionName'] == result['saas_edition_fmt'][0]]\n",
|
||||
" filtered_data_skuList={'code': 200,\n",
|
||||
" 'data': filtered_data,\n",
|
||||
" 'message': 'SUCCESS'}\n",
|
||||
" couponAvailableQuery_list = couponAvailableQuery(cellPhone,groupId,filtered_data_skuList,passportId)\n",
|
||||
" for data_ONE in couponAvailableQuery_list['data']:\n",
|
||||
" data_new['textField_ljibuzge'] = data_new['textField_ljibuzge'] + data_ONE ['couponName'] + \":\"+ str(data_ONE ['couponValue']) +\";\"\n",
|
||||
" if \"优惠券\" in data_ONE ['couponName']:\n",
|
||||
" data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] +\"存在未使用的优惠券;\"\n",
|
||||
" \n",
|
||||
" # 是否低于限价 radioField_ljxz9ho5 是否发券 radioField_ljibuzgc 版本限价 textField_lk6hj6sw\n",
|
||||
" data_new['textField_lk6hj6sw'] = textField_ljxv26ip[result['saas_edition_fmt'][0] + \"1\"]\n",
|
||||
" if int(data_new['textField_ljibuzgk']) < int(textField_ljxv26ip[result['saas_edition_fmt'][0] + \"1\"]):\n",
|
||||
" data_new['radioField_ljxz9ho5'] = \"是\"\n",
|
||||
" # data_new['radioField_ljibuzgc'] = \"否\"\n",
|
||||
" else:\n",
|
||||
" data_new['radioField_ljxz9ho5'] = \"否\"\n",
|
||||
" # 是否的低于上次成交价 radioField_ljxz9ho6 是否发券 radioField_ljibuzgc\n",
|
||||
" if int(data_new['textField_ljibuzgk']) < int(data_new['textField_ljibuzgg']):\n",
|
||||
" data_new['radioField_ljxz9ho6'] = \"是\"\n",
|
||||
" # data_new['radioField_ljibuzgc'] = \"否\"\n",
|
||||
" else:\n",
|
||||
" data_new['radioField_ljxz9ho6'] = \"否\"\n",
|
||||
" # if int(data_new['textField_ljibuzgj']) > 0:\n",
|
||||
" # data_new['textField_ljibuzgd'] = \"存在提前续约立减额,不是30天内过期客户!\"\n",
|
||||
" # if int(data_new['textField_ljibuzgp']) <= 0:\n",
|
||||
" # data_new['textField_ljibuzgd'] = \"申请优惠金额需要大于0元!\"\n",
|
||||
" # # 集合 textField_ljy172na\n",
|
||||
" # data_new['textField_ljy172na'] = str({\n",
|
||||
" # \"cellPhone\":data_new[\"textField_ljibuzgl\"], # 收劵人手机号码\n",
|
||||
" # \"dingDingId\":form_data['data'][v]['originator']['userId'], # 申请人钉钉ID\n",
|
||||
" # \"stage\":2, # 所属阶段(新签:1,续约:2)\n",
|
||||
" # \"couponApplyType\":1, # 优惠券申请类型;新签:saas优惠劵申请:1,短信优惠劵申请:2,人工服务优惠劵申请:3;续约:saas续约优惠劵申请:1,saas升级优惠劵申请:2,短信优惠劵申请:3,人工服务优惠劵申请:4(暂不支持)\n",
|
||||
" # \"detailList\":[{ # 发劵明细列表\n",
|
||||
" # \"couponTemplateId\":all_couponTemplateId[result['saas_edition_fmt'][0] + \"1\"], # 劵模板ID\n",
|
||||
" # \"couponAmount\":int(data_new[\"textField_ljibuzgp\"]), # 劵金额,>0\n",
|
||||
" # \"grantGroup\":1, # 1:发送到公司+人,0:发送到人\n",
|
||||
" # \"groupId\":result['id_own_group'][0], # 发放公司ID,发在公司下=true是有值\n",
|
||||
" # \"skuId\":all_skuId[result['saas_edition_fmt'][0] + \"1\"], # 商品id \n",
|
||||
" # \"orgId\":result['id_own_org'][0], # 门店ID,(申请续约劵并且降级时必填)\n",
|
||||
" # \"demotion\":0, # 降级(是:1,否:0)\n",
|
||||
" # \"demotionSaaSEdition\":0 # 降级版本,门店降级时必填\n",
|
||||
" # }]\n",
|
||||
" # })\n",
|
||||
" # data_new['textField_ljy172na'] = data_new['textField_ljy172na'].replace(\"'\", '\"')\n",
|
||||
"\n",
|
||||
" # data_new['textField_ljy172na'] = data_new['textField_ljy172na'].replace(\" \", \"\")\n",
|
||||
" except:\n",
|
||||
" data_new['textField_ljibuzgd'] = \"数据读取异常:\" + data_new['textField_ljibuzgd']\n",
|
||||
" # CHECK结果校验 textField_ljibuzgd\n",
|
||||
" if data_new['textField_ljibuzgd'] == \"\":\n",
|
||||
" data_new['textField_ljibuzgd'] = \"正确\"\n",
|
||||
" list_new = list_new + 1\n",
|
||||
" # 回传结果\n",
|
||||
" if list_new == 1:\n",
|
||||
" tableField_data_new['tableField_ljibuzgq'] = [data_new]\n",
|
||||
" else:\n",
|
||||
" tableField_data_new['tableField_ljibuzgq'].append(data_new)\n",
|
||||
" res=aggree_approval(token=TOKEN, taskId=taskId, processInstanceId=form_data['data'][v]['processInstanceId'],res_new =\"2268275546837446\",formDataJson=tableField_data_new)\n",
|
||||
" print(form_data['data'][v]['processInstanceId'],res.json())\n",
|
||||
" time.sleep(2)\n",
|
||||
" elif taskId_new==\"sid-23822834-234a-b12a-dfea-a6ad1acc8c1b\": # API自动发券\n",
|
||||
" print(\"开始处理发券!\")\n",
|
||||
" # 读取NGV明细\n",
|
||||
" import psycopg2\n",
|
||||
" import pandas as pd\n",
|
||||
" # 获得连接\n",
|
||||
" conn = psycopg2.connect(database=\"f6_bi\", user=\"BASIC$ro_caowei\", password=\"!ro_caowei123\", host=\"hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com\", port=\"80\")\n",
|
||||
" # 获得游标对象,一个游标对象可以对数据库进行执行操作\n",
|
||||
" cursor = conn.cursor()\n",
|
||||
" import datetime\n",
|
||||
" now_time = datetime.datetime.now()\n",
|
||||
" yes_time = now_time + datetime.timedelta(days=-1)\n",
|
||||
" yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前一天日期\n",
|
||||
" # sql语句 建表\n",
|
||||
" sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_saas_profile_ngv_detail_d\" WHERE \"date_id\" = '{yes_time_nyr}';\"\"\"\n",
|
||||
" # 执行语句\n",
|
||||
" cursor.execute(sql)\n",
|
||||
" # 获取结果集的每一行\n",
|
||||
" rows = cursor.fetchall()\n",
|
||||
" # 获取所有字段名\n",
|
||||
" all_fields = cursor.description\n",
|
||||
" #执行结果转化为dataframe\n",
|
||||
" col = []\n",
|
||||
" for i in all_fields:\n",
|
||||
" col.append(i[0])\n",
|
||||
" data_NGV = pd.DataFrame(list(rows),columns=col)\n",
|
||||
" # 关闭数据库连接\n",
|
||||
" cursor.close()\n",
|
||||
" conn.close()\n",
|
||||
" '''读取商品和券信息'''\n",
|
||||
" FORMID_TWO = \"FORM-6L966171O3RB70TJDB75R6RBI31V2NNACKCJLF1\" # 商品ID券ID关系表\n",
|
||||
" all_skuId = {}\n",
|
||||
" all_couponTemplateId = {}\n",
|
||||
" textField_ljwon3vt = {}\n",
|
||||
" textField_ljxv26ip = {}\n",
|
||||
" list_new = 0\n",
|
||||
" succeed_all = 0\n",
|
||||
" all_all= 0\n",
|
||||
" tableField_data_new = {}\n",
|
||||
" data_new = {}\n",
|
||||
" data_check = {}\n",
|
||||
" formDataJson_check = {}\n",
|
||||
" code_new = \"\"\n",
|
||||
" formDataJson_check['textField_ljcfpjgd'] = \"\"\n",
|
||||
" form_data_TWO = read_instances(token=TOKEN, formUuid=FORMID_TWO, page=1, n=100)\n",
|
||||
" PAGES_TWO = form_data_TWO.get('totalCount')//100 + 1\n",
|
||||
" for a in range(1, PAGES_TWO+1):\n",
|
||||
" form_data_TWO = read_instances(token=TOKEN, formUuid=FORMID_TWO, page=a, n=100)\n",
|
||||
" for data_TWO in form_data_TWO.get('data'):\n",
|
||||
" all_skuId[data_TWO['formData']['textField_vmqmrm1'] + data_TWO['formData']['textField_cfm11ut']] = data_TWO['formData']['textField_nt0h72h']\n",
|
||||
" all_couponTemplateId[data_TWO['formData']['textField_vmqmrm1'] + data_TWO['formData']['textField_cfm11ut']] = data_TWO['formData']['textField_47og525']\n",
|
||||
" textField_ljwon3vt[data_TWO['formData']['textField_vmqmrm1'] + data_TWO['formData']['textField_cfm11ut']] = data_TWO['formData']['textField_ljwon3vt']\n",
|
||||
" textField_ljxv26ip[data_TWO['formData']['textField_vmqmrm1'] + data_TWO['formData']['textField_cfm11ut']] = data_TWO['formData']['textField_ljxv26ip']\n",
|
||||
" FORMID = \"FORM-XHA66881FHMAR0F07GT4Y59GGA972DD6B5OHLB\" # [流程]自动化优惠券(+多年)\n",
|
||||
" # 读取[流程]自动化优惠券(+多年)\n",
|
||||
" form_data_new = read_instances_new(token=TOKEN, formUuid=FORMID, page=1, n=100,CREATE_FROM=CREATE_FROM, CREATE_TO=CREATE_TO)\n",
|
||||
" PAGES = form_data_new.get('totalCount')//100 + 1\n",
|
||||
" ALL_DATA_code = []\n",
|
||||
" \"\"\" 获取全量数据 \"\"\"\n",
|
||||
" for i in range(1, PAGES+1):\n",
|
||||
" form_data_new = read_instances_new(token=TOKEN, formUuid=FORMID, page=i, n=100,CREATE_FROM=CREATE_FROM, CREATE_TO=CREATE_TO)\n",
|
||||
" for data_one in form_data_new.get('data'):\n",
|
||||
" try:\n",
|
||||
" for j in range(0,len(data_one['data']['tableField_l1w05znp'])):\n",
|
||||
" ALL_DATA_code.append(str(data_one['data']['tableField_l1w05znp'][j]['selectField_l1wxjd8l']) + \"+\" + str(data_one['data']['tableField_l1w05znp'][j]['textField_l5j0ym23']))\n",
|
||||
" except:\n",
|
||||
" pass\n",
|
||||
" print(f'读取到 [[流程]自动化优惠券(+多年)表中 {len(ALL_DATA_code)} 条数据!')\n",
|
||||
" for data in form_data['data'][v]['data']['tableField_ljibuzgq']: # -----------------------------------------------\n",
|
||||
" updateFormDataJson_check = {}\n",
|
||||
" # 获取门店编码对应的信息\n",
|
||||
" result = data_NGV[data_NGV['org_code'] == data['textField_ljibuzgn']]\n",
|
||||
" result = result.reset_index()\n",
|
||||
" # 读取[流程]自动化优惠券(+多年)中存在该门店发券流程,避免重复发券\n",
|
||||
" if str(data['textField_ljibuzgn']) + \"+\" + str(all_couponTemplateId[result['saas_edition_fmt'][0] + \"1\"]) in ALL_DATA_code:\n",
|
||||
" # updateFormDataJson_check['textField_ljibuzgd'] = data['textField_ljibuzgd'] + \"[流程]自动化优惠券(+多年)中存在该门店发券流程!;\"\n",
|
||||
" # updateFormDataJson_check['radioField_ljxz9ho5'] = \"否\"\n",
|
||||
" # FORMID = \"FORM-0A966I81N40CV1B48U18UBZAA8R92STJC7IJL9\" # 【测试版本】批量自动发券\n",
|
||||
" # res=updateFormDataJson(TOKEN, FORMID, updateFormDataJson_check)\n",
|
||||
" # print(res.json)\n",
|
||||
" code_new = code_new + data[\"textField_ljibuzgl\"] + \";\"\n",
|
||||
" else:\n",
|
||||
" # res=aggree_approval(token=TOKEN, taskId=taskId, processInstanceId=form_data['data'][v]['processInstanceId'],res_new =\"2268275546837446\",formDataJson=tableField_data_new)\n",
|
||||
" # print(form_data['data'][v]['processInstanceId'],res.json())\n",
|
||||
" # for data_ONE in couponAvailableQuery_list['data']:\n",
|
||||
" # if \"续约优惠券\" in data_ONE ['couponName']:\n",
|
||||
" # data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] +\"存在未使用的续约优惠券;\"\n",
|
||||
" # data_new['textField_ljibuzge'] = data_new['textField_ljibuzge'] + data_ONE ['couponName'] + \":\"+ str(data_ONE ['couponValue']) +\";\"\n",
|
||||
" # check_all = check_all + 1\n",
|
||||
" \n",
|
||||
" data_new['textField_ljy172na'] = str({\n",
|
||||
" \"cellPhone\":data[\"textField_ljibuzgl\"], # 收劵人手机号码\n",
|
||||
" \"dingDingId\":form_data['data'][v]['originator']['userId'], # 申请人钉钉ID\n",
|
||||
" \"stage\":2, # 所属阶段(新签:1,续约:2)\n",
|
||||
" \"couponApplyType\":1, # 优惠券申请类型;新签:saas优惠劵申请:1,短信优惠劵申请:2,人工服务优惠劵申请:3;续约:saas续约优惠劵申请:1,saas升级优惠劵申请:2,短信优惠劵申请:3,人工服务优惠劵申请:4(暂不支持)\n",
|
||||
" \"detailList\":[{ # 发劵明细列表\n",
|
||||
" \"couponTemplateId\":all_couponTemplateId[result['saas_edition_fmt'][0] + \"1\"], # 劵模板ID\n",
|
||||
" \"couponAmount\":int(float(data[\"textField_ljibuzgp\"])), # 劵金额,>0\n",
|
||||
" \"grantGroup\":1, # 1:发送到公司+人,0:发送到人\n",
|
||||
" \"groupId\":result['id_own_group'][0], # 发放公司ID,发在公司下=true是有值\n",
|
||||
" \"skuId\":all_skuId[result['saas_edition_fmt'][0] + \"1\"], # 商品id \n",
|
||||
" \"orgId\":result['id_own_org'][0], # 门店ID,(申请续约劵并且降级时必填)\n",
|
||||
" \"demotion\":0, # 降级(是:1,否:0)\n",
|
||||
" \"demotionSaaSEdition\":0 # 降级版本,门店降级时必填\n",
|
||||
" }]\n",
|
||||
" })\n",
|
||||
" data_list = {\n",
|
||||
" 'textField_ljchgz1f':data['textField_ljibuzgn'], # 门店编码\n",
|
||||
" 'textField_ljchgz1i':data_new['textField_ljy172na'], # 数据集\n",
|
||||
" 'textField_ljchgz1h':data['textField_ljibuzgd'], # check结果\n",
|
||||
" 'textField_ljy1x9kb':form_data['data'][v]['processInstanceId'], # 关联表单id\n",
|
||||
" 'textField_ljf6nf7s':data['radioField_ljibuzgc'] # 是否发券\n",
|
||||
" }\n",
|
||||
" ALL_formData = []\n",
|
||||
" ALL_formData.append(json.dumps(data_list, cls=NpEncoder)) \n",
|
||||
" FORMID_NEW = \"FORM-JD8668C1MFBC3ND4BWO736T7G5Q7318IC0YJLA\" # 【测试版本】自动触发明细表\n",
|
||||
" res = Batch_creation(FORMID_NEW,TOKEN,ALL_formData)\n",
|
||||
" print(data['textField_ljibuzgn'],data[\"textField_ljibuzgl\"],res)\n",
|
||||
" time.sleep(2)\n",
|
||||
" all_all = all_all + 1\n",
|
||||
" if data['textField_ljibuzgd'] == \"正确\" and data['radioField_ljibuzgc'] == \"是\":\n",
|
||||
" succeed_all = succeed_all + 1\n",
|
||||
" fail_all = all_all - succeed_all\n",
|
||||
" if len(code_new)>0:\n",
|
||||
" txt_all = f\"发送成功:{succeed_all}条;发送失败:{fail_all}条;{code_new}在[流程]自动化优惠券(+多年)中有申请记录!\"\n",
|
||||
" else:\n",
|
||||
" txt_all = f\"发送成功:{succeed_all}条;发送失败:{fail_all}条;\"\n",
|
||||
" formDataJson_check = {\n",
|
||||
" 'textField_ljcfpjgd':txt_all\n",
|
||||
" }\n",
|
||||
" res=aggree_approval(token=TOKEN, taskId=taskId, processInstanceId=form_data['data'][v]['processInstanceId'],res_new =\"2268275546837446\",formDataJson=formDataJson_check)\n",
|
||||
" print(form_data['data'][v]['processInstanceId'],res.json())\n",
|
||||
" time.sleep(2)"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "F6processing",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.9.4"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
{
|
||||
"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",
|
||||
"<ipython-input-1-66fb43067687>:45: UserWarning: Pandas requires version '1.4.3' or newer of 'xlsxwriter' (version '1.3.8' currently installed).\n",
|
||||
" df_list.to_excel(r'C:\\Users\\admin\\Desktop\\打印单模板{}.xlsx'.format(data_time))\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import requests\n",
|
||||
"import pandas as pd\n",
|
||||
"import time\n",
|
||||
"\n",
|
||||
"session = requests.Session()\n",
|
||||
"login_url = 'https://print.f6yc.com/print-server/template/getTemplate?clsId=&tempCode=&tempName=¤tPage=1&pageSize=100'\n",
|
||||
"\n",
|
||||
"headers = {\n",
|
||||
" 'Accept':'application/json, text/plain, */*',\n",
|
||||
" 'Accept-Encoding':'gzip, deflate, br, zstd',\n",
|
||||
" 'Accept-Language':'zh-CN,zh;q=0.9',\n",
|
||||
" 'Authorization':'Basic NjAyMzg6Q3dAMzQwODI2',\n",
|
||||
" 'Cache-Control':'no-cache',\n",
|
||||
" 'Cookie':'print-serverSESSIONID=fV0OqIJhtIhjaZD2Way9jN7FkvCnJP63o8p924DT; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%222268275546837446%22%2C%22first_id%22%3A%221753edeb75a603-0155d23aa05675-3d634f03-1327104-1753edeb75b347%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%221753edeb75a603-0155d23aa05675-3d634f03-1327104-1753edeb75b347%22%7D',\n",
|
||||
" 'Pragma':'no-cache',\n",
|
||||
" 'Referer':'https://print.f6yc.com/print-server/ui/index.html',\n",
|
||||
" 'Sec-Ch-Ua':'\"Chromium\";v=\"122\", \"Not(A:Brand\";v=\"24\", \"Google Chrome\";v=\"122\"',\n",
|
||||
" 'Sec-Ch-Ua-Mobile':'?0',\n",
|
||||
" 'Sec-Ch-Ua-Platform':'\"Windows\"',\n",
|
||||
" 'Sec-Fetch-Dest':'empty',\n",
|
||||
" 'Sec-Fetch-Mode':'cors',\n",
|
||||
" 'Sec-Fetch-Site':'same-origin',\n",
|
||||
" 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36'\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"response = session.get(login_url,headers=headers)\n",
|
||||
"response = response.json()\n",
|
||||
"total = response['data']['total'] //100 + 2\n",
|
||||
"ALL_DATA_service = []\n",
|
||||
"for i in range(1,total):\n",
|
||||
" login_url = 'https://print.f6yc.com/print-server/template/getTemplate?clsId=&tempCode=&tempName=¤tPage='+ str(i) +'&pageSize=100'\n",
|
||||
" form_data = session.get(login_url,headers=headers)\n",
|
||||
" form_data = form_data.json()\n",
|
||||
" for data in form_data.get('data').get('list'):\n",
|
||||
" list = {\n",
|
||||
" 'rowId': data['rowId'],\n",
|
||||
" 'tempName': data['tempName'],\n",
|
||||
" 'tempCode': data['tempCode']\n",
|
||||
" }\n",
|
||||
" # print(i,list)\n",
|
||||
" ALL_DATA_service.append(list)\n",
|
||||
"df_list = pd.DataFrame(ALL_DATA_service)\n",
|
||||
"data_time = time.strftime(\"%Y-%m-%d %H:%M:%S\", time.localtime())\n",
|
||||
"data_time = data_time.replace(':', '-')\n",
|
||||
"df_list.to_excel(r'C:\\Users\\admin\\Desktop\\打印单模板{}.xlsx'.format(data_time))"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "F6processing",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.9.4"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,649 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"8\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"<ipython-input-3-d4648c6f35ad>:30: UserWarning: Pandas requires version '1.4.3' or newer of 'xlsxwriter' (version '1.3.8' currently installed).\n",
|
||||
" data_details.to_excel(r'C:\\Users\\admin\\Desktop\\NGV明细123123123.xlsx')\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# -*- coding: utf-8 -*-\n",
|
||||
"import psycopg2\n",
|
||||
"import pandas as pd\n",
|
||||
"import calendar\n",
|
||||
"import datetime\n",
|
||||
"# 获得连接\n",
|
||||
"conn = psycopg2.connect(database=\"f6_bi\", user=\"BASIC$ro_caowei\", password=\"!ro_caowei123\", host=\"hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com\", port=\"80\")\n",
|
||||
"# 获得游标对象,一个游标对象可以对数据库进行执行操作\n",
|
||||
"cursor = conn.cursor()\n",
|
||||
"\n",
|
||||
"# 获取当前日期\n",
|
||||
"now_time = datetime.datetime.now()\n",
|
||||
"yes_time = now_time + datetime.timedelta(days=-4)\n",
|
||||
"yes_time_new = now_time + datetime.timedelta(days=-1)\n",
|
||||
"yes_time_nyr1 = yes_time_new.strftime('%Y%m%d')\n",
|
||||
"yes_time_nyr2 = yes_time.strftime('%Y%m%d')# 获取前7天日期\n",
|
||||
"# sql语句 建表\n",
|
||||
"sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_dataservice_saas_org_health_warning\" WHERE \"pt\" = '20230820';\"\"\"\n",
|
||||
"# 执行语句\n",
|
||||
"cursor.execute(sql)\n",
|
||||
"# 获取结果集的每一行\n",
|
||||
"rows = cursor.fetchall()\n",
|
||||
"# 获取所有字段名\n",
|
||||
"all_fields = cursor.description\n",
|
||||
"#执行结果转化为dataframe\n",
|
||||
"col = []\n",
|
||||
"for i in all_fields:\n",
|
||||
" col.append(i[0])\n",
|
||||
"data_details = pd.DataFrame(list(rows),columns=col)\n",
|
||||
"data_details.to_excel(r'C:\\Users\\admin\\Desktop\\NGV明细123123123.xlsx')\n",
|
||||
"# 关闭数据库连接\n",
|
||||
"cursor.close()\n",
|
||||
"conn.close()\n",
|
||||
"print(len(data_details))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"0 霍创业\n",
|
||||
"1 魏元盟\n",
|
||||
"2 赵旭伟\n",
|
||||
"3 曾令成\n",
|
||||
"4 王斌\n",
|
||||
"5 胡楠\n",
|
||||
"6 杨挺\n",
|
||||
"7 邢恒岭\n",
|
||||
"Name: service_impl_principal, dtype: object"
|
||||
]
|
||||
},
|
||||
"execution_count": 5,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"data_details['service_impl_principal']"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 17,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"13\n",
|
||||
"' textField_l8ceppnl ': data_details[ \"活跃健康状态变化\" ][i], # \"活跃健康状态变化\"\n",
|
||||
"' textField_l8ceppnm ': data_details[ \"客户状态变化日期\" ][i], # \"客户状态变化日期\"\n",
|
||||
"' dateField_l9dy6f8g ': data_details[ \"初始日\" ][i], # \"初始日\"\n",
|
||||
"' dateField_l9dy6f8h ': data_details[ \"推进日\" ][i], # \"推进日\"\n",
|
||||
"' textField_l8ceppo5 ': data_details[ \"公司名称\" ][i], # \"公司名称\"\n",
|
||||
"' textField_lief8uqx ': data_details[ \"门店类型\" ][i], # \"门店类型\"\n",
|
||||
"' textField_lief8ur1 ': data_details[ \"SaaS版本名称\" ][i], # \"SaaS版本名称\"\n",
|
||||
"' textField_lief8ur2 ': data_details[ \"saas客户类型\" ][i], # \"saas客户类型\"\n",
|
||||
"' textField_l8ceppo9 ': data_details[ \"公司等级\" ][i], # \"公司等级\"\n",
|
||||
"' textField_lief8uqy ': data_details[ \"门店阶段\" ][i], # \"门店阶段\"\n",
|
||||
"' textField_lief8ur0 ': data_details[ \"系统版本名称:E.L/E.S\" ][i], # \"系统版本名称:E.L/E.S\"\n",
|
||||
"' dateField_lief8uqz ': data_details[ \"SaaS门店开户时间\" ][i], # \"SaaS门店开户时间\"\n",
|
||||
"' textField_l8ceppo4 ': data_details[ \"门店编码\" ][i], # \"门店编码\"\n",
|
||||
"' textField_l8ceppo6 ': data_details[ \"门店名称\" ][i], # \"门店名称\"\n",
|
||||
"' textField_l8ceppo7 ': data_details[ \"联系人\" ][i], # \"联系人\"\n",
|
||||
"' textField_l8ceppo8 ': data_details[ \"联系方式\" ][i], # \"联系方式\"\n",
|
||||
"' textField_l8ceppoi ': data_details[ \"大区\" ][i], # \"大区\"\n",
|
||||
"' textField_l8ceppoj ': data_details[ \"省\" ][i], # \"省\"\n",
|
||||
"' employeeField_l8cepppu ': data_details[ \"运营负责人\" ][i], # \"运营负责人\"\n",
|
||||
"' textField_lief8ur3 ': data_details[ \"区域经理\" ][i], # \"区域经理\"\n",
|
||||
"' textField_lief8ur4 ': data_details[ \"城市\" ][i], # \"城市\"\n",
|
||||
"' textareaField_l8ceppop ': data_details[ \"跟进记录描述\" ][i], # \"跟进记录描述\"\n",
|
||||
"' radioField_l8ceppr2 ': data_details[ \"正常使用\" ][i], # \"正常使用\"\n",
|
||||
"' multiSelectField_l8cepprp ': data_details[ \"仅部分业务登记具体项\" ][i], # \"仅部分业务登记具体项\"\n",
|
||||
"' multiSelectField_l8cepprq ': data_details[ \"仅用部分功能具体项\" ][i], # \"仅用部分功能具体项\"\n",
|
||||
"' multiSelectField_l8cepprr ': data_details[ \"非目标客户具体项\" ][i], # \"非目标客户具体项\"\n",
|
||||
"' multiSelectField_l8cepprs ': data_details[ \"非主系统具体项\" ][i], # \"非主系统具体项\"\n",
|
||||
"' textField_l8cepps5 ': data_details[ \"正常使用其他\" ][i], # \"正常使用其他\"\n",
|
||||
"' radioField_l8ceppr4 ': data_details[ \"门店原因\" ][i], # \"门店原因\"\n",
|
||||
"' selectField_l8ceppru ': data_details[ \"愿意用没时间用具体项\" ][i], # \"愿意用没时间用具体项\"\n",
|
||||
"' selectField_l8cepprv ': data_details[ \"愿意用没专人用具体项\" ][i], # \"愿意用没专人用具体项\"\n",
|
||||
"' selectField_l8cepprw ': data_details[ \"不愿意使用具体项\" ][i], # \"不愿意使用具体项\"\n",
|
||||
"' selectField_l8cepprx ': data_details[ \"暂时不用系统具体项\" ][i], # \"暂时不用系统具体项\"\n",
|
||||
"' selectField_l8ceppry ': data_details[ \"没有购买诉求具体项\" ][i], # \"没有购买诉求具体项\"\n",
|
||||
"' selectField_l8cepprz ': data_details[ \"加盟其他连锁具体项\" ][i], # \"加盟其他连锁具体项\"\n",
|
||||
"' textField_l8ceppr5 ': data_details[ \"门店原因其他\" ][i], # \"门店原因其他\"\n",
|
||||
"' radioField_l8cepprd ': data_details[ \"服务原因\" ][i], # \"服务原因\"\n",
|
||||
"' selectField_l8cepps0 ': data_details[ \"培训后不会用具体项\" ][i], # \"培训后不会用具体项\"\n",
|
||||
"' selectField_l8cepps1 ': data_details[ \"培训后未使用具体项\" ][i], # \"培训后未使用具体项\"\n",
|
||||
"' selectField_l8cepps2 ': data_details[ \"无人培训具体项\" ][i], # \"无人培训具体项\"\n",
|
||||
"' selectField_l8cepps3 ': data_details[ \"已培训使用少具体项\" ][i], # \"已培训使用少具体项\"\n",
|
||||
"' textField_l8ceppri ': data_details[ \"服务原因其他\" ][i], # \"服务原因其他\"\n",
|
||||
"' radioField_l8cepprg ': data_details[ \"产品原因\" ][i], # \"产品原因\"\n",
|
||||
"' textField_l8jwaxkh ': data_details[ \"具体功能不满足项\" ][i], # \"具体功能不满足项\"\n",
|
||||
"' textField_l8cepprj ': data_details[ \"产品原因其他\" ][i], # \"产品原因其他\"\n",
|
||||
"' radioField_l8cepprh ': data_details[ \"未正式切换\" ][i], # \"未正式切换\"\n",
|
||||
"' textField_l8cepps4 ': data_details[ \"未正式切换其他\" ][i], # \"未正式切换其他\"\n",
|
||||
"' employeeField_l8ceppp4 ': data_details[ \"跟进人\" ][i], # \"跟进人\"\n",
|
||||
"' dateField_l8cepppi ': data_details[ \"跟进时间\" ][i], # \"跟进时间\"\n",
|
||||
"' radioField_l8ceppq7 ': data_details[ \"状态\" ][i], # \"状态\"\n",
|
||||
"' radioField_l8cepppr ': data_details[ \"跟进后的结果\" ][i], # \"跟进后的结果\"\n",
|
||||
"' employeeField_lbfwxou1 ': data_details[ \"区域客服\" ][i], # \"区域客服\"\n",
|
||||
"' textField_lifbrlco ': data_details[ \"门店类型\" ][i], # \"门店类型\"\n",
|
||||
"' textField_lifbrlcp ': data_details[ \"门店阶段\" ][i], # \"门店阶段\"\n",
|
||||
"' dateField_lifbrld1 ': data_details[ \"Saas门店开户时间\" ][i], # \"Saas门店开户时间\"\n",
|
||||
"' textField_lifbrlcr ': data_details[ \"系统版本名称:E.L/E.S\" ][i], # \"系统版本名称:E.L/E.S\"\n",
|
||||
"' textField_lifbrlcx ': data_details[ \"SaaS版本名称\" ][i], # \"SaaS版本名称\"\n",
|
||||
"' textField_lifbrlcy ': data_details[ \"saas客户类型\" ][i], # \"saas客户类型\"\n",
|
||||
"' employeeField_lifbrld2 ': data_details[ \"区域经理\" ][i], # \"区域经理\"\n",
|
||||
"' textField_lifbrld0 ': data_details[ \"城市\" ][i], # \"城市\"\n",
|
||||
"新建第 99 条数据! {'result': ['FINST-DK866Z9100GB9HXC7DODT43NSWNL27CIOFLILWO', 'FINST-DK866Z9100GB9HXC7DODT43NSWNL2PKIOFLIL0P', 'FINST-DK866Z9100GB9HXC7DODT43NSWNL2FTIOFLIL4P', 'FINST-DK866Z9100GB9HXC7DODT43NSWNL2Y0JOFLIL8P', 'FINST-DK866Z9100GB9HXC7DODT43NSWNL2Y8JOFLILCP', 'FINST-DK866Z9100GB9HXC7DODT43NSWNL2RGJOFLILGP', 'FINST-DK866Z9100GB9HXC7DODT43NSWNL2WOJOFLILKP', 'FINST-DK866Z9100GB9HXC7DODT43NSWNL2TWJOFLILOP', 'FINST-DK866Z9100GB9HXC7DODT43NSWNL2B4KOFLILSP', 'FINST-DK866Z9100GB9HXC7DODT43NSWNL2TBKOFLILWP', 'FINST-DK866Z9100GB9HXC7DODT43NSWNL2EJKOFLIL0Q', 'FINST-DK866Z9100GB9HXC7DODT43NSWNL2ORKOFLIL4Q', 'FINST-DK866Z9100GB9HXC7DODT43NSWNL27ZKOFLIL8Q']}\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# -*- coding: utf-8 -*-\n",
|
||||
"import psycopg2\n",
|
||||
"import pandas as pd\n",
|
||||
"import calendar\n",
|
||||
"import datetime\n",
|
||||
"# 获得连接\n",
|
||||
"conn = psycopg2.connect(database=\"f6_bi\", user=\"BASIC$ro_caowei\", password=\"!ro_caowei123\", host=\"hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com\", port=\"80\")\n",
|
||||
"# 获得游标对象,一个游标对象可以对数据库进行执行操作\n",
|
||||
"cursor = conn.cursor()\n",
|
||||
"\n",
|
||||
"# 获取当前日期\n",
|
||||
"now_time = datetime.datetime.now()\n",
|
||||
"yes_time = now_time + datetime.timedelta(days=-4)\n",
|
||||
"yes_time_new = now_time + datetime.timedelta(days=-1)\n",
|
||||
"yes_time_nyr1 = yes_time_new.strftime('%Y%m%d')\n",
|
||||
"yes_time_nyr2 = yes_time.strftime('%Y%m%d')# 获取前7天日期\n",
|
||||
"# sql语句 建表\n",
|
||||
"sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_dataservice_saas_org_health_warning\" WHERE \"pt\" = '{yes_time_nyr2}' or \"pt\" = '{yes_time_nyr1}';\"\"\"\n",
|
||||
"# 执行语句\n",
|
||||
"cursor.execute(sql)\n",
|
||||
"# 获取结果集的每一行\n",
|
||||
"rows = cursor.fetchall()\n",
|
||||
"# 获取所有字段名\n",
|
||||
"all_fields = cursor.description\n",
|
||||
"#执行结果转化为dataframe\n",
|
||||
"col = []\n",
|
||||
"for i in all_fields:\n",
|
||||
" col.append(i[0])\n",
|
||||
"data_details = pd.DataFrame(list(rows),columns=col)\n",
|
||||
"# data_NGV.to_excel(r'C:\\Users\\admin\\Desktop\\NGV明细.xlsx')\n",
|
||||
"# 关闭数据库连接\n",
|
||||
"cursor.close()\n",
|
||||
"conn.close()\n",
|
||||
"print(len(data_details))\n",
|
||||
"\n",
|
||||
"# 基础函数配置\n",
|
||||
"import pandas as pd\n",
|
||||
"import pandas as pd\n",
|
||||
"import requests\n",
|
||||
"from pathlib import Path\n",
|
||||
"from urllib.parse import quote\n",
|
||||
"import json\n",
|
||||
"import numpy as np\n",
|
||||
"import time\n",
|
||||
"\n",
|
||||
"ROOT = Path('.').absolute() # 当前工作目录\n",
|
||||
"\n",
|
||||
"def generateToken() -> str:\n",
|
||||
" \"\"\" 生成 token \"\"\"\n",
|
||||
"\n",
|
||||
" token_api = 'https://api.dingtalk.com/v1.0/oauth2/accessToken'\n",
|
||||
"\n",
|
||||
" # 该信息在钉钉开放应用中\n",
|
||||
" data = {\n",
|
||||
" \"appKey\": \"ding5kqocon5s9oph5uq\",\n",
|
||||
" \"appSecret\": 'HL1jgsIIfLAC0eTH0A1m4mwxUDqbgsiPeCCGGE3ocM6qJBTIW7Ivt9drxF_Z4Kb_'\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(token_api, json=data)\n",
|
||||
" token = res.json()['accessToken']\n",
|
||||
"\n",
|
||||
" return token\n",
|
||||
"\n",
|
||||
"def read_instances(token, formUuid, page, n):\n",
|
||||
" \"\"\" 函数功能:读取普通表单的所有数据 \"\"\"\n",
|
||||
"\n",
|
||||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" \"x-acs-dingtalk-access-token\": token\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" formData = {\n",
|
||||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||||
" \"userId\" : \"yida_pub_account\",\n",
|
||||
" \"language\" : \"zh_CN\",\n",
|
||||
" \"formUuid\" : formUuid,\n",
|
||||
" \"currentPage\" : page,\n",
|
||||
" \"pageSize\" : n\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(api, headers=headers, json=formData)\n",
|
||||
" return res.json()\n",
|
||||
"\n",
|
||||
"def read_delete(token, formInstanceId):\n",
|
||||
" \"\"\" 函数功能:调用本接口删除表单数据。 \"\"\"\n",
|
||||
"\n",
|
||||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances'\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" \"x-acs-dingtalk-access-token\": token\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" formData = {\n",
|
||||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||||
" \"userId\" : \"yida_pub_account\",\n",
|
||||
" \"language\" : \"zh_CN\",\n",
|
||||
" \"formInstanceId\" : formInstanceId\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.delete(api, headers=headers, json=formData)\n",
|
||||
" return res.json()\n",
|
||||
"\n",
|
||||
"def read_new(FORMID,formData):\n",
|
||||
" \"\"\" 通过实例id 获取表单内容 \"\"\"\n",
|
||||
" api = f'https://api.dingtalk.com/v1.0/yida/forms/instances'\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||||
" }\n",
|
||||
" payload = {\n",
|
||||
" \"formUuid\" : FORMID,\n",
|
||||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||||
" \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
||||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||||
" \"language\" : \"zh_CN\",\n",
|
||||
" \"userId\" : \"yida_pub_account\"\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(api, headers=headers, json=payload)\n",
|
||||
" print(res.json())\n",
|
||||
"\n",
|
||||
" return res.json()\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"def component(FORMID,TOKEN):\n",
|
||||
" \"\"\" 获取组件信息 \"\"\"\n",
|
||||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/formFields'\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||||
" }\n",
|
||||
" payload = {\n",
|
||||
" \"formUuid\" : FORMID,\n",
|
||||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||||
" # \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
||||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||||
" # \"language\" : \"zh_CN\",\n",
|
||||
" \"userId\" : \"yida_pub_account\"\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.get(api, headers=headers, json=payload)\n",
|
||||
"\n",
|
||||
" return res.json()\n",
|
||||
"def Batch_creation(FORMID,TOKEN,ALL_formData):\n",
|
||||
" \"\"\" 获取组件信息 \"\"\"\n",
|
||||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchSave'\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||||
" }\n",
|
||||
" payload = {\n",
|
||||
" # \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
||||
" \"noExecuteExpression\" : \"false\",\n",
|
||||
" \"formUuid\" : FORMID,\n",
|
||||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||||
" \"asynchronousExecution\" : \"false\",\n",
|
||||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||||
" \"keepRunningAfterException\" : \"false\",\n",
|
||||
" \"userId\" : \"2268275546837446\",\n",
|
||||
" \"formDataJsonList\" : json.dumps(ALL_formData, cls=NpEncoder),\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(api, headers=headers, json=payload)\n",
|
||||
" return res.json()\n",
|
||||
"\n",
|
||||
"def delete_in_batches(FORMID,TOKEN,ALL_DATA_instance):\n",
|
||||
" \"\"\" 批量删除表单实例 \"\"\"\n",
|
||||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchRemove'\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" payload = {\n",
|
||||
" \"formUuid\" : FORMID,\n",
|
||||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||||
" \"asynchronousExecution\" : \"true\",\n",
|
||||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||||
" \"formInstanceIdList\" : json.dumps(ALL_DATA_instance, cls=NpEncoder),\n",
|
||||
" \"userId\" : \"yida_pub_account\",\n",
|
||||
" \"executeExpression\" : \"false\" # 不触发\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(api, headers=headers, json=payload)\n",
|
||||
" return res.json()\n",
|
||||
"\n",
|
||||
"def delete_in(TOKEN,formInstanceIdList):\n",
|
||||
" \"\"\" 逐条删除表单实例 \"\"\"\n",
|
||||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances?appType=APP_UYZ0KG6L0CCNV80GZ66O&systemToken=XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2&userId=yida_pub_account&language=zh_CN&formInstanceId={formInstanceIdList}'\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||||
" }\n",
|
||||
" res = requests.delete(api, headers=headers)\n",
|
||||
" return res.json()\n",
|
||||
"\n",
|
||||
"class NpEncoder(json.JSONEncoder):\n",
|
||||
" def default(self, obj):\n",
|
||||
" if isinstance(obj, np.integer):\n",
|
||||
" return int(obj)\n",
|
||||
" elif isinstance(obj, np.floating):\n",
|
||||
" return float(obj)\n",
|
||||
" elif isinstance(obj, np.ndarray):\n",
|
||||
" return obj.tolist()\n",
|
||||
" else:\n",
|
||||
" return super(NpEncoder, self).default(obj)\n",
|
||||
"TOKEN = generateToken() \n",
|
||||
"'''读取员工对应关系:宜搭员工-ID对应表 '''\n",
|
||||
"FORMID = \"FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6\" # 宜搭员工-ID对应表 FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6\n",
|
||||
"form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
|
||||
"PAGES = form_data.get('totalCount')//100 + 1\n",
|
||||
"ALL_DATA_staff = {}\n",
|
||||
"\"\"\" 获取全量数据 \"\"\"\n",
|
||||
"for i in range(1, PAGES+1):\n",
|
||||
" # form_data = read_processes_instances(token=TOKEN, formUuid=FORMID, createFromTimeGMT=CREATE_FROM, createToTimeGMT=CREATE_TO, page=i, n=100, searchField={'textField_l7if5ff9': '否'})\n",
|
||||
" form_data = read_instances(token=TOKEN, formUuid=FORMID, page=i, n=100)\n",
|
||||
" for data in form_data.get('data'):\n",
|
||||
" ALL_DATA_staff[data['formData']['textField_lfrw3u58']]=data['formData']['textField_lfrw3u59']\n",
|
||||
"\n",
|
||||
"'''获取表内控件信息 '''\n",
|
||||
"FORMID = \"FORM-CP766081P0BBRV2AEB645ATM0KO62IHOWBFIL1\"\n",
|
||||
"component_list = component(FORMID,TOKEN)\n",
|
||||
"for i in range(len(component_list['result'])):\n",
|
||||
" componentName = component_list['result'][i]['componentName']\n",
|
||||
" name_value = component_list['result'][i]['label']['value']\n",
|
||||
" fieldId = component_list['result'][i]['fieldId']\n",
|
||||
" print(\"'\",fieldId,\"':\",\"data_details[\",name_value,\"][i], # \",name_value)\n",
|
||||
"\n",
|
||||
"'''读取 运营负责人-区域客服 '''\n",
|
||||
"FORMID = \"FORM-YZ9664D1DM8BX1PV7MUGU9ZOBQ3I36PI8DFILB\" # 运营负责人-区域客服 FORM-YZ9664D1DM8BX1PV7MUGU9ZOBQ3I36PI8DFILB\n",
|
||||
"form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
|
||||
"PAGES = form_data.get('totalCount')//10 + 1\n",
|
||||
"ALL_DATA_service = {}\n",
|
||||
"\"\"\" 获取全量数据 \"\"\"\n",
|
||||
"for i in range(1, PAGES+1):\n",
|
||||
" # form_data = read_processes_instances(token=TOKEN, formUuid=FORMID, createFromTimeGMT=CREATE_FROM, createToTimeGMT=CREATE_TO, page=i, n=100, searchField={'textField_l7if5ff9': '否'})\n",
|
||||
" form_data = read_instances(token=TOKEN, formUuid=FORMID, page=i, n=100)\n",
|
||||
" for data in form_data.get('data'):\n",
|
||||
" ALL_DATA_service[data['formData']['textField_lifdgt27']]=data['formData']['textField_lifdgt26']\n",
|
||||
" \n",
|
||||
"'''批量删除数据'''\n",
|
||||
"# for i in range(0,10):\n",
|
||||
"# default = True\n",
|
||||
"# while default:\n",
|
||||
"# FORMID = \"FORM-CP766081P0BBRV2AEB645ATM0KO62IHOWBFIL1\" \n",
|
||||
"# form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
|
||||
"# PAGES = form_data.get('totalCount')//100 +1 \n",
|
||||
"# print(form_data.get('totalCount'))\n",
|
||||
"# if form_data.get('totalCount')<=0:\n",
|
||||
"# default = False\n",
|
||||
"# for i in range(PAGES, 1,-1):\n",
|
||||
"# ALL_DATA_instance = []\n",
|
||||
"# form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
|
||||
"# for data in form_data.get('data'):\n",
|
||||
"# ALL_DATA_instance.append(data['formInstanceId'])\n",
|
||||
"# print(f'读取到表单中 {len(ALL_DATA_instance)} 条数据!')\n",
|
||||
"# red_delete = delete_in_batches(FORMID,TOKEN,ALL_DATA_instance)\n",
|
||||
"# form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
|
||||
"# for data in form_data.get('data'):\n",
|
||||
"# formInstanceId = data['formInstanceId']\n",
|
||||
"# delete_in(TOKEN,formInstanceId)\n",
|
||||
"# print(f'单条删除 {formInstanceId} 数据!')\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"'''遍历数据进行新建'''\n",
|
||||
"data_details = data_details.astype('string')\n",
|
||||
"data_details = data_details.fillna('',inplace=False)\n",
|
||||
"for a in range(0,len(data_details[\"pt\"]),100):\n",
|
||||
" ALL_formData = []\n",
|
||||
" for i in range(a,a+100): # for i in range(len(data_NGV[\"date_fmt\"])):\n",
|
||||
" try:\n",
|
||||
" date_obj1 = datetime.datetime.strptime(data_details[\"init_day\"][i], \"%Y%m%d\").strftime(\"%Y-%m-%d\")\n",
|
||||
" date_obj2 = datetime.datetime.strptime(data_details[\"push_day\"][i], \"%Y%m%d\").strftime(\"%Y-%m-%d\")\n",
|
||||
" formData = {\n",
|
||||
" 'textField_l8ceppnl':data_details[\"health_warning_info\"][i],#\"活跃健康状态变化\"\n",
|
||||
" 'dateField_l9dy6f8g':int(time.mktime(time.strptime(date_obj1, \"%Y-%m-%d\"))*1000) if data_details[\"init_day\"][i] !='' else '',#\"初始日\"\n",
|
||||
" 'dateField_l9dy6f8h':int(time.mktime(time.strptime(date_obj2, \"%Y-%m-%d\"))*1000) if data_details[\"push_day\"][i] !='' else '',#\"推进日\"\n",
|
||||
" 'textField_l8ceppo5':data_details[\"group_name\"][i],#\"公司名称\"\n",
|
||||
" 'textField_lief8uqx':data_details[\"org_type\"][i],#\"门店类型\"\n",
|
||||
" 'textField_lief8ur1':data_details[\"saas_edition_fmt\"][i],#\"SaaS版本名称\"\n",
|
||||
" 'textField_lief8ur2':data_details[\"saas_customer_type\"][i],#\"saas客户类型\"\n",
|
||||
" 'textField_l8ceppo9':data_details[\"group_grade\"][i],#\"公司等级\"\n",
|
||||
" 'textField_lief8uqy':data_details[\"org_stage\"][i],#\"门店阶段\"\n",
|
||||
" 'textField_lief8ur0':data_details[\"saas_version_fmt\"][i],#\"系统版本名称:E.L/E.S\"\n",
|
||||
" 'dateField_lief8uqz':int(time.mktime(time.strptime(data_details[\"saas_create_time\"][i], \"%Y-%m-%d %H:%M:%S\"))*1000) if data_details[\"saas_create_time\"][i] !='' else '',#\"SaaS门店开户时间\"\n",
|
||||
" 'textField_l8ceppo4':data_details[\"org_code\"][i],#\"门店编码\"\n",
|
||||
" 'textField_l8ceppo6':data_details[\"org_name\"][i],#\"门店名称\"\n",
|
||||
" 'textField_l8ceppo7':data_details[\"contacts\"][i],#\"联系人\"\n",
|
||||
" 'textField_l8ceppo8':data_details[\"contact_mobile\"][i],#\"联系方式\"\n",
|
||||
" 'textField_l8ceppoi':data_details[\"region_name\"][i],#\"大区\"\n",
|
||||
" 'textField_l8ceppoj':data_details[\"province_name\"][i],#\"省\"\n",
|
||||
" # 'employeeField_l8cepppu':ALL_DATA_staff[data_details[\"service_impl_principal\"][i]],#\"运营负责人\"\n",
|
||||
" 'textField_lief8ur3':data_details[\"area_manager\"][i],#\"区域经理\"\n",
|
||||
" 'textField_lief8ur4':data_details[\"city_name\"][i],#\"城市\"\n",
|
||||
" # 'employeeField_l8ceppp4':ALL_DATA_staff[ALL_DATA_service[data_details[\"service_impl_principal\"][i]]],#\"跟进人\"\n",
|
||||
" # 'employeeField_lbfwxou1':ALL_DATA_staff[ALL_DATA_service[data_details[\"service_impl_principal\"][i]]],#\"区域客服\"\n",
|
||||
" }\n",
|
||||
" try:\n",
|
||||
" formData['employeeField_l8cepppu'] = ALL_DATA_staff[data_details[\"service_impl_principal\"][i]]\n",
|
||||
" formData['employeeField_l8ceppp4'] = ALL_DATA_staff[ALL_DATA_service[data_details[\"service_impl_principal\"][i]]]\n",
|
||||
" formData['employeeField_lbfwxou1'] = ALL_DATA_staff[ALL_DATA_service[data_details[\"service_impl_principal\"][i]]]\n",
|
||||
" except:\n",
|
||||
" formData['employeeField_l8cepppu'] = \"\"\n",
|
||||
" formData['employeeField_l8ceppp4'] = \"\"\n",
|
||||
" formData['employeeField_lbfwxou1'] = \"\"\n",
|
||||
"\n",
|
||||
" ALL_formData.append(json.dumps(formData, cls=NpEncoder)) \n",
|
||||
" except:\n",
|
||||
" pass\n",
|
||||
" FORMID = \"FORM-33666CB1XDU37AU57RKPK990C79S2YMOEEC8LS\" \n",
|
||||
" res_new = Batch_creation(FORMID,TOKEN,ALL_formData)\n",
|
||||
" print(\"新建第\",i,\"条数据!\",res_new)\n",
|
||||
" time.sleep(10)\n",
|
||||
"\n",
|
||||
"# '''校验是否新建正常'''\n",
|
||||
"# time.sleep(30)\n",
|
||||
"# FORMID = \"FORM-CP766081P0BBRV2AEB645ATM0KO62IHOWBFIL1\" \n",
|
||||
"# form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
|
||||
"# if int(form_data.get('totalCount')) ==len(data_details):\n",
|
||||
"# print(\"数据新建成功!\")\n",
|
||||
"# else:\n",
|
||||
" \n",
|
||||
"# def start_instance_process(token: str, name):\n",
|
||||
"\n",
|
||||
"# \"\"\"发送宜搭表单 -- 发起流程表单\n",
|
||||
"\n",
|
||||
"# Args:\n",
|
||||
"# token \n",
|
||||
"# data:需要发送的数据字典\n",
|
||||
"# \"\"\"\n",
|
||||
"\n",
|
||||
"# yida_api = \"https://api.dingtalk.com/v1.0/yida/processes/instances/start\"\n",
|
||||
"\n",
|
||||
"# headers = {\n",
|
||||
"# \"Content-Type\": \"application/json\",\n",
|
||||
"# \"x-acs-dingtalk-access-token\": token\n",
|
||||
"# }\n",
|
||||
"\n",
|
||||
"# send_data = {\n",
|
||||
"# \"textField_l9fe0uiw\": name,\n",
|
||||
"# \"textField_l9fe0uiv\": name\n",
|
||||
"# }\n",
|
||||
"\n",
|
||||
"# payload = {\n",
|
||||
"# \"appType\": \"APP_TNVBVZ3K8G56HG03Z45Q\",\n",
|
||||
"# \"systemToken\": \"CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1\",\n",
|
||||
"# \"userId\": \"yida_pub_account\",# 超级管理员账号\n",
|
||||
"# \"language\": \"zh_CN\",\n",
|
||||
"# \"formUuid\": \"FORM-UX866Q61GNLAZBCIEDF77BGVIIR83K82WYPHLH2\",\n",
|
||||
"# \"formDataJson\": json.dumps(send_data),\n",
|
||||
"# \"processCode\":\"TPROC--UX866Q61GNLAZBCIEDF77BGVIIR83M92WYPHLI2\"\n",
|
||||
"# }\n",
|
||||
"\n",
|
||||
"# res = requests.post(yida_api, headers=headers, json=payload)\n",
|
||||
"# return res\n",
|
||||
"# try:\n",
|
||||
"# name = \"[表单]异常服务跟进待办2023 新建条数不正确!\"\n",
|
||||
"# res_yujing = start_instance_process(TOKEN,name)\n",
|
||||
"# except:\n",
|
||||
"# pass"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"{'data': [{'rank': 1,\n",
|
||||
" 'appItem': {'icon': 'https://static.dingtalk.com/media/lALPDeC2uGvNwy3NArzNArw_700_700.png',\n",
|
||||
" 'name': '考勤打卡'},\n",
|
||||
" 'pv': '433',\n",
|
||||
" 'uv': '324'},\n",
|
||||
" {'rank': 2,\n",
|
||||
" 'appItem': {'icon': 'https://static.dingtalk.com/media/lALPDeC2uGvNwy3NArzNArw_700_700.png',\n",
|
||||
" 'name': '智能人事'},\n",
|
||||
" 'pv': '354',\n",
|
||||
" 'uv': '350'},\n",
|
||||
" {'rank': 3,\n",
|
||||
" 'appItem': {'icon': 'https://static.dingtalk.com/media/lALPDeC2uGvNwy3NArzNArw_700_700.png',\n",
|
||||
" 'name': '日志'},\n",
|
||||
" 'pv': '322',\n",
|
||||
" 'uv': '189'}],\n",
|
||||
" 'meta': [{'aliasName': '排名', 'alias': 'rank', 'dataType': 'STRING'},\n",
|
||||
" {'aliasName': '应用', 'alias': 'appItem', 'dataType': 'MICROAPP'},\n",
|
||||
" {'aliasName': '点击次数', 'alias': 'pv', 'dataType': 'STRING'},\n",
|
||||
" {'aliasName': '点击人数', 'alias': 'uv', 'dataType': 'STRING'}]}"
|
||||
]
|
||||
},
|
||||
"execution_count": 6,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"{\n",
|
||||
" \"data\": [\n",
|
||||
" {\n",
|
||||
" \"rank\": 1,\n",
|
||||
" \"appItem\": {\n",
|
||||
" \"icon\": \"https://static.dingtalk.com/media/lALPDeC2uGvNwy3NArzNArw_700_700.png\",\n",
|
||||
" \"name\": \"考勤打卡\"\n",
|
||||
" },\n",
|
||||
" \"pv\": \"433\",\n",
|
||||
" \"uv\": \"324\",\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"rank\": 2,\n",
|
||||
" \"appItem\": {\n",
|
||||
" \"icon\": \"https://static.dingtalk.com/media/lALPDeC2uGvNwy3NArzNArw_700_700.png\",\n",
|
||||
" \"name\": \"智能人事\"\n",
|
||||
" },\n",
|
||||
" \"pv\": \"354\",\n",
|
||||
" \"uv\": \"350\",\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"rank\": 3,\n",
|
||||
" \"appItem\": {\n",
|
||||
" \"icon\": \"https://static.dingtalk.com/media/lALPDeC2uGvNwy3NArzNArw_700_700.png\",\n",
|
||||
" \"name\": \"日志\"\n",
|
||||
" },\n",
|
||||
" \"pv\": \"322\",\n",
|
||||
" \"uv\": \"189\",\n",
|
||||
" }\n",
|
||||
" ],\n",
|
||||
" \"meta\": [\n",
|
||||
" {\n",
|
||||
" \"aliasName\": \"排名\",\n",
|
||||
" \"alias\": \"rank\",\n",
|
||||
" \"dataType\": \"STRING\"\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"aliasName\": \"应用\",\n",
|
||||
" \"alias\": \"appItem\",\n",
|
||||
" \"dataType\": \"MICROAPP\"\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"aliasName\": \"点击次数\",\n",
|
||||
" \"alias\": \"pv\",\n",
|
||||
" \"dataType\": \"STRING\"\n",
|
||||
" },\n",
|
||||
" {\n",
|
||||
" \"aliasName\": \"点击人数\",\n",
|
||||
" \"alias\": \"uv\",\n",
|
||||
" \"dataType\": \"STRING\"\n",
|
||||
" }\n",
|
||||
" ]\n",
|
||||
"}"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "F6processing",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.9.4"
|
||||
},
|
||||
"orig_nbformat": 4
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
[{"domain": ".f6yc.com", "expiry": 1745026715, "httpOnly": false, "name": "sensorsdata2015jssdkcross", "path": "/", "sameSite": "Lax", "secure": false, "value": "%7B%22distinct_id%22%3A%2218e3fc2cfb1573-0870412de10397-26001b51-1327104-18e3fc2cfb2b42%22%2C%22first_id%22%3A%22%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%2218e3fc2cfb1573-0870412de10397-26001b51-1327104-18e3fc2cfb2b42%22%7D"}, {"domain": ".f6yc.com", "expiry": 1710518399, "httpOnly": false, "name": "sajssdk_2015_cross_new_user", "path": "/", "sameSite": "Lax", "secure": false, "value": "1"}, {"domain": "print.f6yc.com", "httpOnly": false, "name": "print-serverSESSIONID", "path": "/print-server", "sameSite": "Lax", "secure": false, "value": "6o-J91-4uUmy9r1nC6m-TvqHRtOk-1VgJV7y90je"}]
|
||||
@@ -0,0 +1,748 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"' tableField_ljcfpjg4 ': data[ \"【导入】申请优惠券明细\" ][i],# \"【导入】申请优惠券明细\"\n",
|
||||
"' tableField_ljibuzgq ': data[ \"【check】申请优惠券明细\" ][i],# \"【check】申请优惠券明细\"\n",
|
||||
"' textField_ljcfpjgd ': data[ \"发券结果\" ][i],# \"发券结果\"\n",
|
||||
"开始处理发券!\n",
|
||||
"读取到 [[流程]自动化优惠券(+多年)表中 152 条数据!\n",
|
||||
"CHS202108060134956 13577991101 {'result': ['FINST-PTA66DA120ANSFLMF8C069PZVGN63ELEWMAZLHH8']}\n",
|
||||
"CHS202208110186407 15894498555 {'result': ['FINST-3RB66I91Q8BNHUE19SH5XC3QOID131KGWMAZLEA1']}\n",
|
||||
"CHS202008160104161 13888058615 {'result': ['FINST-G0A66Z81X6ANA4J7F4OZF68QOHSM2OFIWMAZLHD8']}\n",
|
||||
"CHS202201140148849 13095343326 {'result': ['FINST-EPB66191RZ9NKSOSFMSFNDQHC1SO3OBKWMAZLHQH']}\n",
|
||||
"CHS202307200237693 18787262310 {'result': ['FINST-DOC66I91N7BNUIGI7P3YM60AX2NZ2U6MWMAZLQSD']}\n",
|
||||
"CHS202108210138519 15125606365 {'result': ['FINST-GFA66U91L0ANYA1PA8J5QCZ995QD2S2OWMAZLUH7']}\n",
|
||||
"CHS202304230226238 15687189309 {'result': ['FINST-N98665810Z9ND2YN6P6VJ42E76V839ZPWMAZLM49']}\n",
|
||||
"CHS202108250138924 15096625841 {'result': ['FINST-5W966981FZBNIIBL7O06TAFV54Q62EYRWMAZLZZ']}\n",
|
||||
"CHS202105270127195 18608753030 {'result': ['FINST-K7D66L910ZANR6FMEDNEXDB6VC263GTTWMAZLH45']}\n",
|
||||
"CHS202208300187832 13378868887 {'result': ['FINST-9V7669A1VD9NP9XL6Z1P19A84A1S3COVWMAZLXEV']}\n",
|
||||
"CHS201902280009312 18987298767 {'result': ['FINST-83D66TA11CBNCSEXCYB3NBQZZLPS32JXWMAZLO9C']}\n",
|
||||
"CHS202211150191707 18287205610 {'result': ['FINST-ENC663810Z9N1FH2ECMF6868OLJA20EZWMAZL6Z6']}\n",
|
||||
"CHS202308030239090 13577272535 {'result': ['FINST-9S966871B0ANGCLSA0HUL413WIXP3H91XMAZLQJJ']}\n",
|
||||
"CHS202308080239543 13759020642 {'result': ['FINST-MX966DD1HE9NEVH971R3ABSEDZFU2G63XMAZL7WU']}\n",
|
||||
"CHS202308250240999 13988878866 {'result': ['FINST-KL766581J7ANF8O3FQ5RA9CKGWWZ2A25XMAZLZCG']}\n",
|
||||
"CHS201902280007000 15925128106 {'result': ['FINST-MBD66F9150CNR9RKE99YR4YENZ0L3AX6XMAZL5O']}\n",
|
||||
"CHS201906030030064 18608753030 {'result': ['FINST-9CC66GD1PH9NT19FAM51JCSOTXEE2GK9XMAZL33L']}\n",
|
||||
"CHS201912070044730 13529282875 {'result': ['FINST-LTC66R81PY9NK10Q86ORCD9A63AJ3QIBXMAZLOGA']}\n",
|
||||
"CHS202207120184270 13759105925 {'result': ['FINST-MT566TB1RZ9NZXZGETNYN4W3DMM33FFDXMAZLCR7']}\n",
|
||||
"CHS202308110239896 13700661283 {'result': ['FINST-6JA66W91EXBNLM79BOYSYC3YXNXQ3FAFXMAZLA52']}\n",
|
||||
"CHS202308110239915 14769361898 {'result': ['FINST-LTC66R81YZ9NNBZF8K5JD8GAVIJE3H6HXMAZLNZM']}\n",
|
||||
"CHS202108100137208 13658776660 {'result': ['FINST-DC666GC1K7AN2R9GAF53H9Q1PWM13K1JXMAZLZJ5']}\n",
|
||||
"CHS201909240038589 13759409759 {'result': ['FINST-H7D667C108ANDYDZDNXL47W9MOCA30YKXMAZLD8F']}\n",
|
||||
"CHS202004130066222 18687845850 {'result': ['FINST-W9D66Q612AAN4H4RB1RGO7PXHH1D29TMXMAZLVGE']}\n",
|
||||
"CHS202308220240771 13708438038 {'result': ['FINST-5U866VA1WABNJGEMC7G2JAEQEB932JPOXMAZLCX1']}\n",
|
||||
"CHS202108060134958 18213188288 {'result': ['FINST-9BB66681FY9NT6FZ5MN245VGRGE23ONQXMAZL8FA']}\n",
|
||||
"CHS201908310036569 13700658352 {'result': ['FINST-9BB66681GG9NPHCG9GPG1C5KBM3Q28JSXMAZL2FJ']}\n",
|
||||
"CHS202003210057221 13608852511 {'result': ['FINST-J8966HD1OZ9NDJIR63OCZ5Q5S49P2WJUXMAZLBQO']}\n",
|
||||
"CHS202208030185802 18786196199 {'result': ['FINST-I5D66NB1OBANQS8472SJYC6RZY4L3EFWXMAZLBCD']}\n",
|
||||
"CHS202208040185823 18286944574 {'result': ['FINST-TCC66771VY9NPLSUA4G2B7UD79GG2DEYXMAZL939']}\n",
|
||||
"CHS202308070239389 15185005373 {'result': ['FINST-SNB667B15CBNUDXTBU85ND71EWQT33A0YMAZLLA']}\n",
|
||||
"CHS202008100103255 18216690259 {'result': ['FINST-ENC66381XXANS81D8KF6P9SHB3IC3362YMAZLHGH']}\n",
|
||||
"CHS202108100135470 17385904666 {'result': ['FINST-TM966BD1HZBNT66690SQE6Z788P53V14YMAZLBN']}\n",
|
||||
"CHS202110090142521 18084298828 {'result': ['FINST-VBD66H81UG9N4YKN8Y0UGABSYYTB2DY5YMAZLI38']}\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# 基础信息\n",
|
||||
"import pandas as pd\n",
|
||||
"import numpy as np\n",
|
||||
"import requests\n",
|
||||
"import json\n",
|
||||
"import time\n",
|
||||
"import re\n",
|
||||
"import sys\n",
|
||||
"from datetime import datetime\n",
|
||||
"from dateutil.relativedelta import relativedelta\n",
|
||||
"from pathlib import Path\n",
|
||||
"from urllib.parse import quote\n",
|
||||
"from datetime import date, timedelta\n",
|
||||
"import datetime\n",
|
||||
"from io import BytesIO\n",
|
||||
"\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_processes_instances(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",
|
||||
"\n",
|
||||
"def queryLastSaasInfo(cellPhone):\n",
|
||||
" \"\"\" 函数功能:手机号查询最近一次购买saas明细 \"\"\"\n",
|
||||
"\n",
|
||||
" api = 'http://manage.f6yc.com/hive-admin/yida/order/queryLastSaasInfo?cellPhone=' + cellPhone\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"token\":\"af88h9KvLQrdvVhFhS8zD1yWx9cu\"\n",
|
||||
" }\n",
|
||||
" res = requests.post(api,headers=headers)\n",
|
||||
" return res.json()\n",
|
||||
"\n",
|
||||
"def get_approval_records(token: str, processInstanceId: str):\n",
|
||||
" \"\"\" 函数功能:获取流程表单的审批记录 \"\"\"\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",
|
||||
"\n",
|
||||
"\n",
|
||||
"def aggree_approval(token: str, taskId: str, processInstanceId: str,res_new,formDataJson):\n",
|
||||
" \"\"\" 函数功能:同意审批节点 \"\"\"\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(formDataJson),\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",
|
||||
"\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 queryCompanies(cellPhone):\n",
|
||||
" \"\"\" 函数功能:自动发券查询手机号所处公司 \"\"\"\n",
|
||||
"\n",
|
||||
" api = 'http://manage.f6yc.com/hive-admin/yida/account/query?cellPhone=' + cellPhone\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"token\":\"af88h9KvLQrdvVhFhS8zD1yWx9cu\"\n",
|
||||
" }\n",
|
||||
" res = requests.post(api,headers=headers)\n",
|
||||
" return res.json()\n",
|
||||
"def queryDetailByOrgId(orgId):\n",
|
||||
" \"\"\" 函数功能:自动发券查询门店上次成交价 \"\"\"\n",
|
||||
"\n",
|
||||
" api = 'http://manage.f6yc.com/hive-admin/yida/org/queryDetailByOrgId?orgId=' + orgId\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"token\":\"af88h9KvLQrdvVhFhS8zD1yWx9cu\"\n",
|
||||
" }\n",
|
||||
" res = requests.post(api,headers=headers)\n",
|
||||
" return res.json()\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",
|
||||
"\n",
|
||||
"def Batch_creation(FORMID,TOKEN,ALL_formData):\n",
|
||||
" \"\"\" 获取组件信息 \"\"\"\n",
|
||||
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchSave'\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"Content-Type\": \"application/json\",\n",
|
||||
" \"x-acs-dingtalk-access-token\": TOKEN\n",
|
||||
" }\n",
|
||||
" payload = {\n",
|
||||
" # \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
|
||||
" \"noExecuteExpression\" : \"false\",\n",
|
||||
" \"formUuid\" : FORMID,\n",
|
||||
" \"appType\" : \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||||
" \"asynchronousExecution\" : \"false\",\n",
|
||||
" \"systemToken\" : \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||||
" \"keepRunningAfterException\" : \"true\",\n",
|
||||
" \"userId\" : \"yida_pub_account\",\n",
|
||||
" \"formDataJsonList\" : ALL_formData,\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 queryskuList():\n",
|
||||
" \"\"\" 函数功能:按照商品分类查询商品列表接口 \"\"\"\n",
|
||||
"\n",
|
||||
" api = 'http://manage.f6yc.com/hive-admin/yida/sku/category/query?category=4'\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"token\":\"af88h9KvLQrdvVhFhS8zD1yWx9cu\"\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(api,headers=headers)\n",
|
||||
" return res.json()\n",
|
||||
"\n",
|
||||
"def couponAvailableQuery(cellPhone,groupId,skuList,passportId):\n",
|
||||
" \"\"\" 函数功能:在当前选择场景下查询手机号可以使用的优惠券 http://manage.f6yc.com/hive-admin/ \"\"\"\n",
|
||||
"\n",
|
||||
" api = f'http://manage.f6yc.com/hive-admin/yida/coupon/available/query?passportId={passportId}&cellPhone={cellPhone}&groupId={groupId}&skuList' + str(skuList)\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"token\":\"af88h9KvLQrdvVhFhS8zD1yWx9cu\"\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(api,headers=headers)\n",
|
||||
" return res.json()\n",
|
||||
"\n",
|
||||
"def queryPriceInfoBySkuId(orgId,skuId,saasUpdate):\n",
|
||||
" \"\"\" 函数功能:商品价格查询\"\"\"\n",
|
||||
"\n",
|
||||
" api = f'http://manage.f6yc.com/hive-admin/yida/sku/queryPriceInfoBySkuId?orgId={orgId}&skuId={skuId}&saasUpdate={saasUpdate}'\n",
|
||||
"\n",
|
||||
" headers = {\n",
|
||||
" \"token\":\"af88h9KvLQrdvVhFhS8zD1yWx9cu\"\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(api,headers=headers)\n",
|
||||
" return res.json()\n",
|
||||
"\n",
|
||||
"def read_instances_new(token, formUuid, page, n,CREATE_FROM, CREATE_TO):\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_RTPWHV37ENXPQUZHTL25\",\n",
|
||||
" \"systemToken\": \"IA766O61SHFZT6UB0WNOB58GI5RW2K58KCU1LL6\",\n",
|
||||
" \"userId\": \"yida_pub_account\", # 超级管理员账号\n",
|
||||
" \"language\": \"zh_CN\",\n",
|
||||
" \"formUuid\": formUuid,\n",
|
||||
" \"createFromTimeGMT\":CREATE_FROM,\n",
|
||||
" \"createToTimeGMT\":CREATE_TO\n",
|
||||
" # \"searchFieldJson\": json.dumps(searchField), # 如果增加上这一项会要求升级宜搭存储\n",
|
||||
" # \"instanceStatus\": \"RUNNING\"\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(api, headers=headers, json=formData)\n",
|
||||
" return res.json()\n",
|
||||
"\n",
|
||||
"def updateFormDataJson (token, formUuid, updateFormDataJson):\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_RTPWHV37ENXPQUZHTL25\",\n",
|
||||
" \"systemToken\": \"IA766O61SHFZT6UB0WNOB58GI5RW2K58KCU1LL6\",\n",
|
||||
" \"userId\": \"yida_pub_account\", # 超级管理员账号\n",
|
||||
" \"language\": \"zh_CN\",\n",
|
||||
" \"formInstanceId\": formUuid,\n",
|
||||
" \"updateFormDataJson\":updateFormDataJson\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.put(api, headers=headers, json=formData)\n",
|
||||
" return res.json()\n",
|
||||
"\n",
|
||||
"from datetime import datetime\n",
|
||||
"import time\n",
|
||||
"def get_time_range_minute(n):\n",
|
||||
" \"\"\" 获取近n分钟的时间戳(单位是毫秒)\"\"\"\n",
|
||||
"\n",
|
||||
" def delay_time(time_str, years=0, months=0, days=0, hours=0, minutes=0, seconds=0):\n",
|
||||
" if type(time_str) == str:\n",
|
||||
" time_str = datetime.strptime(time_str, '%Y-%m-%d %H:%M:%S')\n",
|
||||
" ret = time_str + relativedelta(years=years, months=months, days=days, hours=hours, minutes=minutes, seconds=seconds)\n",
|
||||
" return ret\n",
|
||||
"\n",
|
||||
" # 获得当前时间\n",
|
||||
" now_time = datetime.now()\n",
|
||||
" endTime = int(time.mktime(time.strptime(now_time.strftime('%Y/%m/%d %H:%M:%S'), '%Y/%m/%d %H:%M:%S'))) * 1000 - 1000\n",
|
||||
" # n小时前的时间\n",
|
||||
" ret2 = delay_time(now_time, minutes=-n)\n",
|
||||
" startTime = int(time.mktime(time.strptime(ret2.strftime('%Y/%m/%d %H:%M:%S'), '%Y/%m/%d %H:%M:%S'))) * 1000\n",
|
||||
"\n",
|
||||
" # print(f'时间区间:[{startTime}-{endTime}]')\n",
|
||||
" return startTime, endTime\n",
|
||||
"\n",
|
||||
"def timeStamp(timeNum):\n",
|
||||
" \"\"\" 函数功能:将时间戳(毫秒) 转化为时间日期格式\"\"\"\n",
|
||||
" timeStamp = float(timeNum/1000)\n",
|
||||
" timeArray = time.localtime(timeStamp)\n",
|
||||
" otherStyleTime = time.strftime(\"%Y-%m-%d %H:%M:%S\", timeArray)\n",
|
||||
" return otherStyleTime\n",
|
||||
"# 4320分钟时间间隔\n",
|
||||
"CREATE_FROM, CREATE_TO = [timeStamp(t) for t in get_time_range_minute(4320)]\n",
|
||||
"class NpEncoder(json.JSONEncoder):\n",
|
||||
" def default(self, obj):\n",
|
||||
" if isinstance(obj, np.integer):\n",
|
||||
" return int(obj)\n",
|
||||
" elif isinstance(obj, np.floating):\n",
|
||||
" return float(obj)\n",
|
||||
" elif isinstance(obj, np.ndarray):\n",
|
||||
" return obj.tolist()\n",
|
||||
" else:\n",
|
||||
" return super(NpEncoder, self).default(obj)\n",
|
||||
" \n",
|
||||
"'''获取表内控件信息 '''\n",
|
||||
"TOKEN = generateToken()\n",
|
||||
"FORMID_NEW = \"FORM-0A966I81N40CV1B48U18UBZAA8R92STJC7IJL9\"\n",
|
||||
"component_list = component(FORMID_NEW,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[\",name_value,\"][i],#\",name_value)\n",
|
||||
"\n",
|
||||
"\"\"\" 处理流程开始 \"\"\"\n",
|
||||
"FORMID = \"FORM-0A966I81N40CV1B48U18UBZAA8R92STJC7IJL9\" # 【测试版本】批量自动发券\n",
|
||||
"# 读取续约流程表单\n",
|
||||
"form_data = read_processes_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
|
||||
"PAGES = form_data.get('totalCount')//100 + 1\n",
|
||||
"\"\"\" 获取全量数据 \"\"\"\n",
|
||||
"for i in range(1, PAGES+1):\n",
|
||||
" form_data = read_processes_instances(token=TOKEN, formUuid=FORMID, page=i, n=100)\n",
|
||||
" for v in range(0,len(form_data.get('data'))):\n",
|
||||
" \n",
|
||||
" # 获取当前所处节点\n",
|
||||
" res_new = get_approval_records(token=TOKEN, processInstanceId=form_data['data'][v]['processInstanceId'])\n",
|
||||
" records_new = res_new.get('result')\n",
|
||||
" # 获取审批节点的 taskId\n",
|
||||
" records_new = [item for item in records_new if item.get('type') == \"TODO\"]\n",
|
||||
" taskId_new = records_new[0]['activityId']\n",
|
||||
" taskId = records_new[0]['taskId']\n",
|
||||
" if taskId_new==\"sid-6470221a-82ec-4bdd-a873-245ee47a5605\": # check\n",
|
||||
" print(\"开始处理!\")\n",
|
||||
" # 读取NGV明细\n",
|
||||
" import psycopg2\n",
|
||||
" import pandas as pd\n",
|
||||
" # 获得连接\n",
|
||||
" conn = psycopg2.connect(database=\"f6_bi\", user=\"BASIC$ro_caowei\", password=\"!ro_caowei123\", host=\"hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com\", port=\"80\")\n",
|
||||
" # 获得游标对象,一个游标对象可以对数据库进行执行操作\n",
|
||||
" cursor = conn.cursor()\n",
|
||||
" import datetime\n",
|
||||
" now_time = datetime.datetime.now()\n",
|
||||
" yes_time = now_time + datetime.timedelta(days=-1)\n",
|
||||
" yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前一天日期\n",
|
||||
" # sql语句 建表\n",
|
||||
" sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_saas_profile_ngv_detail_d\" WHERE \"date_id\" = '{yes_time_nyr}';\"\"\"\n",
|
||||
" # 执行语句\n",
|
||||
" cursor.execute(sql)\n",
|
||||
" # 获取结果集的每一行\n",
|
||||
" rows = cursor.fetchall()\n",
|
||||
" # 获取所有字段名\n",
|
||||
" all_fields = cursor.description\n",
|
||||
" #执行结果转化为dataframe\n",
|
||||
" col = []\n",
|
||||
" for i in all_fields:\n",
|
||||
" col.append(i[0])\n",
|
||||
" data_NGV = pd.DataFrame(list(rows),columns=col)\n",
|
||||
" # 关闭数据库连接\n",
|
||||
" cursor.close()\n",
|
||||
" conn.close()\n",
|
||||
" \n",
|
||||
" '''读取商品和券信息'''\n",
|
||||
" FORMID_TWO = \"FORM-6L966171O3RB70TJDB75R6RBI31V2NNACKCJLF1\" # 商品ID券ID关系表\n",
|
||||
" all_skuId = {}\n",
|
||||
" all_couponTemplateId = {}\n",
|
||||
" textField_ljwon3vt = {}\n",
|
||||
" textField_ljxv26ip = {}\n",
|
||||
" list_new = 0\n",
|
||||
" tableField_data_new = {}\n",
|
||||
" form_data_TWO = read_instances(token=TOKEN, formUuid=FORMID_TWO, page=1, n=100)\n",
|
||||
" PAGES_TWO = form_data_TWO.get('totalCount')//100 + 1\n",
|
||||
" for a in range(1, PAGES_TWO+1):\n",
|
||||
" form_data_TWO = read_instances(token=TOKEN, formUuid=FORMID_TWO, page=a, n=100)\n",
|
||||
" for data_TWO in form_data_TWO.get('data'):\n",
|
||||
" all_skuId[data_TWO['formData']['textField_vmqmrm1'] + data_TWO['formData']['textField_cfm11ut']] = data_TWO['formData']['textField_nt0h72h']\n",
|
||||
" all_couponTemplateId[data_TWO['formData']['textField_vmqmrm1'] + data_TWO['formData']['textField_cfm11ut']] = data_TWO['formData']['textField_47og525']\n",
|
||||
" textField_ljwon3vt[data_TWO['formData']['textField_vmqmrm1'] + data_TWO['formData']['textField_cfm11ut']] = data_TWO['formData']['textField_ljwon3vt']\n",
|
||||
" textField_ljxv26ip[data_TWO['formData']['textField_vmqmrm1'] + data_TWO['formData']['textField_cfm11ut']] = data_TWO['formData']['textField_ljxv26ip']\n",
|
||||
" \"\"\" 开始分别读取数据并填充数据进行创建 \"\"\"\n",
|
||||
" for data in form_data['data'][v]['data']['tableField_ljcfpjg4']:\n",
|
||||
" # 基础字段预设\n",
|
||||
" data_new = {}\n",
|
||||
" data_new['textField_ljibuzgd'] = \"\"\n",
|
||||
" data_new['textField_ljibuzge'] = \"\"\n",
|
||||
" try:\n",
|
||||
" # 获取门店编码对应的信息\n",
|
||||
" result = data_NGV[data_NGV['org_code'] == data['textField_ljcfpjg6']]\n",
|
||||
" result = result.reset_index()\n",
|
||||
" # 获取手机号+判断手机号是否在公司名下\n",
|
||||
" # 获取手机号+判断手机号是否在公司名下\n",
|
||||
" if data[\"textField_ljcfpjg8\"] ==\"\": # 手机号未填写,默认填充ngv中对应的手机号\n",
|
||||
" data_new['textField_ljibuzgl'] = result['contact_mobile'][0]\n",
|
||||
" else:\n",
|
||||
" data_new['textField_ljibuzgl'] = data[\"textField_ljcfpjg8\"]\n",
|
||||
" cellPhone_group_name = queryCompanies(data_new['textField_ljibuzgl'])\n",
|
||||
" groupName_all = {}\n",
|
||||
" for data_two in cellPhone_group_name['data']['groupList']:\n",
|
||||
" groupName_all[data_two[\"groupName\"]]=data_two[\"groupId\"]\n",
|
||||
" try:\n",
|
||||
" if len(cellPhone_group_name['data']['groupList']) > 0:\n",
|
||||
" pass\n",
|
||||
" else:\n",
|
||||
" data_new['textField_ljibuzgl'] = data[\"textField_ljcfpjg8\"] \n",
|
||||
" data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] + \"F6中不存在该手机号;\"\n",
|
||||
" except:\n",
|
||||
" data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] + \"F6中不存在该手机号;\"\n",
|
||||
" \n",
|
||||
" if result['group_name'][0] not in groupName_all:\n",
|
||||
" data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] + \"联系电话与门店编码关系错误;\"\n",
|
||||
" # # 本次成交年限(1、2、3) selectField_ljicmdwn\n",
|
||||
" # if data[\"selectField_ljicmdwn\"] ==\"1\" or data[\"selectField_ljicmdwn\"] ==\"2\" or data[\"selectField_ljicmdwn\"] ==\"3\":\n",
|
||||
" # data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] + \"本次成交年限填写错误,请填写【1、2、3】;\"\n",
|
||||
" # 获取公司名称+门店名称+门店版本+到期日+门店编码\n",
|
||||
" data_new['textField_ljibuzgm'] = result['group_name'][0]\n",
|
||||
" data_new['textField_ljibuzgh'] = result['org_name'][0]\n",
|
||||
" data_new['textField_ljibuzgi'] = result['saas_edition_fmt'][0]\n",
|
||||
" data_new['textField_ljibuzgf'] = result['expiry_time'][0]\n",
|
||||
" data_new['textField_ljibuzgn'] = result['org_code'][0]\n",
|
||||
" # 获取上次成交价 textField_ljibuzgg\n",
|
||||
" OrgId_list = queryDetailByOrgId(result['id_own_org'][0])\n",
|
||||
" data_new['textField_ljibuzgg'] = OrgId_list['data']['lastSaasOrderPrice']/OrgId_list['data']['lastTransactionYear']\n",
|
||||
" # 获取提前续约立减额 textField_ljibuzgj\n",
|
||||
" try:\n",
|
||||
" queryPriceInfoBySkuIdnew = queryPriceInfoBySkuId(result['id_own_org'][0],all_skuId[result['saas_edition_fmt'][0] + \"1\"],\"false\")\n",
|
||||
" data_new['textField_ljibuzgj'] = queryPriceInfoBySkuIdnew['data']['renewalDiscountAmount']\n",
|
||||
" except:\n",
|
||||
" data_new['textField_ljibuzgj'] = \"0\"\n",
|
||||
" # 版本续约金额\n",
|
||||
" data_new['textField_lk6g6e2l'] = textField_ljwon3vt[result['saas_edition_fmt'][0] + \"1\"] # 版本续约金额\n",
|
||||
" # 申请优惠券金额 numberField_ljwn6n7w_value 判断优惠券申请金额是否填写,如果没有填写则进行填充\n",
|
||||
" # 本次成交价 numberField_ljwn6n7w_value 判断本次成交价是否填写,如果没有填写则进行填充 \n",
|
||||
" if data[\"numberField_ljwn6n7w_value\"] != \"\":\n",
|
||||
" data_new['textField_ljibuzgk'] = data[\"numberField_ljwn6n7w_value\"]\n",
|
||||
" if int(data[\"numberField_ljwn6n7w_value\"]) <= 0:\n",
|
||||
" data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] + \"本次成交价需要大于0,或者为空;\"\n",
|
||||
" elif data[\"numberField_ljwn6n7w_value\"] == \"\": # 判断本次成交价是否填写,如果没有填写则进行填充 默认取 上次成交价\n",
|
||||
" data_new['textField_ljibuzgk'] = data_new['textField_ljibuzgg']\n",
|
||||
" else:\n",
|
||||
" data_new['textField_ljibuzgk'] =data[\"numberField_ljwn6n7w_value\"]\n",
|
||||
" \n",
|
||||
" # 获取申请优惠券金额 textField_ljibuzgp 申请优惠券金额= 版本价格-提前立减额-本次成交价\n",
|
||||
" data_new['textField_ljibuzgp'] = int(data_new['textField_lk6g6e2l']) - int(data_new['textField_ljibuzgj']) - int(data_new['textField_ljibuzgk'])\n",
|
||||
"\n",
|
||||
" # # 获取本次成交价格 textField_ljibuzgk\n",
|
||||
" # if data[\"numberField_ljwn6n7w_value\"] ==\"\":\n",
|
||||
" # data_new['textField_ljibuzgk'] = int(textField_ljwon3vt[result['saas_edition_fmt'][0] + \"1\"]) - int(data_new['textField_ljibuzgp'])- int(data_new['textField_ljibuzgj'])\n",
|
||||
" # else:\n",
|
||||
" # data_new['textField_ljibuzgk'] = int(textField_ljwon3vt[result['saas_edition_fmt'][0] + \"1\"]) - int(data_new['textField_ljibuzgp']) - int(data_new['textField_ljibuzgj'])\n",
|
||||
" # 获取已有优惠券\n",
|
||||
" passportId=int(cellPhone_group_name['data']['passportId'])\n",
|
||||
" cellPhone=int(data_new['textField_ljibuzgl'])\n",
|
||||
" groupId = int(result['id_own_group'][0])\n",
|
||||
" skuList = queryskuList()\n",
|
||||
" # 过滤 仅入参对应版本的\n",
|
||||
" filtered_data = [item for item in skuList[\"data\"] if item['saasEditionName'] == result['saas_edition_fmt'][0]]\n",
|
||||
" filtered_data_skuList={'code': 200,\n",
|
||||
" 'data': filtered_data,\n",
|
||||
" 'message': 'SUCCESS'}\n",
|
||||
" couponAvailableQuery_list = couponAvailableQuery(cellPhone,groupId,filtered_data_skuList,passportId)\n",
|
||||
" for data_ONE in couponAvailableQuery_list['data']:\n",
|
||||
" data_new['textField_ljibuzge'] = data_new['textField_ljibuzge'] + data_ONE ['couponName'] + \":\"+ str(data_ONE ['couponValue']) +\";\"\n",
|
||||
" if \"优惠券\" in data_ONE ['couponName']:\n",
|
||||
" data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] +\"存在未使用的优惠券;\"\n",
|
||||
" \n",
|
||||
" # 是否低于限价 radioField_ljxz9ho5 是否发券 radioField_ljibuzgc 版本限价 textField_lk6hj6sw\n",
|
||||
" data_new['textField_lk6hj6sw'] = textField_ljxv26ip[result['saas_edition_fmt'][0] + \"1\"]\n",
|
||||
" if int(data_new['textField_ljibuzgk']) < int(textField_ljxv26ip[result['saas_edition_fmt'][0] + \"1\"]):\n",
|
||||
" data_new['radioField_ljxz9ho5'] = \"是\"\n",
|
||||
" # data_new['radioField_ljibuzgc'] = \"否\"\n",
|
||||
" else:\n",
|
||||
" data_new['radioField_ljxz9ho5'] = \"否\"\n",
|
||||
" # 是否的低于上次成交价 radioField_ljxz9ho6 是否发券 radioField_ljibuzgc\n",
|
||||
" if int(data_new['textField_ljibuzgk']) < int(data_new['textField_ljibuzgg']):\n",
|
||||
" data_new['radioField_ljxz9ho6'] = \"是\"\n",
|
||||
" # data_new['radioField_ljibuzgc'] = \"否\"\n",
|
||||
" else:\n",
|
||||
" data_new['radioField_ljxz9ho6'] = \"否\"\n",
|
||||
" # if int(data_new['textField_ljibuzgj']) > 0:\n",
|
||||
" # data_new['textField_ljibuzgd'] = \"存在提前续约立减额,不是30天内过期客户!\"\n",
|
||||
" # if int(data_new['textField_ljibuzgp']) <= 0:\n",
|
||||
" # data_new['textField_ljibuzgd'] = \"申请优惠金额需要大于0元!\"\n",
|
||||
" # # 集合 textField_ljy172na\n",
|
||||
" # data_new['textField_ljy172na'] = str({\n",
|
||||
" # \"cellPhone\":data_new[\"textField_ljibuzgl\"], # 收劵人手机号码\n",
|
||||
" # \"dingDingId\":form_data['data'][v]['originator']['userId'], # 申请人钉钉ID\n",
|
||||
" # \"stage\":2, # 所属阶段(新签:1,续约:2)\n",
|
||||
" # \"couponApplyType\":1, # 优惠券申请类型;新签:saas优惠劵申请:1,短信优惠劵申请:2,人工服务优惠劵申请:3;续约:saas续约优惠劵申请:1,saas升级优惠劵申请:2,短信优惠劵申请:3,人工服务优惠劵申请:4(暂不支持)\n",
|
||||
" # \"detailList\":[{ # 发劵明细列表\n",
|
||||
" # \"couponTemplateId\":all_couponTemplateId[result['saas_edition_fmt'][0] + \"1\"], # 劵模板ID\n",
|
||||
" # \"couponAmount\":int(data_new[\"textField_ljibuzgp\"]), # 劵金额,>0\n",
|
||||
" # \"grantGroup\":1, # 1:发送到公司+人,0:发送到人\n",
|
||||
" # \"groupId\":result['id_own_group'][0], # 发放公司ID,发在公司下=true是有值\n",
|
||||
" # \"skuId\":all_skuId[result['saas_edition_fmt'][0] + \"1\"], # 商品id \n",
|
||||
" # \"orgId\":result['id_own_org'][0], # 门店ID,(申请续约劵并且降级时必填)\n",
|
||||
" # \"demotion\":0, # 降级(是:1,否:0)\n",
|
||||
" # \"demotionSaaSEdition\":0 # 降级版本,门店降级时必填\n",
|
||||
" # }]\n",
|
||||
" # })\n",
|
||||
" # data_new['textField_ljy172na'] = data_new['textField_ljy172na'].replace(\"'\", '\"')\n",
|
||||
"\n",
|
||||
" # data_new['textField_ljy172na'] = data_new['textField_ljy172na'].replace(\" \", \"\")\n",
|
||||
" except:\n",
|
||||
" data_new['textField_ljibuzgd'] = \"数据读取异常:\" + data_new['textField_ljibuzgd']\n",
|
||||
" # CHECK结果校验 textField_ljibuzgd\n",
|
||||
" if data_new['textField_ljibuzgd'] == \"\":\n",
|
||||
" data_new['textField_ljibuzgd'] = \"正确\"\n",
|
||||
" list_new = list_new + 1\n",
|
||||
" # 回传结果\n",
|
||||
" if list_new == 1:\n",
|
||||
" tableField_data_new['tableField_ljibuzgq'] = [data_new]\n",
|
||||
" else:\n",
|
||||
" tableField_data_new['tableField_ljibuzgq'].append(data_new)\n",
|
||||
" res=aggree_approval(token=TOKEN, taskId=taskId, processInstanceId=form_data['data'][v]['processInstanceId'],res_new =\"2268275546837446\",formDataJson=tableField_data_new)\n",
|
||||
" print(form_data['data'][v]['processInstanceId'],res.json())\n",
|
||||
" time.sleep(2)\n",
|
||||
" elif taskId_new==\"sid-23822834-234a-b12a-dfea-a6ad1acc8c1b\": # API自动发券\n",
|
||||
" print(\"开始处理发券!\")\n",
|
||||
" # 读取NGV明细\n",
|
||||
" import psycopg2\n",
|
||||
" import pandas as pd\n",
|
||||
" # 获得连接\n",
|
||||
" conn = psycopg2.connect(database=\"f6_bi\", user=\"BASIC$ro_caowei\", password=\"!ro_caowei123\", host=\"hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com\", port=\"80\")\n",
|
||||
" # 获得游标对象,一个游标对象可以对数据库进行执行操作\n",
|
||||
" cursor = conn.cursor()\n",
|
||||
" import datetime\n",
|
||||
" now_time = datetime.datetime.now()\n",
|
||||
" yes_time = now_time + datetime.timedelta(days=-1)\n",
|
||||
" yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前一天日期\n",
|
||||
" # sql语句 建表\n",
|
||||
" sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_saas_profile_ngv_detail_d\" WHERE \"date_id\" = '{yes_time_nyr}';\"\"\"\n",
|
||||
" # 执行语句\n",
|
||||
" cursor.execute(sql)\n",
|
||||
" # 获取结果集的每一行\n",
|
||||
" rows = cursor.fetchall()\n",
|
||||
" # 获取所有字段名\n",
|
||||
" all_fields = cursor.description\n",
|
||||
" #执行结果转化为dataframe\n",
|
||||
" col = []\n",
|
||||
" for i in all_fields:\n",
|
||||
" col.append(i[0])\n",
|
||||
" data_NGV = pd.DataFrame(list(rows),columns=col)\n",
|
||||
" # 关闭数据库连接\n",
|
||||
" cursor.close()\n",
|
||||
" conn.close()\n",
|
||||
" '''读取商品和券信息'''\n",
|
||||
" FORMID_TWO = \"FORM-6L966171O3RB70TJDB75R6RBI31V2NNACKCJLF1\" # 商品ID券ID关系表\n",
|
||||
" all_skuId = {}\n",
|
||||
" all_couponTemplateId = {}\n",
|
||||
" textField_ljwon3vt = {}\n",
|
||||
" textField_ljxv26ip = {}\n",
|
||||
" list_new = 0\n",
|
||||
" succeed_all = 0\n",
|
||||
" all_all= 0\n",
|
||||
" tableField_data_new = {}\n",
|
||||
" data_new = {}\n",
|
||||
" data_check = {}\n",
|
||||
" formDataJson_check = {}\n",
|
||||
" code_new = \"\"\n",
|
||||
" formDataJson_check['textField_ljcfpjgd'] = \"\"\n",
|
||||
" form_data_TWO = read_instances(token=TOKEN, formUuid=FORMID_TWO, page=1, n=100)\n",
|
||||
" PAGES_TWO = form_data_TWO.get('totalCount')//100 + 1\n",
|
||||
" for a in range(1, PAGES_TWO+1):\n",
|
||||
" form_data_TWO = read_instances(token=TOKEN, formUuid=FORMID_TWO, page=a, n=100)\n",
|
||||
" for data_TWO in form_data_TWO.get('data'):\n",
|
||||
" all_skuId[data_TWO['formData']['textField_vmqmrm1'] + data_TWO['formData']['textField_cfm11ut']] = data_TWO['formData']['textField_nt0h72h']\n",
|
||||
" all_couponTemplateId[data_TWO['formData']['textField_vmqmrm1'] + data_TWO['formData']['textField_cfm11ut']] = data_TWO['formData']['textField_47og525']\n",
|
||||
" textField_ljwon3vt[data_TWO['formData']['textField_vmqmrm1'] + data_TWO['formData']['textField_cfm11ut']] = data_TWO['formData']['textField_ljwon3vt']\n",
|
||||
" textField_ljxv26ip[data_TWO['formData']['textField_vmqmrm1'] + data_TWO['formData']['textField_cfm11ut']] = data_TWO['formData']['textField_ljxv26ip']\n",
|
||||
" FORMID = \"FORM-XHA66881FHMAR0F07GT4Y59GGA972DD6B5OHLB\" # [流程]自动化优惠券(+多年)\n",
|
||||
" # 读取[流程]自动化优惠券(+多年)\n",
|
||||
" form_data_new = read_instances_new(token=TOKEN, formUuid=FORMID, page=1, n=100,CREATE_FROM=CREATE_FROM, CREATE_TO=CREATE_TO)\n",
|
||||
" PAGES = form_data_new.get('totalCount')//100 + 1\n",
|
||||
" ALL_DATA_code = []\n",
|
||||
" \"\"\" 获取全量数据 \"\"\"\n",
|
||||
" for i in range(1, PAGES+1):\n",
|
||||
" form_data_new = read_instances_new(token=TOKEN, formUuid=FORMID, page=i, n=100,CREATE_FROM=CREATE_FROM, CREATE_TO=CREATE_TO)\n",
|
||||
" for data_one in form_data_new.get('data'):\n",
|
||||
" try:\n",
|
||||
" for j in range(0,len(data_one['data']['tableField_l1w05znp'])):\n",
|
||||
" ALL_DATA_code.append(str(data_one['data']['tableField_l1w05znp'][j]['selectField_l1wxjd8l']) + \"+\" + str(data_one['data']['tableField_l1w05znp'][j]['textField_l5j0ym23']))\n",
|
||||
" except:\n",
|
||||
" pass\n",
|
||||
" print(f'读取到 [[流程]自动化优惠券(+多年)表中 {len(ALL_DATA_code)} 条数据!')\n",
|
||||
" for data in form_data['data'][v]['data']['tableField_ljibuzgq']: # -----------------------------------------------\n",
|
||||
" updateFormDataJson_check = {}\n",
|
||||
" # 获取门店编码对应的信息\n",
|
||||
" result = data_NGV[data_NGV['org_code'] == data['textField_ljibuzgn']]\n",
|
||||
" result = result.reset_index()\n",
|
||||
" # 读取[流程]自动化优惠券(+多年)中存在该门店发券流程,避免重复发券\n",
|
||||
" if str(data['textField_ljibuzgn']) + \"+\" + str(all_couponTemplateId[result['saas_edition_fmt'][0] + \"1\"]) in ALL_DATA_code:\n",
|
||||
" # updateFormDataJson_check['textField_ljibuzgd'] = data['textField_ljibuzgd'] + \"[流程]自动化优惠券(+多年)中存在该门店发券流程!;\"\n",
|
||||
" # updateFormDataJson_check['radioField_ljxz9ho5'] = \"否\"\n",
|
||||
" # FORMID = \"FORM-0A966I81N40CV1B48U18UBZAA8R92STJC7IJL9\" # 【测试版本】批量自动发券\n",
|
||||
" # res=updateFormDataJson(TOKEN, FORMID, updateFormDataJson_check)\n",
|
||||
" # print(res.json)\n",
|
||||
" code_new = code_new + data[\"textField_ljibuzgl\"] + \";\"\n",
|
||||
" else:\n",
|
||||
" # res=aggree_approval(token=TOKEN, taskId=taskId, processInstanceId=form_data['data'][v]['processInstanceId'],res_new =\"2268275546837446\",formDataJson=tableField_data_new)\n",
|
||||
" # print(form_data['data'][v]['processInstanceId'],res.json())\n",
|
||||
" # for data_ONE in couponAvailableQuery_list['data']:\n",
|
||||
" # if \"续约优惠券\" in data_ONE ['couponName']:\n",
|
||||
" # data_new['textField_ljibuzgd'] = data_new['textField_ljibuzgd'] +\"存在未使用的续约优惠券;\"\n",
|
||||
" # data_new['textField_ljibuzge'] = data_new['textField_ljibuzge'] + data_ONE ['couponName'] + \":\"+ str(data_ONE ['couponValue']) +\";\"\n",
|
||||
" # check_all = check_all + 1\n",
|
||||
" \n",
|
||||
" data_new['textField_ljy172na'] = str({\n",
|
||||
" \"cellPhone\":data[\"textField_ljibuzgl\"], # 收劵人手机号码\n",
|
||||
" \"dingDingId\":form_data['data'][v]['originator']['userId'], # 申请人钉钉ID\n",
|
||||
" \"stage\":2, # 所属阶段(新签:1,续约:2)\n",
|
||||
" \"couponApplyType\":1, # 优惠券申请类型;新签:saas优惠劵申请:1,短信优惠劵申请:2,人工服务优惠劵申请:3;续约:saas续约优惠劵申请:1,saas升级优惠劵申请:2,短信优惠劵申请:3,人工服务优惠劵申请:4(暂不支持)\n",
|
||||
" \"detailList\":[{ # 发劵明细列表\n",
|
||||
" \"couponTemplateId\":all_couponTemplateId[result['saas_edition_fmt'][0] + \"1\"], # 劵模板ID\n",
|
||||
" \"couponAmount\":int(float(data[\"textField_ljibuzgp\"])), # 劵金额,>0\n",
|
||||
" \"grantGroup\":1, # 1:发送到公司+人,0:发送到人\n",
|
||||
" \"groupId\":result['id_own_group'][0], # 发放公司ID,发在公司下=true是有值\n",
|
||||
" \"skuId\":all_skuId[result['saas_edition_fmt'][0] + \"1\"], # 商品id \n",
|
||||
" \"orgId\":result['id_own_org'][0], # 门店ID,(申请续约劵并且降级时必填)\n",
|
||||
" \"demotion\":0, # 降级(是:1,否:0)\n",
|
||||
" \"demotionSaaSEdition\":0 # 降级版本,门店降级时必填\n",
|
||||
" }]\n",
|
||||
" })\n",
|
||||
" data_list = {\n",
|
||||
" 'textField_ljchgz1f':data['textField_ljibuzgn'], # 门店编码\n",
|
||||
" 'textField_ljchgz1i':data_new['textField_ljy172na'], # 数据集\n",
|
||||
" 'textField_ljchgz1h':data['textField_ljibuzgd'], # check结果\n",
|
||||
" 'textField_ljy1x9kb':form_data['data'][v]['processInstanceId'], # 关联表单id\n",
|
||||
" 'textField_ljf6nf7s':data['radioField_ljibuzgc'] # 是否发券\n",
|
||||
" }\n",
|
||||
" ALL_formData = []\n",
|
||||
" ALL_formData.append(json.dumps(data_list, cls=NpEncoder)) \n",
|
||||
" FORMID_NEW = \"FORM-JD8668C1MFBC3ND4BWO736T7G5Q7318IC0YJLA\" # 【测试版本】自动触发明细表\n",
|
||||
" res = Batch_creation(FORMID_NEW,TOKEN,ALL_formData)\n",
|
||||
" print(data['textField_ljibuzgn'],data[\"textField_ljibuzgl\"],res)\n",
|
||||
" time.sleep(2)\n",
|
||||
" all_all = all_all + 1\n",
|
||||
" if data['textField_ljibuzgd'] == \"正确\" and data['radioField_ljibuzgc'] == \"是\":\n",
|
||||
" succeed_all = succeed_all + 1\n",
|
||||
" fail_all = all_all - succeed_all\n",
|
||||
" if len(code_new)>0:\n",
|
||||
" txt_all = f\"发送成功:{succeed_all}条;发送失败:{fail_all}条;{code_new}在[流程]自动化优惠券(+多年)中有申请记录!\"\n",
|
||||
" else:\n",
|
||||
" txt_all = f\"发送成功:{succeed_all}条;发送失败:{fail_all}条;\"\n",
|
||||
" formDataJson_check = {\n",
|
||||
" 'textField_ljcfpjgd':txt_all\n",
|
||||
" }\n",
|
||||
" res=aggree_approval(token=TOKEN, taskId=taskId, processInstanceId=form_data['data'][v]['processInstanceId'],res_new =\"2268275546837446\",formDataJson=formDataJson_check)\n",
|
||||
" print(form_data['data'][v]['processInstanceId'],res.json())\n",
|
||||
" time.sleep(2)"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "F6processing",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.9.4"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
@@ -0,0 +1,414 @@
|
||||
# 基础函数配置
|
||||
import pandas as pd
|
||||
import requests
|
||||
from pathlib import Path
|
||||
from urllib.parse import quote
|
||||
import json
|
||||
import numpy as np
|
||||
import time
|
||||
from datetime import date, timedelta
|
||||
|
||||
ROOT = Path('.').absolute() # 当前工作目录
|
||||
|
||||
def generateToken() -> str:
|
||||
""" 生成 token """
|
||||
|
||||
token_api = 'https://api.dingtalk.com/v1.0/oauth2/accessToken'
|
||||
|
||||
# 该信息在钉钉开放应用中
|
||||
data = {
|
||||
"appKey": "ding5kqocon5s9oph5uq",
|
||||
"appSecret": 'HL1jgsIIfLAC0eTH0A1m4mwxUDqbgsiPeCCGGE3ocM6qJBTIW7Ivt9drxF_Z4Kb_'
|
||||
}
|
||||
|
||||
res = requests.post(token_api, json=data)
|
||||
token = res.json()['accessToken']
|
||||
|
||||
return token
|
||||
|
||||
def transcation(token,FORMID,data_new):
|
||||
""" 函数功能:更新表单内容 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
payload = {
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId" : "2268275546837446", # 曹伟 id
|
||||
"language" : "zh_CN",
|
||||
"useLatestVersion" : "false",
|
||||
"formInstanceId" : FORMID,
|
||||
"updateFormDataJson" : json.dumps(data_new, cls=NpEncoder),
|
||||
}
|
||||
|
||||
res = requests.put(api, headers=headers, json=payload)
|
||||
|
||||
return res.json()
|
||||
def aggree_approval(token: str, taskId: str, processInstanceId: str, formData: dict,res_new):
|
||||
""" 函数功能:同意审批节点 --F6客户服务 应用 """
|
||||
api = f'https://api.dingtalk.com/v1.0/yida/tasks/execute'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
payload = {
|
||||
"outResult": "AGREE",
|
||||
"appType": "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken": "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"remark": "同意(接口自动)",
|
||||
"formDataJson": json.dumps(formData, cls=NpEncoder),
|
||||
"processInstanceId": processInstanceId,
|
||||
# "userId": "yida_pub_account",
|
||||
"userId": res_new,
|
||||
"language": "zh_CN",
|
||||
"taskId": int(taskId)
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
# print('同意审批节点')
|
||||
return res
|
||||
def read_instances_new(token, formUuid, page, n):
|
||||
""" 函数功能:读取流程表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/processes/instances?pageNumber={page}&pageSize={n}'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType": "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken": "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId": "yida_pub_account", # 超级管理员账号
|
||||
"language": "zh_CN",
|
||||
"formUuid": formUuid,
|
||||
# "searchFieldJson": json.dumps(searchField), # 如果增加上这一项会要求升级宜搭存储
|
||||
"instanceStatus": "RUNNING"
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
def get_approval_records(token: str, processInstanceId: str):
|
||||
""" 函数功能:获取流程表单的审批记录 --F6客户服务 应用 """
|
||||
appType = "APP_UYZ0KG6L0CCNV80GZ66O"
|
||||
systemToken = "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2"
|
||||
userId = "yida_pub_account"
|
||||
|
||||
api = f'https://api.dingtalk.com/v1.0/yida/processes/operationRecords?appType={appType}&systemToken={systemToken}&userId={userId}&language=zh_CN&processInstanceId={processInstanceId}'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
res = requests.get(api, headers=headers)
|
||||
# print('获取流程表单的审批记录')
|
||||
return res.json()
|
||||
def read_instances(token, formUuid, page, n):
|
||||
""" 函数功能:读取普通表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId" : "yida_pub_account",
|
||||
"language" : "zh_CN",
|
||||
"formUuid" : formUuid,
|
||||
"currentPage" : page,
|
||||
"pageSize" : n
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
def read_instances_pt(token, formUuid, page, n):
|
||||
""" 函数功能:读取普通表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId" : "yida_pub_account",
|
||||
"language" : "zh_CN",
|
||||
"formUuid" : formUuid,
|
||||
"currentPage" : page,
|
||||
"pageSize" : n
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
def read_processes(token, formUuid, page, n):
|
||||
""" 函数功能:读取普通表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType": "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken": "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId": "yida_pub_account", # 超级管理员账号
|
||||
"language": "zh_CN",
|
||||
"formUuid": formUuid,
|
||||
'currentPage':page,
|
||||
'pageSize':n
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
def instances_id(TOKEN,id):
|
||||
""" 函数功能:查询表单实例 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/{id}?appType=APP_UYZ0KG6L0CCNV80GZ66O&systemToken=XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2&userId=yida_pub_account&language=zh_CN'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
|
||||
res = requests.get(api, headers=headers)
|
||||
|
||||
return res.json()
|
||||
def component(FORMID,TOKEN):
|
||||
""" 获取组件信息 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/formFields'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
payload = {
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
# "formDataJson" : json.dumps(formData, cls=NpEncoder),
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
# "language" : "zh_CN",
|
||||
"userId" : "yida_pub_account"
|
||||
}
|
||||
|
||||
res = requests.get(api, headers=headers, json=payload)
|
||||
|
||||
return res.json()
|
||||
def component_id(id,TOKEN):
|
||||
api = f'https://api.dingtalk.com/v1.0/yida/processes/instancesInfos/{id}?appType=APP_UYZ0KG6L0CCNV80GZ66O&systemToken=XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2&userId=yida_pub_account&language=zh_CN'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
|
||||
res = requests.get(api, headers=headers)
|
||||
|
||||
return res.json()
|
||||
def find_indexes(daichuli_mendian_name,i_two):
|
||||
indexes = [i for i, x in enumerate(daichuli_mendian_name) if x == i_two]
|
||||
return indexes
|
||||
def get_staffID(TOKEN: str,ALL_DATA_staff,staff_name):
|
||||
res_new = [v['formData']['textField_lfrw3u59'] for v in ALL_DATA_staff if v['formData']['textField_lfrw3u58']== staff_name]
|
||||
# print('通过员工名称获取员工id')
|
||||
return res_new
|
||||
|
||||
def component(FORMID,TOKEN):
|
||||
""" 获取组件信息 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/formFields'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
payload = {
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
# "formDataJson" : json.dumps(formData, cls=NpEncoder),
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
# "language" : "zh_CN",
|
||||
"userId" : "yida_pub_account"
|
||||
}
|
||||
|
||||
res = requests.get(api, headers=headers, json=payload)
|
||||
|
||||
return res.json()
|
||||
def delete_in_batches(FORMID,TOKEN,ALL_DATA_instance):
|
||||
""" 批量删除表单实例 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchRemove'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
|
||||
payload = {
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"asynchronousExecution" : "true",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"formInstanceIdList" : json.dumps(ALL_DATA_instance, cls=NpEncoder),
|
||||
"userId" : "yida_pub_account",
|
||||
"executeExpression" : "false" # 不触发
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
return res.json()
|
||||
def delete_in(TOKEN,formInstanceIdList):
|
||||
""" 逐条删除表单实例 """
|
||||
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}'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
res = requests.delete(api, headers=headers)
|
||||
return res.json()
|
||||
def Batch_creation(FORMID,TOKEN,ALL_formData):
|
||||
""" 获取组件信息 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchSave'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
payload = {
|
||||
# "formDataJson" : json.dumps(formData, cls=NpEncoder),
|
||||
"noExecuteExpression" : "false",
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"asynchronousExecution" : "false",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"keepRunningAfterException" : "false",
|
||||
"userId" : "2268275546837446",
|
||||
"formDataJsonList" : json.dumps(ALL_formData, cls=NpEncoder),
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
return res.json()
|
||||
class NpEncoder(json.JSONEncoder):
|
||||
def default(self, obj):
|
||||
if isinstance(obj, np.integer):
|
||||
return int(obj)
|
||||
elif isinstance(obj, np.floating):
|
||||
return float(obj)
|
||||
elif isinstance(obj, np.ndarray):
|
||||
return obj.tolist()
|
||||
else:
|
||||
return super(NpEncoder, self).default(obj)
|
||||
# -*- coding: utf-8 -*-
|
||||
import psycopg2
|
||||
import pandas as pd
|
||||
|
||||
TOKEN = generateToken()
|
||||
'''读取员工对应关系:宜搭员工-ID对应表 '''
|
||||
FORMID = "FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6" # 宜搭员工-ID对应表 FORM-EA866E715PF9YA7ECCAGSABX91Q72PVA3WRFL6
|
||||
# 读取流程表单数据
|
||||
form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)
|
||||
PAGES = form_data.get('totalCount')//100 + 1
|
||||
ALL_DATA_staff = {}
|
||||
""" 获取全量数据 """
|
||||
for i in range(1, PAGES+1):
|
||||
# form_data = read_processes_instances(token=TOKEN, formUuid=FORMID, createFromTimeGMT=CREATE_FROM, createToTimeGMT=CREATE_TO, page=i, n=100, searchField={'textField_l7if5ff9': '否'})
|
||||
form_data = read_instances(token=TOKEN, formUuid=FORMID, page=i, n=100)
|
||||
for data in form_data.get('data'):
|
||||
ALL_DATA_staff[data['formData']['textField_lfrw3u58']]=data['formData']['textField_lfrw3u59']
|
||||
import datetime
|
||||
now_time = datetime.datetime.now()
|
||||
yes_time = now_time + datetime.timedelta(days=-2)
|
||||
yes_time_nyr = yes_time.strftime('%Y-%m-%d')# 获取日期
|
||||
import binascii
|
||||
import time
|
||||
import random
|
||||
from pyDes import des, CBC, PAD_PKCS5
|
||||
import requests
|
||||
def des_encrypt(s):
|
||||
"""
|
||||
DES 加密
|
||||
:param s: 原始字符串
|
||||
:return: 加密后字符串,16进制
|
||||
"""
|
||||
secret_key = 'HwdMBW8o'
|
||||
iv = secret_key
|
||||
k = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)
|
||||
en = k.encrypt(s, padmode=PAD_PKCS5)
|
||||
return binascii.b2a_base64(en, newline=False)
|
||||
t = time.time()
|
||||
ts = int(round(t * 1000))
|
||||
randint = random.randint(100000000, 999999999)
|
||||
# req = "1|2000|"+ "2020-01-01" + "|" + yes_time_nyr + "_" + str(ts) + "_" + str(randint)
|
||||
req = f"1|20|{yes_time_nyr}|{yes_time_nyr}" + "_" + str(ts) + "_" + str(randint)
|
||||
str_en = des_encrypt(req)
|
||||
req_new = str_en.decode('utf-8')
|
||||
|
||||
url = f"http://manage.f6yc.com/hive-admin/py/yida/renewal/coupons/fetch"
|
||||
data = {
|
||||
'req':req_new,
|
||||
't':ts,
|
||||
'r':randint
|
||||
}
|
||||
res = requests.post(url,data=data)
|
||||
merged_df = res.json()
|
||||
pang = int(merged_df["data"]['total']/20) + 1
|
||||
for a in range(1,pang):
|
||||
t = time.time()
|
||||
ts = int(round(t * 1000))
|
||||
randint = random.randint(100000000, 999999999)
|
||||
req = f"{a}|20|{yes_time_nyr}|{yes_time_nyr}" + "_" + str(ts) + "_" + str(randint)
|
||||
str_en = des_encrypt(req)
|
||||
req_new = str_en.decode('utf-8')
|
||||
|
||||
url = f"http://manage.f6yc.com/hive-admin/py/yida/renewal/coupons/fetch"
|
||||
data = {
|
||||
'req':req_new,
|
||||
't':ts,
|
||||
'r':randint
|
||||
}
|
||||
res = requests.post(url,data=data)
|
||||
merged_df = res.json()
|
||||
# 遍历数据进行新建
|
||||
for i in range(0,len(merged_df["data"]['list'])):
|
||||
if merged_df["data"]['list'][i]["takeSourceCode"] == "yidaApproveAutoGrantCoupon":
|
||||
ALL_formData = []
|
||||
formData = {
|
||||
'textField_llungzvc':merged_df["data"]['list'][i]['couponName'],#"券名称"
|
||||
'numberField_llungzvf':merged_df["data"]['list'][i]['couponValue'],#"券金额"
|
||||
'dateField_llxgj2t0':merged_df["data"]['list'][i]['validityBegin'],#"券有效期"
|
||||
'dateField_llxgj2t1':merged_df["data"]['list'][i]['validityEnd'],#"券有效期"
|
||||
'dateField_llungzvi':merged_df["data"]['list'][i]['takeTime'],#"发券时间"
|
||||
'textField_llym1q8j':merged_df["data"]['list'][i]['createBy'],#"发券人id"
|
||||
'textField_llym1q8k':merged_df["data"]['list'][i]['createName'],#"发券人姓名"
|
||||
'textField_llungzvj':merged_df["data"]['list'][i]['customerGroupName'],#"领券人公司"
|
||||
'textField_llungzvk':merged_df["data"]['list'][i]['cellPhone'],#"领券人手机号"
|
||||
'textField_llungzvl':merged_df["data"]['list'][i]['conditionValue'],#"使用门槛"
|
||||
'textField_llungzvm':str(merged_df["data"]['list'][i]['spuList']),#"适用商品"
|
||||
'textField_llungzvn':"宜搭审批自动发劵",#"券来源"
|
||||
}
|
||||
try:
|
||||
formData['employeeField_llungzvp'] = ALL_DATA_staff[merged_df["data"]['list'][i]['couponValue']]#"技术专家"
|
||||
except:
|
||||
formData['employeeField_llungzvp'] = ""
|
||||
try:
|
||||
formData['employeeField_llungzvh'] = ALL_DATA_staff[merged_df["data"]['list'][i]['createName']]#"发券人"
|
||||
except:
|
||||
formData['employeeField_llungzvh'] = "0627252740652855"
|
||||
ALL_formData.append(json.dumps(formData, cls=NpEncoder))
|
||||
FORMID = "FORM-A8666NA1BDNDLTRV6ASGDD4J2YMW3FHOGNULLE"
|
||||
res_new = Batch_creation(FORMID,TOKEN,ALL_formData)
|
||||
print(res_new)
|
||||
time.sleep(1)
|
||||
@@ -0,0 +1,186 @@
|
||||
import pandas as pd
|
||||
import numpy as np
|
||||
import requests
|
||||
import json
|
||||
import time
|
||||
import re
|
||||
from datetime import datetime
|
||||
from dateutil.relativedelta import relativedelta
|
||||
from pathlib import Path
|
||||
from urllib.parse import quote
|
||||
from io import BytesIO
|
||||
|
||||
ROOT = Path('.').absolute() # 当前工作目录
|
||||
|
||||
|
||||
# 生成 token,参数不需要修改
|
||||
def generateToken() -> str:
|
||||
""" 生成 token """
|
||||
|
||||
token_api = 'https://api.dingtalk.com/v1.0/oauth2/accessToken'
|
||||
|
||||
# 该信息在钉钉开放应用中
|
||||
data = {
|
||||
"appKey": "ding5kqocon5s9oph5uq",
|
||||
"appSecret": 'HL1jgsIIfLAC0eTH0A1m4mwxUDqbgsiPeCCGGE3ocM6qJBTIW7Ivt9drxF_Z4Kb_'
|
||||
}
|
||||
|
||||
res = requests.post(token_api, json=data)
|
||||
token = res.json()['accessToken']
|
||||
|
||||
return token
|
||||
|
||||
def instances(TOKEN,formInstanceId,data_new) -> str:
|
||||
""" 函数功能:更新表单内容 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
|
||||
payload = {
|
||||
"appType" : "APP_TNVBVZ3K8G56HG03Z45Q",
|
||||
"systemToken" : "CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1",
|
||||
"userId" : "2268275546837446", # 曹伟 id
|
||||
"language" : "zh_CN",
|
||||
"useLatestVersion" : "false",
|
||||
"formInstanceId" : formInstanceId,
|
||||
"updateFormDataJson" : json.dumps(data_new, cls=NpEncoder),
|
||||
}
|
||||
|
||||
res = requests.put(api, headers=headers, json=payload)
|
||||
|
||||
return res.json()
|
||||
|
||||
def read_form_instances(token,formUuid,createFromTimeGMT,createToTimeGMT,page=1,n = 100,searchField={}):
|
||||
""" 函数功能:读取普通表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com/v1.0/yida/forms/instances/search'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
'currentPage':page,
|
||||
'pageSize':n,
|
||||
"appType": "APP_TNVBVZ3K8G56HG03Z45Q",
|
||||
"systemToken": "CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1",
|
||||
"userId": "yida_pub_account",
|
||||
"language": "zh_CN",
|
||||
"formUuid": formUuid,
|
||||
"createFromTimeGMT":createFromTimeGMT,
|
||||
"createToTimeGMT":createToTimeGMT,
|
||||
"searchFieldJson":json.dumps(searchField)
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
|
||||
def read_form_instancesV2(token,formUuid,page=1,n = 100,searchField={}):
|
||||
""" 函数功能:读取普通表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com/v1.0/yida/forms/instances/search'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
'currentPage':page,
|
||||
'pageSize':n,
|
||||
"appType": "APP_TNVBVZ3K8G56HG03Z45Q",
|
||||
"systemToken": "CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1",
|
||||
"userId": "yida_pub_account",
|
||||
"language": "zh_CN",
|
||||
"formUuid": formUuid,
|
||||
"searchFieldJson":json.dumps(searchField)
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
def timeStamp(timeNum):
|
||||
""" 函数功能:将时间戳(毫秒) 转化为时间日期格式"""
|
||||
timeStamp = float(timeNum/1000)
|
||||
timeArray = time.localtime(timeStamp)
|
||||
otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
|
||||
return otherStyleTime
|
||||
|
||||
def get_time_range_hour(n):
|
||||
""" 获取近n个小时的时间戳(单位是毫秒)"""
|
||||
|
||||
def delay_time(time_str, years=0, months=0, days=0, hours=0, minutes=0, seconds=0):
|
||||
if type(time_str) == str:
|
||||
time_str = datetime.strptime(time_str, '%Y-%m-%d %H:%M:%S')
|
||||
ret = time_str + relativedelta(years=years, months=months, days=days, hours=hours, minutes=minutes, seconds=seconds)
|
||||
return ret
|
||||
|
||||
# 获得当前时间
|
||||
now_time = datetime.now()
|
||||
endTime = int(time.mktime(time.strptime(now_time.strftime('%Y/%m/%d %H:%M:%S'),'%Y/%m/%d %H:%M:%S'))) * 1000 - 1000
|
||||
# n小时前的时间
|
||||
ret2 = delay_time(now_time, hours=-n)
|
||||
startTime = int(time.mktime(time.strptime(ret2.strftime('%Y/%m/%d %H:%M:%S'),'%Y/%m/%d %H:%M:%S'))) * 1000
|
||||
|
||||
# print(f'时间区间:[{startTime}-{endTime}]')
|
||||
return startTime,endTime
|
||||
def remove_duplicates(data):
|
||||
new_data = {}
|
||||
for key, value in data.items():
|
||||
if value not in new_data.values():
|
||||
new_data[key] = value
|
||||
return new_data
|
||||
class NpEncoder(json.JSONEncoder):
|
||||
def default(self, obj):
|
||||
if isinstance(obj, np.integer):
|
||||
return int(obj)
|
||||
elif isinstance(obj, np.floating):
|
||||
return float(obj)
|
||||
elif isinstance(obj, np.ndarray):
|
||||
return obj.tolist()
|
||||
else:
|
||||
return super(NpEncoder, self).default(obj)
|
||||
|
||||
TOKEN = generateToken()
|
||||
# 对应关系维护
|
||||
FORMID = 'FORM-JD8668C1CAC7X39ND7GNN4O8D2UA3L21P3ODL22' # 普通表单
|
||||
stting = {
|
||||
'材料数据':['材料名称','品牌','零件号','规格型号','库存数量','采购均价','计量单位'],
|
||||
'材料销售历史数据':['源单号','材料名称','数量','金额','材料备注'],
|
||||
'储值卡数据':['卡名称','持卡人手机号','绑定车牌号','卡号','剩余面额','剩余实额','卡有效期'],
|
||||
'单据历史数据':['工单号','车牌号','里程','金额','开单时间','工单备注'],
|
||||
'供应商信息数据':['供应商名称','联系人','手机','联系电话'],
|
||||
'客户车辆信息':['客户姓名','车牌号','手机号码','VIN码'],
|
||||
'套餐卡数据':['卡名称','持卡人姓名','持卡人手机号','绑定车牌号','卡号','卡有效期','内容名称','剩余次数','单次面额','单次实额','卡说明'],
|
||||
'项目施工历史数据':['源单号','项目名称','工时数','工时费'],
|
||||
'项目信息数据':['项目名称','所需工时1','工时单价1']
|
||||
}
|
||||
""" 24小时读取一遍数据 """
|
||||
# 获取全量公有
|
||||
form_data = read_form_instancesV2(token=TOKEN, formUuid=FORMID, page=1, n=100,searchField={'selectField_ldo3qxal': '公有'})
|
||||
PAGES = form_data.get('totalCount')//100 + 1
|
||||
ALL_DATA_staff = {}
|
||||
""" 获取全量数据 """
|
||||
for i in range(1, PAGES+1):
|
||||
form_data = read_form_instancesV2(token=TOKEN, formUuid=FORMID, page=i, n=100,searchField={'selectField_ldo3qxal': '公有'})
|
||||
for data in form_data.get('data'):
|
||||
ALL_DATA_staff[data['formData']['textField_ldo3qxao'] + data['formData']['textField_ldo3qxap']]=data['formInstanceId']
|
||||
# 获取前一天私有
|
||||
TIME_RANGE = {'24小时内':[timeStamp(t) for t in get_time_range_hour(24)]} # 当前时刻向前推1个小时
|
||||
data_siyou = read_form_instances(token=TOKEN,formUuid=FORMID,page=1,n=100,createFromTimeGMT=[*TIME_RANGE['24小时内']][0],createToTimeGMT=[*TIME_RANGE['24小时内']][1],searchField={'selectField_ldo3qxal': '私有'})
|
||||
ALL_DATA_staff_V2 = {}
|
||||
for i in range(0,len(data_siyou['data'])):
|
||||
if set(stting[data_siyou['data'][i]['formData']['textField_ldo3qxao']]).issubset(set(json.loads(data_siyou['data'][i]['formData']['textField_ldo3qxaq']))):
|
||||
ALL_DATA_staff_V2[data_siyou['data'][i]['formInstanceId']]=data_siyou['data'][i]['formData']['textField_ldo3qxao']+data_siyou['data'][i]['formData']['textField_ldo3qxap']
|
||||
ALL_DATA_staff_V3 = remove_duplicates(ALL_DATA_staff_V2)
|
||||
for id in ALL_DATA_staff_V3:
|
||||
data_new = {
|
||||
'selectField_ldo3qxal':'公有',
|
||||
'textField_ldo3qxan':'区域公用'
|
||||
}
|
||||
res = instances(TOKEN,id,data_new)
|
||||
print(res,id)
|
||||
time.sleep(0.5)
|
||||
@@ -0,0 +1,271 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import psycopg2
|
||||
import pandas as pd
|
||||
# 获得连接
|
||||
conn = psycopg2.connect(database="f6_bi", user="BASIC$ro_caowei", password="!ro_caowei123", host="hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com", port="80")
|
||||
# 获得游标对象,一个游标对象可以对数据库进行执行操作
|
||||
cursor = conn.cursor()
|
||||
|
||||
import datetime
|
||||
now_time = datetime.datetime.now()
|
||||
yes_time = now_time + datetime.timedelta(days=-2)
|
||||
yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前一天日期
|
||||
# sql语句 建表
|
||||
sql =f"""SELECT * FROM "public"."holo_ads_report_saas_profile_ngv_detail_d" WHERE "date_id" = '{yes_time_nyr}';"""
|
||||
# 执行语句
|
||||
cursor.execute(sql)
|
||||
# 获取结果集的每一行
|
||||
rows = cursor.fetchall()
|
||||
# 获取所有字段名
|
||||
all_fields = cursor.description
|
||||
#执行结果转化为dataframe
|
||||
col = []
|
||||
for i in all_fields:
|
||||
col.append(i[0])
|
||||
data_NGV = pd.DataFrame(list(rows),columns=col)
|
||||
# data_NGV.to_excel(r'C:\Users\admin\Desktop\NGV明细.xlsx')
|
||||
# 关闭数据库连接
|
||||
cursor.close()
|
||||
conn.close()
|
||||
|
||||
# -*- coding: utf-8 -*-
|
||||
import psycopg2
|
||||
import pandas as pd
|
||||
# 获得连接
|
||||
conn = psycopg2.connect(database="f6_bi", user="BASIC$ro_caowei", password="!ro_caowei123", host="hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com", port="80")
|
||||
# 获得游标对象,一个游标对象可以对数据库进行执行操作
|
||||
cursor = conn.cursor()
|
||||
|
||||
import datetime
|
||||
now_time = datetime.datetime.now()
|
||||
yes_time = now_time + datetime.timedelta(days=-1)
|
||||
yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前一天日期
|
||||
# sql语句 建表
|
||||
sql =f"""SELECT * FROM "public"."holo_ads_report_saas_profile_ngv_detail_d" WHERE "date_id" = '{yes_time_nyr}';"""
|
||||
# 执行语句
|
||||
cursor.execute(sql)
|
||||
# 获取结果集的每一行
|
||||
rows = cursor.fetchall()
|
||||
# 获取所有字段名
|
||||
all_fields = cursor.description
|
||||
#执行结果转化为dataframe
|
||||
col = []
|
||||
for i in all_fields:
|
||||
col.append(i[0])
|
||||
data_NGV_new = pd.DataFrame(list(rows),columns=col)
|
||||
# data_NGV.to_excel(r'C:\Users\admin\Desktop\NGV明细.xlsx')
|
||||
# 关闭数据库连接
|
||||
cursor.close()
|
||||
conn.close()
|
||||
|
||||
# 使用isin方法筛选出A表中id_own_org字段不在B表中的行
|
||||
c_data = data_NGV_new[~data_NGV_new['id_own_org'].isin(data_NGV['id_own_org'])]
|
||||
|
||||
# 输出C表内容
|
||||
c_data = c_data.reset_index()
|
||||
|
||||
# 基础函数配置
|
||||
import pandas as pd
|
||||
import pandas as pd
|
||||
import requests
|
||||
from pathlib import Path
|
||||
from urllib.parse import quote
|
||||
import json
|
||||
import numpy as np
|
||||
import time
|
||||
|
||||
ROOT = Path('.').absolute() # 当前工作目录
|
||||
|
||||
def generateToken() -> str:
|
||||
""" 生成 token """
|
||||
|
||||
token_api = 'https://api.dingtalk.com/v1.0/oauth2/accessToken'
|
||||
|
||||
# 该信息在钉钉开放应用中
|
||||
data = {
|
||||
"appKey": "ding5kqocon5s9oph5uq",
|
||||
"appSecret": 'HL1jgsIIfLAC0eTH0A1m4mwxUDqbgsiPeCCGGE3ocM6qJBTIW7Ivt9drxF_Z4Kb_'
|
||||
}
|
||||
|
||||
res = requests.post(token_api, json=data)
|
||||
token = res.json()['accessToken']
|
||||
|
||||
return token
|
||||
|
||||
def read_instances(token, formUuid, page, n):
|
||||
""" 函数功能:读取普通表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType" : "APP_FE5IWP670JPRC5ZA6HK0",
|
||||
"systemToken" : "HP666C71ZLASJ0MPWC5ZOUA4AGDP17QU7TPRK92",
|
||||
"userId" : "yida_pub_account",
|
||||
"language" : "zh_CN",
|
||||
"formUuid" : formUuid,
|
||||
"currentPage" : page,
|
||||
"pageSize" : n
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
|
||||
def read_delete(token, formInstanceId):
|
||||
""" 函数功能:调用本接口删除表单数据。 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType" : "APP_FE5IWP670JPRC5ZA6HK0",
|
||||
"systemToken" : "HP666C71ZLASJ0MPWC5ZOUA4AGDP17QU7TPRK92",
|
||||
"userId" : "yida_pub_account",
|
||||
"language" : "zh_CN",
|
||||
"formInstanceId" : formInstanceId
|
||||
}
|
||||
|
||||
res = requests.delete(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
|
||||
def read_new(FORMID,formData):
|
||||
""" 通过实例id 获取表单内容 """
|
||||
api = f'https://api.dingtalk.com/v1.0/yida/forms/instances'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
payload = {
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_FE5IWP670JPRC5ZA6HK0",
|
||||
"formDataJson" : json.dumps(formData, cls=NpEncoder),
|
||||
"systemToken" : "HP666C71ZLASJ0MPWC5ZOUA4AGDP17QU7TPRK92",
|
||||
"language" : "zh_CN",
|
||||
"userId" : "yida_pub_account"
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
print(res.json())
|
||||
|
||||
return res.json()
|
||||
|
||||
|
||||
def component(FORMID,TOKEN):
|
||||
""" 获取组件信息 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/formFields'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
payload = {
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_FE5IWP670JPRC5ZA6HK0",
|
||||
# "formDataJson" : json.dumps(formData, cls=NpEncoder),
|
||||
"systemToken" : "HP666C71ZLASJ0MPWC5ZOUA4AGDP17QU7TPRK92",
|
||||
# "language" : "zh_CN",
|
||||
"userId" : "yida_pub_account"
|
||||
}
|
||||
|
||||
res = requests.get(api, headers=headers, json=payload)
|
||||
|
||||
return res.json()
|
||||
def Batch_creation(FORMID,TOKEN,ALL_formData):
|
||||
""" 获取组件信息 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchSave'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
payload = {
|
||||
# "formDataJson" : json.dumps(formData, cls=NpEncoder),
|
||||
"noExecuteExpression" : "true",
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_FE5IWP670JPRC5ZA6HK0",
|
||||
"asynchronousExecution" : "true",
|
||||
"systemToken" : "HP666C71ZLASJ0MPWC5ZOUA4AGDP17QU7TPRK92",
|
||||
"keepRunningAfterException" : "true",
|
||||
"userId" : "yida_pub_account",
|
||||
"formDataJsonList" : json.dumps(ALL_formData, cls=NpEncoder),
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
return res.json()
|
||||
|
||||
def delete_in_batches(FORMID,TOKEN,ALL_DATA_instance):
|
||||
""" 批量删除表单实例 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/batchRemove'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
|
||||
payload = {
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_FE5IWP670JPRC5ZA6HK0",
|
||||
"asynchronousExecution" : "true",
|
||||
"systemToken" : "HP666C71ZLASJ0MPWC5ZOUA4AGDP17QU7TPRK92",
|
||||
"formInstanceIdList" : json.dumps(ALL_DATA_instance, cls=NpEncoder),
|
||||
"userId" : "yida_pub_account",
|
||||
"executeExpression" : "false" # 不触发
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
return res.json()
|
||||
|
||||
def delete_in(TOKEN,formInstanceIdList):
|
||||
""" 逐条删除表单实例 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances?appType=APP_FE5IWP670JPRC5ZA6HK0&systemToken=HP666C71ZLASJ0MPWC5ZOUA4AGDP17QU7TPRK92&userId=yida_pub_account&language=zh_CN&formInstanceId={formInstanceIdList}'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
res = requests.delete(api, headers=headers)
|
||||
return res.json()
|
||||
|
||||
class NpEncoder(json.JSONEncoder):
|
||||
def default(self, obj):
|
||||
if isinstance(obj, np.integer):
|
||||
return int(obj)
|
||||
elif isinstance(obj, np.floating):
|
||||
return float(obj)
|
||||
elif isinstance(obj, np.ndarray):
|
||||
return obj.tolist()
|
||||
else:
|
||||
return super(NpEncoder, self).default(obj)
|
||||
TOKEN = generateToken()
|
||||
'''遍历数据进行新建'''
|
||||
c_data = c_data.astype('string')
|
||||
c_data = c_data.fillna('',inplace=False)
|
||||
for a in range(0,len(c_data["date_fmt"]),100):
|
||||
ALL_formData = []
|
||||
for i in range(a,a+100): # for i in range(len(c_data["date_fmt"])):
|
||||
try:
|
||||
formData = {
|
||||
'textField_kwcwsccn': c_data["group_name"][i], # 公司名称
|
||||
'textField_kwcwsccj': c_data["org_name"][i], # 门店名称
|
||||
'textField_kwcwscci': c_data["org_code"][i], # 门店编码
|
||||
'textField_kwcwsccm': c_data["group_grade"][i], # 公司等级
|
||||
'textField_kwcwy3tw': c_data["saas_use_year"][i], # 使用时间
|
||||
'textField_kwcwscck': c_data["org_size"][i], # 门店规模
|
||||
'textField_kwcwy3tx': c_data["org_stage"][i], # 门店阶段
|
||||
'textField_kwcwsccl': c_data["saas_customer_type"][i] # 门店分层
|
||||
}
|
||||
ALL_formData.append(json.dumps(formData, cls=NpEncoder))
|
||||
except:
|
||||
pass
|
||||
FORMID = "FORM-NC966W8174MVWULSY88ZN2WHTF6J3JTWRWCWK2"
|
||||
res_new = Batch_creation(FORMID,TOKEN,ALL_formData)
|
||||
print("新建第",i,"条数据!",res_new)
|
||||
@@ -0,0 +1,971 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 64,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"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",
|
||||
"def read_form_instances_v2(token, formInstanceId):\n",
|
||||
" \"\"\" 函数功能:调用本接口通过表单实例ID查询表单数据。 -- 应用:F6客户服务 \"\"\"\n",
|
||||
"\n",
|
||||
" api = f'https://api.dingtalk.com/v1.0/yida/forms/instances/{formInstanceId}?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",
|
||||
" return res.json()\n",
|
||||
"def timeStamp(timeNum):\n",
|
||||
" \"\"\" 函数功能:将时间戳(毫秒) 转化为时间日期格式\"\"\"\n",
|
||||
" timeStamp = float(timeNum/1000)\n",
|
||||
" timeArray = time.localtime(timeStamp)\n",
|
||||
" otherStyleTime = time.strftime(\"%Y-%m-%d %H:%M:%S\", timeArray)\n",
|
||||
" return otherStyleTime\n",
|
||||
"\n",
|
||||
"def read_form_instances(token, formUuid, page=1, n=100, searchField={},createFromTimeGMT='',createToTimeGMT=''):\n",
|
||||
" \"\"\" 函数功能:读取普通表单的所有数据 -- 应用:F6客户服务 \"\"\"\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",
|
||||
" 'currentPage': page,\n",
|
||||
" 'pageSize': n,\n",
|
||||
" \"appType\": \"APP_UYZ0KG6L0CCNV80GZ66O\",\n",
|
||||
" \"systemToken\": \"XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2\",\n",
|
||||
" \"userId\": \"yida_pub_account\",\n",
|
||||
" \"language\": \"zh_CN\",\n",
|
||||
" \"formUuid\": formUuid,\n",
|
||||
" 'createFromTimeGMT':createFromTimeGMT,\n",
|
||||
" 'createToTimeGMT':createToTimeGMT,\n",
|
||||
" \"searchFieldJson\": json.dumps(searchField)\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" res = requests.post(api, headers=headers, json=formData)\n",
|
||||
" return res.json()\n",
|
||||
"class NpEncoder(json.JSONEncoder):\n",
|
||||
" def default(self, obj):\n",
|
||||
" if isinstance(obj, np.integer):\n",
|
||||
" return int(obj)\n",
|
||||
" elif isinstance(obj, np.floating):\n",
|
||||
" return float(obj)\n",
|
||||
" elif isinstance(obj, np.ndarray):\n",
|
||||
" return obj.tolist()\n",
|
||||
" else:\n",
|
||||
" return super(NpEncoder, self).default(obj)\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 65,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"时间戳: 2023-08-22 2023-08-21\n",
|
||||
"时间戳: 2023-08-21 2023-08-20\n",
|
||||
"时间戳: 2023-08-20 2023-08-19\n",
|
||||
"时间戳: 2023-08-19 2023-08-18\n",
|
||||
"时间戳: 2023-08-18 2023-08-17\n",
|
||||
"时间戳: 2023-08-17 2023-08-16\n",
|
||||
"时间戳: 2023-08-16 2023-08-15\n",
|
||||
"时间戳: 2023-08-15 2023-08-14\n",
|
||||
"时间戳: 2023-08-14 2023-08-13\n",
|
||||
"时间戳: 2023-08-13 2023-08-12\n",
|
||||
"时间戳: 2023-08-12 2023-08-11\n",
|
||||
"时间戳: 2023-08-11 2023-08-10\n",
|
||||
"时间戳: 2023-08-10 2023-08-09\n",
|
||||
"时间戳: 2023-08-09 2023-08-08\n",
|
||||
"时间戳: 2023-08-08 2023-08-07\n",
|
||||
"时间戳: 2023-08-07 2023-08-06\n",
|
||||
"时间戳: 2023-08-06 2023-08-05\n",
|
||||
"时间戳: 2023-08-05 2023-08-04\n",
|
||||
"时间戳: 2023-08-04 2023-08-03\n",
|
||||
"时间戳: 2023-08-03 2023-08-02\n",
|
||||
"时间戳: 2023-08-02 2023-08-01\n",
|
||||
"时间戳: 2023-08-01 2023-07-31\n",
|
||||
"时间戳: 2023-07-31 2023-07-30\n",
|
||||
"时间戳: 2023-07-30 2023-07-29\n",
|
||||
"时间戳: 2023-07-29 2023-07-28\n",
|
||||
"时间戳: 2023-07-28 2023-07-27\n",
|
||||
"时间戳: 2023-07-27 2023-07-26\n",
|
||||
"时间戳: 2023-07-26 2023-07-25\n",
|
||||
"时间戳: 2023-07-25 2023-07-24\n",
|
||||
"时间戳: 2023-07-24 2023-07-23\n",
|
||||
"时间戳: 2023-07-23 2023-07-22\n",
|
||||
"表单数据共8878条!\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import datetime\n",
|
||||
"now_time = datetime.datetime.now()\n",
|
||||
"yes_time = now_time + datetime.timedelta(days=-0)\n",
|
||||
"yes_time_nyr = yes_time.strftime('%Y/%m/%d %H:%M:%S')# 获取前一天日期\n",
|
||||
"\n",
|
||||
"# 指定日期和时间\n",
|
||||
"date_str = yes_time_nyr\n",
|
||||
"\n",
|
||||
"# 将字符串转换为datetime对象\n",
|
||||
"date_obj = datetime.datetime.strptime(date_str, '%Y/%m/%d %H:%M:%S')\n",
|
||||
"\n",
|
||||
"# 获取当前时间戳(单位为秒)\n",
|
||||
"current_timestamp = int(date_obj.timestamp())\n",
|
||||
"\n",
|
||||
"data_new = []\n",
|
||||
"FormDatas = []\n",
|
||||
"\n",
|
||||
"TOKEN = generateToken()\n",
|
||||
"for i in range(0,31):\n",
|
||||
" try:\n",
|
||||
" a = 86400 * i\n",
|
||||
" b = 86400 * (i + 1)\n",
|
||||
" # 获取-1天的时间戳(单位为秒)\n",
|
||||
" yesterday_timestamp_1 = current_timestamp - a\n",
|
||||
"\n",
|
||||
" # 获取-2天的时间戳(单位为秒)\n",
|
||||
" yesterday_timestamp_2 = current_timestamp - b\n",
|
||||
"\n",
|
||||
" # 将时间戳转换为 datetime 对象\n",
|
||||
" dt_1 = datetime.datetime.fromtimestamp(yesterday_timestamp_1)\n",
|
||||
"\n",
|
||||
" # 格式化日期字符串\n",
|
||||
" date_str_1 = dt_1.strftime(\"%Y-%m-%d\")\n",
|
||||
"\n",
|
||||
" # 将时间戳转换为 datetime 对象\n",
|
||||
" dt_2 = datetime.datetime.fromtimestamp(yesterday_timestamp_2)\n",
|
||||
"\n",
|
||||
" # 格式化日期字符串\n",
|
||||
" date_str_2 = dt_2.strftime(\"%Y-%m-%d\")\n",
|
||||
"\n",
|
||||
" print(\"时间戳:\", date_str_1, date_str_2)\n",
|
||||
"\n",
|
||||
" res = read_form_instances(token=TOKEN, formUuid='FORM-GP666M71TNE9GFK57V2O85NLM04I34CSG1TFLC',createFromTimeGMT=date_str_2,createToTimeGMT=date_str_1)\n",
|
||||
" totalCount = res.get('totalCount')\n",
|
||||
" PAGES = totalCount//100 + 1\n",
|
||||
" for page in range(1,PAGES+1):\n",
|
||||
" res = read_form_instances(token=TOKEN, formUuid='FORM-GP666M71TNE9GFK57V2O85NLM04I34CSG1TFLC',page=page,n=100,createFromTimeGMT=date_str_2,createToTimeGMT=date_str_1)\n",
|
||||
" FormDatas.extend(res.get('data'))\n",
|
||||
" for v in range(0,len(res.get('data'))):\n",
|
||||
" abc = res['data'][v]['formInstanceId']+\",\"+res['data'][v]['formData']['textField_dfvhslm']\n",
|
||||
" data_new.append(abc)\n",
|
||||
" except:\n",
|
||||
" pass\n",
|
||||
"\n",
|
||||
"print(f\"表单数据共{len(data_new)}条!\") #耗时1分钟左右\n",
|
||||
"# # 创建DataFrame对象\n",
|
||||
"# df = pd.DataFrame({'ID': data_new})\n",
|
||||
"# # 将DataFrame对象写入Excel文件中\n",
|
||||
"# df.to_excel(r'C:\\Users\\admin\\Desktop\\data0821.xlsx', index=False)\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 66,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# -*- coding: utf-8 -*-\n",
|
||||
"import psycopg2\n",
|
||||
"import pandas as pd\n",
|
||||
"# 获得连接\n",
|
||||
"conn = psycopg2.connect(database=\"f6_bi\", user=\"BASIC$ro_caowei\", password=\"!ro_caowei123\", host=\"hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com\", port=\"80\")\n",
|
||||
"# 获得游标对象,一个游标对象可以对数据库进行执行操作\n",
|
||||
"cursor = conn.cursor()\n",
|
||||
"\n",
|
||||
"import datetime\n",
|
||||
"now_time = datetime.datetime.now()\n",
|
||||
"yes_time = now_time + datetime.timedelta(days=-1)\n",
|
||||
"yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前一天日期\n",
|
||||
"# sql语句 建表\n",
|
||||
"sql =f\"\"\"SELECT * FROM \"public\".\"holo_ads_report_sales_saas_commission_info_d\" WHERE \"org_type\" LIKE '%一般%' ;\"\"\"\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_F6 = pd.DataFrame(list(rows),columns=col)\n",
|
||||
"# data_F6.to_excel(r'C:\\Users\\admin\\Desktop\\小六提成明细.xlsx')\n",
|
||||
"# 关闭数据库连接\n",
|
||||
"cursor.close()\n",
|
||||
"conn.close()\n",
|
||||
"data_F6 = data_F6.drop_duplicates(subset='org_code')\n",
|
||||
"data_F6 = data_F6[data_F6['franchise_group_name'].notnull()]\n",
|
||||
"data_F6 = data_F6.reset_index()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 67,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"{} FINST-WD766Z61L2HDCWWZD0VS1D6BZW8R320INOILL88J {'textField_lld2doy7': '金铁橡全国运营中心'}\n",
|
||||
"{} FINST-96766PB13IGD10D3FE2AKBQ5PAOC2Y1W79HLLANF {'textField_lld2doy7': '金铁橡全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLPH2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL7H2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLFH2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLZG2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLLH2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLQG2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLRG2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLQH2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLRH2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLNG2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLHH2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL9H2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLVG2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLJG2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLXG2 {'textField_lld2doy7': '金铁橡全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL6L2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLFI2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL8I2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLJI2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLDJ2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLUJ2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLNL2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLHM2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLAN2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL6O2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLDG2 {'textField_lld2doy7': '金铁橡全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL7I2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL9J2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLPN2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLZN2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL3I2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLCI2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL4L2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLUM2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLTM2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL6J2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLAJ2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLGL2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLTN2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL4J2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL2L2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLLM2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLSN2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLSF2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLRI2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLVI2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLAI2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLYI2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL5N2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL4O2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLEI2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL2J2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL9L2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLIM2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLMM2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL9O2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLYH2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL5I2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLBI2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL8L2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLRL2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLKN2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLJM2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLTE2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLUF2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLLJ2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLLK2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLFN2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLNF2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL3J2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLOM2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLXM2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL0M2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL2N2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL3F2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLKI2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLIJ2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLJJ2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLIK2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLQK2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLVK2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLXK2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLTL2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLRF2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLJK2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLFM2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLWH2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLPF2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLQF2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLTI2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL8J2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLXJ2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLVJ2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLZL2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL5M2 {'textField_lld2doy7': '金铁橡全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL7M2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLAM2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLQN2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLXN2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLIF2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLHI2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLLI2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLMJ2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL6N2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLAO2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL7G2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLWE2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL4I2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLHJ2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLTK2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLUL2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL4M2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLCG2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLZI2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL5J2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLQM2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL3G2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLSI2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLQJ2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLPL2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLNN2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLMF2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLEG2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL1I2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLOI2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLZK2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL0O2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLVM2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL8O2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLVE2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLYE2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL2F2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLXH2 {'textField_lld2doy7': '金铁橡全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLSK2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL1M2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLJN2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLHN2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL3O2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL0G2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL6G2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLTH2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLVN2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLWF2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLOJ2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL3L2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLYL2 {'textField_lld2doy7': '金铁橡全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLMI2 {'textField_lld2doy7': '金铁橡全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLSJ2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLZJ2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLEL2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL1L2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL1J2 {'textField_lld2doy7': '金铁橡全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL1K2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLDL2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL1N2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLDF2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLGI2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLMK2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLSM2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLON2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLBJ2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLXI2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLGN2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL7N2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL9F2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLIG2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLUK2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLCL2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLLN2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL9G2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLKJ2 {'textField_lld2doy7': '金铁橡全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL3M2 {'textField_lld2doy7': '金铁橡全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLYN2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL8N2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLEN2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLOF2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLYF2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLFJ2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL0N2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLDN2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLHL2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLEF2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLAG2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLEM2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLNM2 {'textField_lld2doy7': '金铁橡全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLZH2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL2I2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLVL2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLVF2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL6I2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL7L2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLFF2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLDI2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL2O2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLWN2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLPE2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLYJ2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLWK2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLFL2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLKF2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLPI2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLYK2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLOL2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLPM2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLBL2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL9M2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLML2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLXL2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLBO2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL5F2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLBF2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLZF2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLGJ2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLNJ2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL6M2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLCM2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL0L2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLRN2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLSL2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLWM2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLHG2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLNI2 {'textField_lld2doy7': '金铁橡全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLPJ2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLKK2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLGM2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLYM2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL3N2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLCF2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLUH2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLTJ2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLLL2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL4N2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLIN2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLMN2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL5O2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLSE2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLAF2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL7J2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLJL2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL9N2 {'textField_lld2doy7': '金铁橡全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLUN2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLNK2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLRK2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLXF2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLCJ2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLWJ2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLRJ2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLIL2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL8M2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLGF2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL5G2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLJF2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLVH2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLUI2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL5L2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLAL2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL1O2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLKL2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL7F2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLHF2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL0J2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLFG2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL9I2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLLF2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLPK2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLWI2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL0K2 {'textField_lld2doy7': '金铁橡全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLRM2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLCN2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLL7O2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLQI2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLDM2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLZM2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL8G2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLGG2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLII2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32IN0OBGLLCO2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLDK2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL8K2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLBK2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL2K2 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL4K2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL3K2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLHK2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLFK2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLL9K2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLAK2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLGK2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-KW866BB1VUGDES3KARKSC6SQWFB32HN0OBGLLCK2 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-SE766NA1U8FDT6O9B41I84SR9W893S1LCEELLMU6 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-8R766CD1MZEDLMLOFLVCMAW385QT3DJ9CEELLI0A {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-96766PB10YED1CV4AAAL99CRA4W63V69CEELL383 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-DK866Z9100FDWYXGDRI07AV0XOMW2GO8CEELLJMA {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLLRIT1 {'textField_lld2doy7': '中威车饰'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLLVET1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLL0FT1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLL8DT1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLLZET1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLL1FT1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLLLCT1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLLXET1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLLZAT1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLL5DT1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLLWET1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLLJCT1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLLYET1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLLKCT1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLLTET1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLL7DT1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLLXAT1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLLADT1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLLUET1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLL3BT1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLL9DT1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLL1BT1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLL6DT1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLL0BT1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLL2BT1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLL3DT1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLLDCT1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLLQCT1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLL5GT1 {'textField_lld2doy7': '金铁橡全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLL6BT1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3PDV5CDLLODT1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLHOS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLL9NS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLL1QS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLWZS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL6RS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL20T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLYYS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLXOS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLYOS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLL2PS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLPQS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLOPS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLAKS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLDQS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLWPS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLVRS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLL1KS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLD7T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLA4T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLL4PS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLEOS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLL2NS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLD0T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL3RS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLMMS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLMYS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLNLS1 {'textField_lld2doy7': '领检精修连锁(加盟商)'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLMQS1 {'textField_lld2doy7': '领检精修连锁(加盟商)'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLO7T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLBVS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLOQS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLYKS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLJNS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLSWS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLTZS1 {'textField_lld2doy7': '金铁橡全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLHMS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL12T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLZ1T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLTXS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLV0T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLH5T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLAUS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLJ2T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL64T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL8YS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLI2T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLSTS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLV1T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL02T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLWRS1 {'textField_lld2doy7': '轮胎事业部鸳鸯计划'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLG5T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLTMS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLX8T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLE2T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLL8KS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL54T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLPNS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL4AT1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLT8T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL9US1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL4VS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLS2T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLU8T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLUTS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLCKS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLJKS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL28T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLY8T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLF2T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLX0T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL8RS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL8US1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLH2T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLW0T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL7RS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLL4KS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLSMS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLL8JS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLG2T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL5VS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLT2T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLW1T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLRTS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLRMS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLIKS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL38T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL3AT1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLUXS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLI5T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL6VS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLDYS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLBYS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLWXS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLHKS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLONS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLCYS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLBKS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLAYS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLL6JS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLL5JS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLL9JS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLZ8T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLXRS1 {'textField_lld2doy7': '轮胎事业部鸳鸯计划'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL9RS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLW8T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL9YS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLBQS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLL9QS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL18T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLR2T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL2AT1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL44T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLNNS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLAQS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLY1T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLOTS1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLFOS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLT6T1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL79T1 {'textField_lld2doy7': '中威车饰'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLFSS1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLFYS1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL2VS1 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLHUS1 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLOVS1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLA3T1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLRQS1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLZLS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLYLS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL1YS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLNRS1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL56T1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLFVS1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLIZS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLJOS1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLK7T1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLX7T1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLLAT1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLV3T1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLO4T1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLO9T1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLRAT1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLVUS1 {'textField_lld2doy7': '金铁橡全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLYUS1 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLNYS1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLJJS1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLN7T1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLA2T1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLTJS1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLXNS1 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLI9T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLINS1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLQ3T1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL95T1 {'textField_lld2doy7': '金铁橡全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLV2T1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLEAT1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLP0T1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLO2T1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLWKS1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLTAT1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL5AT1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLW5T1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL47T1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLSAT1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLA1T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL45T1 {'textField_lld2doy7': 'CC养车'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLHJS1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3NDV5CDLLIJS1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLGWS1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL5YS1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL69T1 {'textField_lld2doy7': '中威车饰'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLK3T1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLORS1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLK6T1 {'textField_lld2doy7': '零公里精英门店运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLLL6T1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-F1666YC1FU7D40P76KT6J5JCPO8P3ODV5CDLL24T1 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-NGA66WA1GKEDOL3W58JCBDIH17NJ25PQXYCLLNK2 {'textField_lld2doy7': '金铁橡全国运营中心'}\n",
|
||||
"{} FINST-DK866Z91FIEDK96R6HRP2B504ZX83GE6WYCLL2I3 {'textField_lld2doy7': '金铁橡全国运营中心'}\n",
|
||||
"{} FINST-96766PB1B59DWITX5MNU57XM5W9I32SQGJBLLJK71 {'textField_lld2doy7': '修工坊全国运营中心'}\n",
|
||||
"{} FINST-BTA66F718T8DQH56A0VKF9H6I6HJ24U8GJBLL5QD {'textField_lld2doy7': '修工坊全国运营中心'}\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"for i in range(0,len(data_new)):\n",
|
||||
" result = data_new[i].split(\",\")\n",
|
||||
" row_numbers = data_F6.index[data_F6['org_code'] == result[1]].tolist()\n",
|
||||
" if len(row_numbers) > 0:\n",
|
||||
" data= {\n",
|
||||
" \"textField_lld2doy7\":data_F6.loc[row_numbers,\"franchise_group_name\"].values[0]\n",
|
||||
" }\n",
|
||||
" res = transcation(TOKEN,result[0],data)\n",
|
||||
" print(res,result[0],data)"
|
||||
]
|
||||
}
|
||||
],
|
||||
"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
|
||||
}
|
||||
@@ -0,0 +1,362 @@
|
||||
# 基础函数配置
|
||||
import pandas as pd
|
||||
import pandas as pd
|
||||
import requests
|
||||
from pathlib import Path
|
||||
from urllib.parse import quote
|
||||
import json
|
||||
import numpy as np
|
||||
import time
|
||||
from datetime import date, timedelta
|
||||
|
||||
ROOT = Path('.').absolute() # 当前工作目录
|
||||
|
||||
def generateToken() -> str:
|
||||
""" 生成 token """
|
||||
|
||||
token_api = 'https://api.dingtalk.com/v1.0/oauth2/accessToken'
|
||||
|
||||
# 该信息在钉钉开放应用中
|
||||
data = {
|
||||
"appKey": "ding5kqocon5s9oph5uq",
|
||||
"appSecret": 'HL1jgsIIfLAC0eTH0A1m4mwxUDqbgsiPeCCGGE3ocM6qJBTIW7Ivt9drxF_Z4Kb_'
|
||||
}
|
||||
|
||||
res = requests.post(token_api, json=data)
|
||||
token = res.json()['accessToken']
|
||||
|
||||
return token
|
||||
|
||||
def transcation(token,FORMID,data_new):
|
||||
""" 函数功能:更新表单内容 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
payload = {
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId" : "2268275546837446", # 曹伟 id
|
||||
"language" : "zh_CN",
|
||||
"useLatestVersion" : "false",
|
||||
"formInstanceId" : FORMID,
|
||||
"updateFormDataJson" : json.dumps(data_new, cls=NpEncoder),
|
||||
}
|
||||
|
||||
res = requests.put(api, headers=headers, json=payload)
|
||||
|
||||
return res.json()
|
||||
def aggree_approval(token: str, taskId: str, processInstanceId: str, formData: dict,res_new):
|
||||
""" 函数功能:同意审批节点 --F6客户服务 应用 """
|
||||
api = f'https://api.dingtalk.com/v1.0/yida/tasks/execute'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
payload = {
|
||||
"outResult": "AGREE",
|
||||
"appType": "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken": "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"remark": "同意(接口自动)",
|
||||
"formDataJson": json.dumps(formData, cls=NpEncoder),
|
||||
"processInstanceId": processInstanceId,
|
||||
# "userId": "yida_pub_account",
|
||||
"userId": res_new,
|
||||
"language": "zh_CN",
|
||||
"taskId": int(taskId)
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
# print('同意审批节点')
|
||||
return res
|
||||
def read_instances_new(token, formUuid, page, n):
|
||||
""" 函数功能:读取流程表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/processes/instances?pageNumber={page}&pageSize={n}'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType": "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken": "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId": "yida_pub_account", # 超级管理员账号
|
||||
"language": "zh_CN",
|
||||
"formUuid": formUuid,
|
||||
# "searchFieldJson": json.dumps(searchField), # 如果增加上这一项会要求升级宜搭存储
|
||||
"instanceStatus": "RUNNING"
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
def get_approval_records(token: str, processInstanceId: str):
|
||||
""" 函数功能:获取流程表单的审批记录 --F6客户服务 应用 """
|
||||
appType = "APP_UYZ0KG6L0CCNV80GZ66O"
|
||||
systemToken = "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2"
|
||||
userId = "yida_pub_account"
|
||||
|
||||
api = f'https://api.dingtalk.com/v1.0/yida/processes/operationRecords?appType={appType}&systemToken={systemToken}&userId={userId}&language=zh_CN&processInstanceId={processInstanceId}'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
res = requests.get(api, headers=headers)
|
||||
# print('获取流程表单的审批记录')
|
||||
return res.json()
|
||||
def read_instances_pt(token, formUuid, page, n):
|
||||
""" 函数功能:读取普通表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId" : "yida_pub_account",
|
||||
"language" : "zh_CN",
|
||||
"formUuid" : formUuid,
|
||||
"currentPage" : page,
|
||||
"pageSize" : n
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
def read_processes(token, formUuid, page, n):
|
||||
""" 函数功能:读取普通表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType": "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken": "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId": "yida_pub_account", # 超级管理员账号
|
||||
"language": "zh_CN",
|
||||
"formUuid": formUuid,
|
||||
'currentPage':page,
|
||||
'pageSize':n
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
def instances_id(TOKEN,id):
|
||||
""" 函数功能:查询表单实例 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/{id}?appType=APP_UYZ0KG6L0CCNV80GZ66O&systemToken=XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2&userId=yida_pub_account&language=zh_CN'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
|
||||
res = requests.get(api, headers=headers)
|
||||
|
||||
return res.json()
|
||||
def component(FORMID,TOKEN):
|
||||
""" 获取组件信息 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/formFields'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
payload = {
|
||||
"formUuid" : FORMID,
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
# "formDataJson" : json.dumps(formData, cls=NpEncoder),
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
# "language" : "zh_CN",
|
||||
"userId" : "yida_pub_account"
|
||||
}
|
||||
|
||||
res = requests.get(api, headers=headers, json=payload)
|
||||
|
||||
return res.json()
|
||||
def component_id(id,TOKEN):
|
||||
api = f'https://api.dingtalk.com/v1.0/yida/processes/instancesInfos/{id}?appType=APP_UYZ0KG6L0CCNV80GZ66O&systemToken=XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2&userId=yida_pub_account&language=zh_CN'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
|
||||
res = requests.get(api, headers=headers)
|
||||
|
||||
return res.json()
|
||||
def find_indexes(daichuli_mendian_name,i_two):
|
||||
indexes = [i for i, x in enumerate(daichuli_mendian_name) if x == i_two]
|
||||
return indexes
|
||||
def get_staffID(TOKEN: str,ALL_DATA_staff,staff_name):
|
||||
res_new = [v['formData']['textField_lfrw3u59'] for v in ALL_DATA_staff if v['formData']['textField_lfrw3u58']== staff_name]
|
||||
# print('通过员工名称获取员工id')
|
||||
return res_new
|
||||
def read_form_instances_v2(token, formInstanceId):
|
||||
""" 函数功能:调用本接口通过表单实例ID查询表单数据。 -- 应用:F6客户服务 """
|
||||
|
||||
api = f'https://api.dingtalk.com/v1.0/yida/forms/instances/{formInstanceId}?appType=APP_UYZ0KG6L0CCNV80GZ66O&systemToken=XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2&userId=yida_pub_account&language=zh_CN'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
res = requests.get(api, headers=headers)
|
||||
return res.json()
|
||||
def timeStamp(timeNum):
|
||||
""" 函数功能:将时间戳(毫秒) 转化为时间日期格式"""
|
||||
timeStamp = float(timeNum/1000)
|
||||
timeArray = time.localtime(timeStamp)
|
||||
otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
|
||||
return otherStyleTime
|
||||
|
||||
def read_form_instances(token, formUuid, page=1, n=100, searchField={},createFromTimeGMT='',createToTimeGMT=''):
|
||||
""" 函数功能:读取普通表单的所有数据 -- 应用:F6客户服务 """
|
||||
|
||||
api = f'https://api.dingtalk.com/v1.0/yida/forms/instances/search'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
'currentPage': page,
|
||||
'pageSize': n,
|
||||
"appType": "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken": "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId": "yida_pub_account",
|
||||
"language": "zh_CN",
|
||||
"formUuid": formUuid,
|
||||
'createFromTimeGMT':createFromTimeGMT,
|
||||
'createToTimeGMT':createToTimeGMT,
|
||||
"searchFieldJson": json.dumps(searchField)
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
class NpEncoder(json.JSONEncoder):
|
||||
def default(self, obj):
|
||||
if isinstance(obj, np.integer):
|
||||
return int(obj)
|
||||
elif isinstance(obj, np.floating):
|
||||
return float(obj)
|
||||
elif isinstance(obj, np.ndarray):
|
||||
return obj.tolist()
|
||||
else:
|
||||
return super(NpEncoder, self).default(obj)
|
||||
import datetime
|
||||
now_time = datetime.datetime.now()
|
||||
yes_time = now_time + datetime.timedelta(days=-0)
|
||||
yes_time_nyr = yes_time.strftime('%Y/%m/%d %H:%M:%S')# 获取前一天日期
|
||||
|
||||
# 指定日期和时间
|
||||
date_str = yes_time_nyr
|
||||
|
||||
# 将字符串转换为datetime对象
|
||||
date_obj = datetime.datetime.strptime(date_str, '%Y/%m/%d %H:%M:%S')
|
||||
|
||||
# 获取当前时间戳(单位为秒)
|
||||
current_timestamp = int(date_obj.timestamp())
|
||||
|
||||
data_new = []
|
||||
FormDatas = []
|
||||
|
||||
TOKEN = generateToken()
|
||||
for i in range(0,31):
|
||||
try:
|
||||
a = 86400 * i
|
||||
b = 86400 * (i + 1)
|
||||
# 获取-1天的时间戳(单位为秒)
|
||||
yesterday_timestamp_1 = current_timestamp - a
|
||||
|
||||
# 获取-2天的时间戳(单位为秒)
|
||||
yesterday_timestamp_2 = current_timestamp - b
|
||||
|
||||
# 将时间戳转换为 datetime 对象
|
||||
dt_1 = datetime.datetime.fromtimestamp(yesterday_timestamp_1)
|
||||
|
||||
# 格式化日期字符串
|
||||
date_str_1 = dt_1.strftime("%Y-%m-%d")
|
||||
|
||||
# 将时间戳转换为 datetime 对象
|
||||
dt_2 = datetime.datetime.fromtimestamp(yesterday_timestamp_2)
|
||||
|
||||
# 格式化日期字符串
|
||||
date_str_2 = dt_2.strftime("%Y-%m-%d")
|
||||
|
||||
print("时间戳:", date_str_1, date_str_2)
|
||||
|
||||
res = read_form_instances(token=TOKEN, formUuid='FORM-GP666M71TNE9GFK57V2O85NLM04I34CSG1TFLC',createFromTimeGMT=date_str_2,createToTimeGMT=date_str_1)
|
||||
totalCount = res.get('totalCount')
|
||||
PAGES = totalCount//100 + 1
|
||||
for page in range(1,PAGES+1):
|
||||
res = read_form_instances(token=TOKEN, formUuid='FORM-GP666M71TNE9GFK57V2O85NLM04I34CSG1TFLC',page=page,n=100,createFromTimeGMT=date_str_2,createToTimeGMT=date_str_1)
|
||||
FormDatas.extend(res.get('data'))
|
||||
for v in range(0,len(res.get('data'))):
|
||||
abc = res['data'][v]['formInstanceId']+","+res['data'][v]['formData']['textField_dfvhslm']
|
||||
data_new.append(abc)
|
||||
except:
|
||||
pass
|
||||
|
||||
print(f"表单数据共{len(data_new)}条!") #耗时1分钟左右
|
||||
# # 创建DataFrame对象
|
||||
# df = pd.DataFrame({'ID': data_new})
|
||||
# # 将DataFrame对象写入Excel文件中
|
||||
# df.to_excel(r'C:\Users\admin\Desktop\data0821.xlsx', index=False)
|
||||
# -*- coding: utf-8 -*-
|
||||
import psycopg2
|
||||
import pandas as pd
|
||||
# 获得连接
|
||||
conn = psycopg2.connect(database="f6_bi", user="BASIC$ro_caowei", password="!ro_caowei123", host="hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com", port="80")
|
||||
# 获得游标对象,一个游标对象可以对数据库进行执行操作
|
||||
cursor = conn.cursor()
|
||||
|
||||
import datetime
|
||||
now_time = datetime.datetime.now()
|
||||
yes_time = now_time + datetime.timedelta(days=-1)
|
||||
yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前一天日期
|
||||
# sql语句 建表
|
||||
sql =f"""SELECT * FROM "public"."holo_ads_report_sales_saas_commission_info_d" WHERE "org_type" LIKE '%一般%' ;"""
|
||||
# 执行语句
|
||||
cursor.execute(sql)
|
||||
# 获取结果集的每一行
|
||||
rows = cursor.fetchall()
|
||||
# 获取所有字段名
|
||||
all_fields = cursor.description
|
||||
#执行结果转化为dataframe
|
||||
col = []
|
||||
for i in all_fields:
|
||||
col.append(i[0])
|
||||
data_F6 = pd.DataFrame(list(rows),columns=col)
|
||||
# data_F6.to_excel(r'C:\Users\admin\Desktop\小六提成明细.xlsx')
|
||||
# 关闭数据库连接
|
||||
cursor.close()
|
||||
conn.close()
|
||||
data_F6 = data_F6.drop_duplicates(subset='org_code')
|
||||
data_F6 = data_F6[data_F6['franchise_group_name'].notnull()]
|
||||
data_F6 = data_F6.reset_index()
|
||||
for i in range(0,len(data_new)):
|
||||
result = data_new[i].split(",")
|
||||
row_numbers = data_F6.index[data_F6['org_code'] == result[1]].tolist()
|
||||
if len(row_numbers) > 0:
|
||||
data= {
|
||||
"textField_lld2doy7":data_F6.loc[row_numbers,"franchise_group_name"].values[0]
|
||||
}
|
||||
res = transcation(TOKEN,result[0],data)
|
||||
print(res,result[0],data)
|
||||
@@ -0,0 +1,467 @@
|
||||
import datetime
|
||||
starttime = datetime.datetime.now()
|
||||
|
||||
import holidays
|
||||
from datetime import date
|
||||
|
||||
# 创建一个中国节假日对象
|
||||
cn_holidays = holidays.China()
|
||||
# 获取当前日期
|
||||
input_date = date.today()
|
||||
switch = ""
|
||||
# 判断日期是否为节假日
|
||||
if input_date in cn_holidays:
|
||||
switch = "节假日"
|
||||
print(f"{input_date} 是节假日")
|
||||
else:
|
||||
switch = "非节假日"
|
||||
print(f"{input_date} 不是节假日")
|
||||
date_list = []
|
||||
for data in cn_holidays:
|
||||
date_list.append(str(data))
|
||||
|
||||
from datetime import date, timedelta
|
||||
|
||||
def get_saturdays(year):
|
||||
start_date = date(year, 1, 1)
|
||||
end_date = date(year, 12, 31)
|
||||
saturdays = []
|
||||
|
||||
while start_date <= end_date:
|
||||
if start_date.weekday() == 6: # 周日的weekday值为6
|
||||
saturdays.append(start_date)
|
||||
start_date += timedelta(days=1)
|
||||
|
||||
return saturdays
|
||||
|
||||
current_year = date.today().year
|
||||
saturdays = get_saturdays(current_year)
|
||||
print(saturdays)
|
||||
for data in saturdays:
|
||||
date_list.append(str(data))
|
||||
date_list = list(set(date_list))
|
||||
date_list = sorted(date_list, reverse=False)
|
||||
|
||||
# -*- coding: utf-8 -*-
|
||||
import psycopg2
|
||||
import pandas as pd
|
||||
# 获得连接
|
||||
conn = psycopg2.connect(database="f6_bi", user="BASIC$ro_caowei", password="!ro_caowei123", host="hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com", port="80")
|
||||
# 获得游标对象,一个游标对象可以对数据库进行执行操作
|
||||
cursor = conn.cursor()
|
||||
|
||||
import datetime
|
||||
now_time = datetime.datetime.now()
|
||||
yes_time = now_time + datetime.timedelta(days=-1)
|
||||
yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前一天日期
|
||||
# sql语句 建表
|
||||
sql =f"""SELECT * FROM "public"."holo_ads_report_saas_profile_ngv_detail_d" WHERE "date_id" = '{yes_time_nyr}' ;"""
|
||||
# 执行语句
|
||||
cursor.execute(sql)
|
||||
# 获取结果集的每一行
|
||||
rows = cursor.fetchall()
|
||||
# 获取所有字段名
|
||||
all_fields = cursor.description
|
||||
#执行结果转化为dataframe
|
||||
col = []
|
||||
for i in all_fields:
|
||||
col.append(i[0])
|
||||
data_NGV_j = pd.DataFrame(list(rows),columns=col)
|
||||
# data_NGV.to_excel(r'C:\Users\admin\Desktop\NGV明细.xlsx')
|
||||
# 关闭数据库连接
|
||||
cursor.close()
|
||||
conn.close()
|
||||
import pandas as pd
|
||||
import pandas as pd
|
||||
import numpy as np
|
||||
import requests
|
||||
import json
|
||||
import time
|
||||
import re
|
||||
from datetime import datetime
|
||||
from dateutil.relativedelta import relativedelta
|
||||
from pathlib import Path
|
||||
from urllib.parse import quote
|
||||
from io import BytesIO
|
||||
|
||||
ROOT = Path('.').absolute() # 当前工作目录
|
||||
textField_lrzoowld = "正常" # 运行状态
|
||||
textField_lrzoowlb = "" # 信息说明
|
||||
|
||||
# 生成 token,参数不需要修改
|
||||
def generateToken() -> str:
|
||||
""" 生成 token """
|
||||
|
||||
token_api = 'https://api.dingtalk.com/v1.0/oauth2/accessToken'
|
||||
|
||||
# 该信息在钉钉开放应用中
|
||||
data = {
|
||||
"appKey": "ding5kqocon5s9oph5uq",
|
||||
"appSecret": 'HL1jgsIIfLAC0eTH0A1m4mwxUDqbgsiPeCCGGE3ocM6qJBTIW7Ivt9drxF_Z4Kb_'
|
||||
}
|
||||
|
||||
res = requests.post(token_api, json=data)
|
||||
token = res.json()['accessToken']
|
||||
|
||||
return token
|
||||
|
||||
def read_instances(token, formUuid, page, n,formatted_today,formatted_today_two):
|
||||
""" 函数功能:读取普通表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId" : "yida_pub_account",
|
||||
"language" : "zh_CN",
|
||||
"formUuid" : formUuid,
|
||||
"createFromTimeGMT" : formatted_today,
|
||||
"createToTimeGMT" : formatted_today_two,
|
||||
"currentPage" : page,
|
||||
"pageSize" : n
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
|
||||
def initiate_process(TOKEN,formUuid,processCode,formData):
|
||||
""" 发起宜搭审批流程 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/processes/instances/start'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
payload = {
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId" : "yida_pub_account",
|
||||
"language" : "zh_CN",
|
||||
"formUuid" : formUuid,
|
||||
"formDataJson" : json.dumps(formData, cls=NpEncoder),
|
||||
"processCode" : processCode,
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
return res.json()
|
||||
def read_instances_new(token, formUuid, page, n):
|
||||
""" 函数功能:读取普通表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId" : "yida_pub_account",
|
||||
"language" : "zh_CN",
|
||||
"formUuid" : formUuid,
|
||||
"currentPage" : page,
|
||||
"pageSize" : n
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
def read_instances_ngv(token, formUuid, page, n,searchField):
|
||||
""" 函数功能:读取普通表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId" : "yida_pub_account",
|
||||
"language" : "zh_CN",
|
||||
"formUuid" : formUuid,
|
||||
"searchFieldJson": json.dumps(searchField),
|
||||
"currentPage" : page,
|
||||
"pageSize" : n
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
class NpEncoder(json.JSONEncoder):
|
||||
def default(self, obj):
|
||||
if isinstance(obj, np.integer):
|
||||
return int(obj)
|
||||
elif isinstance(obj, np.floating):
|
||||
return float(obj)
|
||||
elif isinstance(obj, np.ndarray):
|
||||
return obj.tolist()
|
||||
else:
|
||||
return super(NpEncoder, self).default(obj)
|
||||
|
||||
TOKEN = generateToken()
|
||||
import datetime
|
||||
kaishiriqi = 173
|
||||
kaishiriqi_1 = 172
|
||||
date_one = 1
|
||||
now_time = datetime.datetime.now()
|
||||
# now_time = now_time + datetime.timedelta(days=+3)
|
||||
if now_time.strftime("%Y-%m-%d") in date_list:
|
||||
date_one = 0
|
||||
print("开始次数:",date_one)
|
||||
print("当前日期:",now_time)
|
||||
|
||||
for i in range(1,10):
|
||||
new_date = now_time + datetime.timedelta(days=-i)
|
||||
new_date = new_date.strftime("%Y-%m-%d")
|
||||
print("遍历日期:",new_date)
|
||||
if new_date in date_list:
|
||||
date_one = date_one + 1
|
||||
print("节假日期:",new_date)
|
||||
else:
|
||||
break
|
||||
print("遍历次数:",date_one)
|
||||
# now_time = datetime.datetime.now()
|
||||
for i in range(0,date_one):
|
||||
import datetime
|
||||
now_time = now_time + datetime.timedelta(days=-i)
|
||||
today = now_time + datetime.timedelta(days=-kaishiriqi) # 根据周日和法定节假日 输出每日需要筛选的日期范围
|
||||
formatted_today = today.strftime("%Y-%m-%d")
|
||||
today_two = now_time + datetime.timedelta(days=-kaishiriqi_1)
|
||||
formatted_today_two = today_two.strftime("%Y-%m-%d")
|
||||
print(formatted_today,formatted_today_two)
|
||||
timestamp_ms = int(time.time() * 1000) # 当然日期时间戳 毫秒级
|
||||
'''读取省市小六技术专家区域客服区域客成 '''
|
||||
FORMID = "FORM-TP866D918DFCA4FW79YZU5X43FO32QZJQDZJL7" #省市小六技术专家区域客服区域客成
|
||||
# 读取流程表单数据
|
||||
form_data = read_instances_new(token=TOKEN, formUuid=FORMID, page=1, n=100)
|
||||
PAGES = form_data.get('totalCount')//100 + 1
|
||||
textField_gif29wy = {}
|
||||
textField_3athky8 = {}
|
||||
textField_3hgho1m = {}
|
||||
textField_nc7gskc = {}
|
||||
textField_qk1e5di = {}
|
||||
textField_m3hchxc = {} # 市
|
||||
""" 获取全量数据 """
|
||||
for i in range(1, PAGES+1):
|
||||
form_data = read_instances_new(token=TOKEN, formUuid=FORMID, page=i, n=100)
|
||||
for data in form_data.get('data'):
|
||||
textField_gif29wy[data['formData']['textField_3hgho1m']]=data['formData']['textField_gif29wy'] #区域客成id
|
||||
textField_3athky8[data['formData']['textField_3hgho1m']]=data['formData']['textField_3athky8'] #区域客服id
|
||||
textField_3hgho1m[data['formData']['textField_3hgho1m']]=data['formData']['textField_3hgho1m'] #小六id
|
||||
textField_nc7gskc[data['formData']['textField_3hgho1m']]=data['formData']['textField_nc7gskc'] #技术专家id
|
||||
textField_qk1e5di[data['formData']['textField_3hgho1m']]=data['formData']['textField_lntniove'] #区域经理id
|
||||
textField_m3hchxc[data['formData']['textField_m3hchxc']]=data['formData']['textField_3hgho1m'] #小六id-市
|
||||
print(f'读取到省市小六技术专家区域客服区域客成表单中 {len(textField_gif29wy)} 条数据!')
|
||||
# [流程]新签服务流程 读取待处理数据
|
||||
json_data = []
|
||||
read_data = read_instances(TOKEN, "FORM-9X766NA1SOATBRSH2K42D8BJCX7L326HI64TKG5", 1, 100,formatted_today,formatted_today_two)
|
||||
PAGES = read_data.get('totalCount')//100 + 1
|
||||
print(formatted_today,read_data.get('totalCount'))
|
||||
for a in range(1,PAGES + 1):
|
||||
read_data = read_instances(TOKEN, "FORM-9X766NA1SOATBRSH2K42D8BJCX7L326HI64TKG5", a, 100,formatted_today,formatted_today_two)
|
||||
for i in range(0,len(read_data["data"])):
|
||||
json_data.append(read_data["data"][i]['formData'])
|
||||
# [流程]新签服务流程 读取待处理数据
|
||||
json_data_all = []
|
||||
for i in range(0,1000,100):
|
||||
now_time = datetime.datetime.now()
|
||||
today = now_time + datetime.timedelta(days=-(i+100))
|
||||
formatted_today = today.strftime("%Y-%m-%d")
|
||||
today_two = now_time + datetime.timedelta(days=-i)
|
||||
formatted_today_two = today_two.strftime("%Y-%m-%d")
|
||||
timestamp_ms = int(time.time() * 1000) # 当然日期时间戳 毫秒级
|
||||
read_data = read_instances(TOKEN, "FORM-9X766NA1SOATBRSH2K42D8BJCX7L326HI64TKG5", 1, 100,formatted_today,formatted_today_two)
|
||||
PAGES = read_data.get('totalCount')//100 + 1
|
||||
print(formatted_today,formatted_today_two,read_data.get('totalCount'))
|
||||
for a in range(1,PAGES + 1):
|
||||
read_data = read_instances(TOKEN, "FORM-9X766NA1SOATBRSH2K42D8BJCX7L326HI64TKG5", a, 100,formatted_today,formatted_today_two)
|
||||
for i in range(0,len(read_data["data"])):
|
||||
json_data_all.append(read_data["data"][i]['formData'])
|
||||
df = pd.DataFrame(json_data_all)
|
||||
# 将所有字段设置为字符串类型
|
||||
df = df.astype(str)
|
||||
data_NGV = data_NGV_j[['org_code', 'id_own_group']]
|
||||
data_NGV = data_NGV.rename(columns={'org_code': 'orgCode'})
|
||||
result = pd.merge(df, data_NGV, on='orgCode', how='left')
|
||||
data_details_not_null = result.sort_values(by='openTime', ascending=True).drop_duplicates(subset='id_own_group')
|
||||
# 重置索引
|
||||
data_details_not_null = data_details_not_null.reset_index(drop=True)
|
||||
data_details_all = data_details_not_null.copy() # 替换名称 v2
|
||||
# 获取待回访人员信息+去重
|
||||
name_list = []
|
||||
for data in json_data:
|
||||
name_list.append(data['employeeField_kyi1dqth_id'])
|
||||
unique_arr = []
|
||||
[unique_arr.append(x) for x in name_list if x not in unique_arr]
|
||||
print(unique_arr)
|
||||
|
||||
# 每日工作计划
|
||||
formUuid = "FORM-4V966N81OMEEH85QDP8XW4AH1AIZ2GKRLZTML21"
|
||||
processCode = "TPROC--4V966N81OMEEH85QDP8XW4AH1AIZ21ORLZTML31"
|
||||
|
||||
# 遍历数据并进行创建
|
||||
from datetime import datetime
|
||||
for name in unique_arr:
|
||||
tableField_lnsi0v71 = {}
|
||||
tableField_lnsi0v71['dateField_lmelabb1'] = ""
|
||||
tableField_lnsi0v71['employeeField_lmeqk429'] = ""
|
||||
for data in json_data:
|
||||
try:
|
||||
if data['employeeField_kyi1dqth_id'] == name and data['orgCode'] in data_details_all['orgCode'].values:
|
||||
# 过滤近7天有派发记录的数据
|
||||
# 获取当前日期
|
||||
today = datetime.now()
|
||||
# 计算前7天的日期
|
||||
seven_days_ago = today - timedelta(days=7)
|
||||
# 过滤近7天有派发记录的数据
|
||||
form_data_ces = read_instances_ngv(token=TOKEN, formUuid="FORM-KW766OD13WEEDPB6DSRTSD3IC2S131YMYKSML2", page=1, n=100, searchField={'textField_lmeqk42b': data["orgCode"]})
|
||||
if form_data_ces['totalCount'] == 0:
|
||||
date_string = today.strftime("%Y-%m-%dT%H:%MZ")
|
||||
else:
|
||||
date_string = form_data_ces['data'][0]['createdTimeGMT']
|
||||
|
||||
date_format = "%Y-%m-%dT%H:%MZ"
|
||||
date_object = datetime.strptime(date_string, date_format)
|
||||
|
||||
if date_object > seven_days_ago:
|
||||
print("近7天内有派发记录,不重复派发!",data["orgCode"])
|
||||
else:
|
||||
print(textField_m3hchxc[data['city']])
|
||||
data_one = {} # 子表单
|
||||
data_two = {} # 主表单
|
||||
# 子表单
|
||||
data_one['textField_lnsi0v72'] = data['orgName']
|
||||
data_one['textField_lnsi0v6s'] = data["saasEdition"] # 销售版本
|
||||
try:
|
||||
data_one['employeeField_lnsi0v6u'] = textField_nc7gskc[name[0]] # 技术专家
|
||||
data_one['employeeField_lnsi0v6v'] = textField_qk1e5di[name[0]] # 区域经理
|
||||
if textField_3hgho1m[name[0]] =="":
|
||||
data_one['employeeField_lnsi0v6w'] = textField_m3hchxc[data['city']] # 运营顾问
|
||||
else:
|
||||
data_one['employeeField_lnsi0v6w'] = textField_3hgho1m[name[0]] # 运营顾问
|
||||
except:
|
||||
data_one['employeeField_lnsi0v6u'] = data['technician_id'][0] # 技术专家
|
||||
data_one['employeeField_lnsi0v6v'] = data['manager_id'][0] # 区域经理
|
||||
data_one['employeeField_lnsi0v6w'] = textField_m3hchxc[data['city']] # 运营顾问
|
||||
data_one['dateField_lnsi0v6x'] = str(timestamp_ms) # 计划日期
|
||||
data_one['textField_lnsi0v6y'] = data["orgName"] # 门店名称-拷贝
|
||||
data_one['textField_lnsi0v6z'] = data["orgCode"] # 门店编码
|
||||
data_one['selectField_lnsi0v6q'] = "强化培训" # 拜访目的
|
||||
# data_one['textField_lnsi0v70'] = data_result.loc[i,"id_own_group"] # 公司id
|
||||
data_one['textareaField_lnsi0v6r'] = '''
|
||||
新签180天后:
|
||||
1.客户日常使用问题解答;
|
||||
2.跟客户查看主营分析,推荐进销存功能深度使用;
|
||||
3.跟客户查看车辆分析,推荐短信及其他营销功能;
|
||||
4.说明转介绍政策,索要转介绍;''' # 拜访目的说明
|
||||
# 加入数据
|
||||
tableField_lnsi0v71['tableField_lnsi0v71'] = [data_one]
|
||||
# 主表单
|
||||
# data_two['dateField_lmelabb1'] = str(timestamp_ms)
|
||||
# data_two['employeeField_lmeqk429'] = name
|
||||
tableField_lnsi0v71['dateField_lmelabb1'] = str(timestamp_ms)
|
||||
try:
|
||||
if name[0] =="":
|
||||
tableField_lnsi0v71['employeeField_lmeqk429'] = textField_m3hchxc[data['city']] # 运营顾问
|
||||
else:
|
||||
tableField_lnsi0v71['employeeField_lmeqk429'] = name[0]
|
||||
tableField_lnsi0v71['employeeField_lmeqk423'] = textField_qk1e5di[name[0]] # 区域经理
|
||||
tableField_lnsi0v71['employeeField_lmeqk424'] = textField_nc7gskc[name[0]] # 技术专家
|
||||
except:
|
||||
tableField_lnsi0v71['employeeField_lmeqk429'] = textField_m3hchxc[data['city']] # 运营顾问
|
||||
tableField_lnsi0v71['employeeField_lmeqk423'] = data['manager_id'][0] # 区域经理
|
||||
tableField_lnsi0v71['employeeField_lmeqk424'] = data['technician_id'][0] # 技术专家
|
||||
tableField_lnsi0v71['textField_lmu0523h'] = "自动派发回访计划" # 状态备用
|
||||
# 富文本 超链接 NGV
|
||||
try:
|
||||
form_data_ngv = read_instances_ngv(token=TOKEN, formUuid="FORM-ZK866D91O9LA4NIHCARG2DPIPCXF3Z087PPHL91", page=1, n=100, searchField={'textField_zc1iowp': data["orgCode"]})
|
||||
tableField_lnsi0v71['editorField_lodoplg0'] = ["root",{},["p",{},["span",{"data-type":"text"},["span",{"data-type":"leaf"},""]],["a",{"href":"https://f6car.aliwork.com/APP_UYZ0KG6L0CCNV80GZ66O/formDetail/FORM-ZK866D91O9LA4NIHCARG2DPIPCXF3Z087PPHL91?formInstId="+form_data_ngv['data'][0]['formInstanceId']+"&isAdmin=true"},["span",{"data-type":"text"},["span",{"unlink":{},"data-type":"leaf"},"点击查看门店NGV"]]],["span",{"data-type":"text"},["span",{"unlink":{},"data-type":"leaf"},""]]]] # 富文本 超链接 NGV
|
||||
except:
|
||||
pass
|
||||
res=initiate_process(TOKEN,formUuid,processCode,tableField_lnsi0v71)
|
||||
print(res,tableField_lnsi0v71)
|
||||
except Exception as e:
|
||||
textField_lrzoowld = "异常" # 运行状态
|
||||
textField_lrzoowlb = str(e) # 信息说明
|
||||
try:
|
||||
import requests
|
||||
import json
|
||||
import numpy as np
|
||||
def generateToken() -> str:
|
||||
""" 生成 token """
|
||||
|
||||
token_api = 'https://api.dingtalk.com/v1.0/oauth2/accessToken'
|
||||
|
||||
# 该信息在钉钉开放应用中
|
||||
data = {
|
||||
"appKey": "ding5kqocon5s9oph5uq",
|
||||
"appSecret": 'HL1jgsIIfLAC0eTH0A1m4mwxUDqbgsiPeCCGGE3ocM6qJBTIW7Ivt9drxF_Z4Kb_'
|
||||
}
|
||||
|
||||
res = requests.post(token_api, json=data)
|
||||
token = res.json()['accessToken']
|
||||
|
||||
return token
|
||||
|
||||
def start_instance_process(token: str, send_data):
|
||||
|
||||
"""发送宜搭表单 -- 发起流程表单
|
||||
|
||||
Args:
|
||||
token
|
||||
data:需要发送的数据字典
|
||||
"""
|
||||
|
||||
yida_api = "https://api.dingtalk.com/v1.0/yida/processes/instances/start"
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
payload = {
|
||||
"appType": "APP_TNVBVZ3K8G56HG03Z45Q",
|
||||
"systemToken": "CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1",
|
||||
"userId": "yida_pub_account",# 超级管理员账号
|
||||
"language": "zh_CN",
|
||||
"formUuid": "FORM-96D58EF2219240C7B1F55F9CA463CD2D4MGC",
|
||||
"formDataJson": json.dumps(send_data),
|
||||
"processCode":"TPROC--5Q966D918T1I1AZM68NASC6TS13P3QOL3PZRLC"
|
||||
}
|
||||
|
||||
res = requests.post(yida_api, headers=headers, json=payload)
|
||||
return res
|
||||
|
||||
class NpEncoder(json.JSONEncoder):
|
||||
def default(self, obj):
|
||||
if isinstance(obj, np.integer):
|
||||
return int(obj)
|
||||
elif isinstance(obj, np.floating):
|
||||
return float(obj)
|
||||
elif isinstance(obj, np.ndarray):
|
||||
return obj.tolist()
|
||||
else:
|
||||
return super(NpEncoder, self).default(obj)
|
||||
'''校验是否正常运行'''
|
||||
TOKEN = generateToken()
|
||||
import datetime
|
||||
endtime = datetime.datetime.now()
|
||||
implement = (endtime - starttime).seconds
|
||||
send_data = {
|
||||
"textField_ls01al4o": implement, #运行耗时
|
||||
"textField_lrzoowl8": "huifang_xinqian_180", # 程序名称
|
||||
"textField_lrzoowl9": "新签回访180天派发", # 功能简述
|
||||
"textField_lrzoowld": textField_lrzoowld, # 运行状态
|
||||
"textField_lrzoowlb": textField_lrzoowlb # 信息说明
|
||||
}
|
||||
res_yujing = start_instance_process(TOKEN,send_data)
|
||||
except:
|
||||
pass
|
||||
@@ -0,0 +1,398 @@
|
||||
import holidays
|
||||
from datetime import date
|
||||
|
||||
# 创建一个中国节假日对象
|
||||
cn_holidays = holidays.China()
|
||||
# 获取当前日期
|
||||
input_date = date.today()
|
||||
switch = ""
|
||||
# 判断日期是否为节假日
|
||||
if input_date in cn_holidays:
|
||||
switch = "节假日"
|
||||
print(f"{input_date} 是节假日")
|
||||
else:
|
||||
switch = "非节假日"
|
||||
print(f"{input_date} 不是节假日")
|
||||
date_list = []
|
||||
for data in cn_holidays:
|
||||
date_list.append(str(data))
|
||||
|
||||
from datetime import date, timedelta
|
||||
|
||||
def get_saturdays(year):
|
||||
start_date = date(year, 1, 1)
|
||||
end_date = date(year, 12, 31)
|
||||
saturdays = []
|
||||
|
||||
while start_date <= end_date:
|
||||
if start_date.weekday() == 6: # 周日的weekday值为6
|
||||
saturdays.append(start_date)
|
||||
start_date += timedelta(days=1)
|
||||
|
||||
return saturdays
|
||||
|
||||
current_year = date.today().year
|
||||
saturdays = get_saturdays(current_year)
|
||||
print(saturdays)
|
||||
for data in saturdays:
|
||||
date_list.append(str(data))
|
||||
date_list = list(set(date_list))
|
||||
date_list = sorted(date_list, reverse=False)
|
||||
|
||||
# -*- coding: utf-8 -*-
|
||||
import psycopg2
|
||||
import pandas as pd
|
||||
# 获得连接
|
||||
conn = psycopg2.connect(database="f6_bi", user="BASIC$ro_caowei", password="!ro_caowei123", host="hgprecn-cn-nif1vnv0y002-cn-shanghai.hologres.aliyuncs.com", port="80")
|
||||
# 获得游标对象,一个游标对象可以对数据库进行执行操作
|
||||
cursor = conn.cursor()
|
||||
|
||||
import datetime
|
||||
now_time = datetime.datetime.now()
|
||||
yes_time = now_time + datetime.timedelta(days=-1)
|
||||
yes_time_nyr = int(yes_time.strftime('%Y%m%d'))# 获取前一天日期
|
||||
# sql语句 建表
|
||||
sql =f"""SELECT * FROM "public"."holo_ads_report_saas_profile_ngv_detail_d" WHERE "date_id" = '{yes_time_nyr}' ;"""
|
||||
# 执行语句
|
||||
cursor.execute(sql)
|
||||
# 获取结果集的每一行
|
||||
rows = cursor.fetchall()
|
||||
# 获取所有字段名
|
||||
all_fields = cursor.description
|
||||
#执行结果转化为dataframe
|
||||
col = []
|
||||
for i in all_fields:
|
||||
col.append(i[0])
|
||||
data_NGV_j = pd.DataFrame(list(rows),columns=col)
|
||||
# data_NGV.to_excel(r'C:\Users\admin\Desktop\NGV明细.xlsx')
|
||||
# 关闭数据库连接
|
||||
cursor.close()
|
||||
conn.close()
|
||||
import pandas as pd
|
||||
import pandas as pd
|
||||
import numpy as np
|
||||
import requests
|
||||
import json
|
||||
import time
|
||||
import re
|
||||
from datetime import datetime
|
||||
from dateutil.relativedelta import relativedelta
|
||||
from pathlib import Path
|
||||
from urllib.parse import quote
|
||||
from io import BytesIO
|
||||
|
||||
ROOT = Path('.').absolute() # 当前工作目录
|
||||
|
||||
|
||||
# 生成 token,参数不需要修改
|
||||
def generateToken() -> str:
|
||||
""" 生成 token """
|
||||
|
||||
token_api = 'https://api.dingtalk.com/v1.0/oauth2/accessToken'
|
||||
|
||||
# 该信息在钉钉开放应用中
|
||||
data = {
|
||||
"appKey": "ding5kqocon5s9oph5uq",
|
||||
"appSecret": 'HL1jgsIIfLAC0eTH0A1m4mwxUDqbgsiPeCCGGE3ocM6qJBTIW7Ivt9drxF_Z4Kb_'
|
||||
}
|
||||
|
||||
res = requests.post(token_api, json=data)
|
||||
token = res.json()['accessToken']
|
||||
|
||||
return token
|
||||
|
||||
def read_instances(token, formUuid, page, n,formatted_today,formatted_today_two):
|
||||
""" 函数功能:读取普通表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId" : "yida_pub_account",
|
||||
"language" : "zh_CN",
|
||||
"formUuid" : formUuid,
|
||||
"createFromTimeGMT" : formatted_today,
|
||||
"createToTimeGMT" : formatted_today_two,
|
||||
"currentPage" : page,
|
||||
"pageSize" : n
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
|
||||
def initiate_process(TOKEN,formUuid,processCode,formData):
|
||||
""" 发起宜搭审批流程 """
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/processes/instances/start'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": TOKEN
|
||||
}
|
||||
payload = {
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId" : "yida_pub_account",
|
||||
"language" : "zh_CN",
|
||||
"formUuid" : formUuid,
|
||||
"formDataJson" : json.dumps(formData, cls=NpEncoder),
|
||||
"processCode" : processCode,
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=payload)
|
||||
return res.json()
|
||||
def read_instances_new(token, formUuid, page, n):
|
||||
""" 函数功能:读取普通表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId" : "yida_pub_account",
|
||||
"language" : "zh_CN",
|
||||
"formUuid" : formUuid,
|
||||
"currentPage" : page,
|
||||
"pageSize" : n
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
def read_instances_ngv(token, formUuid, page, n,searchField):
|
||||
""" 函数功能:读取普通表单的所有数据 """
|
||||
|
||||
api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
"x-acs-dingtalk-access-token": token
|
||||
}
|
||||
|
||||
formData = {
|
||||
"appType" : "APP_UYZ0KG6L0CCNV80GZ66O",
|
||||
"systemToken" : "XA966F81JAJOFCVVVKO64E9MIIZV1EWE5SFMKJ2",
|
||||
"userId" : "yida_pub_account",
|
||||
"language" : "zh_CN",
|
||||
"formUuid" : formUuid,
|
||||
"searchFieldJson": json.dumps(searchField),
|
||||
"currentPage" : page,
|
||||
"pageSize" : n
|
||||
}
|
||||
|
||||
res = requests.post(api, headers=headers, json=formData)
|
||||
return res.json()
|
||||
class NpEncoder(json.JSONEncoder):
|
||||
def default(self, obj):
|
||||
if isinstance(obj, np.integer):
|
||||
return int(obj)
|
||||
elif isinstance(obj, np.floating):
|
||||
return float(obj)
|
||||
elif isinstance(obj, np.ndarray):
|
||||
return obj.tolist()
|
||||
else:
|
||||
return super(NpEncoder, self).default(obj)
|
||||
|
||||
TOKEN = generateToken()
|
||||
import datetime
|
||||
kaishiriqi = 173
|
||||
kaishiriqi_1 = 172
|
||||
date_one = 1
|
||||
now_time = datetime.datetime.now()
|
||||
# now_time = now_time + datetime.timedelta(days=+3)
|
||||
if now_time.strftime("%Y-%m-%d") in date_list:
|
||||
date_one = 0
|
||||
print("开始次数:",date_one)
|
||||
print("当前日期:",now_time)
|
||||
|
||||
for i in range(1,10):
|
||||
new_date = now_time + datetime.timedelta(days=-i)
|
||||
new_date = new_date.strftime("%Y-%m-%d")
|
||||
print("遍历日期:",new_date)
|
||||
if new_date in date_list:
|
||||
date_one = date_one + 1
|
||||
print("节假日期:",new_date)
|
||||
else:
|
||||
break
|
||||
print("遍历次数:",date_one)
|
||||
# now_time = datetime.datetime.now()
|
||||
for i in range(0,date_one):
|
||||
now_time = now_time + datetime.timedelta(days=-i)
|
||||
today = now_time + datetime.timedelta(days=-kaishiriqi) # 根据周日和法定节假日 输出每日需要筛选的日期范围
|
||||
formatted_today = today.strftime("%Y-%m-%d")
|
||||
today_two = now_time + datetime.timedelta(days=-kaishiriqi_1)
|
||||
formatted_today_two = today_two.strftime("%Y-%m-%d")
|
||||
print(formatted_today,formatted_today_two)
|
||||
timestamp_ms = int(time.time() * 1000) # 当然日期时间戳 毫秒级
|
||||
'''读取省市小六技术专家区域客服区域客成 '''
|
||||
FORMID = "FORM-TP866D918DFCA4FW79YZU5X43FO32QZJQDZJL7" #省市小六技术专家区域客服区域客成
|
||||
# 读取流程表单数据
|
||||
form_data = read_instances_new(token=TOKEN, formUuid=FORMID, page=1, n=100)
|
||||
PAGES = form_data.get('totalCount')//100 + 1
|
||||
textField_gif29wy = {}
|
||||
textField_3athky8 = {}
|
||||
textField_3hgho1m = {}
|
||||
textField_nc7gskc = {}
|
||||
textField_qk1e5di = {}
|
||||
textField_m3hchxc = {} # 市
|
||||
""" 获取全量数据 """
|
||||
for i in range(1, PAGES+1):
|
||||
form_data = read_instances_new(token=TOKEN, formUuid=FORMID, page=i, n=100)
|
||||
for data in form_data.get('data'):
|
||||
textField_gif29wy[data['formData']['textField_m3hchxc']]=data['formData']['textField_gif29wy'] #区域客成id
|
||||
textField_3athky8[data['formData']['textField_3hgho1m']]=data['formData']['textField_3athky8'] #区域客服id
|
||||
textField_3hgho1m[data['formData']['textField_3hgho1m']]=data['formData']['textField_3hgho1m'] #小六id
|
||||
textField_nc7gskc[data['formData']['textField_3hgho1m']]=data['formData']['textField_nc7gskc'] #技术专家id
|
||||
textField_qk1e5di[data['formData']['textField_3hgho1m']]=data['formData']['textField_lntniove'] #区域经理id
|
||||
textField_m3hchxc[data['formData']['textField_m3hchxc']]=data['formData']['textField_3hgho1m'] #小六id-市
|
||||
print(f'读取到省市小六技术专家区域客服区域客成表单中 {len(textField_gif29wy)} 条数据!')
|
||||
# [流程]新签服务流程 读取待处理数据
|
||||
json_data = []
|
||||
read_data = read_instances(TOKEN, "FORM-9X766NA1SOATBRSH2K42D8BJCX7L326HI64TKG5", 1, 100,formatted_today,formatted_today_two)
|
||||
PAGES = read_data.get('totalCount')//100 + 1
|
||||
print(formatted_today,read_data.get('totalCount'))
|
||||
for a in range(1,PAGES + 1):
|
||||
read_data = read_instances(TOKEN, "FORM-9X766NA1SOATBRSH2K42D8BJCX7L326HI64TKG5", a, 100,formatted_today,formatted_today_two)
|
||||
for i in range(0,len(read_data["data"])):
|
||||
json_data.append(read_data["data"][i]['formData'])
|
||||
# [流程]新签服务流程 读取待处理数据
|
||||
json_data_all = []
|
||||
for i in range(0,1000,100):
|
||||
now_time = datetime.datetime.now()
|
||||
today = now_time + datetime.timedelta(days=-(i+100))
|
||||
formatted_today = today.strftime("%Y-%m-%d")
|
||||
today_two = now_time + datetime.timedelta(days=-i)
|
||||
formatted_today_two = today_two.strftime("%Y-%m-%d")
|
||||
timestamp_ms = int(time.time() * 1000) # 当然日期时间戳 毫秒级
|
||||
read_data = read_instances(TOKEN, "FORM-9X766NA1SOATBRSH2K42D8BJCX7L326HI64TKG5", 1, 100,formatted_today,formatted_today_two)
|
||||
PAGES = read_data.get('totalCount')//100 + 1
|
||||
print(formatted_today,formatted_today_two,read_data.get('totalCount'))
|
||||
for a in range(1,PAGES + 1):
|
||||
read_data = read_instances(TOKEN, "FORM-9X766NA1SOATBRSH2K42D8BJCX7L326HI64TKG5", a, 100,formatted_today,formatted_today_two)
|
||||
for i in range(0,len(read_data["data"])):
|
||||
json_data_all.append(read_data["data"][i]['formData'])
|
||||
df = pd.DataFrame(json_data_all)
|
||||
# 将所有字段设置为字符串类型
|
||||
df = df.astype(str)
|
||||
data_NGV = data_NGV_j[['org_code', 'id_own_group']]
|
||||
data_NGV = data_NGV.rename(columns={'org_code': 'orgCode'})
|
||||
result = pd.merge(df, data_NGV, on='orgCode', how='left')
|
||||
data_details_not_null = result.sort_values(by='openTime', ascending=True).drop_duplicates(subset='id_own_group')
|
||||
# 重置索引
|
||||
data_details_not_null = data_details_not_null.reset_index(drop=True)
|
||||
data_details_all = data_details_not_null.copy() # 替换名称 v2
|
||||
# 获取待回访人员信息+去重
|
||||
name_list = []
|
||||
for data in json_data:
|
||||
name_list.append(data['employeeField_kyi1dqth_id'])
|
||||
unique_arr = []
|
||||
[unique_arr.append(x) for x in name_list if x not in unique_arr]
|
||||
print(unique_arr)
|
||||
|
||||
# 每日工作计划
|
||||
formUuid = "FORM-4V966N81OMEEH85QDP8XW4AH1AIZ2GKRLZTML21"
|
||||
processCode = "TPROC--4V966N81OMEEH85QDP8XW4AH1AIZ21ORLZTML31"
|
||||
|
||||
# 遍历数据并进行创建
|
||||
from datetime import datetime, timedelta
|
||||
for name in unique_arr:
|
||||
tableField_lnsi0v71 = {}
|
||||
tableField_lnsi0v71['dateField_lmelabb1'] = ""
|
||||
tableField_lnsi0v71['employeeField_lmeqk429'] = ""
|
||||
for data in json_data:
|
||||
if data['employeeField_kyi1dqth_id'] == name and data['orgCode'] in data_details_all['orgCode'].values:
|
||||
# 过滤近7天有派发记录的数据
|
||||
# 获取当前日期
|
||||
today = datetime.now()
|
||||
# 计算前7天的日期
|
||||
seven_days_ago = today - timedelta(days=7)
|
||||
# 计算前8天的日期
|
||||
seven_days_8 = today - timedelta(days=8)
|
||||
# 过滤近7天有派发记录的数据
|
||||
form_data_ces = read_instances_ngv(token=TOKEN, formUuid="FORM-KW766OD13WEEDPB6DSRTSD3IC2S131YMYKSML2", page=1, n=100, searchField={'textField_lmeqk42b': data["orgCode"]})
|
||||
if form_data_ces['totalCount'] == 0:
|
||||
date_string = seven_days_8.strftime("%Y-%m-%dT%H:%MZ")
|
||||
else:
|
||||
date_string = form_data_ces['data'][0]['createdTimeGMT']
|
||||
|
||||
date_format = "%Y-%m-%dT%H:%MZ"
|
||||
date_object = datetime.strptime(date_string, date_format)
|
||||
|
||||
if date_object > seven_days_ago:
|
||||
print("近7天内有派发记录,不重复派发!",data["orgCode"])
|
||||
else:
|
||||
print(textField_m3hchxc[data['city']])
|
||||
data_one = {} # 子表单
|
||||
data_two = {} # 主表单
|
||||
# 子表单
|
||||
data_one['textField_lnsi0v72'] = data['orgName']
|
||||
data_one['textField_lnsi0v6s'] = data["saasEdition"] # 销售版本
|
||||
try:
|
||||
data_one['employeeField_lnsi0v6u'] = textField_nc7gskc[name[0]] # 技术专家
|
||||
data_one['employeeField_lnsi0v6v'] = textField_qk1e5di[name[0]] # 区域经理
|
||||
if textField_3hgho1m[name[0]] =="":
|
||||
data_one['employeeField_lnsi0v6w'] = textField_m3hchxc[data['city']] # 运营顾问
|
||||
else:
|
||||
data_one['employeeField_lnsi0v6w'] = textField_3hgho1m[name[0]] # 运营顾问
|
||||
except:
|
||||
data_one['employeeField_lnsi0v6u'] = data['technician_id'][0] # 技术专家
|
||||
data_one['employeeField_lnsi0v6v'] = data['manager_id'][0] # 区域经理
|
||||
data_one['employeeField_lnsi0v6w'] = textField_m3hchxc[data['city']] # 运营顾问
|
||||
data_one['dateField_lnsi0v6x'] = str(timestamp_ms) # 计划日期
|
||||
data_one['textField_lnsi0v6y'] = data["orgName"] # 门店名称-拷贝
|
||||
data_one['textField_lnsi0v6z'] = data["orgCode"] # 门店编码
|
||||
data_one['selectField_lnsi0v6q'] = "强化培训" # 拜访目的
|
||||
# data_one['textField_lnsi0v70'] = data_result.loc[i,"id_own_group"] # 公司id
|
||||
data_one['textareaField_lnsi0v6r'] = '''
|
||||
新签180天后:
|
||||
1.客户日常使用问题解答;
|
||||
2.跟客户查看主营分析,推荐进销存功能深度使用;
|
||||
3.跟客户查看车辆分析,推荐短信及其他营销功能;
|
||||
4.说明转介绍政策,索要转介绍;''' # 拜访目的说明
|
||||
# 加入数据
|
||||
tableField_lnsi0v71['tableField_lnsi0v71'] = [data_one]
|
||||
# 主表单
|
||||
# data_two['dateField_lmelabb1'] = str(timestamp_ms)
|
||||
# data_two['employeeField_lmeqk429'] = name
|
||||
tableField_lnsi0v71['dateField_lmelabb1'] = str(timestamp_ms)
|
||||
try:
|
||||
if name[0] =="":
|
||||
tableField_lnsi0v71['employeeField_lmeqk429'] = textField_m3hchxc[data['city']] # 运营顾问
|
||||
else:
|
||||
tableField_lnsi0v71['employeeField_lmeqk429'] = name[0]
|
||||
tableField_lnsi0v71['employeeField_lmeqk423'] = textField_qk1e5di[name[0]] # 区域经理
|
||||
tableField_lnsi0v71['employeeField_lmeqk424'] = textField_nc7gskc[name[0]] # 技术专家
|
||||
except:
|
||||
tableField_lnsi0v71['employeeField_lmeqk429'] = textField_m3hchxc[data['city']] # 运营顾问
|
||||
tableField_lnsi0v71['employeeField_lmeqk423'] = data['manager_id'][0] # 区域经理
|
||||
tableField_lnsi0v71['employeeField_lmeqk424'] = data['technician_id'][0] # 技术专家
|
||||
|
||||
# 开户时间 大于3年派发给技术专家
|
||||
try:
|
||||
timestamp = data['openTime']
|
||||
date_obj = datetime.fromtimestamp(timestamp / 1000)
|
||||
current_date = datetime.now()
|
||||
|
||||
time_difference = current_date - date_obj
|
||||
if time_difference > timedelta(days=365 * 3):
|
||||
tableField_lnsi0v71['employeeField_lmeqk429'] = f"['{textField_gif29wy[data['city']]}', '{tableField_lnsi0v71['employeeField_lmeqk424']}']"
|
||||
except:
|
||||
pass
|
||||
tableField_lnsi0v71['textField_lmu0523h'] = "自动派发回访计划" # 状态备用
|
||||
# 富文本 超链接 NGV
|
||||
try:
|
||||
form_data_ngv = read_instances_ngv(token=TOKEN, formUuid="FORM-ZK866D91O9LA4NIHCARG2DPIPCXF3Z087PPHL91", page=1, n=100, searchField={'textField_zc1iowp': data["orgCode"]})
|
||||
tableField_lnsi0v71['editorField_lodoplg0'] = ["root",{},["p",{},["span",{"data-type":"text"},["span",{"data-type":"leaf"},""]],["a",{"href":"https://f6car.aliwork.com/APP_UYZ0KG6L0CCNV80GZ66O/formDetail/FORM-ZK866D91O9LA4NIHCARG2DPIPCXF3Z087PPHL91?formInstId="+form_data_ngv['data'][0]['formInstanceId']+"&isAdmin=true"},["span",{"data-type":"text"},["span",{"unlink":{},"data-type":"leaf"},"点击查看门店NGV"]]],["span",{"data-type":"text"},["span",{"unlink":{},"data-type":"leaf"},""]]]] # 富文本 超链接 NGV
|
||||
except:
|
||||
pass
|
||||
res=initiate_process(TOKEN,formUuid,processCode,tableField_lnsi0v71)
|
||||
print(res,tableField_lnsi0v71)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user