Files
jupyter/体测单位/新疆油田采油工艺研究院.ipynb
T
2025-07-26 08:12:26 +08:00

19 KiB

体测人员导入

In [30]:
import openpyxl
import json


wb = openpyxl.load_workbook('data/新疆油田采油工艺研究院.xlsx',data_only=True)
sheet = wb.active
# sheets = wb.sheetnames
person = {}

for n in range(2, sheet.max_row+1):
    code = int(sheet.cell(n, 1).value)
    person.setdefault(code, {})
    dict1 = {}
    dict1['name'] = sheet.cell(n, 2).value
    dict1['sex'] = sheet.cell(n, 3).value
    if sheet.cell(n,4).value is not None:
        dict1['unit'] = sheet.cell(n, 4).value
    else:
        dict1['unit'] = ''
    dict1['birth'] = str(sheet.cell(n, 5).value).replace('/','-').split(' ')[0]
    dict1['phone'] = sheet.cell(n, 6).value 
    person[code] = dict1
filename = 'data/新疆油田采油工艺研究院.json'
with open(filename, 'w') as fl:
    json.dump(person, fl, ensure_ascii=False)
print(len(person),'ok')
71 ok

获取人员测试成绩

In [31]:
import json
import datetime
import csv
from datetime import date
import my_module as My

filename = 'data/新疆油田采油工艺研究院.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl) 
filename = 'data/marks_20250726.csv'
re_ta = My.get_result(filename,dict1)


filename = 'data/result_新疆油田采油工艺研究院.json'
with open(filename,'w') as fl:
    json.dump(re_ta, fl, ensure_ascii=False) 
print(len(re_ta))
71

生成测试得分

In [32]:
import json
import time
import my_module as My

#list_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp','height','weight']
list_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp']
filename = 'data/result_新疆油田采油工艺研究院.json'
with open(filename,'r') as fl:
    dict2 = json.load(fl) 
for k, v in dict2.items():
    #print(k)
    if v['sex'] == '男':
        sex = 'M'
    else:
        sex = 'F'            
    if 'bmi' in v.keys():
        #bmi_data = v['height']['成绩'].split()[0]+','+ v['weight']['成绩'].split()[0]
        bmi_data = v['bmi']['成绩']
        data1 = {'code':k,'sex':sex,'age':v['age'],'item':'HeightWeight','result':bmi_data}
        dict2[k]['bmi'] = {}
        dict2[k]['bmi']['成绩'] = bmi_data
        dict2[k]['bmi']['score'] = My.cal_bmi(data1)
    for item_en in list_item:
        if item_en in v.keys():            
            data1 = {'code':k,'sex':sex,'age':v['age'],'item':item_en,'result':float(v[item_en]['成绩'].split()[0])}
            #print(k,v['name'])
            dict2[k][item_en]['score'] = My.cal_score(data1)
            #print(k,v[item_en]['成绩'],cal_score(data1))

filename = f'data/result_新疆油田采油工艺研究院.json'
with open(filename,'w') as fl:
    json.dump(dict2,fl , ensure_ascii=False) 
print('ok!')        
ok!

导出测试人员信息

In [33]:
import json
import openpyxl

items = ['lung','grip','flexion','jump','pushup','situp','balance','reaction','step']
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(5,'0'))
    list2.append(v['name'])    
    list2.append(dict2[k]['sex'])
    list2.append(dict2[k]['unit'])
    if 'bmi' in v.keys():
        height = v['bmi']['成绩'].split(',')[0]
        weight = v['bmi']['成绩'].split(',')[1]
        list2.append(height)
        list2.append(weight)
    else:
        list2.append('')
        list2.append('')
    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/新疆油田采油工艺研究院测试情况明细表(截至20250725).xlsx'
wb = openpyxl.Workbook()
sheet = wb.active
sheet.append(title)
for row in list1:
    sheet.append(row)
    
wb.save(filename)

统计问卷人员情况

In [9]:
import json
import csv
import openpyxl
import time
from datetime import date


filename = 'data/新疆油田采油工艺研究院.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)

phone1 =  set()
phone2 = set()
for k,v in dict1.items():
    phone1.add(v['phone'])
list1 = []
filename = 'data/survey_records_20250725.csv'
with open(filename,'r',newline='') as csv_file:
    fl = csv.reader(csv_file,delimiter=',')
    header = next(fl)    
    for line in fl:
        list1.append(line)

i =1
list2 = []
for item in list1:
    code = int(item[3])
    for k, v in dict1.items():
        list3 = []
        if v['phone'] == code:            
            list3.append(k)
            list3.append(v['name'])
            list3.append(v['sex'])
            list3.append(v['unit'])
            list3.append(code)
            list2.append(list3)
filename = 'data/新疆油田采油工艺研究院问卷情况表.xlsx'
wb = openpyxl.Workbook()
sheet = wb.active
#sheet.append(title)
for row in list2:
    sheet.append(row)
    
wb.save(filename)  
In [29]:
import json
import csv
import openpyxl
import time
from datetime import date


filename = 'data/新疆油田采油工艺研究院.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)

