掃碼上料 設計文檔

掃碼上料

版本控制

時間

版本

修改描述

修改人

2023/3/20

V0

文檔初版

黃良謀

 

V18

新增 燈絲燈 膜液配方 通過掃碼上料記錄的功能

黃良謀

 

畫面原型

 

程序流程

 

業務邏輯

1.打開掃碼上料子應用後光標定位到設備碼文本框,掃設備碼,獲取資源對象resrce對象所有屬性,查詢條件爲RESRCE屬性=掃碼值

名稱

類型

可爲空

默認/表達式

Generated

On Null

不可見

存儲

註釋

ID

NUMBER

N

  

Always

N

N

  

流水碼

RESRCE

NVARCHAR2(255)

N

  

  

N

N

  

資源編碼

SITE

NVARCHAR2(255)

Y

  

  

N

N

  

工廠

DESCRIPTION

NVARCHAR2(255)

Y

  

  

N

N

  

資源描述

ENABLED

NUMBER(1)

N

1

  

N

N

  

有效否1:true 0:false

RESOURCE_TYPE

NVARCHAR2(255)

N

  

  

N

N

  

資源類型

WORK_CENTER

NVARCHAR2(255)

N

  

  

N

N

  

所屬產線

OPERATION

NVARCHAR2(255)

Y

  

  

N

N

  

工序

MUSTHASWO

NUMBER(1)

Y

0

  

N

N

  

上料必先指定工單1:true 0:false

WCSTORE

NUMBER

Y

0

  

N

N

  

設備在產線上的前後排序

ALLOW_SCANNING

NUMBER

Y

0

  

N

N

  

設備是否允許掃碼

CURR_ORDER_RESRCE

NVARCHAR2(255)

Y

  

  

N

N

  

當前生產資源

OLD_CONTAINER_FINISH

NUMBER(1)

Y

0

  

N

N

  

原容器出站1:true 0:false

1.1. 若步驟1實體ENABLED =false 則報錯 "1028:資源xxx已失效請聯繫it",若ALLOW_SCANNING=false,報錯:" 10031:設備不允許掃碼,請聯繫IT部門註冊設備"

1.2. 使用第一步獲取的OPERATION屬性 到 operation表 查詢 描述DESCRIPTION

SELECT OPERATION ||':'||DESCRIPTION FROM OPERATION x WHERE OPERATION = 'ZZ030' 顯示於 畫面

 

 

執行掃碼動作

 

V18 新增邏輯 放在2.1前面 start

select x.*

from imes.slurry_master_data x

where site = '1150' /*需替換*/

and recipe = 'DMS01230801001' /*需替換*/

查詢返回行數>0 則標記當前業務爲 膜液配方掃碼 否則標記業務類型=other 繼續走2.1邏輯

並直接跳轉到 工單查詢lov

 

V18 新增邏輯 放在2.1前面 end

 

 

 

2.1查條碼是否已經綁定

/*檢查是否存在沒有清線的重複上料記錄*/

select resrce, operation, work_center, inventory, created_date_time

from ITEM_RESOURCE_BIND_NEW x

where inventory = '222700094510-1000019980-1' /*替換爲上料的條碼*/

and clear_date_time is null

如果返回行數>0 則報錯 條碼{ inventory }已經上料到資源{ resrce}工序{ operation }

1111 %s已經上料到資源%s工序%s

 

2.2 查詢條碼信息

SELECT x.*,x.ROWID FROM INVENTORY x WHERE SITE = '1220' AND INVENTORY = 'WA1000017459202003160002'

 

名稱

類型

可爲空

默認/表達式

Generated

On Null

不可見

存儲

註釋

SITE

NVARCHAR2(255)

N

  

  

N

N

  

工廠

INVENTORY

NVARCHAR2(255)

N

  

  

N

N

  

條碼

ITEM

NVARCHAR2(255)

N

  

  

N

N

  

物料

WAREHOUSE

NVARCHAR2(255)

N

  

  

N

N

  

線邊倉

INVENTORY_TYPE

NVARCHAR2(255)

N

  

  

N

N

  

庫存類型

INVENTORY_STATUS

NVARCHAR2(255)

N

  

  

N

N

  

庫存狀態

QTY_ON_HAND

NUMBER(38,6)

N

  

  

N

N

  

現有量

ACTUAL_RECEIVE_TIME

DATE

Y

  

  

N

N

  

接收時間

CONTAINER_CODE

NVARCHAR2(255)

Y

  

  

N

N

  

容器條碼

LOT_NUMBER

NVARCHAR2(255)

Y

  

  

N

N

  

條碼批次

MRB_NUM

NVARCHAR2(255)

Y

  

  

N

N

  

MRB編號

SO_LINE_NUM

NUMBER

Y

  

  

N

N

  

銷售訂單行號

SO_NUM

NVARCHAR2(255)

Y

  

  

N

N

  

銷售訂單號

SWR_NUM

NVARCHAR2(255)

Y

  

  

N

N

  

SWR編號

WBS_NUM

NVARCHAR2(255)

Y

  

  

N

N

  

WBS編號

VENDOR_CODE

NVARCHAR2(255)

Y

  

  

N

N

  

供應商編碼

VENDOR_DESC

NVARCHAR2(255)

Y

  

  

N

N

  

供應商描述

AVAILABLE_TAG

NVARCHAR2(255)

Y

  

  

N

N

  

免校驗掃碼倒扣標記(暫取消)

COEFFICIENT

NUMBER

Y

  

  

N

N

  

基板係數

PRE_WORK1

