美文网首页
oracle日常开发-日志回流改造

oracle日常开发-日志回流改造

作者: JX灬君 | 来源:发表于2021-07-14 16:25 被阅读0次
  1. 数据库结构改动
  • 1)执行脚本1 增加表字段
create table T_SYS_JDZSCONFIGURE
(
 device_id       VARCHAR2(510),
 user_ip         VARCHAR2(510),
 appname         VARCHAR2(510),
 dbinstance_name VARCHAR2(510),
 url             VARCHAR2(4000)
);

create table T_OMSJDORDERLINK
(
 appname      VARCHAR2(510),
 jd_id        VARCHAR2(510),
 user_ip      VARCHAR2(510),
 user_id      VARCHAR2(510),
 device_id    VARCHAR2(510),
 file_md5     VARCHAR2(510),
 orderids     VARCHAR2(510),
 operation    VARCHAR2(510),
 url          VARCHAR2(510),
 sendto_url   VARCHAR2(510),
 db           VARCHAR2(510),
 sql          VARCHAR2(510),
 logtype      NUMBER,
 createtime   DATE,
 uploadstatus NUMBER,
 id           NUMBER not null,
 shopid       NUMBER,
 updatetime     DATE,
 sellernick      VARCHAR2(510),
 PLATFROM     NUMBER,      
 ATI      VARCHAR2(510)  default '0000000000',         
 OPERATIONTYPE    NUMBER
)
partition by range (CREATETIME)  
interval (NUMTODSINTERVAL(1, 'day'))
(partition part_t01 values less than(to_date('2019-11-01', 'yyyy-mm-dd')));
;

-- Add comments to the columns 
comment on column T_OMSJDORDERLINK.jd_id
 is 'sellernick';
comment on column T_OMSJDORDERLINK.file_md5
 is '如对应订单操作为导出,导出的文件MD5值';
comment on column T_OMSJDORDERLINK.orderids
 is '订单号列表,用英文逗号分隔,每次最多100条记录。如果超过100条,拆分成多条请求';
comment on column T_OMSJDORDERLINK.operation
 is '表附录一 订单操作类型定义表';
comment on column T_OMSJDORDERLINK.url
 is '客户端请求的URL,wmsurl';
comment on column T_OMSJDORDERLINK.sendto_url
 is '订单推送的目的地URL,比如快递公司的API';
comment on column T_OMSJDORDERLINK.db
 is '连接的数据库实例名称或IP';
comment on column T_OMSJDORDERLINK.sql
 is 'sql语句';
comment on column T_OMSJDORDERLINK.logtype
 is '日志类型:1登录 2订单访问 3传第三方 4数据库操作日志';
comment on column T_OMSJDORDERLINK.createtime
 is '创建时间';
comment on column T_OMSJDORDERLINK.uploadstatus
 is '上报状态';
comment on column T_OMSJDORDERLINK.updatetime
 is '更新时间';
comment on column T_OMSJDORDERLINK.sellernick
 is '店铺昵称';
-- Create/Recreate primary, unique and foreign key constraints 
alter table T_OMSJDORDERLINK
 add constraint PK_T_OMSJDORDERLINK primary key (ID)
 using index ;
create index i_T_OMSJDORDERLINK_01 on T_OMSJDORDERLINK (uploadstatus, platfrom, operationtype, logtype) local;
create index i_T_OMSJDORDERLINK_02 on T_OMSJDORDERLINK (shopid) local;
  1. 数据库存储过程改造
  • 1)新增存储过程 sp_oms_addjdorderlink
    1. 修改订单上传云仓存储过程 (如果不启用云仓可以忽略)
oms_pt_orderso

line 54 增加4个字段
 v_ordershopid         NUMBER;
  v_ieswarehouseid      NUMBER;
  v_tid                 NUMBER;
  v_code                NUMBER;
  v_msg                 VARCHAR2(2000);

