749 lines
46 KiB
Plaintext
749 lines
46 KiB
Plaintext
{
|
||
"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
|
||
}
|