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.stored_mgroup = stored_mgroup
|
||||||
mlog.save()
|
mlog.save()
|
||||||
|
|
||||||
|
# 更新任务进度
|
||||||
|
cal_mtask_progress_from_mlog(mlog)
|
||||||
|
|
||||||
|
# 更新物料数量
|
||||||
|
MyThread(target=cal_material_count_from_mlog,args=(mlog,)).start()
|
||||||
|
|
||||||
# 触发批次统计分析
|
# 触发批次统计分析
|
||||||
if mlog.batch:
|
if mlog.batch:
|
||||||
MyThread(target=get_alldata_with_batch_and_store, args=(mlog.batch,)).start()
|
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:
|
if update_mtaskIds:
|
||||||
Mtask.objects.filter(id__in=update_mtaskIds, state=Mtask.MTASK_SUBMIT).update(state=Mtask.MTASK_ASSGINED)
|
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:
|
if mlog.batch:
|
||||||
MyThread(target=get_alldata_with_batch_and_store, args=(mlog.batch,)).start()
|
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):
|
def cal_mlog_count_from_mlogb(mlog: Mlog):
|
||||||
"""
|
"""
|
||||||
|
|
@ -422,23 +450,6 @@ def cal_mlog_count_from_mlogb(mlog: Mlog):
|
||||||
# 保存更新后的Mlog对象
|
# 保存更新后的Mlog对象
|
||||||
mlog.save()
|
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):
|
def cal_material_count_from_mlog(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):
|
def update_mtask(mtask: Mtask, fill_way: int = 10):
|
||||||
|
mtask = Mtask.objects.get(id=mtask.id) # 防止并发修改获取最新的mtask
|
||||||
from apps.pm.models import Utask
|
from apps.pm.models import Utask
|
||||||
if fill_way == Mlog.MLOG_2:
|
if fill_way == Mlog.MLOG_2:
|
||||||
res = Mlog.objects.filter(mtask=mtask).exclude(submit_time=None).aggregate(sum_count_real=Sum(
|
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()
|
now = timezone.now()
|
||||||
ins = Mlog.objects.get(id=ticket.ticket_data['t_id'])
|
ins = Mlog.objects.get(id=ticket.ticket_data['t_id'])
|
||||||
mlog_submit(ins, ticket.create_by, now)
|
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 import transaction
|
||||||
from django.db.models import Prefetch
|
|
||||||
from django.shortcuts import render
|
|
||||||
from rest_framework.decorators import action
|
from rest_framework.decorators import action
|
||||||
from rest_framework.exceptions import ParseError
|
from rest_framework.exceptions import ParseError
|
||||||
from rest_framework.mixins import DestroyModelMixin, ListModelMixin, UpdateModelMixin, CreateModelMixin
|
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.system.models import User
|
||||||
|
|
||||||
from apps.mtm.models import Material, Process
|
from apps.mtm.models import Material, Process
|
||||||
from apps.pm.models import Mtask
|
|
||||||
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
||||||
|
|
||||||
from .filters import StLogFilter, SfLogFilter, WMaterialFilter, MlogFilter, HandoverFilter, MlogbFilter, BatchStFilter
|
from .filters import StLogFilter, SfLogFilter, WMaterialFilter, MlogFilter, HandoverFilter, MlogbFilter, BatchStFilter
|
||||||
|
|
@ -22,9 +19,7 @@ from .serializers import (SflogExpSerializer, SfLogSerializer, StLogSerializer,
|
||||||
AttLogSerializer, OtherLogSerializer, MlogInitSerializer, MlogChangeSerializer,
|
AttLogSerializer, OtherLogSerializer, MlogInitSerializer, MlogChangeSerializer,
|
||||||
MlogbDetailSerializer, MlogbInSerializer, MlogbInUpdateSerializer,
|
MlogbDetailSerializer, MlogbInSerializer, MlogbInUpdateSerializer,
|
||||||
MlogbOutUpdateSerializer, FmlogSerializer, FmlogUpdateSerializer, BatchStSerializer)
|
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 .services import mlog_submit, handover_submit, mlog_revert
|
||||||
from apps.utils.thread import MyThread
|
|
||||||
from apps.monitor.services import create_auditlog, delete_auditlog
|
|
||||||
from apps.wpm.services import mlog_submit_validate, generate_new_batch
|
from apps.wpm.services import mlog_submit_validate, generate_new_batch
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
|
|
||||||
|
|
@ -225,8 +220,6 @@ class MlogViewSet(CustomModelViewSet):
|
||||||
vdata_new = MlogSerializer(ins).data
|
vdata_new = MlogSerializer(ins).data
|
||||||
# create_auditlog('submit', ins, vdata_new,
|
# create_auditlog('submit', ins, vdata_new,
|
||||||
# vdata_old, now, self.request.user)
|
# 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)
|
return Response(vdata_new)
|
||||||
|
|
||||||
@action(methods=['post'], detail=True, perms_map={'post': 'mlog.submit'}, serializer_class=MlogRevertSerializer)
|
@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)
|
mlog_revert(ins, user, now)
|
||||||
# create_auditlog('revert', ins, {}, {}, now, user,
|
# create_auditlog('revert', ins, {}, {}, now, user,
|
||||||
# request.data.get('change_reason', ''))
|
# 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)
|
return Response(MlogSerializer(instance=ins).data)
|
||||||
|
|
||||||
@action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=MlogRelatedSerializer)
|
@action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=MlogRelatedSerializer)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue