/**
 * @description: 交通安全-总览
 */
import { http } from '@/utils/http/axios';
import type { QueryPageResponse } from '@/types/basic-query';

export interface QueryPageParams {
  pageNumber: number;
  pageSize: number;
}

/**
 * @description: 违规行为统计
 */
export interface QueryViolationStatisticsOverviewRes {
  vehicleViolationCount: number; // 当月车辆违规数
  violationNoticeCount: number; // 当月违规通知数
  trafficAccidentCount: number; // 当月交通事故数
}
export const getViolationStatisticsOverview = () => {
  return http.request<QueryViolationStatisticsOverviewRes>({
    url: '/overview/queryViolationStatisticsOverview',
    method: 'get',
  });
};

/**
 * @description: 添加当月车辆违规数
 */
export interface AddVehicleViolationCountParams {
  id?: number;
  violateCount?: number; // 当月车辆违规数
  createdBy?: number; // 创建人
  createdAt?: string; // 创建时间
  updatedAt?: string; // 更新时间
  isDeleted?: number; // 0-未删除，大于0(时间戳)-已删除
}
export const addVehicleViolationCount = (params: AddVehicleViolationCountParams) => {
  return http.request({
    url: '/overview/saveTrafficViolationDisplay',
    method: 'post',
    params,
  });
};

/**
 * @description: 交通管理规定与通知
 */
export interface QueryRuleNoticeInfoListOverviewRes {
  id: number; // 自增主键
  managementType: number; // 管理类型：1-管理规定，2-管理通知
  name: string; // 名称或标题
  content: string; // 通知内容
  attachment: string; // 附件
  effectState: number; // 生效状态：0-未生效，1-生效
  isPush: number; // 是否推送：0-不推送 1-推送
  pushTime: string; // 发布时间
  userGroupList: string; // 用户分组列表
  createdBy: number; // 创建人
  remark: string; // 备注
  createdAt: string; // 创建时间
  updatedAt: string; // 更新时间
  isDeleted: number; // 0-未删除，大于0(时间戳)-已删除
  creatName: string; // 创建人姓名
}
export const getRuleNoticeInfoListOverview = () => {
  return http.request<QueryRuleNoticeInfoListOverviewRes[]>({
    url: '/overview/queryRuleNoticeInfoListOverview',
    method: 'get',
  });
};

/**
 * @description: 本月车辆违规记录
 */
export interface QueryTrafficViolationOverviewPageRes {
  id: number; // 自增主键
  createSource: number; // 创建来源：1-人工创建 2-外部获取
  carNumber: string; // 车牌
  violateBy: number; // 违规人
  violateType: number; // 违规类型：1-超速 2-逆行 3-违规停车
  speed: number; // 车速
  violateLocation: string; // 违规地点
  captureTime: string; // 抓拍时间
  capturePhotos: string; // 抓拍照片
  createdBy: number; // 创建人
  remark: string; // 备注
  isNotice: number; // 是否通知：0-未通知 1-已通知
  noticeTime: string; // 通知时间
  noticeType: number; // 创建来源：1-手动通知 2-自动通知
  speedLimit: number; // 限制车速
  createdAt: string; // 创建时间
  updatedAt: string; // 更新时间
  isDeleted: number; // 0-未删除，大于0(时间戳)-已删除
  creatName: string; // 创建人姓名
  violateName: string; // 违规人姓名
  deptName: string; // 所属部门
  staffNo: string; // 工号
}
export const getTrafficViolationOverview = (params: QueryPageParams) => {
  return http.request<QueryPageResponse<QueryTrafficViolationOverviewPageRes>>({
    url: '/overview/queryTrafficViolationOverviewPage',
    method: 'post',
    params,
  });
};

/**
 * @description: 本月交通事故记录
 */
export interface QueryTrafficAccidentRecordOverviewPageRes {
  id: number; // 自增主键
  accidentLocation: string; // 事故地点
  accidentTime: string; // 事故时间
  accidentDescription: string; // 事故描述
  accidentImages: string; // 事故图片
  remark: string; // 备注
  createdById: number; // 创建人id
  createdByName: string; // 创建人姓名
  createdAt: string; // 创建时间
  updatedAt: string; // 更新时间
  isDeleted: number; // 0-未删除，大于0(时间戳)-已删除
}
export const getTrafficAccidentRecordOverview = (params: QueryPageParams) => {
  return http.request<QueryPageResponse<QueryTrafficAccidentRecordOverviewPageRes>>({
    url: '/overview/queryTrafficAccidentRecordOverview',
    method: 'post',
    params,
  });
};
