package com.fs.hisStore.mapper;

import com.fs.hisStore.domain.FsTestTempItemScrm;
import com.fs.hisStore.param.FsTestTempItemListUParam;
import com.fs.hisStore.param.FsTestTempItemParam;
import com.fs.hisStore.vo.FsTestTempItemListUVO;
import com.fs.hisStore.vo.FsTestTempItemListVO;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 模板项目Mapper接口
 *
 * @author fs
 * @date 2023-09-04
 */
public interface FsTestTempItemScrmMapper
{
    /**
     * 查询模板项目
     *
     * @param itemId 模板项目主键
     * @return 模板项目
     */
    public FsTestTempItemScrm selectFsTestTempItemByItemId(Long itemId);

    /**
     * 查询模板项目列表
     *
     * @param fsTestTempItem 模板项目
     * @return 模板项目集合
     */
    public List<FsTestTempItemScrm> selectFsTestTempItemList(FsTestTempItemScrm fsTestTempItem);

    /**
     * 新增模板项目
     *
     * @param fsTestTempItem 模板项目
     * @return 结果
     */
    public int insertFsTestTempItem(FsTestTempItemScrm fsTestTempItem);

    /**
     * 修改模板项目
     *
     * @param fsTestTempItem 模板项目
     * @return 结果
     */
    public int updateFsTestTempItem(FsTestTempItemScrm fsTestTempItem);

    /**
     * 删除模板项目
     *
     * @param itemId 模板项目主键
     * @return 结果
     */
    public int deleteFsTestTempItemByItemId(Long itemId);

    /**
     * 批量删除模板项目
     *
     * @param itemIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteFsTestTempItemByItemIds(Long[] itemIds);
    @Select({"<script> " +
            "select ti.*,t.`name` from fs_test_temp_item ti LEFT JOIN fs_test_temp t ON t.temp_id=ti.temp_id "+
            "<where>  \n" +
            "            <if test=\"tempId != null \"> and ti.temp_id = #{tempId}</if>\n" +
            "            <if test=\"name != null \"> and t.name like concat('%', #{name}, '%')</if>\n" +
            "            <if test=\"itemType != null \"> and ti.item_type = #{itemType}</if>\n" +
            "            <if test=\"title != null  and title != ''\"> and ti.title like concat('%', #{title}, '%')</if>\n" +
            "        </where> "+
            " order by sort,item_id desc"+
            "</script>"})
    List<FsTestTempItemListVO> selectFsTestTempItemListVO(FsTestTempItemParam fsTestTempItem);
    @Select({"<script> " +
            "select  i.*  from   fs_test_temp_item i   " +
            "where 1=1  " +
            "<if test = 'maps.tempId != null     '> " +
            "and i.temp_id = #{maps.tempId} " +
            "</if>" +
            " order by i.item_type,i.sort asc "+
            "</script>"})
    List<FsTestTempItemListUVO> selectFsTestTempItemListUVO(@Param("maps")FsTestTempItemListUParam param);
}
