📖 들어가기전에

산업공학과 생산관리 시스템에 대한 이해를 바탕으로 생산관리 시스템의 구조와 기능에 대해 자세히 알아보겠습니다.
본 문서는 개발자와 생산팀장 등 생산관리 시스템의 구현과 사용에 관련된 전문가를 대상으로 작성되었습니다.

📖 생산관리 시스템의 역할

생산관리 시스템의 주요 역할은 다음과 같습니다:

  1. 생산계획의 수립 및 관리: 생산계획을 통해 생산 효율을 높이고 생산비용을 줄입니다. 필요한 컬럼은 생산일, 생산 라인, 생산 품목, 계획 수량 등입니다.
  2. 자원의 최적 배치: 필요한 자원(인력, 설비, 재료 등)을 효율적으로 배치하여 비용을 최소화하고 생산성을 극대화합니다. 필요한 컬럼은 사용자원, 필요량, 현재 사용량 등입니다.
  3. 품질 관리: 품질 통제를 통해 제품의 품질을 유지하고 고객 만족도를 높입니다. 필요한 컬럼은 품질 체크 항목, 체크 결과, 품질 문제 발생 시점 등입니다.

📖 산업공학의 관점에서 생산관리 시스템의 역할

산업공학의 관점에서, 생산관리 시스템은 생산 공정의 효율성과 효과성을 높이는 도구로,
시스템 분석과 설계, 작업 공정 표준화, 시뮬레이션, 최적화 등의 방법을 활용하여 생산 공정을 개선하는 데 도움을 줍니다.

📖 기본적인 시스템의 구조

🐐 기초정보

생산 시스템에서 기초정보는 제품, 부품, 재료, 인력, 설비 등에 관한 정보를 포함합니다.
이는 생산계획을 수립하고 관리하는 데 필요한 중요한 데이터를 제공합니다.

// 기본 정보 클래스: 제품, 부품, 재료, 인력, 설비에 관한 정보를 담고 있습니다.
class BasicInfo {
  constructor(id, product, part, material, personnel, equipment) {
    this.id = id;  // 기본 정보 아이디
    this.product = product;  // 제품
    this.part = part;  // 부품
    this.material = material;  // 재료
    this.personnel = personnel;  // 인력
    this.equipment = equipment;  // 설비
  }
}

🐐 수주관리

수주관리는 고객의 주문을 관리하는 과정으로, 주문 수량, 주문 품목, 고객 정보, 납기일 등의 정보를 포함합니다.
이를 통해 생산계획을 수립하고 충족할 수 있는 기능을 제공합니다.

// 수주 관리 클래스: 고객의 주문 정보를 담고 있습니다.
class OrderManagement {
  constructor(id, orderQuantity, orderItem, customerInfo, dueDate, basicInfoId) {
    this.id = id;  // 수주 아이디
    this.orderQuantity = orderQuantity;  // 주문 수량
    this.orderItem = orderItem;  // 주문 품목
    this.customerInfo = customerInfo;  // 고객 정보
    this.dueDate = dueDate;  // 납기일
    this.basicInfoId = basicInfoId;  // 기본 정보 아이디 (관계 키)
  }
}

🐐 입출고관리

입출고관리는 원재료의 입고 및 완제품의 출고를 관리합니다.
입고 날짜, 품목, 수량, 출고 날짜, 목적지 등의 정보를 포함합니다.

// 입출고 관리 클래스: 원재료 입고 및 완제품 출고 정보를 담고 있습니다.
class InventoryManagement {
  constructor(id, receiptDate, item, quantity, shipmentDate, destination, orderManagementId) {
    this.id = id;  // 입출고 아이디
    this.receiptDate = receiptDate;  // 입고 날짜
    this.item = item;  // 품목
    this.quantity = quantity;  // 수량
    this.shipmentDate = shipmentDate;  // 출고 날짜
    this.destination = destination;  // 목적지
    this.orderManagementId = orderManagementId;  // 수주 관리 아이디 (관계 키)
  }
}

🐐 생산계획관리

생산계획관리는 생산량, 생산일, 생산 라인 등의 정보를 통해 어떤 품목을 어떤 시간에 생산할지를 결정합니다.
이는 생산 효율성을 높이고 생산비용을 줄이는 데 중요한 역할을 합니다.

// 생산 계획 관리 클래스: 생산량, 생산일, 생산 라인 정보를 담고 있습니다.
class ProductionPlanManagement {
  constructor(id, productionVolume, productionDate, productionLine, basicInfoId) {
    this.id = id;  // 생산 계획 아이디
    this.productionVolume = productionVolume;  // 생산량
    this.productionDate = productionDate;  // 생산일
    this.productionLine = productionLine;  // 생산 라인
    this.basicInfoId = basicInfoId;  // 기본 정보 아이디 (관계 키)
  }
}

🐐 생산계획분석

