IF EXISTS (SELECT 1 FROM sys.objects WHERE object_id = OBJECT_ID('[dbo].[mps_gen_branchimport]') AND type = 'P')
DROP PROCEDURE [dbo].[mps_gen_branchimport]
GO
create procedure [dbo].[mps_gen_branchimport](
@cmpid int
)
as
begin
set nocount on
declare @autotype varchar(20) = 'branch' 
declare @s1 nvarchar(100) 
declare @detail nvarchar(100) 
declare @ds1 varchar(100)
declare @dss varchar(MAX)  
declare @detailold nvarchar(100) 
declare @order2 nvarchar(100) 
declare @i int 
declare @tbname varchar(50)='mps_branch'
declare @dbname varchar(50)=''
declare @fkey   varchar(50)='bc_id'  
 
declare @ord2tag2 int 
declare @sql nvarchar(MAX) 
declare @ss nvarchar(MAX) 
declare @ss1 nvarchar(MAX) 
declare @cntname varchar(1000) 

declare @web varchar(1000) 

declare @interval int 
declare @unit varchar(10) 
declare @time datetime  

select top 1 @web=auto_webservice , @sql=auto_sql , @interval=auto_interval ,  @unit=auto_unit , @time=auto_starttime from mps_auto_import with(nolock) where auto_cmpid=@cmpid and auto_type=@autotype 
set @web = isnull(@web,'')
set @sql = isnull(@sql , '' ) 
set @sql = ltrim(@sql) 

-- 如果是WEBSERVICE接口 则删除
if (@web>'')
begin
delete mps_sql where sql_cmpid=@cmpid and sql_name='branch_import' 
delete mps_task_java where tsk_cmpid=@cmpid and tsk_objtype='branch' 
return 
end 
declare @tbext varchar(1000) 

if (len(@sql)<=5) 
begin
delete mps_sql where sql_cmpid=@cmpid and sql_name='branch_import' 
delete mps_task_java where tsk_cmpid=@cmpid and tsk_objtype='branch' 
return 
end

-- 删除以前的WEB任务
delete mps_task_java where tsk_cmpid=@cmpid and tsk_objtype='branch' 

declare @tsql table(index1 int identity(1, 1),dbname varchar(50), sql nvarchar(max) , islast int) 
-- 将SQL分解开
while (@sql>'') 
begin
set @cntname='' 
set @i = charindex('[[',@sql) 
if (@i=1) 
begin
set @sql = substring(@sql,3,len(@sql)) 
set @i = charindex(']]',@sql) 
if (@i>0) 
begin
set @cntname = substring(@sql,1,@i-1) 
set @sql = substring(@sql,@i+2,len(@sql)) 
end 
set @i = charindex('[[',@sql) 
end 

if (@i>1) 
begin
set @ss = substring(@sql,1,@i-1) 
set @sql = substring(@sql,@i,len(@sql)) 
end else 
begin
set @ss = @sql 
set @sql = '' 
end
set @ss = rtrim(ltrim(@ss)) 
if (len(@ss)>10) 
begin
if (@cntname='current') set @cntname='' 
insert into @tsql(dbname,sql,islast) values(@cntname,@ss,1) 
end 
end 
 
set @i = 0 
select @i = max(index1) from @tsql where dbname='' 
set @i = isnull(@i,0) 
update @tsql set islast=0 where index1=@i 
 

declare @index int, @islast int 
declare c1 cursor LOCAL FORWARD_ONLY READ_ONLY for
select distinct index1,sql,islast  from @tsql where dbname=''  order by index1 
open c1
FETCH NEXT FROM c1 INTO @index,@ss,@islast 
WHILE (@@FETCH_STATUS = 0)
BEGIN
set @ss1 = @ss 
set @tbext = '#o_'+convert(varchar(10),@index)+'_imp_master'
set @sql = '' 
set @sql = @sql+' declare @cmpid int ='+convert(varchar(10),@cmpid)+'
     declare @taskid bigint={taskid}
     declare @operation varchar(50) ='''' 
     declare @errorinfo nvarchar(4000) ='''' 
     
