60 lines
1.9 KiB
SQL
60 lines
1.9 KiB
SQL
do $$
|
|
begin
|
|
if to_regclass('public.crm_sales_expansion') is null then
|
|
raise notice 'table crm_sales_expansion does not exist, skip';
|
|
return;
|
|
end if;
|
|
|
|
if exists (
|
|
select 1
|
|
from information_schema.columns
|
|
where table_schema = 'public'
|
|
and table_name = 'crm_sales_expansion'
|
|
and column_name = 'target_dept_id'
|
|
) then
|
|
if not exists (
|
|
select 1
|
|
from information_schema.columns
|
|
where table_schema = 'public'
|
|
and table_name = 'crm_sales_expansion'
|
|
and column_name = 'target_dept'
|
|
) then
|
|
alter table crm_sales_expansion add column target_dept varchar(100);
|
|
end if;
|
|
|
|
update crm_sales_expansion s
|
|
set target_dept = coalesce(
|
|
nullif(s.target_dept, ''),
|
|
(
|
|
select d.item_label
|
|
from sys_dict_item d
|
|
where d.type_code = 'tz_ssbm'
|
|
and d.item_value = s.target_dept_id::varchar
|
|
and d.status = 1
|
|
and coalesce(d.is_deleted, 0) = 0
|
|
order by d.sort_order asc nulls last, d.dict_item_id asc
|
|
limit 1
|
|
),
|
|
(
|
|
select o.org_name
|
|
from sys_org o
|
|
where o.id = s.target_dept_id
|
|
limit 1
|
|
),
|
|
s.target_dept_id::varchar
|
|
)
|
|
where s.target_dept_id is not null;
|
|
|
|
alter table crm_sales_expansion drop column target_dept_id;
|
|
elsif exists (
|
|
select 1
|
|
from information_schema.columns
|
|
where table_schema = 'public'
|
|
and table_name = 'crm_sales_expansion'
|
|
and column_name = 'target_dept'
|
|
) then
|
|
alter table crm_sales_expansion
|
|
alter column target_dept type varchar(100);
|
|
end if;
|
|
end $$;
|