12 KiB
12 KiB
In [4]:
# 根据订单号,查询实际包裹尺寸,实际包裹实重,实际包裹体积重, # bill账单给头程单价,实际尾端计费重,预估尾端成本,尾端附加费 import os import pandas as pd from utils.Package import Package,Package_group from utils.gtools import MySQLconnect from utils.countryOperator import OperateCountry from utils.logisticsBill import BillFactory, Billing import requests import json ods = MySQLconnect("ods") engine = ods.engine() def get_package_info_by_sql(order_df): packages = Package_group() packages_str = "" for index, row in order_df.iterrows(): if row['包裹数据'] is None: return None,"" row['包裹数据'] = json.loads(row['包裹数据']) item_list = [ {key: float(value) for key, value in package.items()} for package in row['包裹数据'].values() ] for item in item_list: if item['长'] == 0 or item['宽'] == 0 or item['高'] == 0 or item['重量'] == 0: return None,"" package = Package(row['SKU'], item['长'], item['宽'], item['高'], item['重量']) packages.add_package(package) # 实际包裹尺寸 package_str = f"{ item['重量']}|{item['长']}*{ item['宽']}*{item['高']}" packages_str += package_str + "," return packages,packages_str def get_biaozhun_bill(opCountry,order_id,postcode,convey,amount): print(order_id) # 取标准包裹数据 sql = """SELECT order_id, opl.SKU, 包裹数据 FROM dws.order_product_list opl LEFT JOIN ads.sku_package_new spi ON opl.SKU =spi.SKU WHERE order_id = %s AND opl.order_product_id REGEXP "[0-9]{15}_[0-9]*$" """ order_package_date = pd.read_sql(sql, engine, params=(order_id,)) print(order_package_date) if order_package_date['包裹数据'] is None: return "",0,0,0,0,0,"","",0 # 取账单数据 beizhu = amount conveys = 1 if convey == "海运" else 0 try: packages,packages_str = get_package_info_by_sql(order_package_date) if packages is None: return "",0,0,0,0,0,"","",0 bill = Billing(str(order_id),opCountry,packages,postcode,company_name=None,head_type=conveys,beizhu=beizhu) print(bill) tail_amount = bill.bill_dict()["预测尾端"] total_weight = sum([p.weight/1000 for p in packages.packages]) _type = bill.bill_dict()["尾端渠道"] head_amount = bill.bill_dict()["预测头程CNY"] total_amount = bill.bill_dict()["总金额USD"] volume_weight = bill.bill_dict()["体积重"] per_head = bill.bill_dict()["头程单价"] other_detail = bill.get_other_fee() return packages_str,total_weight,volume_weight,per_head,head_amount,tail_amount,other_detail,_type,total_amount except ZeroDivisionError as e: print(e) return "",0,0,0,0,0,"","",0
In [5]:
sql = """SELECT CONCAT("[",GROUP_CONCAT(pr.包裹号),"]") AS package_group , ol.order_id , ol.postcode, ol.delivery_country, ol.convey, ols.`货币`, ols.`订单总额`, ols.支付方式, ol.order_price_dollar FROM parcel pr LEFT JOIN dwd.order_list ol ON ol.order_id = pr.订单号 left JOIN ods.order_list_supplement ols ON ol.order_id = ols.订单号 WHERE order_id IN (250111180013924 , 250114055637547 , 250113020908795 , 250113090041954 , 250112064002567 , 250112105838284 , 250111100026591 , 250112131002633 , 250113090613446 , 250115164425035 , 250111231028179 , 250117024809584 , 250117005435286 , 250117100906322 , 250113100616085 , 250117053614017 , 250113011509113 , 250119211402563 , 250119153413596 , 250117234053287 , 250127001437947 , 250127175227235 , 250129051002053 , 250121125819971 , 250122061036006 , 250129112827456 , 250121212647006 , 250124213014331 , 250202204402848 , 250130194409986 , 250128015414537 , 250201063711441 , 250129075002066 ) GROUP BY ol.order_id """ order_id_df = pd.read_sql(sql,engine) order_id_df[["包裹尺寸详情","实重","体积重","头程单价","头程费用(CNY)","尾端费用(当地货币)","尾端附加费","尾端渠道","总金额(USD)"]] = order_id_df.apply(lambda x: get_biaozhun_bill(OperateCountry(x['delivery_country']), x['order_id'], x['postcode'], x['convey'], x['order_price_dollar']),axis=1,result_type='expand')
250111100026591
order_id SKU 包裹数据
0 250111100026591 2206000579 None
250111180013924
order_id SKU 包裹数据
0 250111180013924 2204856252 None
250111231028179
order_id SKU 包裹数据
0 250111231028179 2205859024 None
250112064002567
order_id SKU 包裹数据
0 250112064002567 2205793890 None
250112105838284
order_id SKU 包裹数据
0 250112105838284 2205594270 None
250112131002633
order_id SKU 包裹数据
0 250112131002633 2205979853 None
250113011509113
order_id SKU 包裹数据
0 250113011509113 2205380959 None
250113020908795
order_id SKU 包裹数据
0 250113020908795 2201598238 None
250113090041954
order_id SKU 包裹数据
0 250113090041954 2205665390 None
250113090613446
order_id SKU 包裹数据
0 250113090613446 2201598243 None
250113100616085
order_id SKU 包裹数据
0 250113100616085 2204814402 None
250114055637547
order_id SKU 包裹数据
0 250114055637547 2205905912 None
250115164425035
order_id SKU 包裹数据
0 250115164425035 2205672778 None
250117005435286
order_id SKU 包裹数据
0 250117005435286 2205415197 None
1 250117005435286 2205415198 None
2 250117005435286 2205415200 None
250117024809584
order_id SKU 包裹数据
0 250117024809584 2203733825 None
250117053614017
order_id SKU 包裹数据
0 250117053614017 2205969448 None
250117100906322
order_id SKU 包裹数据
0 250117100906322 2201598255 None
250117234053287
order_id SKU 包裹数据
0 250117234053287 2205565699 None
250119153413596
order_id SKU 包裹数据
0 250119153413596 2205878673 None
250119211402563
order_id SKU 包裹数据
0 250119211402563 2205520825 None
250121125819971
order_id SKU 包裹数据
0 250121125819971 2202074323 None
250121212647006
order_id SKU 包裹数据
0 250121212647006 2205788907 None
250122061036006
order_id SKU 包裹数据
0 250122061036006 2206135206 None
250124213014331
order_id SKU 包裹数据
0 250124213014331 2205788467 None
250127001437947
order_id SKU 包裹数据
0 250127001437947 2205511833 None
250127175227235
order_id SKU 包裹数据
0 250127175227235 2205780462 None
250128015414537
order_id SKU 包裹数据
0 250128015414537 2206279144 None
250129051002053
order_id SKU 包裹数据
0 250129051002053 2205511832 None
250129075002066
order_id SKU 包裹数据
0 250129075002066 2205905094 None
250129112827456
order_id SKU 包裹数据
0 250129112827456 2205550813 None
250130194409986
order_id SKU 包裹数据
0 250130194409986 2205025464 None
1 250130194409986 2205025465 None
2 250130194409986 2205025466 None
250201063711441
order_id SKU 包裹数据
0 250201063711441 2205524464 None
250202204402848
order_id SKU 包裹数据
0 250202204402848 2205780463 None
In [ ]:
In [3]:
order_id_df.to_clipboard()
In [ ]:
#