declare @ord2group2 nvarchar(50) 
set @ord2group2 = '''' 
declare @newordid bigint  
 declare @i int 
 declare @nonedate datetime 
set @nonedate = CONVERT(datetime,''1910-1-1'')
 set @operation = ''continue''
 set @errorinfo = '''' 
 --- 以下是预处理事件中的临时表
 '
 -- 对@ss 进行一些函数替换
 set @ss = replace(@ss,'deletetask()','delete mps_task_kernel where tsk_id=@taskid ') 
 
 if (charindex('#master',@ss1)>0) 
 begin
 set @ss=REPLACE(@ss,'#master',@tbext) 
 set @ds1 = @dbname+@tbname 
 set @sql = @sql+char(13)+char(10)+
 'exec drop_temp_table '''+@tbext+''' '+char(13)+char(10)+
'select *   into '+@tbext+' from '+@dbname+@tbname+N' where bc_id=0 '+char(13)+char(10)
exec mps_gen_default_code @ds1 , @tbext , 'bc_id' , @dss output 
set @sql = @sql+@dss+char(13)+char(10) 
 
 end
 if (charindex('#task',@ss1)>0) 
 begin
 set @tbext = '#o_'+convert(varchar(10),@index)+'_imp_task'
 set @ss=REPLACE(@ss,'#task',@tbext) 
 set @sql = @sql+char(13)+char(10)+
 'exec drop_temp_table '''+@tbext+''' '+char(13)+char(10)+
'create table '+@tbext+'task(objtype varchar(20),ctgid int,objid bigint,objid2 bigint,cuid int,infotype nvarchar(50),info nvarchar(4000),jbid bigint) '
 end
 if (charindex('#account',@ss1)>0) 
 begin
 set @tbext = '#o_'+convert(varchar(10),@index)+'_imp_account'
 set @ss=REPLACE(@ss,'#account',@tbext) 
 set @sql = @sql+char(13)+char(10)+
 'exec drop_temp_table '''+@tbext+''' '+char(13)+char(10)+
'create table '+@tbext+'(acctype varchar(30),acccategory varchar(30),accdate varchar(30),fiidreal int,fiid int,objidreal bigint,objid bigint,origin int,value int,used int,suspended int,ready int,changed int,available int,actual int,available int,actual int) '+char(13)+char(10) 
 end
 
 
 -- 以下代码是生成子表临时表
 

set @sql=@sql+N'
 '+@ss+char(13)+char(10) 
 
 -- 如果是最后一条本SQL  就将执行提交操作
 if (@islast=0) 
 begin
 set @tbext = '#o_'+convert(varchar(10),@index)+'_imp_master'
 set @sql=@sql+N'
 if (@operation=''continue'') 
 begin
 set @nonedate = @nonedate '+CHAR(13)+CHAR(10)
 if (charindex('#master',@ss1)>0) 
 begin
 set @sql=@sql+N'
 -- 修正主表数据
 
 update '+@tbext+' set bc_cmpid='+CONVERT(varchar(10),@cmpid)+ CHAR(10)+CHAR(10) 
 
 
 set @ds1=@dbname+@tbname  
exec mps_gen_insert_code @ds1,'','bc_id',@dss output 

set @sql = @sql+char(13)+char(10)+
' insert into '+@ds1+'('+@dss+') '+char(13)+char(10) 
exec mps_gen_insert_code @ds1,'new','bc_id',@dss output 
set @sql = @sql+char(13)+char(10)+
' select   '+@dss+'  from '+@tbext+' new '+char(13)+char(10) 
end 

set @sql = @sql +N'
end 
--- 清除临时表 
'

 
if (charindex('#master',@ss1)>0) 
begin
set @sql =@sql+ 'exec drop_temp_table ''#o_'+convert(varchar(10),@index)+'_imp_master''' + char(13)+char(10) 
end 
 
if (charindex('#account',@ss1)>0) 
 begin
 set @tbext = '#o_'+convert(varchar(10),@index)+'_imp_account'
 set @sql =@sql+ 'exec drop_temp_table '''+@tbext+'''' + char(13)+char(10) 
 end
 
 set @sql =@sql + char(13)+char(10)

end
update @tsql set sql=@sql where index1=@index 
 FETCH NEXT FROM c1 INTO @index,@ss,@islast 
end  
  CLOSE c1
DEALLOCATE c1
  
  declare c1 cursor LOCAL FORWARD_ONLY READ_ONLY for
select distinct index1,dbname,sql,islast  from @tsql  order by index1 
open c1
set @sql = '' 
set @ss1 = '' 

declare @cnti int = 0 
select @cnti = count(1) from @tsql 
set @i=0
 
FETCH NEXT FROM c1 INTO @index,@cntname,@ss,@islast 
WHILE (@@FETCH_STATUS = 0)
BEGIN
if (@cntname='') 
begin
if (@cnti>1)  set @cntname='[[current]]' 
end else 
begin
set @cntname = '[['+@cntname+']]' 
set @i = 1 
end 
set @sql = @sql+@cntname+char(13)+char(10)+@ss+char(13)+char(10)  
set @ss1 = @ss1+char(13)+char(10)+@ss+char(13)+char(10)  
FETCH NEXT FROM c1 INTO @index,@cntname,@ss,@islast 
end  
CLOSE c1
DEALLOCATE c1
 if (@cnti<=1 and @i=1) set @cnti = 2 
  
  
 set @ss = '' 
 
 set @web = 'branch_import'
 delete mps_sql where sql_name=@web and sql_cmpid=@cmpid 
 if (@cnti<=1) 
 begin
 set @sql = replace(@sql,'declare @taskid bigint={taskid}','')
 set @dss = 'create '
 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].['+@web+']') and OBJECTPROPERTY(id, N'IsProcedure') = 1) set @dss = 'alter ' 
 set @sql = @dss+' procedure '+@web+ '(@taskid bigint) as 
 begin 
 set nocount on 
 '+@sql+@ss+'
 set nocount off 
 end '
 exec myprint @sql
 execute(@sql)
 insert into mps_sql(sql_cmpid,sql_name,sql_type,sql_text,sql_note,sql_params) 
 select @cmpid,@web,'MSSQL',@web+' {taskid}','自动引入' ,'bigint'
 
end else 
begin
set @sql = @sql + @ss 
exec myprint @sql
insert into mps_sql(sql_cmpid,sql_name,sql_type,sql_text,sql_note) 
 select @cmpid,@web,'MSSQL',@sql,'自动引入' 
end
 
 --set @ss1 = @ss1+@ss 
 --set @sql = @sql+@ss 
exec mps_create_task_java_item_type @cmpid,'branch'
--set @ss1 = 'create procedure aa as '+@ss1
--execute(@ss1)
set nocount off 
end