package cn.estsh.i3plus.ext.mes.api.base;

import cn.estsh.i3plus.ext.mes.pojo.bean.MesAreaExt;
import cn.estsh.i3plus.ext.mes.pojo.bean.MesWorkCenterExt;
import cn.estsh.i3plus.ext.mes.pojo.model.SxProdOrgModel;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter;
import io.swagger.annotations.ApiOperation;

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

/**
 * @Author: wangjie
 * @CreateDate: 2021/01/19 15:06 下午
 * @Description:
 **/
public interface IProdOrgExtService {

    /**
     * 新增mes组织模型信息(区域，生产线，工位)
     *
     * @param prodOrgModel 组织模型信息
     * @return 新增后的组织模型信息
     */
    @ApiOperation(value = "新增mes组织模型信息(区域，生产线，工位)", notes = "新增mes组织模型信息(区域，生产线，工位)")
    Object insertProdOrg(SxProdOrgModel prodOrgModel);

    /**
     * 更新区域信息
     * @param areaExt 区域信息
     * @return 区域信息
     */
    @ApiOperation(value = "更新区域信息", notes = "更新区域信息")
    MesAreaExt updateAreaExt(MesAreaExt areaExt);

    /**
     * 更新生产线信息
     * @param workCenterExt 生产线信息
     * @return 生产线信息
     */
    @ApiOperation(value = "更新生产线信息", notes = "更新生产线信息")
    MesWorkCenterExt updateWorkCenterExt(MesWorkCenterExt workCenterExt);

    /**
     * 根据组织代码查询生产线信息集合
     * @param organizeCode 组织代码
     * @return 生产线信息集合
     */
    @ApiOperation(value = "根据组织代码查询生产线信息集合", notes = "根据组织代码查询生产线信息集合")
    List<MesWorkCenterExt> queryWorkCenterExtList(String organizeCode);

    /**
     * 根据组织代码查询生产线信息集合
     * @param organizeCode 组织代码
     * @return 生产线信息集合
     */
    @ApiOperation(value = "根据组织代码查询生产线信息集合", notes = "根据组织代码查询生产线信息集合")
    List<MesWorkCenter> queryWorkCenterList(String organizeCode);

    /**
     * 根据组织代码查询生产线信息集合
     * @param organizeCode 组织代码
     * @return 生产线信息集合
     */
    @ApiOperation(value = "根据组织代码查询生产线信息集合", notes = "根据组织代码查询生产线信息集合")
    Map<String, MesWorkCenter> queryWorkCenterMap(String organizeCode);

    /**
     * 根据生产线代码查询生产线信息
     * @param organizeCode 组织代码
     * @param workCenterCode 生产线代码
     * @return 生产线信息
     */
    @ApiOperation(value = "根据生产线代码查询生产线信息", notes = "根据生产线代码查询生产线信息")
    MesWorkCenterExt getWorkCenterExt(String organizeCode, String workCenterCode);

    /**
     * 查询生产线系别信息集合
     * @param organizeCode 组织代码
     * @return 系别信息集合
     */
    @ApiOperation(value = "查询生产线系别信息集合", notes = "查询生产线系别信息集合")
    List<String> queryWorkCenterIsDontList(String organizeCode);

    /**
     * 查询生产线班别信息集合
     * @param organizeCode 组织代码
     * @return 班别信息集合
     */
    @ApiOperation(value = "查询生产线班别信息集合", notes = "查询生产线班别信息集合")
    List<String> queryWorkCenterDontClassList(String organizeCode);

    /**
     * 根据组织代码查询工位信息集合
     * @param organizeCode 组织代码
     * @return 工位信息集合
     */
    @ApiOperation(value = "根据组织代码查询工位信息集合", notes = "根据组织代码查询工位信息集合")
    List<MesWorkCell> queryWorkCellList(String organizeCode);

    /**
     * 根据组织代码查询工位信息集合
     * @param workCell 工位参数
     * @param pager 分页信息
     * @return 工位信息集合
     */
    @ApiOperation(value = "根据组织代码查询工位信息集合", notes = "根据组织代码查询工位信息集合")
    ListPager<MesWorkCell> queryWorkCellByPager(MesWorkCell workCell, Pager pager);

    /**
     * 获取事业别最新人件费信息
     * @param organizeCode
     * @return
     */
    @ApiOperation(value = "获取事业别最新人件费信息", notes = "获取事业别最新人件费信息")
    Map<String, String> getCareerPersonnelCostMap(String organizeCode);
}
