Java中间表接口_包含头和明细的接口存储过程(从中间表读取数据到系统)

create or replace package body PA_BOM is

/*

*功能:获取中间表数据,插入更新BOM信息*作者:KAIQI.ZHAO* 创建日期 2019-06-06

* 最后修改时间 2019-06-06

*/

proceduresp_bom(v_bom_id IN varchar2,

material_code IN varchar2,

bom_code IN varchar2,

V_MSG OUT VARCHAR2)--传入code,传出异常信息,执行状态,处理时间isv_con number;

v_item_id number;

v_con_code number;--v_con_sum number;

PRAGMA AUTONOMOUS_TRANSACTION;--开启自定义事务

SIGING_EXCEPTION EXCEPTION;--自定义异常beginSELECT ID into v_item_id FROM WMS_ITEM where CODE=material_code;--SELECT count(1) into v_con_sum FROM WMS_BOM;if v_item_id is null thenV_MSG := '物料信息不存在!';raiseSIGING_EXCEPTION;elseSELECT count(1) into v_con FROM WMS_BOM where ID =v_bom_id;if v_con = 0 thenSELECT count(1) into v_con_code FROM WMS_BOM where CODE =bom_code;if v_con_code > 0 thenV_MSG := 'BOM编码已存在!';raiseSIGING_EXCEPTION;elseINSERT INTO WMS_BOM

(ID,

BE_DELETE,

CREATED_TIME,

UPDATE_TIME,

CODE,

COMPANY_ID,

STATUS,

BOM_NAME,

ITEM_ID,

QTY,

VERSION,

PRICE)

SELECT TO_NUMBER(v_bom_id),'N',

ERP_IMPORT_TIME,

LAST_CHG_TIME,

BOM_CODE,1,'E',

BOM_NAME,

v_item_id,

QTY,1,

0f

FROM JSBOM

WHERE ID=v_bom_id;end if;else

--否则,更新WMSBOM表中此ID的数据

SELECT count(1)

into v_con_code

FROM WMS_BOM

where CODE=bom_code

AND ID<>TO_NUMBER(v_bom_id);if v_con_code > 0 thenV_MSG := 'BOM编码已存在于其他BOM_ID的数据中,请检查数据ID和编码是否于历史数据重复!';raiseSIGING_EXCEPTION;elseUPDATE Wms_Bom

SET (CREATED_TIME, UPDATE_TIME, BOM_NAME, Qty, Item_Id)=(SELECT ERP_IMPORT_TIME,

LAST_CHG_TIME,

BOM_NAME,

QTY,

v_item_id

FROM JSBOM

WHERE CODE=bom_code);end if;end if;end if;--更新中间表中的是否已读字段,将未读改为已读

UPDATE JSBOM

SET IS_READ= '1', WMS_RECEIVE_TIME =TO_CHAR(SYSDATE())

WHERE ID=v_bom_id;

COMMIT;

EXCEPTION

WHEN SIGING_EXCEPTION THEN

ROLLBACK;

RAISE_APPLICATION_ERROR(-20001, V_MSG);

COMMIT;

WHEN OTHERS THEN

ROLLBACK;

RAISE_APPLICATION_ERROR(-20999, DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);

COMMIT;endsp_bom;/*

*功能:获取中间表数据,插入更新BOM_DETAIL信息*作者:KAIQI.ZHAO* 创建日期 2019-06-06

* 最后修改时间 2019-06-06

*/

proceduresp_bom_detail(v_bom_id IN varchar2,

v_item_id IN varchar2,

v_item_code IN varchar2,

material_code IN varchar2,

V_MSG OUT VARCHAR2)--传入code,传出异常信息,执行状态,处理时间is

--定义变量

v_con_bom number;

v_con_bom_detail number;

v_con_bom_detail_code number;

v_li_item_id number;

v_be_inventory VARCHAR2(1CHAR);

v_item_bom_id VARCHAR2(1CHAR);

v_con_parent_bom number;

v_con_code number;

PRAGMA AUTONOMOUS_TRANSACTION;--开启自定义事务

SIGING_EXCEPTION EXCEPTION;--自定义异常begin

--查询物料是否存在

SELECT ID into v_li_item_id FROM WMS_ITEM where CODE=material_code;if v_li_item_id is null thenV_MSG := '物料信息不存在!';raiseSIGING_EXCEPTION;else

--查询BOM是否存在

SELECT count(1)

into v_con_bom

FROM WMS_BOM

where ID=TO_NUMBER(v_bom_id);if v_con_bom < 0 thenV_MSG := 'BOM信息不存在!';raiseSIGING_EXCEPTION;else

--根据ID查询detail是否存在

SELECT count(1)

into v_con_bom_detail

FROM Wms_Bom_Detail

where ID=TO_NUMBER(v_item_id);--查是否虚拟件

