-- 檢查是否已發放(已發放則不可刪除)SELECT COUNT(*) FROM SFT_WS_RUN WITH (NOLOCK)
WHERE ID = N'{wo_no}'
AND EXECUTETYPE = 'release'AND PLUSINDEX = '0'-- 若 COUNT > 0,拋出 JS_0126_00062-- 檢查是否有拆批記錄SELECT COUNT(*) FROM SFT_BATCH_REC WHERE BR001 = N'{wo_no}'
-- 若 COUNT > 0,拋出 remind_004-- 刪除相關資料(依序執行)DELETE FROM SFT_OP_REALRUN WHERE ID = :CMOID
DELETE FROM LOT WHERE MOID = :CMOID
DELETE FROM MODETAIL WHERE CMOID = :CMOID
DELETE FROM SFT_SPEC_MODIREC WHERE MD001 = :CMOID
DELETE FROM SFT_BATCH_REC WHERE BR002 = :CMOID
DELETE FROM EQUIPMENT_RUN WHERE LOTID = :CMOID
DELETE FROM SFT_WS_RUN WHERE ID = :CMOID
DELETE FROM SFT_SPLITOUT_REC WHERE SSR001 = :CMOID
DELETE FROM SFT_ASSEMBLY_REC WHERE SAR001 = :CMOID
DELETE FROM SFT_HOLD_REC WHERE HR001 = :CMOID
DELETE FROM SFT_MO_MODI WHERE MODI002 = :CMOID
-- 檢查製令是否已結案SELECT COUNT(*) FROM MODETAIL WITH (NOLOCK)
WHERE CMOID = N'{wo_no}'
AND STATUS NOT IN ('99', '100')
-- 若 COUNT > 0,表示未結案,拋出 JS_0126_00059-- 還原結案狀態(由結案流程反向執行)-- 根據 SFT_WS_RUN 進站記錄判斷還原狀態UPDATE MODETAIL SET
STATUS = CASEWHEN (SELECT COUNT(1) FROM SFT_WS_RUN WITH (NOLOCK)
WHERE ID = N'{wo_no}' AND EXECUTETYPE = 'checkIn') > 0
THEN2-- 有進站記錄 → 生產中ELSE1-- 無進站記錄 → 未生產END,
LASTMAINTAINUSER = :userid,
LASTMAINTAINDATETIME = N'{當前時間}'
WHERE CMOID = :CMOID
刪除關聯資料表說明
資料表
說明
SFT_OP_REALRUN
製程實績記錄
LOT
批次記錄
MODETAIL
製令主檔
SFT_SPEC_MODIREC
特殊修改記錄
SFT_BATCH_REC
拆批記錄
EQUIPMENT_RUN
機台運行記錄
SFT_WS_RUN
工作站運行記錄
SFT_SPLITOUT_REC
分出記錄
SFT_ASSEMBLY_REC
組裝記錄
SFT_HOLD_REC
暫停記錄
SFT_MO_MODI
補發放數量記錄
程式位置
API 入口:ESBapi.java:1400-1493
狀態檢核:WoStatusProcess.java:66-108