package com.cf.imes.module.executor.service.optimizeplan;

import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.module.executor.controller.admin.plan.bo.OrderSource;
import com.cf.imes.module.executor.controller.admin.plan.bo.PlanProcessSchemeList;
import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.*;
import com.cf.imes.module.executor.controller.admin.plan.vo.*;
import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO;

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

public interface OptimizePlanService {


    List<PlateOptimize> getPlateListByPlanId(Long planId);

    Boolean addRemain(AddRemainReqVO vo);


    void updateCuttingStatus(CuttingStatusRespVO respVO);



    Map<String, Object> getLabelDataSourceValue(GetSourceDataReq req);

    OrderSource getOrderSource(Long orderId, Long planId, Long machineId);

    OrderSource getOrderSourceByOrderId(Long orderId);

    OrderSource getOrderSourceByPlanId(Long planId);


    void saveOptimizationResults(SavePlanPlateResultReqVO req);

    void saveProcessSchemeResults(SaveProcessSchemeReqVO saveProcessSchemeReqVO);

    PlanProcessSchemeList getProcessSchemeConfig(Long processId,Long planId);

    void updateProcessScheme(PlanProcessSchemeReqVO reqVO);

    List<OrderModelDO> getPlateModel(Long orderId);

    OrderSource getNoPlanPlateData(NoPlanFilterPlateReqVO reqVO);

    PageResult<OrderRespVOCopy> getOrderPlateDataFilter(FilterDataPageReqVO pageReqVO);

    Boolean getNewPlanPlate(Long planId);

    void updateProcessSchemeConfig(PlanSchemeConfigReqVO reqVO);

    PageResult<OrderGoodsResp> getGoodsPlateDataFilter(FilterDataPageReqVO pageReqVO);
}
