package com.sw.mes.itemclean.clean.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.sw.mes.core.response.Result;
import com.sw.mes.core.utils.ResponseUtil;
import com.sw.mes.itemclean.clean.domain.MaterialStoreSignBox;
import com.sw.mes.itemclean.clean.domain.MaterialUnpacking;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sw.mes.itemclean.clean.dto.FxToBoxInfoPrintDto;
import com.sw.mes.itemclean.clean.dto.MaterialStoreSignBoxDto;
import com.sw.mes.itemclean.clean.dto.MaterialUnpackingJoinPageDto;
import com.sw.mes.itemclean.clean.dto.MaterialUnpackingParamQuery;
import com.sw.mes.itemclean.clean.vo.MaterialUnpackingVo;

import java.math.BigDecimal;
import java.util.List;

/**
 * <p>
 * 分选拆箱 服务类
 * </p>
 *
 * @author liuzemin
 * @since 2022-11-10
 */
public interface MaterialUnpackingService extends IService<MaterialUnpacking> {

    int createStorageSign(MaterialUnpackingVo materialUnpackingVo);

    MaterialUnpackingVo selectStorageSign(String materialBoxNo);

    FxToBoxInfoPrintDto createFinishStorageSign(MaterialUnpackingVo materialUnpackingVo);

    MaterialUnpacking getByBoxNo(String boxNo);

    MaterialUnpacking getFxProductBatchNo(String fxProductBatchNo);

    MaterialUnpacking getAufnrByProductBatchNo(String productBatchNo);

    MaterialUnpacking getByPpProductBatchNo(String ppProductBatchNo);

    List<MaterialUnpacking> getMaterialUnpackingByPpProductBatchNo(List<String> ppProductBatchNo);

    MaterialUnpacking getCanUseByPpProductBatchNo(String ppProductBatchNo);

    void updateBoxStatus(String unpackingBoxNo, BigDecimal unusedWeightTotal, String boxNo);

    MaterialUnpacking getUseInfoByPpProductBatchNo(String currentProductBatchNo);

    MaterialUnpacking getUnUseInfoByBoxNo(String boxNo);

    IPage<MaterialUnpackingJoinPageDto> queryList(IPage<MaterialUnpackingJoinPageDto> iPage, MaterialUnpackingParamQuery materialUnpackingParamQuery);

    List<MaterialUnpackingJoinPageDto> queryListByParam(MaterialUnpackingParamQuery materialUnpackingParamQuery);

    List<MaterialUnpacking> getByParentId(Integer parentId);

    Result revertWeightById(Integer id);

    void blending( List<MaterialUnpacking> dtos);

}
