From 13f29342c624fa564b921c1e5ddc815c9fb56b0c Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 3 Mar 2022 23:51:23 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=85=B6=E4=BB=96?= =?UTF-8?q?=E5=87=BA=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hb_server/apps/inm/models.py | 4 +++- hb_server/apps/system/permission.py | 1 - 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/hb_server/apps/inm/models.py b/hb_server/apps/inm/models.py index d8235ee..a9a2226 100644 --- a/hb_server/apps/inm/models.py +++ b/hb_server/apps/inm/models.py @@ -69,12 +69,14 @@ class FIFO(CommonADModel): FIFO_TYPE_PUR_IN = 3 FIFO_TYPE_DO_IN = 4 FIFO_TYPE_OTHER_IN = 5 + FIFO_TYPE_OTHER_OUT = 6 type_choices = ( (FIFO_TYPE_DO_OUT, '生产领料'), (FIFO_TYPE_SALE_OUT, '销售提货'), (FIFO_TYPE_PUR_IN, '采购入库'), (FIFO_TYPE_DO_IN, '生产入库'), - (FIFO_TYPE_OTHER_IN, '其他入库') + (FIFO_TYPE_OTHER_IN, '其他入库'), + (FIFO_TYPE_OTHER_OUT, '其他出库') ) number = models.CharField('记录编号', max_length=100) type = models.IntegerField('出入库类型', default=1) diff --git a/hb_server/apps/system/permission.py b/hb_server/apps/system/permission.py index 7b218d3..397d906 100644 --- a/hb_server/apps/system/permission.py +++ b/hb_server/apps/system/permission.py @@ -44,7 +44,6 @@ class RbacPermission(BasePermission): perms = cache.get(request.user.username + '__perms') if not perms: perms = get_permission_list(request.user) - if 'admin' in perms: return True elif not hasattr(view, 'perms_map'): From caacd460dc615064b111503123d83f36f1d67f56 Mon Sep 17 00:00:00 2001 From: shilixia <2309368887@qq.com> Date: Fri, 11 Mar 2022 13:19:03 +0800 Subject: [PATCH 2/9] tijiao --- hb_client/src/views/em/monitoring.vue | 9 +++++++-- hb_client/src/views/sam/salesdetail.vue | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/hb_client/src/views/em/monitoring.vue b/hb_client/src/views/em/monitoring.vue index 99d78d7..b406d44 100644 --- a/hb_client/src/views/em/monitoring.vue +++ b/hb_client/src/views/em/monitoring.vue @@ -393,8 +393,8 @@ ], state_: { 10: "合格", - - 40: "禁用", + 40: "禁用", + 50: "报废", }, options: [ { @@ -404,6 +404,11 @@ { value: 40, label: "禁用", + } + , + { + value: 50, + label: "报废", }, ], listQuery: { diff --git a/hb_client/src/views/sam/salesdetail.vue b/hb_client/src/views/sam/salesdetail.vue index 08a5459..c643e72 100644 --- a/hb_client/src/views/sam/salesdetail.vue +++ b/hb_client/src/views/sam/salesdetail.vue @@ -76,7 +76,7 @@ - + From 96b404ebf302827ae2a5715321ee41b722004825 Mon Sep 17 00:00:00 2001 From: shilixia <2309368887@qq.com> Date: Fri, 11 Mar 2022 13:19:51 +0800 Subject: [PATCH 3/9] tijiao --- hb_server/apps/em/models.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hb_server/apps/em/models.py b/hb_server/apps/em/models.py index 194474f..7a8e6c9 100644 --- a/hb_server/apps/em/models.py +++ b/hb_server/apps/em/models.py @@ -17,11 +17,13 @@ class Equipment(CommonAModel): EQUIP_STATE_LIMIT = 20 EQUIP_STATE_FIX = 30 EQUIP_STATE_DISABLE = 40 + EQUIP_STATE_scrap = 50 state_choices = ( (EQUIP_STATE_OK, '完好'), (EQUIP_STATE_LIMIT, '限用'), (EQUIP_STATE_FIX, '在修'), - (EQUIP_STATE_DISABLE, '禁用') + (EQUIP_STATE_DISABLE, '禁用'), + (EQUIP_STATE_scrap, '报废') ) state2_choices = ( From 469e95594b7469dc9d35374cade180cfdf92f8f1 Mon Sep 17 00:00:00 2001 From: shilixia <2309368887@qq.com> Date: Fri, 11 Mar 2022 15:12:46 +0800 Subject: [PATCH 4/9] tijiao --- hb_client/src/views/procurement/vendor.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hb_client/src/views/procurement/vendor.vue b/hb_client/src/views/procurement/vendor.vue index 5213d8b..85b6964 100644 --- a/hb_client/src/views/procurement/vendor.vue +++ b/hb_client/src/views/procurement/vendor.vue @@ -95,7 +95,7 @@ Date: Fri, 11 Mar 2022 15:28:37 +0800 Subject: [PATCH 5/9] xiaoshouxingqing --- hb_client/src/views/sam/orderdetail.vue | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/hb_client/src/views/sam/orderdetail.vue b/hb_client/src/views/sam/orderdetail.vue index b7e1b0a..d982966 100644 --- a/hb_client/src/views/sam/orderdetail.vue +++ b/hb_client/src/views/sam/orderdetail.vue @@ -49,6 +49,9 @@ + + + @@ -88,6 +91,16 @@ export default { productionplan:"", orderdetail:"", + state_: { + 10: "制定中", + 20: "已下达", + 30: "已接受", + 40: "生产中", + 50: "已完成", + 60: "军检完成", + 70: "暂停", + 80: "终止", + }, }; }, From 0bae0d4c53cde1faeb2aced05e206fd7365d62e1 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 14 Mar 2022 11:11:46 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E5=85=B6=E4=BB=96=E5=87=BA=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hb_server/apps/develop/tasks.py | 8 ++++---- hb_server/apps/inm/serializers.py | 30 ++++++++++++++++++++++++++++++ hb_server/apps/inm/services.py | 2 +- hb_server/apps/inm/views.py | 13 ++++++++++++- 4 files changed, 47 insertions(+), 6 deletions(-) diff --git a/hb_server/apps/develop/tasks.py b/hb_server/apps/develop/tasks.py index 398ad36..b9c1991 100644 --- a/hb_server/apps/develop/tasks.py +++ b/hb_server/apps/develop/tasks.py @@ -4,7 +4,7 @@ from rest_framework.response import Response from celery import shared_task import os import subprocess -from server.settings_pro import DATABASES, BACKUP_DATABASE_PATH +from server.settings_pro import DATABASES, BACKUP_PATH, SH_PATH @shared_task def backup_database(): @@ -17,14 +17,14 @@ def backup_database(): DATABASES['default']['USER'], DATABASES['default']['PASSWORD'], DATABASES['default']['NAME'], - BACKUP_DATABASE_PATH, + BACKUP_PATH + '/database', name) completed = subprocess.run(command, shell=True, capture_output=True, text=True) return completed @shared_task def reload_server(): - command = 'bash /home/lighthouse/hberp/hb_server/sh/git.sh' + command = 'bash {}/git.sh'.format(SH_PATH) completed = subprocess.run(command, shell=True, capture_output=True, text=True) return completed @@ -36,7 +36,7 @@ def reload_server_only(): @shared_task def backup_media(): - command = 'bash /home/lighthouse/hberp/hb_server/sh/backup_media.sh' + command = 'bash {}/backup_media.sh'.format(SH_PATH) completed = subprocess.run(command, shell=True, capture_output=True, text=True) return completed diff --git a/hb_server/apps/inm/serializers.py b/hb_server/apps/inm/serializers.py index 4c2374f..c336713 100644 --- a/hb_server/apps/inm/serializers.py +++ b/hb_server/apps/inm/serializers.py @@ -142,6 +142,36 @@ class MaterialBatchQuerySerializer(serializers.Serializer): warehouse = serializers.IntegerField(label="仓库ID", required=False) materials = serializers.ListField(child=serializers.IntegerField(label="物料ID"), required=False) +class FIFODetailOutOtherSerializer(serializers.Serializer): + material_batch = serializers.PrimaryKeyRelatedField(queryset=MaterialBatch.objects.all(), label="物料批次ID") + count = serializers.IntegerField(label="数量", min_value=0) + +class FIFOOutOtherSerializer(serializers.ModelSerializer): + """ + 其他出库序列化 + """ + details = FIFODetailOutOtherSerializer(many=True, required=False) + + class Meta: + model = FIFO + fields = ['details'] + + def create(self, validated_data): + details = validated_data.pop('details') + with transaction.atomic(): + validated_data['type'] = FIFO.FIFO_TYPE_OTHER_OUT + validated_data['number'] = 'CK' + ranstr(7) + obj = FIFO(**validated_data) + obj.save() + for i in details: + mb = i['material_batch'] + i['material'] = mb.material + i['batch'] = mb.batch + i['warehouse'] = mb.warehouse + i['fifo'] = obj + FIFOItem.objects.create(**i) + return obj + class FIFOInOtherSerializer(serializers.ModelSerializer): """ 其他入库序列化 diff --git a/hb_server/apps/inm/services.py b/hb_server/apps/inm/services.py index 49c7c58..159f148 100644 --- a/hb_server/apps/inm/services.py +++ b/hb_server/apps/inm/services.py @@ -59,7 +59,7 @@ class InmService: pu_order_item.delivered_count = delivered_count pu_order_item.save() - elif instance.type in [FIFO.FIFO_TYPE_DO_OUT, FIFO.FIFO_TYPE_SALE_OUT]: # 生产领料 销售出库 + elif instance.type in [FIFO.FIFO_TYPE_DO_OUT, FIFO.FIFO_TYPE_SALE_OUT, FIFO.FIFO_TYPE_OTHER_OUT]: # 生产领料 销售出库 # 更新相关表 for i in FIFOItem.objects.filter(fifo=instance): material = i.material diff --git a/hb_server/apps/inm/views.py b/hb_server/apps/inm/views.py index ce7a72d..fcc454f 100644 --- a/hb_server/apps/inm/views.py +++ b/hb_server/apps/inm/views.py @@ -6,7 +6,7 @@ from rest_framework.viewsets import GenericViewSet, ModelViewSet from apps.inm.filters import IProductFilterSet, MbFilterSet from apps.inm.models import FIFO, FIFOItem, IProduct, MaterialBatch, WareHouse, Inventory -from apps.inm.serializers import FIFOInOtherSerializer, FIFOItemCreateSerializer, FIFOItemSerializer, FIFOInPurSerializer, FIFOItemUpdateSerializer, FIFOListSerializer, IProductListSerializer, \ +from apps.inm.serializers import FIFOInOtherSerializer, FIFOItemCreateSerializer, FIFOItemSerializer, FIFOInPurSerializer, FIFOItemUpdateSerializer, FIFOListSerializer, FIFOOutOtherSerializer, IProductListSerializer, \ InmTestRecordCreateSerializer, MaterialBatchQuerySerializer, MaterialBatchSerializer, WareHouseSerializer, \ WareHouseCreateUpdateSerializer, InventorySerializer from apps.inm.services import InmService @@ -183,6 +183,17 @@ class FIFOViewSet(ListModelMixin, DestroyModelMixin, GenericViewSet): serializer.save(create_by=request.user) return Response() + @action(methods=['post'], detail=False, perms_map={'post': 'fifo_out_other'}, + serializer_class=FIFOOutOtherSerializer) + def out_other(self, request, pk=None): + """ + 其他出库 + """ + serializer = self.get_serializer(data=request.data) + serializer.is_valid(raise_exception=True) + serializer.save(create_by=request.user) + return Response() + @action(methods=['post'], detail=True, perms_map={'post': 'fifo_audit'}, serializer_class=serializers.Serializer) @transaction.atomic def audit(self, request, pk=None): From bae1c166a0636dfdd57371dad381695eb70a8fc8 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 15 Mar 2022 09:06:34 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E9=87=87=E8=B4=AD=E5=87=BA=E5=85=A5?= =?UTF-8?q?=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hb_server/apps/inm/serializers.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/hb_server/apps/inm/serializers.py b/hb_server/apps/inm/serializers.py index c336713..87407a8 100644 --- a/hb_server/apps/inm/serializers.py +++ b/hb_server/apps/inm/serializers.py @@ -77,23 +77,31 @@ class FIFOListSerializer(serializers.ModelSerializer): fields = '__all__' class FIFOItemCreateSerializer(serializers.ModelSerializer): + material_batch = serializers.PrimaryKeyRelatedField(queryset=MaterialBatch.objects.all(), label="物料批次ID", required=False) class Meta: model = FIFOItem fields = ['warehouse', - 'material', 'batch', 'fifo', 'files', 'pu_order_item', 'count', 'expiration_date'] + 'material', 'batch', 'fifo', 'files', 'pu_order_item', 'count', 'expiration_date', 'material_batch'] def create(self, validated_data): fifo = validated_data['fifo'] if fifo.is_audited: raise ValidationError('该出入库记录已审核') pu_order_item = validated_data.get('pu_order_item', None) - if pu_order_item: + material_batch = validated_data.get('material_batch', None) + if fifo.type == FIFO.FIFO_TYPE_PUR_IN and pu_order_item is None: + raise ValidationError('采购入库需关联采购项') + else: if fifo.pu_order != pu_order_item.pu_order: raise ValidationError('项目与采购订单不一致') validated_data['material']=pu_order_item.material + if fifo.type == FIFO.FIFO_TYPE_OTHER_OUT and material_batch is None: + raise ValidationError('其他出库需关联批次号') else: - if fifo.pu_order is not None: - raise ValidationError('非采购订单') + validated_data['material'] = material_batch.material + validated_data['batch'] = material_batch.batch + validated_data['warehouse'] = material_batch.warehouse + return super().create(validated_data) def validate_batch(self, value): @@ -106,7 +114,7 @@ class FIFOItemCreateSerializer(serializers.ModelSerializer): class FIFOItemUpdateSerializer(serializers.ModelSerializer): class Meta: model = FIFOItem - fields = ['warehouse', 'batch', 'files', 'count', 'expiration_date'] + fields = ['files', 'count', 'expiration_date'] class FIFOItemSerializer(serializers.ModelSerializer): warehouse_ = WareHouseSimpleSerializer(source='warehouse', read_only=True) @@ -150,7 +158,7 @@ class FIFOOutOtherSerializer(serializers.ModelSerializer): """ 其他出库序列化 """ - details = FIFODetailOutOtherSerializer(many=True, required=False) + details = FIFODetailOutOtherSerializer(many=True, required=True) class Meta: model = FIFO @@ -176,7 +184,7 @@ class FIFOInOtherSerializer(serializers.ModelSerializer): """ 其他入库序列化 """ - details = FIFODetailInPurSerializer(many=True, required=False) + details = FIFODetailInPurSerializer(many=True, required=True) vendor = serializers.PrimaryKeyRelatedField(label='供应商ID', queryset=Vendor.objects.all()) class Meta: From 5327828ae00bd3a130483afea05bea10263ef573 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 15 Mar 2022 09:19:12 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E5=85=B6=E4=BB=96=E5=87=BA=E5=BA=93bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hb_server/apps/inm/serializers.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hb_server/apps/inm/serializers.py b/hb_server/apps/inm/serializers.py index 87407a8..357084d 100644 --- a/hb_server/apps/inm/serializers.py +++ b/hb_server/apps/inm/serializers.py @@ -88,7 +88,7 @@ class FIFOItemCreateSerializer(serializers.ModelSerializer): if fifo.is_audited: raise ValidationError('该出入库记录已审核') pu_order_item = validated_data.get('pu_order_item', None) - material_batch = validated_data.get('material_batch', None) + material_batch = validated_data.pop('material_batch', None) if fifo.type == FIFO.FIFO_TYPE_PUR_IN and pu_order_item is None: raise ValidationError('采购入库需关联采购项') else: @@ -172,7 +172,7 @@ class FIFOOutOtherSerializer(serializers.ModelSerializer): obj = FIFO(**validated_data) obj.save() for i in details: - mb = i['material_batch'] + mb = i.pop('material_batch') i['material'] = mb.material i['batch'] = mb.batch i['warehouse'] = mb.warehouse From 4e6312e3e02d64e82c2c3c534142ca49911a12da Mon Sep 17 00:00:00 2001 From: shilixia <2309368887@qq.com> Date: Tue, 15 Mar 2022 09:27:38 +0800 Subject: [PATCH 9/9] ceshi --- hb_client/src/api/inm.js | 8 + hb_client/src/views/inm/fifo.vue | 656 ++++++++++++++++++++----------- 2 files changed, 425 insertions(+), 239 deletions(-) diff --git a/hb_client/src/api/inm.js b/hb_client/src/api/inm.js index a4ff215..a4d721b 100644 --- a/hb_client/src/api/inm.js +++ b/hb_client/src/api/inm.js @@ -150,3 +150,11 @@ export function itemfiles(id, data) { data }) } +//其他出库 +export function outOther(data) { + return request({ + url: `/inm/fifo/out_other/`, + method: 'POST', + data + }) +} diff --git a/hb_client/src/views/inm/fifo.vue b/hb_client/src/views/inm/fifo.vue index 699ae25..f62acee 100644 --- a/hb_client/src/views/inm/fifo.vue +++ b/hb_client/src/views/inm/fifo.vue @@ -8,7 +8,7 @@ icon="el-icon-plus" @click="handlecgCreate" > - 新增采购入库 + 采购入库 - 新增其他入库 + 其他入库 + + + 其他出库 - - - + + @@ -73,12 +80,11 @@ 已审核 - - +