Files
jupyter/体测单位/体测数据管理.ipynb
T
2024-08-28 22:46:30 +08:00

24 KiB

新增体测单位

In [ ]:
import pymongo

myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient["baogao"]
mycol = mydb["place"]

place_id = 698465
place_code = "06"
dw_name =  "天宫院社区"
dw_jc = "天宫院社区"
myquery = { "id": place_id }
num = mycol.count_documents(myquery)
if num>0:
    print(num)
else:
    mydict = { "id":place_id,"name": dw_name, "code": place_code }
    x = mycol.insert_one(mydict) 

生成手机验证码

In [11]:
import openpyxl
import os,sys,shutil
import json
import math
import glob
import random
from pathlib import Path
import pymongo

myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient["baogao"]

place_id = 698465
place_code = "06"
dw_name =  "淄博积家村"
dw_jc = "淄博积家村"
fi_path = '/home/songyi/python/mycrm/flask/pdf/files'
fls = glob.glob(f'{fi_path}/{str(place_id)}/*.pdf')

code_list = []
for i in range(10):   # 0~9
    code_list.append(str(i))
list1 = []
mycol = mydb["pdf"]
query1 = { "place_id": place_id }
list2 = []
mydoc = mycol.find(query1,{ "code": 1, "_id": 0 })

for x in mydoc:
    list2.append(x['code'])

i = 0
while i < len(fls):
    code = random.sample(code_list,3)   #随机取3位数
    code_num = ''.join(code)    
    if place_code+code_num not in list1 and place_code+code_num not in list2:
        list1.append(place_code+code_num)
        i +=1
i = 0
list2= []
for fn in fls:
    dict2 = {}
    fi_name =Path(fn).stem.split('-')[0]
    #fi_name =Path(fn).stem
    code = int(fi_name)
    dxm = list1[i]
    dict2 = {'place_id':place_id,'code':dxm,'fn':Path(fn).name,'rq':'20240811'}
    list2.append(dict2)
    i +=1
x = mycol.insert_many(list2)
print('ok') 
ok
In [ ]:
import openpyxl
import os,sys,shutil
import json
import math
import glob
import random
from pathlib import Path
import pymongo

myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient["baogao"]

place_id = 727410
place_code = "08"
dw_name =  "北体体质康健实验班"
dw_jc = "北体体质康健实验班"
fi_path = '/home/songyi/python/mycrm/flask/pdf/files'
fls = glob.glob(f'{fi_path}/{str(place_id)}/*.pdf')

code_list = []
for i in range(10):   # 0~9
    code_list.append(str(i))
list1 = []
mycol = mydb["pdf"]
query1 = { "place_id": place_id }
list2 = []
mydoc = mycol.find(query1,{ "code": 1, "_id": 0 })

for x in mydoc:
    list2.append(x['code'])
print(list2)

批量发送短信(测试)

In [12]:
from tencentcloud.common import credential
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.sms.v20210111 import sms_client, models
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
import json
import pymongo

myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient["baogao"]
mycol = mydb["pdf"]

dw_jc = "淄博积家村测试者"
filename = 'data/积家基础数据2408.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl) 
dict2 = {}
#place_id = 571315
myquery = { "place_id": place_id,"rq":'20240811' }
for x in mycol.find(myquery,{ "_id": 0, "place_id": 0}):
    code = int(x['fn'].split('-')[0])
    if str(code) in dict1.keys() and 'phone' in dict1[str(code)].keys():
        dict2[code] = {'phone':str(dict1[str(code)]['phone']),'code':x['code'],'name':x['fn']}
    else:
        print(code,'no phone')
