← 返回 API 列表

品號換算單位

GET ERP → MES
conversion.unit.get

從 ERP 同步品號換算單位資料 (INVMD 表) 至 MES 的 ITEM_CONVERSION_UNIT 資料表。

基本資訊

API 名稱
conversion.unit.get
方法名稱
upConversionUnitCROSS
目標資料表
ITEM_CONVERSION_UNIT
JSON 節點
Conversionunit
主鍵
ITEM_NO + CONVERSION_UNIT
程式位置
RegularESB.java (新增)

請求參數

欄位類型必填說明
data_timeString必填資料異動起始日期(格式:yyyy-MM-dd)
data_time 參數邏輯
首次執行:使用當日日期
後續執行:使用 EAI_PARAMETER 表的 LAST_SUCCESS_TIME
立即匯入:使用前端指定日期

回應欄位

ERP 欄位MES 欄位類型說明
item_noITEM_NONVARCHAR(40)品號(複合主鍵)
conversion_unitCONVERSION_UNITNVARCHAR(10)換算單位(複合主鍵)
molecularCONVERSION_RATE_MOLECULARDECIMAL(18,6)換算率分子
denominatorCONVERSION_RATE_DENOMINATORDECIMAL(18,6)換算率分母
remarkREMARKNVARCHAR(255)備註
tran_statusTRAN_STATUSNVARCHAR(10)交易狀態

回應範例

{
  "Conversionunit": [
    {
      "item_no": "ITEM-001",
      "conversion_unit": "BOX",
      "molecular": "1",
      "denominator": "500",
      "remark": "每箱500個",
      "tran_status": "AU"
    }
  ]
}

處理邏輯

複合主鍵設計
使用 ITEM_NO(品號)+ CONVERSION_UNIT(換算單位)作為複合主鍵。

同一品號可設定多個換算單位,例如:
• ITEM-001 + BOX(箱)
• ITEM-001 + CTN(紙箱)
• ITEM-001 + PAL(棧板)
分母防呆處理
換算率分母(DENOMINATOR)不可為 0,程式會自動設為 1:
IF denominator = 0 THEN denominator = 1
EAI_PARAMETER 記錄
首次同步成功後,系統會在 EAI_PARAMETER 表建立記錄,
後續執行時自動使用 LAST_SUCCESS_TIME 作為 data_time 參數。

換算率計算

換算公式
換算率 = 分子 (MOLECULAR) ÷ 分母 (DENOMINATOR)

例如:500 PCS = 1 BOX
分子 = 1, 分母 = 500, 換算率 = 0.002

資料庫更新 SQL

判斷新增或修改

SELECT COUNT(1) FROM ITEM_CONVERSION_UNIT
WHERE ITEM_NO = N'{item_no}' AND CONVERSION_UNIT = N'{conversion_unit}'
-- count > 0 → UPDATE, count = 0 → INSERT

INSERT(新增換算單位)

INSERT INTO ITEM_CONVERSION_UNIT (
    ITEM_NO, CONVERSION_UNIT,
    CONVERSION_RATE_MOLECULAR, CONVERSION_RATE_DENOMINATOR,
    REMARK, TRAN_STATUS, SYNC_TIME, CREATE_TIME, UPDATE_TIME
) VALUES (
    :ITEM_NO,
    :CONVERSION_UNIT,
    :molecular,
    :denominator,
    :remark,
    :tran_status,
    N'{當前時間}',
    N'{當前時間}',
    N'{當前時間}'
)

UPDATE(修改換算單位)

UPDATE ITEM_CONVERSION_UNIT SET
    CONVERSION_RATE_MOLECULAR = :molecular,
    CONVERSION_RATE_DENOMINATOR = :denominator,
    REMARK = :remark,
    TRAN_STATUS = :tran_status,
    UPDATE_TIME = N'{當前時間}'
WHERE ITEM_NO = :ITEM_NO AND CONVERSION_UNIT = :CONVERSION_UNIT
欄位預設值
若 ERP 未回傳以下欄位,自動帶入預設值:
• CONVERSION_RATE_MOLECULAR = 1
• CONVERSION_RATE_DENOMINATOR = 1(不可為 0)
• REMARK = '' (空字串)
• TRAN_STATUS = '' (空字串)