NVARCHAR2(255)

Y

  

  

N

N

  

前加工完成標識

PRE_WORK2

NVARCHAR2(255)

Y

  

  

N

N

  

前加工物料標識

QM_MATERIAL_DEFECT

NVARCHAR2(255)

Y

  

  

N

N

  

不合格原材料缺陷代碼

QM_PRODUCT_DEFECT

NVARCHAR2(255)

Y

  

  

N

N

  

不合格成品缺陷代碼

QM_MATERIAL_DEFECT_DESC

NVARCHAR2(255)

Y

  

  

N

N

  

缺陷代碼描述

QM_DESCRIPTION

NVARCHAR2(255)

Y

  

  

N

N

  

質量備註

SLO_CHECK_SIGN

NVARCHAR2(255)

Y

  

  

N

N

  

銷售訂單行校驗標識(暫取消)

FQC_TASK_ORDER

NVARCHAR2(255)

Y

  

  

N

N

  

FQC任務單號

SHOP_ORDER

NVARCHAR2(555)

Y

  

  

N

N

  

工單號

SUPPLIER

NVARCHAR2(255)

Y

  

  

N

N

  

質量判定責任供應商編碼

SUPPLIER_DESC

NVARCHAR2(255)

Y

  

  

N

N

  

質量判定責任供應商描述

ORIGINAL_QTY

NUMBER

N

  

  

N

N

  

發料數量

ORIGINAL_INVENTORY

NVARCHAR2(255)

Y

  

  

N

N

  

原始條碼

QM_AUDITOR

NVARCHAR2(255)

Y

  

  

N

N

  

不良退料審覈人

ENABLED

NUMBER

N

0

  

N

N

  

條碼可用狀態

SWR_MESSAGE

NVARCHAR2(1000)

Y

  

  

N

N

  

SWR備註信息

MRB_MESSAGE

NVARCHAR2(1000)

Y

  

  

N

N

  

MRB備註信息

 

2.3: 如果沒有查到 則 調用iwms接口查詢 http://10.30.35.83:8088/services/containerQueryWebService?wsdl 傳入參數爲 畫面容器碼

{

"code":"0",

"data":[

{

"containerCode":"",

"level":0,

"levelSpecified":true,

"loadObjectCode":"WMBI00369",

"loadObjectType":"CONTAINER",

"path":"WMBI00369",

"qty":null

},

{

"containerCode":"WMBI00369",

"level":1,

"levelSpecified":true,

"loadObjectCode":"SPBZ05710",

"loadObjectType":"CONTAINER",

"path":"WMBI00369\SPBZ05710",

"qty":null

},

{

"containerCode":"SPBZ05710",

"level":2,

"levelSpecified":true,

"loadObjectCode":"1000043191103902A2211250022",

"loadObjectType":"MATERIAL_LOT",

"path":"WMBI00369\SPBZ05710\1000043191103902A2211250022",

"qty":"0"

}

],

"message":"SUCCESS",

"status":true,

"statusSpecified":true

}

從返回 集合中 取出 "loadObjectType"="MATERIAL_LOT", 所有的 loadObjectCode ,然後 使用2.2的 邏輯去查 條碼信息

 

 

3.1 得到條碼信息,若ENABLED =false 則報錯"1031條碼不可用,狀態爲 INVENTORY_STATUS"

掃碼容器返回的結果如果多個條碼 並且第一個INVENTORY_TYPE<>在制條碼(123)

 

則先 lov顯示 所有的條碼 ,勾選後 緩存於 invlist到頁面 (條碼號,物料號, SO_NUM, SO_LINE_NUM, WBS_NUM)

 

點確定後 循環 invlist 的每個條碼 執行3.2 ,3.3 ,3.4的判斷

 

 

V9-1 start:

如果是掃碼單條碼 但是通過查詢 INVENTORY. INVENTORY_TYPE=在制條碼(123) 還需再次到容器平臺查詢 容器樹 但是 只顯示上層容器和中層容器和本在制條碼 ,不要顯示其他的條碼

掃碼容器返回的結果如果多個條碼 並且第一個INVENTORY_TYPE=在制條碼(123) 則提取所有EO的條碼顯示於 容器樹

條碼 物料號 數量 工單號 物料描述 其中數量可編輯 默認帶

INVENTORY ITEM QTY_ON_HAND SOURCE_SHOP_ORDER item. DESCRIPTION

點確定後傳入

V9-1 end

 

3.2 查物料是否需要掃碼上料

SELECT SCAN_CHECK , ALLOW_MULTIPLE_RESOURCE_BIND FROM ITEM x WHERE ITEM = '條碼item屬性',

 

如果取到的SCAN_CHECK屬性爲false 並且 INVENTORY_TYPE<>123 則返回前端報錯 1043本條碼物料無需掃碼上料

如果SCAN_CHECK=true繼續判斷 ALLOW_MULTIPLE_RESOURCE_BIND 屬性 =false 則繼續 判斷

 

 

V20start

卡住盤裝料不可用此掃碼上料

select 1

from item x

where site = '1220' 替換爲當前工廠

and item = '1000110057' 替換爲當前條碼料號

and error_proofing_sign = 'P'

如果返回行數>0 則報錯 1253 投料方式爲P不可用此功能

 

 

V20end

 

 

3.3.1 查詢

select distinct resrce

from ITEM_RESOURCE_BIND_NEW

where resrce <> '11300101-YG039' /*替換爲畫面資源*/

and operation = 'YG039' /*替換爲畫面工序*/