#print(dict2)
i=1
#dict2 = {375: {'phone': '13793180751', 'code': '0379208'}}
for k, v in dict2.items():
    phone = '+86'+v['phone']
    yzm = v['code']
    try:    
        secretId = "AKID22rVyvSqbikXFFvav31ykc9YmqjN6KYc"
        secretKey = "51XVL1YxDKI6mJh8au6DDuTskS1RhwJX"
        cred = credential.Credential(secretId, secretKey) 
        httpProfile = HttpProfile()
        httpProfile.reqMethod = "POST"  # post请求(默认为post请求)
        httpProfile.reqTimeout = 60    # 请求超时时间,单位为秒(默认60秒)
        httpProfile.endpoint = "sms.tencentcloudapi.com"  # 指定接入地域域名(默认就近接入)
        clientProfile = ClientProfile()
        clientProfile.signMethod = "TC3-HMAC-SHA256"  # 指定签名算法
        clientProfile.language = "en-US"
        clientProfile.httpProfile = httpProfile
        client = sms_client.SmsClient(cred, "ap-guangzhou", clientProfile)
        req = models.SendSmsRequest()
        req.SmsSdkAppId = "1400140089"
        req.SignName = "坤铭教育"
        req.TemplateId = "1875765"    
        req.TemplateParamSet = [dw_jc,yzm]
        req.PhoneNumberSet = [phone]
        req.SessionContext = ""
        req.ExtendCode = ""
        req.SenderId = ""
        #resp = client.SendSms(req)
        #dict3 = json.loads(resp.to_json_string(indent=2))

        #print(v['phone'],dict3['SendStatusSet'][0]["Message"])
        print(i,v['phone'],v['name'],)
        i+=1
    except TencentCloudSDKException as err:
        print(v['phone'],err)
5 no phone
22 no phone
19 no phone
38 no phone
25 no phone
6 no phone
8 no phone
26 no phone
15 no phone
13 no phone
20 no phone
23 no phone
27 no phone
10 no phone
21 no phone
3 no phone
30 no phone
11 no phone
14 no phone
24 no phone
1 15153309038 9-曹秀芹.pdf
2 13573332133 17-段玉华.pdf
3 13964491825 7-韩美华.pdf
4 15553344004 1-张爱英.pdf
5 15853389189 36-袁会富.pdf
6 15069350919 16-王芹英.pdf
7 15165846001 2-张俊华.pdf
8 13070650793 18-肖翠花.pdf
9 13455364491 35-王霞.pdf
10 15853380767 28-肖爱英.pdf
11 13646430765 29-梁桂岭.pdf
12 13053316892 12-孙宗玲.pdf
13 13287885248 31-杜婷.pdf
14 13153385772 32-崔杰.pdf
15 15169224472 33-姚桂银.pdf
16 13583398468 4-尚永.pdf
17 18653305998 37-李琳.pdf
18 13869390557 34-徐爱锋.pdf

批量发送短信

In [13]:
from tencentcloud.common import credential
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.sms.v20210111 import sms_client, models
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
import json
import pymongo

myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient["baogao"]
mycol = mydb["pdf"]

dw_jc = "淄博积家村测试者"
filename = 'data/积家基础数据2408.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl) 
dict2 = {}
#place_id = 571315
myquery = { "place_id": place_id,"rq":'20240811' }
for x in mycol.find(myquery,{ "_id": 0, "place_id": 0}):
    code = int(x['fn'].split('-')[0])
    if str(code) in dict1.keys() and 'phone' in dict1[str(code)].keys():
        dict2[code] = {'phone':str(dict1[str(code)]['phone']),'code':x['code'],'name':x['fn']}
    else:
        print('no phone')
