rambo 3 روز پیش
والد
کامیت
36e235772d
3فایلهای تغییر یافته به همراه18 افزوده شده و 3 حذف شده
  1. 9 2
      python/service/data.py
  2. 8 0
      python/service/generate_goods_no_detail_pic/data.py
  3. 1 1
      python/service/run_main.py

+ 9 - 2
python/service/data.py

@@ -179,12 +179,11 @@ class DataModeGenerateDetail(DataBaseModel):
         need_df = need_df.fillna(value="")
 
         # 打开表格并进行匹配
-        _df = pd.read_excel(excel_path, sheet_name=0, header=0)
+        _df = pd.read_excel(excel_path, sheet_name=0, header=0, dtype=str)  # 强制将所有列读取为字符串类型
         # 去重数据
         duplicates = _df.duplicated(subset=["商品货号"], keep="first")
         _df = _df.loc[~duplicates]
         _df = _df.fillna(value="")
-        _df = _df.astype(str)
         # 数据匹配关联,左关联
         need_df = pd.merge(
             need_df,
@@ -353,6 +352,10 @@ class DataModeGenerateDetail(DataBaseModel):
         )
         group_local_df = group_local_df.reset_index()
 
+        # -----------统一款号列的数据类型为字符串,避免merge时报错
+        group_local_df["款号"] = group_local_df["款号"].astype(str)
+        original_df["款号"] = original_df["款号"].astype(str)
+
         # -----------数据匹配关联,左关联
         group_local_df = pd.merge(
             group_local_df,
@@ -446,6 +449,10 @@ class DataModeGenerateDetail(DataBaseModel):
             subset=["款号", "颜色名称"], keep="first", inplace=True
         )
 
+        # ------------统一款号列的数据类型为字符串,避免merge时报错
+        local_df["款号"] = local_df["款号"].astype(str)
+        new_df["款号"] = new_df["款号"].astype(str)
+
         # ------------excel表格关联 上述的款号 进行标记,其他删除
         _df = new_df.drop_duplicates(subset=["款号"], keep="first", inplace=False)
         _df = _df[["款号"]]

+ 8 - 0
python/service/generate_goods_no_detail_pic/data.py

@@ -208,6 +208,10 @@ class DataModeGenerateDetail(DataBaseModel):
             lambda x: x.dropna().iloc[0] if not x.dropna().empty else np.nan)
         group_local_df = group_local_df.reset_index()
 
+        # -----------统一款号列的数据类型为字符串,避免merge时报错
+        group_local_df["款号"] = group_local_df["款号"].astype(str)
+        original_df["款号"] = original_df["款号"].astype(str)
+
         # -----------数据匹配关联,左关联
         group_local_df = pd.merge(group_local_df, original_df, on=["款号"], how="left", indicator=False, )
         # -----------只取有标记的数据
@@ -285,6 +289,10 @@ class DataModeGenerateDetail(DataBaseModel):
         local_df["颜色名称"] = local_df["颜色名称"].apply(self.get_real_color_name)
         local_df.drop_duplicates(subset=['款号', "颜色名称"], keep='first', inplace=True)
 
+        # ------------统一款号列的数据类型为字符串,避免merge时报错
+        local_df["款号"] = local_df["款号"].astype(str)
+        new_df["款号"] = new_df["款号"].astype(str)
+
         # ------------excel表格关联 上述的款号 进行标记,其他删除
         _df = new_df.drop_duplicates(subset=['款号'], keep='first', inplace=False)
         _df = _df[["款号"]]

+ 1 - 1
python/service/run_main.py

@@ -573,7 +573,7 @@ class RunMain:
             # 款号反向映射;因为部分key键格式为KUM9999999
             _x = {}
             for i, v in goods_no_dict.items():
-                _x[v["款号"]] = i
+                _x[str(v["款号"])] = i
 
             for goods_no, value in error_data_dict.items():
                 if goods_no in _x: