Files
jupyter/体测单位/沧州炼化.ipynb
T
2025-11-14 13:50:06 +08:00

418 lines
12 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": "ce7a7798-b8b7-4564-9e17-3e9c2d4565d8",
"metadata": {},
"source": [
"## 体测人员导入"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "270e8c57-36d3-476c-8c50-4d8bc38a918a",
"metadata": {
"execution": {
"iopub.execute_input": "2025-11-13T08:43:12.873509Z",
"iopub.status.busy": "2025-11-13T08:43:12.873249Z",
"iopub.status.idle": "2025-11-13T08:43:13.076138Z",
"shell.execute_reply": "2025-11-13T08:43:13.075593Z",
"shell.execute_reply.started": "2025-11-13T08:43:12.873486Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1301 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 = sheet.cell(n, 2).value\n",
" person.setdefault(code, {})\n",
" dict1 = {}\n",
" dict1['name'] = sheet.cell(n, 4).value\n",
" dict1['sex'] = sheet.cell(n, 5).value\n",
" dict1['birth'] = str(sheet.cell(n, 6).value).replace('/','-').split(' ')[0] \n",
" dict1['unit'] = sheet.cell(n, 3).value\n",
" if sheet.cell(n, 7).value is not None:\n",
" dict1['phone'] = str(sheet.cell(n, 7).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(len(person),'ok')"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "829d9460-a14e-4689-a7c4-d00bbd8c2e32",
"metadata": {
"execution": {
"iopub.execute_input": "2025-11-07T08:37:47.436725Z",
"iopub.status.busy": "2025-11-07T08:37:47.435955Z",
"iopub.status.idle": "2025-11-07T08:37:47.582958Z",
"shell.execute_reply": "2025-11-07T08:37:47.582377Z",
"shell.execute_reply.started": "2025-11-07T08:37:47.436655Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[['1553904', '孙建国', '物资采购中心'], ['1553904', '张巍', '应急救援中心']]\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",
"list1 = []\n",
"list2 = []\n",
"for n in range(2, sheet.max_row+1):\n",
" code = sheet.cell(n, 2).value\n",
" if code not in list1:\n",
" list1.append(code)\n",
" else:\n",
" list2.append(code)\n",
"list3 = []\n",
"for n in range(2, sheet.max_row+1):\n",
" code = sheet.cell(n, 2).value\n",
" if code in list2:\n",
" list4 = [code,sheet.cell(n, 4).value,sheet.cell(n, 3).value]\n",
" list3.append(list4)\n",
"print(list3)\n",
"filename = 'data/沧州炼化编号重复人员.xlsx'\n",
"wb = openpyxl.Workbook()\n",
"sheet = wb.active\n",
"\n",
"for row in list3:\n",
" sheet.append(row)\n",
" \n",
"wb.save(filename)"
]
},
{
"cell_type": "markdown",
"id": "b4f7023f-127c-4c47-a8e2-78922fbcd975",
"metadata": {},
"source": [
"## 生成读卡系统文件"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "7b6c8cb8-50ab-4b59-ac9a-6afb3db61476",
"metadata": {
"execution": {
"iopub.execute_input": "2025-11-09T05:35:48.182110Z",
"iopub.status.busy": "2025-11-09T05:35:48.181365Z",
"iopub.status.idle": "2025-11-09T05:35:48.197106Z",
"shell.execute_reply": "2025-11-09T05:35:48.196434Z",
"shell.execute_reply.started": "2025-11-09T05:35:48.182041Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1297 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/card_沧州炼化人员.json\", \"w\",encoding = 'utf-8') as file:\n",
" file.write(json_data) \n",
"print(len(list1),'ok')"
]
},
{
"cell_type": "markdown",
"id": "f9ef800a-b760-4933-b7a4-c69edef593d0",
"metadata": {},
"source": [
"## 获取人员测试成绩"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "ccb2fe86-c588-4373-85df-37adda55c694",
"metadata": {
"execution": {
"iopub.execute_input": "2025-11-14T04:02:24.632013Z",
"iopub.status.busy": "2025-11-14T04:02:24.631372Z",
"iopub.status.idle": "2025-11-14T04:02:24.726424Z",
"shell.execute_reply": "2025-11-14T04:02:24.725880Z",
"shell.execute_reply.started": "2025-11-14T04:02:24.631959Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1175\n"
]
}
],
"source": [
"import json\n",
"import datetime\n",
"import csv\n",
"from datetime import date\n",
"import my_module1 as My\n",
"\n",
"filename = 'data/沧州炼化人员.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl) \n",
"filename = 'data/marks_20251114.csv'\n",
"re_ta = My.get_result(filename,dict1)\n",
"\n",
"\n",
"filename = 'data/result_沧州炼化.json'\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": "a446935a-db14-41d5-9420-d1a5ddd0e548",
"metadata": {},
"source": [
"## 统计各部门测试情况"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "503c30bb-c537-43f6-b3c7-a1eeff4c313f",
"metadata": {
"execution": {
"iopub.execute_input": "2025-11-14T04:02:34.921004Z",
"iopub.status.busy": "2025-11-14T04:02:34.920268Z",
"iopub.status.idle": "2025-11-14T04:02:34.953734Z",
"shell.execute_reply": "2025-11-14T04:02:34.953246Z",
"shell.execute_reply.started": "2025-11-14T04:02:34.920949Z"
}
},
"outputs": [],
"source": [
"import json\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",
"dict3 = {}\n",
"for k, v in dict2.items():\n",
" unit = v['unit']\n",
" #sub_unit = v['sub_unit']\n",
" dict3.setdefault(unit,{})\n",
" dict3[unit].setdefault('人数',0)\n",
" dict3[unit].setdefault('体测人数',0)\n",
" #dict3[unit].setdefault(sub_unit,0)\n",
" #dict3[unit][sub_unit] = dict3[unit][sub_unit] + 1\n",
" dict3[unit]['人数'] = dict3[unit]['人数'] + 1\n",
"\n",
"title =['单位','体测人数']\n",
"list1 = []\n",
"for k,v in dict1.items(): \n",
" unit = v['unit']\n",
" #sub_unit = v['sub_unit']\n",
" #dict3[unit][sub_unit] = dict3[unit][sub_unit] - 1\n",
" dict3[unit].setdefault('体测人数',0)\n",
" dict3[unit]['体测人数'] = dict3[unit]['体测人数'] + 1\n",
"for k, v in dict3.items():\n",
" list2 = [k,v['人数'],v['体测人数']]\n",
" list1.append(list2)\n",
"\n",
"filename = 'data/沧州炼化部门测试情况(截至20251114).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": "e04d391d-57cb-4ece-a77b-b940950f6717",
"metadata": {},
"source": [
"## 统计未体测人员明细表"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "57de7845-76f2-4cdc-88a9-eb869acb28a5",
"metadata": {
"execution": {
"iopub.execute_input": "2025-11-14T04:02:42.621335Z",
"iopub.status.busy": "2025-11-14T04:02:42.620669Z",
"iopub.status.idle": "2025-11-14T04:02:42.655530Z",
"shell.execute_reply": "2025-11-14T04:02:42.654876Z",
"shell.execute_reply.started": "2025-11-14T04:02:42.621305Z"
}
},
"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/沧州炼化人员.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/沧州炼化未测试人员名单(截至20251114).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": "9d39b9e8-7932-4f99-88da-0becf48d73e0",
"metadata": {},
"source": [
"## 统计体测人员项目数"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "c2ca861f-54ca-4312-bf24-20dbc2f3f2e6",
"metadata": {
"execution": {
"iopub.execute_input": "2025-11-14T04:11:04.381187Z",
"iopub.status.busy": "2025-11-14T04:11:04.380519Z",
"iopub.status.idle": "2025-11-14T04:11:04.413211Z",
"shell.execute_reply": "2025-11-14T04:11:04.412250Z",
"shell.execute_reply.started": "2025-11-14T04:11:04.381125Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1553238 齐金永 公用工程部 13231725301 2\n",
"1553763 王鑫 应急救援中心 15632778668 2\n",
"1552999 赵崇胜 储运部 13722775060 2\n",
"01553836 王成柱 炼油一部 13111760190 1\n",
"01553839 徐振柱 炼油一部 17772650508 1\n"
]
}
],
"source": [
"import json\n",
"\n",
"filename = 'data/result_沧州炼化.json'\n",
"with open(filename,'r') as fl:\n",
" dict1 = json.load(fl)\n",
"xm = ['bmi','lung','grip','flexion','jump','pushup','balance','reaction','step','situp']\n",
"for k,v in dict1.items():\n",
" list1 = []\n",
" for item in v.keys():\n",
" if item in xm:\n",
" list1.append(item)\n",
" if len(list1) <3:\n",
" print(k,v['name'],v['unit'],v['phone'],len(list1))"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e6dea90d-2b60-4ff5-9598-a49f41b6ab24",
"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
}