package com.cim.idm.service;


import com.cim.idm.model.*;
import com.cim.idm.model.dto.StoragePrintDto;
import com.cim.idm.wmsextend.generic.errorHandler.CustomException;

/**
 * @author 10486880
 * @version 1.1
 * @description LabelService 提供标签相关的操作服务。
 * 注意：实现此接口时需考虑身份验证和授权验证，确保操作的安全性。
 * 异常处理：实现方法时应捕获并处理可能的异常，确保服务的健壮性。
 * @date 2024/4/19 11:14
 */
public interface LabelService {
    /**
     * 执行标签操作。
     *
     * @param data 标签数据对象，不可为null。
     * @throws IllegalArgumentException 如果data为null。
     */
    void labelAction(LabelDto data) throws IllegalArgumentException;

    /**
     * 分配FG码到标签。
     *
     * @param data 分配FG码的数据对象，不可为null。
     * @throws IllegalArgumentException 如果data为null。
     */
    void labelAssignFGCodeAction(LabelAssignFGCodeDto data) throws IllegalArgumentException;

    /**
     * 分配参数到标签。
     *
     * @param data 分配参数的数据对象，不可为null。
     * @throws IllegalArgumentException 如果data为null。
     */
    void labelAssignParameterAction(LabelAssignParameterDto data) throws IllegalArgumentException;

    /**
     * 执行标签打印测试。
     *
     * @param data 打印测试的数据对象，不可为null。
     * @throws IllegalArgumentException 如果data为null。
     */
    String labelPrintTest(LabelPrintDto data) throws CustomException;

    /**
     * 货位打印
     */
    String storagePrint(StoragePrintDto data) throws CustomException;

    /**
     * 标签存量打印修改品名
     */
    void labelPrintTest1(LabelPrintDto1 data) throws CustomException;
    /**
     * 标签存量打印成品
     */
    void labelPrintTest2(LabelPrintDto2 data) throws CustomException;
    /**
     * 标签存量打印修改品名
     */
    String labelPrintTest3(LabelPrintDto1 data) throws CustomException;
    /**
     * 打印标签。
     *
     * @param data 打印标签的数据对象，不可为null。
     * @throws IllegalArgumentException 如果data为null。
     */
    void labelPrint(LabelPrintDto data) throws IllegalArgumentException;

    /**
     * @Description: 批量标签打印
     * @Param: [data]
     * @return: void
     * @Author: 10781388
     * @Date: 2024/5/21
     */
    void batchLabelPrint(LabelPrintBatchDto data) throws IllegalArgumentException;

    /**
     * 分配参数到标签。
     *
     * @param data 分配参数的数据对象，不可为null。
     * @throws IllegalArgumentException 如果data为null。
     */
    void labelParameterAction(LabelParameterDto data) throws IllegalArgumentException;


    /**
     * 保存标签打印信息。
     *
     * @param data 保存标签打印信息的数据对象，不可为null。
     * @throws IllegalArgumentException 如果data为null。
     */
    void saveLabelPrintInfo(LabelPrintInfoDto data) throws IllegalArgumentException;

//    /**
//     * 标签信息修改。
//     *
//     * @param data 标签信息修改信息的数据对象，不可为null。
//     * @throws IllegalArgumentException 如果data为null。
//     */
//    void updateLabelPrintInfo(LabelPrintInfoDto data) throws IllegalArgumentException;
//
//    /**
//     * @param data
//     * @Description:生成打印批号
//     * @Return: java.lang.String
//     * @Author: Zgg
//     * @Date: 2024/5/15 14:03
//     */
//    String generateLabelId(NameRuleDto data) throws IllegalArgumentException;

    /**
     * 保存NC数据。
     *
     * @param data 保存NC数据的数据对象，不可为null。
     * @throws IllegalArgumentException 如果data为null。
     */
   // void saveNcData(List<NcDataDto> data) throws IllegalArgumentException;


}
