繁體中文 English Tiếng Việt ภาษาไทย
← Quay lại danh sách API

Gửi phiếu báo công

POST MES → ERP
wo.work.report.data.create

Sau khi hoàn thành xuất trạm lệnh sản xuất, gửi dữ liệu báo công (phiếu báo công sản xuất) đến hệ thống ERP. Sau khi ERP trả về số phiếu báo công, MES sẽ ghi lại số phiếu vào SFT_OP_REALRUN và SFT_WS_RUN.

Thông tin cơ bản

Tên API
wo.work.report.data.create
Tên tác vụ nội bộ
generateProductionForm
Định dạng truyền tải
JSON (Content-Type: application/json)
Số dự án
0190760
Mã API
api-2195
Hướng dữ liệu
MES → ERP

Thời điểm kích hoạt

Xuất trạm CheckOut Tạo phiếu báo công generateProductionForm MainDataHead:354 Gửi đến ERP wo.work.report .data.create Ghi lại số phiếu SFT_OP_REALRUN SFT_WS_RUN
Điều kiện kích hoạt
Khi công nhân hoàn thành xuất trạm (CheckOut), vào trạm (CheckIn), xuất trạm hàng loạt (BatchCheckOut), vào trạm hàng loạt (BatchCheckIn), hệ thống sẽ gọi phương thức MainDataHead.generateProductionForm(), để gửi dữ liệu báo công đến ERP.

Tham số yêu cầu

HEAD Header phiếu báo công (SFT_SFCTD)

Trường Trường MES Trường ERP Loại Bắt buộc Mô tả
Loại báo công TD001 doc_type_no String Bắt buộc Mã loại phiếu báo công
Ngày báo công TD003 create_date Date Bắt buộc Ngày tác nghiệp báo công (yyyy-MM-dd)
Trạm làm việc TD004 workstation_no String Bắt buộc Mã trạm làm việc ERP (ERP_WSID)
Ghi chú TD006 remark String Tùy chọn Ghi chú phiếu báo công
Mã SP-Tên SP itemCode-itemName source_no String Tùy chọn Định danh nguồn sản phẩm

LINE Chi tiết phiếu báo công (SFT_SFCTE)

Trường Trường MES Trường ERP Loại Bắt buộc Mô tả
Nhân viên báo công TE004 reporter String Bắt buộc ID nhân viên thao tác
Mã máy TE005 machine_no String Bắt buộc Mã thiết bị (eqId)
Loại lệnh sản xuất TE006 wo_no String Bắt buộc Loại lệnh sản xuất (moType)
Số lệnh sản xuất TE007 String Bắt buộc Số lệnh sản xuất (moCode), kết hợp với loại lệnh
Số thứ tự công đoạn TE008 op_seq String Bắt buộc Số thứ tự công đoạn (ERP_OPSEQ)
Mã công đoạn TE009 op_no String Bắt buộc Mã công đoạn (ERP_OPID)
Số lượng báo công TE011 qty Numeric Bắt buộc Số lượng hoàn thành
Thời gian lao động TE012 labor_hours Numeric Bắt buộc Số giờ công (phút)
Thời gian máy TE013 machine_hours Numeric Bắt buộc Số giờ máy (phút)
Ghi chú TE015 remark String Tùy chọn Ghi chú dòng báo công
Ngày hoàn thành - complete_date Date Tùy chọn Ngày hoàn thành tác nghiệp
Đơn vị TE020 unit_no String Tùy chọn Đơn vị cơ bản
Đơn vị kép TWINUNIT - String Tùy chọn Tên đơn vị kép sản xuất

Ví dụ yêu cầu

Định dạng JSON nội bộ MES

{
  "head": {
    "productionType": "10",
    "date": "2026-03-19",
    "wsId": "WS001",
    "remark": "Báo công bình thường",
    "itemCode": "ITEM-001",
    "itemName": "Sản phẩm thử nghiệm",
    "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": "Sản phẩm thử nghiệm",
      "description": "Mô tả quy cách",
      "unit": "PCS",
      "packUnit": "BOX",
      "manufactureDualUnit": "BOX"
    }
  ]
}

Định dạng XML ERP (WFERP) - SendFormS.java:1520-1577

