package com.prolog.cs.biz.outbound.dao;

import com.prolog.cs.biz.outbound.model.dto.check.OuterCheckBarcodeDetailDTO;
import com.prolog.cs.biz.outbound.model.entity.BarCodeDDO;
import com.prolog.cs.biz.outbound.model.print.LclDetailTableVO;
import com.prolog.framework.dao.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

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

@Repository
public interface BarcodeDMapper extends BaseMapper<BarCodeDDO> {
    long insertOrUpdate(@Param("itemCode") String itemCode,
                        @Param("itemId") String itemId,
                        @Param("barcodeDId") String barcodeDId,
                        @Param("barcodeId") String barcodeId,
                        @Param("containerCode") String containerCode,
                        @Param("qty") BigDecimal qty,
                        @Param("pickTaskDId") String  pickTaskDId,
                        @Param("isPiece") Integer  isPiece
                        );

    long adJustBarcodeD(@Param("itemCode") String itemCode,
                        @Param("barcodeId") String barcodeId,
                        @Param("qty") BigDecimal qty);

    long insertOrAdd(@Param("itemCode") String itemCode,
                     @Param("itemId") String itemId,
                     @Param("barcodeDId") String barcodeDId,
                     @Param("barcodeId") String barcodeId,
                     @Param("containerCode") String containerCode,
                     @Param("qty") BigDecimal qty,
                     @Param("pickTaskDId") String  pickTaskDId,
                     @Param("isPiece") Integer  isPiece);

    long updateBarcodeD(@Param("billGroupId") String billGroupId,
                        @Param("lclNo") Integer lclNo,
                        @Param("itemCode") String itemCode,
                        @Param("qty") BigDecimal qty);

    long deleteByBarcodeLong(@Param("barcodeHId") String barCodeHId);

    List<LclDetailTableVO> getLclDetail(@Param("billGroupId") String billGroupId,
                                        @Param("lclNo") Integer lclNo);

    Map<String, String> getBarcodeByPickTaskDId(
            @Param("list")List<String> pickTaskDIds
    );

    List<BarCodeDDO> listBarcodeDBySeqNo(
            @Param("containerCode")String containerCode,
            @Param("list")List<String> seqNoList
    );

    void updatePrintCountByBarcode(@Param("ids")List<String> ids);

    List<BarCodeDDO> getListByBarCodeIds(@Param("barcodeIds") List<String> barcodeIds);

    List<OuterCheckBarcodeDetailDTO> getBarcodeDetail(@Param("barCode") String barCode, @Param("warehouseId") String warehouseId);
}
