from django.db import models from django.db.models.query import QuerySet from apps.system.models import User from apps.utils.models import CommonADModel, CommonAModel, CommonBModel class Employee(CommonBModel): """ 员工信息 """ JOB_ON = 10 JOB_OFF = 20 jobstate_choices = ( (JOB_ON, '在职'), (JOB_OFF, '离职'), ) user = models.OneToOneField(User, verbose_name='系统账号', on_delete=models.PROTECT, related_name='employee_user', null=True, blank=True) name = models.CharField('姓名', max_length=20) phone = models.CharField('手机号', max_length=11, null=True, blank=True) email = models.EmailField('邮箱号', null=True, blank=True) number = models.CharField('人员编号', max_length=50, null=True, blank=True) photo = models.CharField('证件照', max_length=1000, null=True, blank=True) id_number = models.CharField('身份证号', max_length=100, null=True, blank=True) gender = models.CharField('性别', max_length=10, default='男') signature = models.CharField('签名图片', max_length=200, null=True, blank=True) birthday = models.DateField('出生年月日', null=True, blank=True) qualification = models.CharField('学历', max_length=50, null=True, blank=True) job_state = models.IntegerField('在职状态', choices=jobstate_choices, default=1) face_data = models.JSONField('人脸识别数据', null=True, blank=True) is_atwork = models.BooleanField('当前在岗', default=False) show_atwork = models.BooleanField('是否展示在岗状态', default=True) last_check_time = models.DateTimeField('打卡时间', null=True, blank=True) not_work_remark = models.CharField('当前未打卡说明', null=True, blank=True, max_length=200) third_info = models.JSONField('三方信息', default=dict, null=False, blank=True) class Meta: verbose_name = '员工补充信息' verbose_name_plural = verbose_name def __str__(self): return self.name # class Card(CommonAModel): # """ # 卡 # """ # CARD_FACE = 10 # CARD_LOCATION = 20 class NotWorkRemark(CommonAModel): """ 离岗说明 """ not_work_date = models.DateField('未打卡日期') user = models.ForeignKey(User, verbose_name='用户', on_delete=models.CASCADE) remark = models.CharField('未打卡说明', null=True, blank=True, max_length=200) class ClockRecord(CommonADModel): """ 打卡记录 """ ClOCK_WORK1 = 10 type_choice = ( (ClOCK_WORK1, '上班打卡'), ) type = models.PositiveSmallIntegerField('打卡类型', choices=type_choice, default=ClOCK_WORK1)