feat: 车间库存检验支持撤回
This commit is contained in:
parent
c37e71d60f
commit
e385a558e9
|
|
@ -157,6 +157,43 @@ def ftestwork_submit(ins:FtestWork, user: User):
|
|||
# 触发批次统计分析
|
||||
ana_batch_thread(xbatchs=[ins.batch])
|
||||
|
||||
|
||||
def ftestwork_revert(ins: FtestWork):
|
||||
wm:WMaterial = ins.wm
|
||||
if wm and ins.need_update_wm:
|
||||
fwd_qs = FtestworkDefect.objects.filter(ftestwork=ins)
|
||||
for item in fwd_qs:
|
||||
item:FtestworkDefect = item
|
||||
if item.count > 0:
|
||||
wm.count = wm.count + item.count
|
||||
wm.save()
|
||||
wmstate = WMaterial.WM_OK
|
||||
if item.defect.okcate == Defect.DEFECT_NOTOK:
|
||||
wmstate = WMaterial.WM_NOTOK
|
||||
try:
|
||||
wmx = WMaterial.objects.get(
|
||||
material=wm.material,
|
||||
batch=wm.batch,
|
||||
mgroup=wm.mgroup,
|
||||
belong_dept=wm.belong_dept,
|
||||
state=wmstate,
|
||||
notok_sign=None,
|
||||
defect=item.defect,
|
||||
)
|
||||
except Exception as e:
|
||||
raise ParseError(f'找不到{item.defect.name}的车间库存: {str(e)}')
|
||||
wmx.count = wmx.count - item.count
|
||||
if wmx.count < 0:
|
||||
raise ParseError("数量不足,撤销失败")
|
||||
wmx.save()
|
||||
else:
|
||||
raise ParseError("该检验工作不支持撤销")
|
||||
ins.submit_user = None
|
||||
ins.submit_time = None
|
||||
ins.save()
|
||||
# 触发批次统计分析
|
||||
ana_batch_thread(xbatchs=[ins.batch])
|
||||
|
||||
def bind_ftestwork(ticket: Ticket, transition, new_ticket_data: dict):
|
||||
ins = FtestWork.objects.get(id=new_ticket_data['t_id'])
|
||||
if ins.submit_time is not None:
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
|||
from apps.wpm.models import SfLog
|
||||
from apps.qm.filters import QuaStatFilter, TestItemFilter, FtestWorkFilter, QctFilter, FtestFilter
|
||||
from django.db import transaction
|
||||
from apps.qm.services import ftestwork_submit
|
||||
from apps.qm.services import ftestwork_submit, ftestwork_revert
|
||||
from apps.wpm.services_2 import ana_batch_thread
|
||||
from apps.wf.models import State
|
||||
# Create your views here.
|
||||
|
|
@ -327,4 +327,18 @@ class FtestWorkViewSet(CustomModelViewSet):
|
|||
ftestwork_submit(ins, request.user)
|
||||
else:
|
||||
raise ParseError('该检验工作已提交')
|
||||
return Response()
|
||||
|
||||
@action(methods=['post'], detail=True, perms_map={'post': 'ftestwork.submit'}, serializer_class=Serializer)
|
||||
@transaction.atomic
|
||||
def revert(self, request, *args, **kwargs):
|
||||
"""撤销检验工作
|
||||
|
||||
撤销检验工作
|
||||
"""
|
||||
ins:FtestWork = self.get_object()
|
||||
if ins.submit_time:
|
||||
ftestwork_revert(ins)
|
||||
else:
|
||||
raise ParseError('该检验工作未提交')
|
||||
return Response()
|
||||
Loading…
Reference in New Issue