Gitlab@Informatics

Skip to content
Snippets Groups Projects
Commit e20acb7a authored by 65160206's avatar 65160206
Browse files

edit material schema and test get material

parent 7bd01ff6
No related branches found
No related tags found
No related merge requests found
import { Entity, PrimaryGeneratedColumn, Column, OneToMany } from 'typeorm';
import { MaterialRestockDetail } from '@/material_restock_detail/entities/material_restock_detail.entity';
import { MaterialStock } from '@/material_stocks/entities/material_stock.entity';
@Entity('Material_Restock_Order')
export class MaterialRestockOrder {
......@@ -9,18 +9,15 @@ export class MaterialRestockOrder {
@Column({ type: 'date' })
OrderDate: Date;
@Column()
Status: string;
@Column({ type: 'date' })
@Column({ type: 'date', nullable: true })
ExpectedDeliveryDate: Date;
@Column()
@Column({ type: 'varchar', length: 50 })
Status: string;
@Column({ type: 'varchar', length: 50 })
Type: string;
@OneToMany(
() => MaterialRestockDetail,
(restockDetail) => restockDetail.restockOrder,
)
restockDetails: MaterialRestockDetail[];
@OneToMany(() => MaterialStock, (materialStock) => materialStock.restockOrder)
materialStocks: MaterialStock[];
}
import {
Entity,
PrimaryGeneratedColumn,
ManyToOne,
Column,
JoinColumn,
} from 'typeorm';
import { Entity, PrimaryColumn, ManyToOne, Column } from 'typeorm';
import { Material } from '@/materials/entities/material.entity';
import { MaterialRestockOrder } from '@/material_restock_order/entities/material_restock_order.entity';
@Entity('Material_Stock')
export class MaterialStock {
@PrimaryGeneratedColumn()
MaterialStockID: number;
@PrimaryColumn()
RestockOrderID: number;
@ManyToOne(() => Material, (material) => material.materialStocks, {
onDelete: 'CASCADE',
})
@JoinColumn({ name: 'MaterialID' })
material: Material;
@PrimaryColumn()
MaterialID: number;
@Column({ type: 'int' })
QuantityOrdered: number;
@Column()
QuantityInStock: number;
@Column({ type: 'int', default: 0 })
QuantityReceived: number;
@Column()
ReorderLevel: number;
@Column({ type: 'varchar', length: 50 })
Status: string;
@ManyToOne(() => Material, (material) => material.materialStocks)
material: Material;
@Column({ type: 'date' })
LastUpdated: Date;
@ManyToOne(
() => MaterialRestockOrder,
(restockOrder) => restockOrder.materialStocks,
)
restockOrder: MaterialRestockOrder;
}
import { Entity, PrimaryGeneratedColumn, Column, OneToMany } from 'typeorm';
import { MaterialRestockDetail } from '@/material_restock_detail/entities/material_restock_detail.entity';
import {
Entity,
PrimaryGeneratedColumn,
Column,
OneToMany,
UpdateDateColumn,
} from 'typeorm';
import { MaterialStock } from '@/material_stocks/entities/material_stock.entity';
import { RecipeIngredient } from '@/recipe_ingredients/entities/recipe_ingredient.entity';
......@@ -8,23 +13,26 @@ export class Material {
@PrimaryGeneratedColumn()
MaterialID: number;
@Column()
@Column({ type: 'varchar', length: 255 })
name: string;
@Column({ type: 'text', nullable: true })
description: string;
@Column()
@Column({ type: 'int', default: 0 })
QuantityInStock: number;
@Column({ type: 'int', default: 0 })
ReorderLevel: number;
@Column({ type: 'varchar', length: 50 })
unit: string;
@Column({ type: 'float' })
@Column({ type: 'decimal', precision: 10, scale: 2 })
pricePerUnit: number;
@OneToMany(
() => MaterialRestockDetail,
(restockDetail) => restockDetail.material,
)
restockDetails: MaterialRestockDetail[];
@UpdateDateColumn()
LastUpdate: Date;
@OneToMany(() => MaterialStock, (materialStock) => materialStock.material)
materialStocks: MaterialStock[];
......
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { MaterialsService } from './materials.service';
import { MaterialsController } from './materials.controller';
import { Material } from './entities/material.entity';
import { MaterialStock } from '@/material_stocks/entities/material_stock.entity';
@Module({
imports: [TypeOrmModule.forFeature([Material, MaterialStock])], // ✅ Import TypeORM สำหรับ Material และ MaterialStock
controllers: [MaterialsController],
providers: [MaterialsService],
exports: [MaterialsService], // ✅ Export service เพื่อให้ module อื่นเรียกใช้ได้
})
export class MaterialsModule {}
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Material } from './entities/material.entity';
import { MaterialStock } from '@/material_stocks/entities/material_stock.entity';
import { CreateMaterialDto } from './dto/create-material.dto';
import { UpdateMaterialDto } from './dto/update-material.dto';
@Injectable()
export class MaterialsService {
create(createMaterialDto: CreateMaterialDto) {
return 'This action adds a new material';
constructor(
@InjectRepository(Material)
private readonly materialRepository: Repository<Material>,
@InjectRepository(MaterialStock)
private readonly materialStockRepository: Repository<MaterialStock>,
) {}
async create(createMaterialDto: CreateMaterialDto) {
const material = this.materialRepository.create(createMaterialDto);
return await this.materialRepository.save(material);
}
findAll() {
return `This action returns all materials`;
async findAll() {
return await this.materialRepository.find();
}
findOne(id: number) {
return `This action returns a #${id} material`;
async findOne(id: number) {
return await this.materialRepository.findOne({
where: { MaterialID: id },
relations: ['materialStocks'],
});
}
update(id: number, updateMaterialDto: UpdateMaterialDto) {
return `This action updates a #${id} material`;
async update(id: number, updateMaterialDto: UpdateMaterialDto) {
await this.materialRepository.update(id, updateMaterialDto);
return await this.findOne(id);
}
remove(id: number) {
return `This action removes a #${id} material`;
async remove(id: number) {
return await this.materialRepository.delete(id);
}
}
import requests
import sys
# ✅ ตั้งค่าให้ Python รองรับ UTF-8 (แก้ปัญหาภาษาไทยใน CMD)
sys.stdout.reconfigure(encoding='utf-8')
# API endpoint
url = "http://localhost:4000/materials"
# Request data from API
try:
response = requests.get(url)
response.raise_for_status() # Raise error for bad response (4xx, 5xx)
materials = response.json()
# Generate status report for each material
report = []
for material in materials:
status = "เพียงพอ" if material["QuantityInStock"] > material["ReorderLevel"] else "ต้องสั่งเพิ่ม"
report.append(f"Material: {material['name']} ({material['description']}) | คงเหลือ: {material['QuantityInStock']} {material['unit']} | สถานะ: {status}")
# Show report
report_text = "\n".join(report)
print(report_text)
except requests.exceptions.RequestException as e:
print(f"Error fetching data: {e}")
......@@ -9,7 +9,7 @@ import {
} from 'typeorm';
import { Customer } from '@/customers/entities/customer.entity';
import { Queue } from '@/queues/entities/queue.entity';
@Entity()
@Entity('Order')
export class Order {
@PrimaryGeneratedColumn()
OrderID: number;
......
......@@ -10,7 +10,7 @@ import { Machine } from '@/machines/entities/machine.entity';
import { Order } from '@/orders/entities/order.entity';
import { Employee } from '@/employees/entities/employee.entity';
@Entity('queue')
@Entity('Queue')
export class Queue {
@PrimaryGeneratedColumn()
queueID: number;
......
import { Entity, PrimaryGeneratedColumn, Column, OneToMany } from 'typeorm';
import { User } from 'src/users/entities/user.entity';
@Entity()
@Entity('Role')
export class Role {
@PrimaryGeneratedColumn()
id: number;
......
......@@ -8,7 +8,7 @@ import {
} from 'typeorm';
import { Role } from 'src/roles/entities/role.entity';
@Entity()
@Entity('User')
export class User {
@PrimaryGeneratedColumn()
id: number;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment