diff --git a/demo/src/main/java/com/example/demo/supply/Order/_Order.java b/demo/src/main/java/com/example/demo/supply/Order/Order.java similarity index 95% rename from demo/src/main/java/com/example/demo/supply/Order/_Order.java rename to demo/src/main/java/com/example/demo/supply/Order/Order.java index 58a1061..5b27862 100644 --- a/demo/src/main/java/com/example/demo/supply/Order/_Order.java +++ b/demo/src/main/java/com/example/demo/supply/Order/Order.java @@ -12,7 +12,8 @@ import java.util.List; import java.util.Objects; @Entity -public class _Order { +@Table(name = "tab_order") +public class Order { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @@ -36,12 +37,12 @@ public class _Order { public Long getId(){ return id; } - public _Order(Date dateOfOrder) { + public Order(Date dateOfOrder) { this.dateOfOrder = dateOfOrder; products = new ArrayList<>(); } - public _Order() { + public Order() { } public Date getDateOfOrder() { @@ -81,7 +82,7 @@ public class _Order { public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - _Order order = (_Order) o; + Order order = (Order) o; if(!Objects.equals(id, order.id)) return false; if(!Objects.equals(dateOfOrder.toString(), order.dateOfOrder.toString())) return false; diff --git a/demo/src/main/java/com/example/demo/supply/Order/OrderController.java b/demo/src/main/java/com/example/demo/supply/Order/OrderController.java index e5756fa..68f0356 100644 --- a/demo/src/main/java/com/example/demo/supply/Order/OrderController.java +++ b/demo/src/main/java/com/example/demo/supply/Order/OrderController.java @@ -34,15 +34,10 @@ public class OrderController { return orderService.findAllOrderProducts(id).stream().map(ProductDto::new).toList(); } -// @PostMapping("/someSuppliers/") -// public List getSomeSuppliers(@RequestBody() List products) { -// return orderService.suppliers(products).stream().map(SupplierDto::new).toList(); -// } - -// @PostMapping("/someSuppliers/") -// public List getSomeSuppliers(@RequestBody() List products) { -// return products; -// } + @GetMapping("/someSuppliers/{id}") + public List getSomeSuppliers(@PathVariable Long id) { + return orderService.suppliers(id).stream().map(SupplierDto::new).toList(); + } @PostMapping("/") public Long createOrder(@RequestParam() Long supplierId) { diff --git a/demo/src/main/java/com/example/demo/supply/Order/OrderDto.java b/demo/src/main/java/com/example/demo/supply/Order/OrderDto.java index 970e3c4..97cdaab 100644 --- a/demo/src/main/java/com/example/demo/supply/Order/OrderDto.java +++ b/demo/src/main/java/com/example/demo/supply/Order/OrderDto.java @@ -14,7 +14,7 @@ public class OrderDto { private Supplier supplier; private List products; - public OrderDto(_Order order){ + public OrderDto(Order order){ this.id = order.getId(); this.dateOfOrder = order.getDateOfOrder(); this.supplier = order.getSupplier(); diff --git a/demo/src/main/java/com/example/demo/supply/Order/OrderRepository.java b/demo/src/main/java/com/example/demo/supply/Order/OrderRepository.java index 7a108b4..0b91439 100644 --- a/demo/src/main/java/com/example/demo/supply/Order/OrderRepository.java +++ b/demo/src/main/java/com/example/demo/supply/Order/OrderRepository.java @@ -7,8 +7,9 @@ import org.springframework.data.jpa.repository.Query; import java.util.List; -public interface OrderRepository extends JpaRepository<_Order, Long> { - @Query("SELECT distinct o.supplier FROM _Order o join Product p where p in (?1)") - List getSomeSuppliers(List products); +public interface OrderRepository extends JpaRepository { + @Query("SELECT distinct o.supplier FROM Order o join Product p where p = ?1") +// @Query("SELECT distinct o.supplier FROM Order o where ?1 member of o.products") + List getSomeSuppliers(Product product); } diff --git a/demo/src/main/java/com/example/demo/supply/Order/OrderService.java b/demo/src/main/java/com/example/demo/supply/Order/OrderService.java index c1483d2..c75929d 100644 --- a/demo/src/main/java/com/example/demo/supply/Order/OrderService.java +++ b/demo/src/main/java/com/example/demo/supply/Order/OrderService.java @@ -28,58 +28,52 @@ public class OrderService { } @Transactional - public _Order addOrder(Long supplierId){ - final _Order order = new _Order(new Date()); + public Order addOrder(Long supplierId){ + final Order order = new Order(new Date()); order.setSupplier(supplierService.findSupplier(supplierId)); return orderRepository.save(order); } - //поставщики, у которых есть заказ на конкретный товар или несколько товаров -// @Transactional -// public List suppliers(List products){ -// return em.createQuery("SELECT distinct o.supplier FROM Orders o join Product p where p in (:products) ", Supplier.class) -// .setParameter("products", products).getResultList(); -// } - @Transactional - public List suppliers(List products){ - return orderRepository.getSomeSuppliers(products); + public List suppliers(Long productId){ + final Product product = productService.findProduct(productId); + return orderRepository.getSomeSuppliers(product); } @Transactional - public _Order addProduct(Long id, Long productId) { - final _Order currentOrder = findOrder(id); + public Order addProduct(Long id, Long productId) { + final Order currentOrder = findOrder(id); currentOrder.addProduct(productService.findProduct(productId)); return orderRepository.save(currentOrder); } @Transactional - public _Order removeProduct(Long id, Long productId) { - final _Order currentOrder = findOrder(id); + public Order removeProduct(Long id, Long productId) { + final Order currentOrder = findOrder(id); currentOrder.addProduct(productService.findProduct(productId)); return orderRepository.save(currentOrder); } @Transactional(readOnly = true) - public _Order findOrder(Long id) { - final Optional<_Order> order = orderRepository.findById(id); + public Order findOrder(Long id) { + final Optional order = orderRepository.findById(id); return order.orElseThrow(() -> new OrderNotFoundException(id)); } @Transactional(readOnly = true) - public List<_Order> findAllOrders() { + public List findAllOrders() { return orderRepository.findAll(); } @Transactional(readOnly = true) public List findAllOrderProducts(Long orderId) { - final Optional<_Order> order = orderRepository.findById(orderId); + final Optional order = orderRepository.findById(orderId); return order.orElseThrow(() -> new OrderNotFoundException(orderId)).getProducts(); } @Transactional - public _Order deleteOrder(Long id) { - final _Order currentOrder = findOrder(id); + public Order deleteOrder(Long id) { + final Order currentOrder = findOrder(id); orderRepository.delete(currentOrder); return currentOrder; } diff --git a/demo/src/main/java/com/example/demo/supply/Product/Product.java b/demo/src/main/java/com/example/demo/supply/Product/Product.java index 9ec18b7..0804283 100644 --- a/demo/src/main/java/com/example/demo/supply/Product/Product.java +++ b/demo/src/main/java/com/example/demo/supply/Product/Product.java @@ -1,6 +1,6 @@ package com.example.demo.supply.Product; -import com.example.demo.supply.Order._Order; +import com.example.demo.supply.Order.Order; import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.persistence.*; @@ -22,7 +22,7 @@ public class Product { private double cost; @JsonIgnore @ManyToMany(fetch = FetchType.EAGER, mappedBy = "products") - private List<_Order> orders; + private List orders; public Product(){} @@ -48,11 +48,11 @@ public class Product { this.cost = cost; } - public List<_Order> getOrders() { + public List getOrders() { return orders; } - public void setOrders(List<_Order> orders) { + public void setOrders(List orders) { this.orders = orders; } diff --git a/demo/src/main/java/com/example/demo/supply/Product/ProductDto.java b/demo/src/main/java/com/example/demo/supply/Product/ProductDto.java index 65729fd..84590ed 100644 --- a/demo/src/main/java/com/example/demo/supply/Product/ProductDto.java +++ b/demo/src/main/java/com/example/demo/supply/Product/ProductDto.java @@ -1,6 +1,6 @@ package com.example.demo.supply.Product; -import com.example.demo.supply.Order._Order; +import com.example.demo.supply.Order.Order; import java.util.List; @@ -8,7 +8,7 @@ public class ProductDto { private long id; private String name; private double cost; - private List<_Order> orders; + private List orders; public ProductDto(Product product) { this.id = product.getId(); @@ -26,7 +26,7 @@ public class ProductDto { public double getCost() { return cost; } - public List<_Order> getOrders() { + public List getOrders() { return orders; } } diff --git a/demo/src/main/java/com/example/demo/supply/Supplier/Supplier.java b/demo/src/main/java/com/example/demo/supply/Supplier/Supplier.java index cfa5678..bd02c1d 100644 --- a/demo/src/main/java/com/example/demo/supply/Supplier/Supplier.java +++ b/demo/src/main/java/com/example/demo/supply/Supplier/Supplier.java @@ -1,7 +1,6 @@ package com.example.demo.supply.Supplier; -import com.example.demo.supply.Order._Order; -import com.example.demo.supply.Product.Product; +import com.example.demo.supply.Order.Order; import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.persistence.*; @@ -22,7 +21,7 @@ public class Supplier { @JsonIgnore @OneToMany(fetch = FetchType.EAGER, mappedBy = "supplier", cascade = CascadeType.REMOVE) - private List<_Order> orders; + private List orders; public Supplier(){} @@ -49,11 +48,11 @@ public class Supplier { this.license = license; } - public List<_Order> getOrders() { + public List getOrders() { return orders; } - public void setOrders(List<_Order> orders) { + public void setOrders(List orders) { this.orders = orders; } diff --git a/demo/src/main/java/com/example/demo/supply/Supplier/SupplierDto.java b/demo/src/main/java/com/example/demo/supply/Supplier/SupplierDto.java index e479bff..618c81a 100644 --- a/demo/src/main/java/com/example/demo/supply/Supplier/SupplierDto.java +++ b/demo/src/main/java/com/example/demo/supply/Supplier/SupplierDto.java @@ -1,6 +1,6 @@ package com.example.demo.supply.Supplier; -import com.example.demo.supply.Order._Order; +import com.example.demo.supply.Order.Order; import java.util.List; @@ -8,7 +8,7 @@ public class SupplierDto { private Long id; private String name; private int license; - private List<_Order> orders; + private List orders; public SupplierDto(Supplier supplier){ this.id = supplier.getId(); @@ -24,7 +24,7 @@ public class SupplierDto { public int getLicense() { return license; } - public List<_Order> getOrders() { + public List getOrders() { return orders; } } diff --git a/front/src/App.js b/front/src/App.js index ccea127..9ad40bd 100644 --- a/front/src/App.js +++ b/front/src/App.js @@ -3,6 +3,7 @@ import CatalogProducts from "./Pages/CatalogProducts"; import CatalogSuppliers from "./Pages/CatalogSuppliers"; import OrderPage from "./Pages/OrdersPage"; import CreateOrderPage from "./Pages/CreateOrderPage"; +import GetSomeSuppliers from "./Pages/GetSomeSuppliers"; import Header from "./general/Header"; function App() { @@ -16,6 +17,7 @@ function App() { + diff --git a/front/src/DataService.js b/front/src/DataService.js index 4b07418..6a83dee 100644 --- a/front/src/DataService.js +++ b/front/src/DataService.js @@ -6,7 +6,6 @@ function getFullUrl(url, data) { const fields = Object.getOwnPropertyNames(data); //проходимся по каждому полю for (const field of fields) { - if (field === undefined) continue if (field === 'id') continue if (field === 'date') continue @@ -51,26 +50,12 @@ export default class DataService { return true; } - static async getSomeSuppliers(){ - const arr =[ - { - "id":104, - "name":"prod3", - "cost":3333 - }, - { - "id":153, - "name":"prod3", - "cost":5555 - } - ] - - //const resArr = JSON.stringify(arr) - //console.log(resArr) - const response = await axios.post(this.mainUrl + `order/someSuppliers/`, { - body: {arr} - }); - console.log(response) + static async getSomeSuppliers(url){ + const response = await fetch(this.mainUrl + url, { + method: 'GET', + }).catch(e => console.log(e)) + const res = response.json() + return res } static async update(url, data) { diff --git a/front/src/Pages/CatalogOrders.jsx b/front/src/Pages/CatalogOrders.jsx index 6a90b9e..4ddabba 100644 --- a/front/src/Pages/CatalogOrders.jsx +++ b/front/src/Pages/CatalogOrders.jsx @@ -4,7 +4,6 @@ import Order from '../models/Order'; import Supplier from '../models/Supplier'; import Product from '../models/Product'; import DataService from '../DataService'; -import Modal from '../general/Modal'; export default function CatalogOrders(props) { const url = 'order/' diff --git a/front/src/Pages/GetSomeSuppliers.jsx b/front/src/Pages/GetSomeSuppliers.jsx new file mode 100644 index 0000000..6444758 --- /dev/null +++ b/front/src/Pages/GetSomeSuppliers.jsx @@ -0,0 +1,97 @@ +import React, { useState, useEffect } from "react"; +import Modal from "../general/Modal"; +import Table from "../general/Table"; +import DataService from "../DataService"; +import Product from "../models/Product"; +import Supplier from "../models/Supplier"; + +export default function GetSomeSuppliers(props) { + const url = 'order/someSuppliers/' + const productUrl = 'product/' + + const headers = [ + { name: 'name', label: 'Поставщик' }, + { name: 'license', label: 'Лицензия' } + ]; + + const transformer = (data) => new Supplier(data) + const transformerProduct = (data) => new Product(data) + + const [suppliers, setSuppliers] = useState([]) + const [products, setProducts] = useState([]) + const [product, setProduct] = useState(new Product()) + + const [modalHeader, setModalHeader] = useState('') + const [modalConfirm, setModalConfirm] = useState('') + const [modalVisible, setModalVisible] = useState(false) + + useEffect(() => { + loadItems() + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + const loadItems = () => { + DataService.readAll(productUrl, transformerProduct).then(data =>{ + console.log(data) + setProducts(data) + }) + } + + const chooseProduct = () => { + setModalHeader('Добавление') + setModalConfirm('Добавить') + setModalVisible(true) + } + + const save = () => { + console.log(product) + DataService.getSomeSuppliers(`${url}${product.id}`) + .then(data => setSuppliers(data)) + } + + const handleChooseProduct = (event) => { + // console.log(event.target.id) + // console.log(event.target.value) + setProduct({ ...product, [event.target.id]: event.target.value }) + } + + const handleTableClick = (tableSelectedItems) => console.log("") + const handleTableDblClick = (tableSelectedItem) => console.log("") + + const hideModal = () => { + setModalVisible(false) + } + const modalDone = () => save() + + return ( + <> + + + + +
+

Продукт

+ +
+
+ + ); +} \ No newline at end of file diff --git a/front/src/general/Catalog.jsx b/front/src/general/Catalog.jsx index a7dddd5..9836a18 100644 --- a/front/src/general/Catalog.jsx +++ b/front/src/general/Catalog.jsx @@ -12,7 +12,6 @@ function Catalog(props) { const [modalVisible, setModalVisible] = useState(false) const [addProdVisible, setAddProdVisible] = useState(false) const [isEdit, setEdit] = useState(false) - const [isAddProd, setIsAddProd] = useState(false) let selectedItems = []; @@ -24,7 +23,10 @@ function Catalog(props) { const loadItems = () => { DataService.readAll(props.url, props.transformer) - .then(data => setItems(data)) + .then(data =>{ + console.log(data) + setItems(data) + } ) } const saveItem = () => { diff --git a/front/src/general/Header.jsx b/front/src/general/Header.jsx index 22b05f1..1fe0d8d 100644 --- a/front/src/general/Header.jsx +++ b/front/src/general/Header.jsx @@ -27,6 +27,11 @@ export default function Header() { Заказы +
  • + + Доп задание + +
  • diff --git a/front/src/general/Table.jsx b/front/src/general/Table.jsx index e50a563..41d69bd 100644 --- a/front/src/general/Table.jsx +++ b/front/src/general/Table.jsx @@ -43,7 +43,7 @@ export default function Table(props) { return data else{ let prod = '' - data.map(product => prod += ` <${product.name}> `) + data.map(product => prod += ` ${product.name},`) return prod } }