import { request } from '../request' import { ApiResponse, PaginatedResponse, QueryRequest } from '../types' // 灌溉控制相关类型 export interface IrrigationSystem { id: string name: string type: 'drip' | 'sprinkler' | 'flood' | 'micro_sprinkler' location: string landParcelId: string area: number waterSource: string pumpCapacity: number flowRate: number pressure: number status: 'active' | 'inactive' | 'maintenance' installationDate: string lastMaintenanceDate?: string nextMaintenanceDate?: string description?: string tenantId: string createdAt: string updatedAt: string } export interface IrrigationZone { id: string systemId: string name: string area: number cropType: string soilType: string waterRequirement: number currentMoisture: number targetMoisture: number status: 'active' | 'inactive' | 'irrigating' sensors: Array<{ id: string type: 'moisture' | 'temperature' | 'humidity' | 'ph' location: string currentValue: number unit: string lastReading: string }> valves: Array<{ id: string name: string status: 'open' | 'closed' flowRate: number }> createdAt: string updatedAt: string } export interface IrrigationSchedule { id: string zoneId: string name: string type: 'fixed_time' | 'sensor_based' | 'weather_based' startTime: string duration: number waterAmount: number frequency: 'daily' | 'weekly' | 'custom' daysOfWeek?: number[] startDate: string endDate?: string priority: 'low' | 'medium' | 'high' status: 'active' | 'paused' | 'completed' | 'cancelled' conditions?: { moistureThreshold?: number weatherCondition?: string temperatureRange?: { min: number max: number } } createdAt: string updatedAt: string } export interface MonitoringData { id: string zoneId: string sensorType: 'moisture' | 'temperature' | 'humidity' | 'ph' | 'flow_rate' | 'pressure' value: number unit: string timestamp: string location?: string } export interface ControlCommand { id: string systemId: string zoneId?: string command: 'start_irrigation' | 'stop_irrigation' | 'open_valve' | 'close_valve' | 'adjust_flow_rate' parameters: Record status: 'pending' | 'executing' | 'completed' | 'failed' executedAt?: string errorMessage?: string createdAt: string updatedAt: string } export const irrigationApi = { // 系统控制 getSystemList: (params: QueryRequest): Promise>> => { return request.get('/irrigation/systems', params) }, getSystemDetail: (id: string): Promise> => { return request.get(`/irrigation/systems/${id}`) }, createSystem: (data: Omit): Promise> => { return request.post('/irrigation/systems', data) }, updateSystem: (id: string, data: Partial): Promise> => { return request.put(`/irrigation/systems/${id}`, data) }, deleteSystem: (id: string): Promise> => { return request.delete(`/irrigation/systems/${id}`) }, startIrrigation: (systemId: string, zoneId?: string, duration?: number): Promise> => { return request.post(`/irrigation/systems/${systemId}/start`, { zoneId, duration }) }, stopIrrigation: (systemId: string, zoneId?: string): Promise> => { return request.post(`/irrigation/systems/${systemId}/stop`, { zoneId }) }, // 分区管理 getZoneList: (systemId: string, params: QueryRequest): Promise>> => { return request.get(`/irrigation/systems/${systemId}/zones`, params) }, getZoneDetail: (id: string): Promise> => { return request.get(`/irrigation/zones/${id}`) }, createZone: (data: Omit): Promise> => { return request.post('/irrigation/zones', data) }, updateZone: (id: string, data: Partial): Promise> => { return request.put(`/irrigation/zones/${id}`, data) }, deleteZone: (id: string): Promise> => { return request.delete(`/irrigation/zones/${id}`) }, // 监控系统 getMonitoringData: (zoneId: string, params: QueryRequest & { sensorType?: string }): Promise>> => { return request.get(`/irrigation/zones/${zoneId}/monitoring`, params) }, getRealTimeData: (zoneId: string): Promise> => { return request.get(`/irrigation/zones/${zoneId}/realtime`) }, // 调度系统 getScheduleList: (params: QueryRequest): Promise>> => { return request.get('/irrigation/schedules', params) }, getScheduleDetail: (id: string): Promise> => { return request.get(`/irrigation/schedules/${id}`) }, createSchedule: (data: Omit): Promise> => { return request.post('/irrigation/schedules', data) }, updateSchedule: (id: string, data: Partial): Promise> => { return request.put(`/irrigation/schedules/${id}`, data) }, deleteSchedule: (id: string): Promise> => { return request.delete(`/irrigation/schedules/${id}`) }, pauseSchedule: (id: string): Promise> => { return request.post(`/irrigation/schedules/${id}/pause`) }, resumeSchedule: (id: string): Promise> => { return request.post(`/irrigation/schedules/${id}/resume`) } }