调整access表
This commit is contained in:
parent
9f83de4813
commit
a2e96c4c53
|
@ -0,0 +1,42 @@
|
||||||
|
# Generated by Django 3.2.12 on 2022-06-25 08:31
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('am', '0004_auto_20220625_1058'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name='access',
|
||||||
|
name='post',
|
||||||
|
),
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name='area',
|
||||||
|
name='posts_access',
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='access',
|
||||||
|
name='obj',
|
||||||
|
field=models.CharField(blank=True, max_length=50, null=True, unique=True, verbose_name='关联对象'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='access',
|
||||||
|
name='obj_cate',
|
||||||
|
field=models.CharField(default='employee', help_text='employee/post', max_length=20, verbose_name='对象类型'),
|
||||||
|
preserve_default=False,
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='area',
|
||||||
|
name='is_hidden',
|
||||||
|
field=models.BooleanField(default=False, verbose_name='隐藏围栏用'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='area',
|
||||||
|
name='type',
|
||||||
|
field=models.PositiveSmallIntegerField(choices=[(10, '固定'), (20, '临时作业')], default=10, verbose_name='区域类型'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -1,5 +1,7 @@
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from apps.hrm.models import Employee
|
||||||
from apps.system.models import Post, User
|
from apps.system.models import Post, User
|
||||||
|
from apps.utils.constants import ObjCate
|
||||||
from apps.utils.models import CommonADModel, CommonBModel
|
from apps.utils.models import CommonADModel, CommonBModel
|
||||||
# Create your models here.
|
# Create your models here.
|
||||||
|
|
||||||
|
@ -22,7 +24,7 @@ class Area(CommonBModel):
|
||||||
AREA_TYPE_TEMP = 20
|
AREA_TYPE_TEMP = 20
|
||||||
AREA_TYPE_CHOICES = (
|
AREA_TYPE_CHOICES = (
|
||||||
(10, '固定'),
|
(10, '固定'),
|
||||||
(20, '临时')
|
(20, '临时作业')
|
||||||
)
|
)
|
||||||
name = models.CharField('名称', max_length=20)
|
name = models.CharField('名称', max_length=20)
|
||||||
type = models.PositiveSmallIntegerField('区域类型', default=10, choices=AREA_TYPE_CHOICES)
|
type = models.PositiveSmallIntegerField('区域类型', default=10, choices=AREA_TYPE_CHOICES)
|
||||||
|
@ -32,10 +34,10 @@ class Area(CommonBModel):
|
||||||
visitor_yes = models.BooleanField('准许访客人员', default=False)
|
visitor_yes = models.BooleanField('准许访客人员', default=False)
|
||||||
remployee_yes = models.BooleanField('准许相关方人员', default=False)
|
remployee_yes = models.BooleanField('准许相关方人员', default=False)
|
||||||
employee_yes = models.BooleanField('准许全部员工', default=True)
|
employee_yes = models.BooleanField('准许全部员工', default=True)
|
||||||
posts_access = models.ManyToManyField(Post, through='am.access')
|
|
||||||
count_people_min = models.PositiveIntegerField('最小人员数', default=0)
|
count_people_min = models.PositiveIntegerField('最小人员数', default=0)
|
||||||
count_people_max = models.PositiveIntegerField('最大人员数', default=1000)
|
count_people_max = models.PositiveIntegerField('最大人员数', default=1000)
|
||||||
count_people = models.PositiveIntegerField('当前人数', default=0)
|
count_people = models.PositiveIntegerField('当前人数', default=0)
|
||||||
|
is_hidden = models.BooleanField('隐藏围栏用', default=False)
|
||||||
third_info = models.JSONField('三方信息', default=dict,
|
third_info = models.JSONField('三方信息', default=dict,
|
||||||
null=False, blank=True)
|
null=False, blank=True)
|
||||||
|
|
||||||
|
@ -45,7 +47,7 @@ class Area(CommonBModel):
|
||||||
|
|
||||||
class Access(CommonADModel):
|
class Access(CommonADModel):
|
||||||
"""
|
"""
|
||||||
岗位准入权限
|
准入禁入权限(动态变化)
|
||||||
"""
|
"""
|
||||||
ACCESS_IN_YES = 10
|
ACCESS_IN_YES = 10
|
||||||
ACCESS_IN_NO = 20
|
ACCESS_IN_NO = 20
|
||||||
|
@ -53,8 +55,9 @@ class Access(CommonADModel):
|
||||||
(ACCESS_IN_YES, '准入'),
|
(ACCESS_IN_YES, '准入'),
|
||||||
(ACCESS_IN_NO, '禁入')
|
(ACCESS_IN_NO, '禁入')
|
||||||
)
|
)
|
||||||
|
|
||||||
type = models.PositiveSmallIntegerField('准入类型', choices=ACCESS_CHOICE)
|
type = models.PositiveSmallIntegerField('准入类型', choices=ACCESS_CHOICE)
|
||||||
area = models.ForeignKey(Area, verbose_name='关联区域',
|
area = models.ForeignKey(Area, verbose_name='关联区域',
|
||||||
on_delete=models.CASCADE)
|
on_delete=models.CASCADE)
|
||||||
post = models.ForeignKey(Post, verbose_name='关联岗位',
|
obj_cate = models.CharField('对象类型', max_length=20, help_text='employee/post')
|
||||||
on_delete=models.CASCADE)
|
obj = models.CharField('关联对象', unique=True, max_length=50, null=True, blank=True)
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
|
|
||||||
|
|
||||||
from apps.am.models import Area
|
from apps.am.models import Area
|
||||||
|
from apps.hrm.models import Employee
|
||||||
|
from apps.system.models import User
|
||||||
from apps.third.clients import xxClient
|
from apps.third.clients import xxClient
|
||||||
from apps.third.tapis import xxapis
|
from apps.third.tapis import xxapis
|
||||||
|
|
||||||
|
@ -59,7 +61,8 @@ class EcmService:
|
||||||
"""
|
"""
|
||||||
# 判断区域是否超员
|
# 判断区域是否超员
|
||||||
area = Area.objects.filter(third_info__xx_rail__id=data['railId']).first()
|
area = Area.objects.filter(third_info__xx_rail__id=data['railId']).first()
|
||||||
if area:
|
ep = Employee.objects.filter(third_info__xx_userId=data['userId']).first()
|
||||||
|
if area and area.type == Area.AREA_TYPE_FIX: # 如果是固定区域
|
||||||
json = {"railId": data['railId'], "type": ""}
|
json = {"railId": data['railId'], "type": ""}
|
||||||
_, res = xxClient.request(**xxapis['rail_ibeacon_list'], json=json)
|
_, res = xxClient.request(**xxapis['rail_ibeacon_list'], json=json)
|
||||||
total_count = res['totalCount']
|
total_count = res['totalCount']
|
||||||
|
@ -73,3 +76,10 @@ class EcmService:
|
||||||
area.count_people_min = total_count
|
area.count_people_min = total_count
|
||||||
area.save()
|
area.save()
|
||||||
pass
|
pass
|
||||||
|
# 判断有无进入权限
|
||||||
|
if ep.type == 'employee' and area.employee_yes:
|
||||||
|
return
|
||||||
|
elif ep.type == 'remployee' and area.remployee_yes:
|
||||||
|
return
|
||||||
|
elif ep.type == 'visitor' and area.visitor_yes:
|
||||||
|
return
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from apps.am.models import Area
|
from apps.am.models import Area
|
||||||
import uuid
|
import uuid
|
||||||
|
from apps.utils.constants import ObjCate
|
||||||
from apps.utils.models import BaseModel
|
from apps.utils.models import BaseModel
|
||||||
|
|
||||||
# Create your models here.
|
# Create your models here.
|
||||||
|
@ -37,6 +38,8 @@ class TDevice(BaseModel):
|
||||||
verbose_name='所在区', null=True, blank=True)
|
verbose_name='所在区', null=True, blank=True)
|
||||||
areas = models.ManyToManyField(Area, verbose_name='覆盖区',
|
areas = models.ManyToManyField(Area, verbose_name='覆盖区',
|
||||||
related_name='tareas')
|
related_name='tareas')
|
||||||
|
obj_cate = models.CharField('对象类型', max_length=20, help_text='employee/...')
|
||||||
|
obj = models.CharField('绑定对象', unique=True, max_length=50, null=True, blank=True)
|
||||||
is_clock = models.BooleanField('是否打卡设备', default=False)
|
is_clock = models.BooleanField('是否打卡设备', default=False)
|
||||||
third_info = models.JSONField('三方信息', default=dict,
|
third_info = models.JSONField('三方信息', default=dict,
|
||||||
null=False, blank=True)
|
null=False, blank=True)
|
||||||
|
|
|
@ -1,4 +1,9 @@
|
||||||
|
from django.db import models
|
||||||
|
|
||||||
EXCLUDE_FIELDS_BASE = ['create_time', 'update_time', 'is_deleted']
|
EXCLUDE_FIELDS_BASE = ['create_time', 'update_time', 'is_deleted']
|
||||||
EXCLUDE_FIELDS = ['create_time', 'update_time', 'is_deleted', 'create_by', 'update_by']
|
EXCLUDE_FIELDS = ['create_time', 'update_time', 'is_deleted', 'create_by', 'update_by']
|
||||||
|
|
||||||
|
|
||||||
|
class ObjCate(models.IntegerChoices):
|
||||||
|
EMPLOYEE = 10, '个人'
|
||||||
|
POST = 20, '岗位'
|
||||||
|
|
Loading…
Reference in New Issue