package com.sunda.spmswms.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.sunda.spmswms.entity.SapPackageListDtl;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * SAP装箱单明细表 服务类
 * </p>
 *
 * @author Wayne
 * @since 2021-04-22
 */
public interface ISapPackageListDtlService extends IService<SapPackageListDtl> {

    /** 批量修改装箱单明细表状态，一次修改多行数据。用于任务拆分时批量修改行状态。 */
    int updateSapPackageListDtl(String packageList, String targetStatus);

    /** 获取装箱单行项目明细数据，备件货带箱码数据 
     * @param goodsType */
    List<Map<String, Object>> getSapPackageList(String packageList, String goodsType);

    /** 根据装箱单号、装箱单行号，将出库任务 uuid 更新到对应的 SAP装箱单明细行中 */
    int updateSapPackageListDtl(String packageList, String item, String whsOutUuid);

    /** 根据出库任务 uuid 获取出库任务明细，备件货按箱出。装箱单多行数据对应一个箱码的，只显示一次箱码；*/
    List<Map<String, Object>> getWhsOutDtlX(String uuid, String goodsType);

    /** 出库任务完成，按出库任务uuid更新装箱单明细行数据状态为 2已完成；或提交SAP时，将状态修改为 4提交SAP； */
    int uSapPackageListDtl(String targetStatus, String whsOutUuid);

    /** 贸易货出库更新出库任务明细 */
    int updateSapPackageListDtlM(SapPackageListDtl sapPackageListDtl, String packageList, String item);

    /** 贸易货新增计划外的出库行项目，数据新增到装箱单明细中 */
    int insertSapPackageListDtl(SapPackageListDtl sapPackageListDtl);

    /** 每次保存或提交之前，根据出库任务uuid和计划外的行标记，先删除已有的 计划外的出库行项目 */
    int deleteUnplannedSapPackageListDtl(String whsOutUuid, String unplanned);

    /** 卸货入库，查询装箱单明细信息 */
    List<Map<String, Object>> getSapPackageListDtlM(String packageList);

    /**根据出库任务uuid获取行明细*/
    List<SapPackageListDtl> getSapPackageListDtlsByWhsOutUuid(String whsOutUuid);
    
    /**
     * 根据装箱单查询装箱单下当前最大的SPMS行号
     * @param packageList
     * @return
     */
    int selectMaxSpmsItemNo(String packageList);
}
