Files
tiandihe/sql/PLTM.PDI_PLTM 表结构(1).txt
Joshi d8b142bb4a feat: 初始化HEFA-L2 PDI管理系统项目
添加前端Vue2项目结构,包括ElementUI集成、路由配置和API模块
实现后端FastAPI服务,包含Oracle数据库连接和PDI CRUD接口
添加OPC-UA轮询服务,支持跟踪图数据同步到Oracle
提供SQLite镜像数据库用于本地开发和快速查询
包含完整的部署脚本和文档说明
2026-04-09 16:05:20 +08:00

1155 lines
44 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

ALTER TABLE PLTM.PDI_PLTM
DROP PRIMARY KEY CASCADE;
DROP TABLE PLTM.PDI_PLTM CASCADE CONSTRAINTS;
CREATE TABLE PLTM.PDI_PLTM
(
SID NUMBER(10),
ROLLPROGRAMNB NUMBER(10),
SEQUENCENB NUMBER(3),
STATUS NUMBER(3) DEFAULT 0 NOT NULL,
SCHEDULE_CODE VARCHAR2(32 BYTE),
COILID VARCHAR2(32 BYTE) NOT NULL,
ENTRY_COIL_THICKNESS NUMBER(10,3),
ENTRY_COIL_THICKNESS_MAX NUMBER(10,3),
ENTRY_COIL_THICKNESS_MIN NUMBER(10,3),
ENTRY_COIL_WIDTH NUMBER(10,3),
ENTRY_COIL_WIDTH_MAX NUMBER(10,3),
ENTRY_COIL_WIDTH_MIN NUMBER(10,3),
ENTRY_COIL_WEIGHT NUMBER(10,3),
ENTRY_OF_COIL_LENGTH NUMBER(10,3),
ENTRY_OF_COIL_INNER_DIAMETER NUMBER(10,3),
ENTRY_OF_COIL_OUTER_DIAMETER NUMBER(10,3),
TRIMMING NUMBER(1),
TRIMMING_WIDTH NUMBER(10,3),
SMP_LENGTH NUMBER(10,3),
SMP_NUM NUMBER(10,3),
SMP_FRQ VARCHAR2(32 BYTE),
SMP_NUM_HEAD NUMBER(10,3),
SMP_NUM_MID NUMBER(10,3),
SMP_NUM_TAIL NUMBER(10,3),
PRECEDING_PROCESS_CODE VARCHAR2(32 BYTE),
NEXT_PROCESS_CODE VARCHAR2(32 BYTE),
HOT_MILL_DELIVERY_TEMP NUMBER(10,3),
FINISHED_COIL_TEMP NUMBER(10,3),
CROWN_AVERAGE NUMBER(10,3),
COIL_FLATNESS_AVERAGE NUMBER(10,3),
COIL_FLATNESS_MAX_VALUE NUMBER(10,3),
COIL_FLATNESS_MIN_VALUE NUMBER(10,3),
MATERIAL_YIELD_POINT NUMBER(10,3),
MATERIAL_TENSILE NUMBER(10,3),
HOTACTFMWEDGEAVG NUMBER(10,3),
WEIGHT_MODE VARCHAR2(32 BYTE),
DUMMY_COIL_MRK VARCHAR2(32 BYTE),
CUT_MODE VARCHAR2(32 BYTE),
OFF_GAUGE_HEAD_LENGTH NUMBER(10,3),
OFF_GAUGE_TAIL_LENGTH NUMBER(10,3),
EXIT_COIL_NO VARCHAR2(32 BYTE),
EXIT_COIL_WEIGHT NUMBER(10,3),
EXIT_COIL_WEIGHT_MAX NUMBER(10,3),
EXIT_COIL_WEIGHT_MIN NUMBER(10,3),
EXIT_COIL_THICKNESS NUMBER(10,3),
EXIT_COIL_THICKNESS_MAX NUMBER(10,3),
EXIT_COIL_THICKNESS_MIN NUMBER(10,3),
EXIT_COIL_WIDTH NUMBER(10,3),
EXIT_COIL_WIDTH_MAX NUMBER(10,3),
EXIT_COIL_WIDTH_MIN NUMBER(10,3),
WORK_ORDER_NO VARCHAR2(32 BYTE),
ORDER_QUALITY VARCHAR2(32 BYTE),
STEEL_GRADE VARCHAR2(32 BYTE),
SG_SIGN VARCHAR2(32 BYTE),
ORDER_THICKNESS NUMBER(10,3),
ORDER_THICKNESS_MAX NUMBER(10,3),
ORDER_THICKNESS_MIN NUMBER(10,3),
ORDER_WIDTH NUMBER(10,3),
ORDER_WIDTH_MAX NUMBER(10,3),
ORDER_WIDTH_MIN NUMBER(10,3),
SLEEVE_CODE_OF_COLD_COIL VARCHAR2(32 BYTE),
PACKING_TYPE_CODE VARCHAR2(32 BYTE),
THK_DS VARCHAR2(32 BYTE),
EXT_NUM_01 VARCHAR2(32 BYTE),
C NUMBER(10,3),
SI NUMBER(10,3),
MN NUMBER(10,3),
P NUMBER(10,3),
S NUMBER(10,3),
CU NUMBER(10,3),
NI NUMBER(10,3),
CR NUMBER(10,3),
MO NUMBER(10,3),
V NUMBER(10,3),
TI NUMBER(10,3),
SOL_AL NUMBER(10,3),
FE NUMBER(10,3),
MG NUMBER(10,3),
PB NUMBER(10,3),
SN NUMBER(10,3),
ZN NUMBER(10,3),
ZR NUMBER(10,3),
NA NUMBER(10,3),
LI NUMBER(10,3),
GA NUMBER(10,3),
CA NUMBER(10,3),
B NUMBER(10,3),
BE NUMBER(10,3),
BI NUMBER(10,3),
W NUMBER(10,3),
N NUMBER(10,3),
NB NUMBER(10,3),
TA NUMBER(10,3),
O NUMBER(10,3),
H NUMBER(10,3),
AR NUMBER(10,3),
AG NUMBER(10,3),
AS1 NUMBER(10,3),
CD NUMBER(10,3),
CL NUMBER(10,3),
CO NUMBER(10,3),
K NUMBER(10,3),
SB NUMBER(10,3),
SE NUMBER(10,3),
CREATED_BY VARCHAR2(32 BYTE),
CREATED_DT DATE,
CREATED_BY_NAME VARCHAR2(32 BYTE),
UPDATED_BY VARCHAR2(32 BYTE),
UPDATED_DT DATE,
UPDATED_BY_NAME VARCHAR2(32 BYTE),
SEND_FLAG VARCHAR2(32 BYTE),
SEND_DATE DATE,
TRANSACTION_ID VARCHAR2(32 BYTE),
VERSION NUMBER(9),
TEXT1 VARCHAR2(32 BYTE),
TEXT2 VARCHAR2(32 BYTE),
TEXT3 VARCHAR2(32 BYTE),
TEXT4 VARCHAR2(32 BYTE),
TEXT5 VARCHAR2(32 BYTE),
TOC DATE,
TOM DATE,
MOP VARCHAR2(60 BYTE),
POSITION NUMBER(8) DEFAULT 0,
CROSS_SECTION_AREA NUMBER(13,3),
UNCOILER_TENSION NUMBER(13,3),
LOOPER_TENSION_1 NUMBER(13,3),
PL_TENSION NUMBER(13,3),
LOOPER_TENSION_2 NUMBER(13,3),
LOOPER_TENSION_3 NUMBER(13,3),
METERWEIGHT NUMBER(13,3),
METER_D_OUTSIDE NUMBER(13,3),
METER_WIDTH NUMBER(13,3),
SCRAP_CUT_HEAD_LEN NUMBER(13,3),
SCRAP_CUT_TAIL_LEN NUMBER(13,3),
COILER_DIAMETER NUMBER(4),
L2_GRADE VARCHAR2(32 BYTE)
)
TABLESPACE USERS
RESULT_CACHE (MODE DEFAULT)
PCTUSED 0
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 20M
NEXT 1M
MAXSIZE UNLIMITED
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
FLASH_CACHE DEFAULT
CELL_FLASH_CACHE DEFAULT
)
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
COMMENT ON COLUMN PLTM.PDI_PLTM.SID IS '数据项ID,系统编码,由ORACLE Sequence自动产生的ID';
COMMENT ON COLUMN PLTM.PDI_PLTM.ROLLPROGRAMNB IS '生产批次号';
COMMENT ON COLUMN PLTM.PDI_PLTM.SEQUENCENB IS '批次号内顺序';
COMMENT ON COLUMN PLTM.PDI_PLTM.STATUS IS '状态';
COMMENT ON COLUMN PLTM.PDI_PLTM.SCHEDULE_CODE IS '计划号';
COMMENT ON COLUMN PLTM.PDI_PLTM.COILID IS '原料卷号';
COMMENT ON COLUMN PLTM.PDI_PLTM.ENTRY_COIL_THICKNESS IS '原料厚度';
COMMENT ON COLUMN PLTM.PDI_PLTM.ENTRY_COIL_THICKNESS_MAX IS '原料厚度最大值';
COMMENT ON COLUMN PLTM.PDI_PLTM.ENTRY_COIL_THICKNESS_MIN IS '原料厚度最小值';
COMMENT ON COLUMN PLTM.PDI_PLTM.ENTRY_COIL_WIDTH IS '原料宽度';
COMMENT ON COLUMN PLTM.PDI_PLTM.ENTRY_COIL_WIDTH_MAX IS '原料宽度最大值';
COMMENT ON COLUMN PLTM.PDI_PLTM.ENTRY_COIL_WIDTH_MIN IS '原料宽度最小值';
COMMENT ON COLUMN PLTM.PDI_PLTM.ENTRY_COIL_WEIGHT IS '原料重量';
COMMENT ON COLUMN PLTM.PDI_PLTM.ENTRY_OF_COIL_LENGTH IS '原料长度';
COMMENT ON COLUMN PLTM.PDI_PLTM.ENTRY_OF_COIL_INNER_DIAMETER IS '原料内径';
COMMENT ON COLUMN PLTM.PDI_PLTM.ENTRY_OF_COIL_OUTER_DIAMETER IS '原料外径';
COMMENT ON COLUMN PLTM.PDI_PLTM.TRIMMING IS '切边标记';
COMMENT ON COLUMN PLTM.PDI_PLTM.TRIMMING_WIDTH IS '切边后宽度';
COMMENT ON COLUMN PLTM.PDI_PLTM.SMP_LENGTH IS '取样长度';
COMMENT ON COLUMN PLTM.PDI_PLTM.SMP_NUM IS '取样数量';
COMMENT ON COLUMN PLTM.PDI_PLTM.SMP_FRQ IS '取样目的';
COMMENT ON COLUMN PLTM.PDI_PLTM.SMP_NUM_HEAD IS '头部取样个数';
COMMENT ON COLUMN PLTM.PDI_PLTM.SMP_NUM_MID IS '中部取样个数';
COMMENT ON COLUMN PLTM.PDI_PLTM.SMP_NUM_TAIL IS '尾部取样个数';
COMMENT ON COLUMN PLTM.PDI_PLTM.PRECEDING_PROCESS_CODE IS '上道机组';
COMMENT ON COLUMN PLTM.PDI_PLTM.NEXT_PROCESS_CODE IS '下道机组';
COMMENT ON COLUMN PLTM.PDI_PLTM.HOT_MILL_DELIVERY_TEMP IS '卷曲温度';
COMMENT ON COLUMN PLTM.PDI_PLTM.FINISHED_COIL_TEMP IS '终轧温度';
COMMENT ON COLUMN PLTM.PDI_PLTM.CROWN_AVERAGE IS '热轧卷凸度';
COMMENT ON COLUMN PLTM.PDI_PLTM.COIL_FLATNESS_AVERAGE IS '平直度目标值';
COMMENT ON COLUMN PLTM.PDI_PLTM.COIL_FLATNESS_MAX_VALUE IS '平直度最小';
COMMENT ON COLUMN PLTM.PDI_PLTM.COIL_FLATNESS_MIN_VALUE IS '平直度最大';
COMMENT ON COLUMN PLTM.PDI_PLTM.MATERIAL_YIELD_POINT IS '原料屈服强度';
COMMENT ON COLUMN PLTM.PDI_PLTM.MATERIAL_TENSILE IS '原料抗拉强度';
COMMENT ON COLUMN PLTM.PDI_PLTM.HOTACTFMWEDGEAVG IS '热轧卷楔度平均值';
COMMENT ON COLUMN PLTM.PDI_PLTM.WEIGHT_MODE IS '重量分卷模式';
COMMENT ON COLUMN PLTM.PDI_PLTM.DUMMY_COIL_MRK IS '过渡料标记';
COMMENT ON COLUMN PLTM.PDI_PLTM.CUT_MODE IS '剪切模式';
COMMENT ON COLUMN PLTM.PDI_PLTM.OFF_GAUGE_HEAD_LENGTH IS '头部超差长度';
COMMENT ON COLUMN PLTM.PDI_PLTM.OFF_GAUGE_TAIL_LENGTH IS '尾部超差长度';
COMMENT ON COLUMN PLTM.PDI_PLTM.EXIT_COIL_NO IS '出口卷号';
COMMENT ON COLUMN PLTM.PDI_PLTM.EXIT_COIL_WEIGHT IS '出口目标重量';
COMMENT ON COLUMN PLTM.PDI_PLTM.EXIT_COIL_WEIGHT_MAX IS '出口目标重量最大值';
COMMENT ON COLUMN PLTM.PDI_PLTM.EXIT_COIL_WEIGHT_MIN IS '出口目标重量最小值';
COMMENT ON COLUMN PLTM.PDI_PLTM.EXIT_COIL_THICKNESS IS '出口目标厚度';
COMMENT ON COLUMN PLTM.PDI_PLTM.EXIT_COIL_THICKNESS_MAX IS '出口目标厚度最大值';
COMMENT ON COLUMN PLTM.PDI_PLTM.EXIT_COIL_THICKNESS_MIN IS '出口目标厚度最小值';
COMMENT ON COLUMN PLTM.PDI_PLTM.EXIT_COIL_WIDTH IS '出口目标宽度';
COMMENT ON COLUMN PLTM.PDI_PLTM.EXIT_COIL_WIDTH_MAX IS '出口目标宽度最大值';
COMMENT ON COLUMN PLTM.PDI_PLTM.EXIT_COIL_WIDTH_MIN IS '出口目标宽度最小值';
COMMENT ON COLUMN PLTM.PDI_PLTM.WORK_ORDER_NO IS '合同号';
COMMENT ON COLUMN PLTM.PDI_PLTM.ORDER_QUALITY IS '钢级代码';
COMMENT ON COLUMN PLTM.PDI_PLTM.STEEL_GRADE IS '出钢标记';
COMMENT ON COLUMN PLTM.PDI_PLTM.SG_SIGN IS '外部牌号/钢种牌号';
COMMENT ON COLUMN PLTM.PDI_PLTM.ORDER_THICKNESS IS '订单厚度';
COMMENT ON COLUMN PLTM.PDI_PLTM.ORDER_THICKNESS_MAX IS '订单厚度上限';
COMMENT ON COLUMN PLTM.PDI_PLTM.ORDER_THICKNESS_MIN IS '订单厚度下限';
COMMENT ON COLUMN PLTM.PDI_PLTM.ORDER_WIDTH IS '订单宽度';
COMMENT ON COLUMN PLTM.PDI_PLTM.ORDER_WIDTH_MAX IS '订单宽度上限';
COMMENT ON COLUMN PLTM.PDI_PLTM.ORDER_WIDTH_MIN IS '订单宽度下限';
COMMENT ON COLUMN PLTM.PDI_PLTM.SLEEVE_CODE_OF_COLD_COIL IS '成品套筒';
COMMENT ON COLUMN PLTM.PDI_PLTM.PACKING_TYPE_CODE IS '包装类型代码';
COMMENT ON COLUMN PLTM.PDI_PLTM.THK_DS IS '焊接代码';
COMMENT ON COLUMN PLTM.PDI_PLTM.EXT_NUM_01 IS '铁奥标识';
COMMENT ON COLUMN PLTM.PDI_PLTM.C IS 'C';
COMMENT ON COLUMN PLTM.PDI_PLTM.SI IS 'Si';
COMMENT ON COLUMN PLTM.PDI_PLTM.MN IS 'Mn';
COMMENT ON COLUMN PLTM.PDI_PLTM.P IS 'P';
COMMENT ON COLUMN PLTM.PDI_PLTM.S IS 'S';
COMMENT ON COLUMN PLTM.PDI_PLTM.CU IS 'Cu';
COMMENT ON COLUMN PLTM.PDI_PLTM.NI IS 'Ni';
COMMENT ON COLUMN PLTM.PDI_PLTM.CR IS 'Cr';
COMMENT ON COLUMN PLTM.PDI_PLTM.MO IS 'Mo';
COMMENT ON COLUMN PLTM.PDI_PLTM.V IS 'V';
COMMENT ON COLUMN PLTM.PDI_PLTM.TI IS 'Ti';
COMMENT ON COLUMN PLTM.PDI_PLTM.SOL_AL IS 'Sol_Al';
COMMENT ON COLUMN PLTM.PDI_PLTM.FE IS 'Fe';
COMMENT ON COLUMN PLTM.PDI_PLTM.MG IS 'Mg';
COMMENT ON COLUMN PLTM.PDI_PLTM.PB IS 'Pb';
COMMENT ON COLUMN PLTM.PDI_PLTM.SN IS 'Sn';
COMMENT ON COLUMN PLTM.PDI_PLTM.ZN IS 'Zn';
COMMENT ON COLUMN PLTM.PDI_PLTM.ZR IS 'Zr';
COMMENT ON COLUMN PLTM.PDI_PLTM.NA IS 'Na';
COMMENT ON COLUMN PLTM.PDI_PLTM.LI IS 'Li';
COMMENT ON COLUMN PLTM.PDI_PLTM.GA IS 'Ga';
COMMENT ON COLUMN PLTM.PDI_PLTM.CA IS 'Ca';
COMMENT ON COLUMN PLTM.PDI_PLTM.B IS 'B';
COMMENT ON COLUMN PLTM.PDI_PLTM.BE IS 'Be';
COMMENT ON COLUMN PLTM.PDI_PLTM.BI IS 'Bi';
COMMENT ON COLUMN PLTM.PDI_PLTM.W IS 'W';
COMMENT ON COLUMN PLTM.PDI_PLTM.N IS 'N';
COMMENT ON COLUMN PLTM.PDI_PLTM.NB IS 'Nb';
COMMENT ON COLUMN PLTM.PDI_PLTM.TA IS 'Ta';
COMMENT ON COLUMN PLTM.PDI_PLTM.O IS 'O';
COMMENT ON COLUMN PLTM.PDI_PLTM.H IS 'H';
COMMENT ON COLUMN PLTM.PDI_PLTM.AR IS 'Ar';
COMMENT ON COLUMN PLTM.PDI_PLTM.AG IS 'Ar';
COMMENT ON COLUMN PLTM.PDI_PLTM.AS1 IS 'As';
COMMENT ON COLUMN PLTM.PDI_PLTM.CD IS 'Cd';
COMMENT ON COLUMN PLTM.PDI_PLTM.CL IS 'Ci';
COMMENT ON COLUMN PLTM.PDI_PLTM.CO IS 'Co';
COMMENT ON COLUMN PLTM.PDI_PLTM.K IS 'K';
COMMENT ON COLUMN PLTM.PDI_PLTM.SB IS 'Sb';
COMMENT ON COLUMN PLTM.PDI_PLTM.SE IS 'Se';
COMMENT ON COLUMN PLTM.PDI_PLTM.CREATED_BY IS '创建人';
COMMENT ON COLUMN PLTM.PDI_PLTM.CREATED_DT IS '创建时间';
COMMENT ON COLUMN PLTM.PDI_PLTM.CREATED_BY_NAME IS '创建人名称';
COMMENT ON COLUMN PLTM.PDI_PLTM.UPDATED_BY IS '更新人';
COMMENT ON COLUMN PLTM.PDI_PLTM.UPDATED_DT IS '更新时间';
COMMENT ON COLUMN PLTM.PDI_PLTM.UPDATED_BY_NAME IS '修改人名称';
COMMENT ON COLUMN PLTM.PDI_PLTM.SEND_FLAG IS '同步标识位';
COMMENT ON COLUMN PLTM.PDI_PLTM.SEND_DATE IS '发送时间';
COMMENT ON COLUMN PLTM.PDI_PLTM.TRANSACTION_ID IS '事务ID';
COMMENT ON COLUMN PLTM.PDI_PLTM.VERSION IS '版本号';
COMMENT ON COLUMN PLTM.PDI_PLTM.TEXT1 IS '预留字段1';
COMMENT ON COLUMN PLTM.PDI_PLTM.TEXT2 IS '预留字段2';
COMMENT ON COLUMN PLTM.PDI_PLTM.TEXT3 IS '预留字段3';
COMMENT ON COLUMN PLTM.PDI_PLTM.TEXT4 IS '预留字段4';
COMMENT ON COLUMN PLTM.PDI_PLTM.TEXT5 IS '预留字段5';
COMMENT ON COLUMN PLTM.PDI_PLTM.CROSS_SECTION_AREA IS '横截面积-m*m';
COMMENT ON COLUMN PLTM.PDI_PLTM.UNCOILER_TENSION IS '开卷机张力-kN';
COMMENT ON COLUMN PLTM.PDI_PLTM.LOOPER_TENSION_1 IS '1号活套张力 (入口活套)-kN';
COMMENT ON COLUMN PLTM.PDI_PLTM.PL_TENSION IS '酸洗段张力-kN';
COMMENT ON COLUMN PLTM.PDI_PLTM.LOOPER_TENSION_2 IS '2号活套张力出口1号-kN';
COMMENT ON COLUMN PLTM.PDI_PLTM.LOOPER_TENSION_3 IS '3号活套张力出口2号-kN';
COMMENT ON COLUMN PLTM.PDI_PLTM.METERWEIGHT IS '实测重量Real-公斤';
COMMENT ON COLUMN PLTM.PDI_PLTM.METER_D_OUTSIDE IS '实测卷径Real-米';
COMMENT ON COLUMN PLTM.PDI_PLTM.METER_WIDTH IS '实测宽度Real-米';
COMMENT ON COLUMN PLTM.PDI_PLTM.SCRAP_CUT_HEAD_LEN IS '//头部剪切长度--Real--米';
COMMENT ON COLUMN PLTM.PDI_PLTM.SCRAP_CUT_TAIL_LEN IS '//尾部剪切长度--Real--米';
CREATE UNIQUE INDEX PLTM.PK_PDI_PLTM ON PLTM.PDI_PLTM
(COILID)
LOGGING
TABLESPACE USERS
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 2M
NEXT 1M
MAXSIZE UNLIMITED
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
FLASH_CACHE DEFAULT
CELL_FLASH_CACHE DEFAULT
)
NOPARALLEL;
CREATE OR REPLACE TRIGGER PLTM.DEL_B_PDI_PLTM BEFORE DELETE ON "PLTM"."PDI_PLTM" REFERENCING OLD AS "OLD" NEW AS "NEW" FOR EACH ROW
DECLARE
tmpVar NUMBER;
szCoilID VARCHAR2 (20);
/******************************************************************************
NAME: DEL_B_PDI_PLTM
PURPOSE:
REVISIONS:
Ver Date Author Description
--------- ---------- --------------- ------------------------------------
1.0 2023-12-8 Administrator 1. Created this trigger.
NOTES:
Automatically available Auto Replace Keywords:
Object Name: DEL_B_PDI_PLTM
Sysdate: 2023-12-8
Date and Time: 2023-12-8, 16:45:20, and 2023-12-8 16:45:20
Username: Administrator (set in TOAD Options, Proc Templates)
Table Name: PDI_PLTM (set in the "New PL/SQL Object" dialog)
Trigger Options: (set in the "New PL/SQL Object" dialog)
******************************************************************************/
BEGIN
tmpVar := 0;
--SELECT MySeq.NEXTVAL INTO tmpVar FROM dual;
--:NEW.SequenceColumn := tmpVar;
--:NEW.CreatedDate := SYSDATE;
--:NEW.CreatedUser := USER;
-------------------------------------------------------------------------------
szCoilID := :OLD.COILID || '%';
DELETE RASTCMDB.PDI WHERE COILID LIKE szCoilID;
EXCEPTION
WHEN OTHERS
THEN
-- Consider logging the error and then re-raise
RAISE;
END DEL_B_PDI_PLTM;
/
CREATE OR REPLACE TRIGGER PLTM.INS_B_PDI_PLTM
BEFORE INSERT
ON PLTM.PDI_PLTM
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
--PRAGMA AUTONOMOUS_TRANSACTION;
Programm VARCHAR (60);
USER VARCHAR (30);
session_id NUMBER;
nRollProgramNb PDI_PLTM.ROLLPROGRAMNB%TYPE;
nSequenceNb PDI_PLTM.SEQUENCENB%TYPE;
nCrossSectionArea PDI_PLTM.CROSS_SECTION_AREA%TYPE;
nMinCrossSectionArea PDI_PLTM.CROSS_SECTION_AREA%TYPE;
nMaxCrossSectionArea PDI_PLTM.CROSS_SECTION_AREA%TYPE;
TablePL_BM_TENSION_XQ PL_BM_TENSION_XQ%ROWTYPE;
TablePL_BM_TENSION_XQ_MIN PL_BM_TENSION_XQ%ROWTYPE;
TablePL_BM_TENSION_XQ_MAX PL_BM_TENSION_XQ%ROWTYPE;
nMinKeyID NUMBER;
nMaxKeyID NUMBER;
nCount NUMBER;
iCross_section_areaMin PDI_PLTM.CROSS_SECTION_AREA%TYPE;
iUncoiler_tensionMin PDI_PLTM.UNCOILER_TENSION%TYPE;
iLooper_tension_1Min PDI_PLTM.LOOPER_TENSION_1%TYPE;
iPL_tensionMin PDI_PLTM.PL_TENSION%TYPE;
iLooper_tension_2Min PDI_PLTM.LOOPER_TENSION_2%TYPE;
iLooper_tension_3Min PDI_PLTM.LOOPER_TENSION_3%TYPE;
iCross_section_areaMax PDI_PLTM.CROSS_SECTION_AREA%TYPE;
iUncoiler_tensionMax PDI_PLTM.UNCOILER_TENSION%TYPE;
iLooper_tension_1Max PDI_PLTM.LOOPER_TENSION_1%TYPE;
iPL_tensionMax PDI_PLTM.PL_TENSION%TYPE;
iLooper_tension_2Max PDI_PLTM.LOOPER_TENSION_2%TYPE;
iLooper_tension_3Max PDI_PLTM.LOOPER_TENSION_3%TYPE;
--iCross_section_area PDI_PLTM.CROSS_SECTION_AREA%TYPE;
iUncoiler_tension PDI_PLTM.UNCOILER_TENSION%TYPE;
iLooper_tension_1 PDI_PLTM.LOOPER_TENSION_1%TYPE;
iPL_tension PDI_PLTM.PL_TENSION%TYPE;
iLooper_tension_2 PDI_PLTM.LOOPER_TENSION_2%TYPE;
iLooper_tension_3 PDI_PLTM.LOOPER_TENSION_3%TYPE;
szCoilID VARCHAR2 (20);
szFileName VARCHAR (64);
startDate DATE;
BEGIN
-------------------------------------------------------------------------------
startDate := SYSDATE;
-------------------------------------------------------------------------------
szFileName := TO_CHAR (SYSDATE, 'yyyymmdd') || 'INS_B_PDI_PLTM';
LOG_TEXT (szFileName,
TO_CHAR (startDate, 'hh24:mi:ss') || ' I: start INS_B_PDI_PLTM');
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
SELECT USERENV ('SESSIONID') INTO session_id FROM DUAL;
BEGIN
SELECT program, username
INTO programm, USER
FROM V$SESSION
WHERE audsid = session_id;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
programm := 'UNKNOWN';
USER := 'UNKNOWN';
WHEN OTHERS
THEN
IF (session_id = 0)
THEN
programm := 'JOB';
ELSE
programm := 'UNKNOWN';
END IF;
END;
-------------------------------------------------------------------------------
--:NEW.ROLLPROGRAMNB := nRollProgramNb;
--:NEW.SEQUENCENB := nSequenceNb;
-------------------------------------------------------------------------------
:NEW.STATUS := 0;
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
--*****************************************************************************
-------------------------------------------------------------------------------
nCount := 0;
IF nCount = nCount -- 1000
THEN
-------------------------------------------------------------------------------
LOG_TEXT (szFileName,
'INSERT INTO RASTCMDB.V_EVN_NEW_PDI ' || :NEW.COILID);
DELETE RASTCMDB.V_EVN_NEW_PDI
WHERE SUBSTR (COIL_ID, 1, 12) = :NEW.COILID;
INSERT INTO RASTCMDB.V_EVN_NEW_PDI (COIL_ID,
ENTRY_THICK,
WIDTH_ENTRY,
WEIGHT,
ENTRY_LENGTH,
OUTER_DIAM,
CROWN,
EXIT_COIL_ID,
EXIT_THICK,
WIDTH,
HOT_GRADE,
LABEL_GRADE,
GRADE,
PACK_TYPE,
INITIAL_GAUGE,
CONTRACT_NO,
SCHEDULE_NO,
COILER_DIAMETER,
-------------------------------------------------------------------------------
WEIGHT_MODE, -- 重量分卷模式/是否分卷 1 分卷
WEIGHT_EXIT --分卷后 出口目标重量
--DESTINATION
)
VALUES (
:NEW.COILID,
:NEW.ENTRY_COIL_THICKNESS,
:NEW.ENTRY_COIL_WIDTH,
:NEW.ENTRY_COIL_WEIGHT,
:NEW.ENTRY_OF_COIL_LENGTH,
:NEW.ENTRY_OF_COIL_OUTER_DIAMETER,
:NEW.CROWN_AVERAGE,
:NEW.EXIT_COIL_NO,
:NEW.EXIT_COIL_THICKNESS,
:NEW.EXIT_COIL_WIDTH,
:NEW.STEEL_GRADE,
:NEW.SG_SIGN,
:NEW.L2_GRADE,
:NEW.PACKING_TYPE_CODE,
:NEW.ENTRY_COIL_THICKNESS,
:NEW.WORK_ORDER_NO,
:NEW.SCHEDULE_CODE,
:NEW.COILER_DIAMETER,
-------------------------------------------------------------------------------
TO_NUMBER (
DECODE (:NEW.WEIGHT_MODE,
NULL, 0,
:NEW.WEIGHT_MODE)), -- '重量分卷模式';
:NEW.EXIT_COIL_WEIGHT -- '出口目标重量';
--:NEW.NEXT_PROCESS_CODE
);
LOG_TEXT (szFileName,
'INSERT INTO RASTCMDB.V_EVN_NEW_PDI 完毕 ' || :NEW.COILID);
RASTCMDB.PROC_PROCESS_PDI_TEST_1 ();
LOG_TEXT (
szFileName,
'INSERT INTO RASTCMDB.PROC_PROCESS_PDI_TEST_1 完毕 '
|| :NEW.COILID);
-------------------------------------------------------------------------------
szCoilID := :NEW.COILID || '-00';
-------------------------------------------------------------------------------
LOG_TEXT (
szFileName,
'UPDATE RASTCMDB.PDI '
|| TO_CHAR (:NEW.ROLLPROGRAMNB)
|| ' '
|| TO_CHAR (:NEW.SEQUENCENB));
UPDATE RASTCMDB.PDI
SET ROLLPROGRAMNB = :NEW.ROLLPROGRAMNB, SEQUENCENB = :NEW.SEQUENCENB
WHERE COILID = szCoilID;
-------------------------------------------------------------------------------
LOG_TEXT (szFileName, 'UPDATE RASTCMDB.PDI ' || szCoilID);
-------------------------------------------------------------------------------
END IF;
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
:new.toc := SYSDATE;
:new.mop := SUBSTR (programm, 1, 60);
-------------------------------------------------------------------------------
--*****************************************************************************
nCrossSectionArea := :NEW.ENTRY_COIL_THICKNESS * :NEW.ENTRY_COIL_WIDTH;
-------------------------------------------------------------------------------
--1.
SELECT COUNT (*)
INTO nCount
FROM PL_BM_TENSION_XQ
WHERE CROSS_SECTION_AREA = nCrossSectionArea;
IF nCount <> 0
THEN
SELECT *
INTO TablePL_BM_TENSION_XQ
FROM PL_BM_TENSION_XQ
WHERE CROSS_SECTION_AREA = nCrossSectionArea AND ROWNUM = 1;
:NEW.CROSS_SECTION_AREA := TablePL_BM_TENSION_XQ.CROSS_SECTION_AREA;
:NEW.UNCOILER_TENSION := TablePL_BM_TENSION_XQ.UNCOILER_TENSION;
:NEW.LOOPER_TENSION_1 := TablePL_BM_TENSION_XQ.LOOPER_TENSION_1;
:NEW.PL_TENSION := TablePL_BM_TENSION_XQ.PL_TENSION;
:NEW.LOOPER_TENSION_2 := TablePL_BM_TENSION_XQ.LOOPER_TENSION_2;
:NEW.LOOPER_TENSION_3 := TablePL_BM_TENSION_XQ.LOOPER_TENSION_3;
RETURN;
END IF;
-------------------------------------------------------------------------------
--2.
SELECT MIN (KEYID),
MAX (KEYID),
MIN (CROSS_SECTION_AREA),
MAX (CROSS_SECTION_AREA)
INTO nMinKeyID,
nMaxKeyID,
nMinCrossSectionArea,
nMaxCrossSectionArea
FROM PL_BM_TENSION_XQ;
-------------------------------------------------------------------------------
IF nCrossSectionArea <= nMinCrossSectionArea
OR nCrossSectionArea >= nMaxCrossSectionArea
THEN
-------------------------------------------------------------------------------
--2.找到是不是最大最小之外,如果是,选择一个,直接使用
IF nCrossSectionArea <= nMinCrossSectionArea
THEN
nCrossSectionArea := nMinCrossSectionArea;
ELSE
nCrossSectionArea := nMaxCrossSectionArea;
END IF;
SELECT *
INTO TablePL_BM_TENSION_XQ
FROM PL_BM_TENSION_XQ
WHERE CROSS_SECTION_AREA = nCrossSectionArea;
:NEW.CROSS_SECTION_AREA := TablePL_BM_TENSION_XQ.CROSS_SECTION_AREA;
:NEW.UNCOILER_TENSION := TablePL_BM_TENSION_XQ.UNCOILER_TENSION;
:NEW.LOOPER_TENSION_1 := TablePL_BM_TENSION_XQ.LOOPER_TENSION_1;
:NEW.PL_TENSION := TablePL_BM_TENSION_XQ.PL_TENSION;
:NEW.LOOPER_TENSION_2 := TablePL_BM_TENSION_XQ.LOOPER_TENSION_2;
:NEW.LOOPER_TENSION_3 := TablePL_BM_TENSION_XQ.LOOPER_TENSION_3;
RETURN;
-------------------------------------------------------------------------------
ELSE
-------------------------------------------------------------------------------
--3.
SELECT KEYID
INTO nMinKeyID
FROM ( SELECT *
FROM PL_BM_TENSION_XQ
WHERE CROSS_SECTION_AREA < nCrossSectionArea
ORDER BY CROSS_SECTION_AREA DESC)
WHERE ROWNUM = 1;
SELECT KEYID
INTO nMaxKeyID
FROM ( SELECT *
FROM PL_BM_TENSION_XQ
WHERE CROSS_SECTION_AREA > nCrossSectionArea
ORDER BY CROSS_SECTION_AREA ASC)
WHERE ROWNUM = 1;
SELECT *
INTO TablePL_BM_TENSION_XQ_MIN
FROM PL_BM_TENSION_XQ
WHERE KEYID = nMinKeyID;
SELECT *
INTO TablePL_BM_TENSION_XQ_MAX
FROM PL_BM_TENSION_XQ
WHERE KEYID = nMaxKeyID;
iCross_section_areaMin := TablePL_BM_TENSION_XQ_MIN.CROSS_SECTION_AREA;
iUncoiler_tensionMin := TablePL_BM_TENSION_XQ_MIN.UNCOILER_TENSION;
iLooper_tension_1Min := TablePL_BM_TENSION_XQ_MIN.LOOPER_TENSION_1;
iPL_tensionMin := TablePL_BM_TENSION_XQ_MIN.PL_TENSION;
iLooper_tension_2Min := TablePL_BM_TENSION_XQ_MIN.LOOPER_TENSION_2;
iLooper_tension_3Min := TablePL_BM_TENSION_XQ_MIN.LOOPER_TENSION_3;
iCross_section_areaMax := TablePL_BM_TENSION_XQ_MAX.CROSS_SECTION_AREA;
iUncoiler_tensionMax := TablePL_BM_TENSION_XQ_MAX.UNCOILER_TENSION;
iLooper_tension_1Max := TablePL_BM_TENSION_XQ_MAX.LOOPER_TENSION_1;
iPL_tensionMax := TablePL_BM_TENSION_XQ_MAX.PL_TENSION;
iLooper_tension_2Max := TablePL_BM_TENSION_XQ_MAX.LOOPER_TENSION_2;
iLooper_tension_3Max := TablePL_BM_TENSION_XQ_MAX.LOOPER_TENSION_3;
:NEW.CROSS_SECTION_AREA := nCrossSectionArea;
--iUncoiler_tension :=
:NEW.UNCOILER_TENSION :=
( (iUncoiler_tensionMax - iUncoiler_tensionMin)
/ (iCross_section_areaMax - iCross_section_areaMin)
* (nCrossSectionArea - iCross_section_areaMin)
+ iUncoiler_tensionMin)
* nCrossSectionArea;
:NEW.LOOPER_TENSION_1 :=
( (iLooper_tension_1Max - iLooper_tension_1Min)
/ (iCross_section_areaMax - iCross_section_areaMin)
* (nCrossSectionArea - iCross_section_areaMin)
+ iUncoiler_tensionMin)
* nCrossSectionArea;
:NEW.PL_TENSION :=
( (iLooper_tension_1Max - iPL_tensionMax)
/ (iCross_section_areaMax - iCross_section_areaMin)
* (nCrossSectionArea - iCross_section_areaMin)
+ iUncoiler_tensionMin)
* nCrossSectionArea;
:NEW.LOOPER_TENSION_2 :=
( (iLooper_tension_2Max - iLooper_tension_2Min)
/ (iCross_section_areaMax - iCross_section_areaMin)
* (nCrossSectionArea - iCross_section_areaMin)
+ iUncoiler_tensionMin)
* nCrossSectionArea;
:NEW.LOOPER_TENSION_3 :=
( (iLooper_tension_3Max - iLooper_tension_3Min)
/ (iCross_section_areaMax - iCross_section_areaMin)
* (nCrossSectionArea - iCross_section_areaMin)
+ iUncoiler_tensionMin)
* nCrossSectionArea;
-------------------------------------------------------------------------------
END IF;
-------------------------------------------------------------------------------
EXCEPTION
WHEN OTHERS
THEN
-- Consider logging the error and then re-raise
RAISE;
END INS_B_PDI_PLTM;
/
CREATE OR REPLACE TRIGGER PLTM.UPD_B_PDI_PLTM
BEFORE UPDATE
ON PLTM.PDI_PLTM
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
DECLARE
tmpVar NUMBER;
nIndex NUMBER;
--PRAGMA AUTONOMOUS_TRANSACTION;
nCrossSectionArea PDI_PLTM.CROSS_SECTION_AREA%TYPE;
nMinCrossSectionArea PDI_PLTM.CROSS_SECTION_AREA%TYPE;
nMaxCrossSectionArea PDI_PLTM.CROSS_SECTION_AREA%TYPE;
TablePL_BM_TENSION_XQ PL_BM_TENSION_XQ%ROWTYPE;
TablePL_BM_TENSION_XQ_MIN PL_BM_TENSION_XQ%ROWTYPE;
TablePL_BM_TENSION_XQ_MAX PL_BM_TENSION_XQ%ROWTYPE;
nMinKeyID NUMBER;
nMaxKeyID NUMBER;
nCount NUMBER;
iCross_section_areaMin PDI_PLTM.CROSS_SECTION_AREA%TYPE;
iUncoiler_tensionMin PDI_PLTM.UNCOILER_TENSION%TYPE;
iLooper_tension_1Min PDI_PLTM.LOOPER_TENSION_1%TYPE;
iPL_tensionMin PDI_PLTM.PL_TENSION%TYPE;
iLooper_tension_2Min PDI_PLTM.LOOPER_TENSION_2%TYPE;
iLooper_tension_3Min PDI_PLTM.LOOPER_TENSION_3%TYPE;
iCross_section_areaMax PDI_PLTM.CROSS_SECTION_AREA%TYPE;
iUncoiler_tensionMax PDI_PLTM.UNCOILER_TENSION%TYPE;
iLooper_tension_1Max PDI_PLTM.LOOPER_TENSION_1%TYPE;
iPL_tensionMax PDI_PLTM.PL_TENSION%TYPE;
iLooper_tension_2Max PDI_PLTM.LOOPER_TENSION_2%TYPE;
iLooper_tension_3Max PDI_PLTM.LOOPER_TENSION_3%TYPE;
--iCross_section_area PDI_PLTM.CROSS_SECTION_AREA%TYPE;
iUncoiler_tension PDI_PLTM.UNCOILER_TENSION%TYPE;
iLooper_tension_1 PDI_PLTM.LOOPER_TENSION_1%TYPE;
iPL_tension PDI_PLTM.PL_TENSION%TYPE;
iLooper_tension_2 PDI_PLTM.LOOPER_TENSION_2%TYPE;
iLooper_tension_3 PDI_PLTM.LOOPER_TENSION_3%TYPE;
szCoilID VARCHAR2 (20);
BEGIN
tmpVar := 0;
-------------------------------------------------------------------------------
--*****************************************************************************
-------------------------------------------------------------------------------
szCoilID := :NEW.COILID || '%';
SELECT COUNT (COILID)
INTO nCount
FROM RASTCMDB.PDI
WHERE COILID LIKE szCoilID;
IF nCount > 0
THEN
szCoilID := :NEW.COILID || '%';
IF :NEW.STATUS = :OLD.STATUS ------ AND :NEW.STATUS = 0
THEN
IF NOT :NEW.L2_GRADE IS NULL AND TRIM (:NEW.L2_GRADE) <> ''
THEN
UPDATE RASTCMDB.PDI
SET GRADE = :NEW.L2_GRADE,
HOT_GRADE = :NEW.STEEL_GRADE,
LABEL_GRADE = :NEW.SG_SIGN, --三级钢种
-------------------------------------------------------------------------------
PACK_TYPE = :NEW.PACKING_TYPE_CODE,
CONTRACT_NO = :NEW.WORK_ORDER_NO,
SCHEDULE_NO = :NEW.SCHEDULE_CODE,
COILER_DIAMETER = :NEW.COILER_DIAMETER,
EXIT_COIL_ID = :NEW.EXIT_COIL_NO,
WEIGHT = :NEW.ENTRY_COIL_WEIGHT,
ENTRYLENGTH = :NEW.ENTRY_OF_COIL_LENGTH,
OUTSIDEDIAM = :NEW.ENTRY_OF_COIL_OUTER_DIAMETER,
CROWN = :NEW.CROWN_AVERAGE,
-------------------------------------------------------------------------------
contract_exitthick = :NEW.ORDER_THICKNESS, --订单厚度
-------------------------------------------------------------------------------
ENTRYTHICK = :NEW.ENTRY_COIL_THICKNESS, --来料厚度
INITIAL_GAUGE = :NEW.ENTRY_COIL_THICKNESS, --热轧料厚度
WIDTH = :NEW.EXIT_COIL_WIDTH, --入口宽度
--WIDTH_ENTRY = :NEW.ENTRY_COIL_WIDTH, --来料宽度
-------------------------------------------------------------------------------
EXITTHICK = :NEW.EXIT_COIL_THICKNESS, --成品厚度
EXITWIDTH = :NEW.EXIT_COIL_WIDTH, --成品宽度
-------------------------------------------------------------------------------
WEIGHT_MODE = TO_NUMBER (:NEW.WEIGHT_MODE), -- 重量分卷模式/是否分卷 1 分卷
WEIGHT_EXIT = :NEW.EXIT_COIL_WEIGHT, --分卷后 出口目标重量
-------------------------------------------------------------------------------
ROLLPROGRAMNB = :NEW.ROLLPROGRAMNB,
SEQUENCENB = :NEW.SEQUENCENB
-------------------------------------------------------------------------------
WHERE COILID LIKE szCoilID;
ELSE
UPDATE RASTCMDB.PDI
SET --GRADE = :NEW.L2_GRADE,
HOT_GRADE = :NEW.STEEL_GRADE,
LABEL_GRADE = :NEW.SG_SIGN, --三级钢种
-------------------------------------------------------------------------------
PACK_TYPE = :NEW.PACKING_TYPE_CODE,
CONTRACT_NO = :NEW.WORK_ORDER_NO,
SCHEDULE_NO = :NEW.SCHEDULE_CODE,
COILER_DIAMETER = :NEW.COILER_DIAMETER,
EXIT_COIL_ID = :NEW.EXIT_COIL_NO,
WEIGHT = :NEW.ENTRY_COIL_WEIGHT,
ENTRYLENGTH = :NEW.ENTRY_OF_COIL_LENGTH,
OUTSIDEDIAM = :NEW.ENTRY_OF_COIL_OUTER_DIAMETER,
CROWN = :NEW.CROWN_AVERAGE,
-------------------------------------------------------------------------------
contract_exitthick = :NEW.ORDER_THICKNESS, --订单厚度
-------------------------------------------------------------------------------
ENTRYTHICK = :NEW.ENTRY_COIL_THICKNESS, --来料厚度
INITIAL_GAUGE = :NEW.ENTRY_COIL_THICKNESS, --热轧料厚度
WIDTH = :NEW.EXIT_COIL_WIDTH, --入口宽度
--WIDTH_ENTRY = :NEW.ENTRY_COIL_WIDTH, --来料宽度
-------------------------------------------------------------------------------
EXITTHICK = :NEW.EXIT_COIL_THICKNESS, --成品厚度
EXITWIDTH = :NEW.EXIT_COIL_WIDTH, --成品宽度
-------------------------------------------------------------------------------
WEIGHT_MODE = TO_NUMBER (:NEW.WEIGHT_MODE), -- 重量分卷模式/是否分卷 1 分卷
WEIGHT_EXIT = :NEW.EXIT_COIL_WEIGHT, --分卷后 出口目标重量
-------------------------------------------------------------------------------
ROLLPROGRAMNB = :NEW.ROLLPROGRAMNB,
SEQUENCENB = :NEW.SEQUENCENB
-------------------------------------------------------------------------------
WHERE COILID LIKE szCoilID;
END IF;
END IF;
END IF;
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
nCrossSectionArea := :NEW.ENTRY_COIL_THICKNESS * :NEW.ENTRY_COIL_WIDTH;
-------------------------------------------------------------------------------
--1.
SELECT COUNT (*)
INTO nCount
FROM PL_BM_TENSION_XQ
WHERE CROSS_SECTION_AREA = nCrossSectionArea;
IF nCount <> 0
THEN
SELECT *
INTO TablePL_BM_TENSION_XQ
FROM PL_BM_TENSION_XQ
WHERE CROSS_SECTION_AREA = nCrossSectionArea AND ROWNUM = 1;
:NEW.CROSS_SECTION_AREA := TablePL_BM_TENSION_XQ.CROSS_SECTION_AREA;
:NEW.UNCOILER_TENSION := TablePL_BM_TENSION_XQ.UNCOILER_TENSION;
:NEW.LOOPER_TENSION_1 := TablePL_BM_TENSION_XQ.LOOPER_TENSION_1;
:NEW.PL_TENSION := TablePL_BM_TENSION_XQ.PL_TENSION;
:NEW.LOOPER_TENSION_2 := TablePL_BM_TENSION_XQ.LOOPER_TENSION_2;
:NEW.LOOPER_TENSION_3 := TablePL_BM_TENSION_XQ.LOOPER_TENSION_3;
RETURN;
END IF;
-------------------------------------------------------------------------------
--2.
SELECT MIN (KEYID),
MAX (KEYID),
MIN (CROSS_SECTION_AREA),
MAX (CROSS_SECTION_AREA)
INTO nMinKeyID,
nMaxKeyID,
nMinCrossSectionArea,
nMaxCrossSectionArea
FROM PL_BM_TENSION_XQ;
-------------------------------------------------------------------------------
IF nCrossSectionArea <= nMinCrossSectionArea
OR nCrossSectionArea >= nMaxCrossSectionArea
THEN
-------------------------------------------------------------------------------
--2.找到是不是最大最小之外,如果是,选择一个,直接使用
IF nCrossSectionArea <= nMinCrossSectionArea
THEN
nCrossSectionArea := nMinCrossSectionArea;
ELSE
nCrossSectionArea := nMaxCrossSectionArea;
END IF;
SELECT *
INTO TablePL_BM_TENSION_XQ
FROM PL_BM_TENSION_XQ
WHERE CROSS_SECTION_AREA = nCrossSectionArea;
:NEW.CROSS_SECTION_AREA := TablePL_BM_TENSION_XQ.CROSS_SECTION_AREA;
:NEW.UNCOILER_TENSION := TablePL_BM_TENSION_XQ.UNCOILER_TENSION;
:NEW.LOOPER_TENSION_1 := TablePL_BM_TENSION_XQ.LOOPER_TENSION_1;
:NEW.PL_TENSION := TablePL_BM_TENSION_XQ.PL_TENSION;
:NEW.LOOPER_TENSION_2 := TablePL_BM_TENSION_XQ.LOOPER_TENSION_2;
:NEW.LOOPER_TENSION_3 := TablePL_BM_TENSION_XQ.LOOPER_TENSION_3;
RETURN;
-------------------------------------------------------------------------------
ELSE
-------------------------------------------------------------------------------
--3.
SELECT KEYID
INTO nMinKeyID
FROM ( SELECT *
FROM PL_BM_TENSION_XQ
WHERE CROSS_SECTION_AREA < nCrossSectionArea
ORDER BY CROSS_SECTION_AREA DESC)
WHERE ROWNUM = 1;
SELECT KEYID
INTO nMaxKeyID
FROM ( SELECT *
FROM PL_BM_TENSION_XQ
WHERE CROSS_SECTION_AREA > nCrossSectionArea
ORDER BY CROSS_SECTION_AREA ASC)
WHERE ROWNUM = 1;
SELECT *
INTO TablePL_BM_TENSION_XQ_MIN
FROM PL_BM_TENSION_XQ
WHERE KEYID = nMinKeyID;
SELECT *
INTO TablePL_BM_TENSION_XQ_MAX
FROM PL_BM_TENSION_XQ
WHERE KEYID = nMaxKeyID;
iCross_section_areaMin := TablePL_BM_TENSION_XQ_MIN.CROSS_SECTION_AREA;
iUncoiler_tensionMin := TablePL_BM_TENSION_XQ_MIN.UNCOILER_TENSION;
iLooper_tension_1Min := TablePL_BM_TENSION_XQ_MIN.LOOPER_TENSION_1;
iPL_tensionMin := TablePL_BM_TENSION_XQ_MIN.PL_TENSION;
iLooper_tension_2Min := TablePL_BM_TENSION_XQ_MIN.LOOPER_TENSION_2;
iLooper_tension_3Min := TablePL_BM_TENSION_XQ_MIN.LOOPER_TENSION_3;
iCross_section_areaMax := TablePL_BM_TENSION_XQ_MAX.CROSS_SECTION_AREA;
iUncoiler_tensionMax := TablePL_BM_TENSION_XQ_MAX.UNCOILER_TENSION;
iLooper_tension_1Max := TablePL_BM_TENSION_XQ_MAX.LOOPER_TENSION_1;
iPL_tensionMax := TablePL_BM_TENSION_XQ_MAX.PL_TENSION;
iLooper_tension_2Max := TablePL_BM_TENSION_XQ_MAX.LOOPER_TENSION_2;
iLooper_tension_3Max := TablePL_BM_TENSION_XQ_MAX.LOOPER_TENSION_3;
--iUncoiler_tension :=
:NEW.CROSS_SECTION_AREA := nCrossSectionArea;
:NEW.UNCOILER_TENSION :=
( (iUncoiler_tensionMax - iUncoiler_tensionMin)
/ (iCross_section_areaMax - iCross_section_areaMin)
* (nCrossSectionArea - iCross_section_areaMin)
+ iUncoiler_tensionMin)
* nCrossSectionArea;
:NEW.LOOPER_TENSION_1 :=
( (iLooper_tension_1Max - iLooper_tension_1Min)
/ (iCross_section_areaMax - iCross_section_areaMin)
* (nCrossSectionArea - iCross_section_areaMin)
+ iLooper_tension_1Min)
* nCrossSectionArea;
:NEW.PL_TENSION :=
( (iLooper_tension_1Max - iPL_tensionMin)
/ (iCross_section_areaMax - iCross_section_areaMin)
* (nCrossSectionArea - iCross_section_areaMin)
+ iPL_tensionMin)
* nCrossSectionArea;
:NEW.LOOPER_TENSION_2 :=
( (iLooper_tension_2Max - iLooper_tension_2Min)
/ (iCross_section_areaMax - iCross_section_areaMin)
* (nCrossSectionArea - iCross_section_areaMin)
+ iLooper_tension_2Min)
* nCrossSectionArea;
:NEW.LOOPER_TENSION_3 :=
( (iLooper_tension_3Max - iLooper_tension_3Min)
/ (iCross_section_areaMax - iCross_section_areaMin)
* (nCrossSectionArea - iCross_section_areaMin)
+ iLooper_tension_3Min)
* nCrossSectionArea;
-------------------------------------------------------------------------------
END IF;
-------------------------------------------------------------------------------
--szCoilID := :NEW.COILID || '%';
-------------------------------------------------------------------------------
EXCEPTION
WHEN OTHERS
THEN
-- Consider logging the error and then re-raise
RAISE;
END UPD_B_PDI_PLTM;
/
ALTER TABLE PLTM.PDI_PLTM ADD (
CONSTRAINT PK_PDI_PLTM
PRIMARY KEY
(COILID)
USING INDEX PLTM.PK_PDI_PLTM
ENABLE VALIDATE);
GRANT DELETE, INSERT, SELECT, UPDATE ON PLTM.PDI_PLTM TO PL_USER;