feat:人员调岗申请 修改
This commit is contained in:
parent
987a53005c
commit
beef2b3e54
|
|
@ -0,0 +1,23 @@
|
|||
# Generated by Django 3.2.12 on 2026-01-26 06:45
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('hrm', '0027_alter_leave_leave_type'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='employeetransfer',
|
||||
name='new_slary',
|
||||
field=models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='调岗后薪资'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='employeetransfer',
|
||||
name='original_slary',
|
||||
field=models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True, verbose_name='原岗位薪资'),
|
||||
),
|
||||
]
|
||||
|
|
@ -285,8 +285,8 @@ class EmployeeTransfer(CommonADModel):
|
|||
original_dept = models.ForeignKey('system.Dept', verbose_name='原部门', related_name="transfer_original_dept", on_delete=models.CASCADE, null=True, blank=True)
|
||||
original_post = models.ForeignKey('system.Post', verbose_name='原岗位', related_name="transfer_original_post", on_delete=models.CASCADE, null=True, blank=True)
|
||||
transfer_date = models.DateField('调岗日期')
|
||||
original_slary = models.PositiveIntegerField('原岗位薪资', null=True, blank=True)
|
||||
new_slary = models.PositiveIntegerField('调岗后薪资', null=True, blank=True)
|
||||
original_slary = models.DecimalField('原岗位薪资', max_digits=10, decimal_places=2, null=True, blank=True)
|
||||
new_slary = models.DecimalField('调岗后薪资', max_digits=10, decimal_places=2, null=True, blank=True)
|
||||
content = models.TextField('个人工作内容', null=True, blank=True)
|
||||
reason = models.TextField('调动原因', null=True, blank=True)
|
||||
ticket = models.OneToOneField('wf.ticket', verbose_name='关联工单',
|
||||
|
|
|
|||
|
|
@ -382,6 +382,8 @@ class TransferSerializer(CustomModelSerializer):
|
|||
employee_name = serializers.CharField(source='employee.name', read_only=True)
|
||||
post_name = serializers.CharField(source="employee.post.name", read_only=True)
|
||||
belong_dept_name = serializers.CharField(source='employee.belong_dept.name', read_only=True)
|
||||
new_post_name = serializers.CharField(source="new_post.name", read_only=True)
|
||||
original_post_name = serializers.CharField(source="original_post.name", read_only=True)
|
||||
class Meta:
|
||||
model = EmployeeTransfer
|
||||
fields = '__all__'
|
||||
|
|
@ -391,7 +393,8 @@ class TransferSerializer(CustomModelSerializer):
|
|||
if is_change:
|
||||
if validated_data['new_dept'] == validated_data['original_dept']:
|
||||
raise ParseError('新旧部门相同,无需调动')
|
||||
elif validated_data['new_post'] == validated_data['original_post']:
|
||||
raise ParseError('新旧岗位相同,无需调动')
|
||||
else:
|
||||
return super().create(validated_data)
|
||||
if validated_data['new_post'] == validated_data['original_post']:
|
||||
raise ParseError('新旧岗位相同,无需调动')
|
||||
|
||||
return super().create(validated_data)
|
||||
|
|
@ -19,6 +19,7 @@ from apps.third.tapis import dhapis
|
|||
from apps.utils.tools import rannum, ranstr
|
||||
import numpy as np
|
||||
from apps.wf.models import Ticket, Transition
|
||||
from django.db import transaction
|
||||
|
||||
myLogger = logging.getLogger('log')
|
||||
|
||||
|
|
@ -499,20 +500,23 @@ class HrmService:
|
|||
|
||||
|
||||
# 人员调岗申请
|
||||
def post_transfer(ticket: Ticket, transitons, new_ticket_data:dict):
|
||||
def post_transfer(ticket: Ticket, new_ticket_data:dict, **kwargs):
|
||||
try:
|
||||
obj = EmployeeTransfer.objects.get(id=new_ticket_data['t_id'])
|
||||
except EmployeeTransfer.DoesNotExist:
|
||||
raise ParseError('调岗申请不存在')
|
||||
data_save = {k: v for k, v in new_ticket_data.items() if k not in ['t_model', 't_id']}
|
||||
# 需要删除UserPost中的记录,然后新增一条调到的部门和岗位记录,排序为1
|
||||
try:
|
||||
UserPost.objects.filter(post=obj.original_post, dept=obj.original_dept, user=obj.employee.user).delete()
|
||||
except UserPost.DoesNotExist:
|
||||
raise ParseError('原岗位记录不存在')
|
||||
UserPost.objects.create(post=obj.new_post, dept=obj.new_dept, user=obj.employee.user, sort=1)
|
||||
# 如果有调薪并有领导申请觉得,那么可以从new_ticket_data 获取调薪金额
|
||||
with transaction.atomic():
|
||||
del_count, _ = UserPost.objects.filter(post=obj.original_post, dept=obj.original_dept, user=obj.employee.user).delete()
|
||||
if del_count == 0:
|
||||
raise ParseError('原岗位记录不存在')
|
||||
UserPost.objects.create(post=obj.new_post, dept=obj.new_dept, user=obj.employee.user, sort=1)
|
||||
# 如果有调薪并有领导申请决定,那么可以从new_ticket_data 获取调薪金额
|
||||
for k, v in data_save.items():
|
||||
setattr(obj, k, v)
|
||||
if k in ['new_post','original_post']:
|
||||
setattr(obj, f'{k}_id', v)
|
||||
else:
|
||||
setattr(obj, k, v)
|
||||
obj.save()
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue