package com.ruoyi.excel.wecom.helper;

import lombok.Data;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * 部门统计累加器 - 用于分页处理时累加部门维度的统计结果
 */
@Data
public class DepartmentStatisticsAccumulator {

    /**
     * 为每个部门路径维护统计数据
     * Key: 部门路径（如：苏州曼普/销售部/一组 或 苏州曼普/销售部/一组/盛宇婷）
     * Value: 该部门的统计数据
     */
    private Map<String, DepartmentStats> departmentStatsMap = new LinkedHashMap<>();

    /**
     * 获取指定部门的统计数据，如果不存在则创建
     */
    public DepartmentStats getDepartmentStats(String departmentPath) {
        return departmentStatsMap.computeIfAbsent(departmentPath, k -> new DepartmentStats());
    }

    /**
     * 单个部门的统计数据
     */
    @Data
    public static class DepartmentStats {
        // ========== 基础统计（当日） ==========
        /**
         * 总承接数（当日）- 进粉数（排除"由管理员XXX分配"）
         */
        private int totalAcceptCount = 0;

        /**
         * 总成单数（当日）
         */
        private int totalOrderCount = 0;

        /**
         * 及时单数（当日）
         */
        private int timelyOrderCount = 0;

        /**
         * 非及时单数（当日）
         */
        private int nonTimelyOrderCount = 0;

        /**
         * "由管理员XXX分配"
         * */
        private int managerAcceptCount = 0;

        // ========== 新增：家长/学生出单率统计（当日） ==========
        /**
         * 家长出单数（当日成交）- 满足Q列=当日 AND T列=已成交及时单9元+
         */
        private int parentDailyOrderCount = 0;

        /**
         * 家长总数（当日进粉）- 用于出单率分母
         */
        private int parentDailyCount = 0;

        /**
         * 学生出单数（当日成交）- 满足Q列=当日 AND T列=已成交及时单9元+
         */
        private int studentDailyOrderCount = 0;

        /**
         * 学生总数（当日进粉）- 用于出单率分母
         */
        private int studentDailyCount = 0;
    }
}
