232 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			232 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Python
		
	
	
	
| 
 | |
| from apps.system.models import City, Dict, Province
 | |
| from django.db import models
 | |
| from utils.model import BaseModel
 | |
| from apps.system.models import CommonAModel, CommonBModel, File, Organization, User
 | |
| # Create your models here.
 | |
| from django.contrib.postgres.fields import JSONField
 | |
| 
 | |
| class Ability(BaseModel):
 | |
|     dlxh = models.TextField('大类序号', null=True, blank=True)
 | |
|     dlmc = models.TextField('大类', null=True, blank=True)
 | |
|     lbxh = models.TextField('类别序号', null=True,blank=True)
 | |
|     lbmc = models.TextField('类别名称', null=True,blank=True)
 | |
|     xmxh = models.TextField('项目序号', null=True,blank=True)
 | |
|     xmmc = models.TextField('项目名称', null=True,blank=True)
 | |
|     bzmc = models.TextField('标准名称', null=True,blank=True)
 | |
|     bzbh = models.TextField('标准编号', null=True,blank=True)
 | |
|     bztk = models.TextField('标准条款', null=True,blank=True)
 | |
|     xzfw = models.TextField('限制范围',null=True,blank=True)
 | |
|     bz = models.TextField('备注',null=True,blank=True)
 | |
|     cma = models.TextField('CMA中心',null=True,blank=True)
 | |
|     cma_ok = models.BooleanField(null=True, blank=True)
 | |
|     cnas_ok = models.BooleanField(null=True, blank=True)
 | |
|     cnas = models.TextField('CNAS中心',null=True,blank=True)
 | |
|     cma_o = models.TextField('中心',null=True,blank=True)
 | |
|     cma_oplace = models.TextField('地点',null=True,blank=True)
 | |
|     class Meta:
 | |
|         verbose_name='记录合并'
 | |
| 
 | |
| 
 | |
| 
 | |
| class QueryRecord(BaseModel):
 | |
|     user = models.ForeignKey(User, related_name='record_user', on_delete=models.CASCADE)
 | |
|     path = models.CharField('访问地址', max_length=200)
 | |
|     ip = models.CharField('IP地址', max_length=200, null=True, blank=True)
 | |
|     method = models.CharField('方法', max_length=100, default='GET')
 | |
|     query = JSONField(null=True,blank=True)
 | |
|     search = models.TextField('搜索字符', null=True, blank=True)
 | |
| 
 | |
|     class Meta:
 | |
|         verbose_name = '查询记录'
 | |
|         verbose_name_plural = verbose_name
 | |
| 
 | |
| class Correct(BaseModel):
 | |
|     dlxh = models.TextField('大类序号', null=True,blank=True)
 | |
|     dlmc = models.TextField('大类', null=True,blank=True)
 | |
|     lbxh = models.TextField('类别序号', null=True,blank=True)
 | |
|     lbmc = models.TextField('类别名称', null=True,blank=True)
 | |
|     bclxh = models.TextField('被测量序号', null=True,blank=True)
 | |
|     bclmc = models.TextField('被测量名称', null=True,blank=True)
 | |
|     jzgc = models.TextField('校准规程', null=True, blank=True)
 | |
|     clfw = models.TextField('测量范围', null=True, blank=True)
 | |
|     zqddj = models.TextField('准确度等级', null=True, blank=True)
 | |
|     note = models.TextField('说明', null=True, blank=True)
 | |
|     ssgs = models.TextField('所属公司', null=True, blank=True)
 | |
|     ssbm = models.ForeignKey(Organization, on_delete=models.CASCADE, null=True, blank=True, related_name='correct_ssbm')
 | |
|     
 | |
|     class Meta:
 | |
|         verbose_name='校验能力'
 | |
|         verbose_name_plural=verbose_name
 | |
| 
 | |
| class CMA(BaseModel):
 | |
|     """
 | |
|     CMA检测能力表
 | |
|     """
 | |
|     type_choices = (
 | |
|         ('center', '总部'),
 | |
|         ('sub', '分子公司')
 | |
|     )
 | |
|     dlxh = models.TextField('大类序号', null=True,blank=True)
 | |
|     dlmc = models.TextField('大类', null=True,blank=True)
 | |
|     lbxh = models.TextField('类别序号', null=True,blank=True)
 | |
|     lbmc = models.TextField('类别名称', null=True,blank=True)
 | |
|     xmxh = models.TextField('项目序号', null=True,blank=True)
 | |
|     xmmc = models.TextField('项目名称', null=True,blank=True)
 | |
|     bzmc = models.TextField('标准名称', null=True,blank=True)
 | |
|     bzbh = models.TextField('标准编号', null=True,blank=True)
 | |
