繁體中文 English Tiếng Việt ภาษาไทย

Cap nhat lenh san xuat (Dieu chinh so luong/Ngay)

wo.update
PUT JSON Dong bo ERP → MES

1. Thong tin co ban

MucMo ta
Ten API tieng VietCap nhat lenh san xuat (Dieu chinh so luong/Ngay)
Ten API tieng AnhWork Order Update
Ma APIwo.update
So an0189142
REST EndpointPOST /ESB/API/upModetail
Huong goiERP → MES
Thoi diem goiSau khi ERP sua so luong hoac ngay lenh, dong bo den MES
Tinh huong nghiep vu chinhERP dieu chinh san luong hoac ngay lich trinh, dong bo cap nhat du lieu lenh va lo trong MES
Dinh dang RequestJSON (Content-Type: application/json)
Dong bo/Bat dong boGoi dong bo
Quan ly giao dichCan thiet
Giai thich huong goi
API nay la ERP → MES day mot chieu.
OperationType = 2 bieu thi thao tac sua doi.

2. Quy trinh nghiep vu

He thong ERP He thong MES 1. Sua lenh (wo.update) 2. Kiem tra SL (WoUpdate) 3. Cap nhat lenh (MODETAIL) 4. Dieu chinh lo (LOT) Hoan thanh Logic kiem tra so luong newQTY vs (MOQTY - MODIQTY) Tang: Tang truc tiep LOTSIZE Giam: Kiem tra han muc thay doi Vi tri chuong trinh: WoUpdate.java → RegularESB.upModetail():1243-1472
Anh xa ma nguon
  • Diem vao API: WoUpdate.java:59-100
  • Kiem tra so luong: RegularESB.java:1234-1319
  • Cap nhat LOT: RegularESB.java:1243-1472
  • Tinh lai quy trinh: SFT_OP_REALRUN.sqlUpdate_RecalculateAll()

3. Quy cach Request

Dinh dang truyen: JSON
Content-Type: application/json

3.1 Cau truc ngoai

TruongKieuBat buocMo ta
CompanyIDstringYMa cong ty
OperationTypeintYLoai thao tac (2=Sua doi)
contentarrayYMang du lieu lenh san xuat

3.2 Noi dung mang content

TruongKieuBat buocMo taTruong thay doi
wo_nostringYSo lenh san xuat (Loai-So)Truong dieu kien
item_nostringYMa san phamITEMID
unit_nostringYMa don viUNIT
plan_date_sstringYNgay bat dau du kienPLANPROCESSST
plan_date_estringYNgay hoan thanh du kienDUEDATETIME
wo_qtydecimalYSan luong moi du kienQTY / PLANRELEASEQTY / LOT.LOTSIZE
so_nostringNSo don hangDOID
so_seqstringNMuc don hangSEQUENCE
factory_nostringYMa nha mayFACTORYID
warehouse_nostringNMa khoWAREHOUSEID
remarkstringNGhi chuDESCRIPTION
prioritystringNMuc uu tienMO032

4. Quy cach Response

TruongKieuMo ta
codestring200=Thanh cong, 500=That bai
msgstringThong bao ket qua xu ly
queryarrayKet qua truy van

Hanh vi khi thanh cong

5. Logic kiem tra so luong

Dinh nghia bien quan trong
  • MOQTY: MODETAIL.PLANRELEASEQTY (So luong phat hanh du kien ban dau)
  • MOREQTY: MODETAIL.RELEASEDQTY (So luong da phat hanh)
  • LOTQTY: LOT.LOTSIZE (So luong cho phat hanh)
  • newQTY: San luong moi tu ERP truyen vao
  • MODIQTY: Tong SFT_MO_MODI (So luong phat hanh bo sung)
  • BATQTY: Tong SFT_BATCH_REC (So luong tach lo)

5.1 Truong hop tang so luong

newQTY > (MOQTY - MODIQTY)

// Tang so luong - Tang truc tiep
So luong tang = newQTY - (MOQTY - MODIQTY)

IF LOT ton tai THEN
    UPDATE LOT SET LOTSIZE += So luong tang
ELSE
    INSERT LOT (Tao ban ghi lo moi)
END IF

UPDATE MODETAIL SET PLANRELEASEQTY += So luong tang

5.2 Truong hop giam so luong

newQTY < (MOQTY - MODIQTY)

// Giam so luong - Can kiem tra han muc thay doi
Han muc thay doi toi da = MOQTY - MOREQTY - BATQTY
So luong thay doi lan nay = MOQTY - newQTY - MODIQTY

IF Han muc thay doi toi da >= So luong thay doi lan nay THEN
    // Co the giam
    IF LOTQTY - So luong thay doi lan nay > 0 THEN
        UPDATE LOT SET LOTSIZE -= So luong thay doi lan nay
    ELSE
        DELETE FROM LOT  // So luong sau khi giam bang khong hoac am
    END IF
    UPDATE MODETAIL SET PLANRELEASEQTY -= So luong thay doi lan nay
