# E34
工程備料預計表維護頁面:
https://10.100.50.20:9080/mr/mr50002_man.jsp?s_FNOH_FCODE=FW&FNOH_EDATE=&FNOH_ANO=0C&s_FNOH_FSEQE=60&s_FNOH_FSEQS=60&FNOH_FCODE=FW&FNOH_FYY=110&s_FNOH_FDATEE=&s_FNOH_EDATEE=&FNOH_FDATE=1101201&UNITID=0C&s_FNOH_EDATES=&s_FNOH_WNOS=&FNOH_FSEQ=60&s_FNOH_WNOE=&s_FNOH_SNO=&s_FNOH_ANOE=&s_FNOH_FDATES=&s_FNOH_FYY=110&s_FNOH_ANOS=
分配清單畫面:
https://10.100.50.20:9080/mr/mr40501_lis.jsp?s_ALOTT_WNO=&s_ALOTT_NO3=60&s_ALOTT_NO2=110&ListBox1=&s_ALOTT_NO1=FW&s_ALOTT_FLAG=1&s_ALOTT_CIDEPT=0C
追加 sql:
[MAST_FNOB 文件](https://docs.google.com/document/u/1/d/1fmReb8IRCYivUFt4Dzk6gxf9QeNztllV/edit?usp=drive_web&ouid=103629154485329904225&rtpof=true)
```sql
-- 追加數量為 FNOB_ADDQTY,追減為 FNOB_SUBQTY
SELECT A.* FROM MAST_FNOB A
WHERE 1=1
AND A.FNOB_FCODE='FW'
AND A.FNOB_FYY='110'
AND A.FNOB_FSEQ='60'
AND A.FNOB_MNO IN ('A46012250017','A46012400017')
;
```
分配sql
```sql
-- 數量為 ALOTT_QTY
SELECT A.* FROM MAST_ALOTT A
WHERE 1=1
AND ALOTT_CIDEPT='0C'
AND ALOTT_NO1='FW'
AND ALOTT_NO2='110'
AND ALOTT_NO3='60'
AND ALOTT_MNO IN ('A46012250017','A46012400017')
;
```
理論上核定追加數量時,應該會改變 ALOTT_QTY
mr50002_manHandlers.jsp 1143-1151
```java
ld_qty = ld_fnob_fqty + ld_fnob_addqty - ld_fnob_subqty;
//抓session使用者代碼
String ls_userid = SessionStorage.getInstance(e.getPage().getRequest()).getAttributeAsString("UserID");
//調撥數有異動update mast_alott table
DBTools.executeUpdate("UPDATE mast_alott SET alott_qty=" + Utils.convertToString(ld_qty) + ",alott_upuser='" + ls_userid + "' WHERE alott_ano = '" + ls_fnob_ano.substring(0,2) + "' AND alott_cidept = '" + ls_fnob_ano + "' AND alott_no1 = '" + ls_fnob_fcode + "' AND alott_no2=" + ls_fnob_fyy + " AND alott_no3=" + ls_fnob_fseq + " AND alott_seq=" + ls_fnob_seq + " AND alott_mno='" + ls_fnob_mno + "'", "SynctConn");
```
最快的是補執行該段語法,後續再釐清可能的原因
```sql
UPDATE mast_alott
SET alott_qty='236'
WHERE alott_ano = '0C' AND alott_cidept = '0C'
AND alott_no1 = 'FW' AND alott_no2='110' AND alott_no3='60'
AND alott_seq='2' AND alott_mno='A46012250017';
UPDATE mast_alott
SET alott_qty='260'
WHERE alott_ano = '0C' AND alott_cidept = '0C'
AND alott_no1 = 'FW' AND alott_no2='110' AND alott_no3='60'
AND alott_seq='3' AND alott_mno='A46012400017';
```
可能的原因為:可能使用者輸入的字串解析為數字失敗,造成備料預計表(MAST_FNOB)更新追加追減的時候,追加追減沒有反映到 MAST_ALOTT 的可分配數量,此為資料面錯。
而後續再更新備料預計表(MAST_FNOB)的時候因為追加追減數字沒有變動,就不會再執行該段語法
目前該框架沒有有效的方式防止使用者輸入錯誤的數字,
建議後續遇到處理方法可再次變動該材料的追加追減數目,例如:變動追加為39=>修改追加為40,可重複觸發次處語法執行