and work_center = '11300102' /*替換爲畫面產線*/

and item = '1000047520' /*替換爲 條碼 item屬性*/

and clear_date_time is null

如果行數>0 則返回前端報錯 1044 當前物料 已經上料到 xxx 資源,系統設置不可多資源上料

 

 

V8-1 start 3.3.2 INVENTORY_TYPE=在制條碼(123) 則查詢

select sum(qty) qty

from imes.shop_order_manufacture_report x

where inventory_bo = '232400001110-2/3-YG014-0002' /*替換爲在制條碼*/

and in_out = 1

如果 步驟2.2 條碼信息. QTY_ON_HAND< qty + 輸入進站量 則報錯 1186 在制條碼%s 條碼賬面數 %s 已進站 %s ,餘量不足

1185在制條碼%s已完全進站

V8-1 end

 

3.4校驗條碼的線邊倉 是否爲當前工序線邊倉

/*查詢當前工序線邊倉*/

select warehouse

from operation_warehouse x

where work_center = '11200501' /*替換爲當前產線*/

and operation = 'ZZ190' /*替換爲畫面工序*/

如果返回行數0 則報錯 1118本工序沒有預設線邊倉,請聯繫IT

如果條碼的 warehouse 不在返回值的任何一行則報錯 1117條碼非當前工序預設線邊倉物料

 

 

 

4. 新增橡皮章直投料邏輯 掃完碼後 先檢查物料

select item ,description from item x where item = '1000135313' /*替換爲當前料號*/ and site = '1130' and category3 = 'O0002'

如果返回行數=1 則當前物料爲橡皮章

詳情見獨立文件 橡皮印直投邏輯*.docx

 

5. 如果 INVENTORY_TYPE=在制條碼(123) 如果有多個條碼 則lov供用戶選擇需要進站的在制條碼

V15 start

工單號 =

select x.convertion_data

from item_group_pro_convertion x, item i, shop_order s, INVENTORY inv

where work_center = '11300105' /*需替換*/

and operation = 'YG011' /*需替換*/

and s.shop_order = inv.shop_order

and i.category3 = x.item_group

and i.item = s.planned_item

and i.site = s.site

and inv.site='1130'

and inv. INVENTORY = '232400001110-2/3-YG014-0001' 需替換

如果返回1行 則將所有在制條碼的數量* 係數 顯示於畫面

上圖 就是 23*3= 69 ,然後在輸入的執行數 如果不是 係數的整數倍 則報錯 "執行數必須是%s的整數倍"

 

點完確定 對外發送的數據 也需要 69/係數

 

V15end

 

 

 

select inventory_bo, item, qty, operation, erp_control_key_group, warehouse, shop_order

from imes.shop_order_manufacture_report x

where inventory_bo in ('220600554510-1/3-YG039-0001', '220600554510-1/3-YG039-0003') /*替換爲容器下的條碼清單*/

and inv_type = 'W'

作業員選擇後執行5.1的判斷(每選一個都判斷)

 

5.1 判斷是否在制條碼是否在首個sp02進站

/*在制條碼需在對應工單工藝路線erp_control_key_group+1後的min(sequence)進站*/

with a as

(select shop_order, erp_control_key_group + 1 erp_control_key_group

from shop_order_manufacture_report x

where in_out = '-1'

and inventory_bo = '220600554610-1/3-YG039-0001' /*替換爲當前條碼*/

),

b as

(select min(sequence) minsequence

from routing r, a x

where r.shop_order = x.shop_order

and r.erp_control_key_group = x.erp_control_key_group)

select r.operation, r.erp_step, r.erp_control_key_group

from routing r, b, a

where r.sequence = b.minsequence

and r.shop_order = a.shop_order

如果返回的operation <> 畫面工序 則報錯 1099需在工序%s對應的工序上料

如果一致則 緩存 operation erp_step erp_control_key_group 與畫面緩存

 

5.2判斷當前資源已綁定物料是否衝突

/*在制進站判斷已綁定物料是否衝突 此sql需優化*/

select resrce, item, so_num, so_line_num, wbs_num, swr_num

from ITEM_RESOURCE_BIND_NEW x

where CURR_ORDER_RESRCE = 'SC1500400007' /*替換爲當前資源*/

and clear_date_time is null

and item not in (select component_gbo

from bom x

where back_flush = 'X'

and shop_order = '222700094510' /*替換爲條碼工單號*/

and enabled = 1)

返回行數>0 報錯 1158 物料%s不在進站工單bom內

行數=0 則繼續執行下面的檢查

/*在制進站判斷已綁定物料EQ是否衝突 此sql需優化*/

select resrce, item, so_num, so_line_num, wbs_num, swr_num

from ITEM_RESOURCE_BIND_NEW x

where CURR_ORDER_RESRCE = 'SC1500400007' /*替換爲當前資源*/

and clear_date_time is null

and item not in (select component_gbo

from bom b

where back_flush = 'X'

and shop_order = '222700094510' /*替換爲條碼工單號*/

and enabled = 1

and nvl(x.so_num, ' ') = nvl(b.sales_order, ' ')

and nvl(x.so_line_num, 0) = nvl(b.so_line, 0)

and nvl(x.wbs_num, ' ') = nvl(b.wbs, ' '))

返回行數>0 則報錯 1159當前機臺已綁定物料%s的按單按庫屬性和進站工單不一致

行數=0 則繼續執行

 

5.3寫進站記錄 SHOP_ORDER_MANUFACTURE_REPORT

名稱

類型

可爲空

默認/表達式

