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

import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesOnSiteOrder;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesOnSiteOrderDetail;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesProjectSort;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder;
import io.swagger.annotations.ApiOperation;

import java.util.List;

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

    /**
     * 获取启动状态的工单信息
     * @param workCenterCode 产线代码
     * @param organizeCode 工厂
     * @return 工单信息
     */
    @ApiOperation(value = "获取启动状态的工单信息", notes = "获取启动状态的工单信息")
    List<MesWorkOrder> findMesWorkOrderByWoStatus(String workCenterCode, String organizeCode);

    /**
     * 获取创建和点检中状态的巡检单信息
     * @param workOrderNo 产线代码
     * @param organizeCode 工厂
     * @return 巡检单信息
     */
    @ApiOperation(value = "获取创建和点检中状态的巡检单信息", notes = "获取创建和点检中状态的巡检单信息")
    List<MesOnSiteOrder> findMesOnSiteOrderByWorkOrderNo(String workOrderNo, String organizeCode);

    /**
     * 新增巡检单
     *
     * @param mesWorkOrder 计划工单对象
     * @param userName     操作人
     * @return
     */
    @ApiOperation(value = "新增巡检单", notes = "新增巡检单")
    void insertMesOnSiteOrderAndDetail(MesWorkOrder mesWorkOrder, String userName, List<Long> ids);

    /**
     * 关闭巡检单
     * @param mesOnSiteOrder 计划工单对象
     * @param userName 操作人
     * @return
     */
    @ApiOperation(value = "关闭巡检单", notes = "关闭巡检单")
    void updateMesOnSiteOrderByStatus(MesOnSiteOrder mesOnSiteOrder, String userName);

    /**
     * 获取巡检单明细信息
     * @param orderNo 单号
     * @param organizeCode 工厂
     * @return 巡检单明细信息
     */
    @ApiOperation(value = "获取巡检单明细信息", notes = "获取巡检单明细信息")
    List<MesOnSiteOrderDetail> findMesOnSiteOrderDetail(String orderNo, String projectSortNo, String checkResult, String organizeCode);

    /**
     * 修改巡检单明细数据
     * @param mesOnSiteOrderDetail 计划工单明细对象
     * @param userName 操作人
     * @return
     */
    @ApiOperation(value = "修改巡检单明细数据", notes = "修改巡检单明细数据")
    Boolean updateMesOnSiteOrderDetail(MesOnSiteOrderDetail mesOnSiteOrderDetail, String userName);

    List<MesProjectSort> findProjectSort(MesProjectSort procedureProject);
}
