orcal写接口


CREATE OR REPLACE PROCEDURE WDC11AP
-------------------------------------------------------------------------------
  -- PROGRAM HEADER  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  -------------------------------------------------------------------------------
  -- SYSTEM NAME       ERP  INTERFACE  SYSTEM
  -- SUB_SYSTEM NAME   PRODUCT MOVE RESULT
  -- PROGRAM NAME      DELAY DATA SEND TO ERP EQUIPMENT SYSTEM
  -- PROGRAM ID        ODM041AP
  -- DESIGNER          xxx
  -- CODER             xxx
  -- DATE              2018.09.27
  -- DESCRIPTION       DELAY DATA SEND TO ERP EQUIPMENT SYSTEM
  -------------------------------------------------------------------------------
  -- UPDATE HISTORY  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  -------------------------------------------------------------------------------
  -- VER   DATE        EDITOR       DESCRIPTION
  -- 1.00  2018.09.27  景维松         上抛数据
  -------------------------------------------------------------------------------
  -- DECLARATION     ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  -------------------------------------------------------------------------------

  --主键
(P_COMP_ID           IN TB_POD_011.COMP_ID %TYPE DEFAULT NULL,    --公司别
 P_ORDER_NO          IN TB_POD_011.ORDER_NO %TYPE DEFAULT NULL,    --订单编号
 P_ORDER_ITEM        IN TB_POD_011.ORDER_ITEM %TYPE DEFAULT NULL,   --订单项次
 P_LOTNO             IN TB_OD_0021.LOTNO %TYPE DEFAULT NULL,          --轧制序号
 P_SEQUENCENO        IN TB_OD_0021.SEQUENCENO %TYPE DEFAULT NULL,         --排序号码
 
 
 P_STATUS     IN VARCHAR2 DEFAULT NULL,
 
 P_RTN_MSG OUT VARCHAR2
 
 ) IS

  -- CONSTANT DECLARE
  C_PGM_ID CONSTANT CHAR(10) := 'ODM041AP';

  --C_QUEUEID            CONSTANT   NISCO.TBDIPDO.QUEUEID%TYPE    := 'OJ00';
  C_QUEUEID CONSTANT TBDIPDO.QUEUEID%TYPE := 'WD02';
  C_FORM_ID CONSTANT VARCHAR2(10) := 'WD02';
  C_STATUS  CONSTANT TBDIPDO.STATUS%TYPE := 'N';

  C_DOMAIN_NAME CONSTANT VARCHAR2(50) := 'MES';
  C_CHAR_SET    CONSTANT VARCHAR2(02) := '1';
  C_MSG_TYPE    CONSTANT VARCHAR2(02) := ' ';
  C_MSG_FORM    CONSTANT VARCHAR2(01) := '1';
  C_COMPANY_ID  CONSTANT VARCHAR2(10) := ' ';
  C_PSW         CONSTANT VARCHAR2(10) := ' ';
  C_POINTER     CONSTANT VARCHAR2(06) := ' ';
  C_RESERVED    CONSTANT VARCHAR2(10) := ' ';
  C_HEAD_LEN    CONSTANT NUMBER(10) := 129;
  C_DATA_LEN    CONSTANT NUMBER(10) := 166; --- BY INTERFACE FORM

  V_TIMESTAMP TBDIPDO.TIMESTAMP%TYPE;
  V_HEADER    TBDIPDO.HEADER%TYPE;
  V_DATA_LEN  NUMBER(12);
  V_DATA      TBDIPDO.DATA%TYPE;


  -- CHEMICAL DATA DEVIDE
  TYPE TYPE_CHEM IS RECORD(
  
     COMP_ID          TB_POD_011.COMP_ID %TYPE DEFAULT NULL,    --公司别
     ORDER_NO         TB_POD_011.ORDER_NO %TYPE DEFAULT NULL,    --订单编号
     ORDER_ITEM       TB_POD_011.ORDER_ITEM %TYPE DEFAULT NULL,   --订单项次
     LOTNO            TB_OD_0021.LOTNO %TYPE DEFAULT NULL,          --轧制序号
     SEQUENCENO       TB_OD_0021.SEQUENCENO %TYPE DEFAULT NULL,      --排序号码
     LINENO           TB_OD_0021.LINENO %TYPE DEFAULT NULL,
     MILL_DATE        TB_OD_0021.MILL_DATE %TYPE DEFAULT NULL,
     HOUSENO          TB_OD_0021.HOUSENO %TYPE DEFAULT NULL,
     HEATNO           TB_OD_0021.HEATNO %TYPE DEFAULT NULL,
     INPCS            TB_OD_0021.INPCS %TYPE DEFAULT NULL,
     INWGT            TB_OD_0021.INWGT %TYPE DEFAULT NULL,
     TRADE_NO         TB_POD_011.TRADE_NO %TYPE DEFAULT NULL,
     ORDER_LENGTH     TB_POD_011.ORDER_LENGTH %TYPE DEFAULT NULL,
     ORDER_WIDTH      TB_POD_011.ORDER_WIDTH %TYPE DEFAULT NULL,
     ORDER_THICK      TB_POD_011.ORDER_THICK %TYPE DEFAULT NULL,
     PCS_PLAN         TB_OD_0021.PCS_PLAN %TYPE DEFAULT NULL,
     PLANWGT          TB_OD_0021.PLANWGT %TYPE DEFAULT NULL,
     LOC              TB_OD_0021.LOC %TYPE DEFAULT NULL,
     RECODE           TB_OD_0021.RECODE %TYPE DEFAULT NULL,
     ENDUSE           TB_OD_0021.ENDUSE %TYPE DEFAULT NULL,
     CUST_NO          TB_POD_011.CUST_NO %TYPE DEFAULT NULL,
     ORDER_LACKWGT    TB_POD_011.ORDER_LACKWGT %TYPE DEFAULT NULL,
     ISBOOMORDER      TB_POD_011.ISBOOMORDER %TYPE DEFAULT NULL,
     DEPT             TB_OD_0021.DEPT %TYPE DEFAULT NULL,
     LOCTYPE          TB_OD_0021.LOCTYPE %TYPE DEFAULT NULL,
     LAYER            TB_OD_0021.LAYER %TYPE DEFAULT NULL
     );
     R_TB_POD_011 TYPE_CHEM; --详细档数量

  V_COUNT_CNT NUMBER(3);

  ----   ERROR DB
  V_ERRDB   ZP_ERROR%ROWTYPE;
  V_RTN_MSG VARCHAR2(100) := NULL;

  -- USER EXCEPTION DECLARE
  PGM_EXIT EXCEPTION;
  ERR_EXIT EXCEPTION;