註釋

 寫入值

SITE

NVARCHAR2(255)

N

  

工廠

 步驟1獲得資源的工廠site

RESOURCE_BO

NVARCHAR2(255)

N

  

資源

 畫面資源碼

OPERATION

NVARCHAR2(255)

N

  

工序

 步驟1得到的工序 OPERATION

WORK_CENTER

NVARCHAR2(255)

N

  

所屬產線

 步驟1得到產線

WAREHOUSE

NVARCHAR2(255)

N

  

線邊倉

 步驟3得到的線邊倉

CONTAINER_CODE

NVARCHAR2(255)

N

  

容器

 步驟3得到的容器 暫定

INV_TYPE

NVARCHAR2(255)

N

  

條碼類型F完工W在制

 INVENTORY_TYPE=123 寫 W 否則寫F

IN_OUT

NVARCHAR2(255)

Y

  

進/出站

 1 (1:進站 -1:出站)

SHOP_ORDER

NVARCHAR2(255)

N

  

工單號

 步驟3獲取的SHOP_ORDER工單號

INVENTORY_BO

NVARCHAR2(255)

N

  

庫存條碼BO/在制條碼

 畫面條碼號

QTY

NUMBER(38,6)

N

  

進站/出站數量

 步驟3得到的 QTY_ON_HAND

PSD_LOCATION

NVARCHAR2(255)

Y

  

配送點

 Null (後續看是否能獲取到)

CARGO_LOCATION

NVARCHAR2(255)

Y

  

托盤位

 Null (後續看是否能獲取到)

CREATED_DATE_TIME

DATE

N

sysdate

創建時間

  

CREATED_USER

NVARCHAR2(255)

Y

  

創建人

  

MODIFIED_DATE_TIME

DATE

Y

  

修改時間

  

MODIFIED_USER

NVARCHAR2(255)

Y

  

修改人

  

TEAM

NVARCHAR2(36)

N

  

生產班組

 暫空

DATA_FROM

NVARCHAR2(255)

Y

  

寫入程序類名稱

 類名稱

START_TIME

DATE

Y

  

開始時間

 Now

FINISH_TIME

DATE

Y

  

下線時間

  

ERP_STEP

    

緩存變量 ERP_STEP

ERP_CONTROL_KEY_GROUP

    

緩存變量 ERP_CONTROL_KEY_GROUP

 

6.查詢綁定表是否存在相同物料

select distinct key

from ITEM_RESOURCE_BIND_NEW t, inventory inv

where t.item = inv.item

and nvl(t.so_num, ' ') = nvl(inv.so_num, ' ')

and nvl(t.wbs_num, ' ') = nvl(inv.wbs_num, ' ')

and nvl(t.so_line_num, 0) = nvl(inv.so_line_num, 0)

and inv.inventory = #{ inventory } /*需替換爲畫面條碼*/

and RESRCE=#{RESRCE} /*畫面資源*/

and t.clear_date_time is null

返回行數>0 本物料已上料 則直接check通過,進入記錄上料表其中ITEM_RESOURCE_BIND_NEW.key使用此key

 

6.1記錄上料歷史表 ITEM_RESOURCE_BIND_NEW

 

V16start 執行check

with a as

(select max(created_date_time) created_date_time

from item_resource_bind_new x

where resrce = 'SC1600200012' /*需替換*/

and item = '1000057549' /*需替換*/

v17: and INVENTORY not in (前端傳入上料條碼list)

)

select created_date_time from a where created_date_time + 60 /*需替換sysset.SCANTIME*/

/ 60 / 1440 > sysdate

 

如果返回行數>0 則報錯 已在 created_date_time上料,系統卡控相同資源上料相同物料需要間隔sysset.SCANTIME

V22 start 拋異常1202 外套條件 if site.systemerr=0  then 拋異常 1202 end if

1202本物料已在%s上過料,系統卡控相同資源上料相同物料需要間隔%s秒

V16end

SITE

NVARCHAR2(255)

N

  

工廠

 當前工廠

WORK_CENTER

NVARCHAR2(255)

N

  

所屬產線

 畫面產線

OPERATION

NVARCHAR2(255)

Y

  

工序

 畫面工序

RESRCE

NVARCHAR2(255)

N

  

資源

 畫面掃碼資源

KEY

NUMBER

N

  

上料批次

 先執行 select distinct key

from item_resource_bind_new t, inventory inv

where t.item = inv.item

and nvl(t.so_num, ' ') = nvl(inv.so_num, ' ')

and nvl(t.wbs_num, ' ') = nvl(inv.wbs_num, ' ')

and nvl(t.so_line_num, 0) = nvl(inv.so_line_num, 0)

and inv.inventory = invlist.inventory /*需替換爲畫面條碼*/

and clear_date_time is null

返回行數0 select nvl(max(key),0) + 1 from ITEM_RESOURCE_BIND_NEW t

INVENTORY

NVARCHAR2(255)

N

  

庫存條碼BO/在制條碼

 畫面條碼

ITEM

NVARCHAR2(255)

N

  

物料號

 當前條碼物料號

SO_LINE_NUM

NUMBER

Y

  

銷售訂單行號

 當前掃描條碼 銷售訂單號SO_NUM

SO_NUM

NVARCHAR2(255)

Y

  

銷售訂單號

  當前掃描條碼 銷售訂單行SO_LINE_NUM

WBS_NUM

NVARCHAR2(255)

Y

  

WBS編號

  當前掃描條碼 WBS_NUM

SWR_NUM

NVARCHAR2(255)

Y

  

