Обновить 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({
"subkonto2": cell_text,
"naimenovanie": title,
"naimenovanie": title.lower(),
"nomer": number,
"date_bedin": date_norm,
"date_end": None
@ -246,15 +246,16 @@ def read_dict_subkonto2_db(**kwargs):
engine = get_db_engine()
df = pd.read_sql("""
select
osv.subkonto2 as subkonto2
osv.subkonto2 as subkonto2
, dst.naimenovanie as naimenovanie
, coalesce(dst.nomer , osv.nomer) as nomer
, coalesce(dst.date_begin , osv.date_bedin) as date_bedin
, coalesce(dst.date_end, osv.date_end) as date_end
, osv.nomer as nomer
, osv.date_bedin as date_begin
, osv.date_end as date_end
from public.oborotno_salbdovaya_vedomostb osv
left join public.dict_subkonto_two as dst
on dst.subkonto2 = osv.subkonto2
where osv.subkonto2 not in (select dst2.subkonto2 from dict_subkonto_two dst2)
and osv.nomer is null
""", engine)
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_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')
return df_subkonto.to_dict(orient='records')
result_df = df_split_subkonto.merge(df_dict_subkonto, how='left', on='subkonto2', suffixes=('_split', '_dict'))
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(
dag_id='split_subkonto2',