#print(dict2)
dw_jc = "世纪花园测试者"
#dict2 = {375: {'phone': '13793180751', 'code': '0379208'}}
for k, v in dict2.items():
    phone = '+86'+v['phone']
    yzm = v['code']
    try:    
        secretId = "AKID22rVyvSqbikXFFvav31ykc9YmqjN6KYc"
        secretKey = "51XVL1YxDKI6mJh8au6DDuTskS1RhwJX"
        cred = credential.Credential(secretId, secretKey) 
        httpProfile = HttpProfile()
        httpProfile.reqMethod = "POST"  # post请求(默认为post请求)
        httpProfile.reqTimeout = 60    # 请求超时时间,单位为秒(默认60秒)
        httpProfile.endpoint = "sms.tencentcloudapi.com"  # 指定接入地域域名(默认就近接入)
        clientProfile = ClientProfile()
        clientProfile.signMethod = "TC3-HMAC-SHA256"  # 指定签名算法
        clientProfile.language = "en-US"
        clientProfile.httpProfile = httpProfile
        client = sms_client.SmsClient(cred, "ap-guangzhou", clientProfile)
        req = models.SendSmsRequest()
        req.SmsSdkAppId = "1400140089"
        req.SignName = "坤铭教育"
        req.TemplateId = "1875765"    
        req.TemplateParamSet = [dw_jc,yzm]
        req.PhoneNumberSet = [phone]
        req.SessionContext = ""
        req.ExtendCode = ""
        req.SenderId = ""
        resp = client.SendSms(req)
        dict3 = json.loads(resp.to_json_string(indent=2))

        print(v['phone'],dict3['SendStatusSet'][0]["Message"])
    except TencentCloudSDKException as err:
        print(v['phone'],err)
no phone
no phone
no phone
no phone
no phone
no phone
no phone
no phone
no phone
no phone
no phone
no phone
no phone
no phone
no phone
no phone
no phone
no phone
no phone
no phone
15153309038 send success
13573332133 send success
13964491825 send success
15553344004 send success
15853389189 send success
15069350919 send success
15165846001 send success
13070650793 send success
13455364491 send success
15853380767 send success
13646430765 send success
13053316892 send success
13287885248 send success
13153385772 send success
15169224472 send success
13583398468 send success
18653305998 send success
13869390557 send success
In [ ]:
dict1 = json.loads(resp.to_json_string(indent=2))
print(dict1['SendStatusSet'][0]["Message"])

单个发送短信

In [9]:
from tencentcloud.common import credential
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.sms.v20210111 import sms_client, models
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
import json
import pymongo

myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient["baogao"]
mycol = mydb["pdf"]

filename = 'data/世纪花园基础数据240808.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl) 
dict2 = {}
#place_id = 571315
myquery = { "place_id": place_id,"rq":'20240811' }
for x in mycol.find(myquery,{ "_id": 0, "place_id": 0}):
    code = int(x['fn'].split('-')[0])
    if str(code) in dict1.keys() and 'phone' in dict1[str(code)].keys():
        dict2[code] = {'phone':str(dict1[str(code)]['phone']),'code':x['code'],'name':x['fn']}
    else:
        print('no phone')
#print(dict2)
dw_jc = "世纪花园测试者"

phone = '+86'+'13793180751'
yzm = '05403'
try:    
    secretId = "AKID22rVyvSqbikXFFvav31ykc9YmqjN6KYc"
    secretKey = "51XVL1YxDKI6mJh8au6DDuTskS1RhwJX"
    cred = credential.Credential(secretId, secretKey) 
    httpProfile = HttpProfile()
    httpProfile.reqMethod = "POST"  # post请求(默认为post请求)
    httpProfile.reqTimeout = 60    # 请求超时时间,单位为秒(默认60秒)
    httpProfile.endpoint = "sms.tencentcloudapi.com"  # 指定接入地域域名(默认就近接入)
    clientProfile = ClientProfile()
    clientProfile.signMethod = "TC3-HMAC-SHA256"  # 指定签名算法
    clientProfile.language = "en-US"
    clientProfile.httpProfile = httpProfile
    client = sms_client.SmsClient(cred, "ap-guangzhou", clientProfile)
    req = models.SendSmsRequest()
    req.SmsSdkAppId = "1400140089"
    req.SignName = "坤铭教育"
    req.TemplateId = "1875765"    
    req.TemplateParamSet = [dw_jc,yzm]
    req.PhoneNumberSet = [phone]
    req.SessionContext = ""
    req.ExtendCode = ""
    req.SenderId = ""
    resp = client.SendSms(req)
    dict3 = json.loads(resp.to_json_string(indent=2))

    print(phone,dict3['SendStatusSet'][0]["Message"])
except TencentCloudSDKException as err:
    print(v['phone'],err)
