定时关闭访客/相关方入厂项目

This commit is contained in:
曹前明 2022-08-24 15:51:19 +08:00
parent e7403c2f32
commit 5f0f715e34
7 changed files with 83 additions and 12 deletions

View File

@ -9,6 +9,7 @@ from datetime import datetime
from django.utils import timezone from django.utils import timezone
myLogger = logging.getLogger('log') myLogger = logging.getLogger('log')
class HrmService: class HrmService:
@classmethod @classmethod
@ -205,7 +206,7 @@ class HrmService:
if id_number: # 如果有身份证号 if id_number: # 如果有身份证号
if device.is_clock: if device.is_clock:
# 如果设置为关联考勤 # 如果设置为关联考勤
myLogger.info(data['info']['extend']) # myLogger.info(data['info']['extend'])
if data['info']['extend']['enterOrExit'] == 1: if data['info']['extend']['enterOrExit'] == 1:
# 如果是进门 # 如果是进门
ep = Employee.objects.filter(id_number=id_number, type__in=["employee", "remployee"]).first() ep = Employee.objects.filter(id_number=id_number, type__in=["employee", "remployee"]).first()

View File

@ -0,0 +1,18 @@
# Generated by Django 3.2.12 on 2022-08-24 07:50
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rpm', '0003_auto_20220823_1628'),
]
operations = [
migrations.AddField(
model_name='rpj',
name='remployees',
field=models.ManyToManyField(related_name='rpj_remployees', through='rpm.Rpjmember', to='rpm.Remployee'),
),
]

View File

@ -43,12 +43,14 @@ class Rpj(CommonBDModel):
RPJ_ENTER = 30 RPJ_ENTER = 30
RPJ_WORKING = 40 RPJ_WORKING = 40
RPJ_DONE = 50 RPJ_DONE = 50
RPJ_CLOSE = 60
RP_STATE_CHOICES = ( RP_STATE_CHOICES = (
(10, '创建中'), (10, '创建中'),
(20, '审批中'), (20, '审批中'),
(30, '待入厂'), (30, '待入厂'),
(40, '进行中'), (40, '进行中'),
(50, '已完成') (50, '已完成'),
(60, '已关闭')
) )
RP_TYPE_CHOICES = ( RP_TYPE_CHOICES = (
(10, '建筑施工'), (10, '建筑施工'),
@ -63,7 +65,7 @@ class Rpj(CommonBDModel):
leave_time = models.DateTimeField('离厂时间') leave_time = models.DateTimeField('离厂时间')
state = models.PositiveSmallIntegerField('状态', default=10) state = models.PositiveSmallIntegerField('状态', default=10)
rparty = models.ForeignKey(Rparty, verbose_name='关联相关方', on_delete=models.CASCADE) rparty = models.ForeignKey(Rparty, verbose_name='关联相关方', on_delete=models.CASCADE)
remployees = models.ManyToManyField('rpm.remployee', through='rpm.rpjmember') remployees = models.ManyToManyField('rpm.remployee', through='rpm.rpjmember', related_name='rpj_remployees')
# belong_dept是业务部门可以带过来 # belong_dept是业务部门可以带过来
ticket = models.ForeignKey(Ticket, verbose_name='关联工单', ticket = models.ForeignKey(Ticket, verbose_name='关联工单',
on_delete=models.SET_NULL, null=True, blank=True) on_delete=models.SET_NULL, null=True, blank=True)

View File

@ -1,6 +1,23 @@
# Create your tasks here # Create your tasks here
from __future__ import absolute_import, unicode_literals from __future__ import absolute_import, unicode_literals
from apps.hrm.models import Certificate, Employee from apps.rpm.models import Rpj
from apps.rpm.models import Rcertificate, Remployee, Rpj, Rpjcertificate, Rpjmember
from apps.utils.tasks import CustomTask from apps.utils.tasks import CustomTask
from celery import shared_task from celery import shared_task
from django.utils import timezone
@shared_task(base=CustomTask)
def close_rpj_by_leave_time():
"""
定时关闭相关方入厂项目
"""
now = timezone.now()
# 正常结束/其他关闭
rpjs = Rpj.objects.filter(leave_time__lt=now)
for i in rpjs:
if i.state == Rpj.RPJ_WORKING:
i.state = Rpj.RPJ_DONE
i.save()
else:
i.state = Rpj.RPJ_CLOSE
i.save()

View File

@ -0,0 +1,18 @@
# Generated by Django 3.2.12 on 2022-08-24 07:50
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('vm', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='visit',
name='state',
field=models.PositiveSmallIntegerField(choices=[(10, '创建中'), (20, '审批中'), (30, '待入厂'), (40, '进行中'), (50, '已完成'), (60, '已关闭')], default=10),
),
]

View File

@ -22,12 +22,14 @@ class Visit(CommonBModel):
V_ENTER = 30 V_ENTER = 30
V_WORKING = 40 V_WORKING = 40
V_DONE = 50 V_DONE = 50
V_CLOSE = 60
V_STATE_CHOICES = ( V_STATE_CHOICES = (
(10, '创建中'), (10, '创建中'),
(20, '审批中'), (20, '审批中'),
(30, '待入厂'), (30, '待入厂'),
(40, '进行中'), (40, '进行中'),
(50, '已完成') (50, '已完成'),
(60, '已关闭')
) )
V_LEVEL_CHOICES = ( V_LEVEL_CHOICES = (
(10, '一般'), (10, '一般'),

View File

@ -1,10 +1,23 @@
# Create your tasks here # Create your tasks here
from __future__ import absolute_import, unicode_literals from __future__ import absolute_import, unicode_literals
from apps.hrm.models import Employee from apps.vm.models import Visit
from apps.utils.tasks import CustomTask from apps.utils.tasks import CustomTask
from apps.vm.models import Visit, Vpeople
from apps.wf.models import Ticket
from celery import shared_task from celery import shared_task
from apps.hrm.services import HrmService from django.utils import timezone
from apps.wf.services import WfService
@shared_task(base=CustomTask)
def close_visit_by_leave_time():
"""
定时关闭访客入厂项目
"""
now = timezone.now()
# 正常结束/其他关闭
vs = Visit.objects.filter(leave_time__lt=now)
for i in vs:
if i.state == Visit.V_WORKING:
i.state = Visit.V_DONE
i.save()
else:
i.state = Visit.V_CLOSE
i.save()