Files
jupyter/体质检测管理.ipynb
T
2021-12-21 12:26:06 +08:00

51 KiB

体质检测管理

体测单位信息导入

安庆炼化信息导入

In [ ]:
import openpyxl
import json
import pymongo

myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient["tice"]
mycol = mydb["unit"]

name = '中国石油化工股份有限公司安庆炼化分公司'
short_name = '安庆炼化'
myquery = {"name": name}
if mycol.find_one(myquery) is None:
    wb = openpyxl.load_workbook('data/中国石油化工股份有限公司安庆炼化分公司员工在职人员名单.xlsx')
    sheet = wb.active
    # sheets = wb.sheetnames
    depart = []
    dict1 = {}
    new_code = []
    for n in range(2, sheet.max_row+1):
        m_depart = sheet.cell(n,5).value
        if m_depart not in depart:
            depart.append(sheet.cell(n,5).value)
        # print(sheet.cell(n,5).value)

    dict1['name'] = '中国石油化工股份有限公司安庆炼化分公司'
    dict1['short_name'] = '安庆炼化'
    dict1['depart'] = depart
    mycol.insert_one(dict1)
    print('ok!')
else:
    print('该单位已存在!')

石家庄炼化信息导入

In [ ]:
import openpyxl
import json
import pymongo

myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient["tice"]
mycol = mydb["unit"]

name = '中国石油化工股份有限公司石家庄炼化分公司'
short_name = '石家庄炼化'
myquery = {"name": name}
if mycol.find_one(myquery) is None:
    wb = openpyxl.load_workbook('data/中国石油化工股份有限公司安庆炼化分公司员工在职人员名单.xlsx')
    sheet = wb.active
    # sheets = wb.sheetnames
    depart = []
    dict1 = {}
    new_code = []
    for n in range(2, sheet.max_row+1):
        m_depart = sheet.cell(n,5).value
        if m_depart not in depart:
            depart.append(sheet.cell(n,5).value)
        # print(sheet.cell(n,5).value)

    dict1['name'] = '中国石油化工股份有限公司安庆炼化分公司'
    dict1['short_name'] = '安庆炼化'
    dict1['depart'] = depart
    mycol.insert_one(dict1)
    print('ok!')
else:
    print('该单位已存在!')

录入体测信息

In [ ]:
import pymongo
from bson.objectid import ObjectId
from dateutil import parser

myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient["tice"]
mycol = mydb["unit"]
mycol1 = mydb["event"]
dict1 = {}

name = '中国石油化工股份有限公司安庆炼化分公司'
myquery = {"name": name}
dict1['code'] = 120
dict1['unit'] = '中国石油化工股份有限公司安庆炼化分公司'
dict1['address'] = '安徽安庆'
dict1['date_begin'] = '2021-09-08'
dict1['date_end'] = '2021-09-30'
if mycol.find_one(myquery) is None:
    print('体测单位不存在!')
else:
    myquery1 = {"name": name,"event.code": dict1['code']}
    if mycol.find_one(myquery1) is None:
        mycol.update_one(myquery,{'$push':{'event':dict1}})
        print('ok!')
    else:
        print('该体测信息已经存在!')

导出单位员工信息

In [ ]:
import openpyxl
import json
import pymongo
from bson.objectid import ObjectId

myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient["tice"]
mycol = mydb["person"]

wb = openpyxl.load_workbook('data/中国石油化工股份有限公司安庆炼化分公司员工在职人员名单.xlsx')
sheet = wb.active
# sheets = wb.sheetnames
list1 = []
person = {}
new_code = []
for n in range(2, sheet.max_row+1):
    code = sheet.cell(n, 1).value
    person.setdefault(code, {})
    dict1 = {}
    dict1['name'] = sheet.cell(n, 2).value
    dict1['sex'] = sheet.cell(n, 3).value
    dict1['unit'] = sheet.cell(n, 5).value
    if sheet.cell(n, 4).value is None:
        dict1['birth'] = sheet.cell(n, 6).value
    else:
        dict1['id_num'] = sheet.cell(n, 4).value
    person[code] = dict1
filename = '安庆炼化人员名单.json'
with open(filename, 'w') as fl:
    json.dump(person, fl, ensure_ascii=False)
print('ok')

获取测试人员名单导入数据库

In [ ]:
import json
import pymongo
from bson.objectid import ObjectId
import pymysql

myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient["tice"]
mycol = mydb["person"]

db = pymysql.connect("localhost","root","songyi","ydyb" )
cursor = db.cursor()

