5. Logic kiem tra so luong
Dinh nghia bien quan trong
- MOQTY: MODETAIL.PLANRELEASEQTY (So luong phat hanh du kien ban dau)
- MOREQTY: MODETAIL.RELEASEDQTY (So luong da phat hanh)
- LOTQTY: LOT.LOTSIZE (So luong cho phat hanh)
- newQTY: San luong moi tu ERP truyen vao
- MODIQTY: Tong SFT_MO_MODI (So luong phat hanh bo sung)
- BATQTY: Tong SFT_BATCH_REC (So luong tach lo)
5.1 Truong hop tang so luong
newQTY > (MOQTY - MODIQTY)
So luong tang = newQTY - (MOQTY - MODIQTY)
IF LOT ton tai THEN
UPDATE LOT SET LOTSIZE += So luong tang
ELSE
INSERT LOT (Tao ban ghi lo moi)
END IF
UPDATE MODETAIL SET PLANRELEASEQTY += So luong tang
5.2 Truong hop giam so luong
newQTY < (MOQTY - MODIQTY)
Han muc thay doi toi da = MOQTY - MOREQTY - BATQTY
So luong thay doi lan nay = MOQTY - newQTY - MODIQTY
IF Han muc thay doi toi da >= So luong thay doi lan nay THEN
IF LOTQTY - So luong thay doi lan nay > 0 THEN
UPDATE LOT SET LOTSIZE -= So luong thay doi lan nay
ELSE
DELETE FROM LOT
END IF
UPDATE MODETAIL SET PLANRELEASEQTY -= So luong thay doi lan nay
ELSE
Throw Exception("JS_0126_00060")
END IF
Gioi han quan trong
Neu so luong da phat hanh + so luong tach lo cua MES > san luong moi, khong the giam, se tra ve loi JS_0126_00060.
7. Vi du JSON
Request (Tang so luong)
{
"CompanyID": "COMP01",
"OperationType": 2,
"content": [{
"wo_no": "5101-20260319001",
"item_no": "FG-A001-001",
"unit_no": "PCS",
"plan_date_s": "2026-03-19 08:00:00",
"plan_date_e": "2026-03-21 17:00:00",
"wo_qty": 1500,
"factory_no": "P001",
"remark": "Them don hang"
}]
}
Request (Giam so luong)
{
"CompanyID": "COMP01",
"OperationType": 2,
"content": [{
"wo_no": "5101-20260319001",
"item_no": "FG-A001-001",
"unit_no": "PCS",
"plan_date_s": "2026-03-19 08:00:00",
"plan_date_e": "2026-03-20 17:00:00",
"wo_qty": 800,
"factory_no": "P001",
"remark": "Khach hang giam don hang"
}]
}
Response (Thanh cong)
{
"code": "200",
"msg": "success",
"query": []
}
Response (That bai - Khong the giam)
{
"code": "500",
"msg": "JS_0126_00060",
"query": []
}
8. SQL cap nhat co so du lieu
8.1 UPDATE MODETAIL (Cap nhat bang chinh lenh)
UPDATE MODETAIL SET
PLANPROCESSST = :PLANPROCESSST,
DUEDATETIME = :DUEDATETIME,
DOID = :DOID,
SEQUENCE = :SEQUENCE,
FACTORYID = :FACTORYID,
WAREHOUSEID = :WAREHOUSEID,
DESCRIPTION = :DESCRIPTION,
MO032 = :MO032,
LASTMAINTAINUSER = :userid,
LASTMAINTAINDATETIME = N'{thoi gian hien tai}',
FLAG = (SELECT MAX(FLAG)+1 FROM MODETAIL WHERE CMOID = :CMOID)
WHERE CMOID = :CMOID
8.2 Khi tang so luong (UPDATE LOT)
UPDATE LOT SET
LOTSIZE = LOTSIZE + {so luong tang}
WHERE MOID = :CMOID
UPDATE MODETAIL SET
PLANRELEASEQTY = PLANRELEASEQTY + {so luong tang},
QTY = :newQTY
WHERE CMOID = :CMOID
8.3 Khi giam so luong (UPDATE/DELETE LOT)
Han muc thay doi toi da = MOQTY - MOREQTY - BATQTY
IF LOTQTY - So luong giam > 0 THEN
UPDATE LOT SET
LOTSIZE = LOTSIZE - {so luong giam}
WHERE MOID = :CMOID
ELSE
DELETE FROM LOT WHERE MOID = :CMOID
END IF
UPDATE MODETAIL SET
PLANRELEASEQTY = PLANRELEASEQTY - {so luong giam},
QTY = :newQTY
WHERE CMOID = :CMOID
8.4 Tinh lai quy trinh
SFT_OP_REALRUN.sqlUpdate_RecalculateAll("updateMODETAIL")
Bang du lieu lien quan kiem tra so luong
- MODETAIL.PLANRELEASEQTY: So luong phat hanh du kien (MOQTY)
- MODETAIL.RELEASEDQTY: So luong da phat hanh (MOREQTY)
- LOT.LOTSIZE: So luong cho phat hanh (LOTQTY)
- SFT_MO_MODI: So luong phat hanh bo sung (MODIQTY)
- SFT_BATCH_REC: So luong tach lo (BATQTY)
Vi tri chuong trinh
Kiem tra so luong: RegularESB.java:1234-1319
Cap nhat LOT: RegularESB.java:1243-1472