| รายการ | คำอธิบาย |
|---|---|
| ชื่อ API ภาษาไทย | สร้างใบสั่งผลิต (เพิ่มข้อมูลใบสั่งผลิต) |
| ชื่อ API ภาษาอังกฤษ | Work Order Create |
| รหัส API | wo.create |
| หมายเลขเคส | 0189142 |
| REST Endpoint | POST /ESB/API/upModetail |
| ทิศทางการเรียก | ERP → MES |
| เวลาที่เรียก | หลังจาก ERP ออกใบสั่งผลิตใหม่ ซิงค์ไปยัง MES |
| สถานการณ์ทางธุรกิจหลัก | หลังจาก ERP สร้างใบสั่งผลิต ส่งข้อมูลใบสั่งผลิตไปยัง MES และ MES สร้างใบสั่งผลิต แบตช์ และบันทึกกระบวนการที่เกี่ยวข้อง |
| รูปแบบ Request | JSON (Content-Type: application/json) |
| ซิงโครนัส/อะซิงโครนัส | เรียกแบบซิงโครนัส |
| การควบคุมธุรกรรม | ต้องการ (setAutoCommit(false) + transactionCommit()) |
WoCreate.java (SFT_ERPIntegrate)RegularESB.upModetail() (SFT_dataImport)ESBapi.java:975-1007 (KMI_Restful)dataMantain.initOpRealRun_SftBommf()Content-Type: application/json
| ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
| CompanyID | string | Y | รหัสบริษัท |
| OperationType | int | Y | ประเภทการดำเนินการ (1=เพิ่ม) |
| content | array | Y | อาร์เรย์ข้อมูลใบสั่งผลิต |
| ฟิลด์ | ประเภท | ความยาว | จำเป็น | คำอธิบาย | ฟิลด์ MES |
|---|---|---|---|---|---|
| wo_no | string | 40 | Y | หมายเลขใบสั่งผลิต (ประเภท-เลขที่) | CMOID |
| item_no | string | 40 | Y | รหัสสินค้า | ITEMID |
| unit_no | string | 10 | Y | รหัสหน่วย | UNIT |
| plan_date_s | string | 19 | Y | วันเริ่มต้นตามแผน (yyyy-MM-dd HH:mm:ss) | PLANPROCESSST |
| plan_date_e | string | 19 | Y | วันเสร็จสิ้นตามแผน (yyyy-MM-dd HH:mm:ss) | DUEDATETIME |
| wo_qty | decimal | - | Y | จำนวนผลิตตามแผน | QTY / PLANRELEASEQTY |
| so_no | string | 40 | N | หมายเลขใบสั่งซื้อ | DOID |
| so_seq | string | 10 | N | ลำดับใบสั่งซื้อ | SEQUENCE |
| factory_no | string | 10 | Y | รหัสโรงงาน | FACTORYID |
| warehouse_no | string | 10 | N | รหัสคลังสินค้า | WAREHOUSEID |
| remark | string | 500 | N | หมายเหตุ | DESCRIPTION |
| priority | string | 1 | N | ลำดับความสำคัญ (1=ด่วน, 0=ไม่) | MO032 |
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
| code | string | 200=สำเร็จ, 500=ล้มเหลว |
| msg | string | ข้อความผลการประมวลผล (เมื่อสำเร็จจะส่งกลับหมายเลขใบสั่งผลิต) |
| query | array | ผลการค้นหา (โดยปกติเป็นอาร์เรย์ว่าง) |
| # | รายการตรวจสอบ | กฎ | รหัสข้อผิดพลาด |
|---|---|---|---|
| 1 | หมายเลขใบสั่งผลิตซ้ำ | CMOID ต้องไม่ซ้ำใน MODETAIL | JS_0126_00061 |
| 2 | รหัสสินค้าต้องมีอยู่ | ITEMID ต้องมีอยู่ในตาราง ITEM | JS_0096_00058 |
| 3 | หน่วยต้องมีอยู่ | unit_no ต้องมีอยู่ใน UnitBasis | JS_0016_00134 |
| 4 | โรงงานต้องมีอยู่ | factory_no ต้องมีอยู่ใน FACTORY | JS_0016_00115 |
| 5 | คลังสินค้าต้องมีอยู่ | warehouse_no (ถ้ามีค่า) ต้องมีอยู่ใน WAREHOUSE | JS_0135_00036 |
| 6 | ตรวจสอบจำนวน | wo_qty ต้องมากกว่า 0 | - |
| รหัส | ข้อความ | คำอธิบาย |
|---|---|---|
| JS_0126_00061 | หมายเลขใบสั่งผลิตมีอยู่แล้ว ไม่สามารถเพิ่มได้ | CMOID ซ้ำ |
| JS_0096_00058 | รหัสสินค้านี้ไม่มีอยู่ | ไม่พบรหัสสินค้าในตาราง ITEM |
| JS_0016_00134 | หน่วยไม่มีอยู่ กรุณาตรวจสอบ | ไม่พบหน่วยนี้ใน UnitBasis |
| JS_0016_00115 | รหัสโรงงานไม่มีอยู่ | ไม่พบโรงงานนี้ใน FACTORY |
| JS_0135_00036 | รหัสคลังสินค้านี้ไม่มีอยู่ | ไม่พบคลังสินค้านี้ใน WAREHOUSE |
| remind_001 | ข้อมูลมีอยู่แล้ว | เพิ่มซ้ำ |
{
"CompanyID": "COMP01",
"OperationType": 1,
"content": [{
"wo_no": "5101-20260319001",
"item_no": "FG-A001-001",
"unit_no": "PCS",
"plan_date_s": "2026-03-19 08:00:00",
"plan_date_e": "2026-03-20 17:00:00",
"wo_qty": 1000,
"so_no": "SO20260301001",
"so_seq": "001",
"factory_no": "P001",
"warehouse_no": "FG01",
"remark": "คำสั่งด่วน",
"priority": "1"
}]
}
{
"code": "200",
"msg": "[\"5101-20260319001\"]",
"query": []
}
{
"code": "500",
"msg": "JS_0126_00061",
"query": []
}
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
| CMOID | NVARCHAR(40) | PK: หมายเลขใบสั่งผลิต (ประเภท-เลขที่) |
| MO004 | NVARCHAR(10) | ประเภทใบสั่งผลิต |
| MO005 | NVARCHAR(20) | เลขที่ใบสั่งผลิต |
| ITEMID | NVARCHAR(40) | รหัสสินค้า |
| QTY | FLOAT | จำนวนผลิตตามแผน |
| PLANRELEASEQTY | FLOAT | จำนวนปล่อยตามแผน |
| RELEASEDQTY | FLOAT | จำนวนที่ปล่อยแล้ว |
| STATUS | INT | สถานะ (1=ยังไม่ผลิต 2=กำลังผลิต 99=ปิดงาน 100=ยกเลิก) |
| PLANPROCESSST | DATETIME | วันเริ่มต้นตามแผน |
| DUEDATETIME | DATETIME | วันเสร็จสิ้นตามแผน |
| FLAG | INT | หมายเลขเวอร์ชัน |
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
| ID | NVARCHAR(40) | PK: หมายเลขแบตช์ (โดยปกติ=CMOID) |
| MOID | NVARCHAR(40) | FK: หมายเลขใบสั่งผลิต |
| TYPE | INT | ประเภทแบตช์ (1=แบตช์ตามแผน) |
| LOTSIZE | FLOAT | จำนวนแบตช์ (จำนวนรอปล่อย) |
| STATUS | INT | สถานะ (0=รอปล่อย 1=ปล่อยแล้ว) |
| LOCATION | NVARCHAR(20) | ตำแหน่ง (โดยปกติ='release') |
-- ตรวจสอบก่อนเพิ่ม ถ้ามีอยู่จะโยน JS_0126_00061 SELECT COUNT(1) FROM MODETAIL WHERE CMOID = N'{wo_no}'
INSERT INTO MODETAIL ( CMOID, MO004, MO005, ITEMID, MO021, MO022, UNIT, PLANPROCESSST, DUEDATETIME, QTY, STATUS, DOID, SEQUENCE, FACTORYID, WAREHOUSEID, DESCRIPTION, MO008, MO012, MO016, MO032, PLANRELEASEQTY, FLAG, LASTMAINTAINUSER, LASTMAINTAINDATETIME ) VALUES ( :CMOID, -- หมายเลขใบสั่งผลิต (ประเภท-เลขที่) :MO004, -- ประเภทใบสั่งผลิต :MO005, -- เลขที่ใบสั่งผลิต :ITEMID, -- รหัสสินค้า :MO021, -- ชื่อสินค้า :MO022, -- สเปค :UNIT, -- หน่วย :PLANPROCESSST, -- วันเริ่มต้นตามแผน :DUEDATETIME, -- วันเสร็จสิ้นตามแผน :QTY, -- จำนวนผลิตตามแผน 1, -- STATUS = 1 (ยังไม่ผลิต) :DOID, -- หมายเลขใบสั่งซื้อ :SEQUENCE, -- ลำดับใบสั่งซื้อ :FACTORYID, -- รหัสโรงงาน :WAREHOUSEID, -- รหัสคลังสินค้า :DESCRIPTION, -- หมายเหตุ 1, -- MO008 = 1 :MO012, -- วันที่ออกใบสั่ง 0, -- MO016 = 0 :MO032, -- ลำดับความสำคัญ (1=ด่วน) :QTY, -- จำนวนปล่อยตามแผน = จำนวนผลิตตามแผน 1, -- FLAG หมายเลขเวอร์ชัน :userid, N'{เวลาปัจจุบัน}' )
INSERT INTO LOT ( ID, TYPE, MOID, ITEMID, LOTSIZE, STATUS, UNIT, QTYPER, LOCATION, ERP_OPSEQ, ERP_OPID, ERP_WSID, LOT004, PKQTY, PKQTYPER, LOT007, LOT011, LASTMAINTAINUSER, LASTMAINTAINDATETIME ) VALUES ( :CMOID, -- หมายเลขแบตช์ = หมายเลขใบสั่งผลิต 1, -- TYPE = 1 (แบตช์ตามแผน) :CMOID, -- MOID = หมายเลขใบสั่งผลิต :ITEMID, -- รหัสสินค้า :QTY, -- LOTSIZE = จำนวนผลิตตามแผน 0, -- STATUS = 0 (รอปล่อย) :UNIT, -- หน่วย 1, -- QTYPER = 1 'release', -- LOCATION = 'release' '', '', '', -- ฟิลด์กระบวนการ ERP (ว่าง) 1, 0, 0, -- LOT004, PKQTY, PKQTYPER '0', 'N', -- LOT007, LOT011 :userid, N'{เวลาปัจจุบัน}' )
| ตารางข้อมูล | การดำเนินการ | คำอธิบาย |
|---|---|---|
| MODETAIL | INSERT | ตารางหลักใบสั่งผลิต |
| LOT | INSERT | บันทึกแบตช์ |
| SFT_OP_REALRUN | DELETE + INSERT | ผลการดำเนินการกระบวนการ (คัดลอกจาก SFT_BOMMF) |
| SFT_OP_BACK_RUN | DELETE + INSERT | ความสัมพันธ์กระบวนการก่อน-หลัง (เส้นทางแบบตาข่าย) |
ESBapi.java:1007-1046dataMantain.initOpRealRun_SftBommf()UpdateData.InsertOpBackRun()