line 96 修改
platform, t.ordershopid, tid, t.ieswarehouseid
v_platform, v_ordershopid, v_tid, v_ieswarehouseid

line 258 增加逻辑
 END IF;
   --------------   
IF nvl(v_platform, 0) IN (2, 3, 4,102)
      THEN
        --京东日志类型:1登录 2订单访问 3传第三方 4数据库操作日志 
        sp_oms_addjdorderlink(v_platform, v_tid, v_ieswarehouseid, '', '', v_ordershopid,
                              '', 3, 0, '传云仓宙斯', v_code, v_msg);
        sp_oms_addjdorderlink(v_platform, v_tid, v_ieswarehouseid, '', '', v_ordershopid,
                              'UPDATE t_omsonlineorder t SET t.istodrp = 1 WHERE id =' || v_tab_order(v).id || ';',
                              4, 0, '传云仓宙斯', v_code, v_msg);
      END IF;
------------------      
COMMIT;
v_succeed_cnt := v_succeed_cnt + 1;
  • 3)修改订单传WMS回写存储过程
sp_oms_api_updateorderstatus

line 17 增加
 v_platform       NUMBER;
  v_ieswarehouseid NUMBER;
  v_tid            NUMBER;

line29 增加
, tid, a.ieswarehouseid, a.platform
, v_tid, v_ieswarehouseid, v_platform

line 102 增加
<<update_success>>
  sp_oms_addorderlink(v_sourcecode, v_ordershopid, 'QIMEN_CP_NOTIFY', code, msg);
-----------------------------  
   IF v_platform IN (2, 3, 4,102)
  THEN
    --京东日志类型:1登录 2订单访问 3传第三方 4数据库操作日志 
    sp_oms_addjdorderlink(v_platform, v_tid, v_ieswarehouseid, '', '', v_ordershopid, '',
                          3, 0, '传WMS宙斯', code, msg);
    sp_oms_addjdorderlink(v_platform, v_tid, v_ieswarehouseid, '', '', v_ordershopid,
                          '     UPDATE t_omsonlineorder t  SET  orderstatus = 4   WHERE id =' ||
                           orderid || ';', 4, 0, '传WMS宙斯', code, msg);
  END IF;
  ---------------------------------
  sp_oms_insertorderlog(orderid,
  • 4)修改订单审核存储过程
sp_oms_auditorder

line 18  增加
  v_outcode        NUMBER;
  v_platform       NUMBER;
  v_ieswarehouseid NUMBER;
  v_tid            NUMBER;

line 26 增加
, a.platform, a.ieswarehouseid, a.tid
 v_platform, v_ieswarehouseid, v_tid

line 46 增加
  sp_oms_addorderlink(v_sourcecode, v_ordershopid, 'QIMEN_ERP_CHECK', code, v_outmsg);
 ------------------------------- 
  IF v_platform IN (2, 3, 4,102)
  THEN
    --京东日志类型:1登录 2订单访问 3传第三方 4数据库操作日志 
    sp_oms_addjdorderlink(v_platform, v_tid, v_ieswarehouseid, '', '', v_ordershopid, '',
                          2, 9, '审核宙斯', v_outcode, v_outmsg);
    sp_oms_addjdorderlink(v_platform, v_tid, v_ieswarehouseid, '', '', v_ordershopid,
                          'UPDATE t_omsonlineorder SET orderstatus = 3, modifieddate = ' ||
                           SYSDATE || ', audittime = ' || SYSDATE ||
                           ' WHERE id = rorderid AND orderstatus = 1;', 4, 9, '审核宙斯',
                          v_outcode, v_outmsg);
  END IF;
-------------------------------------------
END;

  • 5) 修改订单取消存储过程
sp_oms_cancelorder

line 33  增加
  v_tid               NUMBER;

line 44 增加
,tid
,v_tid