place_id = 120
exam_person = []
sql = f'SELECT distinct a.avatar_id FROM places_result AS a WHERE a.place_id={place_id} and a.avatar_id < 4999 ORDER BY a.avatar_id '
cursor.execute(sql)
results = cursor.fetchall()
cursor.close
for result in results:
    exam_person.append(str(result[0]).rjust(5,'0'))

filename = '安庆炼化人员名单.json'

list1 = []
list2 = []
with open(filename,'r') as fl:
    all_person = json.load(fl)
with open('result.json','r') as fl1:
    res = json.load(fl1)
for k, v in all_person.items():
    if k in exam_person:
        dict2 = {}
        dict3 = {}
        dict2['name'] = v['name']
        if v['sex'] == '男':
            dict2['sex'] = 'M'
        else:
            dict2['sex'] = 'F'
        if 'birth' in v:
            s = str(v['birth'])
            dict2['birth'] = f'{s[:4]}-{s[4:6]}-{s[6:8]}'
        if 'id_num' in v:
            s = v['id_num']
            dict2['id_num'] = s
            dict2['birth'] = f'{s[6:10]}-{s[10:12]}-{s[12:14]}'
        dict2.setdefault('exam',{})
        
        #dict3['code'] = 120
        dict3['sn'] = k
        dict3['result'] = res[k]
        dict2['exam'][str(place_id)] = dict3
        list1.append(dict2)
x = mycol.insert_many(list1)
mycol1 = mydb["event"]
myquery = {'code':120}
mycol1.update_one(myquery, {'$push': {'persons':x.inserted_ids}})
print('ok!')
In [ ]:
import json
import pymongo
from bson.objectid import ObjectId

myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient["tice"]
mycol = mydb["person1"]

db = pymysql.connect("localhost","root","songyi","ydyb" )
cursor = db.cursor()

place_id = 120
exam_person = []
sql = f'SELECT distinct a.avatar_id FROM places_result AS a WHERE a.place_id={place_id} and a.avatar_id < 4999 ORDER BY a.avatar_id '
cursor.execute(sql)
results = cursor.fetchall()
cursor.close
for result in results:
    exam_person.append(str(result[0]).rjust(5,'0'))

filename = '安庆炼化人员名单.json'

list1 = []
list2 = []
with open(filename,'r') as fl:
    all_person = json.load(fl)
with open('result.json','r') as fl1:
    res = json.load(fl1)
for k,v in all_person.items():
    if k in exam_person:
        dict2 = {}
        dict3 = {}
        dict2['name'] = v['name']
        if v['sex'] == '男':
            dict2['sex'] = 'M'
        else:
            dict2['sex'] = 'F'
        if 'birth' in v:
            s = str(v['birth'])
            dict2['birth'] = f'{s[:4]}-{s[4:6]}-{s[6:8]}'
        if 'id_num' in v:
            s = v['id_num']
            dict2['id_num'] = s
            dict2['birth'] = f'{s[6:10]}-{s[10:12]}-{s[12:14]}'
        dict2.setdefault('exam',[])
        dict3['code'] = 120
        dict3['sn'] = k
        dict3['result'] = res[k]
        dict2['exam'].append(dict3)
        list1.append(dict2)
x = mycol.insert_many(list1)
mycol1 = mydb["event"]
myquery = {'code':120}
mycol1.update_one(myquery,{'$push':{'persons':x.inserted_ids}})
print('ok!')

测试项目添加测试人员名单

In [ ]:
import json
from bson.objectid import ObjectId
import pymongo
import pymysql

db = pymysql.connect("localhost","root","songyi","ydyb" )
cursor = db.cursor()

list1 = []
sql = f'SELECT distinct a.avatar_id FROM places_result AS a WHERE a.place_id={place_id} and a.avatar_id < 4999 ORDER BY a.avatar_id '
cursor.execute(sql)
results = cursor.fetchall()
cursor.close
for result in results:
    list1.append(str(result[0]).rjust(5,'0'))

myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient["tice"]
mycol = mydb["event"]
myquery = {'code':120}
mycol.update_one(myquery,{'$push':{'persons':list1}})
    
print('ok')
    
    

获取人员测试成绩

In [ ]:
import pymysql
import json
import time

filename = 'item.json'
item = {}
unit = {}
with open(filename,'r') as fl:
    dict1 = json.load(fl) 
for k,v in dict1.items():
    item[k] = v
user_id = 5
place_id =120
#user = '包永'
db = pymysql.connect("localhost","root","songyi","ydyb" )
cursor = db.cursor()

