← 返回 API 列表

不良品入庫建立

POST MES → ERP
wo.scrap.data.create

工單出站時若有不良品數量,將不良品入庫資料拋送至 ERP 系統建立報廢入庫單。 ERP 回傳入庫單號後,MES 將單號回寫至 SFT_TRANSORDER_LINE。

基本資訊

API 名稱
wo.scrap.data.create
內部任務名稱
woScrapDataCreate
傳輸格式
JSON (Content-Type: application/json)
案號
0189144
API 編號
api-2191
TRANSORDERTYPE
58 (報廢入庫)

觸發時機

出站作業 CheckOut 填寫不良品數量 SCRAPQTY > 0 ? 建立報廢移轉單 TRANSORDERTYPE=58 SftTransorderLine 送出至 ERP wo.scrap.data .create 回寫單號 TL011/TL012 否 → 跳過不良品入庫
關鍵判斷條件: 只有當出站時 SCRAPQTY > 0(不良品數量大於零)時, 系統才會建立 TRANSORDERTYPE=58 的移轉單,並呼叫 ERP 不良品入庫 API。
觸發位置
出站作業完成後,由 TransOrderDataToJson.sentTransOrderDataAgain() 方法 判斷移轉單類型,若為報廢入庫則呼叫 woScrapDataCreate

請求參數

HEAD 單頭資料

欄位 MES 來源 ERP 欄位 類型 必填 說明
單別編號 transferType doc_type_no String 必填 不良品入庫單類別
移轉單號 eMESTransferType-eMESTransferCode source_no String 必填 MES 移轉單號(類別-號碼)
建立日期 date create_date Date 必填 入庫日期 (yyyy-MM-dd)
出站工作站 moveOutCode workstation_no String 必填 出站工作站代號
工廠編號 factoryCode factory_no String 必填 工廠代號
操作員 create operator_no String 選填 操作人員
備註 remark remark String 選填 單頭備註

LINE 單身明細

欄位 MES 來源 ERP 欄位 類型 必填 說明
工單號 moType-moCode wo_no String 必填 工單類別-工單號碼
品號 prodCode item_no String 必填 產品品號
不良品數量 SCRAPQTY scrap_qty Numeric 必填 報廢數量
單位 unit unit_no String 必填 數量單位
進站倉庫 moveInCode warehouse_no String 必填 入庫倉庫代號
儲位 moveInLocation location_no String 選填 入庫儲位
批號 batchCode lot_no String 選填 批號
備註 remark remark String 選填 明細備註

請求範例

MES 內部 JSON 格式

{
  "head": {
    "transferType": "58",
    "eMESTransferType": "SC",
    "eMESTransferCode": "20260319001",
    "date": "2026-03-19",
    "moveOutCode": "WS001",
    "factoryCode": "FACTORY01",
    "create": "USER001",
    "remark": "不良品入庫"
  },
  "line": [
    {
      "moType": "5101",
      "moCode": "20260319001",
      "prodCode": "ITEM-001",
      "qty": "5",
      "unit": "PCS",
      "moveInCode": "WH-SCRAP",
      "moveInLocation": "A01",
      "batchCode": "BAT001",
      "remark": "表面瑕疵"
    }
  ]
}

ERP XML 格式 (WFERP) - SendFormS.java:1773-1804

