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


import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.module.executor.controller.admin.manage.pack.prePack.PrePackReqVO;
import com.cf.imes.module.executor.controller.admin.manage.pack.vo.*;
import com.cf.imes.module.executor.controller.admin.manage.query.vo.pack.OrderPackageVO;

import java.util.List;

public interface PackService {


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


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


    PageResult<OrderPackageVO> getPageOrderPack(PackageDetailsReqVO reqVO);


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



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



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

    OrderPackRespVO updateParts(OrderPartsReqVO reqVO);


    // 拆包
    OrderPackRespVO unpacking(Long packageId);



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


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



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



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


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




    // 删除包裹中的外部配件
    void deleteOtherParts(DeleteOtherPartsReqVO reqVO);



    // 查询预打包优化信息
    String getPrePackInfo(Long orderId);


    // 保存优化后的预打包信息
    void saveOptimizeInfo(PrePackReqVO reqVO);

}
