From feb14f2400b0f14df2be4a08297109254a8c9d9e Mon Sep 17 00:00:00 2001 From: mxr612 Date: Wed, 18 Jun 2025 23:06:56 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BA=94=E5=B9=B41=E7=BA=A7=E5=92=8C?= =?UTF-8?q?=E4=B8=A4=E5=B9=B41=E6=A1=A3=E8=AE=A1=E7=AE=97=E5=8F=98?= =?UTF-8?q?=E4=B8=BA=E4=B8=8A=E4=B8=80=E4=B8=AA=E6=9B=B4=E6=94=B9=E5=B9=B4?= =?UTF-8?q?=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 初始年份填为起始年份 - 默认继承上一个年份 - 填写晋级晋档的时候计算 --- main.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/main.py b/main.py index fe76a97..cc55269 100644 --- a/main.py +++ b/main.py @@ -41,7 +41,7 @@ def custom_date_parser(x): except: return x -def format_time(dt,info): +def format_time(dt,info=""): try: return dt.strftime("%Y.%m") except: @@ -275,8 +275,8 @@ def fill_prompt_info(ws, promote):# 填充晋升信息 def add_history(History_pd, row, promote): # 添加入职记录 - History_pd.loc[len(History_pd), ["变动后时间","变动后职务","变动原因","变动后级别档次"]] = [ - row["入职时间"],row["初始职务"],"套改/定级",row["入职时的初始级别"]] + History_pd.loc[len(History_pd), ["变动后时间","变动后职务","变动原因","变动后级别档次","五年1级年份","两年1档年份"]] = [ + row["入职时间"],row["初始职务"],"套改/定级",row["入职时的初始级别"],format_time(row['晋级起始']),format_time(row['晋档起始'])] for index, prow in promote.iterrows(): # 添加晋升记录 History_pd.loc[len(History_pd),["变动后时间","变动后职务","变动原因","晋升备注"]] = [ prow["工资执行时间"]+relativedelta(hours=prow["任职时间"].month,minutes=prow["任职时间"].day), @@ -288,16 +288,16 @@ def add_history(History_pd, row, promote): calctime += relativedelta(years=row["晋档间隔"]) if calctime > NOWTIME: break - History_pd.loc[len(History_pd),["变动后时间","变动原因"]] = [ - calctime,"两年晋档"] + History_pd.loc[len(History_pd),["变动后时间","变动原因","两年1档年份"]] = [ + calctime,"两年晋档",format_time(calctime)] calctime=row["晋级起始"] # 添加晋级记录 while True: calctime += relativedelta(years=row["晋级间隔"]) if calctime > NOWTIME: break - History_pd.loc[len(History_pd),["变动后时间","变动原因"]] = [ - calctime,"五年晋级"] + History_pd.loc[len(History_pd),["变动后时间","变动原因","五年1级年份"]] = [ + calctime,"五年晋级",format_time(calctime)] except: raise Exception(f"晋级、档起始或间隔时间格式错误:{row['晋级起始']}-{row['晋档起始']}-{row['晋级间隔']}-{row['晋档间隔']}") # 工资调标 @@ -315,8 +315,6 @@ def add_history(History_pd, row, promote): History_pd["身份证号码"] = row["身份证号码"] History_pd["姓名"] = row["姓名"] History_pd["工龄"] = History_pd.apply(lambda x: calculate_seniority(row, x["变动后时间"].year), axis=1) - History_pd["五年1级年份"] = History_pd.apply(lambda x: x["变动后时间"].year - row["晋级起始"].year, axis=1) - History_pd["两年1档年份"] = History_pd.apply(lambda x: x["变动后时间"].year - row["晋档起始"].year, axis=1) def calc_history(History_pd, row): # 复杂数据计算 @@ -330,6 +328,8 @@ def calc_history(History_pd, row): History_pd.at[index, "变动前级别工资"] = History_pd.at[index-1, "变动后级别工资"] History_pd.at[index, "变动前津贴工资"] = History_pd.at[index-1, "变动后津贴工资"] History_pd.at[index, "变动前工资合计"] = History_pd.at[index-1, "变动后工资合计"] + History_pd.at[index, "五年1级年份"] = History_pd.at[index-1, "五年1级年份"] if pd.isna(History_pd.at[index, "五年1级年份"]) else History_pd.at[index, "五年1级年份"] + History_pd.at[index, "两年1档年份"] = History_pd.at[index-1, "两年1档年份"] if pd.isna(History_pd.at[index, "两年1档年份"]) else History_pd.at[index, "两年1档年份"] # 继承名称 if pd.isna(hrow["变动后职务"]): History_pd.at[index,"变动后职务"] = History_pd.at[index,"变动前职务"] @@ -345,7 +345,6 @@ def calc_history(History_pd, row): History_pd.at[index, "变动后级别档次"] = f"{jb}-{dc+1}" elif hrow["变动原因"] == "五年晋级": if jb-1 < 1 or jb-1 < role_limit(History_pd.iloc[index]["变动后职务"]): - History_pd.at[index, "变动后级别档次"] = f"{jb}-{dc+1}" else: History_pd.at[index, "变动后级别档次"] = f"{jb-1}-{dc-1}"