package com.op.mes.mapper;

import java.util.List;

import com.op.mes.domain.Convert;
import com.op.mes.domain.ProLine;
import com.op.mes.domain.ProOrder;
import com.op.mes.domain.ProShift;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.op.mes.domain.*;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

/**
 * 订单Mapper接口
 *
 * @author Open Platform
 * @date 2023-07-13
 */
public interface ProOrderMapper {

    /**
     * 更新订单表（拆分模块）
     *
     * @param proOrder
     * @return
     */
    public int updateOrder(ProOrder proOrder);

    /**
     * 查询订单
     *
     * @param id 订单主键
     * @return 订单
     */
    public ProOrder selectProOrderById(String id);

    /**
     * 查询订单列表
     *
     * @param proOrder 订单
     * @return 订单集合
     */
    public List<ProOrder> selectProOrderList(ProOrder proOrder);

    /**
     * 新增订单
     *
     * @param proOrder 订单
     * @return 结果
     */
    public int insertProOrder(ProOrder proOrder);

    /**
     * 修改订单
     *
     * @param proOrder 订单
     * @return 结果
     */
    public int updateProOrder(ProOrder proOrder);

    /**
     * 删除订单
     *
     * @param id 订单主键
     * @return 结果
     */
    public int deleteProOrderById(String id);

    /**
     * 批量删除订单
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteProOrderByIds(String[] ids);

    /**
     * 获取成型机
     *
     * @return
     */
    public List<ProLine> selectProdLine();

    /**
     * 获取班次
     *
     * @return
     */
    public List<ProShift> selectProShift();

    /**
     * 获取换算值
     *
     * @return
     */
    public List<Convert> selectConvert();

    /**
     * 根据code查询产线名称
     *
     * @return
     */
    String selectProdLineName(String prodLineCode);

    /**
     * 查询所有batchCode
     *
     * @return
     */
    List<String> selectBatchCodes();


    /**
     * 通过parent_order查询订单信息
     *
     * @param orderCode
     * @return
     */
    List<ProOrder> selectChildProOrderByCode(String orderCode);

    /**
     * 通过code获取产线名称
     *
     * @param prodLineCode
     * @return
     */
    String selectBatchNameByCode(String prodLineCode);

    /**
     * 通过工单id查询批次号list
     *
     * @param workorderId
     * @return
     */
    List<String> selectBatchCodesById(String workorderId);

    /**
     * 获取包装线list
     *
     * @return
     */
    public List<ProLine> selectPackageLine();

    public void updateOrderBatch(@Param("workers") List<ProOrderWorkorder> workers);
}
