create or replace procedure sd_hospital.SP_YF_GJYBQR_SPXXSC( PYBJKID in varchar2 ,--[1]输入:医保接口ID PJKCJBM in varchar2 ,--[2]输入:接口场景编码 PBRID00 in number ,--[3]输入:BRID00 PZYID00 in number ,--[4]输入:GHID000 PZYH000 in varchar2 ,--[5]输入:GHH000 PCZY000 in number ,--[6]输入:操作员编码 PCZYXM0 in varchar2 ,--[7]输入:操作员姓名 PCZYKS0 in number ,--[8]输入:操作员科室 PQQCSID in varchar2 default '' ,--[9]输入:参数中间ID PINXML0 in varchar2 default '' ,--[10]输入:请求参数(XML) POTHER0 in varchar2 default '' ,--[11]输入:备用参数 PCOMMIT in varchar2 default 'N' ,--[12]输入:是否提交事务 Y:提交 N:不提交 PZXZT00 out number ,--[13]输出:执行状态 0:失败 1:成功 POUTXML out varchar2 ,--[14]输出:出参(XML) PERRMSG out varchar2 --[15]输出:错误信息 ) as -- MODIFICATION HISTORY -- Person Date Comments -- wac 2025.09.17 created by 移植HIS9,归档至HIS13 【3507】商品信息删除_日志生成 YF13-20250917-005 -- wac 2025.10.15 撤销上传YF_YBZSRZ.ZT0000在撤销之后改为0 YF13-20251015-001 -- --------- ---------- ------- LS_COUNT0 number(12,2); LS_CZRQ00 char(8); LS_CZSJ00 char(8); LS_JKZT00 SF_YBJKRZ.JKZT00%type; --接口状态 0:HIS请求成功 1:接口交互成功 2:HIS院内更新成功 LS_HISCS0 SF_YBJKRZ.HISCS0%type; --HIS前台请求参数 in_SCLX00 varchar2(10); --删除类型,1-盘存信息;2-库存变更信息;3-采购信息;4-销售信息 in_ZSID00 varchar2(20); --追溯id in_ZSYPID varchar2(20); --药品追溯id LD_ZSID00 YF_YBZSRZ.ZSID00%type; --追溯id LD_ZSYPID YK_ZSRKPC.ZSYPID%type; --药品追溯id LS_retRslt varchar2(6); --1.retRslt: 返回结果 字符型(6) LS_msgRslt varchar2(2000); --2.msgRslt: 返回信息 字符型(2000) begin PZXZT00:=0; --输出:执行状态 0:失败 1:成功 POUTXML:=null;--输出:出参(XML) PERRMSG:=null;--输出:错误信息 LS_CZRQ00:=to_char(sysdate,'YYYYMMDD'); LS_CZSJ00:=to_char(sysdate,'HH24:MI:SS'); LS_JKZT00:=2;--接口状态 0:HIS请求成功 1:接口交互成功 2:HIS院内更新成功 --获取前端传入的追溯id in_SCLX00 := trim(substrb(SF_XT_GETXMLSTR('sclx00',PINXML0),1,10)); --删除类型 ld_ZSID00 := 0; in_ZSID00 := substrb(SF_XT_GETXMLSTR('zsid00',PINXML0),1,16); if in_ZSID00 is null then in_ZSID00 := substrb(SF_XT_GETXMLSTR('zsid00',LS_HISCS0),1,16); end if; if in_ZSID00 is not null then begin ld_ZSID00 := to_number(in_ZSID00); exception when others then ld_ZSID00 := 0; end; end if; ld_ZSYPID := 0; in_ZSYPID := substrb(SF_XT_GETXMLSTR('zsypid',PINXML0),1,16); if in_ZSYPID is null then in_ZSYPID := substrb(SF_XT_GETXMLSTR('zsypid',LS_HISCS0),1,16); end if; if in_ZSYPID is not null then begin ld_ZSYPID := to_number(in_ZSYPID); exception when others then ld_ZSYPID := 0; end; end if; --解析报文返回值 LS_retRslt := nvl(substrb(trim(SF_SF_GETYBJKMX(PYBJKID,'retRslt','1','result')),1,20),'1'); --1.retRslt: 返回结果 字符型(6) LS_msgRslt := substrb(SF_SF_GETYBJKMX(PYBJKID,'msgRslt','1','result'),1,2000); --2.msgRslt: 返回信息 字符型(2000) if in_SCLX00 = '4' and ld_ZSID00 > 0 then --删除销售数据 if LS_retRslt = '1' then update YF_YBZSRZ set ZT0000='0',YBJKID = '',SCRQ00 = '',SCSJ00='' where ZSID00=ld_ZSID00; --update YF_CFZSMX set SCZT00='0' where (YZLB00,YPQLPC,YPNM00,ZSM000) in (select YZLB00,YPQLPC,YPNM00,ZSM000 from YF_YZZSMX where ZSID00=ld_ZSID00 and ZT0000='1'); else PERRMSG := '删除销售追溯码失败!失败原因:'||LS_msgRslt; PZXZT00 := 0; --执行状态 0:失败 1:成功 return; end if; elsif in_SCLX00 in ('1','2') and LD_ZSYPID > 0 then if LS_retRslt = '1' then update YK_ZSRKPC set ZT0000='4' where ZSYPID=LD_ZSYPID; select count(1) into LS_COUNT0 from YK_ZSRKPC where ZSID00=ld_ZSID00 and ZT0000='1'; if LS_COUNT0 = 0 then update YK_YBZSRZ set ZT0000='4' where ZSID00=ld_ZSID00; end if; else PERRMSG := '删除库存变更追溯码失败!失败原因:'||LS_msgRslt; PZXZT00 := 0; --执行状态 0:失败 1:成功 return; end if; end if; --修改日志表 update SF_YBJKRZ set JKZT00=LS_JKZT00 where YBJKID=PYBJKID; if PCOMMIT='Y' then commit; end if; PZXZT00:=1; --输出:执行状态 0:失败 1:成功 PERRMSG:=null; --输出:错误信息 exception when no_data_found then PZXZT00:=0; PERRMSG:=substrb('药房医保接口(商品信息删除)交互确认失败!原因:'||sqlerrm,1,200); rollback; when others then PZXZT00:=0; PERRMSG:=substrb('药房医保接口(商品信息删除)交互确认失败!原因:'||sqlerrm,1,200); rollback; end; /