BEGIN

  P_RTN_MSG   := NULL;
  V_COUNT_CNT := 0;
  
  --查询0021是否有数据
  --有:下抛
  --没有:不下抛
  SELECT COUNT(*) INTO V_COUNT_CNT FROM TB_OD_0021 WHERE LOTNO=P_LOTNO;

  IF V_COUNT_CNT = 0 THEN
    RETURN;
  END IF;

  BEGIN
    SELECT  B.COMP_ID,
            B.ORDER_NO,
            B.ORDER_ITEM,
            A.LOTNO,
            A.SEQUENCENO,
            A.LINENO,
            A.MILL_DATE,
            A.HOUSENO,
            A.HEATNO,
            A.INPCS,
            A.INWGT,
            B.TRADE_NO,
            B.ORDER_LENGTH,
            B.ORDER_WIDTH,
            B.ORDER_THICK,
            A.PCS_PLAN,
            A.PLANWGT,
            A.LOC,
            A.RECODE,
            A.ENDUSE,
            B.CUST_NO,
            B.ORDER_LACKWGT,
            B.ISBOOMORDER,
            A.DEPT,
            A.LOCTYPE,
            A.LAYER
           INTO R_TB_POD_011
           FROM TB_OD_0021 A , TB_POD_011 B 
           WHERE A.ORDER_NO=B.ORDER_NO 
           AND  A.ORDER_ITEM=B.ORDER_ITEM 
           AND  A.COMPID=B.COMP_ID
           AND A.ORDER_NO=P_ORDER_NO
           AND A.ORDER_ITEM=P_ORDER_ITEM
           AND   A.LOTNO  =  P_LOTNO;
 ------------------------------------------------------------------------------------------------------
    --A.LOTNO,--轧制序号
          -- A.ID,--捆号
          -- A.ISWASTE,--是否定尺
          -- A.WGT,--重量
           --A.PCS,--支数
           --C.ORDERCALIBER,--直径
           --C.ORDERWIDTH,--宽度
           --C.ORDERLEN,--长度
           --A.CREATEDATE,
           --A.CREATETIME,
           --B.OPERATECREW
      --INTO R_TB_OD_0002
      --FROM TB_OD_0002 A
      --LEFT JOIN TB_OD_M041 B
      --ON A.LOTNO=B.LOTNO
      --AND A.ID=B.ID
      --LEFT JOIN TB_OD_0011 C
      --ON A.LOTNO=C.LOTNO
     --WHERE A.LOTNO=P_LOTNO
     --AND A.ID=P_ID;
