Files
jupyter/体测单位/体测数据管理.ipynb
T
2024-05-22 08:01:09 +08:00

615 lines
22 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"id": "e6dcc663-e0ed-4ea3-b442-11f229f4af94",
"metadata": {},
"source": [
"## 新增体测单位"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "360f0a97-d73d-43f3-9f7a-0f9582103c82",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import pymongo\n",
"\n",
"myclient = pymongo.MongoClient('mongodb://localhost:27017/')\n",
"mydb = myclient[\"baogao\"]\n",
"mycol = mydb[\"place\"]\n",
"\n",
"place_id = 571315\n",
"place_code = \"10\"\n",
"dw_name = \"中国石油青海油田勘探事业部\"\n",
"dw_jc = \"青海油田勘探事业部\"\n",
"myquery = { \"id\": place_id }\n",
"num = mycol.count_documents(myquery)\n",
"if num>0:\n",
" print(num)\n",
"else:\n",
" mydict = { \"id\":place_id,\"dw_name\": name, \"code\": place_code }\n",
" x = mycol.insert_one(mydict) "
]
},
{
"cell_type": "markdown",
"id": "dcfbd41f-ca70-4f15-9153-60e6aaac27e8",
"metadata": {},
"source": [
"## 生成手机验证码"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "63a87059-0a0d-43d3-8b89-0cad64d95ff3",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import openpyxl\n",
"import os,sys,shutil\n",
"import json\n",
"import math\n",
"import glob\n",
"import random\n",
"from pathlib import Path\n",
"import pymongo\n",
"\n",
"myclient = pymongo.MongoClient('mongodb://localhost:27017/')\n",
"mydb = myclient[\"baogao\"]\n",
"\n",
"#place_id = 571315\n",
"#place_code = '10'\n",
"#dw_name = '中国石油青海油田勘探事业部'\n",
"fi_path = '/home/songyi/python/mycrm/flask/pdf/files'\n",
"fls = glob.glob(f'{fi_path}/{str(place_id)}/*.pdf')\n",
"\n",
"code_list = []\n",
"for i in range(10): # 0~9\n",
" code_list.append(str(i))\n",
" \n",
"list1 = []\n",
"i = 0\n",
"while i < len(fls):\n",
" code = random.sample(code_list,3) #随机取4位数\n",
" code_num = ''.join(code) \n",
" if place_code+code_num not in list1:\n",
" list1.append(place_code+code_num)\n",
" i +=1\n",
"i = 0\n",
"list2= []\n",
"for fn in fls:\n",
" dict2 = {}\n",
" fi_name =Path(fn).stem.split('-')[0]\n",
" #fi_name =Path(fn).stem\n",
" code = int(fi_name)\n",
" dxm = list1[i]\n",
" dict2 = {'place_id':place_id,'code':dxm,'fn':Path(fn).name}\n",
" list2.append(dict2)\n",
" i +=1\n",
"mycol = mydb[\"pdf\"]\n",
"x = mycol.insert_many(list2)\n",
"print('ok') \n"
]
},
{
"cell_type": "markdown",
"id": "ad9e943a-bb3a-4d58-93ef-cc442a80effa",
"metadata": {},
"source": [
"## 批量发送短信(测试)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "5f665c0f-8d30-4759-b7f8-fb7e13b98efa",
"metadata": {
"execution": {
"iopub.execute_input": "2024-05-21T07:50:22.591936Z",
"iopub.status.busy": "2024-05-21T07:50:22.591216Z",
"iopub.status.idle": "2024-05-21T07:50:22.615055Z",
"shell.execute_reply": "2024-05-21T07:50:22.614130Z",
"shell.execute_reply.started": "2024-05-21T07:50:22.591865Z"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1 18993713107 0040-李想.pdf\n",
"2 18993711277 0037-姜太亮.pdf\n",
"3 18909376963 0005-范朝峰.pdf\n",
"4 18993711151 0039-燕宇飞.pdf\n",
"5 18993729661 0003-于航.pdf\n",
"6 18997372608 0024-王永林.pdf\n",
"7 18997377335 0047-付艳双.pdf\n",
"8 18993710970 0042-张长好.pdf\n",
"9 18993710993 0011-黄叶秋.pdf\n",
"10 18993727823 0020-李伟.pdf\n",
"11 18997372109 0061-罗勇.pdf\n",
"12 18997374506 0044-王福国.pdf\n",
"13 18993710963 0071-李强.pdf\n",
"14 18093715987 0062-张伟.pdf\n",
"15 18997397669 0069-杨鹏.pdf\n",
"16 18993714097 0033-徐涛.pdf\n",
"17 18093715481 0036-刘雪娇.pdf\n",
"18 18993710973 0055-张庆尧.pdf\n",
"19 18997372106 0051-袁贵德.pdf\n",
"20 18993714936 0064-张狄杰.pdf\n",
"21 18993724221 0007-袁丽萍.pdf\n",
"22 18993710972 0035-许刚.pdf\n",
"23 18993710998 0009-彭晓群.pdf\n",
"24 18997375563 0046-张海宁.pdf\n",
"25 18993722556 0068-马丽娟.pdf\n",
"26 18993710256 0043-高雪峰.pdf\n",
"27 18993710971 0041-邢超.pdf\n",
"28 18993710985 0067-管斌.pdf\n",
"29 18993728737 0050-李文研.pdf\n",
"30 18909376562 0018-王海红.pdf\n"
]
}
],
"source": [
"from tencentcloud.common import credential\n",
"from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException\n",
"from tencentcloud.sms.v20210111 import sms_client, models\n",
"from tencentcloud.common.profile.client_profile import ClientProfile\n",
"from tencentcloud.common.profile.http_profile import HttpProfile\n",
"import json\n",
"import pymongo\n",
"\n",
"myclient = pymongo.MongoClient('mongodb://localhost:27017/')\n",
"mydb = myclient[\"baogao\"]\n",
"mycol = mydb[\"pdf\"]\n",
"\n",
"dw_jc = \"青海油田勘探事业部测试者\"\n",
"filename = 'data/青海2024.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"dict2 = {}\n",
"place_id = 571315\n",
"myquery = { \"place_id\": place_id }\n",
"for x in mycol.find(myquery,{ \"_id\": 0, \"place_id\": 0}):\n",
" code = int(x['fn'].split('-')[0])\n",
" if str(code) in dict1.keys():\n",
" dict2[code] = {'phone':str(dict1[str(code)]['phone']),'code':x['code'],'name':x['fn']}\n",
" else:\n",
" print('no phone')\n",
"#print(dict2)\n",
"i=1\n",
"#dict2 = {375: {'phone': '13793180751', 'code': '0379208'}}\n",
"for k, v in dict2.items():\n",
" phone = '+86'+v['phone']\n",
" yzm = v['code']\n",
" try: \n",
" secretId = \"AKID22rVyvSqbikXFFvav31ykc9YmqjN6KYc\"\n",
" secretKey = \"51XVL1YxDKI6mJh8au6DDuTskS1RhwJX\"\n",
" cred = credential.Credential(secretId, secretKey) \n",
" httpProfile = HttpProfile()\n",
" httpProfile.reqMethod = \"POST\" # post请求(默认为post请求)\n",
" httpProfile.reqTimeout = 60 # 请求超时时间,单位为秒(默认60秒)\n",
" httpProfile.endpoint = \"sms.tencentcloudapi.com\" # 指定接入地域域名(默认就近接入)\n",
" clientProfile = ClientProfile()\n",
" clientProfile.signMethod = \"TC3-HMAC-SHA256\" # 指定签名算法\n",
" clientProfile.language = \"en-US\"\n",
" clientProfile.httpProfile = httpProfile\n",
" client = sms_client.SmsClient(cred, \"ap-guangzhou\", clientProfile)\n",
" req = models.SendSmsRequest()\n",
" req.SmsSdkAppId = \"1400140089\"\n",
" req.SignName = \"坤铭教育\"\n",
" req.TemplateId = \"1875765\" \n",
" req.TemplateParamSet = [dw_jc,yzm]\n",
" req.PhoneNumberSet = [phone]\n",
" req.SessionContext = \"\"\n",
" req.ExtendCode = \"\"\n",
" req.SenderId = \"\"\n",
" #resp = client.SendSms(req)\n",
" #dict3 = json.loads(resp.to_json_string(indent=2))\n",
"\n",
" #print(v['phone'],dict3['SendStatusSet'][0][\"Message\"])\n",
" print(i,v['phone'],v['name'],)\n",
" i+=1\n",
" except TencentCloudSDKException as err:\n",
" print(v['phone'],err)"
]
},
{
"cell_type": "markdown",
"id": "b9a157f4-4772-413e-82f4-ecb7d2af8529",
"metadata": {},
"source": [
"## 批量发送短信"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "4b2b5d76-665f-4dfe-bbd3-5c80abd8c3e3",
"metadata": {
"execution": {
"iopub.execute_input": "2024-05-21T07:51:45.019283Z",
"iopub.status.busy": "2024-05-21T07:51:45.018719Z",
"iopub.status.idle": "2024-05-21T07:51:51.465933Z",
"shell.execute_reply": "2024-05-21T07:51:51.464380Z",
"shell.execute_reply.started": "2024-05-21T07:51:45.019227Z"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"18993713107 send success\n",
"18993711277 send success\n",
"18909376963 send success\n",
"18993711151 send success\n",
"18993729661 send success\n",
"18997372608 send success\n",
"18997377335 send success\n",
"18993710970 send success\n",
"18993710993 send success\n",
"18993727823 send success\n",
"18997372109 send success\n",
"18997374506 send success\n",
"18993710963 send success\n",
"18093715987 send success\n",
"18997397669 send success\n",
"18993714097 send success\n",
"18093715481 send success\n",
"18993710973 send success\n",
"18997372106 send success\n",
"18993714936 send success\n",
"18993724221 send success\n",
"18993710972 send success\n",
"18993710998 send success\n",
"18997375563 send success\n",
"18993722556 send success\n",
"18993710256 send success\n",
"18993710971 send success\n",
"18993710985 send success\n",
"18993728737 send success\n",
"18909376562 send success\n"
]
}
],
"source": [
"from tencentcloud.common import credential\n",
"from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException\n",
"from tencentcloud.sms.v20210111 import sms_client, models\n",
"from tencentcloud.common.profile.client_profile import ClientProfile\n",
"from tencentcloud.common.profile.http_profile import HttpProfile\n",
"import json\n",
"import pymongo\n",
"\n",
"myclient = pymongo.MongoClient('mongodb://localhost:27017/')\n",
"mydb = myclient[\"baogao\"]\n",
"mycol = mydb[\"pdf\"]\n",
"\n",
"filename = 'data/青海2024.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"dict2 = {}\n",
"#place_id = 571315\n",
"myquery = { \"place_id\": place_id }\n",
"for x in mycol.find(myquery,{ \"_id\": 0, \"place_id\": 0}):\n",
" code = int(x['fn'].split('-')[0])\n",
" if str(code) in dict1.keys():\n",
" dict2[code] = {'phone':str(dict1[str(code)]['phone']),'code':x['code'],'name':x['fn']}\n",
" else:\n",
" print('no phone')\n",
"#print(dict2)\n",
"dw_jc = \"青海油田勘探事业部测试者\"\n",
"#dict2 = {375: {'phone': '13793180751', 'code': '0379208'}}\n",
"for k, v in dict2.items():\n",
" phone = '+86'+v['phone']\n",
" yzm = v['code']\n",
" try: \n",
" secretId = \"AKID22rVyvSqbikXFFvav31ykc9YmqjN6KYc\"\n",
" secretKey = \"51XVL1YxDKI6mJh8au6DDuTskS1RhwJX\"\n",
" cred = credential.Credential(secretId, secretKey) \n",
" httpProfile = HttpProfile()\n",
" httpProfile.reqMethod = \"POST\" # post请求(默认为post请求)\n",
" httpProfile.reqTimeout = 60 # 请求超时时间,单位为秒(默认60秒)\n",
" httpProfile.endpoint = \"sms.tencentcloudapi.com\" # 指定接入地域域名(默认就近接入)\n",
" clientProfile = ClientProfile()\n",
" clientProfile.signMethod = \"TC3-HMAC-SHA256\" # 指定签名算法\n",
" clientProfile.language = \"en-US\"\n",
" clientProfile.httpProfile = httpProfile\n",
" client = sms_client.SmsClient(cred, \"ap-guangzhou\", clientProfile)\n",
" req = models.SendSmsRequest()\n",
" req.SmsSdkAppId = \"1400140089\"\n",
" req.SignName = \"坤铭教育\"\n",
" req.TemplateId = \"1875765\" \n",
" req.TemplateParamSet = [dw_jc,yzm]\n",
" req.PhoneNumberSet = [phone]\n",
" req.SessionContext = \"\"\n",
" req.ExtendCode = \"\"\n",
" req.SenderId = \"\"\n",
" resp = client.SendSms(req)\n",
" dict3 = json.loads(resp.to_json_string(indent=2))\n",
"\n",
" print(v['phone'],dict3['SendStatusSet'][0][\"Message\"])\n",
" except TencentCloudSDKException as err:\n",
" print(v['phone'],err)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "df637ce6-7c35-404a-af43-2a5a66b49ba0",
"metadata": {},
"outputs": [],
"source": [
"dict1 = json.loads(resp.to_json_string(indent=2))\n",
"print(dict1['SendStatusSet'][0][\"Message\"])"
]
},
{
"cell_type": "markdown",
"id": "feb02430-8946-4ed2-a99b-7f5106257c8b",
"metadata": {},
"source": [
"## 单个发送短信"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "25a269c3-758f-4e79-ae6d-a6e6f161d64b",
"metadata": {
"execution": {
"iopub.execute_input": "2024-05-21T07:49:49.553753Z",
"iopub.status.busy": "2024-05-21T07:49:49.553036Z",
"iopub.status.idle": "2024-05-21T07:49:49.771504Z",
"shell.execute_reply": "2024-05-21T07:49:49.769857Z",
"shell.execute_reply.started": "2024-05-21T07:49:49.553688Z"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"+8613793180751 send success\n"
]
}
],
"source": [
"from tencentcloud.common import credential\n",
"from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException\n",
"from tencentcloud.sms.v20210111 import sms_client, models\n",
"from tencentcloud.common.profile.client_profile import ClientProfile\n",
"from tencentcloud.common.profile.http_profile import HttpProfile\n",
"import json\n",
"import pymongo\n",
"\n",
"\n",
"\n",
"phone = '+86'+'13793180751'\n",
"yzm = '10257'\n",
"try: \n",
" secretId = \"AKID22rVyvSqbikXFFvav31ykc9YmqjN6KYc\"\n",
" secretKey = \"51XVL1YxDKI6mJh8au6DDuTskS1RhwJX\"\n",
" cred = credential.Credential(secretId, secretKey) \n",
" httpProfile = HttpProfile()\n",
" httpProfile.reqMethod = \"POST\" # post请求(默认为post请求)\n",
" httpProfile.reqTimeout = 60 # 请求超时时间,单位为秒(默认60秒)\n",
" httpProfile.endpoint = \"sms.tencentcloudapi.com\" # 指定接入地域域名(默认就近接入)\n",
" clientProfile = ClientProfile()\n",
" clientProfile.signMethod = \"TC3-HMAC-SHA256\" # 指定签名算法\n",
" clientProfile.language = \"en-US\"\n",
" clientProfile.httpProfile = httpProfile\n",
" client = sms_client.SmsClient(cred, \"ap-guangzhou\", clientProfile)\n",
" req = models.SendSmsRequest()\n",
" req.SmsSdkAppId = \"1400140089\"\n",
" req.SignName = \"坤铭教育\"\n",
" req.TemplateId = \"1875765\" \n",
" req.TemplateParamSet = [dw_jc,yzm]\n",
" req.PhoneNumberSet = [phone]\n",
" req.SessionContext = \"\"\n",
" req.ExtendCode = \"\"\n",
" req.SenderId = \"\"\n",
" resp = client.SendSms(req)\n",
" dict3 = json.loads(resp.to_json_string(indent=2))\n",
"\n",
" print(phone,dict3['SendStatusSet'][0][\"Message\"])\n",
"except TencentCloudSDKException as err:\n",
" print(v['phone'],err)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b1e90a59-0b09-4786-99a5-036b69f793ae",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"from tencentcloud.common import credential\n",
"from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException\n",
"from tencentcloud.sms.v20210111 import sms_client, models\n",
"from tencentcloud.common.profile.client_profile import ClientProfile\n",
"from tencentcloud.common.profile.http_profile import HttpProfile\n",
"import json\n",
"import pymongo\n",
"\n",
"myclient = pymongo.MongoClient('mongodb://localhost:27017/')\n",
"mydb = myclient[\"baogao\"]\n",
"mycol = mydb[\"pdf\"]\n",
"\n",
"filename = 'data/世纪花园人员信息.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"dict2 = {}\n",
"place_id = 624770\n",
"myquery = { \"place_id\": place_id,\"code\":\"051067\" }\n",
"for x in mycol.find(myquery,{ \"_id\": 0, \"place_id\": 0}):\n",
" code = int(x['fn'].split('-')[0])\n",
" if str(code) in dict1.keys():\n",
" dict2[code] = {'phone':str(dict1[str(code)]['phone']),'code':x['code']}\n",
" else:\n",
" print('no phone')\n",
"print(dict2)"
]
},
{
"cell_type": "markdown",
"id": "458f1022-ceb9-49f9-b699-3fcc81658335",
"metadata": {},
"source": [
"## 统计短信发送状态"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "411e89ed-8bb2-478b-b180-52188f800adc",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"from tencentcloud.common import credential\n",
"from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException\n",
"from tencentcloud.sms.v20210111 import sms_client, models\n",
"from tencentcloud.common.profile.client_profile import ClientProfile\n",
"from tencentcloud.common.profile.http_profile import HttpProfile\n",
"import json\n",
"import pymongo\n",
"\n",
"\n",
"try: \n",
" secretId = \"AKID22rVyvSqbikXFFvav31ykc9YmqjN6KYc\"\n",
" secretKey = \"51XVL1YxDKI6mJh8au6DDuTskS1RhwJX\"\n",
" cred = credential.Credential(secretId, secretKey) \n",
" httpProfile = HttpProfile()\n",
" httpProfile.reqMethod = \"POST\" # post请求(默认为post请求)\n",
" httpProfile.reqTimeout = 60 # 请求超时时间,单位为秒(默认60秒)\n",
" httpProfile.endpoint = \"sms.tencentcloudapi.com\" # 指定接入地域域名(默认就近接入)\n",
" clientProfile = ClientProfile()\n",
" clientProfile.signMethod = \"TC3-HMAC-SHA256\" # 指定签名算法\n",
" clientProfile.language = \"en-US\"\n",
" clientProfile.httpProfile = httpProfile\n",
" client = sms_client.SmsClient(cred, \"ap-guangzhou\", clientProfile)\n",
" req = models.SendStatusStatisticsRequest()\n",
" req.SmsSdkAppId = \"1400140089\"\n",
" \n",
" # 拉取最大条数,最多100条\n",
" req.Limit = 100\n",
" # 偏移量 注:目前固定设置为0\n",
" req.Offset = 0\n",
" # 开始时间,yyyymmddhh 需要拉取的起始时间,精确到小时\n",
" req.BeginTime = \"2023112700\"\n",
" # 结束时间,yyyymmddhh 需要拉取的截止时间,精确到小时\n",
" # 注:EndTime 必须大于 BeginTime\n",
" req.EndTime = \"2023112723\"\n",
"\n",
"\n",
" # 通过client对象调用SendStatusStatistics方法发起请求。注意请求方法名与请求对象是对应的。\n",
" # 返回的resp是一个SendStatusStatisticsResponse类的实例,与请求对象对应。\n",
" resp = client.SendStatusStatistics(req)\n",
"\n",
"\n",
" # 输出json格式的字符串回包\n",
" print(resp.to_json_string(indent=2))\n",
"\n",
"\n",
"except TencentCloudSDKException as err:\n",
" print(err)\n"
]
},
{
"cell_type": "markdown",
"id": "51c61809-e6a3-489e-bac7-f439b673dcd3",
"metadata": {},
"source": [
"## 拉取短信下发状态"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "50183bba-2f9d-4003-98a7-0ecda96670ef",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"from tencentcloud.common import credential\n",
"from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException\n",
"from tencentcloud.sms.v20210111 import sms_client, models\n",
"from tencentcloud.common.profile.client_profile import ClientProfile\n",
"from tencentcloud.common.profile.http_profile import HttpProfile\n",
"\n",
"\n",
"\n",
"try: \n",
" secretId = \"AKID22rVyvSqbikXFFvav31ykc9YmqjN6KYc\"\n",
" secretKey = \"51XVL1YxDKI6mJh8au6DDuTskS1RhwJX\"\n",
" cred = credential.Credential(secretId, secretKey) \n",
" httpProfile = HttpProfile()\n",
" httpProfile.reqMethod = \"POST\" # post请求(默认为post请求)\n",
" httpProfile.reqTimeout = 60 # 请求超时时间,单位为秒(默认60秒)\n",
" httpProfile.endpoint = \"sms.tencentcloudapi.com\" # 指定接入地域域名(默认就近接入)\n",
" clientProfile = ClientProfile()\n",
" clientProfile.signMethod = \"TC3-HMAC-SHA256\" # 指定签名算法\n",
" clientProfile.language = \"en-US\"\n",
" clientProfile.httpProfile = httpProfile\n",
" client = sms_client.SmsClient(cred, \"ap-guangzhou\", clientProfile)\n",
" req = models.PullSmsSendStatusRequest()\n",
" req.SmsSdkAppId = \"1400140089\"\n",
" req.Limit = 100\n",
" resp = client.PullSmsSendStatus(req)\n",
" # 输出json格式的字符串回包\n",
" print(resp.to_json_string(indent=2))\n",
"\n",
"\n",
"except TencentCloudSDKException as err:\n",
" print(err)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c3b4d384-9f83-4c91-98aa-0bb1f0e1d4ed",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}