SWR編號

  當前掃描條碼 SWR_NUM

QTY_ON_HAND

NUMBER(38,6)

N

  

現有量

 當前掃描條碼QTY_ON_HAND

SCAN_TYPE

NVARCHAR2(255)

N

  

掃碼類型F物料W在制

 當前條碼的類型

CONTAINER_DATA

NVARCHAR2(255)

Y

  

容器BO

 如果有靠近條碼的容器則寫入

DATAFROM

NVARCHAR2(255)

N

  

數據來源

 寫入的程序類

CREATED_DATE_TIME

DATE

N

sysdate

上料時間

  

 

 

V18 新增邏輯 start

當前業務爲 膜液配方掃碼 的情況下

查詢當前產線工單

select s.shop_order, planned_item, qty_ordered, planned_start_date, planned_comp_date

from imes.shop_order s

where status = '501'

and planned_work_center = '11500401' /*需替換*/

V18 新增邏輯 end

 

 

7.用掃碼物料反查當前產線可選工單

V21 如果容器多個物料 則下面的語句是是取交集 ,但是掃描一個條碼的時候(invlist.item 只有一個值)則 不需要取交集 去掉( where cc = (select max(cc) from a)),只要bom包含此物料就顯示出工單

with a as

(select b.shop_order, count(b.shop_order) over(partition by b.shop_order) cc

from bom b, shop_order s, routing r

where s.shop_order = b.shop_order

and r.shop_order = s.shop_order

and r.erp_step = b.erp_step

and s.status = '501'

and b.back_flush = 'X'

and b.enabled = 1

and b.component_gbo in (invlist.item) /*替換爲invlist物料號*/

and r.work_center = '11300305' /*替換爲畫面產線*/

),

b as

(select distinct shop_order from a where cc = (select max(cc) from a))

select s.shop_order, planned_item, qty_ordered, planned_start_date, planned_comp_date

from b, shop_order s

where b.shop_order = s.shop_order

order by sign(nvl(qty_done, 0)) desc, planned_start_date

 

8.返回行數=0 則提示 1160按當前物料無法找到工單,是否拿錯物料或者沒有工單?

返回行數>0 則彈框 顯示行數據供用戶選擇工單 帶複選框

 

V18 新增邏輯 start

當前業務爲 膜液配方掃碼 的情況下

選擇工單 保存 底膜工單膜液配方關聯表 SHOP_ORDER_SLURRY

SITE

NVARCHAR2(255)

N

工廠

 當前工廠

SHOP_ORDER

NVARCHAR2(255)

N

工單號

 選擇的工單

RECIPE

VARCHAR2(100)

N

配方單

 掃碼的 配方單號

CREATED_USER

NVARCHAR2(255)

Y

創建人

 當前操作用戶

 

本次掃碼 只能勾選一個工單

 

保存完成 數據顯示到下方表格 條碼清空

V18 新增邏輯 end

 

 

 

8.1 選擇工單 後執行 9.1 -9.n所有的檢查

 

 

9.1上料條碼物料在所選工單工序是否和當前工序check(逐個工單發送請求判斷)

select x.inventory, x.item, b.operation

from bom b, shop_order s, routing r, inventory x

where s.shop_order = b.shop_order

and r.shop_order = s.shop_order

and r.erp_step = b.erp_step

and s.status = '501'

and b.back_flush = 'X'

and b.enabled = 1

and b.component_gbo = x.item

and r.work_center = '11300305' /*替換爲畫面產線*/

and r.shop_order = '232400006010' /*替換爲所選工單*/

and x.inventory in (invlist.inventory) /*替換爲invlist條碼號*/

循環所有返回的行, 對比 operation<>畫面工序 報錯"1177條碼%s物料%s所屬工序%s和當前工序不一致"

 

9.2 所選工單和當前容器/當前條碼物料check(逐個工單發送請求判斷)

select inventory, item, so_line_num, so_num, swr_num, wbs_num, shop_order

from inventory x

where not exists (select 1

from bom b, shop_order s, routing r

where s.shop_order = b.shop_order

and r.shop_order = s.shop_order

and r.erp_step = b.erp_step

and s.status = '501'

and b.back_flush = 'X'

and b.enabled = 1

and (b.component_gbo = x.item and nvl(b.sales_order, ' ') = nvl(x.so_num, ' ') and

nvl(b.wbs, ' ') = nvl(x.wbs_num, ' ') and nvl(b.so_line, 0) = nvl(x.so_line_num, 0))

and r.work_center = '11300305' /*替換爲畫面產線*/

and r.shop_order = '232400006010' /*替換爲所選工單*/

)

and x.inventory in (invlist.inventory) /*替換爲invlist條碼號*/

如果返回>0行 則報錯 1176所選工單EQ和上料條碼%sEQ不一致

否則繼續執行9.2

 

9.3所選工單和當前資源物料check(逐個工單發送請求判斷)

V14 替換後的sql : select distinct resrce, x.item

from item_resource_bind_new x, inventory inv

where inv.inventory = x.inventory

and inv.qty_on_hand > 0

and curr_order_resrce = 'SC1600600001' /*替換爲掃碼資源的當前生產資源*/

and clear_date_time is null

and not exists