<parameters>
  <parameter key="enterprise_no" type="string">公司代碼</parameter>
  <parameter key="site_no" type="string">工廠代碼</parameter>

  <parameter key="wo_scrap_data" type="data">
    <data name="wo_scrap">
      <row seq="1">
        <!-- ======== Head ======== -->
        <field name="doc_type_no" type="string">58</field>
        <field name="source_no" type="string">SC-20260319001</field>
        <field name="create_date" type="date">2026-03-19</field>
        <field name="remark" type="string">不良品入庫</field>
        <field name="workstation_no" type="string">WS001</field>
        <field name="factory_no" type="string">FACTORY01</field>
        <field name="shift_no" type="string"></field>
        <field name="operator_no" type="string">USER001</field>

        <!-- ======== Line ======== -->
        <detail name="wo_scrap_detail">
          <row>
            <field name="seq" type="string"></field>
            <field name="wo_no" type="string">5101-20260319001</field>
            <field name="item_no" type="string">ITEM-001</field>
            <field name="scrap_qty" type="numeric">5</field>
            <field name="unit_no" type="string">PCS</field>
            <field name="remark" type="string">表面瑕疵</field>
            <field name="machine_no" type="string"></field>
            <field name="warehouse_no" type="string">WH-SCRAP</field>
            <field name="location_no" type="string">A01</field>
            <field name="lot_no" type="string">BAT001</field>
            <field name="damage_qty" type="numeric"></field>
            <field name="stock_in_status" type="string"></field>
          </row>
        </detail>
      </row>
    </data>
  </parameter>
</parameters>

回應格式

成功回應 (code=200)

{
  "code": 200,
  "msg": "不良品入庫單建立成功",
  "ERPMessage": {
    "description": "處理成功",
    "doc_no": "58-20260319001"
  }
}

失敗回應 (code=500)

{
  "code": 500,
  "msg": "不良品入庫單建立失敗",
  "ERPMessage": {
    "description": "倉庫代號不存在"
  }
}

回應欄位說明

欄位 類型 說明
code Integer 200=成功, 500=失敗
msg String 處理訊息
ERPMessage.doc_no String ERP 回傳的不良品入庫單號(單別-單號)

ERP 回寫邏輯

ERP 回傳不良品入庫單號後,MES 會將單號回寫至移轉單明細:

ERP 回傳 doc_no 58-20260319001 解析單號 TL011=58 TL012=20260319001 SFT_TRANSORDER_LINE TL011 = 58 TL012 = 20260319001 TRANSORDERTYPE = 58

回寫 SQL

-- 更新 SFT_TRANSORDER_LINE
UPDATE SFT_TRANSORDER_LINE
SET TL011 = '58',
    TL012 = '20260319001'
WHERE TRANSORDERTYPE = '58'
  AND TRANSNO = :TRANSNO
  AND SN = :SN

相關資料表

資料表 說明 關鍵欄位
SftTransorder 移轉單頭檔 TRANSTYPE, TRANSNO, TO007, TO008, TO013
SftTransorderLine 移轉單明細 TRANSORDERTYPE(=58), SCRAPQTY, TL011, TL012
SFT_WS_RUN 工作站執行記錄 出站記錄、不良品數量來源
TRANSORDERTYPE 類型對照
58報廢入庫(不良品入庫)
59委外入庫
其他一般移轉單

程式碼位置

功能 檔案路徑 行號/方法
出站計算不良品 SFT_core/src/com/dci/sft/update/CheckOut.java doCheckOut()
移轉單建立 SFT_core/src/com/dci/sft/jsonMappingHibernate/TransOrderDataToJson.java 595-900
API 路由判斷 SFT_ERPIntegrate/src/com/dci/sft/erp/XmlToERP_handler.java 94-98
XML 參數組裝 SFT_ERPIntegrate/src/com/dci/sft/erp/webservice/SendFormS.java 1752-1810

錯誤處理

錯誤情境 原因 處理方式
倉庫代號不存在 ERP 端無此倉庫 確認不良品倉庫已在 ERP 建立
品號不存在 ERP 端無此品號 確認品號已同步至 ERP
連線超時 SocketTimeoutException 檢查 ERP 伺服器狀態,需手動補送

LOG 記錄

// 日誌檔案:logs/ERPReturnErrorRec.log

[ERP_SEND_ERROR] taskName=woScrapDataCreate, errorType=SocketTimeoutException, errorMsg=Read timed out
[ERP_SEND_ERROR] 送出内容={...JSON...}