|     xzfw = models.TextField('限制范围',null=True,blank=True)
 | |
|     bz = models.TextField('备注',null=True,blank=True)
 | |
|     sszx = models.TextField('所属中心',null=True,blank=True)
 | |
|     type = models.CharField('所属类型', max_length=50,
 | |
|                              choices=type_choices, default='center')
 | |
|     glzz = models.TextField('关联资质', null=True, blank=True)
 | |
| 
 | |
| class Inspection(BaseModel):
 | |
|     """
 | |
|     检验能力表
 | |
|     """
 | |
|     
 | |
|     dlxh = models.TextField('大类序号', null=True,blank=True)
 | |
|     dlmc = models.TextField('大类名称', null=True,blank=True)
 | |
|     dxxh = models.TextField('对象序号', null=True,blank=True)
 | |
|     jydx = models.TextField('检验对象', null=True,blank=True)
 | |
|     jyxmxh = models.TextField('检验项目序号', null=True,blank=True)
 | |
|     jyxmmc = models.TextField('检验项目名称', null=True,blank=True)
 | |
|     jybz = models.TextField('检验标准', null=True,blank=True)
 | |
|     sm = models.TextField('说明', null=True,blank=True)
 | |
|     sxrq = models.TextField('生效日期', null=True,blank=True)
 | |
|     sszx = models.TextField('所属中心',null=True,blank=True)
 | |
| 
 | |
| class CNAS(BaseModel):
 | |
|     """
 | |
|     CNAS检测能力表
 | |
|     """
 | |
|     lbmc = models.TextField('类别名称', null=True,blank=True)
 | |
|     xmmc = models.TextField('项目名称', null=True,blank=True)
 | |
|     bzmc = models.TextField('标准名称', null=True,blank=True)
 | |
|     bzbh = models.TextField('标准编号', null=True,blank=True)
 | |
|     bztk = models.TextField('标准条款', null=True,blank=True)
 | |
|     sszx = models.TextField('所属中心',null=True,blank=True)
 | |
| 
 | |
| class Qualification(BaseModel):
 | |
|     sszx = models.TextField('所属中心', null=True, blank=True)
 | |
|     ssbm = models.ForeignKey(Organization, on_delete=models.CASCADE, null=True, blank=True, related_name='qualification_ssbm')
 | |
|     cma = models.TextField('cma资质', null=True, blank=True)
 | |
|     cnas = models.TextField('cnas资质', null=True, blank=True)
 | |
|     other = models.TextField('检验检测相关其它资质', null=True, blank=True)
 | |
|     service = models.TextField('主要检验检测服务', null=True, blank=True)
 | |
| 
 | |
| class Qualificationother(BaseModel):
 | |
|     qualification = models.ForeignKey(Qualification, on_delete=models.CASCADE, related_name='other_qualification')
 | |
|     name = models.TextField('其他资质', null=True, blank=True)
 | |
|     description = models.TextField('资质范围', null=True, blank=True)
 | |
| 
 | |
| class QualiLib(BaseModel):
 | |
|     """
 | |
|     资质库
 | |
|     """
 | |
|     name = models.CharField('名称', max_length=20)
 | |
|     levels = JSONField('等级', default=list, null=True, blank=True)
 | |
|     scopes = JSONField('范围', default=list, null=True, blank=True)
 | |
| 
 | |
| 
 | |
| class Quali(CommonAModel):
 | |
|     """
 | |
|     资质
 | |
|     """
 | |
|     QUALI_TYPE_CHOICES=(
 | |
|         ('CMA', 'CMA'),
 | |
|         ('CNAS', 'CNAS'),
 | |
|         ('OTHER', 'OTHER')
 | |
|     )
 | |
|     QUALI_GRADE_CHOICES = (
 | |
|         (10, '国家级'),
 | |
|         (20, '省级'),
 | |
|         (30, '市级')
 | |
|     )
 | |
|     org = models.ForeignKey(Organization, on_delete=models.CASCADE, verbose_name='所属单位')
 | |
|     name = models.CharField('资质名称', max_length=20, null=True, blank=True)
 | |
|     type = models.CharField('资质类型', choices=QUALI_TYPE_CHOICES, max_length=10)
 | |
|     grade = models.PositiveSmallIntegerField('等级1', null=True, blank=True)
 | |
|     scope = models.TextField('范围', null=True, blank=True)
 | |
|     level = models.CharField('等级2', max_length=10, null=True, blank=True)
 | |
|     province = models.ForeignKey(Province, on_delete=models.SET_NULL, null=True, blank=True)
 | |
|     city = models.ForeignKey(City, on_delete=models.SET_NULL, null=True, blank=True, related_name='quali_city')
 | |
|     citys = models.ManyToManyField(City, verbose_name='备案城市', related_name='quali_citys', blank=True)
 | |
|     description = models.TextField('描述', null=True, blank=True)
 | |
|     qualilib = models.ForeignKey(QualiLib, verbose_name='关联资质库',
 | |
|                                  null=True, blank=True, on_delete=models.SET_NULL)
 | |
|     end_date = models.DateField('截至日期', null=True, blank=True)
 | |
| 
 | |
| 
 | |
| class QTask(CommonBModel):
 | |
|     """
 | |
|     资质报送任务
 | |
|     """
 | |
|     state_choices = (
 | |
|         ('待发布', '待发布'),
 | |
|         ('进行中', '进行中'),
 | |
|         ('已关闭', '已关闭'),
 | |
|     )
 | |
|     name = models.CharField('名称', max_length=100)
 | |
|     end_date = models.DateField('截止时间', null=True, blank=True)
 | |
|     state = models.CharField('任务状态', max_length=50, choices=state_choices, default='待发布')
 | |
|     class Meta:
 | |
|         verbose_name = '资质报送任务'
 | |
|         verbose_name_plural = verbose_name
 | |
| 
 | |
| 
 | |
| class QOrg(BaseModel):
 | |
|     qtask = models.ForeignKey(QTask, verbose_name='关联任务', on_delete=models.CASCADE, related_name='qorg_qtask')
 | |
|     org = models.ForeignKey(Organization, verbose_name='关联公司', on_delete=models.CASCADE, related_name='qorg_org')
 | |
|     count = models.PositiveIntegerField(default=0)
 | |
|     count_confirmed = models.PositiveIntegerField(default=0)
 | |
|     class Meta:
 | |
|         verbose_name = '资质报送任务部门'
 | |
|         verbose_name_plural = verbose_name
 | |
| 
 | |
| 
 | |
| class QAction(CommonBModel):
 | |
|     """
 | |
|     任务操作
 | |
|     """
 | |
|     QACTION_CHOICE = (
 | |
|         ('service:update', '更新服务'),
 | |
|         ('quali:create', '新增资质'),
 | |
|         ('quali:update', '更新资质'),
 | |
|         ('ablity:create', '新增能力'),
 | |
|     )
 | |
|     action = models.CharField('操作类型', max_length=20, choices=QACTION_CHOICE)
 | |
|     quali = models.ForeignKey(Quali, null=True, blank=True, verbose_name='操作资质', on_delete=models.CASCADE)
 | |
|     file = models.ForeignKey(File, null=True, blank=True, verbose_name='能力文件', on_delete=models.CASCADE)
 | |
|     atype = models.ForeignKey(Dict, null=True, blank=True, verbose_name='能力类型',
 | |
|                               on_delete=models.CASCADE, related_name='quali_atype')
 | |
|     afield = models.ForeignKey(Dict, null=True, blank=True, verbose_name='所属领域',
 | |
|                                on_delete=models.CASCADE, related_name='quali_afield')
 | |
|     num = models.PositiveIntegerField('新增对象数量', null=True, blank=True)
 | |
|     num2 = models.PositiveIntegerField('新增参数数量', null=True, blank=True)
 | |
|     num3 = models.PositiveIntegerField('新增方法标准数量', null=True, blank=True)
 | |
|     num4 = models.PositiveIntegerField('新增产品标准数量', null=True, blank=True)
 | |
|     qtask = models.ForeignKey(QTask, on_delete=models.CASCADE)
 | |
|     value1 = JSONField('值1', null=True, blank=True, default=dict)
 | |
|     value2 = JSONField('值2', null=True, blank=True, default=dict)
 | |
|     confirmed = models.BooleanField('是否确认',default=False)
 | |
| 
 | |
| 
 | |
| class QActionItem(BaseModel):
 | |
|     QACTIONITEM_CHOICE = (
 | |
|         ('update', '更新'),
 | |
|         ('citys:add', '新增备案城市'),
 | |
|         ('citys:remove', '移除备案城市'),
 | |
|     )
 | |
|     action = models.CharField('操作类型', max_length=20, choices=QACTIONITEM_CHOICE)
 | |
|     field = models.CharField('变动字段', max_length=20)
 | |
|     value1 = JSONField('原值', null=True, blank=True, default=dict)
 | |
|     value2 = JSONField('新值', null=True, blank=True, default=dict)
 | |
|     city = models.ForeignKey(City, on_delete=models.SET_NULL, null=True, blank=True)
 | |
|     qaction = models.ForeignKey(QAction, verbose_name='关联操作',
 | |
|                                 on_delete=models.CASCADE, related_name='items_qaction', null=True, blank=True)
 | |
| 
 | |
| 
 |