(select 1

from bom b, routing r

where r.erp_step = b.erp_step

and r.shop_order = b.shop_order

and b.back_flush = 'X'

and b.enabled = 1

and (b.component_gbo = x.item and nvl(b.sales_order, ' ') = nvl(x.so_num, ' ') and

nvl(b.wbs, ' ') = nvl(x.wbs_num, ' ') and nvl(b.so_line, 0) = nvl(x.so_line_num, 0))

and r.operation = 'YG014' /*替換爲當前工序*/ 2023/11/29去掉工序條件

and r.shop_order = '220600308710' /*替換爲當前所選工單*/

and r.work_center = '11300306' /*替換爲當前產線*/

);

返回行數>0 則報錯 1170當前資源%s綁定的物料%s和當前所選工單互斥,請清線

 

 

10.判斷當前物料在選擇的工單中是否處於當前工序

/*獲取包含條碼物料的工序*/

select distinct operation bomoperation

from bom x

where component_gbo = '1000020003' /*替換爲條碼料號*/

and x.shop_order in (select shop_order from item_order_bind x where work_center = '11300201' /*替換爲當前產線*/

)

返回0行則 報錯 1140當前生產工單無條碼對應物料 實際上沒有此情況

返回>0行 對比畫面工序是否存在於返回的行中 若都不存在 報錯 1141物料所屬工序%s非當前工序

 

11.1物料號判斷

select x.component_gbo

from bom x

where shop_order = '232200001010' /*替換爲當前選擇工單*/

and component_gbo = '1000017126' /*替換爲條碼物料號*/

如果返回行數0 則報錯 本條碼物料不適合當前工單

 

11.2物料EQ判斷

/*檢查工單和當前條碼EQ是否一致*/

select component_gbo, erp_step, operation

from bom t, inventory inv

where t.component_gbo = inv.item

and nvl(t.sales_order, ' ') = nvl(inv.so_num, ' ')

and nvl(t.wbs, ' ') = nvl(inv.wbs_num, ' ')

and nvl(t.so_line, 0) = nvl(inv.so_line_num, 0)

and inv.inventory = '1000043191103902A2211250022' /*需替換爲畫面條碼*/

and t.shop_order = '222600058210' /*需替換爲選擇的工單號*/

and t.enabled = 1

 

返回行數=0 則報錯 1161當前選擇工單EQ和當前條碼EQ不一致

否則執行 11.3的各項校驗

 

11.3 SWR選擇物料邏輯

11.3.1.判斷條碼是否有專屬swr工單

select x.inventory ,s.shop_order

from inventory x, swrtable s

where x.inventory in (invlist.inventory) /*替換爲invlist條碼號*/

and s.swrline = x.swr_num

and s.item = x.item

v14: and x. QTY_ON_HAND>0

循環返回的工單號並且和選擇的工單號不一致則報錯 1171條碼專屬工單爲%s,只能爲該工單所用

否則繼續往下執行校驗

 

11.3.2 判斷是否存在工單專屬swr物料

select inv.inventory, inv.item

from bom b, swrtable s, inventory inv, routing r

where s.shop_order = b.shop_order

and s.item = b.component_gbo

and inv.item = b.component_gbo

and r.shop_order = b.shop_order

and r.erp_step = b.erp_step

and inv.swr_num = s.swrline

and inv.enabled = 1

and inv.qty_on_hand > 0

and inv.inventory_status = '102'

and b.shop_order = '222700094510' /*替換爲所選工單*/

and r.work_center = '11300201' /*替換爲當前產線*/

and r.operation = 'YG033' /*替換爲當前工序*/

and inv.inventory not in (invlist.inventory) /*替換爲invlist條碼號*/

and not exists (select 1

from item_resource_bind_new i

where clear_date_time is null

and i.inventory = inv.inventory)

 

如果返回行數>0 則提示 1172 存在工單專屬條碼%s,請先掃碼使用

返回0行則 繼續往下執行

V19start

查詢找工單參數

SELECT CHOOSE_SHOP_ORDER FROM WORK_CENTER x WHERE WORK_CENTER = '11300321'需替換

如果返回值=2 執行下面的校驗

select /*x.resrce, x.curr_order_resrce, io.**/

distinct io.shop_order  當前生產工單號

from item_resource_bind_new x, resrce r, item_order_bind_new io

where x.curr_order_resrce = r.curr_order_resrce

      and r.resrce = 'SC1020100110' /*需替換*/

      and x.clear_date_time is null

      and io.bindkey = x.key

如果選擇的工單 不在 當前生產工單號中 則報錯1249 "選擇工單不在當前生產工單號中"

 

 

 

V19end

 

11.3.8 上料校驗完成 執行寫表操作

 

 

 

 

13.記錄上料歷史表 ITEM_RESOURCE_BIND_NEW

SITE

NVARCHAR2(255)

N

  

工廠

 當前工廠

WORK_CENTER

NVARCHAR2(255)

N

  

所屬產線

 畫面產線

OPERATION

NVARCHAR2(255)

Y

  

工序

 畫面工序

RESRCE

NVARCHAR2(255)

N

  

資源

 畫面掃碼資源

KEY

NUMBER

N

  

上料批次

 先執行 select distinct key

from ITEM_RESOURCE_BIND_NEW t, inventory inv

where t.item = inv.item

and nvl(t.so_num, ' ') = nvl(inv.so_num, ' ')

and nvl(t.wbs_num, ' ') = nvl(inv.wbs_num, ' ')

and nvl(t.so_line_num, 0) = nvl(inv.so_line_num, 0)

and inv.inventory = '1000043191103902A2211250022' /*需替換爲畫面條碼*/

and clear_date_time is null

返回行數0 select nvl(max(key),0) + 1 from ITEM_RESOURCE_BIND_NEW t

INVENTORY

NVARCHAR2(255)

N

  

庫存條碼BO/在制條碼

 畫面條碼

ITEM

NVARCHAR2(255)

N

  

物料號

 當前條碼物料號

SO_LINE_NUM

NUMBER

Y

  

銷售訂單行號

 當前掃描條碼 銷售訂單號SO_NUM

SO_NUM

NVARCHAR2(255)

Y

  

銷售訂單號

  當前掃描條碼 銷售訂單行SO_LINE_NUM

WBS_NUM

NVARCHAR2(255)

Y

  

WBS編號

  當前掃描條碼 WBS_NUM

SWR_NUM

NVARCHAR2(255)

Y

  

SWR編號

  當前掃描條碼 SWR_NUM

QTY_ON_HAND

NUMBER(38,6)

N

  

現有量

 當前掃描條碼QTY_ON_HAND

SCAN_TYPE

NVARCHAR2(255)

N

  

掃碼類型F物料W在制

 當前條碼的類型

CONTAINER_DATA

NVARCHAR2(255)

Y

  

容器BO

 如果有靠近條碼的容器則寫入

DATAFROM

NVARCHAR2(255)

N

  

數據來源

 寫入的程序類

CLEAR_DATE_TIME

DATE

N

 

清線時間

 V13 select scan_check from item x where site = '1130' /*替換爲當前工廠*/

and item = '1000150636' /*替換爲上料料號*/

=2 則 寫入 sysdate

 

 

14.1 寫當前生產歷史表 ITEM_ORDER_BIND_NEW

如果 RESRCE BINDKEY SHOP_ORDER 三個爲主鍵已經存在 則不插入

 

ID

NUMBER

N

  

Always

流水碼

  

BINDKEY

NUMBER

N

  

  

物料綁定KEY

 ITEM_RESOURCE_BIND_NEW.key

WORK_CENTER

NVARCHAR2(255)

N

  

  

所屬產線

畫面產線 

OPERATION

NVARCHAR2(255)

N

  

  

工序

 畫面工序

SHOP_ORDER

NVARCHAR2(255)

N

  

  

工單

 前端傳過來的 工單號 多個工單號循環插行

ERP_CONTROL_KEY_GROUP

NUMBER(38)

Y

0

  

僅關鍵工序排序

 前端穿過來的每個工單對應ERP_CONTROL_KEY_GROUP

DATA_FROM

NVARCHAR2(255)

Y

  

  

寫入程序類名稱

 寫入程序類名稱

CREATED_USER

NVARCHAR2(255)

Y

  

  

創建人

  

 

V10

14.2 with a as

(select distinct key

from imes.item_resource_bind_new x

where curr_order_resrce = 'SC1100600014' /*替換爲掃碼資源的當前生產資源*/

and clear_date_time is null),

b as

(select distinct key, shop_order, erp_control_key_group from item_order_bind_new x, a where bindkey in (select * from a))

select *

from b

where (key, shop_order) not in

(select bindkey, shop_order from item_order_bind_new x where bindkey in (select * from a))

 

循環記錄集 插表

ID

NUMBER

N

  

Always

流水碼

  

BINDKEY

NUMBER

N

  

  

物料綁定KEY

 查詢到的key

WORK_CENTER

NVARCHAR2(255)

N

  

  

所屬產線

畫面產線 

OPERATION

NVARCHAR2(255)

N

  

  

工序

 畫面工序

SHOP_ORDER

NVARCHAR2(255)

N

  

  

工單

 查詢到的工單

ERP_CONTROL_KEY_GROUP

NUMBER(38)

Y

0

  

僅關鍵工序排序

 查詢到額ERP_CONTROL_KEY_GROUP

DATA_FROM

NVARCHAR2(255)

Y

  

  

寫入程序類名稱

 寫入程序類名稱

CREATED_USER

NVARCHAR2(255)

Y

  

  

創建人

  

 

 

 

15.1 掃碼的是 條碼 則查詢是否有上層容器,調用 每二次解綁 來解綁條碼和上層容器的關係,並記錄頂層容器,再次查詢,看返回報文是否包含 "loadObjectType"="MATERIAL_LOT" 如果不包含 則調用 第一次解綁進行全面解綁

掃碼的是 容器 則調用 每二次解綁 來解綁容器和下層條碼的關係,並記錄頂層容器,再次查詢,看返回報文是否包含 "loadObjectType"="MATERIAL_LOT" 如果不包含 則調用 第一次解綁進行全面解綁

 

調用容器解綁接口,a)解綁選擇的容器與頂層容器的關係,b)並解綁選擇的容器與容器上的條碼關係

a)第一次解綁:

字段

名稱

取值邏輯

 

解綁容器

容器所綁定的頂層容器

 

解綁對象

用戶選擇的下層容器

 

解綁對象類型

CONTAINER

 

解綁類型

3-指定解綁

 

工號

PDA登錄賬號

b)第二次解綁:

字段

名稱

取值邏輯

 

解綁容器

條碼所綁定的下層容器

 

解綁對象

用戶選擇的容器上的條碼

 

解綁對象類型

MATERIAL_LOT

 

解綁類型

2-僅解綁下層

 

工號

PDA登錄賬號

 

V8-2 start 15.2 如果是在制條碼進站 則 查詢總數量

則查詢

select sum(qty) qty

from imes.shop_order_manufacture_report x

where inventory_bo = '232400001110-2/3-YG014-0002' /*替換爲在制條碼*/

and in_out = 1

如果 步驟2.2 條碼信息. QTY_ON_HAND=qty 則需要進行解綁

第一次解綁:

