1. Thong tin co ban
| Muc | Mo ta |
| Ten API tieng Viet | Thay doi trang thai lenh san xuat (Xoa/Ket thuc/Huy ket thuc) |
| Ten API tieng Anh | Work Order Status Process |
| Ma API | wo.status.process |
| So an | 0189142 |
| REST Endpoint | POST /ESB/API/upModetailStatus |
| Huong goi | ERP → MES |
| Thoi diem goi | Khi ERP xoa, ket thuc hoac huy ket thuc lenh san xuat |
| Tinh huong nghiep vu chinh | ERP thay doi trang thai lenh, dong bo cap nhat trang thai hoac xoa du lieu lenh trong MES |
| Dinh dang Request | JSON (Content-Type: application/json) |
| Dong bo/Bat dong bo | Goi dong bo |
Giai thich huong goi
API nay la ERP → MES day mot chieu.
Thuc hien cac thao tac khac nhau dua tren tham so status: Xoa(1), Ket thuc(2), Huy ket thuc(3).
5. Logic xu ly
5.1 status=1 Xoa lenh san xuat
Han che xoa
Neu lenh san xuat da phat hanh (SFT_WS_RUN co ban ghi EXECUTETYPE='release'), khong the xoa, se tra ve loi JS_0126_00062.
5.2 status=2 Ket thuc
Kiem tra ket thuc
- Kiem tra SFT_HOLD_REC: Lenh co dang tam dung khong
- Kiem tra SFT_OP_REALRUN: Co quy trinh chua hoan thanh khong
5.3 status=3 Huy ket thuc
Dieu kien huy ket thuc
Chi co lenh STATUS=99 (Ket thuc) hoac STATUS=100 (Huy) moi co the thuc hien thao tac huy ket thuc.
7. Vi du JSON
Request - Xoa lenh san xuat (status=1)
{
"CompanyId": "COMP01",
"lang": "vi_VN",
"wo_no": "5101-20260319001",
"status": "1"
}
Request - Ket thuc (status=2)
{
"CompanyId": "COMP01",
"lang": "vi_VN",
"wo_no": "5101-20260319001",
"status": "2"
}
Request - Huy ket thuc (status=3)
{
"CompanyId": "COMP01",
"lang": "vi_VN",
"wo_no": "5101-20260319001",
"status": "3"
}
Response (Thanh cong)
{
"code": "200",
"msg": "success"
}
Response (That bai - Da phat hanh khong the xoa)
{
"code": "500",
"msg": "JS_0126_00062"
}
Response (That bai - Dang tam dung khong the ket thuc)
{
"code": "500",
"msg": "JS_0115_00014"
}
Response (That bai - Chua ket thuc khong the huy)
{
"code": "500",
"msg": "JS_0126_00059"
}
8. SQL cap nhat co so du lieu
8.1 status=1 Xoa lenh san xuat
SELECT COUNT(*) FROM SFT_WS_RUN WITH (NOLOCK)
WHERE ID = N'{wo_no}'
AND EXECUTETYPE = 'release'
AND PLUSINDEX = '0'
SELECT COUNT(*) FROM SFT_BATCH_REC WHERE BR001 = N'{wo_no}'
DELETE FROM SFT_OP_REALRUN WHERE ID = :CMOID
DELETE FROM LOT WHERE MOID = :CMOID
DELETE FROM MODETAIL WHERE CMOID = :CMOID
DELETE FROM SFT_SPEC_MODIREC WHERE MD001 = :CMOID
DELETE FROM SFT_BATCH_REC WHERE BR002 = :CMOID
DELETE FROM EQUIPMENT_RUN WHERE LOTID = :CMOID
DELETE FROM SFT_WS_RUN WHERE ID = :CMOID
DELETE FROM SFT_SPLITOUT_REC WHERE SSR001 = :CMOID
DELETE FROM SFT_ASSEMBLY_REC WHERE SAR001 = :CMOID
DELETE FROM SFT_HOLD_REC WHERE HR001 = :CMOID
DELETE FROM SFT_MO_MODI WHERE MODI002 = :CMOID
8.2 status=2 Ket thuc
jsonQueryFactory.sqlQuery_checkMoidIsHold(dataObject)
jsonQueryFactory.checkHaveUndoneOp(dataObject)
UPDATE MODETAIL SET
STATUS = 99,
LASTMAINTAINUSER = :userid,
LASTMAINTAINDATETIME = N'{thoi gian hien tai}'
WHERE CMOID = :CMOID
8.3 status=3 Huy ket thuc
SELECT COUNT(*) FROM MODETAIL WITH (NOLOCK)
WHERE CMOID = N'{wo_no}'
AND STATUS NOT IN ('99', '100')
UPDATE MODETAIL SET
STATUS = CASE
WHEN (SELECT COUNT(1) FROM SFT_WS_RUN WITH (NOLOCK)
WHERE ID = N'{wo_no}' AND EXECUTETYPE = 'checkIn') > 0
THEN 2
ELSE 1
END,
LASTMAINTAINUSER = :userid,
LASTMAINTAINDATETIME = N'{thoi gian hien tai}'
WHERE CMOID = :CMOID
Mo ta bang du lieu lien quan bi xoa
| Bang du lieu | Mo ta |
| SFT_OP_REALRUN | Ban ghi thuc te quy trinh |
| LOT | Ban ghi lo |
| MODETAIL | Bang chinh lenh san xuat |
| SFT_SPEC_MODIREC | Ban ghi sua doi dac biet |
| SFT_BATCH_REC | Ban ghi tach lo |
| EQUIPMENT_RUN | Ban ghi van hanh thiet bi |
| SFT_WS_RUN | Ban ghi van hanh tram lam viec |
| SFT_SPLITOUT_REC | Ban ghi tach ra |
| SFT_ASSEMBLY_REC | Ban ghi lap rap |
| SFT_HOLD_REC | Ban ghi tam dung |
| SFT_MO_MODI | Ban ghi so luong phat hanh bo sung |
Vi tri chuong trinh
Diem vao API: ESBapi.java:1400-1493
Kiem tra trang thai: WoStatusProcess.java:66-108