baoyubo 3 місяців тому
батько
коміт
124767af93

+ 3 - 0
models/resource_provision_base.py

@@ -593,6 +593,7 @@ class ResourceProvisionOutboundBasic(Base):
     id = Column(Integer, primary_key=True, autoincrement=True, comment='ID')
     outbound_number = Column(String(255), nullable=False, comment='出库单号')
     warehouse_id = Column(String(255), nullable=False, comment='仓库id')
+    room_id = Column(String(255), comment='库房id')
     total_volume = Column(Numeric(20, 2), nullable=False, comment='出库单商品总体积(立方厘米)')
     total_weight = Column(Numeric(20, 2), nullable=False, comment='出库单商品总重量(kg)')
     total_shipping_volume = Column(Numeric(20, 2), nullable=False, comment='出库单发货总体积(立方厘米)')
@@ -622,6 +623,8 @@ class ResourceProvisionWarehouseMovement(Base):
 
     id = Column(Integer, primary_key=True, autoincrement=True, comment='ID')
     material_id = Column(String(255), nullable=False, comment='物资id')
+    warehouse_id = Column(String(255), nullable=False, comment='仓库id')
+    room_id = Column(String(255), comment='库房id')
     io_number = Column(String(255), nullable=False, comment='出入库单号')
     io_flag = Column(String(10), nullable=False, comment='出入库标识')
     changed_stock = Column(Integer, nullable=False, comment='变动库存')

+ 1 - 1
routers/api/resourceProvison/MaterialReserveManagement/warehouse_inbound.py

