name=['龙岗分公司','宝安分公司','龙华分公司','福田分公司','南山分公司','罗湖分公司','盐田分公司','深汕合作区分公司','前海蛇口自贸区分公司','坪山分公司']
num=[22,22,24,29,27,22,8,4,7,6]#罗湖分公司加两个机动;南山分公司加3个机动。
num_dic=dict(zip(name,num))
for i in range(len(df_3['员工编号'])):
df_3.loc[i,'xrzmc']=df_3.loc[i,'现任职名称'][0:df_3.loc[i,'现任职名称'].index('(')]
df_3.loc[i,'rzmc']=df_3.loc[i,'任职名称'][0:df_3.loc[i,'任职名称'].index('(')]
for i in range(len(df_count['员工编码'])):
df_count.loc[i,'zwxfmc']=df_count.loc[i,'职位细分名称'][0:df_count.loc[i,'职位细分名称'].index('(')]
#对转换前后台人员进行计数
print('转换前后台人员数量是:')
count_pre=(~df_3['xrzmc'].isin(['营业员','营业厅经理','值班经理','网格经理','集团客户经理','集团客户经理主管'])).sum()
print((~df_3['xrzmc'].isin(['营业员','营业厅经理','值班经理','网格经理','集团客户经理','集团客户经理主管'])).sum())
#对转换后后台人员进行计数
print('转换后后台人员数量是:')
count_now=(~df_3['rzmc'].isin(['营业员','营业厅经理','值班经理','网格经理','集团客户经理','集团客户经理主管'])).sum()
print((~df_3['rzmc'].isin(['营业员','营业厅经理','值班经理','网格经理','集团客户经理','集团客户经理主管'])).sum())
a=df_3.loc[0,'调往部门']
#需求部门拟调动人数为d_count,非经理人员编制数为b_count
d_count=count_now-count_pre
a_count=df_count.loc[(df_count['部门']==a)&(df_count['是否经理人员']==0)&(~df_count['zwxfmc'].isin(['营业员','营业厅经理','值班经理','网格经理','集团客户经理','集团客户经理主管']))].count()
print('在岗后台人数为%s'%(a_count[0]))
b_count=num_dic[a]
print('%s编制数为%d.'%(a,b_count))
if a_count[0]>b_count and d_count>0:
print('【%s】\n在岗后台人数为%d.'%(a,a_count[0]))
print('超过编制数%d.'%(b_count))
print('【不能调动】')
else:
print('【%s】在岗人数为%d.'%(a,a_count[0]))
print('编制数%d.'%(b_count))
#c_count是空多少个编制
c_count=b_count-a_count[0]
# print('【可以调动%d人】.'%(c_count))
if c_count<d_count:
print('仅能调动%d人。'%(c_count))
else:
print('可以调动。')
(4)调入部门为销售中心(区域)
name=['北区','西区','中区','南区','东区']
num=[25,25,25,35,26]#东区加2个机动。
num_dic=dict(zip(name,num))
#把在岗表中的销售中心的非经理人员提取出来
df_count_temp=df_count.loc[(df_count['部门']=='销售中心') & (df_count['是否经理人员']==0)]
df_count_temp=df_count_temp.reset_index()
for i in range(len(df_count_temp['员工编码'])):
df_count_temp.loc[i,'调往室']=df_count_temp.loc[i,'部门室'][5:7]
#把待审核表中的区域名称提取出来
for i in range(len(df_3['员工编号'])):
df_3.loc[i,'调往室']=df_3.loc[i,'调往室/模块'][0:2]
for i in range(len(df_3['员工编号'])):
df_3.loc[i,'xrzmc']=df_3.loc[i,'现任职名称'][0:df_3.loc[i,'现任职名称'].index('(')]
df_3.loc[i,'rzmc']=df_3.loc[i,'任职名称'][0:df_3.loc[i,'任职名称'].index('(')]
for i in range(len(df_count_temp['员工编码'])):
df_count_temp.loc[i,'zwxfmc']=df_count_temp.loc[i,'职位细分名称'][0:df_count_temp.loc[i,'职位细分名称'].index('(')]
#对转换前后台人员进行计数
print('转换前后台人员数量是:')
count_pre=(~df_3['xrzmc'].isin(['营业员','营业厅经理','值班经理','网格经理','集团客户经理','集团客户经理主管'])).sum()
print((~df_3['xrzmc'].isin(['营业员','营业厅经理','值班经理','网格经理','集团客户经理','集团客户经理主管'])).sum())
#对转换后后台人员进行计数
print('转换后后台人员数量是:')
count_now=(~df_3['rzmc'].isin(['营业员','营业厅经理','值班经理','网格经理','集团客户经理','集团客户经理主管'])).sum()
print((~df_3['rzmc'].isin(['营业员','营业厅经理','值班经理','网格经理','集团客户经理','集团客户经理主管'])).sum())
a=df_3.loc[0,'调往室']
#需求部门拟调动人数为d_count,非经理人员编制数为b_count
d_count=count_now-count_pre
a_count=df_count_temp.loc[(df_count_temp['调往室']==a)&(~df_count_temp['zwxfmc'].isin(['营业员','营业厅经理','值班经理','网格经理','集团客户经理','集团客户经理主管']))].count()
print('在岗后台人数为%s'%(a_count[0]))
b_count=num_dic[a]
print('%s编制数为%d.'%(a,b_count))
if a_count[0]>b_count and d_count>0:
print('【%s】\n在岗后台人数为%d.'%(a,a_count[0]))
print('超过编制数%d.'%(b_count))
print('【不能调动】')
else:
print('【%s】在岗人数为%d.'%(a,a_count[0]))
print('编制数%d.'%(b_count))
#c_count是空多少个编制
c_count=b_count-a_count[0]
# print('【可以调动%d人】.'%(c_count))
if c_count<d_count:
print('仅能调动%d人。'%(c_count))
else:
print('可以调动。')
(5)调入部门为销售中心本部
#针对销售中心本部,编制147
#把在岗表中的销售中心的非经理人员提取出来
df_count_temp=df_count.loc[(df_count['部门']=='销售中心') & (df_count['是否经理人员']==0)]
df_count_temp=df_count_temp.reset_index()
for i in range(len(df_count_temp['员工编码'])):
df_count_temp.loc[i,'调往室']=df_count_temp.loc[i,'部门室'][5:7]
#把待审核表中的区域名称提取出来
for i in range(len(df_3['员工编号'])):
df_3.loc[i,'调往室']=df_3.loc[i,'调往室/模块'][0:2]
for i in range(len(df_3['员工编号'])):
df_3.loc[i,'xrzmc']=df_3.loc[i,'现任职名称'][0:df_3.loc[i,'现任职名称'].index('(')]
df_3.loc[i,'rzmc']=df_3.loc[i,'任职名称'][0:df_3.loc[i,'任职名称'].index('(')]
for i in range(len(df_count_temp['员工编码'])):
df_count_temp.loc[i,'zwxfmc']=df_count_temp.loc[i,'职位细分名称'][0:df_count_temp.loc[i,'职位细分名称'].index('(')]
#对转换前后台人员进行计数
print('转换前后台人员数量是:')
count_pre=(~df_3['xrzmc'].isin(['营业员','营业厅经理','值班经理','网格经理','集团客户经理','集团客户经理主管'])).sum()
print((~df_3['xrzmc'].isin(['营业员','营业厅经理','值班经理','网格经理','集团客户经理','集团客户经理主管'])).sum())
#对转换后后台人员进行计数
print('转换后后台人员数量是:')
count_now=(~df_3['rzmc'].isin(['营业员','营业厅经理','值班经理','网格经理','集团客户经理','集团客户经理主管'])).sum()
print((~df_3['rzmc'].isin(['营业员','营业厅经理','值班经理','网格经理','集团客户经理','集团客户经理主管'])).sum())
a=df_3.loc[0,'调往室']
#需求部门拟调动人数为d_count,非经理人员编制数为b_count
d_count=count_now-count_pre
a_count=df_count_temp.loc[~df_count_temp['调往室'].isin(['北区','西区','中区','南区','东区'])&(~df_count_temp['zwxfmc'].isin(['营业员','营业厅经理','值班经理','网格经理','集团客户经理','集团客户经理主管','社会渠道经理']))].count()
print('在岗后台人数为%s'%(a_count[0]))
b_count=147
print('%s编制数为%d.'%(a,b_count))
if a_count[0]>b_count and d_count>0:
print('【%s】\n在岗后台人数为%d.'%(a,a_count[0]))
print('超过编制数%d.'%(b_count))
print('【不能调动】')
else:
print('【%s】在岗人数为%d.'%(a,a_count[0]))
print('编制数%d.'%(b_count))
#c_count是空多少个编制
c_count=b_count-a_count[0]
# print('【可以调动%d人】.'%(c_count))
if c_count<d_count:
print('仅能调动%d人。'%(c_count))
else:
print('可以调动。')
2、开始审核基本信息
姓名、账号、所在部门室、任职名称 、入司时间是否符合要求
#和在岗表合并
df_test_1=pd.merge(df_3,df_1,how='inner',left_on='员工编号',right_on='员工编码')
df_test_1=pd.merge(df_test_1,df_2,how='inner',left_on='员工编号',right_on='员工编码')
#导入库用于看入司时间是否满一年
import datetime
#生成姓名、账号、所在部门室、任职名称的布尔值
df_test_1['name_test']=(df_test_1['姓名_x']==df_test_1['姓名_y'])
df_test_1['id_test']=(df_test_1['ioffice帐号']==df_test_1['账号'])
df_test_1['depart_test']=(df_test_1['所在部门、室/模块']==df_test_1['部门室'])
df_test_1['rank_test']=(df_test_1['现任职名称']==df_test_1['职位细分名称'])
#核对入司时间
df_test_1['time_test']='符合入司时间要求'
for i in range(len(df_test_1['员工编号'])):
if (datetime.date(int(df_test_1.loc[i,'参加地市日期'][0:4]),int(df_test_1.loc[i,'参加地市日期'][5:7]),int(df_test_1.loc[i,'参加地市日期'][8:10]))+datetime.timedelta(days=365)).__ge__(datetime.date.today()):
df_test_1.loc[i,'time_test']='不满足入司时间要求'
#核对入司时间
for i in range(len(df_test_1['员工编号'])):
if df_test_1.loc[i,'time_test']=='不满足入司时间要求':
a=df_test_1.loc[i,'序号']
print('序号%s的入司时间不满足要求。' %(a))
#核对部门室信息
for i in range(len(df_test_1['员工编号'])):
if df_test_1.loc[i,'depart_test']==False:
a=df_test_1.loc[i,'序号']
print('序号%s的部门室错误。' %(a))
print(df_test_1.loc[i,'部门室'])
#核对账号信息
for i in range(len(df_test_1['员工编号'])):
if df_test_1.loc[i,'id_test']==False:
a=df_test_1.loc[i,'序号']
print('序号%s的id错误。' %(a))
print(df_test_1.loc[i,'账号'])
#核对姓名信息
for i in range(len(df_test_1['员工编号'])):
if df_test_1.loc[i,'name_test']==False:
a=df_test_1.loc[i,'序号']
print('序号%s的姓名错误。' %(a))
print(df_test_1.loc[i,'姓名_y'])
#核对职位信息
for i in range(len(df_test_1['员工编号'])):
if df_test_1.loc[i,'rank_test']==False:
a=df_test_1.loc[i,'序号']
print('序号%s的职位名称错误。' %(a))
print(df_test_1.loc[i,'职位细分名称'])
核对现任职名称和任职名称的序列是否一致(前后是否一致)
for i in range(len(df_test_1['员工编号'])):
df_test_1.loc[i,'is_same']=(df_test_1.loc[i,'现任职名称'][ df_test_1.loc[i,'现任职名称'].index('(')+1:df_test_1.loc[i,'现任职名称'].index(')')]==df_test_1.loc[i,'任职名称'][ df_test_1.loc[i,'任职名称'].index('(')+1:df_test_1.loc[i,'任职名称'].index(')')])
#核对现任职名称和任职名称信息是否一致
for i in range(len(df_test_1['员工编号'])):
if df_test_1.loc[i,'is_same']==False:
a=df_test_1.loc[i,'序号']
print('序号%s的现任职名称、任职名称不一致。' %(a))
职位名称是否在职位库中
df_position=pd.read_excel('E:\\002 绪晋工作\\2、廉洁风险防控关键职位\\08 2020年关键职位\\附件4:深圳可用的职位名称简版(2020版).xlsx',encoding='gbk')
list_dir=df_position['标准职位名称'].to_list()
df_test_1['是否有该职位名称']=df_test_1.apply(lambda x : '有' if x['任职名称'][0:x['任职名称'].index('(')] in list_dir else '无',axis=1)
print(df_test_1['是否有该职位名称'].value_counts())
print('**************************')
print('以下序号的职位名称没有在标准职位库中')
print(df_test_1.loc[df_test_1['是否有该职位名称']=='无']['序号'])