package com.aucma.report.mapper;

import com.aucma.report.domain.vo.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.HashMap;
import java.util.List;

/**
 * Board4看板数据Mapper接口
 * 数字化注塑车间管控中心
 *
 * @author YinQ
 */
@Mapper
public interface Board4Mapper {

    /**
     * 查询年累计产量（去年数据）
     * 数据来源：BASE_ORDERINFO
     */
    Long selectYearProductionTotal();

    /**
     * 查询月累计产量（当月数据）
     * 数据来源：BASE_ORDERINFO
     */
    Long selectMonthProductionTotal();

    /**
     * 查询日累计产量（当天工艺参数）
     * 数据来源：BASE_DEVICE_PARAM_VAL，PARAM_CODE='19'（实际产出数量）
     */
    Long selectDayProductionTotal();

    /**
     * 查询今日工单统计（计划数、完成数）
     * 数据来源：BASE_ORDERINFO
     */
    HashMap<String, Object> selectTodayOrderStatistics();

    /**
     * 查询今日工单进度列表
     * 数据来源：BASE_ORDERINFO
     */
    List<Board4OrderProgressVo> selectTodayOrderProgressList();

    /**
     * 查询设备状态统计（正常、告警、停机、总数）
     * 数据来源：BASE_DEVICELEDGER
     */
    HashMap<String, Object> selectDeviceStatusStatistics();

    /**
     * 查询总维修次数
     * 数据来源：DMS_BILLS_FAULT_INSTANCE
     */
    Long selectTotalRepairCount();

    /**
     * 查询最新报警信息
     * 数据来源：RECORD_ALARM_DEVICE
     */
    HashMap<String, Object> selectLatestAlarmInfo();

    /**
     * 查询维修分析列表（按设备聚合）
     * 数据来源：DMS_BILLS_FAULT_INSTANCE，以机台设备聚合
     */
    List<Board4RepairAnalysisVo> selectRepairAnalysisByDevice();

    /**
     * 查询报修趋势（按时间段统计）
     * 数据来源：DMS_BILLS_FAULT_INSTANCE
     */
    List<Board4RepairTrendVo> selectRepairTrendList();

    /**
     * 查询质量统计（合格数/不合格数）
     * 数据来源：REPORT_QUALITY_INSPECTION
     */
    HashMap<String, Object> selectQualityStatistics();

    /**
     * 查询质量追溯列表
     * 数据来源：REPORT_QUALITY_INSPECTION
     */
    List<Board4QualityTraceVo> selectQualityTraceList();

    /**
     * 查询设备分析列表（各设备机台实际产量）
     * 数据来源：BASE_DEVICE_PARAM_VAL + BASE_DEVICELEDGER
     */
    List<Board4DeviceProductionVo> selectDeviceProductionAnalysis();

    /**
     * 查询18台设备开模数（昨日07:00-今日07:00）
     * 数据来源：BASE_DEVICE_PARAM_VAL_YYYYMM + BASE_DEVICELEDGER
     */
    List<Board4DeviceOpeningCountVo> selectDeviceOpeningCountList(@Param("beginTime") Date beginTime,
                                                                  @Param("endTime") Date endTime,
                                                                  @Param("baselineBeginTime") Date baselineBeginTime,
                                                                  @Param("tableSuffixes") List<String> tableSuffixes);
}