sql = f'SELECT a.item_id,a.performance,a.score,DATE_FORMAT(a.date,"%Y-%m-%d") as date1,a.avatar_id FROM places_result AS a WHERE a.place_id={place_id} AND a.avatar_id < 4999 ORDER BY a.avatar_id,date1'
cursor.execute(sql)
re_ta = {}
dict1 = {}
print("\n运动项目信息:")
results = cursor.fetchall()
for result in results:    
    user = str(result[4]).rjust(5,'0')
    m_item = str(result[0])
    
    re_ta.setdefault(user,{})
    re_ta[user]['date'] =result[3]
    item_name = item[m_item]['name']
    re_ta[user].setdefault(item_name,{})
    
    #dict1.setdefault(item[m_item]['name'],{})
    score = result[1]/item[m_item]['divisor']
    #dict1[item[m_item]['name']]['成绩'] =f'{score} {item[m_item]["unit"]}'
    #dict1[item[m_item]['name']]['得分'] =result[2]
    re_ta[user][item_name]['成绩'] = f'{score} {item[m_item]["unit"]}'
    re_ta[user][item_name]['得分'] =result[2]
    
    #re_ta[user] = dict1
    #print(re_ta)
filename = 'result.json'
with open(filename,'w') as fl:
    json.dump(re_ta, fl,ensure_ascii=False) 
print('ok')

读取体测报告信息

In [ ]:
import pdfplumber

# 读取 PDF 文档
pdf = pdfplumber.open("file/211027/114.pdf")

# 获取页数
print("总页数:",len(pdf.pages))
print("-----------------------------------------")
n = len(pdf.pages)
# 读取第 4 页;索引从 0开始
page = pdf.pages[n-2] 
print("本页:",page.page_number)
print("-----------------------------------------")
text = page.extract_text()
#for s in text:
#    print(s)
print(text)
print(text.split('\n'))
In [ ]:
import pdfplumber
import pymysql
"""获取人员测试成绩"""
user_id = 5
place_id =120
db = pymysql.connect("localhost","root","songyi","ydyb" )
cursor = db.cursor()
sql = f'SELECT a.item_id,a.performance,a.score,a.date FROM places_result AS a WHERE a.place_id={place_id} AND a.avatar_id={user_id}'
cursor.execute(sql)
re_ta = {}
print("\n运动项目信息:")
results = cursor.fetchall()
for result in results:
# print ("%d--%s" %(result[0],result[1]))
    re_ta[result[0]] = result[1]

dict1 = {}

# 读取 PDF 文档
pdf = pdfplumber.open("5.pdf")

# 获取页数
num = len(pdf.pages)
page = pdf.pages[0] 
text = page.extract_text()
dict1['name'] = text.split('\n')[2]
dict1['sn'] = text.split('\n')[4]


print(dict1)

体测项目信息

In [ ]:
import pymysql
import json

db = pymysql.connect("localhost","root","songyi","ydyb" )
cursor = db.cursor()
sql = "SELECT a.id,a.name, b.name,b.divisor FROM items AS a,items_unit AS b WHERE a.unit_id = b.id"
cursor.execute(sql)
dict1 = {}

results = cursor.fetchall()
for result in results:
#    print ("%d--%s" %(result[0],result[1]))
    item = {}
    id = result[0]
    dict1.setdefault(id,{})
    item['name'] = result[1]
    item['unit'] = result[2]
    item['divisor'] = result[3]
    dict1[id] = item
filename = 'item.json'
with open(filename,'w') as fl:
    json.dump(dict1, fl,ensure_ascii=False) 
with open(filename,'r') as fl:
    dict1 = json.load(fl) 
for k,v in dict1.items():
    print(k,v)
In [ ]:
import json
filename = 'item.json'
item = {}
with open(filename,'r') as fl:
    dict1 = json.load(fl) 
for k,v in dict1.items():
    item[k] = v
print(item['1'])

压缩体测报告

In [ ]:
from pdf2image import convert_from_path, convert_from_bytes
import img2pdf  
import glob
import os,sys
import tempfile
from pdf2image.exceptions import (
    PDFInfoNotInstalledError,
    PDFPageCountError,
    PDFSyntaxError
)
#images = convert_from_path('1.pdf',dpi=200,fmt='jpg', output_folder='./sample_data')
fl_path = 'file/split'
new_path ='file/new_split'
old = glob.glob(f'{fl_path}/*.pdf')
old.sort()
for old_file in old:
    s = os.path.basename(old_file).split('.')[0].rjust(5,'0')
    new_file = f'{new_path}/{s}.pdf'
    
    with tempfile.TemporaryDirectory() as path:
        images_from_path = convert_from_path(old_file, dpi=100,fmt='jpg', output_folder=path)
        fl=glob.glob(f'{path}/*.jpg')
        fl.sort()
        a4inpt = (img2pdf.mm_to_pt(210),img2pdf.mm_to_pt(297))
        layout_fun = img2pdf.get_layout_fun(a4inpt)
        with open(new_file,"wb") as f:
            f.write(img2pdf.convert(fl,layout_fun=layout_fun))


    #print(path)

    print(new_file,'ok')