phone1 =  set()
phone2 = set()
for k,v in dict1.items():
    phone1.add(v['phone'])
list1 = []
filename = 'data/survey_records_20250725.csv'
with open(filename,'r',newline='') as csv_file:
    fl = csv.reader(csv_file,delimiter=',')
    header = next(fl)    
    for line in fl:
        list1.append(line)

for item in list1:
    code = int(item[3]) 
    content = json.loads(item[4])
    name = item[4]
    if code not in phone1:   
        print(code,content['name'])
18610346996 杨霖坤
13121563838 高洁
15349912576 韩晓强
13899592125 粟刘
15509909309 关子越
13579524663 王金龙
13121073480 罗腾
13899586957 袁鹏
13999311222 闫鹏
15609905966 李阳
18909908078 吕长智
18040802080 王立坤
17709901414 侯丽娜
17399375199 史瑶
18699008113 荣玉健

导入问卷信息

In [34]:
import json
import csv
import openpyxl
import time
from datetime import date

dict1 = {}

filename = 'data/result_新疆油田采油工艺研究院.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
filename = 'data/新疆油田采油工艺研究院.json'
with open(filename,'r') as fl:
    dict3 = json.load(fl)

phone =  {}
for k,v in dict3.items():
    if 'phone' in v.keys():
        phone[v['phone']] = k

list1 = []
filename = 'data/survey_records_20250725.csv'
with open(filename,'r',newline='') as csv_file:
    fl = csv.reader(csv_file,delimiter=',')
    header = next(fl)    
    for line in fl:
        list1.append(line)



nn = 0
for item in list1:
     
     if int(item[3]) in phone.keys():
        code = phone[int(item[3])]
        tcm = []
        spine = []
        for i in range(0,60):
            tcm.append(0)
        for i in range(0,26):
            spine.append(0)
       
        content = json.loads(item[4])
        if code not in dict1.keys():
            dict1[code] = dict3[code]
            rq = date.fromisoformat(item[5].replace('/','-').split(' ')[0])
            dict1[code]['rq'] = item[5].replace('/','-').split(' ')[0]
        for k, v in content.items():
            
            if 'tcm' in k:
                i = int(k[3:])
                tcm[i-1] = int(v)
            if 'spine' in k:
                i = int(k[5:])
                spine[i-1] = int(v)
        
        if 'tcm' in item[4]:
            
            dict1[code]['tcm'] = tcm
        if 'spine' in item[4]:
            for ii in range(25,23,-1):
                spine[ii] = spine[ii-1]
            spine[22] = 0 
            dict1[code]['spine'] = spine
        birth = date.fromisoformat(dict3[code]['birth'].replace('/','-'))
        rq = date.fromisoformat(item[5].replace('/','-').split(' ')[0])
        days =  (rq-birth).days          
        dict1[code]['age'] = int(days/365)
        dict1[code]['month'] = int(days/365*12)
        #print(phone[item[2]])
        nn+=1
filename = 'data/result_新疆油田采油工艺研究院-1.json'

with open(filename,'w') as fl:
    json.dump(dict1, fl, ensure_ascii=False)
print(nn)
54

生成报告

In [35]:
import requests
import json
import openpyxl


headers = {
    "Content-Type": "application/json; charset=UTF-8"
    }
filename = 'data/result_新疆油田采油工艺研究院-1.json'
with open(filename,'r') as fl:
    dict1 = json.load(fl)
list1 = []
file_path ='./新疆油田采油工艺研究院/'
list_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp','bmi']
i=0
list2 = []
for  k, v in dict1.items():
    list1 = []
    mydata = {}
    
    id = str(k).rjust(4,"0")
    mydata['path'] = file_path+id+'-'+ v['name']+'.pdf'
    mydata['title'] = '新疆油田采油工艺研究院'
    mydata['subtitle'] = v['unit']
    mydata['id'] = id
    mydata['name'] = v['name']
    if v['sex'] == '男':
        mydata['gender'] = 'male'
    else:
        mydata['gender'] = 'female'
    
    mydata['month'] = v['month']
    mydata['fits'] = {}
    survey_list = ['tcm','psy57','spine']
    for item in survey_list:
        if item in  v.keys():
            mydata.setdefault('surveys',{})
            mydata['surveys'][item] = v[item]
            
    
    #mydata['fits'] = {}
    for item in list_item:
        if item in v.keys():
            mydata.setdefault('fits',{})
            if item in ['lung','pushup','step','situp']:
                mark = v[item]['成绩'].split()[0].split('.')[0]
            else:
                mark = v[item]['成绩'].split()[0]
            mydata['fits'][item] = {'mark':mark,'score':v[item]['score']}
    #if len(mydata['fits']) >2 or len(mydata['surveys']) >0:
    if len(mydata['fits']) >2 :    
        list1.append(mydata)
        list2.append([k,v['name']])
        i+=1
        x = requests.post('http://localhost:3003', data = json.dumps(list1), headers=headers)
        #print(id,v['name'],x.text)
        #print(mydata)
        #x.close()
print(i)
71
In [ ]: