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

import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProdRuleContext;
import cn.estsh.i3plus.pojo.mes.bean.MesProdRuleIgnoreCfg;
import cn.estsh.i3plus.pojo.mes.bean.MesProdRuleNosortCfg;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell;
import io.swagger.annotations.ApiOperation;

import java.util.List;
import java.util.Map;

public interface IMesProdRuleCfgExtService {

    @ApiOperation(value = "【非排序线】获取产品加工规则")
    List<MesProdRuleNosortCfg> getProdRuleNosortCfgList(MesProdRuleContext prodRuleContext);

    @ApiOperation(value = "【非排序线】获取产品加工规则")
    List<MesProdRuleNosortCfg> getProdRuleNosortCfgList(MesProdRuleContext... prodRuleContext);

    @ApiOperation(value = "【非排序线】获取产品加工规则 -之后- 关联不可用规则")
    List<MesProdRuleNosortCfg> getProdRuleNosortCfgList(List<MesProdRuleNosortCfg> prodRuleNosortCfgList, Map<String, List<MesProdRuleIgnoreCfg>> prodRuleIgnoreCfgMap);

    @ApiOperation(value = "【非排序线】获取产品加工规则对应的装配件信息 -同时- 关联不可用规则")
    MesProdRuleContext getProdRuleNosortContext(MesProdRuleContext prodRuleContext, Map<String, List<MesProdRuleIgnoreCfg>> prodRuleIgnoreCfgMap);

    @ApiOperation(value = "【非排序线】获取产品加工规则 【根据PID获取】")
    MesProdRuleNosortCfg getProdRuleNosortCfg(String organizeCode, Long id);

    @ApiOperation(value = "【非排序线】获取产品加工规则 【根据PID获取】")
    MesProdRuleContext getProdRuleNosortContextByPid(MesProdRuleContext prodRuleContext);

    @ApiOperation(value = "【非排序线】获取产品加工规则 【根据PID获取】 -之后- 关联不可用规则")
    MesProdRuleContext getProdRuleNosortContextByPid(MesProdRuleContext prodRuleContext, Map<String, List<MesProdRuleIgnoreCfg>> prodRuleIgnoreCfgMap);

    @ApiOperation(value = "【排序线】获取产品加工规则(条码对应的装配件绑定记录,目前条码等同工单) -同时- 关联不可用规则 ; 判断是否剔除平行工位")
    MesProdRuleContext getProdRuleSortContext(MesProdRuleContext prodRuleContext, Map<String, List<MesProdRuleIgnoreCfg>> prodRuleIgnoreCfgMap, Boolean isFilterParallel);

    @ApiOperation(value = "【排序线】获取产品加工规则 [前道所有装配件] -同时- 关联不可用规则; 判断是否剔除平行工位 ; 判断是否根据工序顺序号过滤后道")
    MesProdRuleContext getProdRuleSortPreCraftContext(MesProdRuleContext prodRuleContext, Map<String, MesWorkCell> workCellMap,
                                                      Map<String, List<MesProdRuleIgnoreCfg>> prodRuleIgnoreCfgMap, Boolean isFilterParallel, Boolean isFilterAfterCraft);

    @ApiOperation(value = "根据设备代码查询非排序加工规则")
    List<MesProdRuleNosortCfg> getProdRuleNosortCfgListByEquipCode(String organizeCode, String equipmentCode);

}