#print(old)

上传体测报告

In [ ]:
import glob
import os,sys
import pymongo
from gridfs import GridFS
from bson.objectid import ObjectId

myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient["tice"]
mycol = mydb["person"]
#体质监测编号
code = '120'
UploadCache = "uploadcache"
dbURL = "mongodb://localhost:27017"

#上传文件
def upLoadFile(file_coll,file_name,data_link):
    
    filter_condition = {"filename": code + '-' + os.path.basename(file_name), "url": data_link}
    gridfs_col = GridFS(mydb, collection=file_coll)
    file_ = "0"
    query = {"filename":""}
    query["filename"] = filter_condition["filename"]#file_name

    if gridfs_col.exists(query):
        print('已经存在该文件')
    else:

        with open(file_name, 'rb') as file_r:
            file_data = file_r.read()
            file_ = gridfs_col.put(data=file_data, **filter_condition)  # 上传到gridfs

            print(file_)


    return file_   


dict1 = {}
list1 = []
#mycol.update_one(myquery,{'$push':{'persons':list1}})
fl_path = 'file/new'
fl=glob.glob(f'{fl_path}/*.pdf')
fl.sort()
for fi in fl:
    dict1 = {}
    s = os.path.basename(fi).split('.')[0]
    print(s)    
    ss = upLoadFile("report",fi,"")
    
    print(s)
    myquery = {f'exam.{code}.sn':s}
    mycol.update_one(myquery,{'$set':{f'exam.{code}.report':ss}},True)
    #print(myquery)
    

查询体测报告

In [ ]:
import glob
import os,sys
import pymongo
from gridfs import GridFS


myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient["tice"]
mycol = mydb["event"]
sn = '00005'
s = f'report.{sn}'
myquery = {s:{'$exists':True},'code':120}
x = mycol.find_one(myquery,{s:1})
if x:
    print(x['report'][sn])
else:
    print('no record!')
#print(type(x))

脊椎代码表导入

In [ ]:
import openpyxl
import json
   
wb = openpyxl.load_workbook('file/脊柱症状自我诊断表代码表.xlsx')
sheet = wb.active
#sheets = wb.sheetnames
dict1 = {}
for n in range(1,sheet.max_row+1):
    dict1[sheet.cell(n,1).value] = sheet.cell(n,2).value    
filename = '脊柱症状自我诊断表代码表.json'
with open(filename,'w') as fl:
    json.dump(dict1, fl,ensure_ascii=False) 
print(dict1)

脊椎症状自我诊断表导入

In [ ]:
import openpyxl
import json

with open('脊柱症状自我诊断表代码表.json','r') as fl:
    dm = json.load(fl)
wb = openpyxl.load_workbook('file/脊柱症状自我诊断表统计.xlsx')
sheet = wb.active
#sheets = wb.sheetnames
dict1 = {}
for n in range(1,sheet.max_row+1):
    mdm = sheet.cell(n,1).value
    dict1.setdefault(mdm,{})
    dict2 = {}
    list1 = []
    for i in range(2,36):
        if sheet.cell(n,i).value is None:
            break
        else:
            s = str(sheet.cell(n,i).value)
            if s.isnumeric():                
                list1.append(dm[s])
            else:
                dict2['备注'] = s
    dict2['症状'] = list1
    dict1[mdm] = dict2
filename = '脊柱症状自我诊断表统计.json'
with open(filename,'w') as fl:
    json.dump(dict1, fl,ensure_ascii=False) 
print('ok')

脊柱症状统计

脊椎症状自评代码矩阵生成

In [ ]:
import json

wb = openpyxl.load_workbook('data/脊椎症状自评矩阵代码表.xlsx')
sheet = wb.active
dict1 = {}

for n in range(2,sheet.max_row+1):
    mxh = sheet.cell(n,1).value
    dict1.setdefault(mxh,{})
    mwt = sheet.cell(n,2).value
    mtj = sheet.cell(n,3).value
    mdm = sheet.cell(n,4).value
    dict1[mxh]['代码'] = mdm
    dict1[mxh]['问题'] = mwt
    dict1[mxh]['条件'] = mtj
    
filename = 'data/脊柱症状自评代码矩阵.json'
with open(filename,'w') as fl:
    json.dump(dict1, fl,ensure_ascii=False) 
print('ok')

