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

import cn.estsh.i3plus.ext.mes.pojo.bean.MesAssistOutAndEnter;
import cn.estsh.i3plus.ext.mes.pojo.model.bu3.SxAssistOutAndEnterModel;
import cn.estsh.i3plus.ext.mes.pojo.model.bu3.SxAssistOutAndEnterReportModel;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import io.swagger.annotations.ApiOperation;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

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

    /**
     * 按条件分页查询援交信息
     *
     * @param assistOutAndEnter 查询条件
     * @param pager 分页条件
     * @return 援交分页数据
     */
    @ApiOperation(value = "按条件分页查询援交信息", notes = "按条件分页查询援交信息")
    ListPager<SxAssistOutAndEnterModel> queryAssistOutAndEnterByPager(SxAssistOutAndEnterModel assistOutAndEnter, Pager pager);

    /**
     * 数据封装
     * @param organizeCode 组织代码
     * @param resultList 结果集
     * @param resultDbList 数据集
     */
    @ApiOperation(value = "数据封装", notes = "数据封装")
    void packResultList(String organizeCode, List<SxAssistOutAndEnterModel> resultList, List<MesAssistOutAndEnter> resultDbList);

    /**
     * 新增援交信息
     * @param assistOutAndEnter 援交信息
     * @return 援交数据
     */
    @ApiOperation(value = "新增援交信息", notes = "新增援交信息")
    void insertAssistOutAndEnter(MesAssistOutAndEnter assistOutAndEnter);

    /**
     * 更新援交信息
     * @param assistOutAndEnter 援交信息
     * @return 援交数据
     */
    @ApiOperation(value = "更新援交信息", notes = "更新援交信息")
    MesAssistOutAndEnter updateAssistOutAndEnter(SxAssistOutAndEnterModel assistOutAndEnter);

    /**
     * 根据id启用或禁用援交信息
     * @param idStrArr 援交信息ID
     * @param status 状态
     * @param userName 操作人
     */
    @ApiOperation(value = "根据id启用或禁用援交信息", notes = "根据id启用或禁用援交信息")
    void updateAssistOutAndEnterValidById(String[] idStrArr, Integer status, String userName);

    /**
     * 根据id删除援交信息
     * @param idStrArr 援交信息ID
     * @param userName 操作人
     */
    @ApiOperation(value = "根据id删除援交信息", notes = "根据id删除援交信息")
    void deleteAssistOutAndEnterById(String[] idStrArr, String userName);

    /**
     * 根据id确认援交信息
     * @param idStrArr 援交信息ID
     * @param organizeCode 组织代码
     * @param userName 操作人
     * @param userLoginName 登录名
     * @param level 援进援出确认级别
     * @param liabilityAttribution 责任归属
     */
    @ApiOperation(value = "根据id确认援交信息", notes = "根据id确认援交信息")
    void doConfirmAssistOutAndEnterById(String[] idStrArr, String organizeCode, String userName, String userLoginName,int level,Integer liabilityAttribution);

    /**
     * 援交报表
     * @param data 查询条件
     * @return 援交报表数据
     */
    @ApiOperation(value = "援交报表", notes = "援交报表")
    SxAssistOutAndEnterReportModel doAssistOutAndEnterReport(SxAssistOutAndEnterReportModel data);

    /**
     * 援交报表明细数据
     * @param model
     * @return
     */
    @ApiOperation(value = "援交报表明细数据", notes = "援交报表明细数据")
    List<SxAssistOutAndEnterModel> queryAssistOutAndEnterReportDetailList(SxAssistOutAndEnterModel model);

    /**
     * 援交报表导出
     * @param resp HttpServletResponse
     * @param data 查询条件
     */
    @ApiOperation(value = "援交报表导出", notes = "援交报表导出")
    void doDownLoadAssistOutAndEnterReport(HttpServletResponse resp, SxAssistOutAndEnterReportModel data);

    /**
     * 援交信息自动确认
     * @param model 入参
     * @return 修改数量
     */
    @ApiOperation(value = "援交信息自动确认", notes = "援交信息自动确认")
    Integer doAssistOutAndEnterAutoConfirm(SxAssistOutAndEnterModel model);

    /**
     * 按条件分页查询援交信息
     *
     * @param influenceDateStart 影响开始日期
     * @param influenceDateEnd 影响结束日期
     * @param organizeCode 工厂代码
     * @return 援交分页数据
     */
    @ApiOperation(value = "根据月份和责任部门查询援入援出信息", notes = "根据月份和责任部门查询援入援出信息")
    List<MesAssistOutAndEnter> queryAssistOutListByMonthAndContainProdTechnology(String influenceDateStart, String influenceDateEnd, String organizeCode);

    List queryAssistOutListByMonthWorkCenterCode(String influenceDateStart, String influenceDateEnd, String workCenterCode, String organizeCode);

    @ApiOperation(value = "援交报表部长确认", notes = "援交报表部长确认")
    void doReportResponsibleMinisterConfirm(SxAssistOutAndEnterReportModel data);
}
