智能组卷

dev_jupyter
cxt 5 years ago
parent db6062b0c4
commit 8ae1ac5e20

@ -0,0 +1,14 @@
class ExaminationIntelligentSettingsController < ApplicationController
def optinal_items
items = OptionalItemQuery.call(params)
@single_question_count = items[:single_question_count]
@multiple_question_count = items[:multiple_question_count]
@judgement_question_count = items[:judgement_question_count]
@program_question_count = items[:program_question_count]
end
def create
end
end

@ -0,0 +1,4 @@
class ExaminationIntelligentSetting < ApplicationRecord
belongs_to :sub_discipline
has_many :examination_type_settings, dependent: :destroy
end

@ -0,0 +1,3 @@
class ExaminationTypeSetting < ApplicationRecord
belongs_to :examination_intelligent_setting
end

@ -0,0 +1,32 @@
class OptionalItemQuery < ApplicationQuery
attr_reader :params
def initialize(params)
@params = params
end
def call
items = ItemBank.all
if params[:tag_discipline_id].present? && params[:sub_discipline_id].present?
items = items.joins(:tag_discipline_containers).where(tag_discipline_containers: {tag_discipline_id: params[:tag_discipline_id]})
hacks = Hack.joins(:tag_discipline_containers).where(tag_discipline_containers: {tag_discipline_id: params[:tag_discipline_id]})
elsif params[:sub_discipline_id].present?
items = items.where(sub_discipline_id: params[:sub_discipline_id])
hacks = Hack.where(sub_discipline_id: params[:sub_discipline_id])
end
# 来源
source = params[:source].present? ? params[:source].to_i : 1
public = source == 3 ? [0, 1] : source
items = items.where(public: public)
# 难度
difficulty = params[:difficulty] ? params[:difficulty].to_i : 1
items = items.where(difficulty: difficulty)
single_question_count = items.select{ |item| item.item_type == "SINGLE" }.size
multiple_question_count = items.select{ |item| item.item_type == "MULTIPLE" }.size
judgement_question_count = items.select{ |item| item.item_type == "JUDGMENT" }.size
program_question_count = hacks.present? ? hacks.pluck(:item_bank_id).reject(&:blank?).size : items.select{ |item| item.item_type == "PROGRAM" }.size
{single_question_count: single_question_count, multiple_question_count: multiple_question_count, judgement_question_count: judgement_question_count, program_question_count: program_question_count}
end
end

@ -0,0 +1,4 @@
json.single_question_count @single_question_count
json.multiple_question_count @multiple_question_count
json.judgement_question_count @judgement_question_count
json.program_question_count @program_question_count

@ -96,6 +96,12 @@ Rails.application.routes.draw do
end
end
resources :examination_intelligent_settings do
collection do
get :optinal_items
end
end
resources :hacks, path: :problems, param: :identifier do
collection do
get :unpulished_list

@ -0,0 +1,13 @@
class CreateExaminationIntelligentSettings < ActiveRecord::Migration[5.2]
def change
create_table :examination_intelligent_settings do |t|
t.references :sub_discipline
t.integer :public, default: 1
t.integer :difficulty, default: 1
t.timestamps
end
add_index :examination_intelligent_settings, :sub_discipline_id, name: "index_on_sub_discipline_id"
end
end

@ -0,0 +1,13 @@
class CreateExaminationTypeSettings < ActiveRecord::Migration[5.2]
def change
create_table :examination_type_settings do |t|
t.references :examination_intelligent_setting, index: false
t.integer :item_type
t.integer :count
t.timestamps
end
add_index :examination_type_settings, :examination_intelligent_setting_id, name: "index_on_examination_intelligent_setting"
end
end

@ -0,0 +1,5 @@
require 'rails_helper'
RSpec.describe ExaminationIntelligentSetting, type: :model do
pending "add some examples to (or delete) #{__FILE__}"
end

@ -0,0 +1,5 @@
require 'rails_helper'
RSpec.describe ExaminationTypeSetting, type: :model do
pending "add some examples to (or delete) #{__FILE__}"
end
Loading…
Cancel
Save