脊椎症状自评数据矩阵生成

In [ ]:
import json
dict1 = {}
dict1['颈椎'] = 1000
dict1['胸椎'] = 100
dict1['腰椎'] = 10
dict1['骶尾椎'] = 1
dict_all = {}

filename = '脊柱症状自我诊断表统计.json'
with open(filename,'r') as fl:
    dict2 = json.load(fl) 

list_all = dict2.keys()
filename = '脊柱症状统计汇总表.json'
with open(filename,'r') as fl:
    dict2 = json.load(fl) 
list_zz = dict2.keys()
sorted(list_all)
for item in list_all:
    if item not in list_zz:
        dict_all[item] = '0000'
    else:
        m_sum = 0
        for item1 in dict2[item]:
            m_sum += dict1[item1]
        dict_all[item] = str(m_sum).rjust(4,'0')
filename = 'data/脊柱症状自评数据矩阵.json'
with open(filename,'w') as fl:
    json.dump(dict_all, fl,ensure_ascii=False) 
print('ok')        
print(len(dict_all))
    

分部门、性别人数统计

In [ ]:
import json
import openpyxl
import pymysql
import json

db = pymysql.connect("localhost","root","songyi","ydyb" )
cursor = db.cursor()

fi_xls = 'data/北海炼化名单表(前后台).xlsx'
wb = openpyxl.load_workbook(fi_xls)
sheet = wb.active
depart = {}
m_xx ={}
for n in range(2,sheet.max_row+1):    
    m_dm = str(sheet.cell(n,1).value)
    m_xb = sheet.cell(n,3).value
    m_depart = sheet.cell(n,6).value
    depart[m_dm] = m_depart
    m_xx[m_dm] = [m_xb,m_depart] #人员信息
        
filename = 'data/脊柱症状自评代码矩阵.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
dict2 = dict1.values()
dm = {}
for item in dict2:
    dm[item['代码']] = item['问题']
print(dm)
list_dm = dm.keys()
filename = 'data/脊柱症状自评数据矩阵.json'
with open(filename,'r') as fl:
    data = json.load(fl)
# 生成人员信息表,含性别、部门
list1 = []
for k, v in data.items():
    list2 = []
    list2.append(k)
    list2.append(m_xx[k][0])
    list2.append(m_xx[k][1])
    list2.append(v)
    list1.append(list2)

'''sql = 'insert into tongji(ygdm,xb,bm,jzdm) values(%s,%s,%s,%s)'
#try:
  # 执行sql语句
cursor.executemany(sql, list1)
  # 提交到数据库执行
db.commit()
#except :
  # 如果发生错误则回滚
#    db.rollback()
# 关闭游标
cursor.close()
# 关闭数据库连接
db.close()'''
sql = 'SELECT bm,xb,jzdm,COUNT(jzdm) FROM tongji where bm="管理部门" GROUP BY bm,jzdm,xb ORDER BY jzdm,xb'
cursor.execute(sql)
results = cursor.fetchall()
result = {}
print('管理部门')
for row in results:
    result.setdefault(row[2],{})
    result[row[2]][row[1]] = row[3]
#print(result)    
for k, v in dm.items():
    if k in result.keys():
        if '男' in result[k].keys():
            nan = result[k]['男']
        else:
            nan = 0
        if '女' in result[k].keys():
            nv = result[k]['女']
        else:
            nv = 0
        print(v,'男',nan,'女',nv)
    else:
        print(v,'男',0,'女',0)

sql = 'SELECT bm,xb,jzdm,COUNT(jzdm) FROM tongji where bm="一线部门" GROUP BY bm,jzdm,xb ORDER BY jzdm,xb'
cursor.execute(sql)
results = cursor.fetchall()
result = {}
print('一线部门')
for row in results:
    result.setdefault(row[2],{})
    result[row[2]][row[1]] = row[3]
#print(result)    
for k, v in dm.items():
    if k in result.keys():
        if '男' in result[k].keys():
            nan = result[k]['男']
        else:
            nan = 0
        if '女' in result[k].keys():
            nv = result[k]['女']
        else:
            nv = 0
        print(v,'男',nan,'女',nv)
    else:
        print(v,'男',0,'女',0)

脊椎症状自评数据统计(人数)

In [ ]:
import json
import openpyxl

fi_xls = 'data/北海炼化名单表(前后台).xlsx'
wb = openpyxl.load_workbook(fi_xls)
sheet = wb.active
depart = {}
for n in range(2,sheet.max_row+1):    
    m_dm = str(sheet.cell(n,1).value)
    m_depart = sheet.cell(n,6).value
    depart[m_dm] = m_depart
        
