from django.db import models from apps.hrm.models import Certificate, Employee from apps.system.models import Dept, Dictionary, File, User from apps.utils.models import CommonBModel, BaseModel # Create your models here. class Rparty(CommonBModel): """ 相关方 """ dept = models.OneToOneField(Dept, verbose_name='关联部门', on_delete=models.CASCADE, null=True, blank=True) name = models.CharField('名称', max_length=20) number = models.CharField('信用代码', max_length=50, null=True, blank=True) lawer = models.CharField('法人', max_length=20, null=True, blank=True) contacter = models.CharField('联系人', max_length=20) phone = models.CharField('联系电话', max_length=20) email = models.EmailField('邮箱', null=True, blank=True) addresss = models.CharField('企业地址', max_length=200, null=True, blank=True) description = models.TextField('概述', null=True, blank=True) # belong_dept是归属部门 class RpartyFile(BaseModel): """ 相关方文件库 """ file_cate = models.ForeignKey(Dictionary, verbose_name='文件种类', on_delete=models.CASCADE, null=True, blank=True) files = models.ManyToManyField(File, verbose_name='文件') rparty = models.ForeignKey(Rparty, verbose_name='关联相关方', on_delete=models.CASCADE) class Rproject(CommonBModel): """ 相关方项目 """ RP_START = 10 RP_APPROVAL = 20 RP_ENTER = 30 RP_WORKING = 40 RP_DONE = 50 RP_STATE_CHOICES = ( (10, '创建中'), (20, '审批中'), (30, '待入厂'), (40, '进行中'), (50, '已完成') ) RP_TYPE_CHOICES = ( (10, '建筑施工'), (20, '设备设施检维修'), (30, '保安保洁服务'), (40, '其他') ) name = models.CharField('名称', max_length=20) type = models.PositiveSmallIntegerField('项目类型', default=10) contract_number = models.CharField('合同编号', max_length=20) come_time = models.DateTimeField('进厂时间') leave_time = models.DateTimeField('离厂时间') state = models.PositiveSmallIntegerField('状态', default=10) rparty = models.ForeignKey(Rparty, verbose_name='关联相关方', on_delete=models.CASCADE) # belong_dept是业务部门可以带过来 class RprojectFile(BaseModel): """ 相关方项目文件库 """ file_cate = models.ForeignKey(Dictionary, verbose_name='文件种类', on_delete=models.CASCADE, null=True, blank=True) files = models.ManyToManyField(File, verbose_name='文件') rproject = models.ForeignKey(Rproject, verbose_name='关联相关方项目', on_delete=models.CASCADE) class Remployee(CommonBModel): """ 相关方成员 """ employee = models.OneToOneField(Employee, verbose_name='成员信息', on_delete=models.CASCADE) rparty = models.ForeignKey(Rparty, verbose_name='所属相关方', on_delete=models.CASCADE) rproject = models.ForeignKey(Rproject, verbose_name='当前所属相关方项目', on_delete=models.CASCADE, null=True, blank=True) class Rpeople(BaseModel): """ 相关方项目人员 """ rproject = models.ForeignKey(Rproject, verbose_name='关联项目', on_delete=models.CASCADE) employee = models.ForeignKey(Employee, verbose_name='关联人员', on_delete=models.CASCADE, null=True, blank=True) is_manager = models.BooleanField('是否项目负责人', default=False) class Rcertificate(BaseModel): """ 相关方项目人员证书 """ rproject = models.ForeignKey(Rproject, verbose_name='关联项目', on_delete=models.CASCADE) employee = models.ForeignKey(Employee, verbose_name='关联人员', on_delete=models.CASCADE, null=True, blank=True) name = models.CharField('证书名称', max_length=20) number = models.CharField('证书编号', max_length=20) type = models.PositiveSmallIntegerField('证书类型', default=10, choices=Certificate.CERTIFICATE_TYPE_CHOICES) issue_date = models.DateField('发证日期') expiration_date = models.DateField('有效期') review_date = models.DateField('下一次复审日期') file = models.CharField('文件地址', max_length=1000, null=True, blank=True)