from django.db import models from django.utils import timezone import uuid from apps.system.models import CommonBDModel class Qualification(CommonBDModel): quali_options = (('国家级','国家级'),('省级','省级')) company_name = models.CharField(max_length=20, verbose_name='公司名称', null=True, blank=True) name = models.CharField(max_length=20, verbose_name='资质名称',null=True, blank=True) quali_type = models.CharField(max_length=20, choices=quali_options, verbose_name='资质类型') org = models.CharField(max_length=20, verbose_name='发证单位', null=True, blank=True) org_date = models.DateField(verbose_name='发证日期', null=True, blank=True) expiration_date = models.DateField(verbose_name='截至日期', null=True, blank=True) scope = models.TextField(verbose_name='资质范围', null=True, blank=True) number = models.IntegerField(verbose_name='参数数量', null=True, blank=True) cie_path = models.CharField(max_length=100, verbose_name='证书路径', null=True, blank=True) change_date = models.DateField(verbose_name='变更日期', null=True, blank=True) class Meta: verbose_name = '资质情况' db_table = 'qfn_info' class AuditLog(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) action = models.CharField('动作', max_length=20) instance = models.ForeignKey(Qualification, on_delete=models.CASCADE, verbose_name='实例ID') change_reason = models.CharField('变更原因', default='', max_length=50) change_user = models.ForeignKey('system.user', on_delete=models.SET_NULL, verbose_name='操作人', null=True, blank=True) change_time = models.DateField('变更时间') val_new = models.JSONField('变更后完整数据', default=dict) difference = models.JSONField('变更情况', default=list) class Meta: verbose_name = '资质变更情况' db_table = 'qfn_change_info' class AbilityReview(CommonBDModel): type_method = ( (0, '文审'), (10, '现场')) juge_type = ( (0, '初次'), (10, '扩项'), (20, '变更'), (30, '复评'), (40, '迁址')) name = models.CharField(max_length=20, unique=True, verbose_name='公司名称') # qualification_name = models.CharField(max_length=20, verbose_name='资质名称', null=True, blank=True) judging_method = models.PositiveSmallIntegerField(max_length=20, choices=type_method, verbose_name='评审方法') judging_type = models.PositiveSmallIntegerField(max_length=20, choices=juge_type, verbose_name='评审类型') add_param = models.IntegerField(default=0, verbose_name='新增参数') review_date = models.DateField(verbose_name='评审日期', null=True) now_count = models.IntegerField(default=0, verbose_name='现有场所数量') add_count = models.IntegerField(default=0, verbose_name='新增场所数量') quali = models.ForeignKey(Qualification, on_delete=models.SET_NULL, null=True, verbose_name='资质情况') class Meta: verbose_name = '评审情况' db_table = 'ability_review' class QualityCommendation(CommonBDModel): name = models.CharField(max_length=20, unique=True, verbose_name='项目名称') commendation_name = models.CharField(max_length=20, verbose_name='表彰名称') Awards_level = models.CharField(max_length=20, verbose_name='获奖等级') awardee_company = models.CharField(max_length=20, verbose_name='获奖单位', null=True, blank=True) awardee_people = models.CharField(max_length=20, verbose_name='获奖人', null=True, blank=True) awarded_by = models.CharField(max_length=20, verbose_name='颁奖单位') awarded_date = models.DateField(verbose_name='获奖日期', null=True) class Meta: verbose_name = '质量表彰' db_table = 'quality_commendation' class QualityActivities(CommonBDModel): role = ((0,'组织方'),(1,'参与方')) name = models.CharField(max_length=20, unique=True, verbose_name='活动名称') roles = models.PositiveSmallIntegerField(max_length=20, choices=role, verbose_name='参与角色') collaborators = models.CharField(max_length=20, verbose_name='合作方') orgunits = models.CharField(max_length=20, verbose_name='组织单位') place = models.CharField(max_length=50, verbose_name='活动地点') activate_time = models.DateField(verbose_name='活动时间', null=True) participations = models.IntegerField(verbose_name='活动参与单位数量', null=True, blank=True) function = models.CharField(max_length=100, verbose_name='活动中发挥的作用', null=True) earnings = models.FloatField(verbose_name='活动收益', null=True) class Meta: verbose_name = '质量活动' db_table = 'quality_activities' class Contact(CommonBDModel): name = models.CharField(max_length=20, unique=True, verbose_name='公司名称') address = models.CharField(max_length=100, verbose_name='地址') header = models.CharField(max_length=20, verbose_name='负责人') tel = models.CharField(max_length=20, verbose_name='负责人电话') email = models.CharField(max_length=50, verbose_name='负责人邮箱', null=True, blank=True) head_technology = models.CharField(max_length=50, verbose_name='技术负责人') tel_technology = models.CharField(max_length=20, verbose_name='技术负责人电话') email_technology = models.CharField(max_length=50, verbose_name='技术负责人邮箱', null=True, blank=True) head_quality = models.CharField(max_length=50, verbose_name='质量负责人') tel_quality = models.CharField(max_length=20, verbose_name='质量负责人电话') email_quality = models.CharField(max_length=50, verbose_name='质量负责人邮箱', null=True, blank=True) class Meta: verbose_name = '实验室联系方式' db_table = 'contact' class ExternalAuditors(CommonBDModel): name_company = models.CharField(max_length=20, unique=True, verbose_name='公司名称') name = models.CharField(max_length=20, verbose_name='姓名') review_types = models.CharField(max_length=20, verbose_name='评审类型') certificate_expiration = models.DateField(verbose_name='证书有效期') contact = models.CharField(max_length=20, verbose_name='联系方式') judging_areas = models.CharField(max_length=20, verbose_name='评审领域') remark = models.CharField(max_length=20, verbose_name='备注', null=True, blank=True) class Meta: verbose_name = '外审员情况' db_table = 'externalauditors' class Parsepdf(CommonBDModel): pdf_path = models.CharField(max_length=100, verbose_name='pdf路径') excel_path = models.CharField(max_length=100, verbose_name='excel路径') parse_excel = models.CharField(max_length=100, verbose_name='解析后excel路径') annual = models.IntegerField(verbose_name='年份', blank=True, null=True) excel_name = models.CharField(max_length=100, verbose_name='excel名称', null=True, blank=True) pdf_name = models.CharField(max_length=100, verbose_name='pdf名称', null=True, blank=True) class Meta: verbose_name = '解析pdf' db_table = 'parsepdf'