feat: 添加员工需求表

This commit is contained in:
caoqianming 2025-12-12 16:57:12 +08:00
parent 320da10e61
commit 1af6555e26
4 changed files with 83 additions and 6 deletions

View File

@ -0,0 +1,44 @@
# Generated by Django 3.2.12 on 2025-12-12 08:48
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
('system', '0006_auto_20241213_1249'),
('wf', '0005_workflow_cate'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('hrm', '0021_alter_resignation_ticket'),
]
operations = [
migrations.CreateModel(
name='EmpNeed',
fields=[
('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')),
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
('post_need', models.TextField(verbose_name='需求岗位')),
('count_need', models.PositiveIntegerField(verbose_name='需求人数')),
('salary', models.PositiveIntegerField(verbose_name='工资报酬')),
('arrival_date', models.DateField(verbose_name='到岗日期')),
('reason', models.TextField(help_text='新增人员/该岗原人员离职或辞职或辞退需补充/其他原因', verbose_name='申请理由')),
('duty', models.TextField(verbose_name='岗位人员职责描述')),
('gender', models.CharField(help_text='男/女/不限', max_length=10, verbose_name='性别要求')),
('education', models.CharField(help_text='高中/大专/不限', max_length=50, verbose_name='学历要求')),
('professional_requirement', models.TextField(blank=True, null=True, verbose_name='相关专业及技能要求')),
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='empneed_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
('dept_need', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='system.dept', verbose_name='需求部门')),
('ticket', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='empneed_ticket', to='wf.ticket', verbose_name='关联工单')),
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='empneed_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
],
options={
'abstract': False,
},
),
]

View File

@ -203,3 +203,21 @@ class Resignation(CommonADModel):
reason = models.TextField('离职原因')
handle_date = models.DateField('办理离职交接日期', null=True, blank=True)
ticket = models.ForeignKey('wf.ticket', verbose_name='关联工单', on_delete=models.SET_NULL, null=True, blank=True, related_name='resignation_ticket')
class EmpNeed(CommonADModel):
"""
TN:员工需求
"""
dept_need = models.ForeignKey('system.Dept', verbose_name='需求部门', on_delete=models.CASCADE)
post_need = models.TextField("需求岗位")
count_need = models.PositiveIntegerField('需求人数')
salary = models.PositiveIntegerField("工资报酬")
arrival_date = models.DateField('到岗日期')
reason = models.TextField('申请理由', help_text="新增人员/该岗原人员离职或辞职或辞退需补充/其他原因")
duty = models.TextField("岗位人员职责描述")
gender = models.CharField('性别要求', max_length=10, help_text="男/女/不限")
education = models.CharField('学历要求', max_length=50, help_text='高中/大专/不限')
professional_requirement = models.TextField(verbose_name="相关专业及技能要求", null=True, blank=True)
ticket = models.OneToOneField('wf.ticket', verbose_name='关联工单',
on_delete=models.CASCADE, related_name='empneed_ticket', null=True, blank=True)

View File

@ -9,7 +9,7 @@ from django.utils import timezone
from apps.utils.serializers import CustomModelSerializer
from apps.utils.constants import EXCLUDE_FIELDS
from apps.hrm.models import (Certificate, ClockRecord, Employee,
NotWorkRemark, Attendance, Resignation)
NotWorkRemark, Attendance, Resignation, EmpNeed)
from apps.system.serializers import DeptSimpleSerializer, UserSimpleSerializer
from django.db import transaction
from django.core.cache import cache
@ -340,3 +340,10 @@ class ResignationSerializer(CustomModelSerializer):
if Resignation.objects.filter(employee=employee).exists():
raise ParseError('该员工已存在离职申请')
return super().create(validated_data)
class EmpNeedSerializer(CustomModelSerializer):
dept_need_name = serializers.CharField(source='dept_need.name', read_only=True)
class Meta:
model = EmpNeed
fields = '__all__'

View File

@ -12,7 +12,7 @@ from rest_framework.response import Response
from apps.hrm.errors import NO_NEED_LEVEL_REMARK
from apps.hrm.filters import (CertificateFilterSet, ClockRecordFilterSet, EmployeeFilterSet,
NotWorkRemarkFilterSet)
from apps.hrm.models import Certificate, ClockRecord, Employee, NotWorkRemark, Attendance, Resignation
from apps.hrm.models import Certificate, ClockRecord, Employee, NotWorkRemark, Attendance, Resignation, EmpNeed
from apps.hrm.serializers import (CertificateCreateUpdateSerializer, CertificateSerializer, ChannelAuthoritySerializer,
ClockRecordListSerializer,
EmployeeCreateUpdateSerializer, EmployeeDetailSerializer, EmployeeImproveSerializer,
@ -20,7 +20,7 @@ from apps.hrm.serializers import (CertificateCreateUpdateSerializer, Certificate
EmployeeSerializer,
ClockRecordSimpleSerializer, ClockRecordCreateSerializer,
NotWorkRemarkListSerializer, CorrectSerializer, AttendanceSerializer,
ResignationSerializer)
ResignationSerializer, EmpNeedSerializer)
from apps.hrm.services import HrmService
from apps.third.dahua import dhClient
@ -420,3 +420,11 @@ class ResignationViewSet(TicketMixin, EuModelViewSet):
user = emp.user
user.is_deleted = True
user.save(update_fields=['is_deleted'])
class EmpNeedViewSet(TicketMixin, EuModelViewSet):
queryset = EmpNeed.objects.all()
serializer_class = EmpNeedSerializer
filterset_fields = ['dept_need']
search_fields = ["dept_need__name", "post_need"]
workflow_key = "wf_empneed"