package com.xisc.pm.app.service;

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

import com.xisc.pm.api.dto.PmCompositeSlabCalcDTO;
import com.xisc.pm.api.dto.PmProContFilterResposeDTO;
import com.xisc.pm.api.dto.PmProContYieldRequestDTO;
import com.xisc.pm.api.dto.PmProContYieldResposeDTO;
import com.xisc.pm.domain.entity.PmContMscTech;
import com.xisc.pm.domain.entity.PmPdPlate;
import com.xisc.pm.domain.entity.PmProContProdTtr;

import io.choerodon.core.domain.Page;
import io.choerodon.mybatis.pagehelper.domain.PageRequest;

/**
 * 组板钢板表(PmPdPlate)应用服务
 *
 * @author 纪文桃 wentao.ji01@hand-china.com
 * @since 2024-07-31 16:31:09
 */
public interface PmPdPlateService {

    /**
     * 查询数据
     *
     * @param pageRequest 分页参数
     * @param pmPdPlates  查询条件
     * @return 返回值
     */
    Page<PmPdPlate> selectList(PageRequest pageRequest, PmPdPlate pmPdPlates);

    /**
     * 保存数据
     *
     * @param pmPdPlates 数据
     */
    void saveData(List<PmPdPlate> pmPdPlates);

    /**
     * 通过收得率生成钢板组板信息
     * @param pmProContYield
     * @param axisPmContMscTech
     * @param axisPmProContProdTtr
     * @param filterOrderMap
     * @param pmProContYieldRespose
     * @param pmCompositeSlabCalc
     */
    PmPdPlate createPmPdPlate(PmProContYieldRequestDTO pmProContYield, PmContMscTech axisPmContMscTech,
            PmProContProdTtr axisPmProContProdTtr, Map<String, PmProContFilterResposeDTO> filterOrderMap,
            PmProContYieldResposeDTO pmProContYieldRespose, PmCompositeSlabCalcDTO pmCompositeSlabCalc);

    /**
     * 组板解散
     * @param organizationId
     * @param plateNo
     */
    void releasePlate(Long organizationId, String plateNo);

    /**
     * 单块组板确认
     * @param organizationId
     * @param pmPdPlate
     */
    void singlePlateConfirm(Long organizationId, PmPdPlate pmPdPlate);

}

