Files
jupyter/体测单位/天津石化.ipynb
T
2022-11-06 21:39:02 +08:00

22 KiB

体测人员导入

In [ ]:
import openpyxl
import json


wb = openpyxl.load_workbook('data/天津石化员工检测花名册 (20221014).xlsx')
sheet = wb.active
# sheets = wb.sheetnames
person = {}

for n in range(2, sheet.max_row+1):
    code = int(sheet.cell(n, 6).value)
    person.setdefault(code, {})
    dict1 = {}
    dict1['name'] = sheet.cell(n, 3).value
    dict1['sex'] = sheet.cell(n, 4).value
    dict1['unit'] = sheet.cell(n, 1).value
    dict1['sub_unit'] = sheet.cell(n, 2).value
    if sheet.cell(n,5).value is not None:
        dict1['id_num'] = sheet.cell(n,5).value
    person[code] = dict1
filename = 'data/天津石化人员名单.json'
with open(filename, 'w') as fl:
    json.dump(person, fl, ensure_ascii=False)
print('ok')

获取人员测试成绩

In [ ]:
import json
import time
import csv

filename = '../item.json'
item = {}
unit = {}
with open(filename,'r') as fl:
    dict1 = json.load(fl) 
for k,v in dict1.items():
    item[k] = v
#SQL语句为:
# 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

re_ta = {}
dict1 = {}
list1 = []
#print("\n运动项目信息:")
filename = 'data/134_2210.csv'
with open(filename,'r',newline='') as csv_file:
    fl = csv.reader(csv_file,delimiter=',')
    header = next(fl)    
    for line in fl:
        #line = re.sub('[\r\n\f ]{1,}', '', line)
        list1.append(line)
#print(list1)
for result in list1:
    user = str(result[4])
    m_item = str(result[0])    
    re_ta.setdefault(user,{})    
    re_ta[user]['name'] = str(result[6])
    re_ta[user]['unit'] = str(result[5])    
    item_name = item[m_item]['name']
    re_ta[user].setdefault(item_name,{})  
    score = int(result[1])/item[m_item]['divisor']    
    re_ta[user][item_name]['成绩'] = f'{score} {item[m_item]["unit"]}'
    re_ta[user][item_name]['得分'] =result[2]
filename = 'data/result_天津.json'
with open(filename,'w') as fl:
    json.dump(re_ta, fl) 
print('ok')

导出测试成绩

In [ ]:
import json
import openpyxl

items = ['身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']
title = ['编号','姓名','性别','单位/部门','车间/科室','身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']
filename = 'data/result_天津.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)

filename = 'data/天津石化人员名单.json'
with open(filename,'r') as fl:
    dict2 = json.load(fl)
    
list1 = []
for k, v in dict1.items():
    list2 = []
    list2.append(str(k).rjust(8,'0'))
    list2.append(v['name'])    
    list2.append(dict2[k]['sex'])
    list2.append(dict2[k]['unit'])
    list2.append(dict2[k]['sub_unit'])
    
    for item in items:
        if item in v.keys():
            list2.append(v[item]['成绩'])
            
        elif item =='name':
            list2.append(v[item])
        else:
            list2.append('') 
            
    list1.append(list2)
filename = 'data/天津石化体测情况表(截至20221103).xlsx'
wb = openpyxl.Workbook()
sheet = wb.active
sheet.append(title)
for row in list1:
    sheet.append(row)
    
wb.save(filename)

按照日期进行报告分类

按照体测明细分类

In [ ]:
import json
import time
import csv
import os,sys,shutil
import glob

dict1 = {}
list1 = []
filename = 'data/134_2210.csv'
with open(filename,'r',newline='') as csv_file:
    fl = csv.reader(csv_file,delimiter=',')
    header = next(fl)    
    for line in fl:
        #line = re.sub('[\r\n\f ]{1,}', '', line)
        list1.append(line)
for result in list1:
    user = str(result[4])
    dict1.setdefault(user,'2022-10-01')
    m_date = result[7]
    if m_date> dict1[user]:
        dict1[user] = m_date

m_path = 'file/134'

fls = glob.glob(f'file/new/*.pdf')
for fn in fls:
    #old = os.path.basename(fn).split('.')[0].rjust(8,'0') 
    old = os.path.basename(fn).split('.')[0]
    mrq = str(dict1[old]).split(' ')[0].replace('-', '', 2)
    if not os.path.exists(m_path + '/new/' + mrq):
        os.mkdir(m_path + '/new/' + mrq)
    n_name = f'{m_path}/new/{mrq}/{str(old).rjust(8,"0")}_{mrq}.pdf'
    if not os.path.exists(n_name):
        shutil.copyfile(fn,n_name)
