Merge pull request !143 from 李鹏宇/dev_hong
This commit is contained in:
李鹏宇
2024-08-19 06:23:03 +00:00
committed by Gitee
+71 -39
View File
@@ -22,9 +22,11 @@ class YuthonHrEmployeeWizard(models.Model):
raise ValidationError('请上传文件。')
book = xlrd.open_workbook(file_contents=base64.decodebytes(self.excel_file))
sh = book.sheet_by_index(0)
sh2 = book.sheet_by_index(1)
sh3 = book.sheet_by_index(2)
for rx in range(1, sh.nrows):
row = sh.row(rx)
self.employee_user_data(row)
self.employee_user_data(row, sh2, sh3)
return {
'name': '批量更新员工',
'type': 'ir.actions.act_window',
@@ -32,45 +34,75 @@ class YuthonHrEmployeeWizard(models.Model):
'res_model': 'hr.employee',
}
def employee_user_data(self, row):
employee_name = self.env['hr.employee'].search([('name', '=', row[0].value)])
department_id = self.env['hr.department'].search([('name', '=', row[1].value.split('\\')[-1])])
role_main = self.env['soong.user.role'].search([('name', '=', row[4].value)])
job = self.env['hr.job'].search([('name', '=', row[7].value)])
job_lv = self.env['yuthon.job.lv'].search([('name', '=', row[8].value)])
parent_id = self.env['hr.employee'].search([('name', '=', row[9].value)])
if role_main:
role_list_id = role_main
else:
role_list_id = self.env['soong.user.role'].create({'name': row[4].value})
if job:
job_id = job
else:
job_id = self.env['hr.job'].create({'name': row[7].value})
if job_lv:
job_lv_id = job_lv
else:
job_lv_id = self.env['yuthon.job.lv'].create({'name': row[8].value})
role_data = row[5].value
role_list_ids = []
for user in role_data.split(','):
user_role = self.env['soong.user.role'].search([('name', '=', user)])
if user_role:
role_list_ids.append(user_role.id)
else:
new_user_role = self.env['soong.user.role'].create({'name': user})
role_list_ids.append(new_user_role.id)
def employee_user_data(self, row, sh2, sh3):
employee_name = self.env['hr.employee'].search([('name', '=', row[4].value)])
use_user_type_dict = {'正式职工': 'formal', '劳务协议': 'labor', '兼职协议': 'part_time', '兼职用工': 'employment', '': ''}
use_user_type = use_user_type_dict[row[1].value]
job_lv_id = self.env['yuthon.job.lv'].search([('name', '=', row[9].value)])
marital_dict = {'单身': 'single', '已婚': 'married', '合法同居者': 'cohabitant', '丧偶': 'widower', '离异': 'divorced', '': ''}
marital = marital_dict[row[19].value]
political_aspects_dict = {'中共党员': 'cpc_dang', '民盟': 'nld', '共青团员': 'league_member', '群众': 'people', '': ''}
political_aspects = political_aspects_dict[row[26].value]
employee_data = {
'name': employee_name.name,
'department_id': department_id.id,
'user_sex': 'boy' if row[2].value == '男' else 'girl',
'birthday': datetime.strptime(row[3].value, '%Y-%m-%d').date() if len(row[3].value) != 0 else '',
'user_role_id': role_list_id,
'user_role_ids': role_list_ids,
'work_phone': row[6].value,
'job_id': job_id,
'job_lv_id': job_lv_id,
'parent_id': parent_id,
'use_user_type': use_user_type if use_user_type else None, # 用工形式
'marital': marital if marital else None, # 婚姻
'user_type': row[23].value if row[23].value else None, # 人员类别
'high_degree': row[30].value if row[30].value else None, # 最高学历
'seniority_prize_pick_up_status': row[43].value if row[43].value else None, # 工龄相关年功奖领取情况
'high_degree2': row[31].value if row[31].value else None, # 最高学位
'new_start_contract_data': datetime.strptime(row[28].value, '%Y/%m/%d').date() if row[28].value else None, # 最新合同开始日期
'political_aspects': political_aspects if political_aspects else None, # 政治面貌
'birthday': datetime.strptime(row[20].value, '%Y/%m/%d').date() if row[20].value else None, # 出生年月
'dang_data': datetime.strptime(row[27].value, '%Y/%m/%d').date() if row[27].value else None, # 入党(团)时间
'retire_date': datetime.strptime(row[24].value, '%Y/%m/%d').date() if row[24].value else None, # 退休日期
'new_end_contract_data': datetime.strptime(row[29].value, '%Y/%m/%d').date() if row[29].value else None, # 最新合同终止日期
'job_lv_id': job_lv_id.id, # 最新职级 有几个没有
'user_sex': 'boy' if row[18].value == '男' else 'girl', # 性别
'nation': row[17].value if row[17].value else None, # 民族
'identification_id': row[14].value if row[14].value else None, # 身份证号
'entry_date': datetime.strptime(row[11].value, '%Y/%m/%d').date() if row[11].value else None, # 入职时间
'confirmation_date': datetime.strptime(row[12].value, '%Y/%m/%d').date() if row[12].value else None, # 转正时间
'user_number_start_time': datetime.strptime(row[15].value, '%Y/%m/%d').date() if row[15].value else None, # 身份证有效期开始时间
'user_number_end_time': datetime.strptime(row[16].value, '%Y/%m/%d').date() if row[16].value else None, # 身份证有效期结束时间
'mobile_phone': row[8].value if row[8].value else None, # 手机号码
'work_phone': row[7].value if row[7].value else None, # 办公电话
'user_number': row[3].value if row[3].value else None, # 员工编号
}
if employee_name:
employee_name.write(employee_data)
# 处理教育经历
for rx in range(1, sh2.nrows):
row2 = sh2.row(rx)
if row2[0].value == row[4].value:
existing_education = employee_name.education_experience_ids.filtered(lambda e: e.name_school == row2[1].value)
education_data = {
'name_school': row2[1].value if row2[1].value else None, # 学校名称
'end_date': datetime.strptime(row2[2].value, '%Y/%m/%d').date() if row2[2].value else None, # 毕业时间
'professional': row2[3].value if row2[3].value else None, # 专业
'Part_time_degree': row2[4].value if row2[4].value else None, # 非全日制学历学位
'full_time_degree': row2[5].value if row2[5].value else None, # 全日制学历学位
}
if existing_education:
existing_education.write(education_data)
else:
employee_name.write({
'education_experience_ids': [(0, 0, education_data)]
})
# 处理技能证书
for rx in range(1, sh3.nrows):
row3 = sh3.row(rx)
if row3[0].value == row[4].value:
existing_certificate = employee_name.skills_certificates_ids.filtered(lambda s: s.rank_name == row3[1].value)
certificate_data = {
'rank_name': row3[1].value if row3[1].value else None, # 职级名称
'rank_time': datetime.strptime(row3[2].value, '%Y/%m/%d').date() if row3[2].value else None, # 职级时间
}
if existing_certificate:
existing_certificate.write(certificate_data)
else:
employee_name.write({
'skills_certificates_ids': [(0, 0, certificate_data)]
})