字段

名稱

取值邏輯

 

解綁容器

條碼所綁定的下層容器

 

解綁對象

用戶選擇的容器上的條碼

 

解綁對象類型

EO

 

解綁類型

2-僅解綁下層

 

工號

PDA登錄賬號

 

頂層容器和掃碼容器的解綁

第二次解綁:

字段

名稱

取值邏輯

 

解綁容器

容器所綁定的頂層容器

 

解綁對象

用戶選擇的下層容器

 

解綁對象類型

CONTAINER

 

解綁類型

3-指定解綁

 

工號

PDA登錄賬號

V8-2 end

 

 

 

 

 

 

 

 

V11 start: 已綁清單 按鈕 邏輯

點按鈕後 彈出表格

取數邏輯:

select inventory, x.item, i.description, qty_on_hand, container_data, x.created_date_time

from item_resource_bind_new x, item i

where resrce = 'SC1600600001'

and i.item = x.item

and i.site = x.site

and x.clear_date_time is null

order by x.created_date_time desc

 

 

雙擊表格行後 彈出

 

容器文本框 掃碼後 需要查詢容器信息,如果非空則報錯 1190 容器非空不可裝載

 

點擊解綁 執行下面動作

 

0. Select id,key

from item_resource_bind_new

where resrce = 'SC1100600022' 需替換

and inventory = 'DJFCS1000019956100003' 需替換

and CLEAR_DATE_TIME is null

獲取 key 然後 SELECT x.*,x.ROWID FROM IMES.ITEM_RESOURCE_BIND_NEW x WHERE "KEY" = 16

1.如果返回行數 =1 則 刪除 工單選擇記錄 Delete ITEM_ORDER_BIND_NEW where bindkey =#{key}

 

2.始終執行 刪除上料記錄 Delete ITEM_RESOURCE_BIND_NEW where id=#{id}

 

3.查詢條碼原綁定關係,進行解綁,(條碼和 靠近的容器之間,靠近的容器和頂層容器之間)

 

4.如果解綁畫面用戶有新輸入容器 則還需要進行容器綁定

對 條碼和容器 調用 容器平臺進行綁定

http://10.30.35.155:8088/services/containerIfaceService?wsdl

 

對象類型:①EO 在制
        ②CONTAINER 容器
        ③MATERIAL_LOT 條碼

 

 

 

V11 end

 

 

 

V12 start

 

 

當前工單 改爲 已綁工單

點擊後 提取數據顯示於彈出的頁面

 

數據提取邏輯

select distinct i.item, i.description, x.key /*, inv.so_num, inv.so_line_num, inv.wbs_num*/

from item_resource_bind_new x, inventory inv, item i

where inv.inventory = x.inventory

and i.item = inv.item

and inv.site = i.site

and x.clear_date_time is null

and resrce = 'SC1100600022' /*替換爲畫面資源*/

order by key

 

點上面表格 提取數據到下面表格

數據提取邏輯

with t0 as

(select distinct i.item, i.description, x.key

from item_resource_bind_new x, inventory inv, item i

where inv.inventory = x.inventory

and i.item = inv.item

and inv.site = i.site

and x.clear_date_time is null

and x.curr_order_resrce = (select curr_order_resrce from resrce where resrce = 'SC1100600022' /*替換爲畫面資源*/

)),

t1 as

(select x.shop_order from item_order_bind_new x where bindkey = 21 /*需替換*/

),

a as

(select b.shop_order, count(b.shop_order) over(partition by b.shop_order) cc

from bom b, shop_order s, routing r

where s.shop_order = b.shop_order

and r.shop_order = s.shop_order

and r.erp_step = b.erp_step

and s.status = '501'

and b.back_flush = 'X'

and b.enabled = 1

and b.component_gbo in (select item from t0)

and r.work_center = (select work_center from resrce where resrce = 'SC1100600022' /*替換爲畫面資源*/

)),

b as

(select distinct shop_order from a where cc = (select max(cc) from a))

select s.shop_order, planned_item, qty_ordered, planned_start_date, planned_comp_date, nvl2(t1.shop_order, 1, 0) icheck

from b, shop_order s, t1

where b.shop_order = s.shop_order

and s.shop_order = t1.shop_order(+)

order by sign(nvl(qty_done, 0)) desc, planned_start_date

 

icheck 列 =1 則 複選框 勾選 併爲灰色

 

勾選 工單 複選框 執行 9.3的檢查 檢查報錯則取消勾選 1194 所選工單于當前資源所綁物料互斥

 

 

點確定按鈕

 

寫表 ITEM_ORDER_BIND_NEW

       

BINDKEY

NUMBER

N

  

  

物料綁定KEY

 上面表格選擇的key

WORK_CENTER

NVARCHAR2(255)

N

  

  

所屬產線

畫面產線 

OPERATION

NVARCHAR2(255)

N

  

  

工序

 畫面工序

SHOP_ORDER

NVARCHAR2(255)

N

  

  

工單

 前端傳過來的 工單號 多個工單號循環插行

ERP_CONTROL_KEY_GROUP

NUMBER(38)

Y

0

  

僅關鍵工序排序

 select erp_control_key_group

from routing x

where shop_order = '222700059210' /*替換爲工單*/

and operation = 'DY002' /*替換爲工序*/

DATA_FROM

NVARCHAR2(255)

Y

  

  

寫入程序類名稱

 寫入程序類名稱

CREATED_USER

NVARCHAR2(255)

Y

  

  

創建人

  

 

 

 

V12 end

流程圖

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章