line 126 增加
---------------------------
 IF v_platform IN (2, 3, 4,102)
    THEN
      --京东日志类型:1登录 2订单访问 3传第三方 4数据库操作日志 
      sp_oms_addjdorderlink(v_platform, v_tid, v_ieswarehouseid, '', '', v_ordershopid, '',
                            2, 4, '取消传宙斯', code, msg);
      sp_oms_addjdorderlink(v_platform, v_tid, v_ieswarehouseid, '', '', v_ordershopid,
                            'UPDATE t_omsonlineorder SET orderstatus = 7, modifieddate = ' ||
                             SYSDATE ||
                             '  WHERE id = v_orderid AND orderstatus IN (1, 2, 3, 4, 51, 52);',
                            4, 4, '取消传宙斯', code, msg);
    END IF;                      
  ---------------------------------------------------                         
    --如果不是缺货状态,需要释放库存
  • 6)修改批量获取日志存储过程
sp_oms_getuploadbatchlog

line 81 增加
---------------------
ELSIF v_platfrom = 102 THEN
        SELECT t.id BULK COLLECT
        INTO v_tab_ids
        FROM t_omsjdorderlink t
        INNER JOIN t_iesshop p ON t.shopid = p.id
                           AND p.isactive = 1
        WHERE rownum <= pagesize
        AND t.createtime >= SYSDATE - 30
        AND nvl(uploadstatus, 0) = 0
        AND p.platform = v_platfrom
        AND t.logtype != 1;

        --更新物流下载中状态
        UPDATE t_omsjdorderlink
        SET uploadstatus = 2
        WHERE id IN (SELECT column_value
                     FROM TABLE(v_tab_ids));
        --查询数据
        OPEN o_cur FOR
            SELECT t.id, t.appname, t.jd_id, t.user_ip, t.user_id, t.device_id,
                   t.file_md5, t.orderids, t.operation, t.url, t.SQL, t.db,
                   t.logtype, t.shopid, t.sendto_url,
                   nvl(t.operationtype, 0) operationtype, t.ati, p.shopsecret,
                   p.sellernick, t.createtime
            FROM t_omsjdorderlink t
            INNER JOIN t_iesshop p ON t.shopid = p.id
                               AND p.isactive = 1
            WHERE t.id IN (SELECT column_value
                           FROM TABLE(v_tab_ids));

  END IF;
--------------------------
  • 7) 修改订单作废存储过程
sp_oms_setinvalid

line 26 增加
 v_code            NUMBER;
  v_msg             VARCHAR2(500);

line 60 增加
  --开始循环订单,进行取消逻辑
  --By ljz 20171101 速度优化
  FOR vactive IN (SELECT b.orderstatus, b.id AS orderid,
                         nvl(b.pickinglistid, 0) AS pickinglistid, 
--------------------------------------
b.platform, b.tid,
                         b.ieswarehouseid, b.ordershopid
-----------------------------------------------

line 122 增加
----------------------------
 IF vactive.platform IN (2, 3, 4,102)
    THEN
      --京东日志类型:1登录 2订单访问 3传第三方 4数据库操作日志 
      sp_oms_addjdorderlink(vactive.platform, vactive.tid, vactive.ieswarehouseid, '', '',
                            vactive.ordershopid, '', 2, 8, '作废传宙斯', v_code, v_msg);
      sp_oms_addjdorderlink(vactive.platform, vactive.tid, vactive.ieswarehouseid, '', '',
                            vactive.ordershopid,
                            'UPDATE t_omsonlineorder SET orderstatus = 8, modifieddate = ' ||
                             SYSDATE ||
                             '  WHERE id = v_orderid AND orderstatus IN (1, 2, 3, 4, 51, 52);',
                            4, 8, '作废传宙斯', v_code, v_msg);
    END IF;
------------------------------------
    --插入订单作废日志
  • 8)修改订单传分销存储过程
sp_otb_orderso_create_retail

