package com.njcn.csdevice.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.csdevice.param.WlRecordPageParam;
import com.njcn.csdevice.pojo.param.WlRecordParam;
import com.njcn.csdevice.pojo.po.WlRecord;
import com.njcn.csdevice.pojo.vo.RecordTreeVo;
import com.njcn.csdevice.pojo.vo.RecordVo;
import com.njcn.csharmonic.param.CommonStatisticalQueryParam;
import com.njcn.csharmonic.pojo.vo.ThdDataVO;

import java.util.List;

/**
 * <p>
 * 方案、测试项表 服务类
 * </p>
 *
 * @author xuyang
 * @since 2024-04-01
 */
public interface IWlRecordService extends IService<WlRecord> {

    /**
     * 两层树方案+测试项
     * @param
     * @return
     */
    List<RecordTreeVo> getSchemeTree();

    /**
     * 根据测试项ID查询测试项信息
     * @param testRecordId
     * @return
     */
    RecordVo.RecordItemVo getTestRecordById(String testRecordId);

    /**
     * 新增测试项
     * @param records
     * @return
     */
    void addRecord(WlRecordParam.AddRecord records);

    /**
     * 新增原始数据
     * @param wlRecord
     * @return
     */
    void addBaseData(WlRecord wlRecord);

    /**
     * 批量新增原始数据
     * @param wlRecord
     * @return
     */
    void addBaseDataList(List<WlRecord> wlRecord);

    /**
     * 修改测试项
     * @param record
     * @return
     */
    void updateTestRecord(WlRecordParam.UpdateRecord record);

    void updateRecordData(WlRecordParam.UpdateRecord record);

    /**
     * 新增或修改方案
     * @param record
     * @return
     */
    void updateSchemeRecord(WlRecordParam.UpdateRecord record);

    /**
     * 设备列表树
     * @param
     * @return
     */
    Object queryPage(WlRecordPageParam wlRecordPageParam);

    /**
     * 删除测试项或方案
     * @param
     * @return
     */
    void deleteRecord(String id);

    /**
     * 添加测试项中的设备基础数据
     * @return
     */
    void saveDataRecord(WlRecordParam.UpdateRecord record);

    /**
     * 查询测试项时间段实时数据
     * @return
     */
    List<ThdDataVO> queryCommonStatisticalByTest(CommonStatisticalQueryParam commonStatisticalQueryParam);

    /**
     * 获取装置基础数据
     * @return
     */
    WlRecord findDevBaseData(WlRecordParam.Record param);

    List<RecordVo> findDevBaseDataByLineId(WlRecordParam.lineRecord param);

    /**
     * 每日处理没有结束时间的测试基础数据
     */
    void dayDealNoEndTimeEvent(String date);

    List<WlRecord> getWlAssByWlId(String wlId);

    void deleteItem(String id);
}
