package com.fs.sop.service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fs.common.annotation.DataSource;
import com.fs.common.enums.DataSourceType;
import com.fs.sop.domain.QwSopTempDay;
import com.fs.sop.domain.QwSopTempRules;

import java.util.Collection;
import java.util.List;
import java.util.Set;

/**
 * sop任务模板规则Service接口
 *
 * @author fs
 * @date 2025-02-06
 */
@DataSource(DataSourceType.SOP)
public interface IQwSopTempRulesService extends IService<QwSopTempRules>{
    /**
     * 查询sop任务模板规则
     *
     * @param id sop任务模板规则主键
     * @return sop任务模板规则
     */
    QwSopTempRules selectQwSopTempRulesById(String id);

    /**
     * 查询sop任务模板规则列表
     *
     * @param qwSopTempRules sop任务模板规则
     * @return sop任务模板规则集合
     */
    List<QwSopTempRules> selectQwSopTempRulesList(QwSopTempRules qwSopTempRules);

    /**
     * 新增sop任务模板规则
     *
     * @param qwSopTempRules sop任务模板规则
     * @return 结果
     */
    int insertQwSopTempRules(QwSopTempRules qwSopTempRules);

    /**
     * 修改sop任务模板规则
     *
     * @param qwSopTempRules sop任务模板规则
     * @return 结果
     */
    int updateQwSopTempRules(QwSopTempRules qwSopTempRules);

    /**
     * 批量删除sop任务模板规则
     *
     * @param ids 需要删除的sop任务模板规则主键集合
     * @return 结果
     */
    int deleteQwSopTempRulesByIds(String[] ids);

    /**
     * 删除sop任务模板规则信息
     *
     * @param id sop任务模板规则主键
     * @return 结果
     */
    int deleteQwSopTempRulesById(String id);

    void deleteByTempId(String id);

    void insertBatch(List<QwSopTempRules> rulesList);

    List<QwSopTempRules> listByTempId(String id);
    List<QwSopTempDay> listByTempIdAll(String id);

    List<QwSopTempRules> listByTempIdAndNameAndDayNum(String id, Integer dayNum);

    void deleteByIdList(List<String> ids);

    void saveList(List<QwSopTempRules> list);

    List<QwSopTempRules> listByDayId(Long id);

    void removeByIds(List<Long> id);

    void removeByDayId(Long id);

    void  updateRulesDayNumIsNull();

    List<QwSopTempRules> listById(List<Long> rulesIds);

    void updateSiFenTemp();

    List<QwSopTempRules> listByCourseId(Long courseId);

    List<QwSopTempRules> listByCourseIdAndTempId(Long courseId,String tempId);

    void removeByTempIds(Collection<String> tempIds);

    void removeByWrapper(LambdaQueryWrapper<QwSopTempRules> wrapper);

    List<QwSopTempRules> selectListByDayId(Long id);
}
