fix: 日志撤销的同时将任务变更状态
This commit is contained in:
parent
7e578b52c2
commit
bdd644a527
|
|
@ -265,6 +265,12 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
|
|||
mlog.stored_mgroup = stored_mgroup
|
||||
mlog.save()
|
||||
|
||||
# 更新任务进度
|
||||
cal_mtask_progress_from_mlog(mlog)
|
||||
|
||||
# 更新物料数量
|
||||
MyThread(target=cal_material_count_from_mlog,args=(mlog,)).start()
|
||||
|
||||
# 触发批次统计分析
|
||||
if mlog.batch:
|
||||
MyThread(target=get_alldata_with_batch_and_store, args=(mlog.batch,)).start()
|
||||
|
|
@ -386,10 +392,32 @@ def mlog_revert(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
|
|||
if update_mtaskIds:
|
||||
Mtask.objects.filter(id__in=update_mtaskIds, state=Mtask.MTASK_SUBMIT).update(state=Mtask.MTASK_ASSGINED)
|
||||
|
||||
# 更新任务进度
|
||||
cal_mtask_progress_from_mlog(mlog)
|
||||
|
||||
# 更新物料数量
|
||||
MyThread(target=cal_material_count_from_mlog,args=(mlog,)).start()
|
||||
|
||||
# 触发批次统计分析
|
||||
if mlog.batch:
|
||||
MyThread(target=get_alldata_with_batch_and_store, args=(mlog.batch,)).start()
|
||||
|
||||
def cal_mtask_progress_from_mlog(mlog):
|
||||
"""
|
||||
更新mlog关联的任务进度(可线程中执行)
|
||||
"""
|
||||
if mlog.fill_way in [Mlog.MLOG_2, Mlog.MLOG_12] and mlog.mtask:
|
||||
update_mtask(mlog.mtask, fill_way=mlog.fill_way)
|
||||
elif mlog.fill_way == Mlog.MLOG_23:
|
||||
cal_mlog_count_from_mlogb(mlog)
|
||||
m_outs_qs = Mlogb.objects.filter(mlog=mlog, material_out__isnull=False)
|
||||
caled_mtask = []
|
||||
for item in m_outs_qs.all():
|
||||
mtask = item.mtask
|
||||
if mtask in caled_mtask:
|
||||
continue
|
||||
update_mtask(mtask, fill_way=mlog.fill_way)
|
||||
caled_mtask.append(mtask)
|
||||
|
||||
def cal_mlog_count_from_mlogb(mlog: Mlog):
|
||||
"""
|
||||
|
|
@ -422,23 +450,6 @@ def cal_mlog_count_from_mlogb(mlog: Mlog):
|
|||
# 保存更新后的Mlog对象
|
||||
mlog.save()
|
||||
|
||||
def cal_mtask_progress_from_mlog(mlog: Mlog):
|
||||
"""
|
||||
更新mlog关联的任务进度(可线程中执行)
|
||||
"""
|
||||
if mlog.fill_way in [Mlog.MLOG_2, Mlog.MLOG_12] and mlog.mtask:
|
||||
update_mtask(mlog.mtask, fill_way=mlog.fill_way)
|
||||
elif mlog.fill_way == Mlog.MLOG_23:
|
||||
cal_mlog_count_from_mlogb(mlog)
|
||||
m_outs_qs = Mlogb.objects.filter(mlog=mlog, material_out__isnull=False)
|
||||
caled_mtask = []
|
||||
for item in m_outs_qs.all():
|
||||
mtask = item.mtask
|
||||
if mtask in caled_mtask:
|
||||
continue
|
||||
update_mtask(mtask, fill_way=mlog.fill_way)
|
||||
caled_mtask.append(mtask)
|
||||
|
||||
def cal_material_count_from_mlog(mlog: Mlog):
|
||||
"""
|
||||
更新mlog关联的物料数量(可单独执行)
|
||||
|
|
@ -458,6 +469,7 @@ def cal_material_count_from_mlog(mlog: Mlog):
|
|||
|
||||
|
||||
def update_mtask(mtask: Mtask, fill_way: int = 10):
|
||||
mtask = Mtask.objects.get(id=mtask.id) # 防止并发修改获取最新的mtask
|
||||
from apps.pm.models import Utask
|
||||
if fill_way == Mlog.MLOG_2:
|
||||
res = Mlog.objects.filter(mtask=mtask).exclude(submit_time=None).aggregate(sum_count_real=Sum(
|
||||
|
|
@ -656,5 +668,4 @@ def mlog_audit_end(ticket: Ticket):
|
|||
now = timezone.now()
|
||||
ins = Mlog.objects.get(id=ticket.ticket_data['t_id'])
|
||||
mlog_submit(ins, ticket.create_by, now)
|
||||
MyThread(target=cal_mtask_progress_from_mlog,args=(ins,)).start()
|
||||
MyThread(target=cal_material_count_from_mlog,args=(ins,)).start()
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,4 @@
|
|||
from django.db import transaction
|
||||
from django.db.models import Prefetch
|
||||
from django.shortcuts import render
|
||||
from rest_framework.decorators import action
|
||||
from rest_framework.exceptions import ParseError
|
||||
from rest_framework.mixins import DestroyModelMixin, ListModelMixin, UpdateModelMixin, CreateModelMixin
|
||||
|
|
@ -11,7 +9,6 @@ from django.utils import timezone
|
|||
from apps.system.models import User
|
||||
|
||||
from apps.mtm.models import Material, Process
|
||||
from apps.pm.models import Mtask
|
||||
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
||||
|
||||
from .filters import StLogFilter, SfLogFilter, WMaterialFilter, MlogFilter, HandoverFilter, MlogbFilter, BatchStFilter
|
||||
|
|
@ -22,9 +19,7 @@ from .serializers import (SflogExpSerializer, SfLogSerializer, StLogSerializer,
|
|||
AttLogSerializer, OtherLogSerializer, MlogInitSerializer, MlogChangeSerializer,
|
||||
MlogbDetailSerializer, MlogbInSerializer, MlogbInUpdateSerializer,
|
||||
MlogbOutUpdateSerializer, FmlogSerializer, FmlogUpdateSerializer, BatchStSerializer)
|
||||
from .services import mlog_submit, update_mtask, handover_submit, mlog_revert, cal_material_count_from_mlog, cal_mtask_progress_from_mlog
|
||||
from apps.utils.thread import MyThread
|
||||
from apps.monitor.services import create_auditlog, delete_auditlog
|
||||
from .services import mlog_submit, handover_submit, mlog_revert
|
||||
from apps.wpm.services import mlog_submit_validate, generate_new_batch
|
||||
# Create your views here.
|
||||
|
||||
|
|
@ -225,8 +220,6 @@ class MlogViewSet(CustomModelViewSet):
|
|||
vdata_new = MlogSerializer(ins).data
|
||||
# create_auditlog('submit', ins, vdata_new,
|
||||
# vdata_old, now, self.request.user)
|
||||
MyThread(target=cal_mtask_progress_from_mlog,args=(ins,)).start()
|
||||
MyThread(target=cal_material_count_from_mlog,args=(ins,)).start()
|
||||
return Response(vdata_new)
|
||||
|
||||
@action(methods=['post'], detail=True, perms_map={'post': 'mlog.submit'}, serializer_class=MlogRevertSerializer)
|
||||
|
|
@ -246,8 +239,6 @@ class MlogViewSet(CustomModelViewSet):
|
|||
mlog_revert(ins, user, now)
|
||||
# create_auditlog('revert', ins, {}, {}, now, user,
|
||||
# request.data.get('change_reason', ''))
|
||||
MyThread(target=cal_mtask_progress_from_mlog,args=(ins,)).start()
|
||||
MyThread(target=cal_material_count_from_mlog,args=(ins,)).start()
|
||||
return Response(MlogSerializer(instance=ins).data)
|
||||
|
||||
@action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=MlogRelatedSerializer)
|
||||
|
|
|
|||
Loading…
Reference in New Issue