package com.zd.laboratory.service;

import java.util.LinkedHashMap;
import java.util.List;

import com.zd.laboratory.domain.LabControl;
import com.zd.laboratory.domain.LabHardware;
import com.zd.laboratory.domain.vo.LabBigViewGroupVO;
import com.zd.laboratory.domain.vo.LabControlVO;
import com.zd.laboratory.domain.vo.LabRiskPlanListVO;
import com.zd.laboratory.socket.command.Symbol;

/**
 * 控制记录Service接口
 *
 * @author zd
 * @date 2021-09-07
 */
public interface ILabControlService {
    /**
     * 查询控制记录
     *
     * @param id 控制记录主键
     * @return 控制记录
     */
    public LabControl selectLabControlById(Long id);

    /**
     * 查询控制记录列表
     *
     * @param labControl 控制记录
     * @return 控制记录集合
     */
    public List<LabControlVO> selectLabControlList(LabControlVO labControl);

    /**
     * 创建一个控制记录并且报错:手动方式
     * @param hardwareVO
     * @return
     */
    public void  manualCreateLabControlAndSave(LabHardware hardwareVO, Symbol.order order , Symbol.command command);

    /**
     * 创建一个控制记录并且报错:自动
     * @param hardwareVO
     * @return
     */
    public void   autoCreateLabControlAndSave(LabHardware hardwareVO,Symbol.order order , Symbol.command command);
    /**
     * 新增控制记录
     *
     * @param labControl 控制记录
     * @return 结果
     */
    public int insertLabControl(LabControl labControl);

    /**
     * 修改控制记录
     *
     * @param labControl 控制记录
     * @return 结果
     */
    public int updateLabControl(LabControl labControl);

    /**
     * 批量删除控制记录
     *
     * @param ids 需要删除的控制记录主键集合
     * @return 结果
     */
    public int deleteLabControlByIds(Long[] ids);

    /**
     * 删除控制记录信息
     *
     * @param id 控制记录主键
     * @return 结果
     */
    public int deleteLabControlById(Long id);


    /**
     * 查询根据年倒推12个月的信息统计
     *
     * @return 控制记录集合
     */
    public LinkedHashMap <String,Object> getYearControlInfo(LabControl labControl);

    /**
     * 查询预案统计次数列表
     *
     * @return 控制记录集合
     */
    public List<LabRiskPlanListVO> getRiskPlanList(LabControlVO labControlVO);
}
