diff --git a/体测单位/东营老年大学.ipynb b/体测单位/东营老年大学.ipynb index 21bc99b..0ae724f 100644 --- a/体测单位/东营老年大学.ipynb +++ b/体测单位/东营老年大学.ipynb @@ -61,7 +61,9 @@ { "cell_type": "markdown", "id": "6bcd45c2-10af-4d5f-9e0b-5cd1df4f7a7f", - "metadata": {}, + "metadata": { + "jp-MarkdownHeadingCollapsed": true + }, "source": [ "## 获取人员测试成绩" ] @@ -176,7 +178,9 @@ { "cell_type": "markdown", "id": "d034a61d-1fbd-417b-99bd-277e43ebb678", - "metadata": {}, + "metadata": { + "jp-MarkdownHeadingCollapsed": true + }, "source": [ "## 导出测试人员信息" ] @@ -248,7 +252,9 @@ { "cell_type": "markdown", "id": "d794e69d-9444-4765-9b7d-8dcb0f8c4343", - "metadata": {}, + "metadata": { + "jp-MarkdownHeadingCollapsed": true + }, "source": [ "## 导入问卷信息" ] @@ -378,7 +384,9 @@ { "cell_type": "markdown", "id": "9f9111f1-8cf0-4d45-b9b2-e3b631023581", - "metadata": {}, + "metadata": { + "jp-MarkdownHeadingCollapsed": true + }, "source": [ "## 获取问卷人员信息" ] @@ -557,397 +565,6 @@ "## 核对人员成绩" ] }, - { - "cell_type": "code", - "execution_count": null, - "id": "ee84a3ce-deb7-4345-a4a4-877872996e1c", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "import json\n", - "import openpyxl\n", - "\n", - "items = ['bmi','lung','grip','flexion','jump','pushup','situp','balance','reaction','step']\n", - "bmi = ['height','weight']\n", - "\n", - "\n", - "filename = 'data/727410_pdf.json'\n", - "with open(filename,'r') as fl:\n", - " list2 = json.load(fl)\n", - "\n", - "filename = 'data/result_东营老年大学1.json'\n", - "with open(filename,'r') as fl:\n", - " dict1 = json.load(fl) \n", - " \n", - "\n", - "for xm in list2: \n", - " id = xm['id']\n", - " if str(id) in dict1.keys():\n", - " #print(id,xm['name'])\n", - " for item in xm['fits'].keys():\n", - " y_score = xm['fits'][item]['score']\n", - " if item not in dict1[str(id)].keys() or y_score != dict1[str(id)][item]['score']:\n", - " print(id,xm['name'],item,'no')" - ] - }, - { - "cell_type": "markdown", - "id": "e76ef95a-25dc-45f2-8b8c-617acbf546c1", - "metadata": {}, - "source": [ - "## 更新人员手机号码" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "37e24019-9b79-4748-ae6a-2bdb6052862d", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "import openpyxl\n", - "import json\n", - "from datetime import date\n", - "\n", - "filename = 'data/东营老年大学.json'\n", - "with open(filename,'r') as fl:\n", - " dict1 = json.load(fl) \n", - "\n", - "\n", - "wb = openpyxl.load_workbook('data/东营老年大学电话.xlsx')\n", - "sheet = wb.active\n", - "# sheets = wb.sheetnames\n", - "person = {}\n", - "\n", - "for n in range(2, sheet.max_row+1):\n", - " code = str(sheet.cell(n, 3).value)\n", - " phone = sheet.cell(n, 1).value\n", - " if code in dict1.keys():\n", - " print(phone,code,dict1[code]['phone'])\n", - " dict1[code]['phone'] = phone\n", - " \n", - " \n", - "filename = 'data/东营老年大学.json'\n", - "with open(filename, 'w') as fl:\n", - " json.dump(dict1, fl, ensure_ascii=False)\n", - "print('ok')" - ] - }, - { - "cell_type": "markdown", - "id": "7ac62aed-6256-4bd2-a563-5f6e34504121", - "metadata": {}, - "source": [ - "## 核对人员手机号码" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "42b7cd7d-3446-4abf-91f2-c85d447231e9", - "metadata": {}, - "outputs": [], - "source": [ - "import openpyxl\n", - "import json\n", - "from datetime import date\n", - "\n", - "filename = 'data/东营老年大学.json'\n", - "with open(filename,'r') as fl:\n", - " dict1 = json.load(fl) \n", - "\n", - "\n", - "wb = openpyxl.load_workbook('data/6.20日北体花名册.xlsx')\n", - "sheet = wb.active\n", - "# sheets = wb.sheetnames\n", - "dict2 = {}\n", - "\n", - "for n in range(3, sheet.max_row+1):\n", - " phone = int(sheet.cell(n, 3).value)\n", - " \n", - " dict2[phone] = sheet.cell(n, 2).value\n", - "i = 1\n", - "for k, v in dict1.items():\n", - " if 'phone' in v.keys() and v['phone'] in dict2.keys() :\n", - " print(i,v['name'],dict2[v['phone']])\n", - " i+=1" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "bd4b91e9-289c-4f21-aab6-846b5f98c493", - "metadata": {}, - "outputs": [], - "source": [ - "%reset -f\n", - "\n", - "import openpyxl\n", - "import json\n", - "from datetime import date\n", - "\n", - "\n", - "filename = 'data/东营老年大学.json'\n", - "with open(filename,'r') as fl:\n", - " dict1 = json.load(fl) \n", - "\n", - "dict2 = {}\n", - "for k, v in dict1.items():\n", - " if 'phone' in v.keys():\n", - " dict2[v['phone']] = v['name']\n", - "wb = openpyxl.load_workbook('data/6.20日北体花名册.xlsx')\n", - "sheet = wb.active\n", - "# sheets = wb.sheetnames\n", - "\n", - "\n", - "for n in range(3, sheet.max_row+1):\n", - " phone = int(sheet.cell(n, 3).value)\n", - " if phone not in dict2.keys():\n", - " print(sheet.cell(n, 2).value)\n", - " \n", - "print(dict2) " - ] - }, - { - "cell_type": "markdown", - "id": "dacbf0e8-f456-478f-8253-2824d68d092c", - "metadata": {}, - "source": [ - "## 合并分日测试信息" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "162364f8-8ae9-4bbb-8fb1-e9181ececf02", - "metadata": { - "execution": { - "iopub.execute_input": "2024-09-14T12:37:55.393433Z", - "iopub.status.busy": "2024-09-14T12:37:55.392657Z", - "iopub.status.idle": "2024-09-14T12:37:55.424141Z", - "shell.execute_reply": "2024-09-14T12:37:55.423583Z", - "shell.execute_reply.started": "2024-09-14T12:37:55.393359Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "170\n" - ] - } - ], - "source": [ - "import json\n", - "from datetime import date\n", - "\n", - "filename = 'data/result_北体体质康健1.json'\n", - "with open(filename,'r') as fl:\n", - " dict1 = json.load(fl) \n", - "filename = 'data/result_北体体质康健2.json'\n", - "with open(filename,'r') as fl:\n", - " dict2 = json.load(fl) \n", - "\n", - "n = 50\n", - "for k, v in dict2.items():\n", - " dict1[n+int(k)] = v\n", - " \n", - "filename = 'data/result_北体体质康健.json'\n", - "with open(filename,'w') as fl:\n", - " json.dump(dict1, fl, ensure_ascii=False) \n", - "print(len(dict1))" - ] - }, - { - "cell_type": "markdown", - "id": "ddda3101-052a-45c5-87af-65333b4ba141", - "metadata": {}, - "source": [ - "## 补充问卷人员信息" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "8e025cb5-8c9f-4eb9-a66e-863df32881c8", - "metadata": { - "execution": { - "iopub.execute_input": "2024-09-14T12:37:09.151657Z", - "iopub.status.busy": "2024-09-14T12:37:09.150889Z", - "iopub.status.idle": "2024-09-14T12:37:09.186568Z", - "shell.execute_reply": "2024-09-14T12:37:09.186032Z", - "shell.execute_reply.started": "2024-09-14T12:37:09.151586Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ok\n" - ] - } - ], - "source": [ - "import openpyxl\n", - "import json\n", - "from datetime import date\n", - "\n", - "wb = openpyxl.load_workbook('data/北体体质康健.xlsx')\n", - "sheet = wb.active\n", - "filename = 'data/result_北体体质康健.json'\n", - "with open(filename,'r') as fl:\n", - " dict1 = json.load(fl) \n", - "filename = 'data/北体体质康健.json'\n", - "with open(filename,'r') as fl:\n", - " dict2 = json.load(fl) \n", - "for n in range(1, sheet.max_row+1):\n", - " code = str(sheet.cell(n, 1).value)\n", - " if code in dict1.keys(): \n", - " if sheet.cell(n,5).value is not None:\n", - " dict1[code]['phone'] = str(sheet.cell(n,5).value)\n", - " else:\n", - " dict1[code]= dict2[code]\n", - " rq = '2024-09-14'\n", - " birth = dict2[code]['birth']\n", - " days = (rq-birth).days \n", - " dict1[code]['age'] = int(days/365)\n", - " dict1[code]['month'] = int(days/365*12)\n", - " \n", - "filename = 'data/result_北体体质康健.json'\n", - "with open(filename, 'w') as fl:\n", - " json.dump(dict1, fl, ensure_ascii=False)\n", - "print('ok')" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "ef75192e-a6ec-4d72-88b4-7645ce6d0aed", - "metadata": { - "execution": { - "iopub.execute_input": "2024-09-14T12:43:31.977618Z", - "iopub.status.busy": "2024-09-14T12:43:31.976867Z", - "iopub.status.idle": "2024-09-14T12:43:31.999628Z", - "shell.execute_reply": "2024-09-14T12:43:31.999148Z", - "shell.execute_reply.started": "2024-09-14T12:43:31.977549Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ok\n" - ] - } - ], - "source": [ - "import json\n", - "from datetime import date\n", - "filename = 'data/result_北体体质康健2.json'\n", - "with open(filename,'r') as fl:\n", - " dict1 = json.load(fl) \n", - "for k,v in dict1.items():\n", - " if 'month' not in v.keys():\n", - " rq = date.fromisoformat(v['rq'])\n", - " birth = date.fromisoformat(v['birth'])\n", - " days = (rq-birth).days \n", - " dict1[k]['age'] = int(days/365)\n", - " dict1[k]['month'] = int(days/365*12)\n", - "with open(filename, 'w') as fl:\n", - " json.dump(dict1, fl, ensure_ascii=False)\n", - "print('ok') " - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "99c612c8-aa47-4ed8-b866-c8d2edcaea4b", - "metadata": { - "execution": { - "iopub.execute_input": "2024-09-14T12:45:56.907974Z", - "iopub.status.busy": "2024-09-14T12:45:56.907231Z", - "iopub.status.idle": "2024-09-14T12:46:35.198207Z", - "shell.execute_reply": "2024-09-14T12:46:35.197069Z", - "shell.execute_reply.started": "2024-09-14T12:45:56.907903Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "79\n" - ] - } - ], - "source": [ - "import requests\n", - "import json\n", - "import openpyxl\n", - "\n", - "\n", - "headers = {\n", - " \"Content-Type\": \"application/json; charset=UTF-8\"\n", - " }\n", - "filename = 'data/result_北体体质康健2.json'\n", - "with open(filename,'r') as fl:\n", - " dict1 = json.load(fl)\n", - "list1 = []\n", - "file_path ='./北体体质康健班/'\n", - "list_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp','bmi']\n", - "i=0\n", - "list2 = []\n", - "for k, v in dict1.items():\n", - " list1 = []\n", - " mydata = {}\n", - " \n", - " id = str(k).rjust(4,\"0\")\n", - " mydata['path'] = file_path+id+'-'+ v['name']+'.pdf'\n", - " mydata['title'] = '北体体质康健班'\n", - " mydata['subtitle'] = ''\n", - " mydata['id'] = id\n", - " mydata['name'] = v['name']\n", - " if v['sex'] == '男':\n", - " mydata['gender'] = 'male'\n", - " else:\n", - " mydata['gender'] = 'female'\n", - " \n", - " mydata['month'] = v['month']\n", - " mydata['fits'] = {}\n", - " survey_list = ['tcm','psy','spine']\n", - " for item in survey_list:\n", - " if item in v.keys():\n", - " mydata.setdefault('surveys',{})\n", - " mydata['surveys'][item] = v[item]\n", - " \n", - " \n", - " #mydata['fits'] = {}\n", - " for item in list_item:\n", - " if item in v.keys():\n", - " mydata.setdefault('fits',{})\n", - " if item in ['lung','pushup','step','situp']:\n", - " mark = v[item]['成绩'].split()[0].split('.')[0]\n", - " else:\n", - " mark = v[item]['成绩'].split()[0]\n", - " mydata['fits'][item] = {'mark':mark,'score':v[item]['score']}\n", - " if len(mydata['fits']) >2 : \n", - " list1.append(mydata)\n", - " list2.append([k,v['name']])\n", - " i+=1\n", - " x = requests.post('http://localhost:3003', data = json.dumps(list1), headers=headers)\n", - " #print(id,v['name'],x.text)\n", - " #print(mydata)\n", - " #x.close()\n", - "print(i)" - ] - }, { "cell_type": "code", "execution_count": null, diff --git a/体测单位/体测数据管理.ipynb b/体测单位/体测数据管理.ipynb index 6ab9cf9..2f9a357 100644 --- a/体测单位/体测数据管理.ipynb +++ b/体测单位/体测数据管理.ipynb @@ -23,10 +23,10 @@ "mydb = myclient[\"baogao\"]\n", "mycol = mydb[\"place\"]\n", "\n", - "place_id = 698465\n", - "place_code = \"06\"\n", - "dw_name = \"天宫院社区\"\n", - "dw_jc = \"天宫院社区\"\n", + "place_id = 727411\n", + "place_code = \"13\"\n", + "dw_name = \"北体体质康健班\"\n", + "dw_jc = \"北体体质康健班\"\n", "myquery = { \"id\": place_id }\n", "num = mycol.count_documents(myquery)\n", "if num>0:\n", @@ -46,26 +46,10 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "id": "6ce2cbc7-435a-461c-bdb8-abd9a6962fbc", - "metadata": { - "execution": { - "iopub.execute_input": "2024-08-11T11:24:39.665184Z", - "iopub.status.busy": "2024-08-11T11:24:39.664256Z", - "iopub.status.idle": "2024-08-11T11:24:39.691000Z", - "shell.execute_reply": "2024-08-11T11:24:39.690127Z", - "shell.execute_reply.started": "2024-08-11T11:24:39.665085Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ok\n" - ] - } - ], + "metadata": {}, + "outputs": [], "source": [ "import openpyxl\n", "import os,sys,shutil\n", @@ -79,10 +63,10 @@ "myclient = pymongo.MongoClient('mongodb://localhost:27017/')\n", "mydb = myclient[\"baogao\"]\n", "\n", - "place_id = 698465\n", - "place_code = \"06\"\n", - "dw_name = \"淄博积家村\"\n", - "dw_jc = \"淄博积家村\"\n", + "place_id = 727411\n", + "place_code = \"13\"\n", + "dw_name = \"北体体质康健班\"\n", + "dw_jc = \"北体体质康健班\"\n", "fi_path = '/home/songyi/python/mycrm/flask/pdf/files'\n", "fls = glob.glob(f'{fi_path}/{str(place_id)}/*.pdf')\n", "\n", @@ -113,53 +97,13 @@ " #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,'rq':'20240811'}\n", + " dict2 = {'place_id':place_id,'code':dxm,'fn':Path(fn).name,'rq':'20240914'}\n", " list2.append(dict2)\n", " i +=1\n", "x = mycol.insert_many(list2)\n", "print('ok') " ] }, - { - "cell_type": "code", - "execution_count": null, - "id": "1ca065ca-d999-4e3f-841b-16f9666b6975", - "metadata": {}, - "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 = 727410\n", - "place_code = \"08\"\n", - "dw_name = \"北体体质康健实验班\"\n", - "dw_jc = \"北体体质康健实验班\"\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", - "list1 = []\n", - "mycol = mydb[\"pdf\"]\n", - "query1 = { \"place_id\": place_id }\n", - "list2 = []\n", - "mydoc = mycol.find(query1,{ \"code\": 1, \"_id\": 0 })\n", - "\n", - "for x in mydoc:\n", - " list2.append(x['code'])\n", - "print(list2)" - ] - }, { "cell_type": "markdown", "id": "ad9e943a-bb3a-4d58-93ef-cc442a80effa", @@ -170,64 +114,12 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "id": "5f665c0f-8d30-4759-b7f8-fb7e13b98efa", "metadata": { - "execution": { - "iopub.execute_input": "2024-08-11T11:26:41.537017Z", - "iopub.status.busy": "2024-08-11T11:26:41.536326Z", - "iopub.status.idle": "2024-08-11T11:26:41.562731Z", - "shell.execute_reply": "2024-08-11T11:26:41.561622Z", - "shell.execute_reply.started": "2024-08-11T11:26:41.536952Z" - }, "tags": [] }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "5 no phone\n", - "22 no phone\n", - "19 no phone\n", - "38 no phone\n", - "25 no phone\n", - "6 no phone\n", - "8 no phone\n", - "26 no phone\n", - "15 no phone\n", - "13 no phone\n", - "20 no phone\n", - "23 no phone\n", - "27 no phone\n", - "10 no phone\n", - "21 no phone\n", - "3 no phone\n", - "30 no phone\n", - "11 no phone\n", - "14 no phone\n", - "24 no phone\n", - "1 15153309038 9-曹秀芹.pdf\n", - "2 13573332133 17-段玉华.pdf\n", - "3 13964491825 7-韩美华.pdf\n", - "4 15553344004 1-张爱英.pdf\n", - "5 15853389189 36-袁会富.pdf\n", - "6 15069350919 16-王芹英.pdf\n", - "7 15165846001 2-张俊华.pdf\n", - "8 13070650793 18-肖翠花.pdf\n", - "9 13455364491 35-王霞.pdf\n", - "10 15853380767 28-肖爱英.pdf\n", - "11 13646430765 29-梁桂岭.pdf\n", - "12 13053316892 12-孙宗玲.pdf\n", - "13 13287885248 31-杜婷.pdf\n", - "14 13153385772 32-崔杰.pdf\n", - "15 15169224472 33-姚桂银.pdf\n", - "16 13583398468 4-尚永.pdf\n", - "17 18653305998 37-李琳.pdf\n", - "18 13869390557 34-徐爱锋.pdf\n" - ] - } - ], + "outputs": [], "source": [ "from tencentcloud.common import credential\n", "from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException\n", @@ -241,13 +133,13 @@ "mydb = myclient[\"baogao\"]\n", "mycol = mydb[\"pdf\"]\n", "\n", - "dw_jc = \"淄博积家村测试者\"\n", - "filename = 'data/积家基础数据2408.json'\n", + "dw_jc = \"北体体质康健班\"\n", + "filename = 'data/北体体质康健.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,\"rq\":'20240811' }\n", + "myquery = { \"place_id\": place_id,\"rq\":'20240914' }\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() and 'phone' in dict1[str(code)].keys():\n", @@ -302,64 +194,12 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "id": "4b2b5d76-665f-4dfe-bbd3-5c80abd8c3e3", "metadata": { - "execution": { - "iopub.execute_input": "2024-08-11T11:28:21.443578Z", - "iopub.status.busy": "2024-08-11T11:28:21.442841Z", - "iopub.status.idle": "2024-08-11T11:28:25.277992Z", - "shell.execute_reply": "2024-08-11T11:28:25.276474Z", - "shell.execute_reply.started": "2024-08-11T11:28:21.443507Z" - }, "tags": [] }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "no phone\n", - "no phone\n", - "no phone\n", - "no phone\n", - "no phone\n", - "no phone\n", - "no phone\n", - "no phone\n", - "no phone\n", - "no phone\n", - "no phone\n", - "no phone\n", - "no phone\n", - "no phone\n", - "no phone\n", - "no phone\n", - "no phone\n", - "no phone\n", - "no phone\n", - "no phone\n", - "15153309038 send success\n", - "13573332133 send success\n", - "13964491825 send success\n", - "15553344004 send success\n", - "15853389189 send success\n", - "15069350919 send success\n", - "15165846001 send success\n", - "13070650793 send success\n", - "13455364491 send success\n", - "15853380767 send success\n", - "13646430765 send success\n", - "13053316892 send success\n", - "13287885248 send success\n", - "13153385772 send success\n", - "15169224472 send success\n", - "13583398468 send success\n", - "18653305998 send success\n", - "13869390557 send success\n" - ] - } - ], + "outputs": [], "source": [ "from tencentcloud.common import credential\n", "from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException\n", @@ -368,18 +208,19 @@ "from tencentcloud.common.profile.http_profile import HttpProfile\n", "import json\n", "import pymongo\n", + "import time\n", "\n", "myclient = pymongo.MongoClient('mongodb://localhost:27017/')\n", "mydb = myclient[\"baogao\"]\n", "mycol = mydb[\"pdf\"]\n", "\n", - "dw_jc = \"淄博积家村测试者\"\n", - "filename = 'data/积家基础数据2408.json'\n", + "dw_jc = \"北体体质康健班测试者\"\n", + "filename = 'data/北体体质康健.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,\"rq\":'20240811' }\n", + "myquery = { \"place_id\": place_id,\"rq\":'20240914' }\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() and 'phone' in dict1[str(code)].keys():\n", @@ -387,7 +228,7 @@ " else:\n", " print('no phone')\n", "#print(dict2)\n", - "dw_jc = \"世纪花园测试者\"\n", + "#dw_jc = \"北体体质康健班测试者\"\n", "#dict2 = {375: {'phone': '13793180751', 'code': '0379208'}}\n", "for k, v in dict2.items():\n", " phone = '+86'+v['phone']\n", @@ -416,8 +257,8 @@ " 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", + " time.sleep(2)\n", " except TencentCloudSDKException as err:\n", " print(v['phone'],err)" ] @@ -443,27 +284,12 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "id": "25a269c3-758f-4e79-ae6d-a6e6f161d64b", "metadata": { - "execution": { - "iopub.execute_input": "2024-08-11T10:49:44.708154Z", - "iopub.status.busy": "2024-08-11T10:49:44.707426Z", - "iopub.status.idle": "2024-08-11T10:49:44.956435Z", - "shell.execute_reply": "2024-08-11T10:49:44.954940Z", - "shell.execute_reply.started": "2024-08-11T10:49:44.708083Z" - }, "tags": [] }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "+8613793180751 send success\n" - ] - } - ], + "outputs": [], "source": [ "from tencentcloud.common import credential\n", "from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException\n", @@ -477,12 +303,12 @@ "mydb = myclient[\"baogao\"]\n", "mycol = mydb[\"pdf\"]\n", "\n", - "filename = 'data/世纪花园基础数据240808.json'\n", + "filename = 'data/北体体质康健.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,\"rq\":'20240811' }\n", + "myquery = { \"place_id\": place_id,\"rq\":'20240914' }\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() and 'phone' in dict1[str(code)].keys():\n", @@ -490,10 +316,10 @@ " else:\n", " print('no phone')\n", "#print(dict2)\n", - "dw_jc = \"世纪花园测试者\"\n", + "dw_jc = \"北体体质康健班测试者\"\n", "\n", - "phone = '+86'+'13793180751'\n", - "yzm = '05403'\n", + "phone = '+86'+'18854609676'\n", + "yzm = '13306'\n", "try: \n", " secretId = \"AKID22rVyvSqbikXFFvav31ykc9YmqjN6KYc\"\n", " secretKey = \"51XVL1YxDKI6mJh8au6DDuTskS1RhwJX\"\n", diff --git a/体测单位/镇海.ipynb b/体测单位/镇海.ipynb new file mode 100644 index 0000000..6a03301 --- /dev/null +++ b/体测单位/镇海.ipynb @@ -0,0 +1,396 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "338fb8da-815a-4536-ae91-4f461ba9401f", + "metadata": {}, + "source": [ + "## 体测人员导入" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "ba24132c-133f-4508-8fe7-e68d1908b6e9", + "metadata": { + "execution": { + "iopub.execute_input": "2024-09-20T08:47:18.577809Z", + "iopub.status.busy": "2024-09-20T08:47:18.577022Z", + "iopub.status.idle": "2024-09-20T08:47:18.914709Z", + "shell.execute_reply": "2024-09-20T08:47:18.914113Z", + "shell.execute_reply.started": "2024-09-20T08:47:18.577734Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ok\n" + ] + } + ], + "source": [ + "import openpyxl\n", + "import json\n", + "from datetime import date\n", + "\n", + "wb = openpyxl.load_workbook('data/镇海体质监测报名.xlsx')\n", + "sheet = wb.active\n", + "# sheets = wb.sheetnames\n", + "person = {}\n", + "\n", + "for n in range(2, sheet.max_row+1):\n", + " code = int(sheet.cell(n, 1).value)\n", + " person.setdefault(code, {})\n", + " dict1 = {}\n", + " dict1['name'] = sheet.cell(n, 2).value\n", + " dict1['sex'] = sheet.cell(n, 3).value\n", + " dict1['unit'] = sheet.cell(n, 7).value\n", + " dict1['gh'] = sheet.cell(n, 5).value\n", + " dict1['birth'] = str(sheet.cell(n, 6).value).replace('/','-').split(' ')[0] \n", + " dict1['phone'] = str(sheet.cell(n,4).value)\n", + " person[code] = dict1\n", + "filename = 'data/镇海.json'\n", + "with open(filename, 'w') as fl:\n", + " json.dump(person, fl, ensure_ascii=False)\n", + "print('ok')" + ] + }, + { + "cell_type": "markdown", + "id": "10ddfd3b-697c-4459-8bed-147b22f88239", + "metadata": {}, + "source": [ + "## 生成读卡系统文件" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "63ab2d5b-3a0a-4ac7-a3e7-b3a34e621e98", + "metadata": { + "execution": { + "iopub.execute_input": "2024-09-17T01:49:44.352863Z", + "iopub.status.busy": "2024-09-17T01:49:44.352020Z", + "iopub.status.idle": "2024-09-17T01:49:44.374799Z", + "shell.execute_reply": "2024-09-17T01:49:44.374342Z", + "shell.execute_reply.started": "2024-09-17T01:49:44.352780Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ok\n" + ] + } + ], + "source": [ + "import json\n", + "\n", + "filename = 'data/镇海.json'\n", + "with open(filename,'r') as fl:\n", + " dict1 = json.load(fl)\n", + "list1 = []\n", + "for k, v in dict1.items():\n", + " dict2 = {}\n", + " #if dict1['sex'] =='男':\n", + " # sex = 1\n", + " \n", + " dict2 = {'id':k,'name':v['name'],'gender':v['sex'],'birth':v['birth'],'unit':v['unit']}\n", + " list1.append(dict2)\n", + "json_data = json.dumps(list1,ensure_ascii=False, indent=4) \n", + "\n", + "# 将 json 数据写入文件\n", + "with open(\"data/data_镇海.json\", \"w\",encoding = 'utf-8') as file:\n", + " file.write(json_data) \n", + "print('ok')" + ] + }, + { + "cell_type": "markdown", + "id": "b6dd08b0-f58c-4dc1-86a9-e7b2b84478c3", + "metadata": {}, + "source": [ + "## 获取人员测试成绩" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "5d864909-d10f-461d-8e6e-dc5c43613576", + "metadata": { + "execution": { + "iopub.execute_input": "2024-09-20T08:48:09.078723Z", + "iopub.status.busy": "2024-09-20T08:48:09.077996Z", + "iopub.status.idle": "2024-09-20T08:48:09.151435Z", + "shell.execute_reply": "2024-09-20T08:48:09.150864Z", + "shell.execute_reply.started": "2024-09-20T08:48:09.078657Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "934\n", + "934\n" + ] + } + ], + "source": [ + "import json\n", + "import time\n", + "import csv\n", + "\n", + "filename = '../item.json'\n", + "item = {}\n", + "unit = {}\n", + "with open(filename,'r') as fl:\n", + " dict1 = json.load(fl) \n", + "for k,v in dict1.items():\n", + " item[k] = v\n", + "re_ta = {}\n", + "dict1 = {}\n", + "list1 = []\n", + "filename = 'data/镇海.json'\n", + "with open(filename,'r') as fl:\n", + " dict1 = json.load(fl) \n", + "\n", + "filename = 'data/places_result_20240920.csv'\n", + "with open(filename,'r',newline='') as csv_file:\n", + " fl = csv.reader(csv_file,delimiter=',')\n", + " header = next(fl) \n", + " for line in fl:\n", + " #line = re.sub('[\\r\\n\\f ]{1,}', '', line)\n", + " list1.append(line)\n", + "#print(list1)\n", + "for result in list1:\n", + " user = str(result[2])\n", + " if user in dict1.keys(): \n", + " m_item = str(result[3]) \n", + " re_ta.setdefault(user,{}) \n", + " re_ta[user]['name'] = dict1[user]['name']\n", + " re_ta[user]['sex'] = dict1[user]['sex'] \n", + " re_ta[user]['unit'] = dict1[user]['unit']\n", + " #re_ta[user]['sub_unit'] = dict1[user]['sub_unit']\n", + " item_name = item[m_item]['name']\n", + " re_ta[user].setdefault(item_name,{}) \n", + " score = int(result[4])/item[m_item]['divisor'] \n", + " re_ta[user][item_name]['成绩'] = f'{score} {item[m_item][\"unit\"]}'\n", + "print(len(re_ta))\n", + "filename = 'data/result_镇海.json'\n", + "\n", + "with open(filename,'w') as fl:\n", + " json.dump(re_ta, fl, ensure_ascii=False) \n", + "print(len(re_ta))" + ] + }, + { + "cell_type": "markdown", + "id": "a08c6b65-a390-451b-b1a5-fc474db40035", + "metadata": {}, + "source": [ + "## 导出测试人员信息" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "bc79f0d2-62a2-40c8-bd74-9c7ff17bec8e", + "metadata": { + "execution": { + "iopub.execute_input": "2024-09-20T08:48:32.839532Z", + "iopub.status.busy": "2024-09-20T08:48:32.838772Z", + "iopub.status.idle": "2024-09-20T08:48:33.052265Z", + "shell.execute_reply": "2024-09-20T08:48:33.051700Z", + "shell.execute_reply.started": "2024-09-20T08:48:32.839461Z" + } + }, + "outputs": [], + "source": [ + "import json\n", + "import openpyxl\n", + "\n", + "items = ['身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n", + "title = ['编号','姓名','性别','单位','部门','身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n", + "\n", + "filename = 'data/result_镇海.json'\n", + "with open(filename,'r') as fl:\n", + " dict1 = json.load(fl)\n", + "\n", + "filename = 'data/镇海.json'\n", + "with open(filename,'r') as fl:\n", + " dict2 = json.load(fl)\n", + " \n", + "list1 = []\n", + "for k, v in dict1.items():\n", + " list2 = []\n", + " list2.append(str(k).rjust(5,'0'))\n", + " list2.append(v['name']) \n", + " list2.append(dict2[k]['sex'])\n", + " list2.append(dict2[k]['unit']) \n", + " for item in items:\n", + " if item in v.keys():\n", + " list2.append(v[item]['成绩']) \n", + " elif item =='name':\n", + " list2.append(v[item])\n", + " else:\n", + " list2.append('') \n", + " list1.append(list2)\n", + "filename = 'data/镇海体测情况(截至20240920).xlsx'\n", + "wb = openpyxl.Workbook()\n", + "sheet = wb.active\n", + "sheet.append(title)\n", + "for row in list1:\n", + " sheet.append(row)\n", + " \n", + "wb.save(filename)" + ] + }, + { + "cell_type": "markdown", + "id": "0c2dfa71-8680-4ec6-938d-d37eeba4d4f9", + "metadata": {}, + "source": [ + "## 统计未体测人员明细表" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "cf22739a-5cf3-47fd-b87a-158a2e2d5a95", + "metadata": { + "execution": { + "iopub.execute_input": "2024-09-20T08:49:06.241970Z", + "iopub.status.busy": "2024-09-20T08:49:06.241223Z", + "iopub.status.idle": "2024-09-20T08:49:06.291731Z", + "shell.execute_reply": "2024-09-20T08:49:06.291195Z", + "shell.execute_reply.started": "2024-09-20T08:49:06.241901Z" + } + }, + "outputs": [], + "source": [ + "import json\n", + "import openpyxl\n", + "\n", + "filename = 'data/result_镇海.json'\n", + "with open(filename,'r') as fl:\n", + " dict1 = json.load(fl)\n", + "\n", + "filename = 'data/镇海1.json'\n", + "with open(filename,'r') as fl:\n", + " dict2 = json.load(fl)\n", + "\n", + "list1 = []\n", + "\n", + "i = 1\n", + "for k, v in dict2.items(): \n", + " if k not in dict1.keys():\n", + " list2 = [i,k,v['name'],v['unit']]\n", + " i+=1\n", + " list1.append(list2)\n", + "#print(list1)\n", + "filename = f'data/镇海未测试人员名单.xlsx'\n", + "title = ['序号','员工编号','姓名','部门']\n", + "wb = openpyxl.Workbook()\n", + "sheet = wb.active\n", + "sheet.append(title)\n", + "for row in list1:\n", + " sheet.append(row) \n", + "wb.save(filename)" + ] + }, + { + "cell_type": "markdown", + "id": "286a65eb-995f-4183-a4e5-6d907ba21151", + "metadata": {}, + "source": [ + "## 清理重复人员" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "f4dade65-f760-4220-8a65-39843688a60a", + "metadata": { + "execution": { + "iopub.execute_input": "2024-09-20T08:48:41.723955Z", + "iopub.status.busy": "2024-09-20T08:48:41.723229Z", + "iopub.status.idle": "2024-09-20T08:48:41.926161Z", + "shell.execute_reply": "2024-09-20T08:48:41.925529Z", + "shell.execute_reply.started": "2024-09-20T08:48:41.723892Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1354\n", + "1298\n" + ] + } + ], + "source": [ + "import json\n", + "\n", + "filename = 'data/镇海.json'\n", + "with open(filename,'r') as fl:\n", + " dict1 = json.load(fl)\n", + "print(len(dict1))\n", + "dict2 = {}\n", + "for k, v in dict1.items():\n", + " if 'phone' in v.keys():\n", + " dict2.setdefault(k,{})\n", + " dict2[k]['name'] = v['name']\n", + " dict2[k]['phone'] = v['phone']\n", + "\n", + "list1 = []\n", + "for k, v in dict2.items():\n", + " i = 0\n", + " for k1, v1 in dict1.items():\n", + " if v['name']== v1['name'] and v['phone'] == v1['phone'] and k1 != k:\n", + " list1.append(max(int(k),int(k1)))\n", + "for item in set(list1):\n", + " del dict1[str(item)]\n", + "print(len(dict1))\n", + "filename = 'data/镇海1.json'\n", + "\n", + "with open(filename,'w') as fl:\n", + " json.dump(dict1, fl, ensure_ascii=False) \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ef930e32-9413-4fb0-b9e4-ba548d89ec60", + "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 +} diff --git a/数据处理.ipynb b/数据处理.ipynb index b4c2885..54400f2 100644 --- a/数据处理.ipynb +++ b/数据处理.ipynb @@ -212,27 +212,11 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "metadata": { - "execution": { - "iopub.execute_input": "2024-05-18T09:23:04.791860Z", - "iopub.status.busy": "2024-05-18T09:23:04.791023Z", - "iopub.status.idle": "2024-05-18T09:23:04.798569Z", - "shell.execute_reply": "2024-05-18T09:23:04.798170Z", - "shell.execute_reply.started": "2024-05-18T09:23:04.791818Z" - }, "tags": [] }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Original Text: In 2021, we had a total of 456 sales.\n", - "Modified Text: In {{img_2021}}, we had a total of {{img_456}} sales.\n" - ] - } - ], + "outputs": [], "source": [ "import re \n", "def replace_numbers(text):\n", @@ -257,57 +241,9 @@ }, { "cell_type": "code", - "execution_count": 18, - "metadata": { - "execution": { - "iopub.execute_input": "2024-07-25T05:15:01.475822Z", - "iopub.status.busy": "2024-07-25T05:15:01.475119Z", - "iopub.status.idle": "2024-07-25T05:15:01.484925Z", - "shell.execute_reply": "2024-07-25T05:15:01.483656Z", - "shell.execute_reply.started": "2024-07-25T05:15:01.475759Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1刘宁宁;210105197906243163,;6226900714117146;中信银行上地支行,;13810477335\n", - "2李艳君;130102196606290626;6228480018747767178;中国农业银行股份有限公司北京北下关支行;13641398073\n", - "3何英;110108197202132727;4367420011031107855;中国建设银行北京北大南门支行;15101082137。\n", - "4王晓娜;11010819791230276X;6226900701079721;中信银行;18611172725\n", - "5彭翔吉;371328198801024031;6212260200195609850;中国工商银行崇文体育馆路支行;15210900779\n", - "6 章王楠;110108196201262795;4563510100879852469;中国银行北京安慧里支行;13911983185\n", - "1 薛文传;370921199601032418,;6217994630014645622;中国邮政储蓄银行宁阳县中心营业所;18728194757\n", - "2 张晓利;370921199601232428,;6223795315018773039;齐鲁银行领秀城支行;18953884309\n", - "3王荧铄;370921200311220088;6217002340044537993;中国建设银行宁阳支行;15610330246\n", - "4 符箐 ;622201198810291227;6217953400022774;浦发银行兰州市支行;19893189999\n", - "1杨建营;372431197201211319;6228480322626735417;农行杭州留下支行;13456947969\n", - "2张保(少林寺);342224197404010138;6217002430066673063;中国建设银行河南登封分行;(河南)15093080006(浙江)19884878916\n", - "3 杜洪宇;210404199503163010;6217002650002395485;中国建设银行湖北武当山支行;18671672127\n", - "4张业金;422129195010010036;6217002730004815712;中国建设银行武穴支行;13986516555\n", - "5刘敬儒;110104193607050830;6013820100008481833。;中国银行北京分行右安门支行;13611107631\n", - "6李剑方;132234195706078052;6217855000046012266;中国银行石家庄市中华大街支行;15710379999\n", - "7张长念;342222198006106013;6217230200007011051;中国工商银行海淀北太平庄支行;18911533236\n", - "8刘绥滨;510127196507040056;6227003811990408601;中国建设银行都江堰支行;13981805148\n", - "9王玉林;110108196409092721;6222030200028930042;工商银行清华大学支行;13521738338\n", - "10霍静虹;120111197709141024;6225880222824709;招商银行天津市南门外支行;13920559014\n", - "11姜周存;370102195012312939;6222081602006679608;山东济南市历下区中国工商银行经十东路支行;13964050787\n", - "12刘连俊;13092219610113001x;6228231735158089360;中国农业银行青县支行;13932726789\n", - "13任刚;510111195804064737;6222084402008897663;工商银行成都高新桐梓林南路支行;13908021945\n", - "14高宝东;142429194207131215;6214720508000053092;中国工商银行山西省晋中市太谷区支行;13834834395\n", - "15孙学孟;230102194808250416;6217001140006800145;中国建设银行;15604669719\n", - "16沙宗朝;372526197006130016;6212261611002728999;中国工商银行冠县支行;18606355008\n", - "17孙永田;110107194902050335;6217000010129556042;中国建设银行姓名:孙永田;13801392579\n", - "18陈 虎;622701198902081670;6230650004200973230;平凉农商行天门支行;19809330555\n", - "19王镖(8000元);622723197502051011;6217858500019105267;中国银行平凉分行;13993394577\n", - "20 杨 丽;110108195608191322;6222080200026479793;北京市海淀区红山口国防大学中国工商银行分行;13699112621\n", - "21张佑印;610124198111092419;6214860130311109;招商银行北京长安街支行;18801068122\n", - "22张永宏;612730198309030135;6217710726216872;中信银行北京上地支行;15960266950\n", - "23杨玉冰;110108196707206395;6217730719618595;中信银行北京市上地支行;19568701147\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "fn = 'file/人员名单.txt'\n", "\n",