ELSE
    // Khong the giam - Da phat hanh hoac tach lo vuot qua han muc thay doi
    Throw Exception("JS_0126_00060")
END IF
Gioi han quan trong
Neu so luong da phat hanh + so luong tach lo cua MES > san luong moi, khong the giam, se tra ve loi JS_0126_00060.

6. Ma loi

MaThong baoMo ta
JS_0126_00060So luong thay doi nho hon so luong cho phat hanh, khong cho phep thay doiSo luong giam vuot qua han muc thay doi
JS_0096_00058Ma san pham nay khong ton taiKhong co ma san pham trong bang ITEM
JS_0016_00134Don vi khong ton tai, vui long kiem traKhong co don vi trong UnitBasis
JS_0016_00115Ma nha may khong ton taiKhong co nha may trong FACTORY
JS_0135_00036Ma kho nay khong ton taiKhong co kho trong WAREHOUSE
remind_002Du lieu khong ton taiSo lenh khong ton tai

7. Vi du JSON

Request (Tang so luong)

{
  "CompanyID": "COMP01",
  "OperationType": 2,  // 2=Sua doi
  "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-21 17:00:00",
    "wo_qty": 1500,  // Ban dau 1000, tang 500
    "factory_no": "P001",
    "remark": "Them don hang"
  }]
}

Request (Giam so luong)

{
  "CompanyID": "COMP01",
  "OperationType": 2,
  "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": 800,  // Ban dau 1000, giam 200
    "factory_no": "P001",
    "remark": "Khach hang giam don hang"
  }]
}

Response (Thanh cong)

{
  "code": "200",
  "msg": "success",
  "query": []
}

Response (That bai - Khong the giam)

{
  "code": "500",
  "msg": "JS_0126_00060",  // So luong da phat hanh vuot qua so luong moi
  "query": []
}

8. SQL cap nhat co so du lieu

8.1 UPDATE MODETAIL (Cap nhat bang chinh lenh)

UPDATE MODETAIL SET
    PLANPROCESSST = :PLANPROCESSST,      -- Ngay bat dau du kien
    DUEDATETIME = :DUEDATETIME,          -- Ngay hoan thanh du kien
    DOID = :DOID,                        -- So don hang
    SEQUENCE = :SEQUENCE,                -- Muc don hang
    FACTORYID = :FACTORYID,              -- Ma nha may
    WAREHOUSEID = :WAREHOUSEID,          -- Ma kho
    DESCRIPTION = :DESCRIPTION,          -- Ghi chu
    MO032 = :MO032,                      -- Muc uu tien
    LASTMAINTAINUSER = :userid,
    LASTMAINTAINDATETIME = N'{thoi gian hien tai}',
    FLAG = (SELECT MAX(FLAG)+1 FROM MODETAIL WHERE CMOID = :CMOID)
WHERE CMOID = :CMOID

8.2 Khi tang so luong (UPDATE LOT)

-- So luong tang = newQTY - (MOQTY - MODIQTY)
UPDATE LOT SET
    LOTSIZE = LOTSIZE + {so luong tang}
WHERE MOID = :CMOID

-- Dong thoi cap nhat so luong phat hanh du kien MODETAIL
UPDATE MODETAIL SET
    PLANRELEASEQTY = PLANRELEASEQTY + {so luong tang},
    QTY = :newQTY
WHERE CMOID = :CMOID

8.3 Khi giam so luong (UPDATE/DELETE LOT)

-- So luong giam = MOQTY - newQTY - MODIQTY
-- Kiem tra han muc thay doi truoc
Han muc thay doi toi da = MOQTY - MOREQTY - BATQTY

IF LOTQTY - So luong giam > 0 THEN
    -- Van con so du sau khi giam
    UPDATE LOT SET
        LOTSIZE = LOTSIZE - {so luong giam}
    WHERE MOID = :CMOID
ELSE
    -- So luong sau khi giam bang khong hoac am, xoa lo
    DELETE FROM LOT WHERE MOID = :CMOID
END IF

-- Dong thoi cap nhat so luong phat hanh du kien MODETAIL
UPDATE MODETAIL SET
    PLANRELEASEQTY = PLANRELEASEQTY - {so luong giam},
    QTY = :newQTY
WHERE CMOID = :CMOID

8.4 Tinh lai quy trinh

-- Tinh lai tat ca quy trinh sau khi cap nhat xong
SFT_OP_REALRUN.sqlUpdate_RecalculateAll("updateMODETAIL")
Bang du lieu lien quan kiem tra so luong
  • MODETAIL.PLANRELEASEQTY: So luong phat hanh du kien (MOQTY)
  • MODETAIL.RELEASEDQTY: So luong da phat hanh (MOREQTY)
  • LOT.LOTSIZE: So luong cho phat hanh (LOTQTY)
  • SFT_MO_MODI: So luong phat hanh bo sung (MODIQTY)
  • SFT_BATCH_REC: So luong tach lo (BATQTY)
Vi tri chuong trinh
Kiem tra so luong: RegularESB.java:1234-1319
Cap nhat LOT: RegularESB.java:1243-1472