{ "cells": [ { "cell_type": "markdown", "id": "bfa33ac5-8fe9-4845-8b1d-56c509afcb83", "metadata": { "jp-MarkdownHeadingCollapsed": true, "tags": [] }, "source": [ "## 体质检测管理" ] }, { "cell_type": "markdown", "id": "78dc4774-e1b1-40d8-8783-12ada9db45be", "metadata": {}, "source": [ "### 体测人员导入" ] }, { "cell_type": "code", "execution_count": null, "id": "d2ea710d-34be-47ed-afd8-343137ee9ac5", "metadata": { "tags": [] }, "outputs": [], "source": [ "import openpyxl\n", "import json\n", "\n", "\n", "wb = openpyxl.load_workbook('data/安庆石化2022.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, 2).value)\n", " person.setdefault(code, {})\n", " dict1 = {}\n", " dict1['name'] = sheet.cell(n, 3).value\n", " dict1['sex'] = sheet.cell(n, 4).value\n", " dict1['unit'] = sheet.cell(n, 1).value\n", " dict1['id_num'] = sheet.cell(n,6).value\n", " person[code] = dict1\n", "filename = 'data/安庆炼化人员名单2022.json'\n", "with open(filename, 'w') as fl:\n", " json.dump(person, fl, ensure_ascii=False)\n", "print('ok')" ] }, { "cell_type": "markdown", "id": "eefb520d-0aee-4f92-b6a9-af9efaa88049", "metadata": {}, "source": [ "### 导出测试成绩" ] }, { "cell_type": "code", "execution_count": null, "id": "c1e1b40c-d73a-4e2e-8c22-4d3ae73ede6f", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "import openpyxl\n", "\n", "items = ['身高','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n", "title = ['编号','姓名','年龄','身高','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n", "filename = 'data/result_2209.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl)\n", "\n", "list1 = []\n", "for k, v in dict1.items():\n", " list2 = []\n", " list2.append(k)\n", " list2.append(v['name'])\n", " if 'id' in v.keys(): \n", " age = v['id'][6:10]+'-'+v['id'][10:12]+'-'+v['id'][12:14]\n", " else:\n", " age = v['birth']\n", " list2.append(age)\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/2022年安庆得分情况表.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": "code", "execution_count": null, "id": "a3f0d4b9-78c6-4fd2-baf7-a05962e7904c", "metadata": {}, "outputs": [], "source": [ "import json\n", "import openpyxl\n", "\n", "items = ['身高','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n", "title = ['编号','姓名','身高','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n", "filename = 'data/result_2209.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl)\n", "\n", "list1 = []\n", "for k, v in dict1.items():\n", " list2 = []\n", " list2.append(k)\n", " list2.append(v['name'])\n", " \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/2022年安庆得分情况表.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": "e5aa1bf4-c68c-4843-a9fb-c3fe48ff1f39", "metadata": {}, "source": [ "### 体测数据检查" ] }, { "cell_type": "markdown", "id": "27b8e925-ec99-48d4-9f89-97ce388c1b3b", "metadata": {}, "source": [ "#### 数据项目校验" ] }, { "cell_type": "code", "execution_count": null, "id": "f93c3eed-ce79-48a7-b189-3ef694f60367", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "import operator\n", "\n", "filename = 'data/安庆炼化人员名单2022.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl)\n", "\n", "list1 = dict1.keys()\n", "m_items = ['身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','单脚站立','选择反应时','台阶指数']\n", "f_items = ['身高','体重','肺活量','握力','坐位体前屈','纵跳','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n", "\n", "filename = 'data/result_2209.json'\n", "dict3 = {}\n", "with open(filename,'r') as fl:\n", " dict2 = json.load(fl)\n", "\n", "for k, v in dict1.items():\n", " dict3[k] = v['sex']\n", "\n", "for k, v in dict2.items():\n", " list1 = []\n", " list1 = list(v.keys()) \n", " if dict3[k] == '男' and '一分钟仰卧起坐' in list1:\n", " print(k,v['name'],'一分钟仰卧起坐 不应出现')\n", " if dict3[k] == '女' and '俯卧撑' in list1:\n", " print(k,v['name'],'俯卧撑 不应出现')\n", " \n", " " ] }, { "cell_type": "markdown", "id": "bd58fc48-ffe9-4838-be19-5da1dc632049", "metadata": {}, "source": [ "#### 当日测试人员校验" ] }, { "cell_type": "code", "execution_count": null, "id": "a00ec014-a4e5-4f8f-9cd5-7b3bd736ad85", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\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", " \n", "filename = 'data/136_220927.csv'\n", "list1 = []\n", "re_ta = {}\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", "for result in list1:\n", " user = str(result[4])\n", " m_item = str(result[0]) \n", " re_ta.setdefault(user,{}) \n", " re_ta[user]['name'] = str(result[6])\n", " re_ta[user]['unit'] = str(result[5])\n", " item_name = item[m_item]['name']\n", " re_ta[user].setdefault(item_name,{}) \n", " score = int(result[1])/item[m_item]['divisor'] \n", " re_ta[user][item_name]['成绩'] = f'{score} {item[m_item][\"unit\"]}'\n", " re_ta[user][item_name]['得分'] =result[2]\n", "#print(re_ta)\n", "\n", "filename = 'data/result_2209.json'\n", "with open(filename,'r') as fl:\n", " dict2 = json.load(fl)\n", "\n", "for k, v in re_ta.items():\n", " if k in dict2.keys():\n", " print(k,v['name'],'该人员已经测试!')\n", "\n" ] }, { "cell_type": "markdown", "id": "cf27c2e7-af3c-4765-af01-9326d7ebac6e", "metadata": {}, "source": [ "### 新增人员" ] }, { "cell_type": "code", "execution_count": null, "id": "80879f90-2939-44b8-8bc6-107c38c9df79", "metadata": { "tags": [] }, "outputs": [], "source": [ "import openpyxl\n", "import json\n", "\n", "\n", "wb = openpyxl.load_workbook('data/安庆新增人员220926.xlsx')\n", "sheet = wb.active\n", "# sheets = wb.sheetnames\n", "i = 0\n", "person = {}\n", "dict2 = {}\n", "for n in range(2, sheet.max_row+1): \n", " if sheet.cell(n,2).value is None:\n", " break\n", " else: \n", " code = int(sheet.cell(n, 2).value)\n", " person.setdefault(code, {})\n", " dict1 = {}\n", " xb = str(sheet.cell(n, 4).value)\n", " if xb == '1':\n", " sex = '男'\n", " elif xb =='2':\n", " sex = '女'\n", " dict1['name'] = sheet.cell(n, 3).value\n", " dict1['sex'] = sex\n", " dict1['unit'] = sheet.cell(n, 1).value\n", " dict1['id_num'] = sheet.cell(n,6).value\n", " person[code] = dict1\n", "filename = 'data/安庆炼化人员名单2022.json'\n", "with open(filename, 'r') as fl:\n", " dict2 = json.load(fl)\n", "for k, v in person.items():\n", " if k in dict2.keys():\n", " print('该编号人员已存在!')\n", " else:\n", " dict2[k] = v\n", " i +=1\n", "if i >1:\n", " with open(filename, 'w') as fl:\n", " json.dump(dict2, fl, ensure_ascii=False)\n", " print('ok')\n", "else:\n", " print('无新增人员!')" ] }, { "cell_type": "markdown", "id": "5178b8fc-408a-4d95-915c-2164f2596bc3", "metadata": {}, "source": [ "### 修改人员部门" ] }, { "cell_type": "code", "execution_count": null, "id": "6e19f626-9732-4426-9124-b6f4ef5542bc", "metadata": { "tags": [] }, "outputs": [], "source": [ "import openpyxl\n", "import json\n", "\n", "\n", "wb = openpyxl.load_workbook('data/2022年安庆石化体测数据调整情况0921.xlsx')\n", "sheet = wb.active\n", "# sheets = wb.sheetnames\n", "data1 =list(sheet.values)\n", "del data1[:2]\n", "\n", "filename = 'data/安庆炼化人员名单2022.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl)\n", "\n", "for item in data1:\n", " if str(item[0]) in dict1.keys():\n", " dict1[str(item[0])]['unit'] = item[4]\n", " print(item[0],item[1],'已修改')\n", " else:\n", " print(item[0],item[1],'不存在!')\n", "with open(filename, 'w') as fl:\n", " json.dump(dict1, fl, ensure_ascii=False)\n", "print('ok') " ] }, { "cell_type": "markdown", "id": "7377e5d1-815d-4eb8-9bfa-9ca3a210a6e0", "metadata": {}, "source": [ "### 获取人员测试成绩" ] }, { "cell_type": "code", "execution_count": null, "id": "6e738a0d-ffbf-4a73-9021-d024609a6eb4", "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", "#SQL语句为:\n", "# SELECT a.item_id,a.performance,a.score,a.date AS DATE1,a.avatar_id,b.unit,b.name FROM places_result AS a,_zgshhgxs AS b WHERE a.place_id=135 AND a.avatar_id=b.id AND a.avatar_id < 4999\n", "\n", "re_ta = {}\n", "dict1 = {}\n", "list1 = []\n", "#print(\"\\n运动项目信息:\")\n", "filename = 'data/136_2209.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[4])\n", " m_item = str(result[0]) \n", " re_ta.setdefault(user,{}) \n", " re_ta[user]['name'] = str(result[6])\n", " re_ta[user]['unit'] = str(result[5])\n", " item_name = item[m_item]['name']\n", " re_ta[user].setdefault(item_name,{}) \n", " score = int(result[1])/item[m_item]['divisor'] \n", " re_ta[user][item_name]['成绩'] = f'{score} {item[m_item][\"unit\"]}'\n", " re_ta[user][item_name]['得分'] =result[2]\n", "filename = 'data/result_2209.json'\n", "with open(filename,'w') as fl:\n", " json.dump(re_ta, fl) \n", "print('ok')" ] }, { "cell_type": "markdown", "id": "540b0225-8651-4b37-8bc8-3899efbd71fb", "metadata": {}, "source": [ "### 比照往年年度人员信息" ] }, { "cell_type": "code", "execution_count": null, "id": "bed95c43-e26c-41d3-8b1c-516818b25bbf", "metadata": {}, "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/安庆炼化人员名单2022.json'\n", "with open(filename,'r') as fl:\n", " dict3 = json.load(fl)\n", "\n", "dict2 = {}\n", "for k, v in dict3.items():\n", " dict2[v['id_num']] = [v['name'],k,v['unit'],v['sex']]\n", "\n", "dict3 = {}\n", "for k, v in dict1.items():\n", " if 'id' in v.keys():\n", " if v['id'] in dict2.keys():\n", " v['old_code'] = int(k)\n", " code = int(dict2[v['id']][1])\n", " dict3.setdefault(code, {})\n", " dict3[code] = v \n", "filename = 'data/安庆2021.json'\n", "with open(filename,'w') as fl:\n", " json.dump(dict3, fl,ensure_ascii=False) \n", "print('ok')" ] }, { "cell_type": "code", "execution_count": null, "id": "46ccfb31-7cd8-4cc4-8d70-18a14f7943e8", "metadata": {}, "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", "dict2 = {}\n", "filename = 'data/安庆石化2022.xlsx'\n", "wb = openpyxl.load_workbook(filename)\n", "sheet = wb.active\n", "data1 =list(sheet.values)\n", "del data1[0]\n", "for item in data1:\n", " id = item[5]\n", " dict2[id] = [item[2],item[1],item[0],item[3],item[4]]\n", "#print(dict2)\n", "dict3 = {}\n", "for k, v in dict1.items():\n", " if 'id' in v.keys():\n", " if v['id'] in dict2.keys():\n", " v['old_code'] = int(k)\n", " code = int(dict2[v['id']][1])\n", " dict3.setdefault(code, {})\n", " dict3[code] = v \n", "filename = 'data/安庆2021.json'\n", "with open(filename,'w') as fl:\n", " json.dump(dict3, fl,ensure_ascii=False) \n", "print('ok')" ] }, { "cell_type": "markdown", "id": "a9bdeab3-5ddf-4f80-90fb-9301a2ff064a", "metadata": {}, "source": [ "### 比照人员两年成绩" ] }, { "cell_type": "markdown", "id": "2b63fff4-3b1f-4a4f-b32a-4508736b88a6", "metadata": {}, "source": [ "#### 比照两年全部成绩" ] }, { "cell_type": "code", "execution_count": null, "id": "351aae7c-a3aa-4c22-99b9-701cf2395a85", "metadata": {}, "outputs": [], "source": [ "import json\n", "import openpyxl\n", "\n", "filename = 'data/安庆2021.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl)\n", "\n", "list1 = dict1.keys()\n", "items = ['身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n", "title = ['编号','姓名','部门','身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数','身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n", "filename = 'data/result_2209.json'\n", "with open(filename,'r') as fl:\n", " dict2 = json.load(fl)\n", "list4 = []\n", "for k, v in dict2.items():\n", " if k in list1:\n", " list2 = [k,v['name'],v['unit']]\n", " list3 = []\n", " for item in items:\n", " # 获取2022年成绩\n", " if item in v.keys():\n", " list2.append(v[item]['成绩']) \n", " \n", " else:\n", " list2.append('')\n", " # 获取2021年成绩\n", " if item in dict1[k].keys():\n", " list3.append(dict1[k][item]['成绩']) \n", " else:\n", " list3.append('')\n", " for cj in list3:\n", " list2.append(cj) \n", " list4.append(list2)\n", "filename = 'data/安庆石化成绩对照220921.xlsx'\n", "wb = openpyxl.Workbook()\n", "sheet = wb.active\n", "sheet.append(title)\n", "for row in list4:\n", " sheet.append(row)\n", " \n", "wb.save(filename) " ] }, { "cell_type": "markdown", "id": "d6d6952f-2944-4cb4-8403-d83d5f0b4a9b", "metadata": {}, "source": [ "#### 比照两年单项成绩" ] }, { "cell_type": "code", "execution_count": null, "id": "28199ab8-ea9d-4012-ba75-9437fcdd91aa", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "import openpyxl\n", "\n", "filename = 'data/安庆2021.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl)\n", "\n", "list1 = dict1.keys()\n", "items = ['身高','体重']\n", "title = ['编号','姓名','部门','22年身高','22年体重','21年身高','21年体重','身高差','体重差']\n", "filename = 'data/result_2209.json'\n", "with open(filename,'r') as fl:\n", " dict2 = json.load(fl)\n", "list4 = []\n", "for k, v in dict2.items():\n", " if k in list1:\n", " list2 = [k,v['name'],v['unit']]\n", " list3 = []\n", " for item in items:\n", " # 获取2022年成绩\n", " if item in v.keys(): \n", " list2.append(v[item]['成绩'].split()[0]) \n", " else:\n", " list2.append('')\n", " # 获取2021年成绩\n", " if item in dict1[k].keys():\n", " list3.append(dict1[k][item]['成绩']) \n", " else:\n", " list3.append('')\n", " for cj in list3:\n", " if cj != '':\n", " list2.append(cj.split()[0]) \n", " \n", " list4.append(list2)\n", "filename = 'data/安庆石化成绩对照220927.xlsx'\n", "wb = openpyxl.Workbook()\n", "sheet = wb.active\n", "sheet.append(title)\n", "for row in list4:\n", " sheet.append(row)\n", " \n", "wb.save(filename) " ] }, { "cell_type": "markdown", "id": "b0c3d2bd-85ad-4109-be26-81f0b7b374f0", "metadata": {}, "source": [ "### 调整人员部门" ] }, { "cell_type": "code", "execution_count": null, "id": "5e05ac13-4ed7-4b36-bd76-77283feecfbb", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "import openpyxl\n", "\n", "\n", "filename = '../data/安庆石化部门调整.xlsx'\n", "wb = openpyxl.load_workbook(filename)\n", "sheet = wb.active\n", "data1 =list(sheet.values)\n", "del data1[:2]\n", "filename = '../data/安庆炼化人员名单2022.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl)\n", "i = 1\n", "for item in data1:\n", " code = str(item[0])\n", " name = item[1]\n", " unit = item[4]\n", " if dict1[code]['name'] == name:\n", " #print(i,name,unit)\n", " dict1[code]['unit'] = unit\n", "with open(filename,'w') as fl:\n", " json.dump(dict1, fl,ensure_ascii=False) \n", "print('ok') \n", " " ] }, { "cell_type": "markdown", "id": "7ec85f17-5dbb-4929-963e-724f0336cc9f", "metadata": {}, "source": [ "### 删除人员" ] }, { "cell_type": "code", "execution_count": null, "id": "bca57e0d-918b-49d2-ac01-6ad17f0c29a0", "metadata": {}, "outputs": [], "source": [ "import json\n", "\n", "filename = '../data/安庆炼化人员名单2022.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl)\n", "list1 = [4129,4165]\n", "for item in list1:\n", " if str(item) in dict1.keys():\n", " del dict1[str(item)] \n", " print(item,'已删除!')\n", "with open(filename,'w') as fl:\n", " json.dump(dict1, fl,ensure_ascii=False) \n", "print('ok') " ] }, { "cell_type": "markdown", "id": "16b2e608-23ea-493d-a8dc-7f0dc1344913", "metadata": {}, "source": [ "### 体测报告分组" ] }, { "cell_type": "code", "execution_count": null, "id": "14ffd855-4af6-4329-9925-b28d3f0028ef", "metadata": { "tags": [] }, "outputs": [], "source": [ "import os,sys,shutil\n", "import json\n", "import math\n", "\n", "fi_xls = '../file/安庆石化2022.xlsx'\n", "fi_name = {}\n", "fi_path = '../file/220930'\n", "old = []\n", "new = []\n", "dict1 = {}\n", "depart = set()\n", "\n", "filename = '../data/安庆炼化人员名单2022.json'\n", "with open(filename,'r') as fl:\n", " dict2 = json.load(fl)\n", "for k, v in dict2.items():\n", " depart.add(v['unit']) \n", " dict1[int(k)] = [v['name'],v['unit']]\n", " \n", "# 创建部门办公室 \n", "\n", "\n", "m_path = '../file/220930/new'\n", "for pn in depart:\n", " if not os.path.exists(m_path + '/' + pn):\n", " os.mkdir(m_path + '/' + pn)\n", "#print(dict1)\n", "\n", "\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", " #print(fn)\n", "old.sort()\n", " #print(str(nfn)+'.pdf')\n", "\n", "for n in old:\n", " \n", " o_name = f'{fi_path}/{n}.pdf'\n", " n_name = f'{fi_path}/new/{dict1[n][1]}/{str(n).rjust(5,\"0\")}-{dict1[n][0]}.pdf'\n", " if not os.path.exists(n_name):\n", " shutil.copyfile(o_name,n_name)\n", " print(n_name)" ] }, { "cell_type": "markdown", "id": "f623d291-8d66-4246-a34f-a051115596ef", "metadata": { "jp-MarkdownHeadingCollapsed": true, "tags": [] }, "source": [ "## 体检报告数据管理" ] }, { "cell_type": "markdown", "id": "38261495-3aa4-4572-a6e1-4e300c29be66", "metadata": {}, "source": [ "### 从excel表导入数据" ] }, { "cell_type": "code", "execution_count": null, "id": "31a47b5f-f48e-4d6d-af8f-dd5383b5c5dd", "metadata": { "tags": [] }, "outputs": [], "source": [ "import os\n", "import openpyxl\n", "import json\n", "\n", "fi_path = 'data/安庆/'\n", "sheet_list = ['一览表', 'Ⅱ级高血压、Ⅲ级高血压', '心电图异常']\n", "dict1 = {}\n", "fl=glob.glob(f'{fi_path}*.xlsx')\n", "for fn in fl:\n", " print(fn) \n", " wb = openpyxl.load_workbook(fn)\n", " wb_name = os.path.basename(fn).split('.')[0]\n", " dict1.setdefault(wb_name,{})\n", " for sheet in wb.sheetnames:\n", " ws = wb[sheet]\n", " if sheet == '一览表':\n", " dict1[wb_name].setdefault(sheet,{})\n", " for n in range(2,ws.max_row+1):\n", " dict2 = {}\n", " m_name = ws.cell(n,4).value\n", " dict1[wb_name][sheet].setdefault(m_name,{})\n", " dict2['部门'] = ws.cell(n,2).value\n", " dict2['工号'] = ws.cell(n,3).value\n", " dict2['性别'] = ws.cell(n,5).value\n", " dict2['年龄'] = ws.cell(n,6).value\n", " dict2['接害工龄'] = ws.cell(n,7).value\n", " dict2['工种'] = ws.cell(n,8).value\n", " dict2['危害因素'] = ws.cell(n,9).value\n", " dict2['在岗类型'] = ws.cell(n,10).value\n", " dict2['体检结果'] = ws.cell(n,11).value\n", " dict2['检查结果'] = ws.cell(n,12).value\n", " dict1[wb_name][sheet][m_name] = dict2\n", " \n", " if sheet == 'Ⅱ级高血压、Ⅲ级高血压':\n", " dict1[wb_name].setdefault(sheet,{})\n", " for n in range(2,ws.max_row+1):\n", " dict2 = {}\n", " m_name = ws.cell(n,4).value\n", " dict1[wb_name][sheet].setdefault(m_name,{})\n", " dict2['工号'] = ws.cell(n,3).value\n", " dict2['性别'] = ws.cell(n,5).value\n", " dict2['年龄'] = ws.cell(n,6).value\n", " dict2['接害工龄'] = ws.cell(n,7).value \n", " dict2['总结'] = ws.cell(n,11).value\n", " dict2['诊断'] = ws.cell(n,12).value\n", " dict1[wb_name][sheet][m_name] = dict2\n", " \n", " if sheet == '心电图异常':\n", " dict1[wb_name].setdefault(sheet,{})\n", " for n in range(2,ws.max_row+1):\n", " dict2 = {}\n", " m_name = ws.cell(n,4).value\n", " dict1[wb_name][sheet].setdefault(m_name,{})\n", " dict2['工号'] = ws.cell(n,3).value\n", " dict2['性别'] = ws.cell(n,5).value\n", " dict2['年龄'] = ws.cell(n,6).value\n", " dict2['接害工龄'] = ws.cell(n,7).value \n", " dict2['总结'] = ws.cell(n,11).value\n", " dict2['诊断'] = ws.cell(n,12).value\n", " dict2['备注'] = ws.cell(n,14).value\n", " dict1[wb_name][sheet][m_name] = dict2\n", " \n", " wb.close()\n", "with open('data/安庆体检报告.json','w') as fl:\n", " json.dump(dict1,fl) \n" ] }, { "cell_type": "markdown", "id": "9a564e48-95e3-4255-b70e-e845c59edfaf", "metadata": {}, "source": [ "### 体检结果分解" ] }, { "cell_type": "code", "execution_count": null, "id": "56a0804b-8626-4c52-8ff4-29d4322b1bdc", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "import re\n", "with open('data/安庆体检报告.json','r') as fl:\n", " dict1 = json.load(fl) \n", "\n", "mo1 = r'[一二三四五六七八九十]、'\n", "list_ks = set()\n", "#dict2 = dict1['丙烯腈装置']['一览表']\n", "#print(dict2)\n", "for k, v in dict1.items():\n", " print(k)\n", " for k1, v1 in v['一览表'].items():\n", " if v1['体检结果']:\n", " ss = v1['体检结果']\n", " \n", " list1 = re.split(mo1,ss)\n", " if '' in list1:\n", " list1.remove('')\n", " for item in list1:\n", " list_ks.add(item.split('_x000D_')[0])\n", " \n", "print(list_ks)\n", " \n" ] }, { "cell_type": "code", "execution_count": null, "id": "54515a61-6711-44a8-9959-8a25d21ae8a6", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "import re\n", "with open('data/安庆体检报告.json','r') as fl:\n", " dict1 = json.load(fl) \n", "\n", "mo1 = r'[一二三四五六七八九十]、'\n", "list_ks = set()\n", "dict2 = dict1['丙烯腈装置']['一览表']\n", "dict3 = {}\n", "i = 1\n", "#print(dict2)\n", "for k, v in dict2.items():\n", " dict3.setdefault(i,{})\n", " ss = v['体检结果']\n", " list1 = re.split(mo1,ss)\n", " list1.remove('')\n", " for item in list1:\n", " list2 = item.split('_x000D_')\n", " if '' in list2:\n", " list2.remove('')\n", " list_ks.add(list2[0])\n", " dict3[i][item.split('_x000D_')[0]] =list2[1:]\n", " i+=1\n", "print(list_ks)\n", "#print(dict3)\n", "for k, v in dict3.items():\n", " for k1, v1 in v.items():\n", " if k1 =='检验科':\n", " for item in v1:\n", " if '【' in item:\n", " v1.remove(item)\n", " print(v1)\n", " if k1 =='彩超检查室':\n", " for item in v1:\n", " if '【' in item:\n", " v1.remove(item)\n", " #print(v1)\n", " if k1 =='心电图检查室':\n", " for item in v1:\n", " if '【' in item:\n", " v1.remove(item)\n", " #print(v1)\n", " if k1 =='肺功能检查室':\n", " for item in v1:\n", " if '【' in item:\n", " v1.remove(item)\n", " #print(v1)\n", " if k1 =='碳14尿素':\n", " for item in v1:\n", " if '【' in item:\n", " v1.remove(item)\n", " #print(v1)" ] }, { "cell_type": "markdown", "id": "5968c4b2-d866-4d91-b3e5-f0636420ba9a", "metadata": {}, "source": [ "### 病症统计(Ⅱ级高血压、Ⅲ级高血压、心电图异常)" ] }, { "cell_type": "code", "execution_count": null, "id": "96d9656e-7f63-4981-8272-21e1ef051287", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "import re\n", "with open('data/安庆体检报告.json','r') as fl:\n", " dict1 = json.load(fl) \n", "dict3 = {}\n", "for k, v in dict1.items():\n", " bm = k\n", " dict2 = {}\n", " if 'Ⅱ级高血压、Ⅲ级高血压' in v.keys():\n", " for k1, v1 in v['Ⅱ级高血压、Ⅲ级高血压'].items():\n", " mbz = 'Ⅱ级高血压、Ⅲ级高血压'\n", " dict2.setdefault(k1,{})\n", " dict2[k1]['工号'] = v1['工号']\n", " dict2[k1]['性别'] = v1['性别']\n", " dict2[k1]['年龄'] = v1['年龄']\n", " dict2[k1]['接害工龄'] = v1['接害工龄']\n", " dict2[k1].setdefault(mbz,{})\n", " dict2[k1][mbz]['总结'] = v1['总结']\n", " dict2[k1][mbz]['诊断'] = v1['诊断']\n", " if '心电图异常' in v.keys():\n", " for k1, v1 in v['心电图异常'].items():\n", " mbz = '心电图异常'\n", " dict2.setdefault(k1,{})\n", " dict2[k1]['工号'] = v1['工号']\n", " dict2[k1]['性别'] = v1['性别']\n", " dict2[k1]['年龄'] = v1['年龄']\n", " dict2[k1]['接害工龄'] = v1['接害工龄']\n", " dict2[k1].setdefault(mbz,{})\n", " dict2[k1][mbz]['总结'] = v1['总结']\n", " dict2[k1][mbz]['诊断'] = v1['诊断']\n", " if '备注' in v1.keys():\n", " dict2[k1][mbz]['备注'] = v1['备注']\n", " if len(dict2) >0:\n", " dict3[k] = dict2\n", "with open('data/安庆体检报告_人员整理.json','w') as fl:\n", " json.dump(dict3,fl) \n", " \n" ] }, { "cell_type": "markdown", "id": "30225b10-4307-4617-a274-cce8771e8983", "metadata": {}, "source": [ "### 病症筛选(Ⅱ级高血压、Ⅲ级高血压、心电图异常)" ] }, { "cell_type": "code", "execution_count": null, "id": "d4867b96-e7ba-420c-9b6d-8bc50eb936ae", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "import re\n", "with open('data/安庆体检报告_人员整理.json','r') as fl:\n", " dict1 = json.load(fl) \n", "mo1 = r'心电图结论:(.*?)_x000D_'\n", "mo =r'血压:(.*?)_x000D_'\n", "mo2 = '(.?)级高血压'\n", "dict2 = {}\n", "\n", "for k, v in dict1.items():\n", " bm = k\n", " dict2.setdefault(bm,{})\n", " for k1, v1 in v.items():\n", " dict2[bm].setdefault(k1,{})\n", " dict2[bm][k1]['工号'] = v1['工号']\n", " dict2[bm][k1]['性别'] = v1['性别']\n", " if 'Ⅱ级高血压、Ⅲ级高血压' in v1.keys():\n", " \n", " s = v1['Ⅱ级高血压、Ⅲ级高血压']['诊断']\n", " if '级高血压' in s:\n", " list2 = re.search( mo2, s)\n", " dict2[bm][k1]['高血压'] = [list2.group(1)]\n", " ss = v1['Ⅱ级高血压、Ⅲ级高血压']['总结']\n", " if '血压:' in ss:\n", " list1 = re.search( mo, ss)\n", " dict2[bm][k1]['高血压'].append(list1.group(1))\n", " else:\n", " dict2[bm][k1]['高血压'].append('无血压数据')\n", " if '心电图异常' in v1.keys():\n", " dict2[bm][k1].setdefault('心电图',[])\n", " ss = v1['心电图异常']['总结']\n", " if '心电图结论:' in ss:\n", " list1 = re.search( mo1, ss)\n", " dict2[bm][k1]['心电图'] = [list1.group(1)]\n", " #print(k,k1,list1.group(1),list2.group(1))\n", " else:\n", " dict2[bm][k1]['心电图'].append(v1['心电图异常']['备注'])\n", "print(len(dict2))\n", "with open('data/安庆体检报告_人员统计.json','w') as fl:\n", " json.dump(dict2,fl) " ] }, { "cell_type": "markdown", "id": "183524e5-61ee-48a9-87f6-f07a78b88504", "metadata": {}, "source": [ "### 病症导出至Excel" ] }, { "cell_type": "code", "execution_count": null, "id": "c0aa1258-a5f9-44c5-a959-ab29a053c8a4", "metadata": { "tags": [] }, "outputs": [], "source": [ "import openpyxl\n", "import json\n", "\n", "list1 = []\n", "with open('data/安庆体检报告_人员统计.json','r') as fl:\n", " dict1 = json.load(fl) \n", "for k, v in dict1.items():\n", " bm =k\n", " for k1, v1 in v.items():\n", " #print(bm,k1)\n", " list2 = []\n", " xm = k1\n", " if '工号' in v1.keys():\n", " gh = v1['工号']\n", " else:\n", " gh = ''\n", " sex = v1['性别']\n", " if '高血压' in v1.keys():\n", " lx = v1['高血压'][0]+'级高血压'\n", " xyz = v1['高血压'][1]\n", " else:\n", " lx = ''\n", " xyz = ''\n", " if '心电图' in v1.keys():\n", " xdt = v1['心电图'][0]\n", " else:\n", " xdt = ''\n", " list2 = [bm,xm,gh,sex,lx,xyz,xdt]\n", " list1.append(list2)\n", "#print(list1) \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", "\n", "wb.save(filename)" ] }, { "cell_type": "code", "execution_count": null, "id": "f2f2f206-2558-4cc3-9519-c4c677b71237", "metadata": {}, "outputs": [], "source": [ "import json\n", "filename = 'data/安庆2021.json'\n", "item = {}\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl) \n", "\n", "print(len(dict1))" ] }, { "cell_type": "markdown", "id": "fbb13d70-6601-4421-8deb-26e717c37a8c", "metadata": {}, "source": [ "## 体质问卷管理" ] }, { "cell_type": "markdown", "id": "7e0fe102-69d4-425c-bc1f-9a26cc974d9d", "metadata": { "tags": [] }, "source": [ "### 问卷人员导入" ] }, { "cell_type": "code", "execution_count": null, "id": "714d4a20-9ca0-4439-880b-f68de8c0e2fb", "metadata": { "tags": [] }, "outputs": [], "source": [ "import openpyxl\n", "import json\n", "\n", "\n", "wb = openpyxl.load_workbook('data/2023年安庆石化职工健康提升项目志愿者花名册(修订).xlsx')\n", "sheet = wb.active\n", "# sheets = wb.sheetnames\n", "person = {}\n", "\n", "for n in range(4, sheet.max_row+1):\n", " code = sheet.cell(n, 1).value\n", " person.setdefault(code, {})\n", " dict1 = {}\n", " dict1['name'] = sheet.cell(n, 3).value\n", " dict1['sex'] = sheet.cell(n, 4).value\n", " dict1['unit'] = sheet.cell(n, 2).value\n", " dict1['age'] = sheet.cell(n, 6).value\n", " if sheet.cell(n,5).value is not None:\n", " dict1['phone'] = str(sheet.cell(n,5).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": "d5babc67-d982-46d0-b6a4-bb8d8ad05895", "metadata": {}, "source": [ "### 导入问卷内容" ] }, { "cell_type": "code", "execution_count": null, "id": "c5a9111d-2785-4d88-9cbd-0cbc952531b0", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "import csv\n", "import openpyxl\n", "import time\n", "from datetime import date\n", "\n", "dict1 = {}\n", "\n", "filename = 'data/安庆职工健康提升志愿者.json'\n", "with open(filename,'r') as fl:\n", " dict3 = json.load(fl)\n", "\n", "\n", "list1 = []\n", "filename = 'data/Survey_20240117.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", " list1.append(line)\n", "#print(list1)\n", "dict2 = {}\n", "\n", "for item in list1:\n", " psy = []\n", " tcm = []\n", " spine = []\n", " for i in range(0,45):\n", " psy.append(0)\n", " for i in range(0,60):\n", " tcm.append(0)\n", " for i in range(0,26):\n", " spine.append(0)\n", " phone = item[2]\n", " for k1, v1 in dict3.items():\n", " if 'phone' in v1.keys() and phone ==v1['phone']: \n", " dict1[k1] = dict3[k1]\n", " dict1[k1]['month'] = dict1[k1]['age'] *12\n", "#print(dict1)\n", "for item in list1:\n", " psy = []\n", " tcm = []\n", " spine = []\n", " for i in range(0,45):\n", " psy.append(0)\n", " for i in range(0,60):\n", " tcm.append(0)\n", " for i in range(0,26):\n", " spine.append(0)\n", " phone = item[2]\n", " for k1, v1 in dict1.items():\n", " if phone ==v1['phone']: \n", " content = json.loads(item[5])\n", " if 'tcm' in item[1] or 'spine' in item[1]:\n", " del content['gender']\n", " rq = date.fromisoformat(item[6].replace('/','-').split(' ')[0])\n", " #dict1[phone[item[2]]]['rq'] = date.fromisoformat(item[6].replace('/','-').split(' ')[0])\n", " for k, v in content.items():\n", " if 'psy' in item[1]: \n", " i = int(k[1:])\n", " psy[i-1] = int(v)\n", " if 'tcm' in item[1]: \n", " i = int(k[1:])\n", " tcm[i-1] = int(v)\n", " if 'spine' in item[1]:\n", " i = int(k[1:])\n", " spine[i-1] = int(v)\n", " if 'psy' in item[1]:\n", " #for i in range(5,26):\n", " # new_valve = 5-psy[i]\n", " # psy[i] = new_valve\n", " for i in range(26,40):\n", " new_valve = 1+psy[i]\n", " psy[i] = new_valve\n", " psy[44] = []\n", " dict1[k1]['psy'] = psy\n", " if 'tcm' in item[1]:\n", " if tcm[40] ==0:\n", " tcm[40] =1\n", " dict1[k1]['tcm'] = tcm\n", " if 'spine' in item[1]:\n", " dict1[k1]['spine'] = spine\n", " #birth = date.fromisoformat(dict3[k1]['birth'].replace('/','-'))\n", "\n", " #days = (rq-birth).days \n", " #dict1[k1]['age'] = int(days/365)\n", " \n", " dict1[k1]['rq'] = item[6].replace('/','-').split(' ')[0]\n", "print(dict1)\n", "filename = 'data/result_安庆志愿者.json'\n", "\n", "with open(filename,'w') as fl:\n", " json.dump(dict1, fl, ensure_ascii=False) " ] }, { "cell_type": "markdown", "id": "e8774dfb-d9f5-44af-a118-4a106ceac9fc", "metadata": {}, "source": [ "### 导出问卷人员信息" ] }, { "cell_type": "code", "execution_count": null, "id": "dcdd18b3-d7b7-49b1-b148-c2ea9a7799ff", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "import csv\n", "import openpyxl\n", "\n", "filename = 'data/安庆职工健康提升志愿者.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl) \n", "\n", "wj = {'psy_0556_sh':'心理问卷','tcm_0556_sh':'中医问卷','spine_0556_sh':'脊柱问卷'}\n", "wj_dm = {'psy_0556_sh':0,'tcm_0556_sh':1,'spine_0556_sh':2}\n", "list1 = []\n", "re_ta = {}\n", "filename = 'data/Survey_20240117.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", " item = str(result[1])\n", " re_ta.setdefault(item,[])\n", " re_ta[item].append(result[2])\n", "print(len(re_ta))\n", "\n", "tj = {}\n", "for k ,v in dict1.items():\n", " if 'phone' in v.keys():\n", " phone = v['phone']\n", " tj.setdefault(k, [0,0,0])\n", " for k1,v1 in re_ta.items():\n", " if phone in v1:\n", " tj[k][wj_dm[k1]] = 1\n", "list1 = []\n", "for k, v in tj.items():\n", " list2 = []\n", " list2.append(k)\n", " list2.append(dict1[k]['name'])\n", " list2.append(dict1[k]['phone'])\n", " for item in v:\n", " list2.append(item)\n", " list1.append(list2)\n", " \n", "filename = 'data/安庆职工健康提升问卷情况表20240108.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", "wb.save(filename) \n", " " ] }, { "cell_type": "markdown", "id": "8bc929e2-38f1-4dbd-820e-65d92b59ab26", "metadata": {}, "source": [ "### 导统计问卷新增手机号码" ] }, { "cell_type": "code", "execution_count": null, "id": "ea4fffc4-3c6e-4f85-819f-52f969e04dd7", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "import csv\n", "import openpyxl\n", "\n", "filename = 'data/安庆职工健康提升志愿者.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl) \n", "\n", "phone = set()\n", "phone1 = set()\n", "for k,v in dict1.items():\n", " if 'phone' in v.keys():\n", " phone.add(v['phone'])\n", "\n", "filename = 'data/Survey_20240108.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", " if result[2] not in phone:\n", " phone1.add(result[2])\n", "for item in phone1:\n", " print(item)" ] }, { "cell_type": "code", "execution_count": null, "id": "37bf232e-7db1-40a8-b8d6-4a182f839848", "metadata": {}, "outputs": [], "source": [ "import json\n", "import csv\n", "import openpyxl\n", "\n", "filename = 'data/安庆职工健康提升志愿者.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl) \n", "\n", "phone = set()\n", "phone1 = set()\n", "for k,v in dict1.items():\n", " phone.add(v['phone'])\n", "\n", "filename = 'data/Survey_20231018.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", " if result[2] not in phone:\n", " phone1.add(result[2])\n", "for item in phone1:\n", " print(item)" ] }, { "cell_type": "markdown", "id": "40b39da5-67e2-4d98-a7b7-175086dd12c8", "metadata": {}, "source": [ "### 生成报告" ] }, { "cell_type": "code", "execution_count": 31, "id": "49880f85-6cda-44a6-a77f-3abd10672d7a", "metadata": { "execution": { "iopub.execute_input": "2024-01-17T05:24:47.910905Z", "iopub.status.busy": "2024-01-17T05:24:47.910416Z", "iopub.status.idle": "2024-01-17T05:25:11.510859Z", "shell.execute_reply": "2024-01-17T05:25:11.510166Z", "shell.execute_reply.started": "2024-01-17T05:24:47.910864Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "98\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_安庆志愿者.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl)\n", "list1 = []\n", "fiie_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'] = fiie_path+id+'-'+ v['name']+'.pdf'\n", " mydata['title'] = '中国石化安庆石化公司'\n", " mydata['subtitle'] = v['unit']\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", " \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": "markdown", "id": "56a753ee-461e-47de-bf36-58e0bb8971e1", "metadata": {}, "source": [ "### 报告添加水印" ] }, { "cell_type": "code", "execution_count": 35, "id": "fc195748-7e7e-4484-9f86-a430e1da79ad", "metadata": { "execution": { "iopub.execute_input": "2024-02-26T08:58:53.318141Z", "iopub.status.busy": "2024-02-26T08:58:53.317932Z", "iopub.status.idle": "2024-02-26T08:58:57.023478Z", "shell.execute_reply": "2024-02-26T08:58:57.023026Z", "shell.execute_reply.started": "2024-02-26T08:58:53.318126Z" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ok!\n" ] } ], "source": [ "import os,sys,shutil\n", "import json\n", "import glob\n", "from pathlib import Path\n", "import PyPDF2\n", "import openpyxl\n", "\n", "pdfWriter = PyPDF2.PdfWriter() \n", "\n", "fi_path = '/home/songyi/pdf-typescript/安庆职工健康提升'\n", "new_path = 'file/安庆健康志愿者'\n", "\n", "dict1 ={}\n", "wb = openpyxl.load_workbook('data/安庆健康志愿者分组情况表.xlsx')\n", "sheet = wb.active\n", "# sheets = wb.sheetnames\n", "\n", "for n in range(2, sheet.max_row+1):\n", " code = str(sheet.cell(n, 1).value)\n", " dict1[code] = sheet.cell(n, 3).value\n", " \n", " \n", "\n", "\n", "fls = glob.glob(f'{fi_path}/*.pdf')\n", "for fn in fls:\n", " reader = PyPDF2.PdfReader(fn)\n", " writer = PyPDF2.PdfWriter()\n", " num = len(reader.pages)\n", " code =str(int(Path(fn).stem.split('-')[0]))\n", " if code in dict1.keys():\n", " sy_fn = 'data/water/'+dict1[code]+'.pdf'\n", " water = PyPDF2.PdfReader(sy_fn).pages[0]\n", " for i in range(num):\n", " page = reader.pages[i]\n", " if i == num -1:\n", " page.merge_page(water)\n", " writer.add_page(page)\n", " with open(f'file/安庆健康志愿者/{Path(fn).stem}.pdf', 'wb') as target_file:\n", " writer.write(target_file)\n", " \n", "print('ok!') " ] }, { "cell_type": "code", "execution_count": 33, "id": "c3026771-202b-44ed-b94c-7c8a57089cd2", "metadata": { "execution": { "iopub.execute_input": "2024-02-26T08:53:24.880683Z", "iopub.status.busy": "2024-02-26T08:53:24.880275Z", "iopub.status.idle": "2024-02-26T08:53:24.904212Z", "shell.execute_reply": "2024-02-26T08:53:24.902898Z", "shell.execute_reply.started": "2024-02-26T08:53:24.880652Z" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'0016': '平和', '0017': '平和', '0047': '平和', '0072': '平和', '0080': '平和', '0099': '平和', '0019': '气虚', '0021': '气虚', '0025': '气虚', '0039': '气虚', '0044': '气虚', '0046': '气虚', '0051': '气虚', '0053': '气虚', '0064': '气虚', '0066': '气虚', '0068': '气虚', '0069': '气虚', '0074': '气虚', '0084': '气虚', '0036': '气郁', '0048': '气郁', '0050': '气郁', '0056': '气郁', '0062': '气郁', '0065': '气郁', '0070': '气郁', '0073': '气郁', '0097': '气郁', '0001': '湿热', '0008': '湿热', '0011': '湿热', '0014': '湿热', '0038': '湿热', '0057': '湿热', '0058': '湿热', '0090': '湿热', '0093': '湿热', '0095': '湿热', '0100': '湿热', '0009': '痰湿', '0012': '痰湿', '0015': '痰湿', '0020': '痰湿', '0026': '痰湿', '0030': '痰湿', '0041': '痰湿', '0077': '痰湿', '0079': '痰湿', '0083': '痰湿', '0085': '痰湿', '0089': '痰湿', '0094': '痰湿', '0101': '痰湿', '0010': '特禀', '0023': '特禀', '0055': '特禀', '0013': '特禀', '0022': '特禀', '0035': '特禀', '0049': '特禀', '0081': '特禀', '0082': '特禀', '0004': '阳虚', '0005': '阳虚', '0006': '阳虚', '0018': '阳虚', '0028': '阳虚', '0029': '阳虚', '0032': '阳虚', '0033': '阳虚', '0034': '阳虚', '0037': '阳虚', '0040': '阳虚', '0045': '阳虚', '0052': '阳虚', '0054': '阳虚', '0059': '阳虚', '0060': '阳虚', '0061': '阳虚', '0063': '阳虚', '0071': '阳虚', '0075': '阳虚', '0076': '阳虚', '0086': '阳虚', '0091': '阳虚', '0092': '阳虚', '0096': '阳虚', '0002': '阴虚', '0003': '阴虚', '0007': '阴虚', '0027': '阴虚', '0031': '阴虚', '0042': '阴虚', '0078': '阴虚', '0088': '阴虚'}\n" ] } ], "source": [ "import os,sys,shutil\n", "import json\n", "import glob\n", "from pathlib import Path\n", "import PyPDF2\n", "import openpyxl\n", "\n", "pdfWriter = PyPDF2.PdfWriter() \n", "\n", "fi_path = '/home/songyi/python/mycrm/flask/pdf/files/309118_1'\n", "new_path = 'file/309118_sy'\n", "\n", "dict1 ={}\n", "wb = openpyxl.load_workbook('data/安庆健康志愿者分组情况表.xlsx')\n", "sheet = wb.active\n", "# sheets = wb.sheetnames\n", "\n", "for n in range(2, sheet.max_row+1):\n", " code = str(sheet.cell(n, 1).value).rjust(4,\"0\")\n", " dict1[code] = sheet.cell(n, 3).value\n", "print(dict1)" ] }, { "cell_type": "code", "execution_count": null, "id": "cac96c1b-62a6-4301-af95-9200a283f4b4", "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 }