You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
2.2 KiB
59 lines
2.2 KiB
graduation_requirements = @graduation_requirements
|
|
ec_year = @_current_year
|
|
major = ec_year.ec_major_school.ec_major
|
|
|
|
wb = xlsx_package.workbook
|
|
wb.styles do |style|
|
|
title_style = style.add_style(sz: 16, height: 20, b: true)
|
|
ec_year_style = style.add_style(sz: 10, height: 14)
|
|
label_style = style.add_style(sz: 11, b: true, alignment: { horizontal: :center })
|
|
content_style = style.add_style(sz: 11, height: 16, border: { style: :thin, color: '000000' })
|
|
|
|
wb.add_worksheet(name: '达成度-毕业要求综合评价报表') do |sheet|
|
|
sheet.add_row '培养目标及目标分解', style: title_style
|
|
sheet.merge_cells("A1:D1")
|
|
|
|
sheet.add_row []
|
|
|
|
sheet.add_row ['专业代码', major.code], style: ec_year_style
|
|
sheet.add_row ['专业名称', major.name], style: ec_year_style
|
|
sheet.add_row ['学年', "#{ec_year.year}学年"], style: ec_year_style
|
|
|
|
sheet.add_row []
|
|
|
|
sheet.add_row ['毕业要求', '', '课程数量 ∑合格标准', '评价结果'], style: label_style
|
|
sheet.add_row ['一级', '二级', '∑达成值', ''], style: label_style
|
|
sheet.merge_cells("A7:B7")
|
|
sheet.merge_cells("D7:D8")
|
|
|
|
index = 9
|
|
|
|
graduation_requirements.each do |requirement|
|
|
start_index = index
|
|
|
|
requirement.ec_graduation_subitems.each do |item|
|
|
reach_criteria, actually_reach = 0.0, 0.0
|
|
|
|
item.ec_course_supports.each do |support|
|
|
reach_criteria += support.weights.to_f * ec_year.calculation_value.to_f
|
|
actually_reach += support.ec_graduation_requirement_calculation&.real_value.to_f
|
|
end
|
|
|
|
size = item.ec_course_supports.size
|
|
status = actually_reach >= reach_criteria ? '已达成' : '未达成'
|
|
|
|
base_arr = [requirement.position.to_s, "#{requirement.position}-#{item.position}", status]
|
|
sheet.add_row base_arr.dup.insert(-2, size), style: content_style
|
|
sheet.add_row base_arr.dup.insert(-2, format('%.03f', reach_criteria)), style: content_style
|
|
sheet.add_row base_arr.dup.insert(-2, format('%.03f', actually_reach)), style: content_style
|
|
|
|
sheet.merge_cells("B#{index}:B#{index + 2}")
|
|
sheet.merge_cells("D#{index}:D#{index + 2}")
|
|
|
|
index += 3
|
|
end
|
|
|
|
sheet.merge_cells("A#{start_index}:B#{index - 1}")
|
|
end
|
|
end
|
|
end |