+8613793180751 send success
In [ ]:
from tencentcloud.common import credential
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.sms.v20210111 import sms_client, models
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
import json
import pymongo

myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient["baogao"]
mycol = mydb["pdf"]

filename = 'data/中安联合.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl) 
dict2 = {}
place_id = 624770
myquery = { "place_id": place_id,"code":"051067" }
for x in mycol.find(myquery,{ "_id": 0, "place_id": 0}):
    code = int(x['fn'].split('-')[0])
    if str(code) in dict1.keys():
        dict2[code] = {'phone':str(dict1[str(code)]['phone']),'code':x['code']}
    else:
        print('no phone')
print(dict2)

统计短信发送状态

In [ ]:
from tencentcloud.common import credential
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.sms.v20210111 import sms_client, models
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
import json
import pymongo


try:    
    secretId = "AKID22rVyvSqbikXFFvav31ykc9YmqjN6KYc"
    secretKey = "51XVL1YxDKI6mJh8au6DDuTskS1RhwJX"
    cred = credential.Credential(secretId, secretKey) 
    httpProfile = HttpProfile()
    httpProfile.reqMethod = "POST"  # post请求(默认为post请求)
    httpProfile.reqTimeout = 60    # 请求超时时间,单位为秒(默认60秒)
    httpProfile.endpoint = "sms.tencentcloudapi.com"  # 指定接入地域域名(默认就近接入)
    clientProfile = ClientProfile()
    clientProfile.signMethod = "TC3-HMAC-SHA256"  # 指定签名算法
    clientProfile.language = "en-US"
    clientProfile.httpProfile = httpProfile
    client = sms_client.SmsClient(cred, "ap-guangzhou", clientProfile)
    req = models.SendStatusStatisticsRequest()
    req.SmsSdkAppId = "1400140089"
    
    # 拉取最大条数,最多100条
    req.Limit = 100
    # 偏移量 注:目前固定设置为0
    req.Offset = 0
    # 开始时间,yyyymmddhh 需要拉取的起始时间,精确到小时
    req.BeginTime = "2023112700"
    # 结束时间,yyyymmddhh 需要拉取的截止时间,精确到小时
    # 注:EndTime 必须大于 BeginTime
    req.EndTime = "2023112723"


    # 通过client对象调用SendStatusStatistics方法发起请求。注意请求方法名与请求对象是对应的。
    # 返回的resp是一个SendStatusStatisticsResponse类的实例,与请求对象对应。
    resp = client.SendStatusStatistics(req)


    # 输出json格式的字符串回包
    print(resp.to_json_string(indent=2))


except TencentCloudSDKException as err:
    print(err)

拉取短信下发状态

In [ ]:
from tencentcloud.common import credential
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.sms.v20210111 import sms_client, models
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile



try:    
    secretId = "AKID22rVyvSqbikXFFvav31ykc9YmqjN6KYc"
    secretKey = "51XVL1YxDKI6mJh8au6DDuTskS1RhwJX"
    cred = credential.Credential(secretId, secretKey) 
    httpProfile = HttpProfile()
    httpProfile.reqMethod = "POST"  # post请求(默认为post请求)
    httpProfile.reqTimeout = 60    # 请求超时时间,单位为秒(默认60秒)
    httpProfile.endpoint = "sms.tencentcloudapi.com"  # 指定接入地域域名(默认就近接入)
    clientProfile = ClientProfile()
    clientProfile.signMethod = "TC3-HMAC-SHA256"  # 指定签名算法
    clientProfile.language = "en-US"
    clientProfile.httpProfile = httpProfile
    client = sms_client.SmsClient(cred, "ap-guangzhou", clientProfile)
    req = models.PullSmsSendStatusRequest()
    req.SmsSdkAppId = "1400140089"
    req.Limit = 100
    resp = client.PullSmsSendStatus(req)
    # 输出json格式的字符串回包
    print(resp.to_json_string(indent=2))


except TencentCloudSDKException as err:
    print(err)
In [ ]: