Commit add0f18a authored by rico.liu's avatar rico.liu

add deal pic info

parent 3e9c9543
......@@ -13,6 +13,9 @@ import pandas as pd
import time
from public_function import *
import os
import base64
import paramiko
import uuid
import datetime
......@@ -111,6 +114,9 @@ def LoadData(batch,channel_alias,mode):
elif mode == 'collectDataConfirm':
cursor_zi_service.execute(f"select id,category,brand,sku,name,params,url,url_source,url_price,new_name,params_standard,zi_subcategoryname,zi_subcategorycode,zi_brandname,zi_brandcode,channel_alias,state from product_all where batch = '{batch}' and channel_alias = '{channel_alias}'")
df = pd.DataFrame(cursor_zi_service.fetchall(), columns=[tuple[0] for tuple in cursor_zi_service.description])
elif mode == 'dealPicInfo':
cursor_zi_service.execute(f"select id,sku,productcode,name,batch,url,url_pic from product_all where batch = '{batch}' and channel_alias = '{channel_alias}'")
df = pd.DataFrame(cursor_zi_service.fetchall(), columns=[tuple[0] for tuple in cursor_zi_service.description])
else:
cursor_zi_service.execute(f"select * from product_all where batch = '{batch}' and channel_alias = '{channel_alias}'")
df = pd.DataFrame(cursor_zi_service.fetchall(), columns=[tuple[0] for tuple in cursor_zi_service.description])
......@@ -1787,6 +1793,184 @@ def save_sku_relationship(filter,channel_alias):
mssql.Close()
def collect_df_to_db(path):
df = pd.read_excel(path)
mssql = MSSQL('123.57.45.119','ZI_Service')
cursor_zi_service = mssql._cur
#入库
id_list = df['id'].tolist()
brand_list = df['zi_brandname'].tolist()
brandId_list = df['zi_brandcode'].apply(lambda x:str(x)).tolist()
category_list = df['zi_subcategoryname'].tolist()
categoryId_list = df['zi_subcategorycode'].apply(lambda x:str(x)).tolist()
name_list = df['new_name'].tolist()
params_list = df['params_standard'].apply(lambda x:eval(x)).tolist()
data = {
"params_info": {
"brand_list": brand_list,
"brandId_list": brandId_list,
"category_list": category_list,
"categoryId_list": categoryId_list,
"params_list": params_list,
"name_list": name_list
}
}
res = zgc_api("Stock-InProductInfo",data)
sku_list = res['sku_list']
print("产品入库完成")
#更新product_all表
for _id,sku in zip(id_list,sku_list):
cursor_zi_service.execute(f"update product_all set productcode = '{sku}',remark = Null,state = '9' where id = {_id}")
df['productcode'] = sku_list
print("产品编码同步完成")
#组织价格数据
sku_list = []
source_name_list = []
price_list = []
url_list = []
channelId_list = []
for index,row in df.iterrows():
sku_list_temp = row['productcode']
source_name_list_temp = row['new_name']
url_list_temp = eval(row['url'])
channelId_list_temp = eval(row['url_source'])
price_list_temp = eval(row['url_price'])
for url,channelId,price in zip(url_list_temp,channelId_list_temp,price_list_temp):
sku_list.append(sku_list_temp)
source_name_list.append(source_name_list_temp)
url_list.append(url)
channelId_list.append(channelId)
price_list.append(price)
#价格关系入库
data = {
"params_info": {
"sku_list": sku_list,
"url_name_list": source_name_list,
"url_price_list":price_list,
"url_list": url_list,
"channelId_list": channelId_list
}
}
res = zgc_api("Stock-InPriceInfo",data)
print("产品价格录入完成")
#导出待建库的产品图片
def confirm_product_picture(batch,channel_alias):
df = LoadData(batch,channel_alias,"dealPicInfo")
i = 1
current_path = os.getcwd()
if not os.path.exists('pic/'): #判断所在目录下是否有该文件名的文件夹
os.mkdir('pic/')
while os.path.exists(f"pic/{batch}-{i}"):
i+=1
os.mkdir(f"pic/{batch}-{i}")
save_pic_path = current_path + "/" + f"pic/{batch}-{i}"
for index,row in df.iterrows():
sku = str(row['productcode'])
url = str(eval(row['url'])[0])
url_pic_list = eval(row['url_pic'])
if url_pic_list:
sort_num = 0
for url_pic_base64 in url_pic_list:
sort_num +=1
img = base64.b64decode(url_pic_base64)
fh = open(f"{save_pic_path}/{sku}-{sort_num}.jpg","wb")
fh.write(img)
fh.close()
else:
print(f"{sku}未能获取产品图片,URL:{url}")
continue
#上传图片
def upload_pic(pic_batch):
if not os.path.exists(f"pic/{pic_batch}"):
print("请选传入确的图片批次",os.listdir("pic/"))
return False
upload_local_path = os.getcwd() + "/" + f"pic/{pic_batch}/"
uploda_target_path = f"G:\\pic\\n\\{pic_batch}\\"
transport = paramiko.Transport(('123.56.115.207',22))
transport.connect(username='root',password='123456')
sftp = paramiko.SFTPClient.from_transport(transport)
saved_path_list = []
#实例化进度条
index_ = Index()
counter = 1
img_path_list = os.listdir(upload_local_path)
for img_path in img_path_list:
try:
sftp.put(upload_local_path + img_path, uploda_target_path + img_path)
except:
sftp.mkdir(uploda_target_path)
sftp.put(upload_local_path + img_path, uploda_target_path + img_path)
saved_path_list.append(uploda_target_path + img_path)
try:
print(index_(counter, len(img_path_list)-1), end='%')
except:
print(index_(counter, 1), end='%')
counter += 1
transport.close()
print("图片数据上传至服务器")
#记录图片地址
mssql_new = MSSQL('123.56.115.207','ZI_NEW')
cursor_zi_new = mssql_new._cur
cursor_zi_new.execute(f"select id,sku from p_sku")
data = cursor_zi_new.fetchall()
skuid_df = pd.DataFrame(data, columns=[tuple[0] for tuple in cursor_zi_new.description])
#实例化进度条
index_ = Index()
counter = 1
for path in saved_path_list:
try:
print(index_(counter, len(saved_path_list)-1), end='%')
except:
print(index_(counter, 1), end='%')
counter += 1
saved_path = path.split("G:\\pic")[1].replace("\\","/")
sku = saved_path.split("/")[-1].split("-")[0]
skuid = skuid_df[skuid_df['sku'] == sku]['id'].tolist()[0]
cursor_zi_new.execute(f"insert into p_skupic (skuid,path) values ({skuid},'{saved_path}')")
mssql_new.Close()
print("图片数据位置信息存储至数据库")
#建库模板路径
path = '/Users/rico/project/模板建库v2/历史数据/20201202/路桥建库模板12.2.xlsx'
......@@ -1844,85 +2028,17 @@ df.to_excel(f"{channel_alias}建库信息确认{batch}.xlsx")
path = '/Users/rico/project/模板建库v2/CL-MBJK建库信息确认2020-12-02.xlsx'
UpdateCollectDataConfirm(path)
#产品建库,价格入库
collect_df_to_db(path)
df = pd.read_excel(path)
mssql = MSSQL('123.57.45.119','ZI_Service')
cursor_zi_service = mssql._cur
#入库
id_list = df['id'].tolist()
brand_list = df['zi_brandname'].tolist()
brandId_list = df['zi_brandcode'].apply(lambda x:str(x)).tolist()
category_list = df['zi_subcategoryname'].tolist()
categoryId_list = df['zi_subcategorycode'].apply(lambda x:str(x)).tolist()
name_list = df['new_name'].tolist()
params_list = df['params_standard'].apply(lambda x:eval(x)).tolist()
data = {
"params_info": {
"brand_list": brand_list,
"brandId_list": brandId_list,
"category_list": category_list,
"categoryId_list": categoryId_list,
"params_list": params_list,
"name_list": name_list
}
}
res = zgc_api("Stock-InProductInfo",data)
sku_list = res['sku_list']
#更新product_all表
for _id,sku in zip(id_list,sku_list):
cursor_zi_service.execute(f"update product_all set productcode = '{sku}',remark = Null,state = '9' where id = {_id}")
df['productcode'] = sku_list
#组织价格数据
sku_list = []
source_name_list = []
price_list = []
url_list = []
channelId_list = []
for index,row in df.iterrows():
sku_list_temp = row['productcode']
source_name_list_temp = row['new_name']
url_list_temp = eval(row['url'])
channelId_list_temp = eval(row['url_source'])
price_list_temp = eval(row['url_price'])
for url,channelId,price in zip(url_list_temp,channelId_list_temp,price_list_temp):
sku_list.append(sku_list_temp)
source_name_list.append(source_name_list_temp)
url_list.append(url)
channelId_list.append(channelId)
price_list.append(price)
#价格关系入库
data = {
"params_info": {
"sku_list": sku_list,
"url_name_list": source_name_list,
"url_price_list":price_list,
"url_list": url_list,
"channelId_list": channelId_list
}
}
res = zgc_api("Stock-InPriceInfo",data)
#处理图片
confirm_product_picture(batch,channel_alias)
print(f"请处理{batch}批次的图片数据,有问题的图片直接删除即可。(请不要修改图片路径)")
#上传图片至服务器和数据库
pic_batch = batch + "-1"
upload_pic(pic_batch)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment