package com.sundot.airport.common.core.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.sundot.airport.common.dto.BaseCommonDto;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 使用报表
 *
 * @author ruoyi
 * @date 2025-01-06
 */
@Data
public class SysUsageReportDto {

    /**
     * 开始日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date startDate;

    /**
     * 结束日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date endDate;

    /**
     * 基本情况
     */
    private BasicSituation basicSituation;

    /**
     * 运行情况
     */
    private RunSituation runSituation;

    /**
     * 基本情况
     */
    @Data
    public static class BasicSituation {
        /**
         * 部门信息列表
         */
        private List<SysDeptInfo> sysDeptInfoList;
        /**
         * 部门信息列表描述
         */
        private String sysDeptInfoListDesc;
        /**
         * 总人员数量
         */
        private Integer totalPeopleNumber;
    }

    /**
     * 运行情况
     */
    @Data
    public static class RunSituation {
        /**
         * 勤务模块
         */
        private AttendanceModule attendanceModule;
        /**
         * 查获模块
         */
        private SeizureModule seizureModule;
        /**
         * 抽问抽答模块
         */
        private ExamModule examModule;
        /**
         * 巡检模块
         */
        private CheckModule checkModule;
    }

    /**
     * 部门信息
     */
    @Data
    public static class SysDeptInfo {
        /**
         * 部门ID
         */
        private Long deptId;
        /**
         * 部门名称
         */
        private String deptName;
        /**
         * 人员数量
         */
        private Integer peopleNumber;
    }

    /**
     * 勤务模块
     */
    @Data
    public static class AttendanceModule {
        /**
         * 部门信息列表
         */
        private List<SysDeptInfo> sysDeptInfoList;
        /**
         * 部门信息列表描述
         */
        private String sysDeptInfoListDesc;
        /**
         * 总人员数量
         */
        private Integer totalPeopleNumber;
    }

    /**
     * 查获模块
     */
    @Data
    public static class SeizureModule {
        /**
         * 表单数量
         */
        private Integer totalForm;
        /**
         * 归档表单数量
         */
        private Integer totalFormArchived;
        /**
         * 查获总数
         */
        private BigDecimal totalSeizure;
        /**
         * 违禁品类型列表
         */
        private List<BaseCommonDto> seizureTypeList;
        /**
         * 查获岗位列表
         */
        private List<BaseCommonDto> seizurePositionList;
        /**
         * 查获部位列表
         */
        private List<BaseCommonDto> seizurePartList;
        /**
         * 隐匿物品查获部位列表
         */
        private List<BaseCommonDto> seizurePartHiddenList;
    }

    /**
     * 抽问抽答模块
     */
    @Data
    public static class ExamModule {
        /**
         * 总人数
         */
        private Integer totalPeopleNumber;
        /**
         * 总项数
         */
        private Integer totalItem;
        /**
         * 平均分
         */
        private BigDecimal averageScore;
        /**
         * 类型列表
         */
        private List<BaseCommonDto> typeList;
    }

    /**
     * 巡检模块
     */
    @Data
    public static class CheckModule {
        /**
         * 检查单数量
         */
        private Integer totalCheckForm;
        /**
         * 问题项数量
         */
        private Integer totalProblemItem;
        /**
         * 检查任务类型列表
         */
        private List<BaseCommonDto> checkTaskTypeList;
        /**
         * 检查项类型列表
         */
        private List<BaseCommonDto> checkCategoryTypeList;
    }

}