line 62 增加 (ordershopid        v_otb_onlineorder.ordershopid%type)
platform            v_otb_onlineorder.platform%TYPE,
 tid                 v_otb_onlineorder.tid%TYPE,
 ieswarehouseid      v_otb_onlineorder.ieswarehouseid%TYPE);

line 126 增加(t.ordershopid)
, t.platform, t.tid, t.ieswarehouseid BULK COLLECT

line 762 增加
 GOTO endloop;
      END IF;
-------------------------------------------      
      IF v_oms_orderso(v) . platform IN (2, 3, 4, 102) THEN
          --京东日志类型:1登录 2订单访问 3传第三方 4数据库操作日志 
          sp_oms_addjdorderlink(v_oms_orderso(v) . platform,
                                v_oms_orderso(v) . tid,
                                v_oms_orderso(v) . ieswarehouseid, '', '',
                                v_oms_orderso(v).ordershopid, '', 3, 0,
                                '传WMS宙斯', code, msg);
          sp_oms_addjdorderlink(v_oms_orderso(v).platform,
                                v_oms_orderso(v) . tid,
                                v_oms_orderso(v) . ieswarehouseid, '', '',
                                v_oms_orderso(v) . ordershopid,
                                '     UPDATE t_omsonlineorder t  SET  istodrp = 1    WHERE id =' ||
                                 v_oms_orderso(v).id || ';', 4, 0,
                                '传WMS宙斯', code, msg);
      END IF;
-----------------------------------      
      v_totalsuccount := v_totalsuccount + 1;
  • 9) 修改订单传分销存储过程(锁库存)
sp_otb_occupy_create_retail

line 39 增加
, t.ordershopid, t.tid, t.platform

line 359 增加
IF SQL%ROWCOUNT = 0 THEN
        --raise_application_error(-20201, '该单据已生成零售与调拨单!');
        ROLLBACK;
        GOTO endloop;
      END IF;
-------------------------------------      
      IF v.platform IN (2, 3, 4, 102) THEN
          --京东日志类型:1登录 2订单访问 3传第三方 4数据库操作日志 
          sp_oms_addjdorderlink(v.platform, v.tid, v.ieswarehouseid, '',
                                '', v.ordershopid, '', 3, 0, '传WMS宙斯',
                                code, msg);
          sp_oms_addjdorderlink(v.platform, v.tid, v.ieswarehouseid, '',
                                '', v.ordershopid,
                                '     UPDATE t_omsonlineorder t  SET istodrp = 1   WHERE id =' || v.id || ';',
                                4, 0, '传WMS宙斯', code, msg);
      END IF;
----------------------------------------------------------      
      code := 1;
      msg  := v.id || '成功!';
  • 10) 配置基础表数据
11_INIT_DATA
  • 11) 配置自动任务
12_配置自动任务

处理序号问题
select max(id) from T_SYSAUTOTASK;
WSeq_T_SYSAUTOTASK
  • 12)检查字段和类型
select * from all_tab_columns 
where owner=upper('bosnds3')  --注意用户
and table_name in (upper('T_OMSREFUNDORDER'),upper('t_omsonlineorder'))
and column_name in (upper('ORIGINALRECEIVMOBILE1'),upper('receivmobile'));

如果不一致
alter table T_OMSREFUNDORDER add  ORIGINALRECEIVMOBILE1 varchar2(510);
update T_OMSREFUNDORDER set ORIGINALRECEIVMOBILE1 =ORIGINALRECEIVMOBILE;
alter table T_OMSREFUNDORDER drop column ORIGINALRECEIVMOBILE;
alter table T_OMSREFUNDORDER rename column ORIGINALRECEIVMOBILE1 to ORIGINALRECEIVMOBILE;

相关文章

网友评论

      本文标题:oracle日常开发-日志回流改造

      本文链接:https://www.haomeiwen.com/subject/krkypltx.html