import { http } from '@/utils/http/axios';

/**
 * @description: 获取总览应急物资统计
 */
export interface SuppliesCategory {
  suppliesTypeName: string; // 物资类型名称
  categoryCount: number; // 物资数量
}
export interface QueryEmergencySuppliesStatisticsRes {
  categoryTotalCount: number; // 共计物资品类
  suppliesTotalCount: number; // 共计物资数量
  suppliesCategoryList: SuppliesCategory[];
}
export const getOverviewSupplyCount = () => {
  return http.request({
    url: '/emergencySupplies/queryEmergencySuppliesStatistics',
    method: 'get',
  });
};

/**
 * @description: 查询应急预案
 */
export interface PlanInfoList {
  count: number; // 数量
  planType: string; // 预案类型
  planDetailList: PlanDetail[] | [];
}
export interface PlanDetail {
  id?: number; // 自增主键
  planName?: string; // 预案名称
  planType?: string; // 预案类型（字典）
  eventType?: string; // 事件类型（字典）
  deptId?: number; // 制定部门id
  deptName?: string; // 制定部门名称
  status?: number; // 状态: 0-未审批，1-预案审批中，2-预案已退回，3-已公示
  approvalTemplateId?: number; // 审批模板id
  appendix?: string; // 附件
  approvalDescription?: string; // 审批描述
  createdBy?: number; // 提交人
  createdAt?: string; // 创建时间
  updatedAt?: string; // 更新时间
  isDeleted?: number; // 0-未删除，大于0(时间戳)-已删除
}
export const getOverviewEmergencyPlan = () => {
  return http.request({
    url: '/overview/queryEmergencyPlanOverview',
    method: 'get',
  });
};

/**
 * @description: 查询应急演练
 */
export interface QueryEmergencyDrillOverviewRes {
  year: number;
  drillPlanByScopeList: DrillPlanByScopeList[];
}
export interface DrillPlanByScopeList {
  drillScope: string; // 演练规模
  drillPlanCount: number; // 演练计划数量
  completedDrillCount: number; // 已完成演练数量
  drillPlanList: DrillPlanList[]; // 演练计划列表
}
export interface DrillPlanList {
  id: number; // 自增主键
  drillScope: string; // 演练规模（字典）
  drillContent: string; // 演练内容
  dueCompleteTime: string; // 计划完成时间
  responsibleDeptIdList: string; // 责任部门id列表
  responsibleDeptNameList: string; // 责任部门名称列表
  coordinateDeptIdList: string; // 配合部门id列表
  coordinateDeptNameList: string; // 配合部门名称列表
  emergencyPlanId: number; // 应急预案id
  approvalTemplateId: number; // 审批模板id
  status: number; // 状态: 1-待传脚本，2-脚本会签，3-待执行，4-待记录，5-记录待审批，6-已退回，7-已完成
  approvalDescription: string; // 审批描述
  drillTime: string; // 演练时间
  drillLocation: string; // 演练地点
  personInChargeId: number; // 演练负责人id
  drillDeptIdList: string; // 演练部门id列表
  drillDeptNameList: string; // 演练部门名称列表
  drillScript: string; // 演练脚本
  createdBy: number; // 提交人
  createdAt: string; // 创建时间
  updatedAt: string; // 更新时间
  isDeleted: number; // 0-未删除，大于0(时间戳)-已删除
}
export const getOverviewEmergencyExercise = () => {
  return http.request({
    url: '/overview/queryEmergencyDrillOverview',
    method: 'get',
  });
};

/**
 * @description: 查询应急处置
 */
export interface QueryEmergencyHandleOverviewRes {
  year: number; // 年份
  currentMonthCount: number; // 本月应急事件数量
  currentYearCount: number; // 本年应急事件数量
  handleTaskByMonthList: HandleTaskByMonthList[]; //处置任务按月份列表
  handleTaskList: HandleTaskList[]; // 处置任务列表
}
export interface HandleTaskByMonthList {
  month: number; // 月份
  count: number; // 数量
}
export interface HandleTaskList {
  id: number; // 自增主键
  eventType: string; // 事件类型（字典）
  eventLocation: string; // 事件地点
  eventName: string; // 事件名称
  emergencyPlanId: number; // 应急预案id
  startTime: string; // 启动时间
  status: number; // 状态: 1-启动中，2-已结束，3-已关闭
  completeTime: string; // 处置完成时间
  suggestion: string; // 建议
  createdAt: string; // 创建时间
  updatedAt: string; // 更新时间
  isDeleted: number; // 0-未删除，大于0(时间戳)-已删除
}
export const getOverviewEmergencyProcedure = () => {
  return http.request({
    url: '/overview/queryEmergencyHandleOverview',
    method: 'get',
  });
};

/**
 * @description: 查询本年度已完成应急演练数量
 */
export const getCompletedEmergencyDrillCountThisYear = () => {
  return http.request({
    url: '/emergencyDrill/queryCompletedEmergencyDrillCountThisYear',
    method: 'get',
  });
};

/**
 * @description: 查询安全态势应急管理统计
 */
export interface EmergencyManageInfoRes {
  emergencySuppliesCount: number; // 应急物资总数
  validityPeriodRatio: string; // 有效期内物资比例
  variousTypeSuppliesRatio: {
    suppliesTypeName: string; // 物资类型名称
    typeRatio: string; // 类型占比
  }[];
}
export const getEmergencyManageInfo = () => {
  return http.request<EmergencyManageInfoRes>({
    url: '/overview/queryEmergencyManagementStatistics',
    method: 'get',
  });
};