@@ -65,7 +65,7 @@ async def create_pattern(
         new_inbound.inbound_order_number= f'{time.strftime("%Y%m%d", time.localtime())}1{str(new_inbound.id).zfill(7)}'
         filePath = f'/data/upload/mergefile/uploads/{body["filename"]}'
         movementData = pd.read_excel(filePath).to_dict(orient='records')
-        status_1 = create_movement(db, movementData, new_inbound.inbound_order_number, 'I', user_id)
+        status_1 = create_movement(db, movementData, new_inbound.inbound_order_number, 'I', user_id,warehouse_id,room_id)
         if status_1!="成功":
             new_inbound.del_flag='2'
             db.commit()

+ 14 - 0
routers/api/resourceProvison/MaterialReserveManagement/warehouse_movement.py

@@ -53,12 +53,26 @@ async def get_pattern_list(
         lists = query.offset((page - 1) * pageSize).limit(pageSize).all()
         data = [ ]
         for info in lists:
+            warehouse_info = warehouse_id_get_warehouse_info(db,info.warehouse_id)
+            if  warehouse_info:
+                warehouse_name = warehouse_info.warehouse_name
+            else:
+                warehouse_name = None
+            room_info = warehouse_room_id_get_warehouse_room_info(db, info.room_id)
+            if room_info:
+                room_name = room_info.room_name
+            else:
+                room_name = None
             material_info = material_id_get_material_info(db,info.material_id)
             material_name = ''
             if material_info:
                 material_name = material_info.material_name
             data.append({"id": info.id,
                 "product_info": f"ID: {info.material_id}\n{material_name}",
+                "warehouse_id": info.warehouse_id,
+                "warehouse_name": warehouse_name,
+                "room_id": info.room_id,
+                "room_name": room_name,
                 "io_number": info.io_number,
                 "io_flag": info.io_flag,
                 "changed_stock": info.changed_stock,

+ 22 - 3
routers/api/resourceProvison/MaterialReserveManagement/warehouse_outbound.py

@@ -33,9 +33,15 @@ async def create_pattern(
     db: Session = Depends(get_db)
 ):
     try:
+        room_id = body['room_id']
+        warehouse_info = warehouse_room_id_get_warehouse_room_info(db,room_id)
+        warehouse_id = ''
+        if warehouse_info:
+            warehouse_id = warehouse_info.warehouse
         new_outbound = ResourceProvisionOutboundBasic(
             # id = new_guid(),
-            warehouse_id=body['warehouse_id'],
+            warehouse_id=warehouse_id,#body['warehouse_id'],
+            room_id= room_id,
             total_volume=body['total_volume'],
             total_weight=body['total_weight'],
             total_shipping_volume=body['total_shipping_volume'],
@@ -58,7 +64,7 @@ async def create_pattern(
         new_outbound.outbound_number= f'{time.strftime("%Y%m%d", time.localtime())}0{str(new_outbound.id).zfill(7)}'
         filePath = f'/data/upload/mergefile/uploads/{body["filename"]}'
         movementData = pd.read_excel(filePath).to_dict(orient='records')
-        status_1 = create_movement(db, movementData, new_outbound.outbound_number, 'O', user_id)
+        status_1 = create_movement(db, movementData, new_outbound.outbound_number, 'O', user_id,warehouse_id,room_id)
         if status_1 != "成功":
             new_outbound.del_flag = '2'
             db.commit()
@@ -115,11 +121,17 @@ async def get_pattern_info(
             warehouse_name = warehouse_info.warehouse_name
         else:
             warehouse_name = None
-
+        room_info = warehouse_room_id_get_warehouse_room_info(db, info.room_id)
+        if room_info:
+            room_name = room_info.room_name
+        else:
+            room_name = None
         data = {
                 "id":info.id,
                 "warehouse_id": info.warehouse_id,
                 "warehouse_name": warehouse_name,
+                "room_id": info.room_id,
+                "room_name": room_name,
                 "outbound_number": info.outbound_number,
                 "total_volume": info.total_volume,
                 "total_weight": info.total_weight,
@@ -166,10 +178,17 @@ async def get_pattern_list(
                 warehouse_name = warehouse_info.warehouse_name
             else:
                 warehouse_name = None
+            room_info = warehouse_room_id_get_warehouse_room_info(db, info.room_id)
+            if room_info:
+                room_name = room_info.room_name
+            else:
+                room_name = None
             data.append({
                 "id":info.id,
                 "warehouse_id": info.warehouse_id,
                 "warehouse_name": warehouse_name,
+                "room_id": info.room_id,
+                "room_name": room_name,
                 "outbound_number": info.outbound_number,
                 "total_volume": info.total_volume,
                 "total_weight": info.total_weight,

+ 7 - 2
utils/resource_provision_util.py

@@ -230,12 +230,13 @@ def outbound_id_get_outbound_info(db,id):
     query = db.query(ResourceProvisionOutboundBasic)
     query = query.filter_by(id = id,del_flag = '0')
     return query.first()
-def create_movement(db,movement:list,io_number,io_flag,user_id):
+def create_movement(db,movement:list,io_number,io_flag,user_id,warehouse_id,room_id):
     for data in movement:
         material_id= data['物资编码']
         changed_stock = data['数量']
         remaining_stock = 0
         query = db.query(ResourceProvisionWarehouseMovement)
+        query = query.filter_by(warehouse_id=warehouse_id,room_id=room_id)
         query = query.filter_by(del_flag='0')
         if material_id:
             query = query.filter(ResourceProvisionWarehouseMovement.material_id==material_id)
@@ -249,10 +250,14 @@ def create_movement(db,movement:list,io_number,io_flag,user_id):
                     return '剩余库存小于出库量'
                 remaining_stock =  material_info.remaining_stock-changed_stock
         else:
-            if io_flag == 'O':
+            if io_flag == 'I':
+                remaining_stock = changed_stock
+            else:
                 return '物资不存在,无法出库'
         new_movement = ResourceProvisionWarehouseMovement(
             material_id=material_id,  # Column(String(255), nullable=False, comment='物资id')
+            warehouse_id = warehouse_id,
+            room_id = room_id,
             io_number=io_number,  # Column(String(255), nullable=False, comment='出入库单号')
             io_flag=io_flag,  # Column(String(10), nullable=False, comment='出入库标识')
             changed_stock=changed_stock,  # Column(Integer, nullable=False, comment='变动库存')