------------------------------------------
  EXCEPTION
    WHEN OTHERS THEN
      P_RTN_MSG         := 'NOT RESULT DB(TQF_RFP)';
      V_ERRDB.ERR_DESC  := P_RTN_MSG;
      V_ERRDB.RTN_NAME  := 'RESULT DATA SEND TO ERP SYSTEM';
      V_ERRDB.ERR_PARA1 := '';
      V_ERRDB.ERR_PARA2 := '';
      GP_ERROR(C_PGM_ID,
               'TQF_RFP',
               'R',
               V_ERRDB.ERR_DESC,
               V_ERRDB.RTN_NAME,
               V_ERRDB.ERR_PARA1,
               V_ERRDB.ERR_PARA2,
               V_RTN_MSG);
      ROLLBACK;
      RETURN;
  END;

  --------------------------------------------------------------------------------
  --                PARAMETA ERROR CHECK
  --------------------------------------------------------------------------------
  IF  P_STATUS     NOT IN('N','U','D')   THEN
    V_ERRDB.ERR_DESC  :=        C_PGM_ID||'-'||'STATUS ERROR';
    --V_ERRDB.ERR_PARA1 := P_REF_NUM;
    RAISE PGM_EXIT;
  END IF;

  --------------------------------------------------------------------------------
  --        CHEMICAL    RESULT      READ  &  EDIT
  --------------------------------------------------------------------------------
  --------------------------------------------------------------------------------
  --       DATA         EDITION
  --------------------------------------------------------------------------------
  V_DATA_LEN := C_HEAD_LEN + C_DATA_LEN + 10;

  V_HEADER := RPAD(NVL(V_DATA_LEN, 0), 12, ' ') || --   1 ~   12
              RPAD(NVL(C_DOMAIN_NAME, 0), 50, ' ') || --  13 ~   62
              RPAD(NVL(C_QUEUEID, ' '), 12, ' ') || --  63 ~   74
              RPAD(TO_CHAR(SYSDATE, 'YYYYMMDD'), 8, ' ') || --  75  ~   82
              RPAD(TO_CHAR(SYSDATE, 'HH24MISS'), 6, ' ') || --  83  ~   88
              RPAD(NVL(C_CHAR_SET, ' '), 2, ' ') || --  89 ~   90
              RPAD(NVL(C_MSG_TYPE, ' '), 2, ' ') || --  91 ~   92
              RPAD(NVL(C_MSG_FORM, ' '), 1, ' ') || --  93 ~   93
              RPAD(NVL(C_COMPANY_ID, ' '), 10, ' ') || --  94 ~  103
              RPAD(NVL(C_PSW, ' '), 10, ' ') || -- 104 ~  113
              RPAD(NVL(C_POINTER, ' '), 6, ' ') || -- 114 ~  119
              RPAD(NVL(C_RESERVED, ' '), 10, ' '); -- 120 ~  129


  SELECT  RPAD(NVL(C_FORM_ID, ' '), 10, ' ') ||    -- 1 ~  10
          RPAD(NVL(C_STATUS, ' '), 1, ' ') ||      --  11  
          RPAD(NVL(R_TB_POD_011.COMP_ID,' '),10,' ') ||    --12~21
          RPAD(NVL(R_TB_POD_011.ORDER_NO,' '),15,' ') ||   --22~36
          RPAD(NVL(R_TB_POD_011.ORDER_ITEM,' '),4,' ') ||   --37~40
          RPAD(NVL(R_TB_POD_011.LOTNO,' '),15,' ') ||       --41~55
          RPAD(NVL(R_TB_POD_011.SEQUENCENO,' '),15,' ') ||  --56~70
          RPAD(NVL(R_TB_POD_011.LINENO,' '),2,' ')||     --71~72
          RPAD(NVL(R_TB_POD_011.HOUSENO,' '),2,' ') ||      --73~74
          RPAD(NVL(R_TB_POD_011.MILL_DATE,' '),14,' ') ||      --75~88
          RPAD(NVL(R_TB_POD_011.HEATNO,' '),8,' ') ||        --89~96
          RPAD(NVL(R_TB_POD_011.INPCS,0),6,' ') ||           --97~102
          RPAD(NVL(R_TB_POD_011.INWGT,0),16,' ') ||          --103~118
          RPAD(NVL(R_TB_POD_011.TRADE_NO,' '),15,' ') ||      --119~133
          RPAD(NVL(R_TB_POD_011.ORDER_LENGTH,0),11,' ') ||    --134~144
          RPAD(NVL(R_TB_POD_011.ORDER_WIDTH,0),11, ' ') ||    --145~155
          RPAD(NVL(R_TB_POD_011.ORDER_THICK,0),11,' ') ||     --156~166
          RPAD(NVL(R_TB_POD_011.PCS_PLAN,0),9,' ') ||  --167~175
          RPAD(NVL(R_TB_POD_011.PLANWGT,0),16,' ') ||  --176~191
          RPAD(NVL(R_TB_POD_011.LOC,' '),9,' ') ||     --192~200
          RPAD(NVL(R_TB_POD_011.RECODE,' '),1,' ') ||  --201
          RPAD(NVL(R_TB_POD_011.ENDUSE,' '),1,' ') ||  --202
          RPAD(NVL(R_TB_POD_011.CUST_NO,' '),20,' ') ||       --203~222
          RPAD(NVL(R_TB_POD_011.ORDER_LACKWGT,0),13,' ') ||   --223~235
          RPAD(NVL(R_TB_POD_011.ISBOOMORDER,' '),1,' ') ||     --236
          RPAD(NVL(R_TB_POD_011.DEPT,' '),5,' ') ||    --237~241
          RPAD(NVL(R_TB_POD_011.LOCTYPE,' '),1,' ') || --242
          RPAD(NVL(R_TB_POD_011.LAYER,0),3,' ')  --243~245
  ----------------------------------------------------------------------------------------------
  --RPAD(NVL(C_FORM_ID, ' '), 10, ' ') || -- 1 ~  10
        -- RPAD(NVL(C_STATUS, ' '), 1, ' ') || --   11  
        -- RPAD(NVL(R_TB_OD_0002.LOTNO, ' '), 15, ' ') || --   12- 24
        -- RPAD(NVL(R_TB_OD_0002.ID, ' '), 4, ' ') || --   25 ~    28   
        -- RPAD(NVL(R_TB_OD_0002.ISWASTE, 0), 1, ' ') || --   29      
        -- RPAD(NVL(R_TB_OD_0002.WGT||'', 0), 12, ' ') || --   30 ~    31     
        -- RPAD(NVL(R_TB_OD_0002.PCS||'', ' '), 1, ' ') || --   32 ~    34      
        -- RPAD(NVL(R_TB_OD_0002.ORDERCALIBER||'', ' '), 8, ' ') || --   35 ~    42      
        -- RPAD(NVL(R_TB_OD_0002.ORDERWIDTH||'', ' '), 8, ' ') || --   43 ~    50      
        -- RPAD(NVL(R_TB_OD_0002.ORDERLEN||'', 0), 8, ' ') || --   51 ~    58      
        -- RPAD(NVL('', 0), 8, ' ') || --   59 ~    66    
        -- RPAD(NVL('', 0), 6, ' ') || --  67 ~     72
        -- RPAD(NVL(R_TB_OD_0002.OPERATECREW, 0), 1, ' ') || --  73 
        -- RPAD(NVL('', 0), 5, ' ') || --  74 ~     78
        -- RPAD(NVL('', 0), 6, ' ') || --  79 ~      84
        -- RPAD(NVL('', 0), 20, ' ') || --  85 ~   104
        -- RPAD(NVL('', 0), 14, ' ') || --  105 ~    118
        -- RPAD(NVL('', 0), 8, ' ') || --  119 ~   126
        -- RPAD(NVL('', 0), 1, ' ') || --  127
        -- RPAD(NVL('', 0), 1, ' ') || --  128
        -- RPAD(NVL('', 0), 10, ' ') || --  129 ~    138
        -- RPAD(NVL('', 0), 12, ' ') || --  139 ~   150
        -- RPAD(NVL('', 0), 1, ' ') || --  151
        -- RPAD(NVL('', 0), 15, ' ')--  152 ~   166
 ------------------------------------------------------------------------------------------------        
    INTO V_DATA
    FROM DUAL;

  --2018,06,20 sunbin end
  --------------------------------------------------------------------------------
  --           INTERFACE SEQUENCS
  --------------------------------------------------------------------------------

  SELECT (TO_DATE(TO_CHAR(SYSTIMESTAMP(3), 'YYYYMMDDHH24MISS'),
                  'YYYYMMDDHH24MISS') -
         TO_DATE('19700101080000', 'YYYYMMDDHH24MISS')) * 86400000 +
         TO_NUMBER(TO_CHAR(SYSTIMESTAMP(3), 'FF'))
    INTO V_TIMESTAMP
    FROM DUAL;

  --------------------------------------------------------------------------------
  --                PARAMETA ERROR CHECK
  --------------------------------------------------------------------------------

  BEGIN
    INSERT INTO TBDIPDO
    VALUES
      (V_TIMESTAMP,
       GS_TBDIPDO_SEQ.NEXTVAL,
       C_QUEUEID,
       V_HEADER,
       V_DATA,
       C_STATUS,
       NULL, -- PROCESS TIME
       NULL -- DESCRIPTION (PROCESS ERROR MESSAGE)
       );
  
  EXCEPTION
    WHEN OTHERS THEN
      P_RTN_MSG         := 'DATA ERP INTERFACE DB INSERT ERROR(TQF_RFP)';
      V_ERRDB.ERR_DESC  := SQLCODE || '>>' || SUBSTR(SQLERRM, 1, 90);
      V_ERRDB.RTN_NAME  := 'DATA SEND TO ERP SYSTEM';
      V_ERRDB.ERR_PARA1 := '';
      V_ERRDB.ERR_PARA2 := '';
      GP_ERROR(C_PGM_ID,
               'TBDIPDO',
               'B',
               V_ERRDB.ERR_DESC,
               V_ERRDB.RTN_NAME,
               V_ERRDB.ERR_PARA1,
               V_ERRDB.ERR_PARA2,
               V_RTN_MSG);
      ROLLBACK;
      RETURN;
    
  END;

  RETURN;

