Обновить dags/split_subkonto2.py

This commit is contained in:
bn_user 2025-09-08 11:42:07 +00:00
parent 576c844b9b
commit ca9ed44763
1 changed files with 25 additions and 7 deletions

View File

@ -236,7 +236,7 @@ def parse_contract_cell(cell_text):
return pd.Series({ return pd.Series({
"subkonto2": cell_text, "subkonto2": cell_text,
"naimenovanie": title, "naimenovanie": title.lower(),
"nomer": number, "nomer": number,
"date_bedin": date_norm, "date_bedin": date_norm,
"date_end": None "date_end": None
@ -246,15 +246,16 @@ def read_dict_subkonto2_db(**kwargs):
engine = get_db_engine() engine = get_db_engine()
df = pd.read_sql(""" df = pd.read_sql("""
select select
osv.subkonto2 as subkonto2 osv.subkonto2 as subkonto2
, dst.naimenovanie as naimenovanie , dst.naimenovanie as naimenovanie
, coalesce(dst.nomer , osv.nomer) as nomer , osv.nomer as nomer
, coalesce(dst.date_begin , osv.date_bedin) as date_bedin , osv.date_bedin as date_begin
, coalesce(dst.date_end, osv.date_end) as date_end , osv.date_end as date_end
from public.oborotno_salbdovaya_vedomostb osv from public.oborotno_salbdovaya_vedomostb osv
left join public.dict_subkonto_two as dst left join public.dict_subkonto_two as dst
on dst.subkonto2 = osv.subkonto2 on dst.subkonto2 = osv.subkonto2
where osv.subkonto2 not in (select dst2.subkonto2 from dict_subkonto_two dst2) where osv.subkonto2 not in (select dst2.subkonto2 from dict_subkonto_two dst2)
and osv.nomer is null
""", engine) """, engine)
return df.to_dict(orient='records') return df.to_dict(orient='records')
@ -278,8 +279,25 @@ def merge_dict_and_split_1C(**kwargs):
df_dict_subkonto = pd.DataFrame.from_records(dict_subkonto) if dict_subkonto else pd.DataFrame() df_dict_subkonto = pd.DataFrame.from_records(dict_subkonto) if dict_subkonto else pd.DataFrame()
df_split_subkonto = pd.DataFrame.from_records(split_subkonto) if split_subkonto else pd.DataFrame() df_split_subkonto = pd.DataFrame.from_records(split_subkonto) if split_subkonto else pd.DataFrame()
df_subkonto = df_split_subkonto.merge(df_dict_subkonto, how='left', on='subkonto2') result_df = df_split_subkonto.merge(df_dict_subkonto, how='left', on='subkonto2', suffixes=('_split', '_dict'))
return df_subkonto.to_dict(orient='records') result_df['naimenovanie'] = result_df['naimenovanie_split']
result_df['nomer'] = np.where(
(result_df['nomer_dict'].isna()) | (result_df['nomer_split'] != result_df['nomer_dict']),
result_df['nomer_split'],
result_df['nomer_dict']
)
result_df['date_bedin'] = np.where(
result_df['date_bedin_dict'].isna(),
result_df['date_bedin_split'],
result_df['date_bedin_dict']
)
result_df['date_end'] = result_df['date_end_dict']
result_df = result_df[['subkonto2', 'naimenovanie', 'nomer', 'date_bedin', 'date_end']]
return result_df.to_dict(orient='records')
with DAG( with DAG(
dag_id='split_subkonto2', dag_id='split_subkonto2',