print('ok!')

按照报告生成日期分类

In [ ]:
import json
import time
import csv
import os,sys,shutil
import glob

dict1 = {}
list1 = []

m_path = 'file/134'
mrq = '20221028'
if not os.path.exists(m_path + '/' + mrq):
    os.mkdir(m_path + '/' + mrq)
fls = glob.glob(f'file/new/*.pdf')
for fn in fls:
    #old = os.path.basename(fn).split('.')[0].rjust(8,'0') 
    old = os.path.basename(fn).split('.')[0]    
    n_name = f'{m_path}/{mrq}/{str(old).rjust(8,"0")}_{mrq}.pdf'
    if not os.path.exists(n_name):
        shutil.copyfile(fn,n_name)
print('ok!')

PDF文件压缩

In [15]:
import fitz
from pdf2image import convert_from_path, convert_from_bytes
import os,sys
import tempfile
from pdf2image.exceptions import (
    PDFInfoNotInstalledError,
    PDFPageCountError,
    PDFSyntaxError
)
import img2pdf  
import glob
import shutil

def covert2pic(old_fn):
    if os.path.exists('.pdf'):       # 临时文件,需为空
         shutil.rmtree('.pdf')
    os.mkdir('.pdf')
    with tempfile.TemporaryDirectory() as path:
        images_from_path = convert_from_path(old_fn, dpi=100,fmt='jpg', output_folder='.pdf')

def pic2pdf(new_fn):
    fl1=glob.glob('.pdf/*.jpg')
    fl1.sort()
    a4inpt = (img2pdf.mm_to_pt(210),img2pdf.mm_to_pt(297))
    layout_fun = img2pdf.get_layout_fun(a4inpt)
    with open(new_fn,"wb") as f:
        f.write(img2pdf.convert(fl1,layout_fun=layout_fun))
    print(f'{new_fn}转换成功!')
    


def pdfz(sor, obj, zoom):    
    covert2pic(zoom)
    pic2pdf(obj)
    
fi_path = 'file/134/20221101/'
fl = glob.glob(f'{fi_path}*.pdf')

for fn in fl:
    new_fn = fi_path+'new/'+os.path.basename(fn)
    covert2pic(fn)
    pic2pdf(new_fn)
    shutil.rmtree('.pdf')