EXCEPTION
  WHEN PGM_EXIT THEN
    V_ERRDB.ERR_DESC := P_RTN_MSG;
    --DBMS_OUTPUT.PUT_LINE(C_PGM_ID||V_ERRDB.ERR_DESC);
    V_ERRDB.RTN_NAME  := 'DATA SEND TO ERP SYSTEM';
    V_ERRDB.ERR_PARA2 := '';
    GP_ERROR(C_PGM_ID,
             '',
             '',
             V_ERRDB.ERR_DESC,
             V_ERRDB.RTN_NAME,
             V_ERRDB.ERR_PARA1,
             V_ERRDB.ERR_PARA2,
             V_RTN_MSG);
    ROLLBACK;
    RETURN;
  
  WHEN OTHERS THEN
    V_ERRDB.ERR_DESC := SQLCODE || '>>' || SUBSTR(SQLERRM, 1, 90);
    P_RTN_MSG        := V_ERRDB.ERR_DESC;
    --DBMS_OUTPUT.PUT_LINE(C_PGM_ID||'--'||V_ERRDB.ERR_DESC);
    V_ERRDB.RTN_NAME  := 'DATA SEND TO ERP SYSTEM';
    V_ERRDB.ERR_PARA1 := '';
    V_ERRDB.ERR_PARA2 := '';
    GP_ERROR(C_PGM_ID,
             'TBDIPDO',
             'R',
             V_ERRDB.ERR_DESC,
             V_ERRDB.RTN_NAME,
             V_ERRDB.ERR_PARA1,
             V_ERRDB.ERR_PARA2,
             V_RTN_MSG);
    ROLLBACK;
    RETURN;
  
END WDC11AP;

猜你喜欢

转载自my.oschina.net/u/3740271/blog/2221464