SELECT IS_INVENTORY

into v_be_inventory

FROM JSBOM_ITEM

where ITEM_ID=v_item_id;--查父BOMID

SELECT ITEM_BOM_ID

into v_item_bom_id

FROM JSBOM_ITEM

where ITEM_ID=v_item_id;if v_be_inventory <> '1' thenv_be_inventory := 'Y';elsev_be_inventory := 'N';end if;--判断父BOM是否存在if v_item_bom_id is not null thenSELECT count(1)

into v_con_parent_bom

FROM Wms_Bom

where ID=TO_NUMBER(v_item_bom_id);if v_con_parent_bom = 0 thenV_MSG := '父BOM信息不存在!';raiseSIGING_EXCEPTION;end if;end if;if v_con_bom_detail = 0 then

--如果不存在,那么根据DETAIL_CODE查明细编码是否已经存在了

SELECT count(1)

into v_con_bom_detail_code

FROM Wms_Bom_Detail

where NUMBER_CODE=v_item_code;if v_con_bom_detail_code > 0 thenV_MSG := '分录编码已存在于其他BOM_DETAIL_ID的数据中,请检查数据ID和编码是否于历史数据重复!';raiseSIGING_EXCEPTION;elseINSERT INTO WMS_BOM_DETAIL

(ID,

BE_DELETE,

CREATED_TIME,

UPDATE_TIME,

VERSION,

BOM_ID,

ITEM_ID,

QTY,

BEINVENTORY,

NUMBER_CODE,

NUMBER_NAME,

PARENT_BOM_ID)

SELECT TO_NUMBER(v_item_id),'N',

ERP_IMPORT_TIME,

SYSDATE(),1,

TO_NUMBER(v_bom_id),

v_li_item_id,

QTY,

v_be_inventory,

v_item_code,

ITEM_NAME,

ITEM_BOM_ID

FROM JSBOM_ITEM

WHERE ITEM_ID=v_item_id;end if;else

--更新

SELECT count(1)

into v_con_code

FROM WMS_BOM_DETAIL

where NUMBER_CODE=v_item_code

AND ID<>TO_NUMBER(v_item_id);if v_con_code > 0 thenV_MSG := '分录编码已存在于其他BOM_DETAIL_ID的数据中,请检查数据ID和编码是否于历史数据重复!';raiseSIGING_EXCEPTION;elseUPDATE Wms_Bom_Detail

SET (CREATED_TIME,

UPDATE_TIME,

BOM_ID,

ITEM_ID,

BEINVENTORY,

QTY,

NUMBER_CODE,

NUMBER_NAME,

PARENT_BOM_ID)=(SELECT ERP_IMPORT_TIME,

SYSDATE(),

TO_NUMBER(bom_id),

v_li_item_id,

v_be_inventory,

QTY,

v_item_code,

ITEM_NAME,

ITEM_BOM_ID

FROM JSBOM_ITEM

WHERE ITEM_ID=v_item_id);end if;end if;end if;end if;--更新中间表中的是否已读字段,将未读改为已读

UPDATE JSBOM_ITEM

SET IS_READ= '1', WMS_RECEIVE_TIME =TO_CHAR(SYSDATE())

WHERE ITEM_ID=v_item_id;

COMMIT;

EXCEPTION

WHEN SIGING_EXCEPTION THEN

ROLLBACK;

RAISE_APPLICATION_ERROR(-20001, V_MSG);

COMMIT;

WHEN OTHERS THEN

ROLLBACK;

RAISE_APPLICATION_ERROR(-20999, DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);

COMMIT;endsp_bom_detail;/*

*功能:job运行监听*作者:KAIQI.ZHAO* 创建日期 2019-06-06

* 最后修改时间 2019-06-06 14:35:29

*/

procedure sp_bom_listener_log(v_Date in date, V_MSG IN VARCHAR2) isv_con number;

PRAGMA AUTONOMOUS_TRANSACTION;beginselect count(1)

into v_con

from TMS_INTERFACE_LISTENER

where code= 'sp_bom_and_detail';if v_con = 0 thenINSERT INTO TMS_INTERFACE_LISTENER

(ID,

CODE,

TASK_NAME,

LAST_EXECUTE_DATE,

INTERVAL_VALUE,

STATUS,

EXCEPTION_LOG)

values

(seq_interfacelistener.nextval,'sp_bom_and_detail','BOM基础资料及其明细抓取',

v_Date,3,'ENABLED',

V_MSG);

COMMIT;elseupdate TMS_INTERFACE_LISTENERset LAST_EXECUTE_DATE = v_date, EXCEPTION_LOG =V_MSG

WHERE code= 'sp_bom_and_detail';

COMMIT;end if;

EXCEPTION

WHEN OTHERS THEN

ROLLBACK;endsp_bom_listener_log;end PA_BOM;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值