생산계획분석은 생산계획의 효과성을 분석하고 개선점을 찾는 과정입니다.
이를 통해 생산 공정의 문제점을 발견하고 효율성을 개선할 수 있습니다.

// 생산 계획 분석 클래스: 생산계획의 효과성을 분석하고 개선점을 찾는 정보를 담고 있습니다.
class ProductionPlanAnalysis {
  constructor(id, effectiveness, improvement, productionPlanManagementId) {
    this.id = id;  // 생산 계획 분석 아이디
    this.effectiveness = effectiveness;  // 효과성
    this.improvement = improvement;  // 개선점
    this.productionPlanManagementId = productionPlanManagementId;  // 생산 계획 관리 아이디 (관계 키)
  }
}

🐐 생산계획실행

생산계획실행은 생산계획에 따라 실제 생산 과정을 진행하는 단계입니다.
이 단계에서는 생산 상태, 품질 상태, 재고 상태 등을 실시간으로 모니터링하며 필요한 경우 생산계획을 조정합니다.

// 생산 계획 실행 클래스: 실제 생산 과정을 진행하는 정보를 담고 있습니다.
class ProductionPlanExecution {
  constructor(id, productionStatus, qualityStatus, inventoryStatus, productionPlanManagementId) {
    this.id = id;  // 생산 계획 실행 아이디
    this.productionStatus = productionStatus;  // 생산 상태
    this.qualityStatus = qualityStatus;  // 품질 상태
    this.inventoryStatus = inventoryStatus;  // 재고 상태
    this.productionPlanManagementId = productionPlanManagementId;  // 생산 계획 관리 아이디 (관계 키)
  }
}

🐐 품질관리

품질관리는 제품의 품질을 확인하고 문제를 해결하는 과정입니다.
이는 제품의 품질이 고객의 요구사항을 충족하도록 보장하는 데 중요한 역할을 합니다.

// 품질 관리 클래스: 제품의 품질을 확인하고 문제를 해결하는 정보를 담고 있습니다.
class QualityControl {
  constructor(id, productQuality, problemResolution, productionPlanExecutionId) {
    this.id = id;  // 품질 관리 아이디
    this.productQuality = productQuality;  // 제품 품질
    this.problemResolution = problemResolution;  // 문제 해결
    this.productionPlanExecutionId = productionPlanExecutionId;  // 생산 계획 실행 아이디 (관계 키)
  }
}

🐐 자재관리

자재관리는 필요한 자재의 구매, 저장, 사용 등을 관리합니다.
이는 생산비용을 줄이고 생산 효율을 높이는 데 중요한 역할을 합니다.

// 자재 관리 클래스: 원재료의 구매, 보관, 사용 정보를 담고 있습니다.
class MaterialManagement {
  constructor(id, purchase, storage, usage, basicInfoId) {
    this.id = id;  // 자재 관리 아이디
    this.purchase = purchase;  // 구매
    this.storage = storage;  // 보관
    this.usage = usage;  // 사용
    this.basicInfoId = basicInfoId;  // 기본 정보 아이디 (관계 키)
  }
}

🐐 설비관리

설비관리는 생산 설비의 관리 및 유지보수를 담당합니다.
설비의 상태를 모니터링하고 필요한 경우 수리나 교체를 실시하여 생산 공정의 원활한 진행을 지원합니다.

// 설비 관리 클래스: 설비의 상태, 수리, 교체 정보를 담고 있습니다.
class EquipmentManagement {
  constructor(id, equipmentStatus, repair, replacement, basicInfoId) {
    this.id = id;  // 설비 관리 아이디
    this.equipmentStatus = equipmentStatus;  // 설비 상태
    this.repair = repair;  // 수리
    this.replacement = replacement;  // 교체
    this.basicInfoId = basicInfoId;  // 기본 정보 아이디 (관계 키)
  }
}

🐐 인력관리

인력관리는 필요한 인력을 적절하게 배치하고 관리하는 과정입니다.
이는 생산 공정의 효율성을 높이고 생산비용을 줄이는 데 중요한 역할을 합니다.

// 인력 관리 클래스: 인력 배치, 관리 정보를 담고 있습니다.
class PersonnelManagement {
  constructor(id, personnelPlacement, management, basicInfoId) {
    this.id = id;  // 인력 관리 아이디
    this.personnelPlacement = personnelPlacement;  // 인력 배치
    this.management = management;  // 관리
    this.basicInfoId = basicInfoId;  // 기본 정보 아이디 (관계 키)
  }
}

🐐 Routing(라우트)

Routing은 생산 공정의 표준화를 위한 과정으로, 생산 공정의 각 단계를 정의하고 표준화합니다.

// 라우팅 클래스: 작업 순서 및 표준화를 담당하는 정보를 담고 있습니다.
class Routing {
  constructor(id, standardization, productionPlanExecutionId) {
    this.id = id;  // 라우팅 아이디
    this.standardization = standardization;  // 표준화
    this.productionPlanExecutionId = productionPlanExecutionId;  // 생산 계획 실행 아이디 (관계 키)
  }
}

