From fde14fb1570a49c44159a3c5b78b54c2d5e32fb4 Mon Sep 17 00:00:00 2001 From: bn_user Date: Tue, 9 Sep 2025 13:41:26 +0000 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20dags/split=5Fsubkonto2.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dags/split_subkonto2.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/dags/split_subkonto2.py b/dags/split_subkonto2.py index 7b80857..a5bbcd2 100644 --- a/dags/split_subkonto2.py +++ b/dags/split_subkonto2.py @@ -244,9 +244,11 @@ def parse_contract_cell(cell_text): def read_dict_subkonto2_db(**kwargs): engine = get_db_engine() - df = pd.read_sql(""" - select - osv.subkonto2 as subkonto2 + df = pd.read_sql( + """ + select distinct + osv.schet as schet + , osv.subkonto2 as subkonto2 , osv.nomer as nomer , osv.date_begin as date_begin , osv.date_end as date_end @@ -255,6 +257,7 @@ def read_dict_subkonto2_db(**kwargs): on dst.subkonto2 = osv.subkonto2 where osv.subkonto2 not in (select dst2.subkonto2 from public.dict_subkonto_two dst2) and (osv.nomer is null or osv.date_begin is null or osv.date_end is null) + and (osv.schet like '%01%' or osv.schet like '%03%') """, engine) return df.to_dict(orient='records') @@ -262,9 +265,11 @@ def split_subkonto_from_1C(**kwargs): engine = get_db_engine() df = pd.read_sql(""" select distinct - osv.subkonto2 as subkonto2 + osv.schet as schet + , osv.subkonto2 as subkonto2 from public.oborotno_salbdovaya_vedomostb osv where osv.subkonto2 not in (select dst2.subkonto2 from public.dict_subkonto_two dst2) + and (osv.schet like '%01%' or osv.schet like '%03%') """, engine) if df.empty: return pd.DataFrame(columns=['subkonto2', 'naimenovanie', 'nomer', 'date_begin', 'date_end']).to_dict(orient='records') @@ -284,6 +289,7 @@ def merge_dict_and_split_1C(**kwargs): df_split_subkonto = pd.DataFrame.from_records(split_subkonto) if split_subkonto else pd.DataFrame() result_df = df_split_subkonto.merge(df_dict_subkonto, how='left', on='subkonto2', suffixes=('_split', '_dict')) + result_df['schet'] = result_df['schet_dict'] result_df['naimenovanie'] = None result_df['nomer'] = np.where( @@ -300,17 +306,18 @@ def merge_dict_and_split_1C(**kwargs): result_df['date_end'] = result_df['date_end_dict'] - result_df = result_df[['subkonto2', 'nomer', 'date_begin', 'date_end']] + result_df = result_df[['schet', 'subkonto2', 'nomer', 'date_begin', 'date_end']] engine = get_db_engine() with engine.begin() as conn: - conn.execute('CREATE TEMP TABLE temp_dict_subkonto_two (subkonto2 text null, nomer text null, date_begin text null, date_end text null)') + conn.execute('CREATE TEMP TABLE temp_dict_subkonto_two (schet text null, subkonto2 text null, nomer text null, date_begin text null, date_end text null)') result_df.to_sql('temp_dict_subkonto_two', con=conn, if_exists='append', index=False, method='multi') conn.execute( ''' - INSERT INTO public.dict_subkonto_two (subkonto2, nomer, date_begin, date_end) + INSERT INTO public.dict_subkonto_two (schet, subkonto2, nomer, date_begin, date_end) SELECT - subkonto2 + schet + , subkonto2 , nomer , date_begin , date_end