feat:人员调岗申请 修改

This commit is contained in:
TianyangZhang 2026-01-28 09:57:13 +08:00
parent 987a53005c
commit beef2b3e54
4 changed files with 43 additions and 13 deletions

View File

@ -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='原岗位薪资'),
),
]

View File

@ -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_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) 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('调岗日期') transfer_date = models.DateField('调岗日期')
original_slary = models.PositiveIntegerField('原岗位薪资', null=True, blank=True) original_slary = models.DecimalField('原岗位薪资', max_digits=10, decimal_places=2, null=True, blank=True)
new_slary = models.PositiveIntegerField('调岗后薪资', 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) content = models.TextField('个人工作内容', null=True, blank=True)
reason = models.TextField('调动原因', null=True, blank=True) reason = models.TextField('调动原因', null=True, blank=True)
ticket = models.OneToOneField('wf.ticket', verbose_name='关联工单', ticket = models.OneToOneField('wf.ticket', verbose_name='关联工单',

View File

@ -382,6 +382,8 @@ class TransferSerializer(CustomModelSerializer):
employee_name = serializers.CharField(source='employee.name', read_only=True) employee_name = serializers.CharField(source='employee.name', read_only=True)
post_name = serializers.CharField(source="employee.post.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) 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: class Meta:
model = EmployeeTransfer model = EmployeeTransfer
fields = '__all__' fields = '__all__'
@ -391,7 +393,8 @@ class TransferSerializer(CustomModelSerializer):
if is_change: if is_change:
if validated_data['new_dept'] == validated_data['original_dept']: if validated_data['new_dept'] == validated_data['original_dept']:
raise ParseError('新旧部门相同,无需调动') raise ParseError('新旧部门相同,无需调动')
elif validated_data['new_post'] == validated_data['original_post']:
raise ParseError('新旧岗位相同,无需调动')
else: else:
return super().create(validated_data) if validated_data['new_post'] == validated_data['original_post']:
raise ParseError('新旧岗位相同,无需调动')
return super().create(validated_data)

View File

@ -19,6 +19,7 @@ from apps.third.tapis import dhapis
from apps.utils.tools import rannum, ranstr from apps.utils.tools import rannum, ranstr
import numpy as np import numpy as np
from apps.wf.models import Ticket, Transition from apps.wf.models import Ticket, Transition
from django.db import transaction
myLogger = logging.getLogger('log') 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: try:
obj = EmployeeTransfer.objects.get(id=new_ticket_data['t_id']) obj = EmployeeTransfer.objects.get(id=new_ticket_data['t_id'])
except EmployeeTransfer.DoesNotExist: except EmployeeTransfer.DoesNotExist:
raise ParseError('调岗申请不存在') raise ParseError('调岗申请不存在')
data_save = {k: v for k, v in new_ticket_data.items() if k not in ['t_model', 't_id']} data_save = {k: v for k, v in new_ticket_data.items() if k not in ['t_model', 't_id']}
# 需要删除UserPost中的记录然后新增一条调到的部门和岗位记录排序为1 # 需要删除UserPost中的记录然后新增一条调到的部门和岗位记录排序为1
try: with transaction.atomic():
UserPost.objects.filter(post=obj.original_post, dept=obj.original_dept, user=obj.employee.user).delete() del_count, _ = UserPost.objects.filter(post=obj.original_post, dept=obj.original_dept, user=obj.employee.user).delete()
except UserPost.DoesNotExist: if del_count == 0:
raise ParseError('原岗位记录不存在') raise ParseError('原岗位记录不存在')
UserPost.objects.create(post=obj.new_post, dept=obj.new_dept, user=obj.employee.user, sort=1) UserPost.objects.create(post=obj.new_post, dept=obj.new_dept, user=obj.employee.user, sort=1)
# 如果有调薪并有领导申请觉得那么可以从new_ticket_data 获取调薪金额 # 如果有调薪并有领导申请决定那么可以从new_ticket_data 获取调薪金额
for k, v in data_save.items(): 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() obj.save()