|
- CREATE OR REPLACE PROCEDURE SFIS1.sp_oba_control (
- p_line IN VARCHAR2,
- DATA IN VARCHAR2,
- mygroup IN VARCHAR2,
- res OUT VARCHAR2
- )
- AS
- c_wip VARCHAR2 (25);
- c_model VARCHAR2 (25);
- c_mo VARCHAR2 (25);
- c_rate NUMBER (10, 2);
- c_hh NUMBER;
- c_cycle NUMBER;
- c_count NUMBER;
- c_defect NUMBER;
- c_serial_number_no NUMBER;
- c_shift VARCHAR2 (25);
- c_model_type VARCHAR2 (25);
- c_sn VARCHAR2 (25);
- c_group VARCHAR2 (25);
- c_groupname VARCHAR2 (25);
- c_wipgroup VARCHAR2 (25);
- c_linename VARCHAR2 (25);
- line VARCHAR2 (25);
- c_test_value2 NUMBER;
- scrap VARCHAR2 (1);
- c_found BOOLEAN;
- c_begin NUMBER;
- c_end NUMBER;
- c_qty NUMBER;
- c_debug varchar2(35);
- c_tmp varchar2(10);
- CURSOR getobaroute
- IS
- SELECT data3, data4, data2, qa_rate
- FROM sfis1.c_model_config_t
- WHERE model_name = c_model
- AND data3 = line
- AND data4 = mygroup
- AND CLASS = c_shift
- AND qa_rate <> '0';
- CURSOR debugstr
- IS
- SELECT substr(lpad(kp_order,3,'0'),-2,2)
- FROM sfis1.c_rand_order_t a
- WHERE a.model_name = c_model
- AND a.line_name = line
- AND a.group_name = mygroup
- AND TO_NUMBER (a.serial_number) BETWEEN 1 AND 10;
- BEGIN
- c_sn := DATA;
- res := 'OK, NO SN';
- SELECT mo_number, model_name, scrap_flag, group_name, wip_group,line_name
- INTO c_mo, c_model, scrap, c_group, c_wip,line
- FROM sfism4.r_wip_tracking_t
- WHERE serial_number = DATA AND ROWNUM = 1;
-
-
- c_shift := 'N';
- c_hh := TO_CHAR (SYSDATE, 'HH24');
- IF (c_hh >= 8 AND c_hh < 20)
- THEN
- c_shift := 'D';
- END IF;
- /*
- SELECT model_type
- INTO c_model_type
- FROM sfis1.c_model_desc_t
- WHERE model_name = c_model;
- */-- IF (c_model IN ('52-001523')) AND (mygroup = 'OBA1')
- --THEN
- -- select data3 line,
- -- data4 group,
- -- data2 wip
- -- from SFIS1.C_MODEL_CONFIG_T
- res := '';
- SELECT COUNT (1)
- INTO c_count
- FROM sfis1.c_model_config_t
- WHERE model_name = c_model
- AND data3 = line
- AND data4 = mygroup
- AND CLASS = c_shift
- AND qa_rate <> '0';
- IF (c_count = 0)
- THEN
- GOTO endproc;
- END IF;
- -- res := 'OK, NO CONFIG11';
- c_found := TRUE;
- c_begin := 0;
- c_end := 0;
- -- SELECT data3, data4, data2, qa_rate
- -- FROM sfis1.c_model_config_t
- -- WHERE model_name = c_model and data3=line AND data4 = mygroup and class=c_shift AND qa_rate <> '0';
- OPEN getobaroute;
- LOOP
- FETCH getobaroute
- INTO c_linename, c_groupname, c_wipgroup, c_rate;
- DBMS_OUTPUT.put_line ( c_linename
- || ' '
- || c_groupname
- || ' '
- || c_wipgroup
- || ' '
- || c_rate
- );
- EXIT WHEN getobaroute%NOTFOUND;
- -- EXIT WHEN c_found = TRUE;
- --c_rate := FLOOR (1 / c_rate);
- c_rate := FLOOR (c_rate);
- IF (c_rate > 100)
- THEN
- c_rate := 100;
- END IF;
- c_begin := c_end + 1;
- c_end := c_end + c_rate;
- SELECT COUNT (1)
- INTO c_count
- FROM sfism4.r_product_order_t
- WHERE serial_number = c_sn AND group_name = mygroup AND ROWNUM = 1;
- IF (c_count = 0) OR (NOT c_found)
- THEN
- c_found := FALSE;
- SELECT COUNT (1)
- INTO c_count
- FROM sfism4.r_product_order_t
- WHERE serial_number = c_sn AND group_name = mygroup AND ROWNUM = 1;
- IF (c_count = 0)
- THEN
- --SELECT SFIS1.QA_SEQUENCE.NEXTVAL into c_count FROM DUAL;
- SELECT COUNT (1)
- INTO c_count
- FROM sfism4.r_product_order_t
- WHERE model_name = c_model
- AND line_name = line
- AND data1 = c_shift
- AND group_name = mygroup AND ROWNUM=1;
- -- MO_NUMBER=C_MO ; -- NOT LINE ..
- IF (c_count = 0)
- THEN
- c_count := 101; -- set to more than 100
- c_cycle := 1;
- ELSE
- SELECT MAX (kp_order) + 1, MAX (kp_cycle)
- INTO c_count, c_cycle
- FROM sfism4.r_product_order_t
- WHERE model_name = c_model
- AND line_name = line
- AND data1 = c_shift
- AND group_name = mygroup ;
- --MO_NUMBER=C_MO ;
- END IF;
-
- /*INSERT INTO sfism4.r_product_order_t
- (serial_number, model_name, mo_number, line_name,
- group_name, work_time, kp_order, kp_cycle,
- wip_group, data1, data2
- )
- VALUES (c_sn, c_model, c_mo, line,
- mygroup, SYSDATE, c_count, c_cycle,
- c_wip, c_shift, 'SYANT'
- ); */
- res := 'OK, NO CONFIG11';
- IF ((c_count MOD 100) = 1)
- THEN
-
- INSERT INTO sfism4.r_product_order_t_bak
- SELECT *
- FROM sfism4.r_product_order_t
- WHERE model_name = c_model
- AND line_name = line
- AND data1 = c_shift
- AND group_name = mygroup and kp_cycle=c_cycle;
- /*delete
- FROM sfism4.r_product_order_t
- WHERE model_name = c_model
- AND line_name = line
- AND data1 = c_shift
- AND group_name = mygroup and kp_cycle=c_cycle ; */
-
-
- c_cycle:=c_cycle+1;
- -- get new random data now!
- DELETE FROM sfis1.c_rand_order_t
- WHERE model_name = c_model
- AND line_name = line
- AND group_name = mygroup;
- INSERT INTO sfis1.c_rand_order_t
- (serial_number, model_name, line_name, group_name,
- kp_order, kp_cycle)
- SELECT ROWNUM, c_model, line, mygroup, DATA, c_cycle
- FROM (SELECT DATA
- FROM sfis1.c_order_t
- ORDER BY DBMS_RANDOM.VALUE);
-
-
-
- END IF;
-
- INSERT INTO sfism4.r_product_order_t
- (serial_number, model_name, mo_number, line_name,
- group_name, work_time, kp_order, kp_cycle,
- wip_group, data1, data2
- )
- VALUES (c_sn, c_model, c_mo, line,
- mygroup, SYSDATE, c_count, c_cycle,
- c_wip, c_shift, 'SYANT'
- );
- /* INSERT INTO sfism4.r_product_order_t
- (serial_number, model_name, mo_number, line_name,
- group_name, work_time, kp_order, kp_cycle,
- wip_group, data1, data2
- )
- VALUES (c_sn, c_model, c_mo, line,
- mygroup, SYSDATE, c_count, c_cycle,
- c_wip, c_shift, 'SYANT'
- ); */
- END IF;
- SELECT kp_order
- INTO c_count
- FROM sfism4.r_product_order_t
- WHERE serial_number = c_sn
- AND line_name = line
- AND group_name = mygroup
- AND ROWNUM = 1;
-
- -----------------------
- c_debug:='';
- OPEN debugstr;
- LOOP
- FETCH debugstr INTO c_tmp;
- EXIT WHEN debugstr%NOTFOUND;
- c_debug:=c_debug||c_tmp||'-';
- END LOOP;
- CLOSE debugstr;
- uPDATE sfism4.r_product_order_t
- SET data2 = c_debug
- WHERE serial_number = c_sn
- AND line_name = line
- AND group_name = mygroup
- AND ROWNUM = 1;
- -------------------
- c_count := c_count MOD 100;
- if(c_count=0)then
- c_count:=100;
- end if;
- SELECT COUNT (1)
- INTO c_qty
- FROM sfis1.c_rand_order_t a
- WHERE a.model_name = c_model
- AND a.line_name = line
- AND a.group_name = mygroup
- AND a.kp_order = c_count
- AND TO_NUMBER (a.serial_number) BETWEEN c_begin AND c_end;
- -- UPDATE sfism4.r_product_order_t
- -- SET data2 = c_count || ' ' || c_begin || ' ' || c_end
- -- WHERE serial_number = c_sn; --------------
- --IF ((c_count MOD c_rate) = 0)
-
-
-
- IF (c_qty > 0)
- THEN
- -- UPDATE sfism4.r_product_order_t
- -- SET data2 = '55'
- -- WHERE serial_number = c_sn; --------------
- -- c_found := TRUE;
- UPDATE sfism4.r_product_order_t
- SET kp_flag = 1,
- kp_cycle = c_cycle,
- wip_group = c_wipgroup
- WHERE serial_number = c_sn AND group_name = mygroup
- AND ROWNUM = 1;
- UPDATE sfism4.r107
- SET wip_group = c_wipgroup,
- next_station = c_wipgroup,
- rework_no = 'OBA'
- WHERE serial_number = c_sn
- AND group_name = c_groupname
- AND error_flag = 0;
- INSERT INTO sfism4.r117
- SELECT *
- FROM sfism4.r107
- WHERE serial_number = c_sn;
- END IF;
- END IF;
- EXIT WHEN getobaroute%NOTFOUND;
- END LOOP;
- CLOSE getobaroute;
- -- res:='OK';
- <<endproc>>
- c_count := '';
- END;
- /
复制代码 |
|