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.
MainDataHead.generateProductionForm(),
để gửi dữ liệu báo công đến ERP.
| 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 |
| 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 |
{
"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"
}
]
}
<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>
{
"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"
}
}
{
"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"
}
}
| 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ố) |
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:
-- 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)
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 | 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) |
| 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 |
| 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 |
// 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...}