import { ServiceResponse } from './response'
import { ServiceRequestPage } from './pageInput'
import { PageResponse } from './pageResponse'

// 过滤条件
export interface ProtocolFilter {
  /** 设备编号 */
  keyWord?: string | null
  /** 开始时间 */
  stDate?: string | null
  /** 结束时间 */
  edDate?: string | null
  /** 反应器Id */
  equReactorId?: number | null
}


/**
 * 培养方案实体接口
 */
export interface ProtocolPageDto {
  /** 主键ID */
  id: number
  /** 培养方案名称 */
  ProtocolName: string
  /** 反应器ID */
  equReactorId: number
  /** 补料秤ID */
  equFeedingScaleId: number
  /** 培养天数 */
  days: number
  /** 初始工作体积 */
  initialWorkingVolume: number
  /** 初始工作培养基ID */
  initialWorkingMediumId: number
  /** 转种细胞体积 */
  transferCellVolume: number
  /** 转种细胞类型ID */
  transferCellTypeId: number
  /** 实验组ID */
  experimentalGroupId: number
  /** 葡萄糖补料验证 */
  glucoseFeedingVerification: boolean
  /** 备注 */
  remark: string
  /** 是否启用 */
  enabled: boolean
  /** 创建时间 */
  createdTime: string,
  /** 补料任务数量 */
  feedingTaskCount: number
}

export interface ProtocolDto {
  /** 主键ID */
  id: number
  /** 培养方案名称 */
  protocolName: string
  /** 反应器ID */
  equReactorId?: number
  /** 补料秤ID */
  equFeedingScaleId?: number  
  /** 培养天数 */
  days: number
  /** 初始工作体积 */
  initialWorkingVolume: number
  /** 初始工作培养基ID */
  initialWorkingMediumId: number
  /** 转种细胞体积 */
  transferCellVolume: number
  /** 转种细胞类型ID */
  transferCellTypeId: number
  /** 葡萄糖补料验证 */
  glucoseFeedingVerification: boolean
  /** 备注 */
  remark: string
  /** 自动葡萄糖补料规则 */
  autoGlucoseFeedingRules: AutoGlucoseFeedingRule[]
  /** 补料任务 */
  feedingTasks: FeedingTask[]
  /** 固定补料泵配置 */
  fixedFeedingPumps: FixedFeedingPump[]
}

/** 自动葡萄糖补料规则 */
export interface AutoGlucoseFeedingRule {
  /** 主键ID */
  id: number
  /** 培养方案ID */
  protocolId: number
  /** 培养开始天数 */
  cultureDayStarting: number
  /** 培养结束天数 */
  cultureDayEnding: number
  /** 下限值 */
  lowerLimit: number
  /** 补料目标值 */
  feedingTo: number
  /** 下限操作符 */
  lowerLimitOperator: string
  /** 计算模式 */
  calculationMode: number
}

/** 补料任务 */
export interface FeedingTask {
  /** 主键ID */
  id: number
  /** 培养方案ID */
  protocolId: number
  /** 补料泵编号 */
  feedingPumpNo: number
  /** 培养天数 */
  day: number
  /** 补料时间 */
  feedingTime: string
  /** 补料类型 */
  feedingType: number
  /** 补料体积百分比 */
  feedingVolumePercent: number
  /** 补料体积 */
  feedingVolume: number
}

/** 固定补料泵配置 */
export interface FixedFeedingPump {
  /** 主键ID */
  id: number
  /** 培养方案ID */
  protocolId?: number
  /** 配置ID */
  configId?: number
  /** 补料泵编号 */
  feedingPumpNo: number
  /** 物料定义袋ID */
  itemDefBagID?: number
  /** 物料定义培养基ID */
  itemDefFeedingMediumID?: number
  /** 设备泵ID */
  equPumpId?: number
  /** 补料泵名称 */
  feedingPumpName?: string
  /** 量程(g/min) */
  pumpSpeed?: number
  /** 是否是糖补料 */
  isGlucose?: boolean
}

export type ProtocolPageInput = ServiceRequestPage<ProtocolFilter>
export type ProtocolPageResponse = ServiceResponse<PageResponse<ProtocolPageDto>>;

export type ProtocolOutput = ServiceResponse<ProtocolDto>;
export type ProtocolAddInput = ProtocolDto;
export type ProtocolUpdateInput = ProtocolDto;