package cn.estsh.i3plus.ext.mes.pcn.api.job;

import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesPartExt;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesProdPackExt;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesWorkOrderExt;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MatchRuleCodeModel;
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
import io.swagger.annotations.ApiOperation;

import java.util.List;

/**
 * @author wangjie
 * @version 1.0
 * @date 2021/1/29 13:24
 * @Description: Pcn处理工单自动批量生成条码
 **/
public interface ISxWorkOrderAutoCreateSnService {

    /**
     * Pcn处理工单自动批量生成条码JOB
     * @param organizeCode 组织代码
     */
    @ApiOperation(value = "Pcn处理工单自动批量生成条码JOB", notes = "Pcn处理工单自动批量生成条码JOB")
    void doWorkOrderAutoCreateSn(String organizeCode);

    /**
     * 获取编码类型集合
     * @param workOrder 工单信息
     * @return 编码类型集合
     */
    @ApiOperation(value = "修改工单的条码生成状态", notes = "修改工单的条码生成状态")
    List<MatchRuleCodeModel> getCodeType(MesWorkOrderExt workOrder, int produceSnNum);

    /**
     * 插入条码
     * @param serialNumberList 条码集合
     * @param workOrder 工单信息
     * @param partDb 物料信息
     * @param codeType 条码类型
     * @param prodPackDb 产品包装信息
     * @param userInfo 操作人
     */
    @ApiOperation(value = "插入条码", notes = "插入条码")
    void insertProduceSnExt(List<String> serialNumberList, MesWorkOrderExt workOrder, MesPartExt partDb, Integer codeType, MesProdPackExt prodPackDb, String userInfo);

    /**
     * 封装生成条码模型
     * @param workOrderExt 工单信息
     * @param ruleCode 规则代码
     * @param partDb 物料信息
     * @param workOrderStartTime 生产工单计划开始时间
     * @return 生成条码模型
     */
    @ApiOperation(value = "封装生成条码模型", notes = "封装生成条码模型")
    GenSerialNoModel doPackGenSerialNoModel(MesWorkOrderExt workOrderExt, String ruleCode, MesPartExt partDb, String workOrderStartTime);

    /**
     * @Description: 插入包装
     * @Param [packageNoList, workOrder, partDb, codeType, prodPackDb, userInfo]
     * @return void
     * @Date 2021/5/24 9:52
     **/
    @ApiOperation(value = "插入包装", notes = "插入包装")
    void insertPackage(List<String> packageNoList, MesWorkOrderExt workOrder, MesPartExt partDb, Integer codeType, MesProdPackExt prodPackDb,Double num, String userInfo);
}
