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_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='关联工单',

View File

@ -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)

View File

@ -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()