104 KiB
104 KiB
In [ ]:
import json
import time
import csv
filename = '../item.json'
item = {}
bh = set()
with open(filename,'r') as fl:
dict1 = json.load(fl)
for k,v in dict1.items():
item[k] = v
re_ta = {}
dict1 = {}
list1 = []
list2 = []
rq = '20240612'
filename = f'data/places_result_{rq}.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)
bh.add(line[2])
#print(list1)
for result in list1:
user = str(result[2])
m_item = str(result[3])
re_ta.setdefault(user,{})
item_name = item[m_item]['name']
re_ta[user].setdefault(item_name,{})
score = int(result[4])/item[m_item]['divisor']
re_ta[user][item_name]['成绩'] = f'{score} {item[m_item]["unit"]}'
print(len(re_ta))
items = ['身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']
title = ['编号','身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']
list1 = []
for k, v in re_ta.items():
list2 = []
list2.append(str(k))
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 = f'data/长炼医院体测情况表({rq}).xlsx'
wb = openpyxl.Workbook()
sheet = wb.active
sheet.append(title)
for row in list1:
sheet.append(row)
wb.save(filename)In [ ]:
import openpyxl
import json
tcbz ={
'HeightWeigh':'身高体重',
'StepExperiment':'台阶指数',
'Lung':'肺活量',
'Proneness':'坐位体前屈',
'PowerfullGrip':'握力',
'OneMinutePushUp':'一分钟仰卧起坐',
'PushUp':'俯卧撑',
'VerticalJump':'纵跳',
'ReactionTime':'选择反应时',
'FootStand':'单脚站立'
}
wb = openpyxl.load_workbook('data/体质检测标准.xlsx')
sheet = wb.active
# sheets = wb.sheetnames
dict1 = {}
dict3 = {}
for k, v in tcbz.items():
dict3[v] = k
sheet = wb.active
data1 =list(sheet.values)
del data1[0]
for item in data1:
sex = item[0][6:]
if sex =='男':
age_sex = 'M'+item[0][:5]
else:
age_sex = 'F'+item[0][:5]
dict1.setdefault(age_sex,{})
if item[1] in dict3.keys():
xm = dict3[item[1]]
dict1[age_sex].setdefault(xm,[])
dict1[age_sex][xm].append(item[3]/item[4])
dict2 = {}
#print(dict1)
for k, v in dict1.items():
i1 = int(k[1:3])
i2 = int(k[-2:])
m_sex = k[:1]
for i in range(i1,i2+1):
dict2[m_sex+str(i)] = k
dict3 = {}
dict3['person'] = dict2
dict3['criteria'] = dict1
filename = 'data/体质检测标准.json'
with open(filename, 'w') as fl:
json.dump(dict3, fl, ensure_ascii=False)
print('ok')In [ ]:
import openpyxl
import json
tcbz ={
'HeightWeigh':'身高体重',
'StepExperiment':'台阶指数',
'Lung':'肺活量',
'Proneness':'坐位体前屈',
'PowerfullGrip':'握力',
'OneMinutePushUp':'一分钟仰卧起坐',
'PushUp':'俯卧撑',
'VerticalJump':'纵跳',
'ReactionTime':'选择反应时',
'FootStand':'单脚站立'
}
wb = openpyxl.load_workbook('data/体质检测标准_BMI.xlsx')
sheet = wb.active
# sheets = wb.sheetnames
dict1 = {}
dict3 = {}
for k, v in tcbz.items():
dict3[v] = k
sheet = wb.active
data1 =list(sheet.values)
del data1[0]
for item in data1:
min_age = int(item[1]/12)
max_age = int((item[2]+1)/12) - 1
sex = item[0]
height = int(item[3])
if sex ==0:
age_sex = 'M'+str(min_age)+'~'+str(max_age)
else:
age_sex = 'F'+str(min_age)+'~'+str(max_age)
dict1.setdefault(age_sex,{})
dict1[age_sex].setdefault(height,[])
dict1[age_sex][height].append(item[5]/1000)
dict2 = {}
#print(dict1)
for k, v in dict1.items():
i1 = int(k[1:3])
i2 = int(k[-2:])
m_sex = k[:1]
for i in range(i1,i2+1):
dict2[m_sex+str(i)] = k
dict3 = {}
dict3['person'] = dict2
dict3['criteria'] = dict1
filename = 'data/体质检测标准_BMI.json'
with open(filename, 'w') as fl:
json.dump(dict3, fl, ensure_ascii=False)
print('ok')In [ ]:
import json
filename = '../item.json'
item = {}
unit = {}
with open(filename,'r') as fl:
dict1 = json.load(fl)
for k,v in dict1.items():
item[k] = v
del item[k]['divisor']
item['1']['en'] = 'lung'
item['2']['en'] = 'grip'
item['3']['en'] = 'flexion'
item['4']['en'] = 'jump'
item['5']['en'] = 'pushup'
item['6']['en'] = 'balance'
item['7']['en'] = 'reaction'
item['8']['en'] = 'step'
item['9']['en'] = 'situp'
item['10']['en'] = 'height'
item['11']['en'] = 'weight'
filename = 'data/体质检测项目信息.json'
with open(filename, 'w') as fl:
json.dump(item, fl, ensure_ascii=False)
print('ok')In [ ]:
import json
import time
import csv
filename = 'data/体质检测标准.json'
item = {}
unit = {}
with open(filename,'r') as fl:
dict1 = json.load(fl)
person = dict1['person']
criteria = dict1['criteria']
data = {'name':'张三','sex':'M','age':37,'item':'StepExperiment','result':46}
info = data['sex']+str(data['age'])
bz = person[info]
mx = criteria[bz][data['item']]
result = data['result']
score = -1
print(mx)
for bz1 in mx:
if result < bz1:
print(bz1)
score = mx.index(bz1,0)
break
else:
score = 5
#if score == -1:
# score = 5
print(score)In [ ]:
import json
import time
import csv
filename = 'data/体质检测标准_BMI.json'
item = {}
unit = {}
with open(filename,'r') as fl:
dict1 = json.load(fl)
person = dict1['person']
criteria = dict1['criteria']
data = {'name':'张三','sex':'M','age':37,'item':'HeightWeight','result':'177.7,97.0'}
info = data['sex']+str(data['age'])
bz = person[info]
print(bz)
result = data['result']
print(result)
height = int(float(result.split(',')[0]))
weight = float(result.split(',')[1])
mx = criteria[bz][str(height)]
if weight < mx[0]:
score = 1
elif weight < mx[1]:
score = 3
elif weight < mx[2]:
score = 5
elif weight <= mx[3]:
score = 3
elif weight > mx[3]:
score = 1
print(score)In [3]:
import openpyxl
import json
wb = openpyxl.load_workbook('data/采油工艺研究院手工录入.xlsx',data_only=True)
sheet = wb.active
s = ''
list1 = []
for n in range(2, sheet.max_row+1):
ss = ''
list2 = []
list2.append("'"+str(sheet.cell(n, 1).value)+"'")
list2.append("'"+str(sheet.cell(n, 2).value)+"'")
list2.append("'"+str(sheet.cell(n, 3).value)+"'")
list2.append("'"+str(sheet.cell(n, 4).value)+"'")
list2.append("'"+str(sheet.cell(n, 5).value)+"'")
#list2.append("'"+str(sheet.cell(n, 6).value)+"'")
ss = ','.join(list2)
list1.append("("+ss+")")
s = ','.join(list1)
print(s)
('769530','185','bmi','165.0,67.0','2025-12-03'),('769530','186','bmi','178.0,81.0','2025-12-03'),('769530','187','bmi','171.0,68.0','2025-12-03'),('769530','188','bmi','168.0,65.0','2025-12-03'),('769530','189','bmi','167.0,69.0','2025-12-03'),('769530','191','bmi','183.0,75.0','2025-12-03'),('769530','192','bmi','170.0,78.0','2025-12-03'),('769530','193','bmi','178.0,78.0','2025-12-03'),('769530','194','bmi','153.0,52.0','2025-12-03'),('769530','195','bmi','166.0,69.0','2025-12-03'),('769530','196','bmi','155.0,59.0','2025-12-03'),('769530','198','bmi','162.0,59.0','2025-12-03'),('769530','185','grip','36.0','2025-12-03'),('769530','186','grip','41.4','2025-12-03'),('769530','187','grip','58.0','2025-12-03'),('769530','188','grip','26.7','2025-12-03'),('769530','189','grip','31.0','2025-12-03'),('769530','190','grip','49.0','2025-12-03'),('769530','191','grip','39.0','2025-12-03'),('769530','192','grip','42.0','2025-12-03'),('769530','193','grip','43.7','2025-12-03'),('769530','194','grip','22.5','2025-12-03'),('769530','195','grip','29.0','2025-12-03'),('769530','196','grip','31.2','2025-12-03'),('769530','197','grip','30.0','2025-12-03'),('769530','198','grip','39.7','2025-12-03'),('769530','185','balance','7.47','2025-12-03'),('769530','186','balance','82','2025-12-03'),('769530','187','balance','30','2025-12-03'),('769530','188','balance','9.51','2025-12-03'),('769530','189','balance','21','2025-12-03'),('769530','190','balance','24','2025-12-03'),('769530','192','balance','35','2025-12-03'),('769530','193','balance','25','2025-12-03'),('769530','194','balance','20.55','2025-12-03'),('769530','195','balance','24','2025-12-03'),('769530','196','balance','15','2025-12-03'),('769530','197','balance','34','2025-12-03'),('769530','198','balance','28','2025-12-03'),('769530','185','lung','3130','2025-12-03'),('769530','186','lung','4035','2025-12-03'),('769530','187','lung','4040','2025-12-03'),('769530','188','lung','2252','2025-12-03'),('769530','189','lung','3417','2025-12-03'),('769530','190','lung','4693','2025-12-03'),('769530','191','lung','4254','2025-12-03'),('769530','192','lung','4031','2025-12-03'),('769530','193','lung','4849','2025-12-03'),('769530','194','lung','2259','2025-12-03'),('769530','195','lung','4106','2025-12-03'),('769530','196','lung','2399','2025-12-03'),('769530','197','lung','3100','2025-12-03'),('769530','198','lung','3310','2025-12-03'),('769530','187','flexion','10.0','2025-12-03'),('769530','188','flexion','10.1','2025-12-03'),('769530','189','flexion','19.8','2025-12-03'),('769530','190','flexion','-0.4','2025-12-03'),('769530','191','flexion','0.4','2025-12-03'),('769530','192','flexion','-12.4','2025-12-03'),('769530','193','flexion','3.8','2025-12-03'),('769530','194','flexion','0.6','2025-12-03'),('769530','195','flexion','6.8','2025-12-03'),('769530','196','flexion','7.8','2025-12-03'),('769530','197','flexion','-1.7','2025-12-03'),('769530','198','flexion','7.2','2025-12-03'),('769530','188','reaction','0.431','2025-12-03'),('769530','189','reaction','0.411','2025-12-03'),('769530','190','reaction','0.416','2025-12-03'),('769530','191','reaction','0.461','2025-12-03'),('769530','192','reaction','0.426','2025-12-03'),('769530','193','reaction','0.454','2025-12-03'),('769530','194','reaction','0.414','2025-12-03'),('769530','195','reaction','0.414','2025-12-03'),('769530','196','reaction','0.463','2025-12-03'),('769530','197','reaction','0.450','2025-12-03'),('769530','198','reaction','0.457','2025-12-03')
In [ ]:
import json
import datetime
import csv
from datetime import date
filename = '../item.json'
item = {}
unit = {}
with open(filename,'r') as fl:
dict1 = json.load(fl)
for k,v in dict1.items():
item[k] = v
item['1']['en'] = 'lung'
item['2']['en'] = 'grip'
item['3']['en'] = 'flexion'
item['4']['en'] = 'jump'
item['5']['en'] = 'pushup'
item['6']['en'] = 'balance'
item['7']['en'] = 'reaction'
item['8']['en'] = 'step'
item['9']['en'] = 'situp'
item['10']['en'] = 'height'
item['11']['en'] = 'weight'
re_ta = {}
dict1 = {}
list1 = []
filename = 'data/天津石化人员2024.json'
with open(filename,'r') as fl:
dict1 = json.load(fl)
filename = 'data/places_result_20241104.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)
#f_item = ['lung','grip','flexion','jump','balance','reaction','step','situp']
#m_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step']
for result in list1:
user = str(result[2])
rq = date.fromisoformat(result[6].replace('/','-'))
if user in dict1.keys():
l_xm = []
m_item = str(result[3])
re_ta.setdefault(user,{})
re_ta[user]['name'] = dict1[user]['name']
re_ta[user]['sex'] = dict1[user]['sex']
if dict1[user]['sex'] == '男':
l_xm = ['weight','height','lung','grip','flexion','jump','pushup','balance','reaction','step']
else:
l_xm = ['weight','height','lung','grip','flexion','jump','balance','reaction','step','situp']
re_ta[user]['unit'] = dict1[user]['unit']
#birth = date.fromisoformat(dict1[user]['birth'].replace('/','-'))
birth = date.fromisoformat(dict1[user]['birth'])
#nian = int(birth[0].strip())
#yue = int(birth[1].strip())
#ri = int(birth[2].strip())
#print(k,nian,yue,ri)
item_name = item[m_item]['en']
if item_name in l_xm:
days = (rq-birth).days
re_ta[user]['age'] = int(days/365)
re_ta[user]['month'] = int(days/365*12)
re_ta[user]['rq'] = result[6]
re_ta[user].setdefault(item_name,{})
score = int(result[4])/item[m_item]['divisor']
re_ta[user][item_name]['成绩'] = f'{score} {item[m_item]["unit"]}'
print(len(re_ta))
filename = 'data/result_天津石化2024.json'
with open(filename,'w') as fl:
json.dump(re_ta, fl, ensure_ascii=False)
print(len(re_ta))In [ ]:
import json
import time
filename = '../item1.json'
item = {}
unit = {}
with open(filename,'r') as fl:
dict3 = json.load(fl)
for k,v in dict3.items():
item[k] = v
item['1']['en'] = 'lung'
item['2']['en'] = 'grip'
item['3']['en'] = 'flexion'
item['4']['en'] = 'jump'
item['5']['en'] = 'pushup'
item['6']['en'] = 'balance'
item['7']['en'] = 'reaction'
item['8']['en'] = 'step'
item['9']['en'] = 'situp'
item['10']['en'] = 'height'
item['11']['en'] = 'weight'
filename = 'data/体质检测标准 (1).json'
with open(filename,'r') as fl:
dict1 = json.load(fl)
def cal_score(data1):
#data = {'name':'张三','sex':'M','age':37,'item':'StepExperiment','result':46}
person = dict1['person']
criteria = dict1['criteria']
if data1['age'] >59:
data1['age'] = 59
if data1['age'] <20:
data1['age'] = 20
info = data1['sex']+str(data1['age'])
bz = person[info]
mx = criteria[bz][data1['item']]
result = data1['result']
if data1['item'] == 'reaction':
for bz1 in mx:
if result > bz1:
#print(bz1)
score = mx.index(bz1,0)
break
else:
score = 5
else:
for bz1 in mx:
if result < bz1:
#print(bz1)
score = mx.index(bz1,0)
break
else:
score = 5
return(score)
filename = 'data/体质检测标准_BMI.json'
with open(filename,'r') as fl:
dict4 = json.load(fl)
def cal_bmi(data1):
# data = {'name':'张三','sex':'M','age':37,'item':'HeightWeight','result':'177.7,97.0'}
person = dict4['person']
criteria = dict4['criteria']
if data1['age'] > 59:
data1['age'] = 59
if data1['age'] <20:
data1['age'] = 20
info = data1['sex']+str(data1['age'])
bz = person[info]
#print(bz)
result = data1['result']
#print(data1['code'],result)
height = int(float(result.split(',')[0]))
weight = float(result.split(',')[1])
if str(height) not in criteria[bz]:
score = 1
else:
mx = criteria[bz][str(height)]
if weight < mx[0]:
score = 1
elif weight < mx[1]:
score = 3
elif weight < mx[2]:
score = 5
elif weight <= mx[3]:
score = 3
elif weight > mx[3]:
score = 1
return score
#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_长炼医院人员2024(湖南青年).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 'height' in v.keys() and 'weight' in v.keys():
bmi_data = v['height']['成绩'].split()[0]+','+ v['weight']['成绩'].split()[0]
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'] = 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])}
dict2[k][item_en]['score'] = cal_score(data1)
#print(k,v[item_en]['成绩'],cal_score(data1))
filename = f'data/result_长炼医院人员2024(湖南青年).json'
with open(filename,'w') as fl:
json.dump(dict2,fl , ensure_ascii=False)
print('ok!') In [ ]:
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 ='./沧州炼化2025/'
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(8,"0")
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','psy','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)In [ ]:
import requests
import json
import openpyxl
headers = {
"Content-Type": "application/json; charset=UTF-8"
}
filename = 'data/result_镇海2025-1.json'
with open(filename,'r') as fl:
dict1 = json.load(fl)
list1 = []
file_path ='./镇海石化2025/'
list_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp','bmi']
i=0
list2 = []
person =['X00309','012947','013304','007231','007243','013612']
for k, v in dict1.items():
list1 = []
mydata = {}
#id = str(k).rjust(8,"0")
id = str(k)
if id in person:
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','psy','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)In [ ]:
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','psy','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:
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)In [ ]:
import os,sys,shutil
import json
import glob
from pathlib import Path
fi_path = '/home/songyi/pdf-typescript-old2/沧州炼化2025'
new_path = 'file/沧州炼化2025'
old = []
dict2 = {}
filename = 'data/result_沧州炼化-1.json'
with open(filename,'r') as fl:
dict1 = json.load(fl)
fls = glob.glob(f'{fi_path}/*.pdf')
print(len(fls))
for fn in fls:
fi_name =Path(fn).stem.split('-')[0]
code = str(int(fi_name))
unit_path = Path(new_path,dict1[str(code)]['unit'])
unit_path.mkdir(parents = True, exist_ok = True)
n_name = Path(unit_path,Path(fn).stem+'.pdf')
#if not os.path.exists(n_name):
shutil.copyfile(fn,n_name)
print(fn)In [ ]:
import os,sys,shutil
import json
import glob
from pathlib import Path
import openpyxl
fi_path = '/home/songyi/pdf-typescript-old2/沧州炼化2025'
filename = 'data/result_沧州炼化-1.json'
with open(filename,'r') as fl:
dict1 = json.load(fl)
fls = glob.glob(f'{fi_path}/*.pdf')
list1 = []
title = ['测试编号','姓名','性别','部门']
for fn in fls:
list2 = []
fi_name =Path(fn).stem.split('-')[0]
code = str(int(fi_name))
sex = dict1[str(code)]['sex']
unit = dict1[str(code)]['unit']
list2 = [fi_name,Path(fn).stem.split('-')[1],sex,unit]
list1.append(list2)
filename = 'data/2025年沧州炼化体测报告明细表.xlsx'
wb = openpyxl.Workbook()
sheet = wb.active
sheet.append(title)
for row in list1:
sheet.append(row)
wb.save(filename)
print('ok')In [ ]:
import os,sys,shutil
import json
import glob
from pathlib import Path
import openpyxl
fi_path = '/home/songyi/pdf-typescript/北海炼化2024'
filename = 'data/result_北海炼化2024.json'
with open(filename,'r') as fl:
dict1 = json.load(fl)
print(len(dict1))
fls = glob.glob(f'{fi_path}/*.pdf')
list1 = []
for fn in fls:
fi_name =Path(fn).stem.split('-')[0]
code = int(fi_name)
list1.append(str(code))
for k, v in dict1.items():
if k not in list1:
print(k)In [ ]:
import json
import time
import csv
list1 = []
filename = 'data/person_134.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)
dict1 = {}
for result in list1:
code = str(result[4])
if int(result[1]) == 0:
sex = '男'
else:
sex = '女'
m_item = str(result[3])
dict1.setdefault(code,{})
dict1[code]['name'] = result[0]
dict1[code]['sex'] = sex
dict1[code]['birth'] = result[2]
filename = 'data/天津石化人员清单.json'
with open(filename,'w') as fl:
json.dump(dict1, fl, ensure_ascii=False)
print(len(dict1)) In [ ]:
import json
import psycopg2
from psycopg2 import extras as ex
filename = '../item.json'
with open(filename,'r') as fl:
dict1 = json.load(fl)
data_list = []
for k, v in dict1.items():
data_list.append((int(k),v['name']))
conn = psycopg2.connect(database="mycrm", user="postgres", password="songyi", host="localhost", port="5432")
cursor = conn.cursor()
sql = 'insert into shijiazhuang_item (id,name) values %s'
ex.execute_values(cursor, sql, data_list, page_size=10000)
#conn.commit()
cursor.close()
conn.close()
print('ok!')In [ ]:
import json
import psycopg2
from psycopg2 import extras as ex
conn = psycopg2.connect(database="mycrm", user="postgres", password="songyi", host="localhost", port="5432")
cursor = conn.cursor()
filename = 'data/result_石家庄.json'
with open(filename,'r') as fl:
dict1 = json.load(fl)
unit = set()
for k, v in dict1.items():
#if 'sub_unit' not in v.keys():
# print(k,v['name'])
unit.add(v['unit'])
print(unit)
i = 1
dict2 = {}
for item in unit:
dict2[item] = i
i+=1
data_list = []
for k, v in dict2.items():
data_list.append((v,k))
sql = 'insert into shijiazhuang_unit (id,name) values %s'
ex.execute_values(cursor, sql, data_list, page_size=10000)
#conn.commit()
cursor.close()
conn.close()
print('ok!')In [ ]:
import json
import psycopg2
from psycopg2 import extras as ex
conn = psycopg2.connect(database="mycrm", user="postgres", password="songyi", host="localhost", port="5432")
cursor = conn.cursor()
filename = 'data/天津石化人员名单.json'
with open(filename,'r') as fl:
dict1 = json.load(fl)
unit = set()
for k, v in dict1.items():
#if 'sub_unit' not in v.keys():
# print(k,v['name'])
unit.add(v['unit'])
print(unit)
i = 1
dict2 = {}
for item in unit:
dict2[item] = i
i+=1
data_list = []
dict3 = {}
for k, v in dict1.items():
dict3.setdefault(v['unit'],set())
dict3[v['unit']].add(v['sub_unit'])
i = 1
for k, v in dict3.items():
unit_id = dict2[k]
for item in v:
data_list.append((i,item,unit_id))
i+=1
sql = 'insert into tianjin_sub_unit (id,name,unit_id) values %s'
ex.execute_values(cursor, sql, data_list, page_size=10000)
#conn.commit()
cursor.close()
conn.close()
print('ok!')In [ ]:
import json
import csv
dict1 = {}
filename = 'data/shijiazhuang_unit_20230517.csv'
with open(filename,'r',newline='') as csv_file:
fl = csv.reader(csv_file,delimiter=',')
header = next(fl)
list1 = []
for line in fl:
#line = re.sub('[\r\n\f ]{1,}', '', line)
list1.append({'id':int(line[0]),'name':line[1]})
dict1['unit'] = list1
filename = 'data/sub_unit_134.csv'
with open(filename,'r',newline='') as csv_file:
fl = csv.reader(csv_file,delimiter=',')
header = next(fl)
list1 = []
for line in fl:
#line = re.sub('[\r\n\f ]{1,}', '', line)
list1.append({'id':int(line[0]),'name':line[1],'unit_id':int(line[2])})
dict1['sub_unit'] = list1
print(dict1)
filename = 'data/天津石化部门.json'
with open(filename,'w') as fl:
json.dump(dict1, fl, ensure_ascii=False)
print(len(dict1)) In [ ]:
import json
import csv
dict1 = {}
filename = 'data/shijiazhuang_unit_20230517.csv'
with open(filename,'r',newline='') as csv_file:
fl = csv.reader(csv_file,delimiter=',')
header = next(fl)
list1 = []
for line in fl:
#line = re.sub('[\r\n\f ]{1,}', '', line)
list1.append({'id':int(line[0]),'name':line[1]})
dict1[int(line[0])] = line[1]
filename = 'data/石家庄石化部门.json'
with open(filename,'w') as fl:
json.dump(dict1, fl, ensure_ascii=False)
print(len(dict1)) In [ ]:
import json
import psycopg2
from psycopg2 import extras as ex
conn = psycopg2.connect(database="mycrm", user="postgres", password="songyi", host="localhost", port="5432")
cursor = conn.cursor()
filename = 'data/天津石化人员清单.json'
with open(filename,'r') as fl:
person = json.load(fl)
filename = 'data/石家庄石化部门.json'
with open(filename,'r') as fl:
dict1 = json.load(fl)
i = 1
dict2 = {}
for item in unit:
dict2[item] = i
i+=1
data_list = []
dict3 = {}
dict4 = {}
for k, v in dict1.items():
dict3.setdefault(v['unit'],set())
dict3[v['unit']].add(v['sub_unit'])
i = 1
for k, v in dict3.items():
unit_id = dict2[k]
for item in v:
data_list.append((i,item,unit_id))
i+=1
for item in data_list:
sub_id = item[0]
dict4[sub_id] = {'name':item[1],'unit':item[2]}
dict5 = {}
for k, v in dict1.items():
id_unit = dict2[v['unit']]
sub_name = v['sub_unit']
id_sub = 0
for k1, v1 in dict4.items():
if v1['name'] == sub_name and v1['unit'] == id_unit:
id_sub = int(k1)
if id_sub >0:
dict5[k] = {'unit':id_unit,'sub_unit':id_sub}
else:
print(k,'not fund')
data_list = []
for k, v in dict5.items():
id = int(k)
name = person[k]['name']
sex = person[k]['sex']
birth = person[k]['birth']
phone = ''
note = ''
unit = v['sub_unit']
data_list.append((id,name,sex,birth,unit))
sql = 'insert into tianjin_person (id,name,sex,birth,unit_id) values %s'
ex.execute_values(cursor, sql, data_list, page_size=10000)
#conn.commit()
cursor.close()
conn.close()
print('ok!')
In [ ]:
import json
import psycopg2
from psycopg2 import extras as ex
conn = psycopg2.connect(database="mycrm", user="postgres", password="songyi", host="localhost", port="5432")
cursor = conn.cursor()
filename = 'data/石家庄石化部门.json'
with open(filename,'r') as fl:
dict1 = json.load(fl)
dict3 = {}
for k,v in dict1.items():
dict3[v] = int(k)
filename = 'data/result_石家庄.json'
with open(filename,'r') as fl:
dict2 = json.load(fl)
data_list = []
for k, v in dict2.items():
id = int(k)
name = dict2[k]['name']
sex = dict2[k]['sex']
birth = dict2[k]['birth']
unit = dict3[dict2[k]['unit']]
data_list.append((id,name,sex,birth,unit))
sql = 'insert into shijiazhuang_person (id,name,sex,birth,unit_id) values %s'
ex.execute_values(cursor, sql, data_list, page_size=10000)
#conn.commit()
cursor.close()
conn.close()
print('ok!') In [ ]:
import json
import psycopg2
from psycopg2 import extras as ex
filename = '../item.json'
with open(filename,'r') as fl:
dict1 = json.load(fl)
dict2 = {}
for k, v in dict1.items():
dict2[v['name']] = int(k)
filename = 'data/天津石化部门.json'
with open(filename,'r') as fl:
dict1 = json.load(fl)
unit = {}
for item in dict1['unit']:
unit[item['name']] = item['id']
sub_unit = {}
for item in dict1['sub_unit']:
sub_unit.setdefault(item['unit_id'],[])
sub_unit[item['unit_id']].append({'id':item['id'],'name':item['name']})
filename = 'data/天津石化人员名单.json'
with open(filename,'r') as fl:
dict1 = json.load(fl)
person = {}
for k, v in dict1.items():
person[k] = {'unit':v['unit'],'sub_unit':v['sub_unit']}
conn = psycopg2.connect(database="mycrm", user="postgres", password="songyi", host="localhost", port="5432")
cursor = conn.cursor()
data_list = []
filename = 'data/result_天津.json'
with open(filename,'r') as fl:
dict1 = json.load(fl)
for k, v in dict1.items():
for item in v.keys():
if item in dict2.keys():
item_id = dict2[item]
if v[item]['得分'] == '\\N':
score = None
else:
score = int(v[item]['得分'])
unit_name = person[k]['unit']
sub_unit_name = person[k]['sub_unit']
unit_id = unit[unit_name]
for items in sub_unit[unit_id]:
if items['name'] ==sub_unit_name:
sub_id = items['id']
data_list.append((v[item]['成绩'],score,int(k),item_id,unit_id,sub_id))
sql = 'insert into tianjin_records (performance,score,avatar_id_id,item_id_id,unit_id_id,sub_unit_id_id) values %s'
ex.execute_values(cursor, sql, data_list, page_size=10000)
#conn.commit()
cursor.close()
conn.close()
print('ok!')
In [ ]:
import json
import psycopg2
from psycopg2 import extras as ex
filename = '../item.json'
with open(filename,'r') as fl:
dict1 = json.load(fl)
dict2 = {}
for k, v in dict1.items():
dict2[v['name']] = int(k)
filename = 'data/石家庄石化部门.json'
with open(filename,'r') as fl:
dict1 = json.load(fl)
dict3 = {}
for k,v in dict1.items():
dict3[v] = int(k)
conn = psycopg2.connect(database="mycrm", user="postgres", password="songyi", host="localhost", port="5432")
cursor = conn.cursor()
data_list = []
filename = 'data/result_石家庄.json'
with open(filename,'r') as fl:
dict1 = json.load(fl)
for k, v in dict1.items():
for item in v.keys():
if item in dict2.keys():
item_id = dict2[item]
if v[item]['得分'] == '':
score = None
else:
score = int(v[item]['得分'])
unit_name = v['unit']
unit_id = dict3[unit_name]
data_list.append((v[item]['成绩'],score,int(k),item_id,unit_id))
sql = 'insert into shijiazhuang_records (performance,score,avatar_id_id,item_id_id,unit_id_id) values %s'
ex.execute_values(cursor, sql, data_list, page_size=10000)
#conn.commit()
cursor.close()
conn.close()
print('ok!')In [ ]:
import json
import psycopg2
from psycopg2 import extras as ex
filename = '../item.json'
with open(filename,'r') as fl:
dict1 = json.load(fl)
dict2 = {}
for k, v in dict1.items():
dict2[v['name']] = int(k)
filename = 'data/天津石化部门.json'
with open(filename,'r') as fl:
dict1 = json.load(fl)
unit = {}
for item in dict1['unit']:
unit[item['name']] = item['id']
print(unit)In [151]:
import json
import openpyxl
filename = 'data/result_沧州炼化-1.json'
with open(filename,'r') as fl:
dict1 = json.load(fl)
#items = ['身高','体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']
items = {}
items['lung'] = '肺活量'
items['grip'] ='握力'
items['flexion'] ='坐位体前屈'
items['jump'] ='纵跳'
items['pushup'] ='俯卧撑'
items['balance'] ='单脚站立'
items['reaction'] ='选择反应时'
items['step'] ='台阶指数'
items['situp'] ='一分钟仰卧起坐'
items['bmi'] ='BMI'
list1 = []
#fiie_path ='./138/'
list_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp','bmi']
i=1
list2 = []
dict2 = {}
for k, v in dict1.items():
list1 = []
mydata = {}
id = str(k).rjust(8,"0")
mydata['unit'] = v['unit']
mydata['name'] = v['name']
mydata['sex'] = v['sex']
mydata['month'] = v['month']
age = int(v['month']/12)
if age <20:
mydata['age'] = 20
else:
mydata['age'] = int(v['month']/12)
mydata['fits'] = {}
score = 0
for item in list_item:
if item in v.keys():
if item in ['lung','pushup','step','situp']:
mark = v[item]['成绩'].split()[0].split('.')[0]
else:
mark = v[item]['成绩'].split()[0]
mydata['fits'][items[item]] = {'mark':mark,'score':v[item]['score']}
score = score + v[item]['score']
mydata['score'] = round(score/len(mydata['fits']),2)
if len(mydata['fits']) >2:
dict2[str(k)] = mydata
filename = f'data/data_沧州炼化.json'
with open(filename,'w') as fl:
json.dump(dict2,fl , ensure_ascii=False)
print(len(dict2)) 1221
In [154]:
import json
nld = [[20,24],[25,29],[30,34],[35,39],[40,44],[45,49],[50,54],[55,80]]
filename = 'data/data_沧州炼化.json'
with open(filename,'r') as fl:
dict1 = json.load(fl)
i = 1
m = 0
f = 0
score = 0
t_score = 0
for k,v in dict1.items():
if v['sex'] == '男':
m = m +1
score = score+v['score']
print(f'平均成绩:{round(score/m,4)}分,男性:{m}人')
t_score = t_score + score
score = 0
for k,v in dict1.items():
if v['sex'] == '女':
f = f +1
score = score+v['score']
print(f'平均成绩:{round(score/f,4)}分,女性:{f}人')
t_score = t_score + score
print(f'平均成绩:{round(t_score/(f+m),4)}分,总体:{(f+m)}人')平均成绩:2.7312分,男性:997人 平均成绩:3.2382分,女性:224人 平均成绩:2.8242分,总体:1221人
In [155]:
import json
items = ['体重','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']
#filename = 'data/data_长炼医院.json'
with open(filename,'r') as fl:
dict1 = json.load(fl)
dict2 = {}
dict2['不合格'] = [0,255]
dict2['合格'] = [256,332]
dict2['良好'] = [333,367]
dict2['优秀'] = [368,500]
for k1, v1 in dict2.items():
di = v1[0]
gao = v1[1]
i = 0
m = 0
f = 0
for k,v in dict1.items():
if int(v['score']*100) in range(di,gao+1):
dict1[k]['level'] = k1
i+=1
if v['sex'] == '男':
m = m +1
else:
f = f+1
print(f'{di}~{gao}分人数:{i}人,男性:{m}人,女性:{f}人')
print(len(dict1))
with open(filename,'w') as fl:
json.dump(dict1, fl)
print('ok')0~255分人数:383人,男性:358人,女性:25人 256~332分人数:551人,男性:458人,女性:93人 333~367分人数:195人,男性:130人,女性:65人 368~500分人数:92人,男性:51人,女性:41人 1221 ok
In [156]:
nld = [[20,24],[25,29],[30,34],[35,39],[40,44],[45,49],[50,54],[55,80]]
with open(filename,'r') as fl:
dict1 = json.load(fl)
dict2 = {}
dict2['不合格'] = [0,255]
dict2['合格'] = [256,332]
dict2['良好'] = [333,367]
dict2['优秀'] = [368,500]
dict3 = {}
for item in nld:
di = item[0]
gao = item[1]
age = f'{di}-{gao}'
dict3.setdefault(age,{})
i = 0
m = 0
f = 0
for k,v in dict1.items():
if v['age'] in range(di,gao+1):
dict3[age].setdefault(v['level'],0)
if v['sex'] == '女':
dict3[age][v['level']] = dict3[age][v['level']]+1
for k, v in dict3.items():
print(k,v)20-24 {'合格': 2, '不合格': 1, '良好': 1, '优秀': 0}
25-29 {'合格': 9, '不合格': 3, '良好': 7, '优秀': 2}
30-34 {'合格': 5, '不合格': 0, '优秀': 3, '良好': 2}
35-39 {'合格': 5, '不合格': 4, '良好': 4, '优秀': 5}
40-44 {'合格': 10, '不合格': 5, '优秀': 5, '良好': 11}
45-49 {'不合格': 12, '良好': 29, '合格': 48, '优秀': 15}
50-54 {'合格': 14, '不合格': 0, '优秀': 10, '良好': 11}
55-80 {'合格': 0, '不合格': 0, '良好': 0, '优秀': 1}
In [157]:
nld = [[20,24],[25,29],[30,34],[35,39],[40,44],[45,49],[50,54],[55,80]]
with open(filename,'r') as fl:
dict1 = json.load(fl)
dict2 = {}
dict2['不合格'] = [0,255]
dict2['合格'] = [256,332]
dict2['良好'] = [333,367]
dict2['优秀'] = [368,500]
dict3 = {}
for item in nld:
di = item[0]
gao = item[1]
age = f'{di}-{gao}'
dict3.setdefault(age,{})
i = 0
m = 0
f = 0
for k,v in dict1.items():
if v['age'] in range(di,gao+1):
dict3[age].setdefault(v['level'],0)
if v['sex'] == '男':
dict3[age][v['level']] = dict3[age][v['level']]+1
for k, v in dict3.items():
print(k,v)20-24 {'合格': 15, '不合格': 9, '良好': 3, '优秀': 2}
25-29 {'合格': 31, '不合格': 22, '良好': 3, '优秀': 1}
30-34 {'合格': 22, '不合格': 8, '优秀': 0, '良好': 4}
35-39 {'合格': 65, '不合格': 27, '良好': 21, '优秀': 6}
40-44 {'合格': 56, '不合格': 50, '优秀': 5, '良好': 16}
45-49 {'不合格': 49, '良好': 23, '合格': 68, '优秀': 6}
50-54 {'合格': 118, '不合格': 99, '优秀': 21, '良好': 31}
55-80 {'合格': 83, '不合格': 94, '良好': 29, '优秀': 10}
In [158]:
nld = [[16,24],[25,29],[30,34],[35,39],[40,44],[45,49],[50,54],[55,69]]
with open(filename,'r') as fl:
dict1 = json.load(fl)
for item in nld:
di = item[0]
gao = item[1]
i = 0
score = 0
m = 0
f = 0
for k,v in dict1.items():
if v['age'] in range(di,gao+1):
score = score+v['score']
i+=1
if v['sex'] == '男':
m = m +1
if i ==0:
print(f'{di}~{gao}岁平均成绩:0分,人数:0人,男性:{m}人')
else:
print(f'{di}~{gao}岁平均成绩:{round(score/i,2)}分,人数:{i}人,男性:{m}人')16~24岁平均成绩:2.79分,人数:33人,男性:29人 25~29岁平均成绩:2.78分,人数:78人,男性:57人 30~34岁平均成绩:2.86分,人数:44人,男性:34人 35~39岁平均成绩:2.92分,人数:137人,男性:119人 40~44岁平均成绩:2.8分,人数:158人,男性:127人 45~49岁平均成绩:2.93分,人数:250人,男性:146人 50~54岁平均成绩:2.83分,人数:304人,男性:269人 55~69岁平均成绩:2.67分,人数:217人,男性:216人
In [159]:
import json
nld = [[20,24],[25,29],[30,34],[35,39],[40,44],[45,49],[50,54],[55,80]]
with open(filename,'r') as fl:
dict1 = json.load(fl)
for item in nld:
di = item[0]
gao = item[1]
i = 0
score = 0
m = 0
f = 0
for k,v in dict1.items():
if v['age'] in range(di,gao+1) and v['sex'] == '男':
score = score+v['score']
i+=1
if i ==0:
print(f'{di}~{gao}岁平均成绩:0分,人数:{i}人')
else:
print(f'{di}~{gao}岁平均成绩:{round(score/i,2)}分,人数:{i}人')20~24岁平均成绩:2.77分,人数:29人 25~29岁平均成绩:2.63分,人数:57人 30~34岁平均成绩:2.69分,人数:34人 35~39岁平均成绩:2.86分,人数:119人 40~44岁平均成绩:2.7分,人数:127人 45~49岁平均成绩:2.75分,人数:146人 50~54岁平均成绩:2.75分,人数:269人 55~80岁平均成绩:2.66分,人数:216人
In [160]:
nld = [[20,24],[25,29],[30,34],[35,39],[40,44],[45,49],[50,54],[55,80]]
with open(filename,'r') as fl:
dict1 = json.load(fl)
for item in nld:
di = item[0]
gao = item[1]
i = 0
score = 0
m = 0
f = 0
for k,v in dict1.items():
if v['age'] in range(di,gao+1) and v['sex'] == '女':
score = score+v['score']
i+=1
if i ==0:
print(f'{di}~{gao}岁平均成绩:0分,人数:{i}人')
else:
print(f'{di}~{gao}岁平均成绩:{round(score/i,2)}分,人数:{i}人')20~24岁平均成绩:2.94分,人数:4人 25~29岁平均成绩:3.19分,人数:21人 30~34岁平均成绩:3.44分,人数:10人 35~39岁平均成绩:3.28分,人数:18人 40~44岁平均成绩:3.18分,人数:31人 45~49岁平均成绩:3.18分,人数:104人 50~54岁平均成绩:3.44分,人数:35人 55~80岁平均成绩:4.12分,人数:1人
In [161]:
with open(filename,'r') as fl:
dict1 = json.load(fl)
items = ['BMI','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']
for item in items:
score = 0
n = 0
for k, v in dict1.items():
if item in v['fits'].keys():
n = n + 1
score =score + int(v['fits'][item]['score'])
print(item,round(score/n,2),n)BMI 3.04 1212 肺活量 3.23 1202 握力 2.56 1211 坐位体前屈 3.26 1144 纵跳 2.17 1152 俯卧撑 2.5 955 一分钟仰卧起坐 3.8 202 单脚站立 2.58 1184 选择反应时 3.26 1204 台阶指数 2.72 768
In [152]:
with open(filename,'r') as fl:
dict1 = json.load(fl)
depart = []
for k, v in dict1.items():
if v['unit'] not in depart:
depart.append(v['unit'])
for item in depart:
score = 0
n = 0
for k, v in dict1.items():
if item == v['unit']:
score = score + v['score']
n = n +1
print(item,round(score/n,2),n)应急救援中心 2.9 82 质量计量中心 2.94 125 公用工程部 2.77 164 财务资产部 3.1 15 炼油一部 2.74 163 炼油二部 2.8 145 炼油三部 2.88 144 储运部 2.68 139 行政事务中心 2.65 90 总经理办公室 3.1 9 安全环保部 3.03 14 计划经营部 2.96 12 党群工作部 3.31 14 物资采购中心 3.02 24 生产技术部 2.95 19 设备工程部 2.99 22 监督审计部 2.88 10 党委组织部 2.95 10 发展规划部 3.15 7 企管法律部 2.98 13
In [167]:
with open(filename,'r') as fl:
dict1 = json.load(fl)
depart = []
for k, v in dict1.items():
if v['unit'] not in depart:
depart.append(v['unit'])
for item in depart:
score = 0
n = 0
for k, v in dict1.items():
if item == v['unit']:
score = score + v['score']
n = n +1
if n>0:
print(item,round(score/n,2),n)
else:
print(item,0,n)应急救援中心 2.9 82 质量计量中心 2.94 125 公用工程部 2.77 164 财务资产部 3.1 15 炼油一部 2.74 163 炼油二部 2.8 145 炼油三部 2.88 144 储运部 2.68 139 行政事务中心 2.65 90 总经理办公室 3.1 9 安全环保部 3.03 14 计划经营部 2.96 12 党群工作部 3.31 14 物资采购中心 3.02 24 生产技术部 2.95 19 设备工程部 2.99 22 监督审计部 2.88 10 党委组织部 2.95 10 发展规划部 3.15 7 企管法律部 2.98 13
In [163]:
import json
items = ['优秀','良好','合格','不合格']
with open(filename,'r') as fl:
dict1 = json.load(fl)
dict3 = {}
for k, v in dict1.items():
unit = v['unit']
dict3.setdefault(unit,{})
for item in items:
dict3[unit].setdefault(item,0)
for k, v in dict1.items():
unit = v['unit']
#dict3.setdefault(unit,{})
#for item in items:
#dict3[unit].setdefault(v['level'],0)
dict3[unit][v['level']] +=1
for k, v in dict3.items():
print(k,v['优秀'],v['良好'],v['合格'],v['不合格'])应急救援中心 5 18 39 20 质量计量中心 13 21 63 28 公用工程部 10 25 69 60 财务资产部 3 3 7 2 炼油一部 5 17 85 56 炼油二部 10 25 61 49 炼油三部 16 25 59 44 储运部 11 12 57 59 行政事务中心 4 9 41 36 总经理办公室 0 4 3 2 安全环保部 3 2 6 3 计划经营部 2 2 5 3 党群工作部 2 6 6 0 物资采购中心 4 4 12 4 生产技术部 1 3 12 3 设备工程部 0 8 8 6 监督审计部 0 3 5 2 党委组织部 0 3 5 2 发展规划部 2 1 3 1 企管法律部 1 4 5 3
In [168]:
import json
items = ['BMI','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']
with open(filename,'r') as fl:
dict1 = json.load(fl)
dict3 = {}
for k, v in dict1.items():
unit = v['unit']
dict3.setdefault(unit,{})
for item in items:
dict3[unit].setdefault(item,{})
dict3[unit][item].setdefault('score',0)
dict3[unit][item].setdefault('count',0)
for k1,v1 in v['fits'].items():
if k1 in items:
dict3[unit][k1]['score']+=v1['score']
dict3[unit][k1]['count']+=1
for k, v in dict3.items():
print(k)
for k1, v1 in v.items():
print(k1,v1['score'],v1['count'])应急救援中心 BMI 228 82 肺活量 240 82 握力 212 82 坐位体前屈 246 78 纵跳 189 77 俯卧撑 280 76 一分钟仰卧起坐 7 2 单脚站立 179 77 选择反应时 275 82 台阶指数 159 53 质量计量中心 BMI 427 123 肺活量 426 125 握力 302 124 坐位体前屈 371 115 纵跳 251 116 俯卧撑 135 62 一分钟仰卧起坐 195 51 单脚站立 330 120 选择反应时 410 123 台阶指数 207 74 公用工程部 BMI 505 163 肺活量 520 160 握力 406 161 坐位体前屈 467 149 纵跳 335 158 俯卧撑 327 137 一分钟仰卧起坐 61 15 单脚站立 370 158 选择反应时 511 160 台阶指数 280 98 财务资产部 BMI 57 15 肺活量 48 15 握力 27 15 坐位体前屈 55 13 纵跳 33 14 俯卧撑 19 5 一分钟仰卧起坐 37 9 单脚站立 43 14 选择反应时 52 15 台阶指数 24 10 炼油一部 BMI 491 161 肺活量 505 163 握力 430 163 坐位体前屈 492 157 纵跳 315 154 俯卧撑 307 139 一分钟仰卧起坐 67 19 单脚站立 406 160 选择反应时 523 161 台阶指数 271 102 炼油二部 BMI 402 144 肺活量 463 144 握力 380 144 坐位体前屈 466 139 纵跳 321 142 俯卧撑 233 112 一分钟仰卧起坐 110 29 单脚站立 368 143 选择反应时 462 143 台阶指数 288 98 炼油三部 BMI 462 142 肺活量 463 138 握力 364 144 坐位体前屈 471 131 纵跳 247 131 俯卧撑 335 124 一分钟仰卧起坐 61 15 单脚站立 348 141 选择反应时 476 143 台阶指数 230 84 储运部 BMI 392 138 肺活量 416 137 握力 360 136 坐位体前屈 428 133 纵跳 256 131 俯卧撑 283 126 一分钟仰卧起坐 28 9 单脚站立 334 136 选择反应时 415 138 台阶指数 213 74 行政事务中心 BMI 248 90 肺活量 263 85 握力 222 88 坐位体前屈 259 80 纵跳 143 82 俯卧撑 171 72 一分钟仰卧起坐 26 9 单脚站立 200 83 选择反应时 278 86 台阶指数 115 44 总经理办公室 BMI 25 9 肺活量 31 9 握力 24 9 坐位体前屈 24 8 纵跳 24 8 俯卧撑 9 3 一分钟仰卧起坐 20 5 单脚站立 34 9 选择反应时 28 9 台阶指数 21 8 安全环保部 BMI 38 14 肺活量 48 14 握力 40 14 坐位体前屈 40 13 纵跳 36 13 俯卧撑 24 10 一分钟仰卧起坐 11 3 单脚站立 45 13 选择反应时 50 13 台阶指数 36 13 计划经营部 BMI 38 12 肺活量 39 11 握力 32 12 坐位体前屈 32 11 纵跳 30 11 俯卧撑 15 6 一分钟仰卧起坐 20 5 单脚站立 30 12 选择反应时 45 12 台阶指数 23 11 党群工作部 BMI 58 14 肺活量 51 14 握力 36 14 坐位体前屈 45 14 纵跳 41 14 俯卧撑 19 6 一分钟仰卧起坐 32 7 单脚站立 51 14 选择反应时 50 14 台阶指数 27 13 物资采购中心 BMI 72 24 肺活量 89 24 握力 65 24 坐位体前屈 88 24 纵跳 56 23 俯卧撑 45 15 一分钟仰卧起坐 33 8 单脚站立 61 24 选择反应时 76 24 台阶指数 41 16 生产技术部 BMI 57 19 肺活量 67 19 握力 47 19 坐位体前屈 56 18 纵跳 42 17 俯卧撑 45 17 一分钟仰卧起坐 3 1 单脚站立 61 19 选择反应时 68 19 台阶指数 32 14 设备工程部 BMI 74 22 肺活量 71 22 握力 53 22 坐位体前屈 71 22 纵跳 67 22 俯卧撑 62 17 一分钟仰卧起坐 18 5 单脚站立 60 22 选择反应时 68 22 台阶指数 49 22 监督审计部 BMI 28 10 肺活量 32 10 握力 19 10 坐位体前屈 28 10 纵跳 27 10 俯卧撑 22 7 一分钟仰卧起坐 12 3 单脚站立 35 10 选择反应时 31 10 台阶指数 22 9 党委组织部 BMI 26 10 肺活量 37 10 握力 25 10 坐位体前屈 29 10 纵跳 30 10 俯卧撑 14 6 一分钟仰卧起坐 12 4 单脚站立 34 10 选择反应时 37 10 台阶指数 22 10 发展规划部 BMI 19 7 肺活量 28 7 握力 18 7 坐位体前屈 23 7 纵跳 22 6 俯卧撑 20 6 一分钟仰卧起坐 5 1 单脚站立 19 6 选择反应时 28 7 台阶指数 11 6 企管法律部 BMI 37 13 肺活量 45 13 握力 36 13 坐位体前屈 37 12 纵跳 32 13 俯卧撑 25 9 一分钟仰卧起坐 9 2 单脚站立 42 13 选择反应时 44 13 台阶指数 21 9
In [ ]:
items = ['BMI','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']
filename = 'data/data_镇海2025.json'
with open(filename,'r') as fl:
dict1 = json.load(fl)
banci = []
for k, v in dict1.items():
if v['banci'] not in banci:
banci.append(v['banci'])
for item in banci:
score = 0
n = 0
for k, v in dict1.items():
if item == v['banci'] and v['sex'] == '女':
score = score + v['score']
n = n +1
print(item,round(score/n,2),n)In [ ]:
import json
items = ['优秀','良好','合格','不合格']
dict3 = {}
for k, v in dict1.items():
banci = v['banci']
dict3.setdefault(banci,{})
for item in items:
dict3[banci].setdefault(item,0)
for k, v in dict1.items():
banci = v['banci']
#dict3.setdefault(unit,{})
#for item in items:
#dict3[unit].setdefault(v['level'],0)
if v['sex'] =='男':
dict3[banci][v['level']] +=1
for k, v in dict3.items():
print(k,v['优秀'],v['良好'],v['合格'],v['不合格'])In [ ]:
import json
items = ['BMI','肺活量','握力','坐位体前屈','纵跳','俯卧撑','一分钟仰卧起坐','单脚站立','选择反应时','台阶指数']
filename = 'data/data_镇海2025.json'
with open(filename,'r') as fl:
dict1 = json.load(fl)
dict3 = {}
for k, v in dict1.items():
unit = v['banci']
dict3.setdefault(unit,{})
for item in items:
dict3[unit].setdefault(item,{})
dict3[unit][item].setdefault('score',0)
dict3[unit][item].setdefault('count',0)
for k1,v1 in v['fits'].items():
if k1 in items:
dict3[unit][k1]['score']+=v1['score']
dict3[unit][k1]['count']+=1
for k, v in dict3.items():
print(k)
for k1, v1 in v.items():
print(k1,v1['score'],v1['count'])In [ ]:
import json
questions = [
[1],
[-1, 2],
[-1, 2],
[-1, 8],
[-1, 3],
[1],
[-1],
[-1, 7],
[2],
[2],
[2],
[2, 3],
[2],
[2],
[3],
[3],
[3],
[3],
[3],
[4],
[4],
[4],
[4],
[4],
[4],
[4],
[4],
[5],
[5],
[5],
[5],
[5],
[5],
[5],
[5],
[6],
[6],
[6],
[6],
[6],
[6],
[7],
[7],
[7],
[7],
[7],
[7],
[8],
[8],
[8],
[8],
[8],
[8],
[9],
[9],
[9],
[9],
[9],
[9],
[9]
]
kinds = [
'平和',
'气虚',
'阳虚',
'阴虚',
'痰湿',
'湿热',
'血瘀',
'气郁',
'特禀'
]
def tcm_calc(arr):
qa = [8, 8, 7, 8, 8, 6, 7, 7, 7]
# 成绩数组
s = [0] * 9
# 遍历五进制
for i in range(len(questions)):
m = arr[i] - 1
for v in questions[i]:
if v < 0:
s[-v - 1] += 4 - m
else:
s[v - 1] += m
return [int((v / qa[i]) * 25) for i, v in enumerate(s)]
def tcm_kind(score):
kind = 0
near = False
max_kind = 0
max_score = 0
for i in range(1, 9):
if score[i] > max_score:
max_kind = i
max_score = score[i]
if score[0] >= 60 and max_score < 40:
if max_score >= 30:
near = True
kind = max_kind
else:
kind = max_kind
return {
"kind": kind,
"near": near
}
list2 = ['成就感','愉快心境','放松程度','压力应对','体力充沛','情感充沛度']
list3 = [[5,7],[7,4],[7,4],[7,4],[8,1],[6,1]]
list4 = ['颈椎','胸椎','腰椎','骶尾椎']
list5 = [[0,10,10],[10,17,7],[17,24,6],[24,26,2]]
qb = [
1, 1, 1, 1, 1,
4, 3, 2, 3, 2, 4, 3,
4, 3, 2, 4, 4, 2, 4,
3, 2, 2, 4, 3, 3, 2,
5, 5, 5, 5, 5, 5, 5, 5,
6, 6, 6, 6, 6, 6
]In [ ]:
import openpyxl
filename = 'data/result_南京化工-3.json'
with open(filename,'r') as fl:
dict1 = json.load(fl)
i = 1
list2 = []
for k, v in dict1.items():
if 'tcm' in v.keys():
list1 = []
tcm =v['tcm']
for item in tcm:
list1.append(item)
score = tcm_calc(list1)
result = tcm_kind(score)
kind = result['kind']
near = result['near']
#print(i,k,kinds[kind], near, score)
#i+=1
list3 = []
list3.append(k)
list3.append(v['name'])
list3.append(v['sex'])
list3.append(kinds[kind])
list3.append(near)
for item in score:
list3.append(item)
list2.append(list3)
print(list2)
filename = 'data/南京化工中医情况明细表(202510).xlsx'
wb = openpyxl.Workbook()
sheet = wb.active
for row in list2:
sheet.append(row)
wb.save(filename)
print('ok') In [ ]:
list2 = ['成就感','愉快心境','放松程度','压力应对','体力充沛','情感充沛度']
list3 = [[5,7],[7,4],[7,4],[7,4],[8,1],[6,1]]
qb = [
1, 1, 1, 1, 1,
4, 3, 2, 3, 2, 4, 3,
4, 3, 2, 4, 4, 2, 4,
3, 2, 2, 4, 3, 3, 2,
5, 5, 5, 5, 5, 5, 5, 5,
6, 6, 6, 6, 6, 6
]
filename = 'data/result_北海炼化2024.json'
with open(filename,'r') as fl:
dict1 = json.load(fl)
list4 = []
for k, v in dict1.items():
if 'psy' in v.keys():
list5 = []
psy=v['psy']
for i in range(26,40):
new_valve = psy[i]-1
psy[i] = new_valve
dict3 = {}
i = 0
for item in qb:
dict3.setdefault(item,0)
dict3[item] +=psy[i]
i+=1
#print(dict3)
list5.append(k)
for i in range(0,6):
score = int(dict3[i+1]/list3[i][0]/list3[i][1]*100)
list5.append(score)
list4.append(list5)
filename = 'data/北海炼化心理情况明细表2024.xlsx'
wb = openpyxl.Workbook()
sheet = wb.active
for row in list4:
sheet.append(row)
wb.save(filename)
print('ok') In [ ]:
list4 = ['颈椎','胸椎','腰椎','骶尾椎']
list5 = [[0,10,10],[10,17,7],[17,24,6],[24,26,2]]
filename = 'data/result_新疆油田采油工艺研究院-1.json'
with open(filename,'r') as fl:
dict1 = json.load(fl)
list6 = []
for k, v in dict1.items():
if 'spine' in v.keys():
list7 = []
spine = v['spine']
list7.append(k)
for i in range(0,4):
score = 0
for ii in range(list5[i][0],list5[i][1]):
score+= spine[ii]
#print(k,list4[i],int(score/list5[i][2]*100)-100)
list7.append(int(score/list5[i][2]*100)-100)
list6.append(list7)
filename = 'data/新疆油田采油工艺研究院脊柱情况明细表.xlsx'
wb = openpyxl.Workbook()
sheet = wb.active
for row in list6:
sheet.append(row)
wb.save(filename)
print('ok') In [ ]:
list4 = ['颈椎','胸椎','腰椎','骶尾椎']
list5 = [[0,10,10],[10,17,7],[17,24,6],[24,26,2]]
filename = 'data/result_北海炼化2024.json'
with open(filename,'r') as fl:
dict1 = json.load(fl)
list6 = []
for k, v in dict1.items():
if 'spine' in v.keys():
list7 = []
spine = v['spine']
list7.append(k)
list7.append(v['name'])
list7.append(v['sex'])
list7.append(v['age'])
for i in range(0,4):
score = 0
for ii in range(list5[i][0],list5[i][1]):
score+= spine[ii]
#print(k,list4[i],int(score/list5[i][2]*100)-100)
list7.append(int(score/list5[i][2]*100)-100)
for item in v['spine']:
list7.append(item)
list6.append(list7)
filename = 'data/北海炼化脊柱情况明细表2024.xlsx'
wb = openpyxl.Workbook()
sheet = wb.active
for row in list6:
sheet.append(row)
wb.save(filename)
print('ok') In [ ]:
import openpyxl
list_item = ['lung','grip','flexion','jump','pushup','balance','reaction','step','situp']
filename = 'data/result_沧州炼化-1.json'
with open(filename,'r') as fl:
dict1 = json.load(fl)
data_list = []
for k, v in dict1.items():
list6 = []
list6.append(str(k).rjust(4,'0'))
list6.append(v['name'])
list6.append(v['sex'])
list6.append(v['unit'])
list6.append(v['age'])
if 'bmi' in v.keys():
bmi = v['bmi']['成绩']
list6.append(bmi.split(',')[0]+' 厘米')
list6.append(bmi.split(',')[1]+' 千克')
list6.append(v['bmi']['score'])
else:
list6.append('')
list6.append('')
list6.append('')
for xm in list_item:
if xm in v.keys():
list6.append(v[xm]['成绩'])
list6.append(v[xm]['score'])
else:
list6.append('')
list6.append('')
if 'tcm' in v.keys():
list1 = []
tcm =v['tcm']
for item in tcm:
list1.append(item)
score = tcm_calc(list1)
result = tcm_kind(score)
kind = result['kind']
near = result['near']
#print(k,kinds[kind], near, score)
list6.append(kinds[kind])
if near:
list6.append('是')
else:
list6.append('')
for item in score:
list6.append(item)
else:
for i in range(0,11):
list6.append('')
i+=1
if 'psy' in v.keys():
psy=v['psy']
for i in range(26,40):
new_valve = psy[i]-1
psy[i] = new_valve
dict3 = {}
i = 0
for item in qb:
dict3.setdefault(item,0)
dict3[item] +=psy[i]
i+=1
for i in range(0,6):
score = int(dict3[i+1]/list3[i][0]/list3[i][1]*100)
list6.append(score)
else:
for i in range(0,6):
list6.append('')
i+=1
if 'spine' in v.keys():
spine = v['spine']
for i in range(0,4):
score = 0
for ii in range(list5[i][0],list5[i][1]):
score+= spine[ii]
list6.append(int(score/list5[i][2]*100)-100)
else:
for i in range(0,4):
list6.append('')
i+=1
data_list.append(list6)
filename = 'data/沧州炼化2025年体质检测明细表.xlsx'
wb = openpyxl.Workbook()
sheet = wb.active
title = ['编号', '姓名', '性别', '单位/部门', '年龄', '身高', '体重', 'bmi', '肺活量', '得分', '握力', '得分', '坐位体前屈', '得分', '纵跳', '得分', '俯卧撑', '得分', '单脚站立', '得分', '选择反应时', '得分', '台阶指数', '得分', '一分钟仰卧起坐', '得分', '中医体质', '是否倾向', '平和', '气虚', '阳虚', '阴虚', '痰湿', '湿热', '血瘀', '气郁', '特禀', '成就感', '愉快心理', '放松程度', '压力应对', '体力充沛', '情感充沛度', '颈椎', '胸椎', '腰椎', '骶尾椎']
sheet.append(title)
for row in data_list:
sheet.append(row)
wb.save(filename) In [ ]: