69 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
| from django.db import models
 | |
| from apps.hrm.models import Employee
 | |
| from apps.system.models import Dept, Post, User
 | |
| from apps.utils.models import CommonADModel, CommonBModel
 | |
| # Create your models here.
 | |
| 
 | |
| 
 | |
| class Area(CommonBModel):
 | |
|     """
 | |
|     地图区域
 | |
|     """
 | |
|     AREA_1 = 10
 | |
|     AREA_2 = 20
 | |
|     AREA_3 = 30
 | |
|     AREA_4 = 40
 | |
|     AREA_LEVEL_CHOICES = (
 | |
|         (AREA_1, '办公'),
 | |
|         (AREA_2, '生产一般'),
 | |
|         (AREA_3, '生产重点'),
 | |
|         (AREA_4, '四级')
 | |
|     )
 | |
|     AREA_TYPE_FIX = 10
 | |
|     AREA_TYPE_TEMP = 20
 | |
|     AREA_TYPE_CHOICES = (
 | |
|         (10, '固定'),
 | |
|         (20, '临时作业')
 | |
|     )
 | |
|     name = models.CharField('名称', max_length=20)
 | |
|     type = models.PositiveSmallIntegerField('区域类型', default=10, choices=AREA_TYPE_CHOICES)
 | |
|     level = models.PositiveSmallIntegerField('区域风险等级')
 | |
|     cate = models.PositiveSmallIntegerField('区域分类')
 | |
|     number = models.CharField('编号', max_length=20, null=True, blank=True)
 | |
|     access_list = models.JSONField('准入人员类型', default=list, null=False, blank=True, help_text='employee/remployee/visitor/driver')
 | |
|     count_people_min = models.PositiveIntegerField('最小人员数', default=0)
 | |
|     count_people_max = models.PositiveIntegerField('最大人员数', default=1000)
 | |
|     count_people = models.PositiveIntegerField('当前人数', default=0)
 | |
|     stay_minute_min = models.PositiveSmallIntegerField('最短停留时间', default=0, help_text='0代表未配置')
 | |
|     stay_minute_max = models.PositiveSmallIntegerField('最长停留时间', default=0, help_text='0代表未配置')
 | |
|     is_hidden = models.BooleanField('隐藏围栏用', default=False)
 | |
|     manager = models.ForeignKey(User, on_delete=models.SET_NULL, verbose_name='区域负责人', null=True, blank=True)
 | |
|     third_info = models.JSONField('三方信息', default=dict,
 | |
|                                   null=False, blank=True)
 | |
| 
 | |
|     def __str__(self) -> str:
 | |
|         return self.name
 | |
| 
 | |
| 
 | |
| class Access(CommonADModel):
 | |
|     """
 | |
|     准入禁入权限(动态变化)
 | |
|     """
 | |
|     ACCESS_IN_YES = 10
 | |
|     ACCESS_IN_NO = 20
 | |
|     ACCESS_CHOICE = (
 | |
|         (ACCESS_IN_YES, '准入'),
 | |
|         (ACCESS_IN_NO, '禁入')
 | |
|     )
 | |
| 
 | |
|     type = models.PositiveSmallIntegerField('准入类型', choices=ACCESS_CHOICE)
 | |
|     area = models.ForeignKey(Area, verbose_name='关联区域',
 | |
|                              on_delete=models.CASCADE)
 | |
|     obj_cate = models.CharField('对象类型', max_length=20, help_text='post/org/people/visit')
 | |
|     post = models.ForeignKey(Post, verbose_name='关联岗位', on_delete=models.SET_NULL, null=True, blank=True)
 | |
|     dept = models.ForeignKey(Dept, verbose_name='关联部门', on_delete=models.SET_NULL, null=True, blank=True)
 | |
|     employee = models.ForeignKey(Employee, verbose_name='关联人员', on_delete=models.SET_NULL, null=True, blank=True)
 | |
|     stay_minute_min = models.PositiveSmallIntegerField('最短停留时间', default=0)
 | |
|     stay_minute_max = models.PositiveSmallIntegerField('最长停留时间', default=0)
 | |
|     sort = models.PositiveSmallIntegerField('排序', default=1)
 |