CREATE OR REPLACE PACKAGE UIF023010 IS -- Author : SJW -- Created : 2008-11-21 19:42:17 --update time : 2009-03-07 08:30:40 -- Purpose : PROCEDURE INSSCH_MILL_D; PROCEDURE CLEAR; PROCEDURE ADJUSTROLLSLABSEQBYWTHDESC; PROCEDURE I_SCH_MILL(P_SLAB_NO TBG02_SLAB_COMM.SLAB_NO%TYPE); PROCEDURE I_TBF02_SCH_ROLL; PROCEDURE REP_UPSLAB(P_SLAB_NO TBF02_SCH_MILL.SLAB_NO%TYPE, P_REG_ID VARCHAR); /* PROCEDURE SLAB_REP ( P_MAT_NO IN VARCHAR ,P_ORD_NO IN TBE02_ORD_PRC.ORD_NO%TYPE ,P_ORD_SEQ IN TBE02_ORD_PRC.ORD_SEQ%TYPE ,P_REG_ID IN VARCHAR );*/ PROCEDURE SLAB_REP_EACHOTHER(P_SLAB_NO_DOWN TBG02_SLAB_COMM.SLAB_NO%TYPE, P_SLAB_NO_UP TBG02_SLAB_COMM.SLAB_NO%TYPE, P_REG_ID VARCHAR); PROCEDURE SLAB_ORD_REP(P_REG_ID VARCHAR, P_RTN_MSG OUT VARCHAR); PROCEDURE REP_UP_SLAB_INFOS; END UIF023010; / CREATE OR REPLACE PACKAGE BODY UIF023010 IS /************************************************************************/ /* PACKAGE UIF023010 Author: SunJiawang */ /************************************************************************/ /* DESCRIPTION 编制CCR */ /************************************************************************/ /* UPD_TIME | WHO | PROGRAM | CONTTENT /* 09-08-10 SUNJIAWANG 增加 SLAB_ORD_REP /* /* 09-08-10 SUNJIAWANG SLAB_ORD_REP 增加对Z33跺位的排除 /* /************************************************************************/ CURSOR CURSLABCOMMD IS SELECT B.SLAB_EDT_SEQ, A.SLAB_CUT_SEQ, A.ORD_THK, A.ORD_WTH, A.ORD_LEN, A.ORD_WGT, C.ORD_UNIT_WGT_MIN, C.ORD_UNIT_WGT_MAX, A.COIL_INDIA, A.COIL_OUTDIA, A.ORD_NO, A.ORD_SEQ, A.ORD_FL FROM TBG02_SLAB_COMM_D A, (SELECT T.SLAB_NO, T.SLAB_EDT_SEQ FROM TBF02_SCH_MILL T WHERE T.SLAB_EDT_SEQ IN (SELECT T.SLAB_EDT_SEQ FROM TBF02_SCH_MILL T WHERE T.SLAB_EDT_SEQ NOT IN (SELECT SLAB_EDT_SEQ FROM TBF02_SCH_MILL_D))) B, TBE02_ORD_PRC C WHERE A.SLAB_NO = B.SLAB_NO AND A.ORD_NO = C.ORD_NO AND A.ORD_SEQ = C.ORD_SEQ ORDER BY B.SLAB_EDT_SEQ ASC; TYPE REC_SLABCOMMD_TYPE IS RECORD( P_SLAB_EDT_SEQ TBF02_SCH_MILL.SLAB_EDT_SEQ %TYPE, /*炉次编制号*/ P_SLAB_CUT_SEQ TBG02_SLAB_COMM_D.SLAB_CUT_SEQ %TYPE, /*炉次内顺序*/ P_ORD_THK TBG02_SLAB_COMM_D.ORD_THK %TYPE, P_ORD_WTH TBG02_SLAB_COMM_D.ORD_WTH %TYPE, P_ORD_LEN TBG02_SLAB_COMM_D.ORD_LEN %TYPE, P_ORD_WGT TBG02_SLAB_COMM_D.ORD_WGT %TYPE, P_ORD_WGT_MIN TBE02_ORD_PRC.ORD_UNIT_WGT_MIN %TYPE, P_ORD_WGT_MAX TBE02_ORD_PRC.ORD_UNIT_WGT_MAX %TYPE, P_ORD_INDIA TBG02_SLAB_COMM_D.COIL_INDIA %TYPE, P_ORD_OUTDIA TBG02_SLAB_COMM_D.COIL_OUTDIA %TYPE, P_ORD_NO TBG02_SLAB_COMM_D.ORD_NO %TYPE, P_ORD_SEQ TBG02_SLAB_COMM_D.ORD_SEQ %TYPE, P_ORD_FL TBG02_SLAB_COMM_D.ORD_FL %TYPE); REC_SLABCOMMD REC_SLABCOMMD_TYPE; PROCEDURE INSSCH_MILL_D IS BEGIN OPEN CURSLABCOMMD; LOOP FETCH CURSLABCOMMD INTO REC_SLABCOMMD; EXIT WHEN CURSLABCOMMD %NOTFOUND; INSERT INTO TBF02_SCH_MILL_D (SLAB_EDT_SEQ, COIL_CUT_SEQ, ORD_THK, ORD_WTH, ORD_LEN, ORD_WGT, ORD_WGT_MIN, ORD_WGT_MAX, ORD_INDIA, ORD_OUTDIA, ORD_NO, ORD_SEQ, ORD_FL) VALUES (REC_SLABCOMMD.P_SLAB_EDT_SEQ, REC_SLABCOMMD.P_SLAB_CUT_SEQ, REC_SLABCOMMD.P_ORD_THK, REC_SLABCOMMD.P_ORD_WTH, REC_SLABCOMMD.P_ORD_LEN, REC_SLABCOMMD.P_ORD_WGT, REC_SLABCOMMD.P_ORD_WGT_MIN, REC_SLABCOMMD.P_ORD_WGT_MAX, REC_SLABCOMMD.P_ORD_INDIA, REC_SLABCOMMD.P_ORD_OUTDIA, REC_SLABCOMMD.P_ORD_NO, REC_SLABCOMMD.P_ORD_SEQ, REC_SLABCOMMD.P_ORD_FL); END LOOP; CLOSE CURSLABCOMMD; END; --由宽到窄调整轧辊里顺序 PROCEDURE ADJUSTROLLSLABSEQBYWTHDESC IS CURSOR CURSCHMILL IS SELECT ROWNUM, A.SLAB_EDT_SEQ, A.ROLL_SLAB_SEQ FROM (SELECT T.ROWID, ROWNUM, T.SLAB_EDT_SEQ, T.ROLL_SLAB_SEQ FROM TBF02_SCH_MILL T, TBB01_ORD_PROD C, TBE02_ORD_PRC E WHERE T.ORD_NO = C.ORD_NO(+) AND T.ORD_SEQ = C.ORD_SEQ(+) AND E.ORD_NO = T.ORD_NO AND E.ORD_SEQ = T.ORD_SEQ ORDER BY C.WTH_AIM DESC, C.HOT_THK_AIM DESC, E.DEL_TO_DATE ASC, NVL(E.EMGMTR_NMG_CLF, 'N') DESC, T.CUR_LOAD_LOC DESC) A; TYPE SCHMILLTYPE IS RECORD( P_ROWNUM NUMBER, P_SLAB_EDT_SEQ TBF02_SCH_MILL.SLAB_EDT_SEQ %TYPE, P_ROLL_SLAB_SEQ TBF02_SCH_MILL.ROLL_SLAB_SEQ %TYPE); REC_SCH_MILL SCHMILLTYPE; BEGIN OPEN CURSCHMILL; LOOP EXIT WHEN CURSCHMILL %NOTFOUND; FETCH CURSCHMILL INTO REC_SCH_MILL; UPDATE TBF02_SCH_MILL SET ROLL_SLAB_SEQ = REC_SCH_MILL.P_ROWNUM WHERE SLAB_EDT_SEQ = REC_SCH_MILL.P_SLAB_EDT_SEQ; END LOOP; CLOSE CURSCHMILL; END; PROCEDURE CLEAR IS BEGIN DELETE FROM TBF02_SCH_MILL T WHERE T.SLAB_EDT_SEQ > 0; DELETE FROM TBF02_SCH_MILL_D T WHERE T.SLAB_EDT_SEQ > 0; DELETE FROM TBF02_SCH_ROLL A WHERE A.ROLL_NO = 'A0001'; COMMIT; END; PROCEDURE I_SCH_MILL(P_SLAB_NO TBG02_SLAB_COMM.SLAB_NO%TYPE) IS BEGIN INSERT INTO TBF02_SCH_MILL M SELECT (SELECT NVL(MAX(SLAB_EDT_SEQ), 0) + 1 FROM TBF02_SCH_MILL) SLAB_EDT_SEQ -- 板坯编制号 , A.SLAB_NO -- 板坯号 , '' -- 钢卷号 , 'A0001' -- 轧辊号 , (SELECT NVL(MAX(ROLL_SLAB_SEQ), 0) + 1 FROM TBF02_SCH_MILL) ROLL_SLAB_SEQ -- 轧辊内顺序 , '' -- LOT号 , 0 -- LOT内钢卷个数 , 0 -- LOT内钢卷编号 -- A.PRODNM_CD -- 产品代码 ---------------------------------------------------------------------------------------------------- , H.PRDNM_CD PRODNM_CD -- 产品代码 --modify by sjw --desc: 扎制计划应该传送扎制模式 而不是产品代码(梅贵平要求) -------------------------------------------------------------------------------------------------- , A.STL_GRD -- 钢号 , D.FAC_STL_GRP -- 钢号组 , A.SLAB_THK -- 板坯厚度 , A.SLAB_WTH -- 板坯宽度 , A.SLAB_LEN -- 板坯长度 , A.SLAB_WGT -- 板坯重量 , '0' SLAB_TAPER -- 调宽有无代码 , A.SLAB_WTH SLAB_WTH_HEAD -- 板坯HEAD 宽度 , A.SLAB_WTH SLAB_WTH_TAIL -- 板坯TAIL 宽度 , 0 -- 宽度变更开始位置 , 0 -- 宽度变更部分长度 , C.THK_AIM -- 厚度目标 , (SELECT T.THK_GRP_CD FROM TBF02_ROLL_THK_GRP T -- 厚度组代码 WHERE T.PLT = 'H' AND A.INSTR_COIL_THK >= T.MINI AND A.INSTR_COIL_THK < T.MAXI) THK_GRP_CD, C.HOT_THK_AIM -- 热厚度AIM , C.HOT_THK_MIN -- 热厚度MIN , C.HOT_THK_MAX -- 热厚度MAX , C.WTH_AIM -- 宽度AlM , C.WTH_MIN -- 宽度MIN , C.WTH_MAX -- 宽度MAX , (SELECT T.WTH_GRP_CD FROM TBF02_ROLL_WTH_GRP T -- 宽度组代码 WHERE T.PLT = 'H' AND A.INSTR_COIL_WTH >= T.MINI AND A.INSTR_COIL_WTH < T.MAXI) WTH_GRP_CD, B.ORD_LEN, B.ORD_WGT, 'C' -- 热送代号 , A.ORD_NO -- 合同号 , A.ORD_SEQ -- 订单号 , E.ORD_USEAGE_CD -- 订单用途代码 , A.SPEC_ABBSYM -- 标准号 , E.ORDCUST_CD -- 客户代码 , E.CUST_CD -- 客户代码 , E.DEST_CD -- 目的地代码 , E.DEL_TO_DATE -- 交货期 , E.UST_CD -- UST区分 , 'H' -- 去向 , A.INSTR_COIL_THK -- 订单厚度 , A.INSTR_COIL_WTH -- 订单宽度 , A.INSTR_COIL_WGT -- 订单重量 , E.ORD_UNIT_WGT_MIN -- 订单单重下限 , E.ORD_UNIT_WGT_MAX -- 订单单重上限 , A.INSTR_COIL_INDIA -- 订单内径 , A.INSTR_COIL_OUTDIA -- 订单外径 , E.PACK_METHOD -- 包装方法 , '' -- 轧制工艺流程 , E.SPM_PROC_YN -- 平整分卷指定判断 , B.COIL_CUT_CNT -- 刚卷分割数 , '' -- 目标加热温度 , '' -- 目标出炉温度------------------------------------------------------------------------------------------------------------------- , (SELECT NVL(F.FUR_TME, 0) FROM TBF02_FUR_TIME F WHERE F.PLT = 'H' AND F.FUR_LINE = 1 AND F.STL_GRD = A.STL_GRD AND F.SLAB_THK_MIN <= A.SLAB_THK AND F.SLAB_THK_MAX > A.SLAB_THK AND F.HCR_CLF = 'C') FUR_TME, '' -- 轧制时间 , A.CUR_LOAD_LOC -- 堆置位置 , '' -- 计划加热炉装炉日期 , '' -- 计划轧制时间 , '' -- 错误 , 'A' -- 状态区分 , '' -- 标识 , '' --SLAB_NO_DOWN_LOCK , '' --LOAD_LOC_DOWN_LOCK , '' --YARD_LOCK_YN FROM TBG02_SLAB_COMM A, TBD00_STLGRD D, TBB01_ORD_HEAD H, TBE02_ORD_PRC E, (SELECT SLAB_NO, COUNT(SLAB_CUT_SEQ) COIL_CUT_CNT, SUM(ORD_LEN) ORD_LEN, SUM(ORD_WGT) ORD_WGT FROM TBG02_SLAB_COMM_D GROUP BY SLAB_NO) B, TBB01_ORD_PROD C WHERE A.SLAB_NO = B.SLAB_NO AND A.SLAB_NO = P_SLAB_NO AND A.SLAB_NO NOT IN (SELECT SLAB_NO FROM TBF02_SCH_MILL) AND A.STL_GRD = D.FAC_STL_GRD(+) AND A.ORD_NO = C.ORD_NO(+) AND A.ORD_SEQ = C.ORD_SEQ(+) AND A.ORD_NO = H.ORD_NO(+) AND A.ORD_SEQ = H.ORD_SEQ(+) AND E.ORD_NO = A.ORD_NO AND E.ORD_SEQ = A.ORD_SEQ AND A.SLAB_RT IN ('H', 'C') AND A.CUR_PROG_CD = 'RBA' AND A.SLAB_STAT = '2' AND A.ORD_FL = '1'; END; PROCEDURE I_TBF02_SCH_ROLL IS BEGIN INSERT INTO TBF02_SCH_ROLL SELECT A.ROLL_NO, --轧辊号 A.WTH_GRP_CD, --宽度组代码 C.MINI, --宽度组下限 C.MAXI, --宽度组上限 '', --钢号组 COUNT(A.SLAB_EDT_SEQ), --板坯编制数 SUM(A.SLAB_WGT), --板坯编制重量 SUM(B.ORD_LEN), --轧钢总长度 '0', --平整分卷数 TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS'), --CCR轧辊编制时间 '' FROM TBF02_SCH_MILL A, (SELECT SLAB_NO, SUM(ORD_LEN) ORD_LEN FROM TBG02_SLAB_COMM_D GROUP BY SLAB_NO) B, TBF02_ROLL_WTH_GRP C WHERE A.SLAB_NO = B.SLAB_NO AND A.WTH_GRP_CD = C.WTH_GRP_CD GROUP BY (A.ROLL_NO, A.WTH_GRP_CD, C.MINI, C.MAXI) ORDER BY WTH_GRP_CD DESC; END; /************************************************************************/ /* procedure SLAB_ORD_REP Author: SunJiawang */ /************************************************************************/ /* DESCRIPTION 将下面的跺位替换为上面的板坯 ,并对订单信息呼唤 */ /************************************************************************/ /* IN P_REG_ID 登陆用户 /* OUT P_RTN_MSG 返回错误信息 /************************************************************************/ PROCEDURE SLAB_ORD_REP(P_REG_ID VARCHAR, P_RTN_MSG OUT VARCHAR) IS VE_NULL EXCEPTION; CURSOR CUR_SCH_MILL IS SELECT SLAB_NO FROM TBF02_SCH_MILL WHERE CUR_LOAD_LOC NOT LIKE 'Z33%' --Z33 的可以随便堆放不同规格的板坯,因此不在替换范围 ORDER BY ROLL_SLAB_SEQ ASC; REC_SCH_MILL CUR_SCH_MILL%ROWTYPE; BEGIN COMM.INIT_RTN_MSG; UIF023020_TEST.CLEAR_YARD_LOCK_FLAG; OPEN CUR_SCH_MILL; LOOP FETCH CUR_SCH_MILL INTO REC_SCH_MILL; EXIT WHEN CUR_SCH_MILL%NOTFOUND; IF CUR_SCH_MILL%ROWCOUNT = 0 THEN RAISE VE_NULL; END IF; REP_UPSLAB(REC_SCH_MILL.SLAB_NO, P_REG_ID); END LOOP; CLOSE CUR_SCH_MILL; --将未被锁定的板坯锁定自己本身 UPDATE TBF02_SCH_MILL A SET A.SLAB_NO_DOWN_LOCK = SLAB_NO, A.LOAD_LOC_DOWN_LOCK = CUR_LOAD_LOC WHERE NVL(A.YARD_LOCK_YN, 'N') <> 'Y'; --将计划板坯的信息更换为替换板坯的信息 REP_UP_SLAB_INFOS; EXCEPTION WHEN VE_NULL THEN COMM.REC_ERR.P_TABLE := 'TBF02_SCH_MILL'; COMM.REC_ERR.P_ERR_PARAM1 := 'SLAB_NO'; COMM.REC_ERR.P_ERR_MSG := '没有记录'; COMM.CALL_ERRDO(COMM.REC_ERR.P_RTN_MSG, FALSE); WHEN COMM.PE THEN P_RTN_MSG := COMM.REC_ERR.P_RTN_MSG; WHEN OTHERS THEN COMM.CALL_OTHER_EXCEPTION_DO(P_RTN_MSG); END; /************************************************************************/ /* procedure REP_UPSLAB Author: SunJiawang */ /************************************************************************/ /* DESCRIPTION 订单信息互换 */ /************************************************************************/ /* create 090810 /* IN P_REG_ID 登陆用户 /* OUT P_RTN_MSG 返回错误信息 /************************************************************************/ PROCEDURE REP_UPSLAB(P_SLAB_NO TBF02_SCH_MILL.SLAB_NO%TYPE, P_REG_ID VARCHAR) IS LV_CUR_LOAD_LOC TBF02_SCH_MILL.CUR_LOAD_LOC%TYPE; --当前位置 LV_UP_CUR_LOAD_LOC TBF02_SCH_MILL.CUR_LOAD_LOC%TYPE; --当前位置最上层没有被锁定的位置 LV_UP_SLAB_NO TBF02_SCH_MILL.SLAB_NO%TYPE; --当前位置最上层没有被锁定的位置 BEGIN SELECT CUR_LOAD_LOC INTO LV_CUR_LOAD_LOC FROM TBG02_SLAB_COMM WHERE SLAB_NO = P_SLAB_NO; SELECT NVL(MAX(B.CUR_LOAD_LOC), 'NULL') INTO LV_UP_CUR_LOAD_LOC FROM TBG02_SLAB_COMM B, TBF02_SCH_MILL A, TBG04_SLAB_YARD C, TBE02_ORD_PRC D, (SELECT PROC_RATE FROM TBE01_PROC_RATE WHERE PROC_CD = 'R') R WHERE A.SLAB_NO = P_SLAB_NO AND B.ORD_NO = D.ORD_NO AND B.ORD_SEQ = D.ORD_SEQ AND SUBSTR(A.CUR_LOAD_LOC, 1, 6) = C.YARD_ADDR AND B.SLAB_NO = C.SLAB_NO AND B.CUR_LOAD_LOC = C.YARD_ADDR || C.STORELAY AND B.SLAB_STAT = '2' AND B.SLAB_RT IN ('H', 'C') AND B.CUR_LOAD_LOC LIKE 'Z%' ------------------------------------------------------------------------------------------ --同成分 同炉次 同牌号 符号尺寸 以及订单单重要求才可以替换 AND SUBSTR(A.SLAB_NO, 1, 10) = SUBSTR(B.SLAB_NO, 1, 10) AND B.SLAB_WTH BETWEEN D.ORD_WTH AND D.ORD_WTH + 100 AND (B.STL_GRD = D.STL_GRD) -- 同牌号 AND (B.SLAB_WGT * R.PROC_RATE / 100) BETWEEN D.ORD_UNIT_WGT_MIN AND D.ORD_UNIT_WGT_MAX AND (GF_NIB028720(B.SLAB_NO, D.ORD_NO, D.ORD_SEQ) = 'YY') -- 检查成分项目 ------------------------------------------------------------------------------------------- AND B.YARD_LOCK_YN IS NULL; IF (LV_UP_CUR_LOAD_LOC <> 'NULL') THEN SELECT NVL(X.SLAB_NO, 'XX'), NVL(X.CUR_LOAD_LOC, 'XX') INTO LV_UP_SLAB_NO, LV_UP_CUR_LOAD_LOC FROM TBG02_SLAB_COMM X WHERE X.CUR_LOAD_LOC = LV_UP_CUR_LOAD_LOC AND X.SLAB_STAT = '2' AND ROWNUM = 1; IF (LV_UP_SLAB_NO <> 'XX' AND LV_UP_CUR_LOAD_LOC <> 'XX') THEN UPDATE TBF02_SCH_MILL B SET B.SLAB_NO_DOWN_LOCK = LV_UP_SLAB_NO, B.LOAD_LOC_DOWN_LOCK = LV_UP_CUR_LOAD_LOC, B.YARD_LOCK_YN = 'Y' WHERE B.SLAB_NO = P_SLAB_NO; UPDATE TBG02_SLAB_COMM B SET B.YARD_LOCK_YN = 'Y' WHERE B.SLAB_NO = LV_UP_SLAB_NO; SLAB_REP_EACHOTHER(P_SLAB_NO, LV_UP_SLAB_NO, P_REG_ID); END IF; END IF; END; /************************************************************************/ /* procedure REP_UPSLAB Author: SunJiawang */ /************************************************************************/ /* DESCRIPTION 将上层板坯替换下层板坯,对订单信息互换 */ /************************************************************************/ /* create 090810 /* IN P_SLAB_NO_DOWN 上层板坯 /* IN P_SLAB_NO_UP 下层板坯 /************************************************************************/ PROCEDURE SLAB_REP_EACHOTHER(P_SLAB_NO_DOWN TBG02_SLAB_COMM.SLAB_NO%TYPE, P_SLAB_NO_UP TBG02_SLAB_COMM.SLAB_NO%TYPE, P_REG_ID VARCHAR) IS LV_ORD_NO_DOWN TBF02_SCH_MILL.ORD_NO%TYPE; LV_ORD_NO_UP TBF02_SCH_MILL.ORD_NO%TYPE; LV_ORD_SEQ_DOWN TBF02_SCH_MILL.ORD_SEQ%TYPE; LV_ORD_SEQ_UP TBF02_SCH_MILL.ORD_SEQ%TYPE; LV_REP_SUCCESS_YN VARCHAR(1) := ''; BEGIN SELECT DECODE(ORD_FL, '1', A.ORD_NO, 'XX'), DECODE(ORD_FL, '1', A.ORD_SEQ, 'XX') INTO LV_ORD_NO_DOWN, LV_ORD_SEQ_DOWN FROM TBG02_SLAB_COMM A WHERE A.SLAB_NO = P_SLAB_NO_DOWN AND A.SLAB_STAT = '2' AND ROWNUM = 1; SELECT DECODE(ORD_FL, '1', A.ORD_NO, 'XX'), DECODE(ORD_FL, '1', A.ORD_SEQ, 'XX') INTO LV_ORD_NO_UP, LV_ORD_SEQ_UP FROM TBG02_SLAB_COMM A WHERE A.SLAB_NO = P_SLAB_NO_UP AND A.SLAB_STAT = '2' AND ROWNUM = 1; IF P_SLAB_NO_DOWN <> P_SLAB_NO_UP THEN IF (LV_ORD_NO_DOWN <> 'XX' OR LV_ORD_SEQ_DOWN <> 'XX') THEN NIE03_SERVEAS.CHK_IS_SYN; NIE03_SERVEAS.SERVE_HIS('TM', P_SLAB_NO_UP, LV_ORD_NO_DOWN, LV_ORD_SEQ_DOWN, P_REG_ID); NIE03_SERVEAS.SLAB_SERVE(P_SLAB_NO_UP, LV_ORD_NO_DOWN, LV_ORD_SEQ_DOWN, P_REG_ID); --调用进程 NIE012070 OS_COMM.SAVE_ORD_STS('TM', P_SLAB_NO_UP, 'AutoRepSlabCurLoc'); LV_REP_SUCCESS_YN := 'Y'; END IF; IF LV_REP_SUCCESS_YN = 'Y' THEN IF (LV_ORD_NO_UP <> 'XX' AND LV_ORD_SEQ_UP <> 'XX') THEN OS_COMM.CHK_IS_SYN; NIE03_SERVEAS.SERVE_HIS('TM', P_SLAB_NO_DOWN, LV_ORD_NO_UP, LV_ORD_SEQ_UP, P_REG_ID); NIE03_SERVEAS.SLAB_SERVE(P_SLAB_NO_DOWN, LV_ORD_NO_UP, LV_ORD_SEQ_UP, P_REG_ID); --调用进程 NIE012070 OS_COMM.SAVE_ORD_STS('TM', P_SLAB_NO_DOWN, 'AutoRepSlabCurLoc'); END IF; END IF; END IF; END; /************************************************************************/ /* procedure SLAB_REP Author: SunJiawang */ /************************************************************************/ /* DESCRIPTION 板坯充当功能 */ /************************************************************************/ /* create 090810 /* IN P_MAT_NO 充当板坯 /* IN P_ORD_NO 充当订单号 /* IN P_ORD_SEQ 充当订单行 /************************************************************************/ /* PROCEDURE SLAB_REP ( P_MAT_NO IN VARCHAR ,P_ORD_NO IN TBE02_ORD_PRC.ORD_NO%TYPE ,P_ORD_SEQ IN TBE02_ORD_PRC.ORD_SEQ%TYPE ,P_REG_ID IN VARCHAR )IS BEGIN \* UPDATE TBG02_SLAB_COMM A SET BEF_PROG_CD = CUR_PROG_CD, BEF_PROG_CD_PGM = CUR_PROG_CD_PGM, BEF_PROG_CD_DTIME = CUR_PROG_CD_DTIME, CUR_PROG_CD = 'RBA', CUR_PROG_CD_PGM = 'NIE03_SERVEAS', CUR_PROG_CD_DTIME = TO_CHAR(SYSTIMESTAMP, 'YYYYMMDDHH24MISS'), ORD_FL = '1', NONORD_CAUSE_CD = '', NONORD_OCR_DTIME = '', MOD_ID = P_REG_ID, MOD_DTIME = TO_CHAR(SYSTIMESTAMP, 'YYYYMMDDHH24MISS'), ORG_ORD_NO = DECODE(ORD_FL,'1',ORD_NO,''), ORG_ORD_SEQ = DECODE(ORD_FL,'1',ORD_SEQ,''), (ORD_NO, ORD_SEQ, CUST_CD, ORDCUST_CD, ORD_USE_CD, PRODNM_CD, SF_METHOD, SPEC_ABBSYM, DEVLMT_DTIME, INSTR_COIL_THK, INSTR_COIL_WTH, INSTR_COIL_INDIA, INSTR_COIL_WGT, INSTR_COIL_LEN, INSTR_COIL_OUTDIA, SLAB_INGR_DEC_GRD) = (SELECT ORD_NO, ORD_SEQ, CUST_CD, ORDCUST_CD, ORD_USEAGE_CD, PRODNM_CD, SCARPING_PROC_YN, SPEC_ABBSYM, DEL_TO_DATE, ORD_THK, ORD_WTH, ORD_INDIA, (A.SLAB_WGT * C.PROC_RATE / 100), (A.SLAB_WGT * C.PROC_RATE / 100) / (B.ORD_THK * B.ORD_WTH * 7.85) * 1000000, SQRT(4 * (A.SLAB_WGT * C.PROC_RATE / 100) / (B.ORD_WTH / 1000000 * 7.85 * 3.14 ) + (B.ORD_INDIA * B.ORD_INDIA)), DECODE(GF_NIB028720(A.SLAB_NO, ORD_NO, ORD_SEQ), 'YY', '1', '2') FROM TBE02_ORD_PRC B, ( SELECT PROC_RATE FROM TBE01_PROC_RATE WHERE PROC_CD = 'R') C WHERE ORD_NO = P_ORD_NO AND ORD_SEQ = P_ORD_SEQ) WHERE SLAB_NO = P_MAT_NO;*\ UPDATE TBG02_SLAB_COMM A SET BEF_PROG_CD = CUR_PROG_CD, BEF_PROG_CD_PGM = CUR_PROG_CD_PGM, BEF_PROG_CD_DTIME = CUR_PROG_CD_DTIME, ----------------------------------------------------------------------------------------- BEF_STL_GRD = STL_GRD,--充当的时候记录牌号历史 MODIFY BY SJW 090813 ----------------------------------------------------------------------------------------- CUR_PROG_CD = 'RBA', CUR_PROG_CD_PGM = 'AutoRepSlabCurLoc', CUR_PROG_CD_DTIME = TO_CHAR(SYSTIMESTAMP, 'YYYYMMDDHH24MISS'), ORD_FL = '1', NONORD_CAUSE_CD = '', NONORD_OCR_DTIME = '', SLAB_INGR_DEC_GRD = '1', SLAB_SIZE_DEC_GRD = '1', EXTSHAPE_GRD = '1', MOD_ID = P_REG_ID, MOD_DTIME = TO_CHAR(SYSTIMESTAMP, 'YYYYMMDDHH24MISS'), --充当将当前订单写入原始订单 ORG_ORD_NO = DECODE(ORD_FL,'1',ORD_NO,''), ORG_ORD_SEQ = DECODE(ORD_FL,'1',ORD_SEQ,''), (ORD_NO, ORD_SEQ, CUST_CD, ORDCUST_CD, ORD_USE_CD, PRODNM_CD, SF_METHOD, SPEC_ABBSYM, DEVLMT_DTIME, INSTR_COIL_THK, INSTR_COIL_WTH, INSTR_COIL_INDIA, INSTR_COIL_WGT, INSTR_COIL_LEN, INSTR_COIL_OUTDIA,STL_GRD) = (SELECT ORD_NO, ORD_SEQ, CUST_CD, ORDCUST_CD, ORD_USEAGE_CD, PRODNM_CD, SCARPING_PROC_YN, SPEC_ABBSYM, DEL_TO_DATE, ORD_THK, ORD_WTH, ORD_INDIA, (A.SLAB_WGT * C.PROC_RATE / 100), (A.SLAB_WGT * C.PROC_RATE / 100) / (B.ORD_THK * B.ORD_WTH * 7.85) * 1000000, SQRT(4 * (A.SLAB_WGT * C.PROC_RATE / 100) / (B.ORD_WTH / 1000000 * 7.85 * 3.14 ) + (B.ORD_INDIA * B.ORD_INDIA)) , STL_GRD --DECODE(GF_NIB028720(A.SLAB_NO, ORD_NO, ORD_SEQ), 'YY', '1', '2') FROM TBE02_ORD_PRC B, ( SELECT PROC_RATE FROM TBE01_PROC_RATE WHERE PROC_CD = 'R') C WHERE ORD_NO = P_ORD_NO AND ORD_SEQ = P_ORD_SEQ) WHERE SLAB_NO = P_MAT_NO; DELETE TBG02_SLAB_COMM_D WHERE SLAB_NO = P_MAT_NO; INSERT INTO TBG02_SLAB_COMM_D ( SLAB_NO, SLAB_CUT_SEQ, SLAB_THK, SLAB_WTH, SLAB_LEN, ORD_THK, ORD_WTH, ORD_LEN, ORD_WGT, COIL_INDIA, COIL_OUTDIA, ORD_NO, ORD_SEQ, ORD_FL ) SELECT SLAB_NO, '01', SLAB_THK, SLAB_WTH, SLAB_LEN, INSTR_COIL_THK, INSTR_COIL_WTH, INSTR_COIL_LEN, INSTR_COIL_WGT, INSTR_COIL_INDIA, INSTR_COIL_OUTDIA, ORD_NO, ORD_SEQ, '1' FROM TBG02_SLAB_COMM WHERE SLAB_NO = P_MAT_NO; END; */ /************************************************************************/ /* procedure REP_UP_SLAB_INFOS Author: SunJiawang */ /************************************************************************/ /* DESCRIPTION 删除最处编制的计划 替换为上层板坯的轧制计划 */ /************************************************************************/ /* create 090810 /************************************************************************/ PROCEDURE REP_UP_SLAB_INFOS IS CURSOR LV_CUR_LOCK_SLAB_NO IS SELECT A.SLAB_NO_DOWN_LOCK FROM TBF02_SCH_MILL A ORDER BY A.ROLL_SLAB_SEQ ASC; LV_REC_LOCK_SLAB_NO LV_CUR_LOCK_SLAB_NO%ROWTYPE; BEGIN OPEN LV_CUR_LOCK_SLAB_NO; --记录好锁定板坯信息后,删除轧制计划临时表,将锁定的板坯编入轧制计划 DELETE FROM TBF02_SCH_MILL; DELETE FROM TBF02_SCH_MILL_D; LOOP FETCH LV_CUR_LOCK_SLAB_NO INTO LV_REC_LOCK_SLAB_NO; EXIT WHEN LV_CUR_LOCK_SLAB_NO%NOTFOUND; I_SCH_MILL(LV_REC_LOCK_SLAB_NO.SLAB_NO_DOWN_LOCK); END LOOP; CLOSE LV_CUR_LOCK_SLAB_NO; --重新编制详细轧制计划 TBF02_SCH_MILL_D INSSCH_MILL_D; END; END UIF023010; /