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