🐐 작업지시

작업 지시는 특정 제품의 생산을 지시하는 문서로, 제품, 수량, 생산 시작 및 종료 시간,
필요한 자재와 장비 등의 정보를 포함합니다. 이는 생산 계획을 실행하는 데 중요한 역할을 합니다.

/**
 * 작업 지시 클래스입니다.
 * 제품, 수량, 생산 시작 및 종료 시간, 필요한 자재와 장비 등의 정보를 관리합니다.
 */
class WorkOrder {
  constructor(product, quantity, startTime, endTime, materials, equipment) {
    this.product = product;
    this.quantity = quantity;
    this.startTime = startTime;
    this.endTime = endTime;
    this.materials = materials;
    this.equipment = equipment;
  }

  // 작업 지시서의 상태를 업데이트하는 메서드입니다.
  updateStatus(status) {
    this.status = status;
  }
}

🐐 공정관리

공정관리는 생산 공정의 진행 상태를 관리하는 과정으로,
각 단계의 완료 상태, 시간, 필요한 자원 등의 정보를 포함합니다.
이는 생산 효율을 높이고 비용을 줄이는 데 중요한 역할을 합니다.

/**
 * 공정 관리 클래스입니다.
 * 각 단계의 완료 상태, 시간, 필요한 자원 등의 정보를 관리합니다.
 */
class ProcessManagement {
  constructor(processSteps, resourcesNeeded) {
    this.processSteps = processSteps; // 각 공정 단계의 상태를 담은 배열
    this.resourcesNeeded = resourcesNeeded; // 필요한 자원들을 담은 배열
  }

  // 특정 공정 단계의 상태를 업데이트하는 메서드입니다.
  updateStepStatus(stepIndex, status) {
    this.processSteps[stepIndex].status = status;
  }

  // 필요한 자원을 추가하는 메서드입니다.
  addResource(resource) {
    this.resourcesNeeded.push(resource);
  }

  // 필요한 자원을 삭제하는 메서드입니다.
  removeResource(resource) {
    const index = this.resourcesNeeded.indexOf(resource);
    if (index > -1) {
      this.resourcesNeeded.splice(index, 1);
    }
  }
}

클래스별 관계도

🏭 MES System (Manufacturing Execution System)
|
├── 💼 BasicInfo(기본정보)
|   ├── 🏢 CompanyInfo(회사정보)
|   ├── 👥 CustomerInfo(고객정보)
|   └── 🧾 ProductInfo(제품정보)
|
├── 📦 OrderManagement(수주관리)
|   ├── 📑 OrderInfo(수주정보)
|   ├── 🗂️ OrderDocument(수주문서)
|   └── 💰 PaymentTerms(결제조건)
|
├── 🚚 InOutManagement(입출고관리)
|   ├── 🔽 IncomingGoods(입고상품)
|   └── 🔼 OutgoingGoods(출고상품)
|
├── 📋 ProductionPlanManagement(생산계획관리)
|   ├── 🗓️ ProductionSchedule(생산일정)
|   └── 📊 ProductionCapacity(생산능력)
|
├── 📊 ProductionPlanAnalysis(생산계획분석)
|   ├── 📉 TrendAnalysis(트렌드분석)
|   └── 📈 ForecastAnalysis(예측분석)
|
├── 🏭 ProductionPlanExecution(생산계획실행)
|   ├── 🗜️ MachineOperation(기계작업)
|   └── 📦 ProductProcessing(제품가공)
|
├── ✅ QualityManagement(품질관리)
|   ├── 📏 Measurement(측정)
|   └── 🚦 ComplianceCheck(준수검사)
|
├── 📦 MaterialManagement(자재관리)
|   ├── 📋 MaterialInventory(자재재고)
|   └── 🔄 MaterialOrdering(자재주문)
|
├── 🏭 FacilityManagement(설비관리)
|   ├── 🗜️ MachineMaintenance(기계유지보수)
|   └── 📐 FacilityLayout(설비배치)
|
├── 👥 PersonnelManagement(인력관리)
|   ├── 👤 WorkerInfo(직원정보)
|   └── 🗓️ ShiftSchedule(근무일정)
|
├── 🛤️ Route(라우트)
|   ├── 📋 RouteDesign(라우트설계)
|   └── 🚦 RouteExecution(라우트실행)
|
├── 💼 WorkOrder(작업지시)
|   ├── 📑 WorkOrderInfo(작업지시정보)
|   └── 🗂️ WorkOrderDocument(작업지시문서)
|
└── 🚦 ProcessManagement(공정관리)
    ├── 📋 ProcessDesign(공정설계)
    └── 🚦 ProcessExecution(공정실행)


Note: 만들고나니 내것이 아니었다.

Leave a comment