factory/apps/rpm/models.py

112 lines
4.4 KiB
Python

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)