{ "cells": [ { "cell_type": "markdown", "id": "bf152e7d-6a36-4877-98d9-f11e3a73792e", "metadata": {}, "source": [ "## 导入人员信息" ] }, { "cell_type": "code", "execution_count": 138, "id": "1b92b7c5-cb77-49da-95b7-34827ecf1d16", "metadata": { "execution": { "iopub.execute_input": "2023-04-27T11:13:41.777211Z", "iopub.status.busy": "2023-04-27T11:13:41.776344Z", "iopub.status.idle": "2023-04-27T11:13:44.240985Z", "shell.execute_reply": "2023-04-27T11:13:44.239943Z", "shell.execute_reply.started": "2023-04-27T11:13:41.777171Z" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ok\n" ] } ], "source": [ "import openpyxl\n", "import json\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", " if sheet.cell(n,1).value is not None:\n", " code = int(sheet.cell(n, 1).value)\n", " person.setdefault(code, {})\n", " dict1 = {}\n", " dict1['name'] = sheet.cell(n, 2).value\n", " if sheet.cell(n, 7).value ==1:\n", " sex = '男'\n", " else:\n", " sex = '女'\n", " dict1['sex'] = sheet.cell(n, 3).value\n", " birth = str(sheet.cell(n, 6).value).split()[0]\n", " dict1['birth'] = birth\n", " if sheet.cell(n,5).value is not None:\n", " dict1['phone'] = sheet.cell(n, 5).value\n", " if sheet.cell(n,7).value is not None:\n", " dict1['id_num'] = sheet.cell(n, 7).value\n", " if sheet.cell(n,8).value is not None:\n", " dict1['SAP'] = sheet.cell(n, 8).value\n", " if sheet.cell(n,9).value is not None:\n", " dict1['工作单位'] = sheet.cell(n, 9).value\n", " if sheet.cell(n,10).value is not None:\n", " dict1['车间'] = sheet.cell(n, 10).value\n", " else:\n", " dict1['车间'] =''\n", " if sheet.cell(n,11).value is not None:\n", " dict1['班组'] = sheet.cell(n, 11).value\n", " else:\n", " dict1['班组'] =''\n", " if sheet.cell(n,12).value is not None:\n", " dict1['工作性质'] = sheet.cell(n, 11).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": "f5c73dff-697d-4ba5-a90c-9bed68eaf4b3", "metadata": {}, "source": [ "## 每日成绩导入" ] }, { "cell_type": "code", "execution_count": 141, "id": "71e1ec6a-6797-4496-969a-1d1461b9ea58", "metadata": { "execution": { "iopub.execute_input": "2023-04-27T11:17:30.688334Z", "iopub.status.busy": "2023-04-27T11:17:30.687922Z", "iopub.status.idle": "2023-04-27T11:17:31.209520Z", "shell.execute_reply": "2023-04-27T11:17:31.208618Z", "shell.execute_reply.started": "2023-04-27T11:17:30.688305Z" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "358\n", "1987 孙伟滨 已测试!\n", "1402 郭力 已测试!\n", "1968 项征 已测试!\n", "1980 张艳梅 已测试!\n", "2243 李宁 已测试!\n", "2252 张宝山 已测试!\n", "1398 李海峰 已测试!\n", "999 张术申 已测试!\n", "6199 张杰 已测试!\n", "1681 何志坚 已测试!\n", "383 肖建国 已测试!\n", "358\n", "4229\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_20230427.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]['部门'] = dict1[user]['工作单位']\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", "with open(filename,'r') as fl:\n", " dict2 = json.load(fl)\n", "for k in re_ta.keys():\n", " if k in dict2.keys():\n", " print(k,dict2[k]['name'],'已测试!')\n", "for k, v in re_ta.items():\n", " if k not in dict2.keys():\n", " dict2[k] = v\n", " else:\n", " for k1,v1 in v.items():\n", " dict2[k][k1] = v1\n", "filename = 'data/result_燕山石化(20230427).json'\n", "with open(filename,'w') as fl:\n", " json.dump(re_ta, fl, ensure_ascii=False) \n", "print(len(re_ta))\n", "filename = 'data/result_燕山石化.json'\n", "with open(filename,'w') as fl:\n", " json.dump(dict2, fl, ensure_ascii=False) \n", "print(len(dict2))" ] }, { "cell_type": "markdown", "id": "79147ba8-4b90-40ba-81a9-e6062600c239", "metadata": {}, "source": [ "## 每日成绩导出" ] }, { "cell_type": "code", "execution_count": 143, "id": "c24880ad-bbbd-4ad8-a894-cbcea389e822", "metadata": { "execution": { "iopub.execute_input": "2023-04-27T11:20:46.486381Z", "iopub.status.busy": "2023-04-27T11:20:46.485740Z", "iopub.status.idle": "2023-04-27T11:20:46.658108Z", "shell.execute_reply": "2023-04-27T11:20:46.657410Z", "shell.execute_reply.started": "2023-04-27T11:20:46.486341Z" }, "tags": [] }, "outputs": [], "source": [ "import json\n", "import openpyxl\n", "\n", "items = ['身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n", "title = ['编号','姓名','性别','单位','车间','班组','身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n", "\n", "filename = 'data/result_燕山石化(20230427).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]['工作单位']) \n", " list2.append(dict2[k]['车间'])\n", " list2.append(dict2[k]['班组'])\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/燕山石化体测情况表(20230427).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": "6d431fc1-b743-467c-91b3-9788e245becb", "metadata": {}, "source": [ "## 统计部门测试人数" ] }, { "cell_type": "code", "execution_count": 144, "id": "68454877-f1fe-4eed-8a48-265e428f892e", "metadata": { "execution": { "iopub.execute_input": "2023-04-27T11:21:48.040006Z", "iopub.status.busy": "2023-04-27T11:21:48.039202Z", "iopub.status.idle": "2023-04-27T11:21:48.069140Z", "shell.execute_reply": "2023-04-27T11:21:48.068103Z", "shell.execute_reply.started": "2023-04-27T11:21:48.039973Z" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'合成橡胶厂工会': 30, '炼油厂工会': 95, '检验计量中心工会': 16, '烯烃厂工会': 115, '化学品厂工会': 29, '合成树脂厂': 10, '有机化工厂工会': 30, '储运厂工会': 12, '机关工会': 6, '高科公司工会': 9, '热电厂工会': 1, '物装中心工会': 5}\n" ] } ], "source": [ "import json\n", "import openpyxl\n", "\n", "filename = 'data/result_燕山石化(20230427).json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl)\n", "dict2 = {}\n", "for k, v in dict1.items():\n", " unit = v['部门']\n", " dict2.setdefault(unit,0)\n", " dict2[unit] = dict2[unit] + 1\n", "print(dict2)\n", "title =['单位','体测人数']\n", "list1 = [] \n", "for k, v in dict2.items():\n", " list2 = []\n", " list2 = [k,v]\n", " list1.append(list2)\n", "filename = 'data/燕山石化部门测试人数情况表(20230427).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": "8becc0af-d22b-46a2-b35e-9122942515d4", "metadata": {}, "source": [ "## 每日未测试人员情况表" ] }, { "cell_type": "code", "execution_count": 26, "id": "7085bf6f-7465-44fb-bddb-38130fbe5618", "metadata": { "execution": { "iopub.execute_input": "2023-04-17T12:58:45.236098Z", "iopub.status.busy": "2023-04-17T12:58:45.235274Z", "iopub.status.idle": "2023-04-17T12:58:46.270936Z", "shell.execute_reply": "2023-04-17T12:58:46.270191Z", "shell.execute_reply.started": "2023-04-17T12:58:45.236059Z" }, "tags": [] }, "outputs": [], "source": [ "import json\n", "import openpyxl\n", "\n", "\n", "title = ['编号','姓名','性别','单位','车间','班组']\n", "filename = 'data/result_燕山石化(20230417).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", "list1 = []\n", "for k, v in dict2.items():\n", " list2 = []\n", " if k not in dict1.keys():\n", " list2.append(str(k).rjust(5,'0'))\n", " list2.append(v['name']) \n", " list2.append(dict2[k]['sex'])\n", " list2.append(dict2[k]['工作单位']) \n", " list2.append(dict2[k]['车间'])\n", " list2.append(dict2[k]['班组'])\n", " list1.append(list2)\n", "filename = 'data/燕山石化未体测人员名单(20230417).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": "3231f52d-776f-4d29-b6f5-c28f6a0c30a9", "metadata": {}, "source": [ "## 汇总未测试人员情况表" ] }, { "cell_type": "code", "execution_count": 118, "id": "eddf7dab-b28d-402a-aeaf-27c120048ecb", "metadata": { "execution": { "iopub.execute_input": "2023-04-26T10:55:40.757537Z", "iopub.status.busy": "2023-04-26T10:55:40.756689Z", "iopub.status.idle": "2023-04-26T10:55:41.510205Z", "shell.execute_reply": "2023-04-26T10:55:41.509509Z", "shell.execute_reply.started": "2023-04-26T10:55:40.757497Z" }, "tags": [] }, "outputs": [], "source": [ "import json\n", "import openpyxl\n", "\n", "\n", "title = ['编号','姓名','性别','单位','车间','班组']\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", "list1 = []\n", "for k, v in dict2.items():\n", " list2 = []\n", " if k not in dict1.keys():\n", " list2.append(str(k).rjust(5,'0'))\n", " list2.append(v['name']) \n", " list2.append(dict2[k]['sex'])\n", " list2.append(dict2[k]['工作单位']) \n", " list2.append(dict2[k]['车间'])\n", " list2.append(dict2[k]['班组'])\n", " list1.append(list2)\n", "filename = 'data/燕山石化未体测人员名单(截至20230426).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": "4dd9b2b7-bd3d-4d5b-ac84-3a49bcada8b5", "metadata": {}, "source": [ "## 统计测试项目不足人员" ] }, { "cell_type": "code", "execution_count": 123, "id": "641863ef-324f-4c33-a0a9-699031afb6f1", "metadata": { "execution": { "iopub.execute_input": "2023-04-26T11:17:42.517140Z", "iopub.status.busy": "2023-04-26T11:17:42.516342Z", "iopub.status.idle": "2023-04-26T11:17:42.630705Z", "shell.execute_reply": "2023-04-26T11:17:42.629971Z", "shell.execute_reply.started": "2023-04-26T11:17:42.517107Z" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "7756 张志兴 ['身高', '体重', '肺活量', '握力']\n", "3999 解勇 ['身高', '体重', '肺活量', '握力']\n", "7037 郭维东 ['身高', '体重', '握力', '选择反应时']\n", "57 郑文芬 ['身高', '体重', '坐位体前屈', '握力']\n", "4031 庞荔元 ['身高', '体重', '肺活量', '选择反应时']\n", "4025 马珺 ['身高', '体重', '选择反应时']\n", "7790 吴志鹏 ['身高', '体重', '握力']\n", "4851 李晓甦 ['身高', '体重', '单脚站立', '握力']\n", "8133 张来强 ['身高', '体重', '肺活量', '选择反应时']\n", "5628 康文刚 ['身高', '体重', '肺活量', '握力']\n", "8151 赵春先 ['身高', '体重', '握力']\n", "3699 毛树新 ['身高', '体重', '纵跳', '选择反应时']\n", "1699 孙雪飞 ['身高', '体重', '肺活量', '选择反应时']\n", "1960 徐慧国 ['身高', '体重', '肺活量', '单脚站立']\n", "3563 孙志强 ['身高', '体重', '握力', '纵跳']\n", "7682 孙宏林 ['肺活量', '身高', '体重']\n", "4370 张宝 ['身高', '体重', '肺活量', '选择反应时']\n" ] } ], "source": [ "import json\n", "import openpyxl\n", "\n", "items = ['身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\n", "title = ['编号','姓名','性别','单位','车间','班组','身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']\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", "dict3 = {}\n", "for k, v in dict1.items():\n", " list1 = []\n", " for item in v.keys():\n", " if item in items:\n", " list1.append(item)\n", " dict3[k] = list1\n", "for k, v in dict3.items():\n", " if len(v)<=4 and '身高' in v and '体重' in v:\n", " print(k,dict2[k]['name'],v)\n", " " ] }, { "cell_type": "markdown", "id": "d3a69840-29fc-434d-af47-ad864f9e511c", "metadata": {}, "source": [ "## 汇总成绩导入" ] }, { "cell_type": "code", "execution_count": 142, "id": "b735248a-c1b0-4e90-8df4-37cd7625cb1a", "metadata": { "execution": { "iopub.execute_input": "2023-04-27T11:19:41.635154Z", "iopub.status.busy": "2023-04-27T11:19:41.634745Z", "iopub.status.idle": "2023-04-27T11:19:41.975500Z", "shell.execute_reply": "2023-04-27T11:19:41.974722Z", "shell.execute_reply.started": "2023-04-27T11:19:41.635125Z" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3802\n", "3802\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_20230427-all.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]['部门'] = dict1[user]['工作单位']\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", "\n", "filename = 'data/result_燕山石化-all.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": "5bdcad97-309f-4d29-82c4-b53c68b9ee22", "metadata": {}, "source": [ "## 统计重复人员信息" ] }, { "cell_type": "code", "execution_count": 132, "id": "0dd5da15-92e0-45c2-b9e9-11417210974e", "metadata": { "execution": { "iopub.execute_input": "2023-04-27T07:22:33.663659Z", "iopub.status.busy": "2023-04-27T07:22:33.662808Z", "iopub.status.idle": "2023-04-27T07:22:35.472369Z", "shell.execute_reply": "2023-04-27T07:22:35.471662Z", "shell.execute_reply.started": "2023-04-27T07:22:33.663618Z" }, "tags": [] }, "outputs": [], "source": [ "import json\n", "import time\n", "import csv\n", "\n", "\n", "list1 = []\n", "list2 = set()\n", "filename = 'data/燕山石化人员名单.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl) \n", "filename = 'data/result_燕山石化-all.json'\n", "with open(filename,'r') as fl:\n", " dict2 = json.load(fl) \n", "\n", "for k,v in dict1.items():\n", " name = v['name']\n", " if name in list1:\n", " list2.add(name)\n", " list1.append(name)\n", "list3 = []\n", "for item in list2:\n", " for k,v in dict1.items():\n", " if v['name'] == item:\n", " list3.append([k,v['name'],v['sex'],v['birth']])\n", "filename = 'data/燕山石化重名人员名单.xlsx'\n", "wb = openpyxl.Workbook()\n", "sheet = wb.active\n", "#sheet.append(title)\n", "for row in list3:\n", " sheet.append(row)\n", " \n", "wb.save(filename) " ] }, { "cell_type": "markdown", "id": "96375506-0cca-4a9b-b0da-162460d25e51", "metadata": {}, "source": [ "## 重复人员测试情况" ] }, { "cell_type": "code", "execution_count": 137, "id": "5df8eb8f-3594-40be-a491-b4d750bbd554", "metadata": { "execution": { "iopub.execute_input": "2023-04-27T08:23:39.947764Z", "iopub.status.busy": "2023-04-27T08:23:39.947326Z", "iopub.status.idle": "2023-04-27T08:23:40.072095Z", "shell.execute_reply": "2023-04-27T08:23:40.071367Z", "shell.execute_reply.started": "2023-04-27T08:23:39.947734Z" }, "tags": [] }, "outputs": [], "source": [ "import json\n", "import time\n", "import csv\n", "\n", "\n", "list1 = []\n", "list2 = set()\n", "filename = 'data/燕山石化人员名单.json'\n", "with open(filename,'r') as fl:\n", " dict1 = json.load(fl) \n", "filename = 'data/result_燕山石化-all.json'\n", "with open(filename,'r') as fl:\n", " dict2 = json.load(fl) \n", "\n", "\n", "list3 = []\n", "\n", "filename = 'data/燕山石化重名人员名单.xlsx'\n", "wb = openpyxl.load_workbook(filename)\n", "sheet = wb.active\n", "# sheets = wb.sheetnames\n", "\n", "\n", "for n in range(1, sheet.max_row+1):\n", " if sheet.cell(n,1).value is not None:\n", " code = int(sheet.cell(n, 1).value)\n", " name = dict1[str(code)]['name']\n", " unit = dict1[str(code)]['工作单位']\n", " if str(code) in dict2.keys():\n", " ce = '是'\n", " else:\n", " ce = '否'\n", " list3.append([code,name,unit,ce])\n", "filename = 'data/燕山石化重名人员测试情况.xlsx'\n", "wb = openpyxl.Workbook()\n", "sheet = wb.active\n", "#sheet.append(title)\n", "for row in list3:\n", " sheet.append(row)\n", " \n", "wb.save(filename) " ] }, { "cell_type": "code", "execution_count": null, "id": "bfd8e77d-85a5-44aa-b075-b37278910a3f", "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.6" } }, "nbformat": 4, "nbformat_minor": 5 }