что то

This commit is contained in:
Ino 2023-04-04 13:18:53 +04:00
parent 89fcb3cbca
commit 11173e07c4
17 changed files with 29674 additions and 30570 deletions

View File

@ -15,9 +15,9 @@ public class Product {
private long id; private long id;
@Column(nullable = false) @Column(nullable = false)
@NotBlank(message = "name cant be null or empty") // @NotBlank(message = "name cant be null or empty")
private String name; private String name;
@NotBlank(message = "cost cant be < 0") // @NotBlank(message = "cost cant be < 0")
@Column(nullable = false) @Column(nullable = false)
private double cost; private double cost;
@ManyToMany(fetch = FetchType.EAGER, mappedBy = "products") @ManyToMany(fetch = FetchType.EAGER, mappedBy = "products")
@ -43,7 +43,7 @@ public class Product {
public double getCost() { public double getCost() {
return cost; return cost;
} }
public void setCost(float cost) { public void setCost(double cost) {
this.cost = cost; this.cost = cost;
} }

View File

@ -26,15 +26,15 @@ public class ProductController {
} }
@PostMapping("/") @PostMapping("/")
public ProductDto createProduct(@RequestParam String name, public ProductDto createProduct(@RequestParam("name") String name,
@RequestParam float cost) { @RequestParam("cost") double cost) {
return new ProductDto(productService.addProduct(name, cost)); return new ProductDto(productService.addProduct(name, cost));
} }
@PatchMapping("/{id}") @PatchMapping("/{id}")
public ProductDto updateProduct(@PathVariable Long id, public ProductDto updateProduct(@PathVariable Long id,
@RequestParam String name, @RequestParam String name,
@RequestParam float cost) { @RequestParam double cost) {
return new ProductDto(productService.updateProduct(id, name, cost)); return new ProductDto(productService.updateProduct(id, name, cost));
} }

View File

@ -20,7 +20,7 @@ public class ProductService {
@Transactional @Transactional
public Product addProduct(String name, double cost){ public Product addProduct(String name, double cost){
final Product product = new Product(name, cost); final Product product = new Product(name, cost);
validatorUtil.validate(product); // validatorUtil.validate(product);
return productRepository.save(product); return productRepository.save(product);
} }
@ -36,11 +36,11 @@ public class ProductService {
} }
@Transactional @Transactional
public Product updateProduct(Long id, String name, float cost) { public Product updateProduct(Long id, String name, double cost) {
final Product currentProduct = findProduct(id); final Product currentProduct = findProduct(id);
currentProduct.setName(name); currentProduct.setName(name);
currentProduct.setCost(cost); currentProduct.setCost(cost);
validatorUtil.validate(currentProduct); // validatorUtil.validate(currentProduct);
return productRepository.save(currentProduct); return productRepository.save(currentProduct);
} }

View File

@ -1,6 +1,8 @@
package com.example.demo; package com.example.demo;
import com.example.demo.supply.Order.Orders; 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.Supplier.Supplier;
import com.example.demo.supply.Order.OrderService; import com.example.demo.supply.Order.OrderService;
import com.example.demo.supply.Supplier.SupplierService; import com.example.demo.supply.Supplier.SupplierService;
@ -14,5 +16,5 @@ import java.util.List;
@SpringBootTest @SpringBootTest
public class Tests { public class Tests {
//
} }

View File

@ -1,61 +0,0 @@
<!doctype html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>REST Client Example</title>
<script type="module" src="../node_modules/bootstrap/dist/js/bootstrap.min.js"></script>
<link href="../node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet"/>
</head>
<body>
<div class="container">
<select class="form-select" aria-label="Default select example">
<option selected>Open this select menu</option>
<option value="1">Изделия</option>
<option value="2">Поставщики</option>
<option value="3">Three</option>
</select>
<form id="form">
<div class="row mt-3">
<div class="col-sm-6">
<label for="lastName" class="form-label">Last name</label>
<input type="text" class="form-control" id="lastName" required>
</div>
<div class="col-sm-6">
<label for="firstName" class="form-label">First name</label>
<input type="text" class="form-control" id="firstName" required>
</div>
</div>
<div class="row mt-3">
<div class="d-grid col-sm-4 mx-auto">
<button type="submit" class="btn btn-success">Add</button>
</div>
<div class="d-grid col-sm-4 mx-auto mt-3 mt-sm-0">
<button id="testError" type="button" class="btn btn-danger">Test</button>
</div>
<div class="d-grid col-sm-4 mx-auto mt-3 mt-sm-0">
<button id="testNormal" type="button" class="btn btn-secondary">Test</button>
</div>
</div>
</form>
<div class="row table-responsive">
<table class="table mt-3">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">First name</th>
<th scope="col">Last name</th>
</tr>
</thead>
<tbody id="tbody">
</tbody>
</table>
</div>
</div>
</body>
<script>
</script>
</html>

View File

@ -1,74 +0,0 @@
window.addEventListener('DOMContentLoaded', function () {
const host = "http://localhost:8080";
const table = document.getElementById("tbody");
const form = document.getElementById("form");
const lastNameInput = document.getElementById("lastName");
const firstNameInput = document.getElementById("firstName");
const testErrorBtn = document.getElementById("testError");
const testNormalBtn = document.getElementById("testNormal");
const getData = async function () {
table.innerHTML = "";
const response = await fetch(host + "/student");
const data = await response.json();
data.forEach(student => {
table.innerHTML +=
`<tr>
<th scope="row">${student.id}</th>
<td>${student.firstName}</td>
<td>${student.lastName}</td>
</tr>`;
})
}
const create = async function (firstName, lastName) {
const requestParams = {
method: "POST",
headers: {
"Content-Type": "application/json",
}
};
const response = await fetch(host + /student?firstName=${firstName}&lastName=${lastName}, requestParams);
return await response.json();
}
const test = async function (testObject) {
const requestParams = {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(testObject),
};
const response = await fetch(host + "/test", requestParams);
if (response.status === 200) {
const data = await response.json();
alert(TestDto=[id=${data.id}, name=${data.name}, data=${data.data}]);
}
if (response.status === 400) {
const data = await response.text();
alert(data);
}
}
form.addEventListener("submit", function (event) {
event.preventDefault();
create(firstNameInput.value, lastNameInput.value).then((result) => {
getData();
firstNameInput.value = "";
lastNameInput.value = "";
alert(Student[id=${result.id}, firstName=${result.firstName}, lastName=${result.lastName}]);
});
});
testErrorBtn.addEventListener("click", function () {
test({});
});
testNormalBtn.addEventListener("click", function () {
test({id: 10, name: "test"});
});
getData();
});

29678
front/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,20 +1,39 @@
{ {
"name": "front", "name": "front",
"version": "0.1.0",
"private": true, "private": true,
"version": "1.0.0",
"type": "module",
"scripts": {
"dev": "./node_modules/.bin/vite",
"build": "./node_modules/.bin/vite build",
"preview": "./node_modules/.bin/vite preview"
},
"devDependencies": {
"vite": "^4.1.0"
},
"dependencies": { "dependencies": {
"ajax": "^0.0.4", "@testing-library/jest-dom": "^5.16.5",
"axios": "^1.3.2", "@testing-library/react": "^13.4.0",
"bootstrap": "5.2.1", "@testing-library/user-event": "^13.5.0",
"@fortawesome/fontawesome-free": "6.2.0" "bootstrap": "^5.3.0-alpha2",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-scripts": "5.0.1",
"web-vitals": "^2.1.4"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
} }
} }

View File

@ -6,6 +6,7 @@ const productModel ={
} }
export default function ProductPage(){ export default function ProductPage(){
const mainUrl = 'http://localhost:8080/product/'
const [product, setProduct] = useState(productModel) const [product, setProduct] = useState(productModel)
@ -18,7 +19,17 @@ export default function ProductPage(){
setProduct(productModel) setProduct(productModel)
} }
fetch('') const getAllProducts = () =>{
fetch(`${mainUrl}`)
.then((res) => {
return res.json();
})
.then((arr) => {
setProducts(arr);
})
}
@ -71,7 +82,7 @@ export default function ProductPage(){
{products.map((product, index) => {products.map((product, index) =>
<tr> <tr>
<td>{}</td> <td>{index + 1}</td>
<td>{product.name}</td> <td>{product.name}</td>
<td>{product.cost}</td> <td>{product.cost}</td>
</tr> </tr>

File diff suppressed because it is too large Load Diff

View File

@ -1,39 +0,0 @@
{
"name": "front",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
"bootstrap": "^5.3.0-alpha2",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-scripts": "5.0.1",
"web-vitals": "^2.1.4"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}