feat(职位名称变更): 实现职位名称自动替换功能

添加从Excel读取名称变化规则的功能,并在处理历史数据时自动应用匹配的规则
This commit is contained in:
Miu Li 2025-05-27 16:50:29 +08:00
parent 0193264256
commit c34d04c3d8
2 changed files with 22 additions and 2 deletions

20
main.py
View File

@ -59,9 +59,25 @@ while True: # 职级规则
col += 2 col += 2
except: except:
break break
Rule_RoleName = []
col = 1
while True: # 名称变化
try:
rule = pd.read_excel("原数据.xlsx", sheet_name="名称变化",usecols=f"{get_column_letter(col)}:{get_column_letter(col+1)}", header=None)
Rule_RoleName.append({
"start":rule.iloc[0,1],
"end":rule.iloc[1,1],
"rule":pd.read_excel("原数据.xlsx", sheet_name="名称变化",usecols=f"{get_column_letter(col)}:{get_column_letter(col+1)}",skiprows=2)
})
col += 2
except:
break
print("读取完成")
Rule_Role = sorted(Rule_Role, key=lambda x: x['start']) Rule_Role = sorted(Rule_Role, key=lambda x: x['start'])
Rule_Level = sorted(Rule_Level, key=lambda x: x['start']) Rule_Level = sorted(Rule_Level, key=lambda x: x['start'])
Rule_RoleName = sorted(Rule_RoleName, key=lambda x: x['start'])
nowtime = datetime.now() nowtime = datetime.now()
@ -204,6 +220,10 @@ for index, row in BaseData.iterrows():
# 调整职务职级 # 调整职务职级
if index > 0 and hrow["职务"] == "": if index > 0 and hrow["职务"] == "":
History_pd.at[index, "职务"] = History_pd.iloc[index-1]["职务"] History_pd.at[index, "职务"] = History_pd.iloc[index-1]["职务"]
for rule in Rule_RoleName: # 名称变化
if rule["start"] <= hrow["时间"] <= rule["end"]:
if History_pd.iloc[index]["职务"] in rule["rule"]["原名称"].values:
History_pd.at[index, "职务"] = rule["rule"][rule["rule"]["原名称"] == History_pd.iloc[index]["职务"]]["现名称"].values[0]
if index > 0 and hrow["级别档次"] == "": if index > 0 and hrow["级别档次"] == "":
jb, dc = split_level(History_pd.iloc[index-1]["级别档次"]) jb, dc = split_level(History_pd.iloc[index-1]["级别档次"])
if hrow["变动原因"] == "两年晋档": if hrow["变动原因"] == "两年晋档":

View File

@ -9,7 +9,7 @@
## 1.1 新增职位变更&数据模板优化 100 ## 1.1 新增职位变更&数据模板优化 100
- [ ] feat: 职位名称变化 - [x] feat: 职位名称变化 [completion:: 2025-05-27]
新增名称变化规则,起始、终止时间内自动替换 新增名称变化规则,起始、终止时间内自动替换
- [ ] fix: 原数据模版(带校验数据值填写规范提示) - [ ] fix: 原数据模版(带校验数据值填写规范提示)
- [x] 兼容 yyyy-mm-dd格式 [completion:: 2025-05-27] - [x] 兼容 yyyy-mm-dd格式 [completion:: 2025-05-27]
@ -18,7 +18,7 @@
- [ ] 带输入格式检测(修正、提示) - [ ] 带输入格式检测(修正、提示)
- [x] doc: 打包成exe教程 [completion:: 2025-05-27] - [x] doc: 打包成exe教程 [completion:: 2025-05-27]
- [x] feat: 【赠送】输出log到文件 [completion:: 2025-05-27] - [x] feat: 【赠送】输出log到文件 [completion:: 2025-05-27]
- [ ] fix: 工龄列改为学龄,不参与任何计算。 - [x] fix: 工龄列改为学龄,不参与任何计算。 [completion:: 2025-05-27]
汇总工龄 = 当年年份-参加工作时间年份+工龄调增-工龄调减+1 汇总工龄 = 当年年份-参加工作时间年份+工龄调增-工龄调减+1
- [ ] feat【赠送】新增fall-back逻辑 - [ ] feat【赠送】新增fall-back逻辑
- [x] 职务2 优先计算结果 [completion:: 2025-05-27] - [x] 职务2 优先计算结果 [completion:: 2025-05-27]