package com.cf.imes.module.manage.service.pack;


import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.module.manage.controller.admin.pack.vo.*;
import com.cf.imes.module.manage.controller.admin.query.vo.productionStatus.OrderModuleReqVO;
import com.cf.imes.module.manage.dal.dataobject.query.OrderPackageDO;

import java.util.List;

public interface PackService {


    // 打包分页查询
    PageResult<PackRespVO> getPackPage(PackPageReqVO pageReqVO);


    // 查看生产订单对应的包裹信息
    PageResult<OrderPackageDO> getOrderPack(PackageDetailsReqVO reqVO);



    // 查看生产订单对应的板材信息
    List<PlateDetailsRespVO> getOrderPlateList(Long orderId);



    // 查询多个生产单对应的板材信息
    List<PlateDetailsRespVO> getOrdersPlateList(List<Long> orderIds);



    // 查看板材列表分页
    PageResult<PlateDetailsRespVO> queryPlateDetails(OrderModuleReqVO pageReqVO);



    // 查看配件列表分页
    PageResult<OrderPartsRespVO> getPartsList(OrderPartsReqVO reqVO);

    void updateParts(OrderPartsReqVO reqVO);


    // 拆包
    void unpacking(Long packageID);



    // 显示分组房间名称
    List<OrderPlateGroupRespVO> GetOrderPlateGroup(Long orderId);




    // 查看配件包裹详情
    List<OrderPartsRespVO> queryPackageDetails(PrintOrderPackReqVO reqVO);



    // 新增包裹
    OrderPackageDO insertPack(OrderPackReqVO packageVO);

    // 更新包裹
    OrderPackageDO updatePack(OrderPackReqVO packageVO);


    // 查询包裹
    List<OrderPackRespVO> selectPack(Long orderId);


    // 包裹订单打印
    PrintOrderPackRespVO printOrderPack(PrintOrderPackReqVO reqVO);


    // 删除包裹及其关联的包裹信息(删除全部)
    void deleteOrderPack(PackReqVO reqVO);



    // 新增外部配件包裹
    OrderPackageDO addNewOtherPack(OtherPackReqVO reqVO);


    // 新增外部配件
    OrderPartsRespVO addNewOtherParts(OtherPackReqVO reqVO);




    // 删除配件包裹中的配件(删除某一个)
    void deleteOtherParts(DeleteOtherPartsReqVO reqVO);



    // 新增配件-即新增一个包裹
    OrderPackageDO addNewPartsPack(OrderPackReqVO reqVO);


}
