請求範例
MES 內部 JSON 格式
{
"head": {
"productionType": "10",
"date": "2026-03-19",
"wsId": "WS001",
"remark": "正常報工",
"itemCode": "ITEM-001",
"itemName": "測試品項",
"create": "USER001"
},
"line": [
{
"userId": "USER001",
"eqId": "EQ001",
"moType": "5101",
"moCode": "20260319001",
"opSeq": "10",
"opId": "OP001",
"state": "1",
"qty": "100",
"useTime": "60",
"useMachineTime": "55",
"remark": "",
"packagingQty": "10",
"itemCode": "ITEM-001",
"itemName": "測試品項",
"description": "規格說明",
"unit": "PCS",
"packUnit": "BOX",
"manufactureDualUnit": "BOX"
}
]
}
ERP XML 格式 (WFERP) - SendFormS.java:1520-1577
<parameters>
<parameter key="enterprise_no" type="string">公司代碼</parameter>
<parameter key="site_no" type="string">工廠代碼</parameter>
<parameter key="report_data" type="data">
<data name="report">
<row seq="1">
<!-- ======== Head ======== -->
<field name="doc_type_no" type="string">10</field>
<field name="create_date" type="date">2026-03-19</field>
<field name="workstation_no" type="string">WS001</field>
<field name="remark" type="string">正常報工</field>
<field name="factory_no" type="string"></field>
<field name="shift_no" type="string"></field>
<field name="source_no" type="string">ITEM-001-測試品項</field>
<field name="plot_no" type="string"></field>
<field name="doc_head_wo_no" type="string"></field>
<field name="doc_head_reporter" type="string"></field>
<field name="doc_head_complete_date" type="date"></field>
<field name="doc_head_machine_no" type="string"></field>
<field name="doc_head_unit_no" type="string"></field>
<field name="total_qty" type="numeric"></field>
<field name="total_labor_hours" type="numeric"></field>
<field name="total_machine_hours" type="numeric"></field>
<field name="total_number_of_operators" type="string"></field>
<field name="total_scrap_qty" type="numeric"></field>
<field name="total_shortage_qty" type="numeric"></field>
<field name="total_surplus_qty" type="numeric"></field>
<!-- ======== Line ======== -->
<detail name="report_detail">
<row>
<field name="seq" type="string"></field>
<field name="wo_no" type="string">5101-20260319001</field>
<field name="qty" type="numeric">100</field>
<field name="labor_hours" type="numeric">60</field>
<field name="machine_hours" type="numeric">55</field>
<field name="machine_no" type="string">EQ001</field>
<field name="op_seq" type="string">10</field>
<field name="op_no" type="string">OP001</field>
<field name="unit_no" type="string">PCS</field>
<field name="reporter" type="string">USER001</field>
<field name="report_datetime_e" type="string"></field>
<field name="number_of_operators" type="string"></field>
<field name="complete_date" type="date">2026-03-19</field>
<field name="remark" type="string"></field>
<field name="return_type" type="string"></field>
<field name="price" type="numeric"></field>
<field name="wages" type="numeric"></field>
</row>
</detail>
</row>
</data>
</parameter>
</parameters>
ERP 回寫邏輯
ERP 回傳報工單號後,MES 會將單號回寫至以下資料表:
回寫 SQL 邏輯
-- 更新 SFT_OP_REALRUN
UPDATE SFT_OP_REALRUN
SET PRODUCTION_REPORTID = 'PDTYPE-PDNO',
PRODUCTION_REPORTSN = TE003
WHERE ID = :KEYID
AND ERP_OPSEQ = :TE008
AND ERP_OPID = :TE009
AND ERP_WSID = :TD004
AND SEQUENCE = :PRODUCTIONSEQ
-- 更新 SFT_WS_RUN
UPDATE SFT_WS_RUN
SET WR024 = 'PDTYPE-PDNO',
WR025 = TE003
WHERE (對應的進出站記錄條件)
合併報工模式
當系統設定 EmploymentReportingItemized = "-1" 時,
採用合併報工模式,會根據 TD001 和 TD002 批次更新相關記錄。
錯誤處理
| 錯誤類型 |
原因 |
處理方式 |
SocketTimeoutException |
連線超時 |
檢查 ERP 伺服器狀態,重新補送 |
ConnectException |
無法連線 |
檢查網路、ERP 伺服器狀態 |
RemoteException |
遠端服務錯誤 |
查閱 ERP 日誌,聯絡 ERP 廠商 |
| 工單號不存在 |
ERP 端無此工單 |
確認工單已同步至 ERP |
LOG 記錄
// 日誌檔案:logs/ERPReturnErrorRec.log
[ERP_SEND_ERROR] taskName=generateProductionForm, errorType=SocketTimeoutException, errorMsg=Read timed out
[ERP_SEND_ERROR] 送出内容={...JSON...}