From ac0427a16e383ab709da073948b899f396fc09cc Mon Sep 17 00:00:00 2001 From: Ino Date: Wed, 26 Apr 2023 12:50:39 +0400 Subject: [PATCH] ~_~ --- .../demo/supply/Order/OrderController.java | 10 +- .../example/demo/supply/Order/OrderDto.java | 2 +- .../demo/supply/Order/OrderRepository.java | 2 +- .../demo/supply/Order/OrderService.java | 33 ++--- .../supply/Order/{Orders.java => _Order.java} | 10 +- .../example/demo/supply/Product/Product.java | 9 +- .../demo/supply/Product/ProductDto.java | 6 +- .../demo/supply/Supplier/Supplier.java | 9 +- .../demo/supply/Supplier/SupplierDto.java | 6 +- .../src/test/java/com/example/demo/Tests.java | 12 -- front/src/App.js | 4 +- front/src/Pages/CreateOrderPage.jsx | 131 ++++++++++++++++++ .../Pages/{OrderPage.jsx => OrdersPage.jsx} | 19 +-- front/src/general/CastomSelect.jsx | 20 +++ front/src/general/Header.jsx | 1 - front/src/general/ToolBar.jsx | 22 +-- 16 files changed, 213 insertions(+), 83 deletions(-) rename demo/src/main/java/com/example/demo/supply/Order/{Orders.java => _Order.java} (94%) create mode 100644 front/src/Pages/CreateOrderPage.jsx rename front/src/Pages/{OrderPage.jsx => OrdersPage.jsx} (93%) create mode 100644 front/src/general/CastomSelect.jsx 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 b24efc0..4caf8df 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 @@ -31,14 +31,14 @@ public class OrderController { @PatchMapping("/addProduct/{id}/") public OrderDto addProduct(@PathVariable Long id, - @RequestParam() Long productId){ + @RequestParam() Long productId){ return new OrderDto(orderService.addProduct(id, productId)); } - @PatchMapping("/{id}") - public Orders updateOrder(@PathVariable Long id, - @RequestParam() Long supplierId) { - return orderService.updateOrder(id, supplierId); + @PatchMapping("/removeProduct/{id}/") + public OrderDto removeProduct(@PathVariable Long id, + @RequestParam() Long productId){ + return new OrderDto(orderService.removeProduct(id, productId)); } @DeleteMapping("/{id}") 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 afd3cb3..17dfeec 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(Orders 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 5fd01f3..5b084ac 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 @@ -2,5 +2,5 @@ package com.example.demo.supply.Order; import org.springframework.data.jpa.repository.JpaRepository; -public interface OrderRepository extends JpaRepository { +public interface OrderRepository extends JpaRepository<_Order, Long> { } 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 c2251f1..0b413b7 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 @@ -1,15 +1,11 @@ package com.example.demo.supply.Order; -import com.example.demo.supply.Product.Product; -import com.example.demo.supply.Product.ProductRepository; import com.example.demo.supply.Product.ProductService; -import com.example.demo.supply.Supplier.Supplier; import com.example.demo.supply.Supplier.SupplierService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.sql.Date; -import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -30,8 +26,8 @@ public class OrderService { } @Transactional - public Orders addOrder(Long supplierId){ - final Orders order = new Orders(new Date(System.currentTimeMillis())); + public _Order addOrder(Long supplierId){ + final _Order order = new _Order(new Date(System.currentTimeMillis())); order.setSupplier(supplierService.findSupplier(supplierId)); return orderRepository.save(order); } @@ -44,40 +40,33 @@ public class OrderService { // } @Transactional - public Orders addProduct(Long id, Long productId) { - final Orders 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 Orders deleteProduct(Long id, Long productId) { - final Orders 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 Orders findOrder(Long id) { - final Optional order = orderRepository.findById(id); + public _Order findOrder(Long id) { + final Optional<_Order> order = orderRepository.findById(id); return order.orElseThrow(() -> new OrderNotFoundException(id)); } @Transactional(readOnly = true) - public List findAllOrders() { + public List<_Order> findAllOrders() { return orderRepository.findAll(); } @Transactional - public Orders updateOrder(Long id, Long supplierId) { - final Orders currentOrder = findOrder(id); - currentOrder.setSupplier(supplierService.findSupplier(supplierId)); - return orderRepository.save(currentOrder); - } - - @Transactional - public Orders deleteOrder(Long id) { - final Orders 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/Order/Orders.java b/demo/src/main/java/com/example/demo/supply/Order/_Order.java similarity index 94% rename from demo/src/main/java/com/example/demo/supply/Order/Orders.java rename to demo/src/main/java/com/example/demo/supply/Order/_Order.java index 8cd2d34..29741a5 100644 --- a/demo/src/main/java/com/example/demo/supply/Order/Orders.java +++ b/demo/src/main/java/com/example/demo/supply/Order/_Order.java @@ -12,12 +12,12 @@ import java.util.List; import java.util.Objects; @Entity -public class Orders { +public class _Order { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; - @Column + @Column(nullable = false) @Temporal(TemporalType.DATE) private Date dateOfOrder; @@ -36,12 +36,12 @@ public class Orders { public Long getId(){ return id; } - public Orders(Date dateOfOrder) { + public _Order(Date dateOfOrder) { this.dateOfOrder = dateOfOrder; products = new ArrayList<>(); } - public Orders() { + public _Order() { } public Date getDateOfOrder() { @@ -81,7 +81,7 @@ public class Orders { public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - Orders order = (Orders) 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/Product/Product.java b/demo/src/main/java/com/example/demo/supply/Product/Product.java index de1669f..56f34f0 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,8 +1,7 @@ package com.example.demo.supply.Product; -import com.example.demo.supply.Order.Orders; +import com.example.demo.supply.Order._Order; import jakarta.persistence.*; -import jakarta.validation.constraints.NotBlank; import java.util.ArrayList; import java.util.List; @@ -21,7 +20,7 @@ public class Product { @Column(nullable = false) private double cost; @ManyToMany(fetch = FetchType.EAGER, mappedBy = "products") - private List orders; + private List<_Order> orders; public Product(){} @@ -47,11 +46,11 @@ public class Product { this.cost = cost; } - public List getOrders() { + public List<_Order> getOrders() { return orders; } - public void setOrders(List orders) { + public void setOrders(List<_Order> 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 9c3ade9..65729fd 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.Orders; +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 orders; + private List<_Order> orders; public ProductDto(Product product) { this.id = product.getId(); @@ -26,7 +26,7 @@ public class ProductDto { public double getCost() { return cost; } - public List getOrders() { + public List<_Order> 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 1efd5fe..cfa5678 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,6 +1,7 @@ package com.example.demo.supply.Supplier; -import com.example.demo.supply.Order.Orders; +import com.example.demo.supply.Order._Order; +import com.example.demo.supply.Product.Product; import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.persistence.*; @@ -21,7 +22,7 @@ public class Supplier { @JsonIgnore @OneToMany(fetch = FetchType.EAGER, mappedBy = "supplier", cascade = CascadeType.REMOVE) - private List orders; + private List<_Order> orders; public Supplier(){} @@ -48,11 +49,11 @@ public class Supplier { this.license = license; } - public List getOrders() { + public List<_Order> getOrders() { return orders; } - public void setOrders(List orders) { + public void setOrders(List<_Order> 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 35be80c..e479bff 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.Orders; +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 orders; + private List<_Order> orders; public SupplierDto(Supplier supplier){ this.id = supplier.getId(); @@ -24,7 +24,7 @@ public class SupplierDto { public int getLicense() { return license; } - public List getOrders() { + public List<_Order> getOrders() { return orders; } } diff --git a/demo/src/test/java/com/example/demo/Tests.java b/demo/src/test/java/com/example/demo/Tests.java index 5e78acd..6bce0f2 100644 --- a/demo/src/test/java/com/example/demo/Tests.java +++ b/demo/src/test/java/com/example/demo/Tests.java @@ -1,19 +1,7 @@ package com.example.demo; -import com.example.demo.supply.Order.Orders; -import com.example.demo.supply.Product.Product; -import com.example.demo.supply.Product.ProductService; -import com.example.demo.supply.Supplier.Supplier; -import com.example.demo.supply.Order.OrderService; -import com.example.demo.supply.Supplier.SupplierService; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import java.util.ArrayList; -import java.util.List; - @SpringBootTest public class Tests { } \ No newline at end of file diff --git a/front/src/App.js b/front/src/App.js index fed88e1..ccea127 100644 --- a/front/src/App.js +++ b/front/src/App.js @@ -1,7 +1,8 @@ import { BrowserRouter, Route, Routes} from "react-router-dom"; import CatalogProducts from "./Pages/CatalogProducts"; import CatalogSuppliers from "./Pages/CatalogSuppliers"; -import OrderPage from "./Pages/OrderPage"; +import OrderPage from "./Pages/OrdersPage"; +import CreateOrderPage from "./Pages/CreateOrderPage"; import Header from "./general/Header"; function App() { @@ -14,6 +15,7 @@ function App() { + diff --git a/front/src/Pages/CreateOrderPage.jsx b/front/src/Pages/CreateOrderPage.jsx new file mode 100644 index 0000000..9eefe5b --- /dev/null +++ b/front/src/Pages/CreateOrderPage.jsx @@ -0,0 +1,131 @@ +import { React, useState, useEffect } from "react"; +import Supplier from "../models/Supplier"; +import DataService from "../DataService"; +import Order from "../models/Order"; +import Product from "../models/Product"; +import Table from "../general/Table"; +import Modal from "../general/Modal"; + +export default function CreateOrderPage(props){ + const url = 'order/' + const supplierUrl = 'supplier/' + const productUrl = 'product/' + + const headers = [ + { name: 'name', label: 'Продукт' }, + { name: 'cost', label: 'Цена' } + ]; + + const transformer = (data) => new Order(data) + const transformerSupplier = (data) => new Supplier(data) + const transformerProduct = (data) => new Product(data) + + const [suppliers, setSuppliers] = useState([]) + const [products, setProducts] = useState([]) + + const [productsOrder, setProductsOrder] = useState([]) + + 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.getOrders(url).then(data => { + // console.log(data) + // setOrders([]) + // data.map(order => { + // setOrders(prevState => [...prevState, new Order(order)]) + // }) + // }) + + DataService.readAll(supplierUrl, transformerSupplier).then(data => setSuppliers(data)) + DataService.readAll(productUrl, transformerProduct).then(data => setProducts(data)) + } + + const saveItems = () => { + console.log("saveItems") + + } + + const handleFormChange = (event) => { + //console.log([event.target.id].event.target.value) + // console.log(currOrder) + // setData({ ...data, [event.target.id]: event.target.value }) + // console.log(data) + } + + const addProduct = () => { + setModalHeader('Добавление продукта'); + setModalConfirm('Добавить'); + setModalVisible(true); + } + + const hideModal = () => setModalVisible(false) + const modalDone = () => saveItems() + const ds = () => console.log("") + + return( +
+
+

Создание заказа

+
+ +
+
+ + +
+
+

+
+

Поставщик

+ +
+

Продукты

+
+ + +
+ + + + +
+

Продукт

+ +
+
+ + ) +} \ No newline at end of file diff --git a/front/src/Pages/OrderPage.jsx b/front/src/Pages/OrdersPage.jsx similarity index 93% rename from front/src/Pages/OrderPage.jsx rename to front/src/Pages/OrdersPage.jsx index 9306f72..b8f52c5 100644 --- a/front/src/Pages/OrderPage.jsx +++ b/front/src/Pages/OrdersPage.jsx @@ -1,3 +1,4 @@ +import { Link } from 'react-router-dom'; import { React, useState, useEffect } from "react"; import Table from "../general/Table"; import ToolBar from "../general/ToolBar"; @@ -92,9 +93,9 @@ export default function OrderPage(){ } const handleFormChange = (event) => { - console.log(currOrder) - setData({ ...data, [event.target.id]: event.target.value }) - console.log(data) + // console.log(currOrder) + // setData({ ...data, [event.target.id]: event.target.value }) + // console.log(data) } @@ -129,7 +130,7 @@ export default function OrderPage(){ visible={modalVisible} onHide={hideModal} onDone={modalDone}> -
+ {/*
-
+
*/} -
+ {/*
-
+
*/} -
+ {/*
-
+
*/}
) diff --git a/front/src/general/CastomSelect.jsx b/front/src/general/CastomSelect.jsx new file mode 100644 index 0000000..e3f78f8 --- /dev/null +++ b/front/src/general/CastomSelect.jsx @@ -0,0 +1,20 @@ + +export default function CastomSelect(props){ + + const handleFormChange = () => console.log("efhekjf") + + return( +
+ + +
+ ) +} \ No newline at end of file diff --git a/front/src/general/Header.jsx b/front/src/general/Header.jsx index d0645fa..22b05f1 100644 --- a/front/src/general/Header.jsx +++ b/front/src/general/Header.jsx @@ -16,7 +16,6 @@ export default function Header() { Продукты -
  • diff --git a/front/src/general/ToolBar.jsx b/front/src/general/ToolBar.jsx index 8268413..e1c8e78 100644 --- a/front/src/general/ToolBar.jsx +++ b/front/src/general/ToolBar.jsx @@ -1,3 +1,4 @@ +import { Link } from 'react-router-dom'; import React from "react"; import styles from './Toolbar.module.css'; @@ -12,24 +13,23 @@ function ToolBar(props) { return (
    - - + + - - -
    );