filename = 'data/脊柱症状自评代码矩阵.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
dict2 = dict1.values()
dm = {}
for item in dict2:
    dm[item['代码']] = item['问题']
print(dm)
list_dm = dm.keys()
filename = 'data/脊柱症状自评数据矩阵.json'
with open(filename,'r') as fl:
    data = json.load(fl)
dict_tj = {}
for k, v in data.items():
    dict_tj.setdefault(v,0)
    dict_tj[v] +=1


result = {}
for k, v in data.items():
    result.setdefault(depart[k],{})
    result[depart[k]].setdefault(v,0)
    result[depart[k]][v] += 1
#new_dict = sorted(result.items(), key = lambda kv:(kv[1], kv[0]),reverse=True)        
#print(part)
print(result)
wb = openpyxl.Workbook()
m_totle = 0
sheet = wb.active
i = 1
for k, v  in result.items():
    print(k)
    dict3 = {}
    for k1, v1 in v.items():
        dict3[k1] = v1
    for m_dm in dm:
        if m_dm in dict3.keys():
            print(dm[m_dm],dict3[m_dm])

导入基础数据

In [ ]:
import json
import openpyxl

## 导入脊椎症状对照表
wb = openpyxl.load_workbook('file/脊椎症状对应表.xlsx')
sheet = wb.active
dict1 = {}
'''for n in range(2,sheet.max_row+1):
    mjz = sheet.cell(n,1).value
    dict1.setdefault(mjz,[])
    dict1[mjz].append(sheet.cell(n,2).value)
#print(dict1)'''
for n in range(2,sheet.max_row+1):
    mzz = sheet.cell(n,2).value
    mjz = sheet.cell(n,1).value
    dict1[mzz] = mjz
#print(dict1)
filename = '脊柱症状自我诊断表统计.json'
result = {}
with open(filename,'r') as fl:
    dict2 = json.load(fl) 
#print(dict1)
for k, v in dict2.items():
    result.setdefault(k,[])
    for k1, v1 in v.items():        
        for zz in v1:
            if zz in dict1.keys() and dict1[zz] not in result[k]:
                result[k].append(dict1[zz])

for k in list(result.keys()):
    if not result.get(k):
        del result[k]
#print(result)
filename = '脊柱症状统计汇总表.json'
with open(filename,'w') as fl:
    json.dump(result, fl,ensure_ascii=False) 
print('ok')

统计人数(脊椎)

In [ ]:
import json
import openpyxl
import os,sys,shutil

## 导入脊椎症状对照表
wb = openpyxl.load_workbook('file/脊椎症状对应表.xlsx')
sheet = wb.active
dict1 = {}
for n in range(2,sheet.max_row+1):
    mzz = sheet.cell(n,2).value
    mjz = sheet.cell(n,1).value
    dict1[mzz] = mjz
fi_xls = os.getcwd() + '/北海炼化名单表(202110).xlsx'
wb = openpyxl.load_workbook(fi_xls)
sheet = wb.active
depart = {}
part = []
for n in range(2,sheet.max_row+1):    
    m_dm = str(sheet.cell(n,1).value)
    m_depart = sheet.cell(n,5).value
    depart[m_dm] = m_depart
    if m_depart not in part:
        part.append(m_depart)
filename = '脊柱症状统计汇总表.json'
with open(filename,'r') as fl:
    dict2 = json.load(fl) 
result = {}
#print(dict2)
for k, v in dict2.items():
    result.setdefault(depart[k],{})
    for v1 in v:
        result[depart[k]].setdefault(v1,0)
        result[depart[k]][v1] += 1
#print(part)
print(result)
wb = openpyxl.Workbook()
m_totle = 0
sheet = wb.active
i = 1
for name in part:
    m_sum = 0
    sheet[f'A{i}'] = name
    i +=1
    sheet[f'A{i}'] = '脊椎'
    sheet[f'B{i}'] = '人数'
    i +=1
    new_dict = sorted(result[name].items(), key = lambda kv:(kv[1], kv[0]),reverse=True)
    for k, v in new_dict:
        sheet[f'A{i}'] = k
        sheet[f'B{i}'] = v
        i +=1
        m_sum +=v
    sheet[f'A{i}'] = '合计'
    sheet[f'B{i}'] = m_sum
    m_totle = m_totle + m_sum
    i +=2
sheet[f'A{i}'] = '总计'
sheet[f'B{i}'] = m_totle
wb.save('test4.xlsx')

统计全员人数(脊椎)

In [ ]:
import json
import openpyxl
import os,sys,shutil

## 导入脊椎症状对照表
wb = openpyxl.load_workbook('file/脊椎症状对应表.xlsx')
sheet = wb.active
dict1 = {}

