package org.dromara.elevator.domain.vo;

import lombok.Data;

import java.math.BigDecimal;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

/**
 * 大屏维保统计
 *
 * @author ym
 * @version 1.0.0
 * @date 2024-11-11 14:01
 */
@Data
public class ELargeScreenMaintenanceVo {

    /**
     * 维保单位数量
     */
    private Integer companyTotal;

    /**
     * 今日维保任务
     */
    private Integer dayTaskTotal;

    /**
     * 超期维保任务(超期维保工作数)
     */
    private Integer overdueTaskTotal;

    /**
     * 维保工作总数
     */
    private Integer workTotal;

    /**
     * 维保工作完成数
     */
    private Integer completeWorkTotal;

    /**
     * 超期维保电梯数
     */
    private Integer overdueElevatorTotal;

    /**
     * 超期维保数据
     */
    private List<OverdueTaskInfo> overdueInfoList;

    /**
     * 超期信息
     */
    @Data
    public static class OverdueTaskInfo {

        /**
         * 月份
         */
        private Integer month;

        /**
         * 超期电梯数
         */
        private Integer overdueElevatorTotal;

        /**
         * 超期任务占比
         */
        private BigDecimal overdueRatio;

    }


    public ELargeScreenMaintenanceVo() {
        this.overdueInfoList = IntStream.range(1, 13).mapToObj(month -> {
            OverdueTaskInfo overdueTaskInfo = new OverdueTaskInfo();
            overdueTaskInfo.setMonth(month);
            overdueTaskInfo.setOverdueElevatorTotal(0);
            overdueTaskInfo.setOverdueRatio(BigDecimal.ZERO);
            return overdueTaskInfo;
        }).collect(Collectors.toList());
    }

}
