остались фильтры для заказа

This commit is contained in:
VictoriaPresnyakova 2023-05-12 14:41:12 +04:00
parent 4bfe12eb0f
commit b12fee9a0c
7 changed files with 46 additions and 35 deletions

View File

@ -16,14 +16,13 @@ export default {
dataUrl: 'order',
transformer: (data) => new Order(data),
headers: [
{ name: 'number', label: 'Номер кабинета' }
{ name: 'date', label: 'Дата' }
],
headersComps: [
{ name: 'modelName', label: 'Модель' },
{ name: 'serialNum', label: 'Серийный номер' },
{ name: 'componentName', label: 'Модель монитора' }
headersFavs: [
{ name: 'favorName', label: 'Название услуги' },
{ name: 'price', label: 'Цена' },
],
selectedItemsComps: [],
selectedItemsFavs: [],
dataFilterUrl: 'order/filter?',
favorUrl: 'favor/',
favors: [],
@ -36,7 +35,7 @@ export default {
.then(data => {
this.favors = data;
});
DataService.readAll(this.componentUrl, (data) => new component(data))
DataService.readAll(this.componentUrl, (data) => new Component(data))
.then(data => {
this.components = data;
});
@ -59,7 +58,7 @@ export default {
},
addFavorInOrder(orderId) {
let favorId = document.getElementById('favors').value;
let response = axios.post(`http://localhost:8080/api/order/${orderId}/favor?favorId=${favorId}`);
let response = axios.post(`http://localhost:8080/order/${orderId}/favor?favId=${favorId}`);
console.log(response);
},
itemsComps(favorIds) {
@ -70,11 +69,6 @@ export default {
this.favors.forEach(favor => {
for (let i = 0; i < favorIds.length; i++) {
if (favor.id === favorIds[i]) {
for (let j = 0; j < this.components.length; j++) {
if (favor.componentId === this.components[j].id) {
favor._component = this.components[j];
}
}
result.push(favor);
}
}
@ -110,22 +104,18 @@ export default {
:confirm="this.modal.confirm"
v-model:visible="this.modalShow"
@done="saveItem">
<div class="mb-3">
<label for="number" class="form-label">Номер кабинета</label>
<input type="text" class="form-control" id="number" required v-model="data.number">
</div>
<DataTable
:headers="this.headersComps"
:headers="this.headersFavs"
:items="itemsComps(data.favorIds)"
:selectedItems="this.selectedItemsComps">
:selectedItems="this.selectedItemsFavs">
</DataTable>
<div class="mb-3">
<label for="favors" class="form-label">Добавить компьютер</label>
<label for="favors" class="form-label">Добавить услуги</label>
<select class="form-select" id="favors" required>
<option disabled value="">Выберите компьютер</option>
<option disabled value="">Выберите услуги</option>
<option v-for="favor in this.favors"
:value="favor.id">
{{ favor.modelName }}
{{ favor.favorName }}
</option>
</select>
</div>

View File

@ -1,9 +1,11 @@
package ru.ulstu.is.sbapp.repair.controller;
import org.springframework.web.bind.annotation.*;
import ru.ulstu.is.sbapp.repair.dtos.FavorDTO;
import ru.ulstu.is.sbapp.repair.dtos.OrderDTO;
import ru.ulstu.is.sbapp.repair.service.OrderService;
import javax.validation.Valid;
import java.util.List;
@RestController
@ -14,16 +16,16 @@ public class OrderController {
this.orderService = productService;
}
@PostMapping
public OrderDTO addOrder(@RequestParam("date") String date) {
return new OrderDTO(orderService.addOrder(date));
public OrderDTO addOrder(@RequestBody @Valid OrderDTO orderDTO) {
return new OrderDTO(orderService.addOrder());
}
@PutMapping("/{id}")
public OrderDTO updateOrder(@PathVariable Long id,@RequestParam("date") String date) {
return new OrderDTO(orderService.updateOrder(id,date));
public OrderDTO updateOrder(@PathVariable Long id) {
return new OrderDTO(orderService.updateOrder(id));
}
@PutMapping("/{id}/favor")
@PostMapping("/{id}/favor")
public OrderDTO putIntoOrder(@PathVariable Long id, @RequestParam("favId") Long favId){
return new OrderDTO(orderService.addFavorToOrder(id, favId));
}

View File

@ -1,8 +1,11 @@
package ru.ulstu.is.sbapp.repair.dtos;
import ru.ulstu.is.sbapp.repair.dtos.FavorDTO;
import ru.ulstu.is.sbapp.repair.model.Component;
import ru.ulstu.is.sbapp.repair.model.Favor;
import ru.ulstu.is.sbapp.repair.model.Order;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@ -11,9 +14,23 @@ public class OrderDTO {
private Date date;
private List<FavorDTO> favorsDTOList;
private List<Long> favorIds;
public OrderDTO(Order order){
this.id =order.getId();
this.date = order.getDate();
if (order.getFavorsList() == null){
this. favorIds = new ArrayList<>();
}
else {
this.favorIds = new ArrayList<>();
List<Favor> favors = order.getFavorsList();
for (Favor favor : favors) {
favorIds.add(favor.getId());
}
}
this.favorsDTOList = order.getFavorsList() == null ? null: order.getFavorsList()
.stream()
.filter(x -> x.getOrders().contains(order.getId()))
@ -31,4 +48,6 @@ public class OrderDTO {
public List<FavorDTO> getFavorsDTOList() {
return favorsDTOList;
}
public List<Long> getfavorIds() { return this.favorIds; }
public void setfavorIds(List<Long> favorIds) { this.favorIds = favorIds; }
}

View File

@ -18,7 +18,7 @@ public class Component {
@Column(name = "amount")
private Integer amount;
@ManyToMany(fetch = FetchType.EAGER, mappedBy = "componentsList", cascade = CascadeType.REMOVE)
@ManyToMany(fetch = FetchType.EAGER, mappedBy = "componentsList", cascade = {CascadeType.MERGE})
private List<Favor> favorsListFromComponents;
public Component() {

View File

@ -20,10 +20,10 @@ public class Favor {
@Column(name = "price")
private Integer price;
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.REMOVE)
@ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.MERGE})
private List<Order> ordersList;
@ManyToMany(cascade = CascadeType.REMOVE)
@ManyToMany(cascade = {CascadeType.MERGE})
@LazyCollection(LazyCollectionOption.FALSE)
private List<Component> componentsList;

View File

@ -17,7 +17,7 @@ public class Order {
@Column(name = "date")
private Date date;
@ManyToMany (fetch = FetchType.EAGER, mappedBy = "ordersList", cascade = CascadeType.REMOVE)
@ManyToMany (fetch = FetchType.EAGER, mappedBy = "ordersList", cascade = CascadeType.REFRESH)
private List<Favor> favorsList;
public Order(){

View File

@ -26,8 +26,9 @@ public class OrderService {
}
@Transactional
public Order addOrder(String date) {
final Order order = new Order(getDate(date));
public Order addOrder() {
Date today = new Date();
final Order order = new Order(today);
validatorUtil.validate(order);
return orderRepository.save(order);
}
@ -56,9 +57,8 @@ public class OrderService {
}
@Transactional
public Order updateOrder(Long id, String date) {
public Order updateOrder(Long id) {
final Order currentOrder = findOrder(id);
currentOrder.setDate(getDate(date));
validatorUtil.validate(currentOrder);
return orderRepository.save(currentOrder);
}