filename = '脊柱症状统计汇总表.json'
with open(filename,'r') as fl:
    dict2 = json.load(fl) 
result = {}
#print(dict2)
for k, v in dict2.items():    
    for v1 in v:
        result.setdefault(v1,0)
        result[v1] += 1
#print(part)
print(result)
wb = openpyxl.Workbook()
m_sum = 0
sheet = wb.active
i = 1
sheet[f'A{i}'] = name
i +=1
sheet[f'A{i}'] = '脊椎'
sheet[f'B{i}'] = '人数'
i +=1
new_dict = sorted(result.items(), key = lambda kv:(kv[1], kv[0]),reverse=True)
for k, v in new_dict:
    sheet[f'A{i}'] = k
    sheet[f'B{i}'] = v
    i +=1
    m_sum +=v
sheet[f'A{i}'] = '合计'
sheet[f'B{i}'] = m_sum

wb.save('test4.xlsx')

统计人数(症状)

In [ ]:
import json
import openpyxl
import os,sys,shutil

## 导入脊椎症状对照表

wb = openpyxl.load_workbook('file/脊椎症状对应表.xlsx')
sheet = wb.active
dict1 = {}
for n in range(2,sheet.max_row+1):
    mzz = sheet.cell(n,2).value
    mjz = sheet.cell(n,1).value
    dict1[mzz] = mjz
fi_xls = os.getcwd() + '/北海炼化名单表(202110).xlsx'
wb = openpyxl.load_workbook(fi_xls)
sheet = wb.active
depart = {}
part = []
for n in range(2,sheet.max_row+1):    
    m_dm = str(sheet.cell(n,1).value)
    m_depart = sheet.cell(n,5).value
    depart[m_dm] = m_depart
    if m_depart not in part:
        part.append(m_depart)
filename = '脊柱症状自我诊断表统计.json'
result = {}
with open(filename,'r') as fl:
    dict2 = json.load(fl) 
#print(dict1)
for k, v in dict2.items():
    result.setdefault(k,[])
    for k1, v1 in v.items():        
        for zz in v1:
            if zz in dict1.keys():
                result[k].append(zz)
for k in list(result.keys()):
    if not result.get(k):
        del result[k]
#print(result)
result1 = {}
#print(dict2)
for k, v in result.items():
    result1.setdefault(depart[k],{})
    for v1 in v:
        result1[depart[k]].setdefault(v1,0)
        result1[depart[k]][v1] += 1
#print(result1)

wb = openpyxl.Workbook()
sheet = wb.active
i = 1
m_totle = 0
for name in part:
    sheet[f'A{i}'] = name
    i +=1
    sheet[f'A{i}'] = '症状'
    sheet[f'B{i}'] = '人数'
    i +=1
    m_sum = 0
    new_dict = sorted(result1[name].items(), key = lambda kv:(kv[1], kv[0]),reverse=True)
    for k, v in new_dict:
        sheet[f'A{i}'] = k
        sheet[f'B{i}'] = v
        m_sum +=v
        i +=1
    sheet[f'A{i}'] = '合计'
    sheet[f'B{i}'] = m_sum
    m_totle = m_totle + m_sum
    i +=2
sheet[f'A{i}'] = '总计'
sheet[f'B{i}'] = m_totle
wb.save('test3.xlsx')

全员统计(症状)

In [ ]:
import json
import openpyxl
import os,sys,shutil

## 导入脊椎症状对照表


filename = '脊柱症状自我诊断表统计.json'
result = {}
with open(filename,'r') as fl:
    dict2 = json.load(fl) 
#print(dict1)
for k, v in dict2.items():
    result.setdefault(k,[])
    for k1, v1 in v.items():        
        for zz in v1:
            if zz in dict1.keys():
                result[k].append(zz)
for k in list(result.keys()):
    if not result.get(k):
        del result[k]

result1 = {}
#print(dict2)
for k, v in result.items():
    
    for v1 in v:
        result1.setdefault(v1,0)
        result1[v1] += 1
#print(result1)

wb = openpyxl.Workbook()
sheet = wb.active
i = 1
m_totle = 0
sheet[f'A{i}'] = name
i +=1
sheet[f'A{i}'] = '症状'
sheet[f'B{i}'] = '人数'
i +=1
m_sum = 0
new_dict = sorted(result1.items(), key = lambda kv:(kv[1], kv[0]),reverse=True)
for k, v in new_dict:
    sheet[f'A{i}'] = k
    sheet[f'B{i}'] = v
    m_sum +=v
    i +=1
sheet[f'A{i}'] = '合计'
sheet[f'B{i}'] = m_sum

