package cn.estsh.i3plus.ext.mes.api.busi.bu;

import cn.estsh.i3plus.ext.mes.pojo.bean.MesBusiErrorMessage;
import cn.estsh.i3plus.ext.mes.pojo.bean.SxMesDataTravel;
import cn.estsh.i3plus.ext.mes.pojo.model.CompleteRateChartModel;
import cn.estsh.i3plus.ext.mes.pojo.model.ProjectContainersComputeChartParamModel;
import cn.estsh.i3plus.ext.mes.pojo.model.ProjectContainersComputeChartResultModel;
import cn.estsh.i3plus.ext.mes.pojo.model.UnWorkTimeStatisticsModel;
import cn.estsh.i3plus.ext.mes.pojo.model.bu.BuBusiErrorMessageModel;
import cn.estsh.i3plus.ext.mes.pojo.model.bu.MesOuterPackageRetrospectModel;
import cn.estsh.i3plus.ext.mes.pojo.model.bu.SxMesDataTravelExtModel;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import io.swagger.annotations.ApiOperation;

import java.util.List;

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

    /**
     * 达成率一览表
     *
     * @param model 查询条件
     * @return 达成率一览表数据
     */
    @ApiOperation(value = "达成率一览表", notes = "达成率一览表")
    List<CompleteRateChartModel> queryAttainmentRateChart(CompleteRateChartModel model);

    /**
     * 完结率一览表
     *
     * @param model 查询条件
     * @return 完结率一览表数据
     */
    @ApiOperation(value = "完结率一览表", notes = "完结率一览表")
    List<CompleteRateChartModel> queryCompleteRateChart(CompleteRateChartModel model);

    /**
     * 计算百分比,保留2位小数
     * @param d1 被除数
     * @param d2 除数
     * @return 百分比
     */
    @ApiOperation(value = "计算百分比,保留2位小数", notes = "计算百分比,保留2位小数")
    String getRateDecimalTwo(Double d1, Double d2);

    /**
     * 工程集计表
     * @param model
     * @return
     */
    @ApiOperation(value = "工程集计表", notes = "工程集计表")
    ListPager<ProjectContainersComputeChartResultModel> queryProjectContainersComputeChart(ProjectContainersComputeChartParamModel model, Pager pager);

    /**
     *
     * @param paramModel 查询参数
     * @param pager 分页
     * @return 工程不良率
     */
    @ApiOperation(value = "工程不良率", notes = "工程不良率")
    ListPager<ProjectContainersComputeChartResultModel> queryProjectBadRate(ProjectContainersComputeChartParamModel paramModel, Pager pager);

    /**
     * 作业时间月绩
     *
     * @param model 查询条件
     * @return 作业时间月绩信息
     */
    @ApiOperation(value = "作业时间月绩", notes = "作业时间月绩")
    List<UnWorkTimeStatisticsModel> queryWorkTimeMonthlyPerformance(UnWorkTimeStatisticsModel model);

    /**
     * 操作报错信息
     *
     * @param model 查询条件
     * @return 操作报错信息
     */
    @ApiOperation(value = "操作报错信息", notes = "作业时间月绩")
    ListPager<MesBusiErrorMessage> queryBusiErrorMassageByListPager(BuBusiErrorMessageModel model, Pager pager);

    /**
     * 操作报错信息
     *
     * @param model 查询条件
     * @return 操作报错信息
     */
    @ApiOperation(value = "数据履历查询", notes = "数据履历查询")
    ListPager<SxMesDataTravelExtModel> queryMesDataTravelByListPager(SxMesDataTravel model, Pager pager);

    /**
     * 修改数据履历
     * @param model 查询条件
     */
    @ApiOperation(value = "修改数据履历", notes = "修改数据履历")
    void updateDataTravel(SxMesDataTravel model);

    /**
     * 修改数据履历结果确认
     * @param confirmType 确认类型 10-工技确认；20-制造确认
     * @param userName 用户名
     * @param ids 数据ids
     */
    @ApiOperation(value = "修改数据履历结果确认", notes = "修改数据履历结果确认")
    void dataTravelResultConfirm(Long[] ids, Integer confirmType, String userName);

    /**
     * 大小包装条码追溯报表
     * @param model
     * @param pager
     * @return
     */
    ListPager queryMesOuterPackageRetrospectPager(MesOuterPackageRetrospectModel model, Pager pager);
}
