Merge branch 'develop' of https://e.coding.net/ctcdevteam/hberp/hberp into develop
This commit is contained in:
commit
f3f518aad6
|
@ -6,7 +6,7 @@ from apps.system.models import CommonAModel, CommonBModel, Organization, User, D
|
|||
from utils.model import SoftModel, BaseModel
|
||||
from simple_history.models import HistoricalRecords
|
||||
from apps.mtm.models import Material
|
||||
|
||||
from apps.pm.models import SubProductionPlan
|
||||
|
||||
|
||||
class WareHouse(CommonAModel):
|
||||
|
@ -57,4 +57,13 @@ class FIFO(CommonAModel):
|
|||
(3, '采购入库'),
|
||||
(4, '生产入库')
|
||||
)
|
||||
type = models.IntegerField('出入库类型', default=1)
|
||||
type = models.IntegerField('出入库类型', default=1)
|
||||
operator = models.ForeignKey(User, verbose_name='操作人', on_delete=models.CASCADE)
|
||||
subproduction_plan = models.ForeignKey(SubProductionPlan, verbose_name='关联子生产计划', on_delete=models.DO_NOTHING, null=True, blank=True)
|
||||
|
||||
class FIFODetail(CommonAModel):
|
||||
"""
|
||||
领料详细记录
|
||||
"""
|
||||
|
||||
|
||||
|
|
|
@ -122,6 +122,7 @@ class SubProductionPlanViewSet(CreateUpdateModelAMixin, ListModelMixin, UpdateMo
|
|||
obj.save()
|
||||
return Response()
|
||||
raise APIException('计划状态有误')
|
||||
|
||||
class ResourceViewSet(GenericViewSet):
|
||||
|
||||
perms_map = {'*': '*'}
|
||||
|
@ -164,7 +165,7 @@ class ResourceViewSet(GenericViewSet):
|
|||
rdata_l.append(i['id'])
|
||||
subproductions = SubProduction.objects.filter(product__id__in=rdata_l, is_deleted=False)
|
||||
steps = Step.objects.filter(usedstep__is_deleted=False, usedstep__subproduction__in=subproductions)
|
||||
equips = Equipment.objects.filter(step_equips__in=steps, is_deleted=False)
|
||||
equips = Equipment.objects.filter(step_equips__in=steps, is_deleted=False).distinct()
|
||||
serializer = EquipmentSerializer(instance=equips, many=True)
|
||||
return Response(serializer.data)
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ from rest_framework.exceptions import APIException
|
|||
from django.utils import timezone
|
||||
from datetime import timedelta
|
||||
import random
|
||||
|
||||
class WfService(object):
|
||||
@staticmethod
|
||||
def get_worlflow_states(workflow:Workflow):
|
||||
|
@ -111,6 +112,9 @@ class WfService(object):
|
|||
destination_state = transition.destination_state
|
||||
ticket_all_value = cls.get_ticket_all_field_value(ticket)
|
||||
ticket_all_value.update(**ticket_data)
|
||||
for key, value in ticket_all_value.items():
|
||||
if isinstance(ticket_all_value[key], str):
|
||||
ticket_all_value[key] = "'" + ticket_all_value[key] + "'"
|
||||
if transition.condition_expression:
|
||||
for i in transition.condition_expression:
|
||||
expression = i['expression'].format(**ticket_all_value)
|
||||
|
|
|
@ -175,7 +175,7 @@ class TicketViewSet(OptimizationMixin, CreateUpdateCustomMixin, CreateModelMixin
|
|||
queryset = Ticket.objects.filter(participant__contains=request.user.id, is_deleted=False)\
|
||||
.exclude(act_state__in=[Ticket.TICKET_ACT_STATE_FINISH, Ticket.TICKET_ACT_STATE_CLOSED])
|
||||
ret['total_count'] = queryset.count()
|
||||
ret['details'] = list(queryset.annotate(count = Count('workflow')).values('workflow', 'workflow__name', 'count'))
|
||||
ret['details'] = list(queryset.values('workflow', 'workflow__name').annotate(count = Count('workflow')))
|
||||
return Response(ret)
|
||||
|
||||
@action(methods=['post'], detail=True, perms_map={'post':'*'})
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
|
@ -0,0 +1,7 @@
|
|||
from django.apps import AppConfig
|
||||
|
||||
class WpmConfig(AppConfig):
|
||||
name = 'apps.wpm'
|
||||
verbose_name = '车间生产'
|
||||
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
from django.db import models
|
||||
from django.db.models.base import Model
|
||||
import django.utils.timezone as timezone
|
||||
from django.db.models.query import QuerySet
|
||||
from apps.system.models import CommonAModel, CommonBModel, Organization, User, Dict, File
|
||||
from utils.model import SoftModel, BaseModel
|
||||
from simple_history.models import HistoricalRecords
|
||||
|
||||
|
||||
class Vendor(CommonAModel):
|
||||
"""
|
||||
供应商信息
|
||||
"""
|
||||
|
||||
name = models.CharField('供应商名称', max_length=50, unique=True)
|
||||
contact = models.CharField('联系人', max_length=20)
|
||||
contact_phone = models.CharField('联系电话', max_length=11, unique=True)
|
||||
address = models.CharField('地址', max_length=200, null=True, blank=True)
|
||||
description = models.CharField('描述', max_length=200, blank=True, null=True)
|
||||
material = models.CharField('供应的物料', max_length=200, blank=True, null=True)
|
||||
class Meta:
|
||||
verbose_name = '供应商信息'
|
||||
verbose_name_plural = verbose_name
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
|
@ -0,0 +1,9 @@
|
|||
from rest_framework.serializers import ModelSerializer
|
||||
|
||||
from .models import Vendor
|
||||
|
||||
|
||||
class VendorSerializer(ModelSerializer):
|
||||
class Meta:
|
||||
model = Vendor
|
||||
fields = '__all__'
|
|
@ -0,0 +1,3 @@
|
|||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
|
@ -0,0 +1,12 @@
|
|||
from django.db.models import base
|
||||
from rest_framework import urlpatterns
|
||||
from apps.pum.views import VendorViewSet
|
||||
from django.urls import path, include
|
||||
from rest_framework.routers import DefaultRouter
|
||||
|
||||
router = DefaultRouter()
|
||||
router.register('vendor', VendorViewSet, basename='vendor')
|
||||
urlpatterns = [
|
||||
path('', include(router.urls)),
|
||||
]
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
from django.shortcuts import render
|
||||
from rest_framework.viewsets import ModelViewSet
|
||||
|
||||
from apps.pum.models import Vendor
|
||||
from apps.pum.serializers import VendorSerializer
|
||||
from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin
|
||||
|
||||
|
||||
|
||||
|
||||
# Create your views here.
|
||||
class VendorViewSet(CreateUpdateModelAMixin, ModelViewSet):
|
||||
"""
|
||||
供应商-增删改查
|
||||
"""
|
||||
perms_map = {'get': '*', 'post': 'vendor_create',
|
||||
'put': 'vendor_update', 'delete': 'vendor_delete'}
|
||||
queryset = Vendor.objects.all()
|
||||
serializer_class = VendorSerializer
|
||||
search_fields = ['name', 'contact']
|
||||
filterset_fields = []
|
||||
ordering_fields = ['create_time']
|
||||
ordering = ['-create_time']
|
Loading…
Reference in New Issue