wb.save('test3.xlsx')
In [ ]:
import json
import openpyxl

## 导入脊椎症状对照表
wb = openpyxl.load_workbook('file/脊椎症状对应表.xlsx')
sheet = wb.active
dict1 = {}
'''for n in range(2,sheet.max_row+1):
    mjz = sheet.cell(n,1).value
    dict1.setdefault(mjz,[])
    dict1[mjz].append(sheet.cell(n,2).value)
#print(dict1)'''
for n in range(2,sheet.max_row+1):
    mzz = sheet.cell(n,2).value
    mjz = sheet.cell(n,1).value
    dict1[mzz] = mjz
#print(dict1)
filename = '脊柱症状自我诊断表统计.json'
result = {}
with open(filename,'r') as fl:
    dict2 = json.load(fl) 
#print(dict1)
for k, v in dict2.items():
    result.setdefault(k,[])
    for k1, v1 in v.items():
        for zz in v1:
            print(zz)
                

心理健康量表统计导入

In [ ]:
import openpyxl
import json

wb = openpyxl.load_workbook('file/北海炼化公司职工心理健康量表统计.xlsx')
sheet = wb.active

dict1 = {}
for n in range(2,sheet.max_row+1):
    mdm = sheet.cell(n,1).value
    dict1.setdefault(mdm,{})
    dict2 = {}
    list1 = [1,2,3,4,5,None]
    for i in range(2,42):
        #if sheet.cell(n,i).value not in list1:
        #    print(f'error!{mdm}--{sheet.cell(n,i).value}')
        dict2[i-1] = sheet.cell(n,i).value
    dict1[mdm] = dict2
filename = '北海炼化公司职工心理健康量表统计.json'
with open(filename,'w') as fl:
    json.dump(dict1, fl,ensure_ascii=False) 
print('ok')

查询心理健康量表编号重复

In [ ]:
import openpyxl

wb = openpyxl.load_workbook('file/北海炼化公司职工心理健康量表统计.xlsx')
sheet = wb.active
list1 = []
dict1 = {}
i = 0
for n in range(2,sheet.max_row+1):
    mdm = sheet.cell(n,1).value
    if mdm in list1:
        print(F'{i}-{mdm}已存在!')
    else:
        list1.append(mdm)
    i = i + 1
    

统计导入JSON文件记录数

In [ ]:
import json
filename = '脊柱症状统计汇总表.json'
item = {}
with open(filename,'r') as fl:
    dict1 = json.load(fl) 

print(len(dict1))

拆分调查报告PDF页面

In [ ]:
import pdfplumber
import glob
import os,sys
import json
from PyPDF2 import PdfFileWriter, PdfFileReader, PdfFileMerger


filename = '北海炼化公司职工心理健康量表统计.json'
list1 = []
with open(filename,'r') as fl:
    dict1 = json.load(fl)
'''
for k, v in dict1.items():
    if None in v.values():
        list1.append(k)
'''

list1 = dict1.keys()

fl_path = 'file/211027'
new_path ='file/split/'
old = glob.glob(f'{fl_path}/*.pdf')
old.sort()

for old_file in old:
    name = os.path.basename(old_file).split('.')[0]
    if name in list1:
        pdfWriter = PdfFileWriter()
        pdf_reader = PdfFileReader(old_file)
        n = pdf_reader.numPages
        pdfWriter.addPage(pdf_reader.getPage(n-2))
        split_file = f'{new_path}{name}.pdf'
        with open(split_file, 'wb') as pdfOutputFile:
            pdfWriter.write(pdfOutputFile)

拆分PDF指定F页

In [ ]:
import pdfplumber
import glob
import os,sys
import json
from PyPDF2 import PdfFileWriter, PdfFileReader, PdfFileMerger


filename = '北海炼化公司职工心理健康量表统计.json'
list1 = []
with open(filename,'r') as fl:
    dict1 = json.load(fl)
'''
for k, v in dict1.items():
    if None in v.values():
        list1.append(k)
'''

list1 = dict1.keys()

fl_path = 'file/211027'
new_path ='file/split/'
old = glob.glob(f'{fl_path}/*.pdf')
old.sort()

for old_file in old:
    name = os.path.basename(old_file).split('.')[0]
    pdfWriter = PdfFileWriter()
    pdf_reader = PdfFileReader(old_file)
    n = pdf_reader.numPages
    pdfWriter.addPage(pdf_reader.getPage(n-1))
    split_file = f'{new_path}{name}.pdf'
    with open(split_file, 'wb') as pdfOutputFile:
        pdfWriter.write(pdfOutputFile)
In [ ]: