package ru.ulstu.fc.rule.controller; import io.swagger.v3.oas.annotations.Hidden; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import ru.ulstu.fc.rule.model.Antecedent; import ru.ulstu.fc.rule.model.InferenceForm; import ru.ulstu.fc.rule.model.Variable; import ru.ulstu.fc.rule.model.VariableValue; import ru.ulstu.fc.rule.service.FuzzyInferenceService; import java.util.Arrays; import java.util.List; import java.util.Map; @Controller @Hidden public class InferenceMvcController { private final FuzzyInferenceService fuzzyInferenceService; public InferenceMvcController(FuzzyInferenceService fuzzyInferenceService) { this.fuzzyInferenceService = fuzzyInferenceService; } @GetMapping("/") public String initInference(Model model) { model.addAttribute("ageValues", getAgeValues()); model.addAttribute("incomeValues", getIncomeValues()); model.addAttribute("inferenceForm", new InferenceForm()); return "index"; } @RequestMapping(value = "get-inference", method = RequestMethod.POST) public String getInference(@ModelAttribute InferenceForm inferenceForm, Model model) { model.addAttribute("ageValues", getAgeValues()); model.addAttribute("incomeValues", getIncomeValues()); model.addAttribute("inferenceForm", inferenceForm); model.addAttribute("response", fuzzyInferenceService.getFuzzyInference( Map.of("возраст", Double.valueOf(inferenceForm.getAgeValue()), "доход", Double.valueOf(inferenceForm.getIncomeValue())))); return "index"; } private List getAgeValues() { Variable var = new Variable("Age"); var.getValues().addAll(Arrays.asList( new VariableValue("молодой", 30.0), new VariableValue("средний", 45.0), new VariableValue("старый", 60.0))); return var.getValues(); } private List getIncomeValues() { Variable var = new Variable("Income"); var.getValues().addAll(Arrays.asList( new VariableValue("небольшой", 20000.0), new VariableValue("средний", 90000.0), new VariableValue("высокий", 200000.0))); return var.getValues(); } }