package com.sundot.airport.ledger.service;

import com.sundot.airport.ledger.dto.DeptMemberDistributionDTO;
import com.sundot.airport.ledger.dto.DeptMemberDTO;
import com.sundot.airport.ledger.dto.DeptPortraitQueryDTO;
import com.sundot.airport.ledger.dto.StationTeamStatsDTO;

import java.util.List;

/**
 * <b>功能名：</b>IDeptPortraitService<br>
 * <b>说明：</b> 部门画像Service接口 <br>
 * <b>著作权：</b> Copyright (C) 2025 SUNDOT CORPORATION<br>
 *
 * @author Claude
 */
public interface IDeptPortraitService {

    /**
     * 获取部门内所有成员列表（部门画像-团队成员）
     * <p>
     * 查询指定部门及其所有下级部门的成员信息，包括：
     * 姓名、年龄、工龄、性别、民族、政治面貌、职务、职业资格等级、开机年限、综合得分
     * </p>
     *
     * @param query 查询参数对象(deptId, startDate, endDate)
     * @return 部门成员列表
     */
    List<DeptMemberDTO> getDeptMembers(DeptPortraitQueryDTO query);

    /**
     * 获取部门成员基本情况分布（用于饼图展示）
     * <p>
     * 统计指定部门及其下级部门成员的：
     * 1. 性别分布
     * 2. 民族分布
     * 3. 政治面貌分布
     * </p>
     *
     * @param query 查询参数对象(deptId, startDate, endDate)
     * @return 成员基本情况分布数据
     */
    DeptMemberDistributionDTO getMemberDistribution(DeptPortraitQueryDTO query);

    /**
     * 获取部门成员职位情况分布（用于柱状图展示）
     * <p>
     * 统计指定部门及其下级部门成员的：
     * 1. 职业资格等级分布（等级1-等级5）
     * 2. 开机年限分布（0-3年、4-7年、8-11年、12-15年、15-18年）
     * 3. 岗位资质分布（前传、操机、人身、验证、开箱包、开机）
     * </p>
     *
     * @param query 查询参数对象(deptId, startDate, endDate)
     * @return 成员职位情况分布数据
     */
    DeptMemberDistributionDTO getPositionDistribution(DeptPortraitQueryDTO query);

    /**
     * 获取站级别下所有部门的团队画像统计
     * <p>
     * 查询指定站(STATION)下所有部门(BRIGADE)的团队成员统计信息，包括：
     * 部门名称、员工数量、党员数量、平均年龄、平均工龄、
     * 职业资格证书等级、平均升级年龄、综合得分
     * </p>
     *
     * @param query 查询参数对象(deptId=站ID, startDate, endDate)
     * @return 站下各部门的团队画像统计列表
     */
    List<StationTeamStatsDTO> getStationTeamStats(DeptPortraitQueryDTO query);

    /**
     * 获取部门下的团队画像统计
     * @param query
     * @return
     */
    StationTeamStatsDTO getTeamStats(DeptPortraitQueryDTO query);
}
