package com.ruoyi.orderManagement.service;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.orderManagement.domain.Ftmsorderbills;

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

/**
 * 订单主Service接口
 *
 * @author ruoyi
 * @date 2021-02-22
 */
public interface IftmsorderbillsService {
    /**
     * 查询订单主
     *
     * @param id 订单主ID
     * @return 订单主
     */
    public Map<String, Object> selectftmsorderbillsById(Long id);

    /**
     * 查询订单主列表
     *
     * @param ftmsorderbills 订单主
     * @return 订单主集合
     */
    public List<Ftmsorderbills> selectftmsorderbillsList(Ftmsorderbills ftmsorderbills);

    /**
     * 提交计划下单
     *
     * @param tmsorder 主表
     * @param scntrs    明细
     * @param attachs   附件表
     * @param fees      费用表
     * @param plans     调度表
     * @param loginUser 用户信息
     * @return 结果
     */
    public AjaxResult insertftmsorderbills(String tmsorder, String scntrs, String attachs, String fees, String plans, LoginUser loginUser);

    /**
     * 修改订单主
     *
     * @param ftmsorderbills 订单主
     * @return 结果
     */
    public int updateftmsorderbills(Ftmsorderbills ftmsorderbills);

    /**
     * 批量删除订单主
     *
     * @param ids 需要删除的订单主ID
     * @return 结果
     */
    public int deleteftmsorderbillsByIds(Long[] ids);

    /**
     * 删除订单主信息
     *
     * @param id 订单主ID
     * @return 结果
     */
    public int deleteftmsorderbillsById(Long id);

    /**
     *  计划取消
     * @param ftmsorderbills    计划数据
     * @param types
     * @param loginUser 登陆人
     * @return 结果
     */
    public AjaxResult planCancel(Ftmsorderbills ftmsorderbills, String types, LoginUser loginUser);

    /**
     *  列表页查询条件
     * @param ftmsorderbills    查询条件
     * @return  结果
     */
    public List<Map<String, Object>> selectftmsorderbillsMapList(Ftmsorderbills ftmsorderbills);

    /**
     *  判断是否可以修改
     * @param id    查询条件
     * @return  结果
     */
    boolean allowChanges(Long id);

    /**
     *  计划下达变更提交
     * @param tmsorder  计划
     * @param scntrs    箱型箱量
     * @param attachs   附件
     * @param fees      费用
     * @param plans     调度
     * @param loginUser 用户
     * @return  结果
     */
    AjaxResult insertPlanChange(String tmsorder, String scntrs, String attachs, String fees, String plans, LoginUser loginUser);
}
