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_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='关联工单',
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
@ -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()
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue