package com.shkj.wms.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.shkj.common.core.domain.Result;
import com.shkj.wms.bo.BasRuleAddBo;
import com.shkj.wms.bo.BasRuleBo;
import com.shkj.wms.domain.BasRule;
import com.shkj.wms.vo.BasRuleVo;

import java.util.List;


/**
 * 编码规则Service接口
 *
 * @author j.liang
 * @date 2022-12-08
 */
public interface IBasRuleService extends IService<BasRule> {

    /**
     * 查询通过id
     * 查询编码规则
     *
     * @param ruleId 规则id
     * @return {@code BasRule}
     */
    BasRule queryById(Long ruleId);

    /**
     * 查询页面列表
     * 查询编码规则列表
     *
     * @param bo 薄
     * @return {@code List<BasRuleVo>}
     */
    List<BasRuleVo> queryPageList(BasRuleBo bo);

    /**
     * 插入bas bo统治
     * 新增编码规则
     *
     * @param bo 薄
     * @return {@code Result<Boolean>}
     */
    Result<Boolean> insertBasRuleByBo(BasRuleAddBo bo);

    /**
     * 修改编码规则
     *
     * @param bo 薄
     * @return {@code Boolean}
     */
    Boolean updateByBo(BasRuleAddBo bo);

    /**
     * 校验并批量删除编码规则信息
     */
    Boolean deleteWithValidById(Long id);

    /**
     * 创串行代码
     * 自动生成业务编号
     *
     * @param ruleCode       规则代码
     * @return {@code String}
     */
    String genSerialCode(String ruleCode);

    /**
     * 开关状态
     *
     * @param id     id
     * @param status status
     * @return {@code Result<Boolean>}
     */
    Result<Boolean> switchStatus(Long id, String status);
}