file/134/20221101/new/00030841_20221101.pdf转换成功!
file/134/20221101/new/03442719_20221101.pdf转换成功!
file/134/20221101/new/01730401_20221101.pdf转换成功!
file/134/20221101/new/01735113_20221101.pdf转换成功!
file/134/20221101/new/01733333_20221101.pdf转换成功!
file/134/20221101/new/03467856_20221101.pdf转换成功!
file/134/20221101/new/01733150_20221101.pdf转换成功!
file/134/20221101/new/01735366_20221101.pdf转换成功!
file/134/20221101/new/01737694_20221101.pdf转换成功!
file/134/20221101/new/01734253_20221101.pdf转换成功!
file/134/20221101/new/03417366_20221101.pdf转换成功!
file/134/20221101/new/03467840_20221101.pdf转换成功!
file/134/20221101/new/01732867_20221101.pdf转换成功!
file/134/20221101/new/01733298_20221101.pdf转换成功!
file/134/20221101/new/03417184_20221101.pdf转换成功!
file/134/20221101/new/01734429_20221101.pdf转换成功!
file/134/20221101/new/01732856_20221101.pdf转换成功!
file/134/20221101/new/03442655_20221101.pdf转换成功!
file/134/20221101/new/01733693_20221101.pdf转换成功!
file/134/20221101/new/03362174_20221101.pdf转换成功!
file/134/20221101/new/01740008_20221101.pdf转换成功!
file/134/20221101/new/01734030_20221101.pdf转换成功!
file/134/20221101/new/01733318_20221101.pdf转换成功!
file/134/20221101/new/01734044_20221101.pdf转换成功!
file/134/20221101/new/01733506_20221101.pdf转换成功!
file/134/20221101/new/03468181_20221101.pdf转换成功!
file/134/20221101/new/01739084_20221101.pdf转换成功!
file/134/20221101/new/01733181_20221101.pdf转换成功!
file/134/20221101/new/01734298_20221101.pdf转换成功!
file/134/20221101/new/01735744_20221101.pdf转换成功!
file/134/20221101/new/01739978_20221101.pdf转换成功!
file/134/20221101/new/03467822_20221101.pdf转换成功!
file/134/20221101/new/01737695_20221101.pdf转换成功!
file/134/20221101/new/01733033_20221101.pdf转换成功!
file/134/20221101/new/03442651_20221101.pdf转换成功!
file/134/20221101/new/03417283_20221101.pdf转换成功!
file/134/20221101/new/01737227_20221101.pdf转换成功!
file/134/20221101/new/01733158_20221101.pdf转换成功!
file/134/20221101/new/03467911_20221101.pdf转换成功!
file/134/20221101/new/03442657_20221101.pdf转换成功!
file/134/20221101/new/01733544_20221101.pdf转换成功!
file/134/20221101/new/03467866_20221101.pdf转换成功!
file/134/20221101/new/01732785_20221101.pdf转换成功!
file/134/20221101/new/01734360_20221101.pdf转换成功!
file/134/20221101/new/01733279_20221101.pdf转换成功!
file/134/20221101/new/01733404_20221101.pdf转换成功!
file/134/20221101/new/03467763_20221101.pdf转换成功!
file/134/20221101/new/01733044_20221101.pdf转换成功!
file/134/20221101/new/03467776_20221101.pdf转换成功!
file/134/20221101/new/01733163_20221101.pdf转换成功!
file/134/20221101/new/03442789_20221101.pdf转换成功!
file/134/20221101/new/01733325_20221101.pdf转换成功!
file/134/20221101/new/01732894_20221101.pdf转换成功!
file/134/20221101/new/01739172_20221101.pdf转换成功!
file/134/20221101/new/01733223_20221101.pdf转换成功!
file/134/20221101/new/01739802_20221101.pdf转换成功!
file/134/20221101/new/01733026_20221101.pdf转换成功!
file/134/20221101/new/01733381_20221101.pdf转换成功!
file/134/20221101/new/01732960_20221101.pdf转换成功!
file/134/20221101/new/01733388_20221101.pdf转换成功!
file/134/20221101/new/03467931_20221101.pdf转换成功!
file/134/20221101/new/01737989_20221101.pdf转换成功!
file/134/20221101/new/01733178_20221101.pdf转换成功!
file/134/20221101/new/01730300_20221101.pdf转换成功!
file/134/20221101/new/01733398_20221101.pdf转换成功!
file/134/20221101/new/03442667_20221101.pdf转换成功!
file/134/20221101/new/01735304_20221101.pdf转换成功!
file/134/20221101/new/01737343_20221101.pdf转换成功!
file/134/20221101/new/01733086_20221101.pdf转换成功!
file/134/20221101/new/01737934_20221101.pdf转换成功!
file/134/20221101/new/03442774_20221101.pdf转换成功!
file/134/20221101/new/03442715_20221101.pdf转换成功!
file/134/20221101/new/01734312_20221101.pdf转换成功!
file/134/20221101/new/01734934_20221101.pdf转换成功!
file/134/20221101/new/03467909_20221101.pdf转换成功!
file/134/20221101/new/01732845_20221101.pdf转换成功!
file/134/20221101/new/01733029_20221101.pdf转换成功!
file/134/20221101/new/03442804_20221101.pdf转换成功!
file/134/20221101/new/01732839_20221101.pdf转换成功!
file/134/20221101/new/01731668_20221101.pdf转换成功!
file/134/20221101/new/01733863_20221101.pdf转换成功!
file/134/20221101/new/01739095_20221101.pdf转换成功!
file/134/20221101/new/01732901_20221101.pdf转换成功!
file/134/20221101/new/01732989_20221101.pdf转换成功!
file/134/20221101/new/01734179_20221101.pdf转换成功!
file/134/20221101/new/01733553_20221101.pdf转换成功!
file/134/20221101/new/01732929_20221101.pdf转换成功!
file/134/20221101/new/03467954_20221101.pdf转换成功!
file/134/20221101/new/03467958_20221101.pdf转换成功!
file/134/20221101/new/01739856_20221101.pdf转换成功!
file/134/20221101/new/01733457_20221101.pdf转换成功!
file/134/20221101/new/03468040_20221101.pdf转换成功!
file/134/20221101/new/03417280_20221101.pdf转换成功!
file/134/20221101/new/03442669_20221101.pdf转换成功!
file/134/20221101/new/01738812_20221101.pdf转换成功!
file/134/20221101/new/01730159_20221101.pdf转换成功!
file/134/20221101/new/01732885_20221101.pdf转换成功!
file/134/20221101/new/03467902_20221101.pdf转换成功!
file/134/20221101/new/03391210_20221101.pdf转换成功!
file/134/20221101/new/01739088_20221101.pdf转换成功!
file/134/20221101/new/01732945_20221101.pdf转换成功!
file/134/20221101/new/01323056_20221101.pdf转换成功!
file/134/20221101/new/01735421_20221101.pdf转换成功!
file/134/20221101/new/03391206_20221101.pdf转换成功!
file/134/20221101/new/01732910_20221101.pdf转换成功!
file/134/20221101/new/03467771_20221101.pdf转换成功!
file/134/20221101/new/01732886_20221101.pdf转换成功!
file/134/20221101/new/03246101_20221101.pdf转换成功!
file/134/20221101/new/01730473_20221101.pdf转换成功!
file/134/20221101/new/01730157_20221101.pdf转换成功!
file/134/20221101/new/01733320_20221101.pdf转换成功!
file/134/20221101/new/03467826_20221101.pdf转换成功!
file/134/20221101/new/01734182_20221101.pdf转换成功!
file/134/20221101/new/03467813_20221101.pdf转换成功!
file/134/20221101/new/01733500_20221101.pdf转换成功!
file/134/20221101/new/01734117_20221101.pdf转换成功!
file/134/20221101/new/01733032_20221101.pdf转换成功!
file/134/20221101/new/01735111_20221101.pdf转换成功!
file/134/20221101/new/01731837_20221101.pdf转换成功!
file/134/20221101/new/01739997_20221101.pdf转换成功!
file/134/20221101/new/01319106_20221101.pdf转换成功!
file/134/20221101/new/01312007_20221101.pdf转换成功!
file/134/20221101/new/03417268_20221101.pdf转换成功!
file/134/20221101/new/01735056_20221101.pdf转换成功!
file/134/20221101/new/03467903_20221101.pdf转换成功!
file/134/20221101/new/01737731_20221101.pdf转换成功!
file/134/20221101/new/01730908_20221101.pdf转换成功!
file/134/20221101/new/01738043_20221101.pdf转换成功!
file/134/20221101/new/03467795_20221101.pdf转换成功!
file/134/20221101/new/01732812_20221101.pdf转换成功!
file/134/20221101/new/01730453_20221101.pdf转换成功!
file/134/20221101/new/03467930_20221101.pdf转换成功!
file/134/20221101/new/03442708_20221101.pdf转换成功!
file/134/20221101/new/03442796_20221101.pdf转换成功!
file/134/20221101/new/01733365_20221101.pdf转换成功!
file/134/20221101/new/03467817_20221101.pdf转换成功!
file/134/20221101/new/03417266_20221101.pdf转换成功!
file/134/20221101/new/01732854_20221101.pdf转换成功!
file/134/20221101/new/01733284_20221101.pdf转换成功!
file/134/20221101/new/03442668_20221101.pdf转换成功!
file/134/20221101/new/01732926_20221101.pdf转换成功!
file/134/20221101/new/01732869_20221101.pdf转换成功!
file/134/20221101/new/01732816_20221101.pdf转换成功!
file/134/20221101/new/01732890_20221101.pdf转换成功!
file/134/20221101/new/03442709_20221101.pdf转换成功!
file/134/20221101/new/03467858_20221101.pdf转换成功!
file/134/20221101/new/01733275_20221101.pdf转换成功!
file/134/20221101/new/01739109_20221101.pdf转换成功!
file/134/20221101/new/01733291_20221101.pdf转换成功!
file/134/20221101/new/01734037_20221101.pdf转换成功!
file/134/20221101/new/01733324_20221101.pdf转换成功!
file/134/20221101/new/01736302_20221101.pdf转换成功!
file/134/20221101/new/03442728_20221101.pdf转换成功!
file/134/20221101/new/03442769_20221101.pdf转换成功!
file/134/20221101/new/01733453_20221101.pdf转换成功!
file/134/20221101/new/01734776_20221101.pdf转换成功!
file/134/20221101/new/01735676_20221101.pdf转换成功!
file/134/20221101/new/01733499_20221101.pdf转换成功!
file/134/20221101/new/01735677_20221101.pdf转换成功!

区分新文件

In [ ]:
import os,sys,shutil
import glob
import time

fi_path = 'file/'
fls = glob.glob(f'{fi_path}*.pdf')
m_date = time.strptime('2022-10-28','%Y-%m-%d')
for fn in fls:
    c_time = time.gmtime(os.path.getctime(fn))
    if c_time > m_date:
        n_name = f'{fi_path}new/{os.path.basename(fn)}'
        if not os.path.exists(n_name):
            shutil.copyfile(fn,n_name)
        print(n_name)
In [ ]: