呼叫方向說明
此 API 為 ERP → MES 單向推送。
OperationType = 2 表示修改操作。
2. 業務流程
程式碼對應
API 入口: WoUpdate.java:59-100
數量檢核: RegularESB.java:1234-1319
LOT 更新: RegularESB.java:1243-1472
製程重算: SFT_OP_REALRUN.sqlUpdate_RecalculateAll()
3. Request 規格
傳輸格式: JSON Content-Type: application/json
3.1 外層結構
欄位
型別
必填
說明
CompanyID
string
Y
公司代號
OperationType
int
Y
操作類型(2=修改)
content
array
Y
工單資料陣列
3.2 content 陣列內容
欄位
型別
必填
說明
異動欄位
wo_no
string
Y
製令編號(單別-單號)
條件欄位
item_no
string
Y
品號
ITEMID
unit_no
string
Y
單位代號
UNIT
plan_date_s
string
Y
預計開工日
PLANPROCESSST
plan_date_e
string
Y
預計完工日
DUEDATETIME
wo_qty
decimal
Y
新預計產量
QTY / PLANRELEASEQTY / LOT.LOTSIZE
so_no
string
N
訂單單號
DOID
so_seq
string
N
訂單項次
SEQUENCE
factory_no
string
Y
廠別代號
FACTORYID
warehouse_no
string
N
庫別代號
WAREHOUSEID
remark
string
N
備註
DESCRIPTION
priority
string
N
優先級
MO032
4. Response 規格
欄位
型別
說明
code
string
200=成功,500=失敗
msg
string
處理結果訊息
query
array
查詢結果
成功行為
UPDATE MODETAIL(製令主檔:QTY, DOID, 日期等)
UPDATE/INSERT/DELETE LOT(批次數量調整)
SFT_OP_REALRUN.sqlUpdate_RecalculateAll()(重算製程)
5. 數量檢核邏輯
關鍵變數定義
MOQTY: MODETAIL.PLANRELEASEQTY(原預計發放量)
MOREQTY: MODETAIL.RELEASEDQTY(已發放量)
LOTQTY: LOT.LOTSIZE(待發放量)
newQTY: ERP 傳入的新產量
MODIQTY: SFT_MO_MODI 合計(補發放量)
BATQTY: SFT_BATCH_REC 合計(拆批量)
5.1 增加數量情況
newQTY > (MOQTY - MODIQTY)
// 增加數量 - 直接增加
增加量 = newQTY - (MOQTY - MODIQTY)
IF LOT 存在 THENUPDATE LOT SET LOTSIZE += 增加量
ELSEINSERT LOT (新建批次記錄)
END IFUPDATE MODETAIL SET PLANRELEASEQTY += 增加量
5.2 扣除數量情況
newQTY < (MOQTY - MODIQTY)
// 扣除數量 - 需檢查可變更額度
最大可變更量 = MOQTY - MOREQTY - BATQTY
此次變更量 = MOQTY - newQTY - MODIQTY
IF 最大可變更量 >= 此次變更量 THEN// 可以扣除IF LOTQTY - 此次變更量 > 0 THENUPDATE LOT SET LOTSIZE -= 此次變更量
ELSEDELETE FROM LOT // 扣除後數量為零或負數END IFUPDATE MODETAIL SET PLANRELEASEQTY -= 此次變更量
ELSE// 無法扣除 - 已發放或拆批超過可變更額度Throw Exception("JS_0126_00060")
END IF
重要限制
若 MES 端已發放數量 + 拆批數量 > 新產量,將無法進行扣除,會拋出錯誤 JS_0126_00060。