From ea3d632390f3a4c993b276367253589e5cb21a59 Mon Sep 17 00:00:00 2001 From: Kritkhanin Anantakul <65160144@go.buu.ac.th> Date: Tue, 4 Mar 2025 00:42:07 +0700 Subject: [PATCH] page and queue type service --- src/services/page.ts | 33 ++++++++++++++++++++++++++++ src/services/queue.ts | 50 +++++++++++++++++++++++++++++++++++++++++++ src/types/Page.ts | 5 +++++ src/types/Queue.ts | 11 ++++++++++ 4 files changed, 99 insertions(+) create mode 100644 src/services/page.ts create mode 100644 src/services/queue.ts create mode 100644 src/types/Page.ts create mode 100644 src/types/Queue.ts diff --git a/src/services/page.ts b/src/services/page.ts new file mode 100644 index 0000000..8226656 --- /dev/null +++ b/src/services/page.ts @@ -0,0 +1,33 @@ +import type { Page } from "../types/Page"; + +export class PageService { + private pages: Page[] = []; + + // ดึงข้อมูลหน้าทั้งหมด + getPages(): Page[] { + return this.pages; + } + + // ค้นหาหน้าโดยใช้ pageID + getPageById(pageID: number): Page | undefined { + return this.pages.find(page => page.pageID === pageID); + } + + // เพิ่มหน้าใหม่ + addPage(page: Page): void { + this.pages.push(page); + } + + // อัปเดตข้อมูลของหน้า + updatePage(updatedPage: Page): void { + const index = this.pages.findIndex(page => page.pageID === updatedPage.pageID); + if (index !== -1) { + this.pages[index] = updatedPage; + } + } + + // ลบหน้าตาม pageID + removePage(pageID: number): void { + this.pages = this.pages.filter(page => page.pageID !== pageID); + } +} diff --git a/src/services/queue.ts b/src/services/queue.ts new file mode 100644 index 0000000..9346146 --- /dev/null +++ b/src/services/queue.ts @@ -0,0 +1,50 @@ +import type { Queue } from '@/types/Queue' + +export class QueueService { + private queue: Queue[] = []; + + // ดึงรายการคิวทั้งหมด + getQueue(): Queue[] { + return this.queue; + } + + // ค้นหารายการคิวโดยใช้ queueID + getQueueById(queueID: number): Queue | undefined { + return this.queue.find(item => item.queueID === queueID); + } + + // เพิ่มรายการใหม่เข้า queue + addQueueItem(item: Queue): void { + this.queue.push(item); + } + + // อัปเดตรายการ queue ที่มีอยู่ + updateQueueItem(updatedItem: Queue): void { + const index = this.queue.findIndex(item => item.queueID === updatedItem.queueID); + if (index !== -1) { + this.queue[index] = updatedItem; + } + } + + // ลบรายการ queue ตาม queueID + removeQueueItem(queueID: number): void { + this.queue = this.queue.filter(item => item.queueID !== queueID); + } + + // เปลี่ยนสถานะของคิว + updateQueueStatus(queueID: number, status: 'pending' | 'in-progress' | 'completed' | 'canceled'): void { + const queueItem = this.getQueueById(queueID); + if (queueItem) { + queueItem.status = status; + } + } + + // คำนวณเวลาการทำงานของ queue + calculateProductionTime(queueID: number): number | null { + const queueItem = this.getQueueById(queueID); + if (queueItem && queueItem.startTime && queueItem.finishTime) { + return (queueItem.finishTime.getTime() - queueItem.startTime.getTime()) / (1000 * 60); // แปลงเป็นนาที + } + return null; + } +} diff --git a/src/types/Page.ts b/src/types/Page.ts new file mode 100644 index 0000000..7925fb1 --- /dev/null +++ b/src/types/Page.ts @@ -0,0 +1,5 @@ +export type Page = { + pageID: number; // PK - รหัสหน้าที่ใช้ใน Gantt Chart + priorityID: number; // FK - รหัสความสำคัญ (เชื่อมกับ Priority) + }; + \ No newline at end of file diff --git a/src/types/Queue.ts b/src/types/Queue.ts new file mode 100644 index 0000000..d213212 --- /dev/null +++ b/src/types/Queue.ts @@ -0,0 +1,11 @@ +export type Queue = { + queueID: number; // PK - รหัส Queue + machineID: number; // FK - รหัสเครื่องจักรที่ใช้ + orderID: number; // FK - รหัสออเดอร์ที่เกี่ยวข้อง + pageID: number; // FK - รหัสหน้าที่แสดงใน Gantt Chart + startTime: Date; // เวลาเริ่มต้น + finishTime: Date; // เวลาสิ้นสุด + status: 'pending' | 'in-progress' | 'completed' | 'canceled'; // สถานะของคิว + bottleSize: string; // ขนาดขวดที่ผลิต + producedQuantity: number; // จำนวนที่ผลิตได้ +}; -- GitLab