<parameters>
  <parameter key="enterprise_no" type="string">Mã công ty</parameter>
  <parameter key="site_no" type="string">Mã nhà máy</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">Báo công bình thường</field>
        <field name="factory_no" type="string"></field>
        <field name="shift_no" type="string"></field>
        <field name="source_no" type="string">ITEM-001-Sản phẩm thử nghiệm</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>

Định dạng phản hồi

Phản hồi thành công (code=200)

{
  "code": 200,
  "msg": "Tạo phiếu báo công thành công",
  "ERPMessage": {
    "description": "Xử lý thành công",
    "report_no": "10-20260319001"
  }
}

Phản hồi thất bại (code=500)

{
  "code": 500,
  "msg": "Tạo phiếu báo công thất bại",
  "ERPMessage": {
    "description": "Số lệnh sản xuất không tồn tại"
  }
}

Mô tả trường phản hồi

Trường Loại Mô tả
code Integer 200=Thành công, 500=Thất bại
msg String Thông báo xử lý
ERPMessage.report_no String Số phiếu báo công từ ERP (loại-số)

Logic ghi lại ERP

Sau khi ERP trả về số phiếu báo công, MES sẽ ghi lại số phiếu vào các bảng dữ liệu sau:

ERP trả về report_no 10-20260319001 Phân tích số PDTYPE=10 PDNO=20260319001 SFT_OP_REALRUN PRODUCTION_REPORTID PRODUCTION_REPORTSN SFT_WS_RUN WR024 (Số phiếu báo công) WR025 (Số thứ tự báo công)

Logic SQL ghi lại

-- Cập nhật 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

-- Cập nhật SFT_WS_RUN
UPDATE SFT_WS_RUN
SET WR024 = 'PDTYPE-PDNO',
    WR025 = TE003
WHERE (điều kiện bản ghi vào/xuất trạm tương ứng)
Chế độ báo công gộp
Khi cấu hình hệ thống EmploymentReportingItemized = "-1", sử dụng chế độ báo công gộp, sẽ cập nhật hàng loạt các bản ghi liên quan theo TD001 và TD002.

Bảng dữ liệu liên quan

Bảng dữ liệu Mô tả Trường quan trọng
SFT_SFCTD Header phiếu báo công TD001(Loại), TD002(Số), TD003(Ngày), TD004(Trạm làm việc)
SFT_SFCTE Chi tiết phiếu báo công TE001-TE002(FK), TE003(Số dòng), TE011(Số lượng)
SFT_OP_REALRUN Bản ghi thực thi công đoạn PRODUCTION_REPORTID, PRODUCTION_REPORTSN
SFT_WS_RUN Bản ghi thực thi trạm làm việc WR024(Số phiếu báo công), WR025(Số thứ tự báo công)

Vị trí mã nguồn

Chức năng Đường dẫn file Số dòng
Điểm vào tạo phiếu báo công SFT_core/src/com/dci/sft/dataTrunk/MainDataHead.java 354
Chuyển đổi JSON SFT_core/src/com/dci/sft/erp/webservice/SendFormSbyJson.java 47-57
Định nghĩa trường SFT_core/src/com/dci/sft/erp/webservice/SendFormElementbyJson.java 289-343
Tổ hợp tham số XML SFT_ERPIntegrate/src/com/dci/sft/erp/webservice/SendFormS.java 1503-1577
Gửi ERP SFT_core/src/com/dci/sft/jsonMappingHibernate/TransOrderDataToJson.java 1636-1645
Xử lý ghi lại SFT_core/src/com/dci/sft/jsonMappingHibernate/TransOrderDataToJson.java 1452-1527

Xử lý lỗi

Loại lỗi Nguyên nhân Cách xử lý
SocketTimeoutException Hết thời gian kết nối Kiểm tra trạng thái máy chủ ERP, gửi lại
ConnectException Không thể kết nối Kiểm tra mạng, trạng thái máy chủ ERP
RemoteException Lỗi dịch vụ từ xa Xem log ERP, liên hệ nhà cung cấp ERP
Số lệnh sản xuất không tồn tại ERP không có lệnh sản xuất này Xác nhận lệnh sản xuất đã đồng bộ với ERP

Ghi LOG

// File log: logs/ERPReturnErrorRec.log

[ERP_SEND_ERROR] taskName=generateProductionForm, errorType=SocketTimeoutException, errorMsg=Read timed out
[ERP_SEND_ERROR] Nội dung gửi={...JSON...}