Files
jupyter/体测单位/东营羊庙.ipynb
T
2023-09-05 16:28:09 +08:00

1413 lines
42 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"cells": [
{
"cell_type": "markdown",
"id": "f501bde1-90cb-40c4-9dd4-533c27f81be5",
"metadata": {
"tags": [],
"toc-hr-collapsed": true
},
"source": [
"# 调查报告线下数据管理"
]
},
{
"cell_type": "markdown",
"id": "ced4bf30-e7ea-4c4c-ae46-8720ffc07a76",
"metadata": {},
"source": [
"## 羊庙人员信息导入"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "9b2b755e-049e-48c5-87d3-dd37dceb59fe",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"\n",
"filename = 'data/羊庙测试人员信息.json'\n",
"\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"dict2 = {}\n",
"for k,v in dict1.items():\n",
" for item in v:\n",
" bh = item['avatar_id']\n",
" del item['avatar_id']\n",
" dict2[bh] = item\n",
"filename = 'data/羊庙人员名单.json'\n",
"with open(filename, 'w') as fl:\n",
" json.dump(dict2, fl, ensure_ascii=False,default=str)\n",
"print('ok')"
]
},
{
"cell_type": "markdown",
"id": "00e9f538-c0f5-46a0-b768-51480ad3fbaf",
"metadata": {},
"source": [
"## 获取参加体测人员编号"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d89e0e5e-0782-40a3-bba3-862cc9865d4e",
"metadata": {
"tags": []
},
"outputs": [],
"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",
"#print(\"\\n运动项目信息:\")\n",
"filename = 'data/140.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",
"list2 = []\n",
"for result in list1:\n",
" user = int(result[2])\n",
" if user not in list2:\n",
" list2.append(user)\n",
"list2.sort()\n",
"print(len(list2))\n",
"print(list2)"
]
},
{
"cell_type": "markdown",
"id": "2c48f588-135a-4d1a-b01e-96222b70b987",
"metadata": {},
"source": [
"## 根据风险筛选统计卡获取信息"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e76837e8-cdf4-41e0-9d51-6ae5223de813",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import openpyxl\n",
"import json\n",
"import time\n",
"\n",
"wb = openpyxl.load_workbook('data/杨庙运动风险筛查统计表.xlsx')\n",
"sheet = wb.active\n",
"person = {}\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",
" if sheet.cell(n, 8).value is not None:\n",
" name = sheet.cell(n, 8).value\n",
" else:\n",
" name ='不详'\n",
" dict1['name'] = name\n",
" if sheet.cell(n, 9).value is not None:\n",
" dict1['birth'] = str(sheet.cell(n, 9).value).split(' ')[0]\n",
" if sheet.cell(n, 10).value is not None:\n",
" dict1['phone'] = str(sheet.cell(n, 10).value)\n",
" if sheet.cell(n,11).value is not None:\n",
" dict1['id_num'] = sheet.cell(n,11).value\n",
" person[code] = dict1\n",
"print(len(person))\n",
"filename = 'data/杨庙运动风险筛查统计表信息.json'\n",
"with open(filename, 'w') as fl:\n",
" json.dump(person, fl, ensure_ascii=False,default=str)\n",
"print('ok')"
]
},
{
"cell_type": "markdown",
"id": "6cc6b614-85e2-43fd-bc97-301fc776fe29",
"metadata": {},
"source": [
"## 根据恢复版获取信息"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1293cdaa-1fdf-43a5-99ce-a031a76f6688",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import openpyxl\n",
"import json\n",
"import time\n",
"\n",
"wb = openpyxl.load_workbook('data/羊庙恢复版.xlsx')\n",
"sheet = wb.active\n",
"person = {}\n",
"for n in range(2, sheet.max_row+1):\n",
" if sheet.cell(n, 4).value is not None: \n",
" code = int(sheet.cell(n, 4).value)\n",
" person.setdefault(code, {})\n",
" dict1 = {}\n",
" name = sheet.cell(n, 5).value\n",
" dict1['name'] = name\n",
" dict1['bh'] = n - 1\n",
" dict1['sex'] = sheet.cell(n, 6).value\n",
" if sheet.cell(n, 9).value is not None:\n",
" dict1['phone'] = str(sheet.cell(n, 9).value)\n",
" if sheet.cell(n,8).value is not None:\n",
" dict1['id_num'] = sheet.cell(n,8).value\n",
" if sheet.cell(n,3).value is not None:\n",
" dict1['unit'] = sheet.cell(n,3).value\n",
" person[code] = dict1\n",
"print(len(person))\n",
"filename = 'data/杨庙恢复版信息.json'\n",
"with open(filename, 'w') as fl:\n",
" json.dump(person, fl, ensure_ascii=False,default=str)\n",
"print('ok')"
]
},
{
"cell_type": "markdown",
"id": "de1ce95b-4590-4eee-bd51-d37beabd6f87",
"metadata": {},
"source": [
"## 风险筛选统计卡可用人员信息"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f21fff31-0da6-4c1a-bf7c-8c4a1d4a3ecf",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"re_ta = {}\n",
"dict1 = {}\n",
"list1 = []\n",
"#print(\"\\n运动项目信息:\")\n",
"filename = 'data/140.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",
"list2 = []\n",
"for result in list1:\n",
" user = int(result[2])\n",
" if user not in list2:\n",
" list2.append(user)\n",
"list2.sort()\n",
"set1 = set()\n",
"filename = 'data/杨庙恢复版信息.json'\n",
"with open(filename,'r') as fl:\n",
" dict_base = json.load(fl)\n",
"for k, v in dict_base.items():\n",
" set1.add(int(k))\n",
"filename = 'data/杨庙运动风险筛查统计表信息.json'\n",
"\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"list_fx = []\n",
"\n",
"for k,v in dict1.items():\n",
" \n",
" if int(k) in list2 and k not in dict_base.keys() and v['name'] != '不详': \n",
" set1.add(int(k))\n",
"#print(len(list_fx))\n",
"#print(len(set1)) \n",
"for item in list2:\n",
" if item not in set1:\n",
" print(item)"
]
},
{
"cell_type": "markdown",
"id": "b08187a6-41d9-40ec-bc62-d99969148fe7",
"metadata": {},
"source": [
"## 补充恢复版信息"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "50a5e0f9-3850-48ac-9f3a-f5a7be51a7fd",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"filename = 'data/杨庙恢复版信息.json'\n",
"with open(filename,'r') as fl:\n",
" dict_base = json.load(fl)\n",
"for k, v in dict_base.items():\n",
" set1.add(int(k))\n",
"filename = 'data/杨庙运动风险筛查统计表信息.json'\n",
"\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"for k,v in dict_base.items():\n",
" if k in dict1.keys() and 'phone' not in v.keys() and 'phone' in dict1[k].keys():\n",
" #print(k,v['name'])\n",
" dict_base[k]['phone'] = dict1[k]['phone']\n",
"\n",
"for k, v in dict1.items():\n",
" if int(k) in list2 and k not in dict_base.keys():\n",
" dict_base[k] = v\n",
" \n",
"print(len(dict_base))\n",
"#print(dict_base)\n",
"filename = 'data/羊庙人员名单.json'\n",
"with open(filename,'r') as fl:\n",
" dict2 = json.load(fl)\n",
"i = 1\n",
"for k, v in dict_base.items():\n",
" if 'bh' not in v.keys():\n",
" name = v['name']\n",
" n = 0\n",
" for k1,v1 in dict2.items():\n",
" if name == v1['name']:\n",
" bh = k1\n",
" n = n+1\n",
" if n ==1:\n",
" dict_base[k]['bh'] = bh\n",
" else:\n",
" print(i,k,v['name'])\n",
" i+=1\n",
"filename = 'data/杨庙补充汇总信息.json'\n",
"with open(filename, 'w') as fl:\n",
" json.dump(dict_base, fl, ensure_ascii=False,default=str)\n",
"print('ok')"
]
},
{
"cell_type": "markdown",
"id": "41c81dfc-ee3a-4934-8f02-077e3f07e5fc",
"metadata": {},
"source": [
"## 导出汇总信息"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1106fa5d-f0dd-4af4-bc39-7b106786b438",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"filename = 'data/杨庙补充汇总信息.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"list_item = ['name','bh','sex','phone','unit','id_num']\n",
"list_data = []\n",
"\n",
"for k, v in dict1.items():\n",
" list_mx = []\n",
" list_mx.append(k)\n",
" for item in list_item:\n",
" if item in v.keys():\n",
" list_mx.append(v[item])\n",
" else:\n",
" list_mx.append('')\n",
" list_data.append(list_mx)\n",
"#print(list_data) \n",
"filename = 'data/羊庙汇总情况表.xlsx'\n",
"wb = openpyxl.Workbook()\n",
"sheet = wb.active\n",
"#sheet.append(title)\n",
"for row in list_data:\n",
" sheet.append(row)\n",
" \n",
"wb.save(filename) \n",
"print('ok!')"
]
},
{
"cell_type": "markdown",
"id": "d31fa9b7-26d8-4101-94d1-f41723428aa9",
"metadata": {},
"source": [
"## 成年问卷导入"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "dc20aabb-3942-49b9-8841-8e8a0823033a",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import openpyxl\n",
"import json\n",
"\n",
"filename = 'data/杨庙体测明确人员信息(20230328).json'\n",
"with open(filename,'r') as fl:\n",
" dict2 = json.load(fl)\n",
"wb = openpyxl.load_workbook('data/羊庙问卷统计表(成年组).xlsx')\n",
"sheet = wb.active\n",
"# sheets = wb.sheetnames\n",
"\n",
"dict1 = {}\n",
"no_xinli = [108,389,268,270]\n",
"sheet = wb.active\n",
"data1 =list(sheet.values)\n",
"list_bh = data1[0][1:]\n",
"del data1[0]\n",
"print(len(list_bh))\n",
"for i in range(1,len(list_bh)+1):\n",
" list2 = []\n",
" \n",
" for item in data1:\n",
" list2.append(item[i])\n",
" dict1[list_bh[i-1]] = list2\n",
"for k, v in dict1.items():\n",
" #if 0 in v:\n",
" # print(k)\n",
" if str(k) not in dict2.keys():\n",
" print(k,'不在清理名单中')\n",
"\n",
"#print(dict1)"
]
},
{
"cell_type": "markdown",
"id": "9a38f22b-6a8c-422f-a706-07382ccaceda",
"metadata": {},
"source": [
"## 成年问卷导出"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "2c84736a-b6cc-43d6-9407-ead6300748a5",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import openpyxl\n",
"import json\n",
"\n",
"filename = 'data/杨庙体测明确人员信息(20230328).json'\n",
"with open(filename,'r') as fl:\n",
" dict3 = json.load(fl)\n",
"wb = openpyxl.load_workbook('data/羊庙问卷统计表(成年组).xlsx')\n",
"sheet = wb.active\n",
"# sheets = wb.sheetnames\n",
"dict1 = {}\n",
"list_bh = []\n",
"no_xinli = [108,389,268,270]\n",
"zy = [2,7,9,11,12,21,24]\n",
"sheet = wb.active\n",
"data1 =list(sheet.values)\n",
"list_bh = data1[0][1:]\n",
"del data1[0]\n",
"\n",
"\n",
"for i in range(1,len(list_bh)+1):\n",
" list2 = []\n",
" \n",
" for item in data1:\n",
" list2.append(item[i])\n",
" dict1[list_bh[i-1]] = list2\n",
"#print(dict1)\n",
"s = ''\n",
"for k,v in dict1.items():\n",
" if str(k) in dict3.keys(): \n",
" if dict3[str(k)]['sex'] ==1:\n",
" sex = \"m\"\n",
" else:\n",
" sex = \"f\"\n",
" dict2 = {}\n",
" list_mx = []\n",
" list_mx.append(f'\"Gender\":\"{sex}\"')\n",
" list_mx.append(f'\"Age\":\"M\"')\n",
" dict2['surveyId'] = \"merge1\"\n",
" dict2['name'] = dict3[str(k)]['name'] \n",
" name = dict3[str(k)]['name'] \n",
" dict2['code'] = str(k)\n",
" ss = ''\n",
" \n",
" if k not in no_xinli:\n",
" for i in range(0,47):\n",
" list_mx.append(f'\"q{i+1}M\":{v[i]}') \n",
" \n",
" for i in range(1,61):\n",
" if i not in zy:\n",
" list_mx.append(f'\"q{i}\":{v[46+i]}')\n",
" for i in range(1,27):\n",
" list_mx.append(f'\"qv{i}\":{v[106+i]}')\n",
" ss = ','.join(list_mx)\n",
" ss ='{'+ss+'}'\n",
" dict2['data'] = ss\n",
" sj = '2023-03-28 20:02:00'\n",
" s= s+f'(\"merge1\",\"{name}\",\"{str(k)}\",\\'{ss}\\',\"{sj}\"),'\n",
" #print(dict2)\n",
"print(s)"
]
},
{
"cell_type": "markdown",
"id": "75dda87e-804e-42ba-b1a4-08c8a8b65050",
"metadata": {},
"source": [
"## 老年问卷导入"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "09a354e6-a07a-40b8-9b8c-3499fb0b7c28",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import openpyxl\n",
"import json\n",
"\n",
"filename = 'data/杨庙体测明确人员信息(20230328).json'\n",
"with open(filename,'r') as fl:\n",
" dict2 = json.load(fl)\n",
"wb = openpyxl.load_workbook('data/羊庙问卷统计表(老年组).xlsx')\n",
"sheet = wb.active\n",
"# sheets = wb.sheetnames\n",
"dict1 = {}\n",
"dict3 = {}\n",
"no_xinli = [286]\n",
"sheet = wb.active\n",
"data1 =list(sheet.values)\n",
"list_bh = data1[0][1:]\n",
"print(list_bh)\n",
"del data1[0]\n",
"print(len(list_bh))\n",
"for i in range(1,len(list_bh)+1):\n",
" list2 = []\n",
" \n",
" for item in data1:\n",
" list2.append(item[i])\n",
" dict1[list_bh[i-1]] = list2\n",
"for k, v in dict1.items():\n",
" #if 0 in v or ' ' in v:\n",
" # print(k)\n",
" if str(k) not in dict2.keys():\n",
" print(k,'不在清理名单中')\n",
"#print(dict1)"
]
},
{
"cell_type": "markdown",
"id": "e2e311b1-7436-49e3-bf52-93c38f088be1",
"metadata": {},
"source": [
"## 老年问卷导出"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f41e130b-06e5-45ee-bf3d-cc25dfcc653d",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import openpyxl\n",
"import json\n",
"\n",
"filename = 'data/杨庙体测明确人员信息(20230328).json'\n",
"with open(filename,'r') as fl:\n",
" dict3 = json.load(fl)\n",
"wb = openpyxl.load_workbook('data/羊庙问卷统计表(老年组).xlsx')\n",
"sheet = wb.active\n",
"# sheets = wb.sheetnames\n",
"dict1 = {}\n",
"zy = [2,7,9,11,12,21,24]\n",
"no_xinli = [286]\n",
"sheet = wb.active\n",
"data1 =list(sheet.values)\n",
"list_bh = data1[0][1:]\n",
"#print(list_bh)\n",
"del data1[0]\n",
"\n",
"for i in range(1,len(list_bh)+1):\n",
" list2 = []\n",
" \n",
" for item in data1:\n",
" list2.append(item[i])\n",
" dict1[list_bh[i-1]] = list2\n",
"#print(dict1)\n",
"s = ''\n",
"for k,v in dict1.items():\n",
" if str(k) in dict3.keys(): \n",
" if dict3[str(k)]['sex'] ==1:\n",
" sex = \"m\"\n",
" else:\n",
" sex = \"f\"\n",
" dict2 = {}\n",
" list_mx = []\n",
" list_mx.append(f'\"Gender\":\"{sex}\"')\n",
" list_mx.append(f'\"Age\":\"O\"')\n",
" dict2['surveyId'] = \"merge1\"\n",
" dict2['name'] = dict3[str(k)]['name'] \n",
" dict2['code'] = str(k) \n",
" name = dict3[str(k)]['name'] \n",
" if k not in no_xinli:\n",
" for i in range(0,30):\n",
" list_mx.append(f'\"q{i+1}O\":{v[i]}') \n",
" \n",
" for i in range(1,61):\n",
" if i not in zy:\n",
" list_mx.append(f'\"q{i}\":{v[29+i]}')\n",
" for i in range(1,27):\n",
" list_mx.append(f'\"qv{i}\":{v[89+i]}')\n",
" ss = ','.join(list_mx)\n",
" ss ='{'+ss+'}'\n",
" dict2['data'] = ss\n",
" sj = '2023-03-28 20:02:00'\n",
" s= s+f'(\"merge1\",\"{name}\",\"{str(k)}\",\\'{ss}\\',\"{sj}\"),'\n",
" #print(dict2)\n",
"print(s)"
]
},
{
"cell_type": "markdown",
"id": "3b3fe344-975e-4ca2-a1e9-95db76b03471",
"metadata": {},
"source": [
"## 单个老年问卷导出"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "fa0969fb-36e3-48e0-b76d-00c7a138369c",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import openpyxl\n",
"import json\n",
"\n",
"filename = 'data/杨庙体测明确人员信息(20230328).json'\n",
"with open(filename,'r') as fl:\n",
" dict3 = json.load(fl)\n",
"wb = openpyxl.load_workbook('data/羊庙问卷统计表(老年组).xlsx')\n",
"sheet = wb.active\n",
"# sheets = wb.sheetnames\n",
"dict1 = {}\n",
"xinzeng = [230,232]\n",
"no_xinli = [286]\n",
"zy = [2,7,9,11,12,21,24]\n",
"sheet = wb.active\n",
"data1 =list(sheet.values)\n",
"list_bh = data1[0][1:]\n",
"#print(list_bh)\n",
"del data1[0]\n",
"\n",
"for i in range(1,len(list_bh)+1):\n",
" list2 = [] \n",
" for item in data1:\n",
" list2.append(item[i])\n",
" dict1[list_bh[i-1]] = list2\n",
"#print(dict1)\n",
"s = ''\n",
"for k,v in dict1.items():\n",
" if str(k) in dict3.keys() and int(k) in xinzeng: \n",
" if dict3[str(k)]['sex'] ==1:\n",
" sex = \"m\"\n",
" else:\n",
" sex = \"f\"\n",
" dict2 = {}\n",
" list_mx = []\n",
" list_mx.append(f'\"Gender\":\"{sex}\"')\n",
" list_mx.append(f'\"Age\":\"O\"')\n",
" dict2['surveyId'] = \"merge1\"\n",
" dict2['name'] = dict3[str(k)]['name'] \n",
" dict2['code'] = str(k) \n",
" name = dict3[str(k)]['name'] \n",
" if k not in no_xinli:\n",
" for i in range(0,30):\n",
" list_mx.append(f'\"q{i+1}O\":{v[i]}') \n",
" \n",
" for i in range(1,61):\n",
" if i not in zy:\n",
" list_mx.append(f'\"q{i}\":{v[29+i]}')\n",
" for i in range(1,27):\n",
" list_mx.append(f'\"qv{i}\":{v[89+i]}')\n",
" ss = ','.join(list_mx)\n",
" ss ='{'+ss+'}'\n",
" dict2['data'] = ss\n",
" sj = '2023-03-28 20:02:00'\n",
" s= s+f'(\"merge1\",\"{name}\",\"{str(k)}\",\\'{ss}\\',\"{sj}\"),'\n",
" #print(dict2)\n",
"print(s)"
]
},
{
"cell_type": "markdown",
"id": "3262d713-92a4-4790-81a3-976ff308ee3d",
"metadata": {},
"source": [
"## 统计网络问卷信息"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "08980670-fda9-4660-a619-2f5f5ed8d334",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"filename = 'data/merge1.json'\n",
"\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"#print(dict1)\n",
"filename = 'data/杨庙体测明确人员信息(20230328).json'\n",
"with open(filename,'r') as fl:\n",
" dict2 = json.load(fl)\n",
"dict3 = {}\n",
"for k, v in dict1.items():\n",
" print(len(v))\n",
" for item in v:\n",
" phone = item['phone']\n",
" dict3.setdefault(phone,{})\n",
" #dict3[phone]['data'] = v['data']\n",
" for k1,v1 in dict2.items():\n",
" if 'phone' in v1.keys() and phone == v1['phone']:\n",
" dict3[phone]['bh'] = k1\n",
"print(dict3)\n",
"for k, v in dict2.items():\n",
" for k1, v1 in dict2.items():\n",
" \n",
" if 'bh' not in v.keys():\n",
" print(k)"
]
},
{
"cell_type": "markdown",
"id": "e06b0149-c1ff-4fd0-b692-1be391433f40",
"metadata": {},
"source": [
"# 按照测试编号管理"
]
},
{
"cell_type": "markdown",
"id": "54c8e75c-6d3a-4b0d-91a1-c5e9e79a119f",
"metadata": {},
"source": [
"## 导入测试人员信息表(符合条件)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b51b73fa-97fa-473c-ab8a-d1fd958eb52a",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import openpyxl\n",
"import json\n",
"import time\n",
"\n",
"wb = openpyxl.load_workbook('data/杨庙体测明确人员信息表(20230328).xlsx')\n",
"sheet = wb.active\n",
"person = {}\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",
" name = sheet.cell(n, 2).value \n",
" dict1['name'] = name\n",
" dict1['sex'] = sheet.cell(n, 3).value\n",
" dict1['birth'] = str(sheet.cell(n, 4).value).split(' ')[0]\n",
" if sheet.cell(n, 5).value is not None:\n",
" dict1['phone'] = str(sheet.cell(n, 5).value)\n",
" if sheet.cell(n,6).value is not None:\n",
" dict1['unit'] = sheet.cell(n,6).value \n",
" person[code] = dict1\n",
"filename = 'data/杨庙体测明确人员信息(20230328).json'\n",
"with open(filename, 'w') as fl:\n",
" json.dump(person, fl, ensure_ascii=False,default=str)\n",
"print('ok')"
]
},
{
"cell_type": "markdown",
"id": "cc0c1a86-e15f-43e9-99e9-140aed8475bf",
"metadata": {},
"source": [
"## 体测报告更名按部门分组"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ac3bb674-77e2-4edb-aae7-7b589c8d9b5a",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import os,sys,shutil\n",
"import json\n",
"import math\n",
"\n",
"filename = 'data/杨庙体测明确人员信息(20230328).json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"old = []\n",
"depart = []\n",
"for k, v in dict1.items():\n",
" m_depart = v['unit']\n",
" if m_depart not in depart:\n",
" depart.append(m_depart)\n",
" \n",
"fi_path = '/data/pdf/ydyb/140/2023-03-29'\n",
"\n",
"\n",
"# 创建部门办公室 \n",
"m_path = 'file/140'\n",
"for pn in depart:\n",
" if not os.path.exists(m_path + '/' + pn):\n",
" os.mkdir(m_path + '/' + pn)\n",
"fl=os.listdir(fi_path)\n",
"for fn in fl:\n",
" if os.path.isfile(fi_path + '/' + fn):\n",
" ofn = int(fn.split('.')[0])\n",
" old.append(ofn) \n",
"old.sort()\n",
"for n in old: \n",
" o_name = f'{fi_path}/{n}.pdf'\n",
" unit = dict1[str(n)]['unit']\n",
" name = dict1[str(n)]['name']\n",
" n_name = f'{m_path}/{unit}/{str(n).rjust(5,\"0\")}-{name}.pdf'\n",
" #print(o_name,n_name)\n",
" if not os.path.exists(n_name):\n",
" shutil.copyfile(o_name,n_name)\n",
" print(n_name)"
]
},
{
"cell_type": "markdown",
"id": "a1e61c81-d63b-4089-8d79-f05b4a7a35e2",
"metadata": {},
"source": [
"## 生成体检报告情况表"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b1ff81f5-a8fa-4cea-9158-f80bccbf1494",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import os,sys,shutil\n",
"import openpyxl\n",
"import json\n",
"\n",
"filename = 'data/杨庙体测明确人员信息(20230328).json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"old = []\n",
"depart = []\n",
"for k, v in dict1.items():\n",
" m_depart = v['unit']\n",
" if m_depart not in depart:\n",
" depart.append(m_depart)\n",
" \n",
"fi_path = '/data/pdf/ydyb/140/2023-03-29'\n",
"fl=os.listdir(fi_path)\n",
"for fn in fl:\n",
" if os.path.isfile(fi_path + '/' + fn):\n",
" ofn = int(fn.split('.')[0])\n",
" old.append(ofn) \n",
"old.sort()\n",
"list1 = []\n",
"for n in old:\n",
" list2 =[]\n",
" unit = dict1[str(n)]['unit']\n",
" name = dict1[str(n)]['name']\n",
" list2 = [str(n).rjust(5,\"0\"),name,unit]\n",
" list1.append(list2)\n",
"\n",
"filename = 'data/杨庙体测报告明细表.xlsx'\n",
"wb = openpyxl.Workbook()\n",
"sheet = wb.active\n",
"title = ['体测编号','姓名','单位']\n",
"sheet.append(title)\n",
"for row in list1:\n",
" sheet.append(row)\n",
" \n",
"wb.save(filename) \n",
"print('ok!')"
]
},
{
"cell_type": "markdown",
"id": "791d2bce-3183-4405-b41a-4da8df6f5567",
"metadata": {},
"source": [
"## 生成脊柱问卷信息表"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "78109eb9-9c40-4289-b358-a68e64bb3361",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"import pymysql\n",
"import openpyxl\n",
"\n",
"filename = 'data/杨庙体测明确人员信息(20230328).json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"#print(dict1)\n",
"xm = ['qv1','qv2','qv3','qv4','qv5','qv6','qv7','qv8','qv9','qv10','qv11','qv12','qv13','qv14','qv15','qv16','qv17','qv18','qv19','qv20','qv21','qv22','qv23','qv24','qv25','qv26']\n",
"title = ['编号','姓名','性别']\n",
"for item in xm:\n",
" title.append(item)\n",
"db = pymysql.connect(host = \"localhost\",user = \"songyi\",password = \"yylzs\",database = \"ydyb\" )\n",
"cursor = db.cursor()\n",
"sql = 'SELECT a.phone ,a.name,a.code,a.data FROM Survey as a WHERE a.surveyId =\"merge1\"'\n",
"cursor.execute(sql)\n",
"results = cursor.fetchall()\n",
"list2 =[]\n",
"for result in results: \n",
" c=json.loads(result[3])\n",
" if result[2] is None:\n",
" phone = result[0]\n",
" for k,v in dict1.items():\n",
" if 'phone' in v.keys() and phone ==v['phone']:\n",
" list1 = []\n",
" code = k\n",
" name = v['name']\n",
" list1.append(code)\n",
" list1.append(name)\n",
" list1.append(v['sex'])\n",
" for item in xm:\n",
" if item in c.keys():\n",
" list1.append(c[item])\n",
" else:\n",
" list1.append('')\n",
" list2.append(list1)\n",
" else:\n",
" list1 = []\n",
" code = result[2]\n",
" name = result[1]\n",
" list1.append(code)\n",
" list1.append(name)\n",
" list1.append(v['sex'])\n",
" for item in xm:\n",
" if item in c.keys():\n",
" list1.append(c[item])\n",
" else:\n",
" list1.append('') \n",
" list2.append(list1)\n",
"filename = 'data/杨庙脊柱问卷明细表.xlsx'\n",
"wb = openpyxl.Workbook()\n",
"sheet = wb.active\n",
"sheet.append(title)\n",
"for row in list2:\n",
" sheet.append(row)\n",
" \n",
"wb.save(filename) \n",
"print('ok!') "
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8a641c17-f628-4f5f-94bb-de95e0c40286",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"import pymysql\n",
"\n",
"filename = 'data/杨庙体测明确人员信息(20230328).json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"#print(dict1)\n",
"xm = ['qv1','qv2','qv3','qv4','qv5','qv6','qv7','qv8','qv9','qv10','qv11','qv12','qv13','qv14','qv15','qv16','qv17','qv18','qv19','qv20','qv21','qv22','qv23','qv24','qv25','qv26']\n",
"db = pymysql.connect(host = \"localhost\",user = \"songyi\",password = \"yylzs\",database = \"ydyb\" )\n",
"cursor = db.cursor()\n",
"sql = 'SELECT a.phone ,a.name,a.code,a.data FROM Survey as a WHERE a.surveyId =\"merge1\"'\n",
"cursor.execute(sql)\n",
"results = cursor.fetchall()\n",
"for result in results:\n",
" c=json.loads(result[3])\n",
" print(c, type(c))"
]
},
{
"cell_type": "markdown",
"id": "beb22a32-ae9b-4602-bf1a-30b8e243ea1f",
"metadata": {},
"source": [
"## 查询中年组心理测评人员"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ce028da4-2cb1-4ee2-b7f3-6f3cfcda1851",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"import pymysql\n",
"\n",
"filename = 'data/杨庙体测明确人员信息(20230328).json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"#print(dict1)\n",
"xm = ['qv1','qv2','qv3','qv4','qv5','qv6','qv7','qv8','qv9','qv10','qv11','qv12','qv13','qv14','qv15','qv16','qv17','qv18','qv19','qv20','qv21','qv22','qv23','qv24','qv25','qv26']\n",
"db = pymysql.connect(host = \"localhost\",user = \"songyi\",password = \"yylzs\",database = \"ydyb\" )\n",
"cursor = db.cursor()\n",
"sql = 'SELECT a.phone ,a.name,a.code,a.data FROM Survey as a WHERE a.surveyId =\"merge1\"'\n",
"cursor.execute(sql)\n",
"results = cursor.fetchall()\n",
"list2 =[]\n",
"for result in results:\n",
" c=json.loads(result[3])\n",
" if 'q1M' in c.keys():\n",
" if result[2] is None:\n",
" phone = result[0]\n",
" for k,v in dict1.items():\n",
" if 'phone' in v.keys() and phone ==v['phone']:\n",
" list1 = []\n",
" code = k\n",
" name = v['name']\n",
" list1.append(code)\n",
" list1.append(name)\n",
" list1.append(v['sex'])\n",
" list1.append(v['birth'])\n",
" list1.append(v['unit'])\n",
" list2.append(list1)\n",
" else:\n",
" list1 = []\n",
" code = result[2]\n",
" name = result[1]\n",
" list1.append(code)\n",
" list1.append(name)\n",
" list1.append(dict1[code]['sex'])\n",
" list1.append(dict1[code]['birth'])\n",
" list1.append(dict1[code]['unit'])\n",
" \n",
" list2.append(list1)\n",
"filename = 'data/杨庙心理问卷成年组人员明细表.xlsx'\n",
"wb = openpyxl.Workbook()\n",
"sheet = wb.active\n",
"#sheet.append(title)\n",
"for row in list2:\n",
" sheet.append(row)\n",
" \n",
"wb.save(filename) \n",
"print('ok!') "
]
},
{
"cell_type": "markdown",
"id": "be6e17d8-7687-422c-994d-35afd014aee6",
"metadata": {},
"source": [
"## 成年人心理问卷体测报告更名按部门分组"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e24a046e-77cd-4df2-af89-733d718ce543",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import os,sys,shutil\n",
"import json\n",
"import math\n",
"\n",
"filename = 'data/杨庙体测明确人员信息(20230328).json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"old = []\n",
"depart = []\n",
"wb = openpyxl.load_workbook('data/杨庙心理问卷成年组人员明细表.xlsx')\n",
"sheet = wb.active\n",
"# sheets = wb.sheetnames\n",
"\n",
"list_bh = []\n",
"\n",
"for n in range(1,sheet.max_row+1):\n",
" list_bh.append(int(sheet.cell(n, 1).value)) \n",
" m_depart = sheet.cell(n, 5).value\n",
" if m_depart not in depart:\n",
" depart.append(m_depart)\n",
" \n",
"fi_path = '/data/pdf/ydyb/140/2023-04-01'\n",
"\n",
"\n",
"# 创建部门办公室 \n",
"m_path = 'file/140wenjuan'\n",
"for pn in depart:\n",
" if not os.path.exists(m_path + '/' + pn):\n",
" os.mkdir(m_path + '/' + pn)\n",
"fl=os.listdir(fi_path)\n",
"for fn in fl:\n",
" if os.path.isfile(fi_path + '/' + fn):\n",
" ofn = int(fn.split('.')[0])\n",
" if ofn in list_bh:\n",
" old.append(ofn) \n",
"old.sort()\n",
"for n in old: \n",
" o_name = f'{fi_path}/{n}.pdf'\n",
" unit = dict1[str(n)]['unit']\n",
" name = dict1[str(n)]['name']\n",
" n_name = f'{m_path}/{unit}/{str(n).rjust(5,\"0\")}-{name}.pdf'\n",
" #print(o_name,n_name)\n",
" if not os.path.exists(n_name):\n",
" shutil.copyfile(o_name,n_name)\n",
" print(n_name)"
]
},
{
"cell_type": "markdown",
"id": "387b5c35-886a-41dc-b787-f67154efa758",
"metadata": {},
"source": [
"# 杨庙社区处方分组"
]
},
{
"cell_type": "markdown",
"id": "b8dafd4a-2bd4-4626-b8a8-45ae9cbe7177",
"metadata": {},
"source": [
"## 人员分组"
]
},
{
"cell_type": "markdown",
"id": "bc731911-3390-4c5e-bccf-fc7c367e1172",
"metadata": {},
"source": [
"### 高血压人员"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "5d24953d-4ded-4e1c-911c-a0baab222399",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import os,sys,shutil\n",
"import json\n",
"import math\n",
"\n",
"filename = 'data/杨庙体测明确人员信息(20230328).json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"\n",
"wb = openpyxl.load_workbook('data/杨庙运动风险筛查统计表.xlsx')\n",
"sheet = wb.active\n",
"# sheets = wb.sheetnames\n",
"\n",
"list_gxy = []\n",
"\n",
"for n in range(2,sheet.max_row+1):\n",
" code = sheet.cell(n, 1).value\n",
" if sheet.cell(n, 3).value is not None:\n",
" code = sheet.cell(n, 1).value\n",
" gxy = sheet.cell(n, 3).value\n",
" if str(code) in dict1.keys() and int(gxy) ==1:\n",
" list_gxy.append(str(code))\n",
"print(list_gxy)\n"
]
},
{
"cell_type": "markdown",
"id": "a1f4ee17-4a47-4b46-a139-92e25c363a82",
"metadata": {
"execution": {
"iopub.execute_input": "2023-04-01T09:22:21.145580Z",
"iopub.status.busy": "2023-04-01T09:22:21.145166Z",
"iopub.status.idle": "2023-04-01T09:22:21.150015Z",
"shell.execute_reply": "2023-04-01T09:22:21.148725Z",
"shell.execute_reply.started": "2023-04-01T09:22:21.145552Z"
},
"tags": []
},
"source": [
"### 失眠人员"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "efa10ba4-0a27-41e6-beb7-27de8f3109a1",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"import pymysql\n",
"\n",
"filename = 'data/杨庙体测明确人员信息(20230328).json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"#print(dict1)\n",
"\n",
"db = pymysql.connect(host = \"localhost\",user = \"songyi\",password = \"yylzs\",database = \"ydyb\" )\n",
"cursor = db.cursor()\n",
"sql = 'SELECT a.phone ,a.name,a.code,a.data FROM Survey as a WHERE a.surveyId =\"merge1\"'\n",
"cursor.execute(sql)\n",
"results = cursor.fetchall()\n",
"list_sm =[]\n",
"for result in results:\n",
" c=json.loads(result[3])\n",
" if 'qv7' in c.keys() and c['qv7'] ==1:\n",
" if result[2] is None:\n",
" phone = result[0]\n",
" for k,v in dict1.items():\n",
" if 'phone' in v.keys() and phone ==v['phone']:\n",
" list_sm.append(k) \n",
" else:\n",
" list_sm.append(result[2])\n",
"print(list_sm)"
]
},
{
"cell_type": "markdown",
"id": "0830d7d4-958d-4166-a439-9a6bfca2cf18",
"metadata": {},
"source": [
"### 脊柱调理人员"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e5bd9e8c-00f5-48b7-8cc7-810316e0423b",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import json\n",
"import pymysql\n",
"\n",
"filename = 'data/杨庙体测明确人员信息(20230328).json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"#print(dict1)\n",
"\n",
"db = pymysql.connect(host = \"localhost\",user = \"songyi\",password = \"yylzs\",database = \"ydyb\" )\n",
"cursor = db.cursor()\n",
"sql = 'SELECT a.phone ,a.name,a.code,a.data FROM Survey as a WHERE a.surveyId =\"merge1\"'\n",
"cursor.execute(sql)\n",
"results = cursor.fetchall()\n",
"list_jz =[]\n",
"for result in results:\n",
" c=json.loads(result[3])\n",
" if ('qv1' in c.keys() and c['qv1'] ==1) or ('qv18' in c.keys() and c['qv18'] ==1):\n",
" if result[2] is None:\n",
" phone = result[0]\n",
" for k,v in dict1.items():\n",
" if 'phone' in v.keys() and phone ==v['phone']:\n",
" list_jz.append(k) \n",
" else:\n",
" list_jz.append(result[2])\n",
"print(list_jz)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "4c02f3b9-6677-4114-9fd9-f9d8bccaefe0",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"dict2 = {}\n",
"dict2.setdefault('高血压',[])\n",
"dict2['高血压'] = list_gxy\n",
"dict2.setdefault('失眠',[])\n",
"for item in list_sm:\n",
" if item not in list_gxy:\n",
" dict2['失眠'].append(item)\n",
"\n",
"dict2.setdefault('脊柱调理',[])\n",
"for item in list_jz:\n",
" if item not in list_gxy and item not in list_sm:\n",
" dict2['脊柱调理'].append(item)\n",
"\n",
"list_other = []\n",
"for item in dict1.keys():\n",
" if item not in list_gxy and item not in list_sm and item not in list_jz:\n",
" list_other.append(item)\n",
"dict2['整体调理'] = list_other\n",
"print(dict2)\n",
"list1 = []\n",
"for k, v in dict2.items():\n",
" for item in v:\n",
" list2 = [k,item,dict1[item]['name'],dict1[item]['sex'],dict1[item]['birth'],dict1[item]['unit']]\n",
" list1.append(list2)\n",
"filename = 'data/杨庙社区分组情况表.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) \n",
"print('ok!') \n",
" "
]
},
{
"cell_type": "markdown",
"id": "c7963b8e-91f4-4d26-81f1-93c1b3822efc",
"metadata": {},
"source": [
"# 杨庙社数据维护"
]
},
{
"cell_type": "markdown",
"id": "050db697-d8e1-4799-8f68-c8975a7ea4f2",
"metadata": {},
"source": [
"## 导入分组表"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "09b893e1-0012-4610-aac0-9361685bdf37",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import psycopg2\n",
"from psycopg2 import extras as ex\n",
"import openpyxl\n",
"\n",
"wb = openpyxl.load_workbook('data/杨庙社区分组情况表.xlsx')\n",
"sheet = wb.active\n",
"data_list = []\n",
"for n in range(2, sheet.max_row+1):\n",
" code = int(sheet.cell(n, 3).value)\n",
" name = sheet.cell(n, 4).value\n",
" birth = str(sheet.cell(n, 5).value).split(' ')[0]\n",
" unit = sheet.cell(n, 6).value \n",
" category = sheet.cell(n, 2).value \n",
" if sheet.cell(n, 7).value is not None:\n",
" phone = str(sheet.cell(n, 7).value)\n",
" else:\n",
" phone = ''\n",
" xb = int(sheet.cell(n, 8).value)\n",
" if xb ==1:\n",
" sex = '男'\n",
" else:\n",
" sex = '女'\n",
" data_list.append((code,name,sex,birth,category,unit,phone))\n",
"#print(data_list)\n",
"\n",
"conn = psycopg2.connect(database=\"mycrm\", user=\"postgres\", password=\"songyi\", host=\"localhost\", port=\"5432\")\n",
"cursor = conn.cursor()\n",
"sql = 'insert into yangmiao_fenzu (code,name,sex,birth,category,unit,phone) values %s'\n",
"ex.execute_values(cursor, sql, data_list, page_size=10000)\n",
"conn.commit()\n",
"cursor.close()\n",
"conn.close()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "87e18625-a371-4a3c-94d2-69c2a9ac6c48",
"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.10.12"
}
},
"nbformat": 4,
"nbformat_minor": 5
}