diff --git a/front/vue-project/src/components/Components.vue b/front/vue-project/src/components/Components.vue index 762dfb6..9e31d65 100644 --- a/front/vue-project/src/components/Components.vue +++ b/front/vue-project/src/components/Components.vue @@ -33,7 +33,7 @@ export default { if (urlParams != "") { urlParams += "&"; } - urlParams += "componentAmount=" + this.serialNumber; + urlParams += "amount=" + this.serialNumber; } DataService.readAll(this.dataFilterUrl + urlParams, (data) => new Component(data)) .then(data => { diff --git a/src/main/java/ru/ulstu/is/sbapp/repair/controller/ComponentController.java b/src/main/java/ru/ulstu/is/sbapp/repair/controller/ComponentController.java index 2b4ce19..58252e3 100644 --- a/src/main/java/ru/ulstu/is/sbapp/repair/controller/ComponentController.java +++ b/src/main/java/ru/ulstu/is/sbapp/repair/controller/ComponentController.java @@ -23,8 +23,8 @@ public class ComponentController { } @PutMapping("/{id}") - public ComponentDTO updateComponent(@PathVariable Long id,@RequestParam("name") String name, @RequestParam("amount") Integer amount) { - return new ComponentDTO(componentService.updateComponent(id,name, amount)); + public ComponentDTO updateComponent(@PathVariable Long id,@RequestBody @Valid ComponentDTO componentDTO) { + return new ComponentDTO(componentService.updateComponent(id,componentDTO.getComponentName(), componentDTO.getAmount())); } @DeleteMapping("/{id}") @@ -48,4 +48,13 @@ public class ComponentController { .map(ComponentDTO::new) .toList(); } + + @GetMapping("/filter") + public List getFilteredComponents(@RequestParam(value = "id", required = false) Long id, + @RequestParam(value = "componentName", required = false) String modelName, + @RequestParam(value = "amount", required = false) int amount ) { + return componentService.findFilteredComponents(id, modelName, amount).stream() + .map(ComponentDTO::new) + .toList(); + } } diff --git a/src/main/java/ru/ulstu/is/sbapp/repair/dtos/ComponentDTO.java b/src/main/java/ru/ulstu/is/sbapp/repair/dtos/ComponentDTO.java index 3808577..9dd80e5 100644 --- a/src/main/java/ru/ulstu/is/sbapp/repair/dtos/ComponentDTO.java +++ b/src/main/java/ru/ulstu/is/sbapp/repair/dtos/ComponentDTO.java @@ -6,14 +6,14 @@ import java.util.List; public class ComponentDTO { private long id; - private String ComponentName; - private Integer Amount; + private String componentName; + private Integer amount; private List favorsDTOListFromComponents; public ComponentDTO(Component component){ this.id =component.getId(); - this.ComponentName = component.getComponentName(); - this.Amount = component.getAmount(); + this.componentName = component.getComponentName(); + this.amount = component.getAmount(); this.favorsDTOListFromComponents = component.getFavors() == null ? null: component.getFavors() .stream() .filter(x -> x.getComponents().contains(component.getId())) @@ -27,10 +27,10 @@ public class ComponentDTO { return id; } public String getComponentName(){ - return ComponentName; + return componentName; } public Integer getAmount(){ - return Amount; + return amount; } public List getFavorsDTOListFromComponents() { return favorsDTOListFromComponents; diff --git a/src/main/java/ru/ulstu/is/sbapp/repair/repository/ComponentRepository.java b/src/main/java/ru/ulstu/is/sbapp/repair/repository/ComponentRepository.java index f037e54..bfd7e28 100644 --- a/src/main/java/ru/ulstu/is/sbapp/repair/repository/ComponentRepository.java +++ b/src/main/java/ru/ulstu/is/sbapp/repair/repository/ComponentRepository.java @@ -2,8 +2,16 @@ package ru.ulstu.is.sbapp.repair.repository; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import ru.ulstu.is.sbapp.repair.model.Component; -public interface ComponentRepository extends JpaRepository { +import java.util.List; +public interface ComponentRepository extends JpaRepository { + @Query(value = "select * from Component where (\"ID\" = :id or :id is Null) and " + + "(\"NAME\" = :componentName or :componentName is Null) and " + + "(\"AMOUNT\" = :amount or :amount is Null)", nativeQuery = true) + public List findFilteredComponents(@Param("id") Long id, + @Param("componentName") String componentName, + @Param("amount") int amount ); } diff --git a/src/main/java/ru/ulstu/is/sbapp/repair/service/ComponentService.java b/src/main/java/ru/ulstu/is/sbapp/repair/service/ComponentService.java index 063791a..cb643fa 100644 --- a/src/main/java/ru/ulstu/is/sbapp/repair/service/ComponentService.java +++ b/src/main/java/ru/ulstu/is/sbapp/repair/service/ComponentService.java @@ -28,15 +28,16 @@ public class ComponentService { @Transactional public Component addComponent(String name, int amount) { - if (!StringUtils.hasText(name)) { - throw new IllegalArgumentException("name is null or empty"); - } - final Component component = new Component(amount, name); validatorUtil.validate(component); return componentRepository.save(component); } + @Transactional(readOnly = true) + public List findFilteredComponents(Long id, String componentName, int amount) { + return componentRepository.findFilteredComponents(id, componentName, amount); + } + @Transactional(readOnly = true) public Component findComponent(Long id) { final Optional component = componentRepository.findById(id);