from django.db import models from django.contrib.auth.models import AbstractUser from django.db.models.base import Model import django.utils.timezone as timezone from django.db.models.query import QuerySet from apps.system.models import CommonADModel, CommonAModel, CommonBModel, Organization, User, Dict, File,Position from utils.model import SoftModel, BaseModel from simple_history.models import HistoricalRecords class Employee(CommonAModel): """ 员工信息 """ JOB_ON = 1 JOB_OFF = 2 jobstate_choices = ( (JOB_ON, '在职'), (JOB_OFF, '离职'), ) user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='employee_user') number = models.CharField('人员编号', max_length=50,null=True, blank=True, unique=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) last_check_time = models.DateTimeField('打卡时间', null=True, blank=True) not_work_remark = models.CharField('当前未打卡说明', null=True, blank=True, max_length=200) class Meta: verbose_name = '员工补充信息' verbose_name_plural = verbose_name def __str__(self): return self.name class NotWorkRemark(CommonAModel): """ 离岗说明 """ year = models.PositiveSmallIntegerField('年', default=2022) month = models.PositiveSmallIntegerField('月', default=2) day = models.PositiveSmallIntegerField('日', default=1) 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)