package com.sunda.spmsoversea.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.sunda.spmsoversea.dto.OverseaWerksCostQueryDTO;
import com.sunda.spmsoversea.dto.ZPosReadCostQueryDTO;
import com.sunda.spmsoversea.entity.ZPosReadCost;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 成本中心移动类型 Mapper 接口
 * </p>
 *
 * @author Hzc
 * @since 2022-12-07
 */
@Mapper
public interface ZPosReadCostMapper extends BaseMapper<ZPosReadCost> {

    @Select("<script>" +
            "SELECT OW.SPART AS \"spart\",\n" +
            "       OW.MANDT AS \"mandt\",\n" +
            "       OW.KOSTL AS \"kostl\",\n" +
            "       OW.BWART AS \"bwart\",\n" +
            "       OW.WERKS AS \"werks\",\n" +
            "       OW.LTEXT AS \"ltext\",\n" +
            "       OW.Z_SPMSBK AS \"zSpmsbk\"\n" +
            "FROM Z_POS_READ_COST  OW " +
            "WHERE 1=1 " +
            " <when test='dto.werks!=null and dto.werks != \"\"'> AND OW.WERKS = #{dto.werks}</when>" +
            " <when test='dto.kostl!=null and dto.kostl != \"\"'> AND OW.KOSTL = #{dto.kostl}</when>" +
            "<when test='dto.kostlList!=null'> AND OW.KOSTL IN \n" +
            "   <foreach item='item' index='index' collection='dto.kostlList' open='(' separator=',' close=')'>\n" +
            "       #{item} \n" +
            "   </foreach>" +
            "</when> \n" +
            " ORDER BY OW.KOSTL   " +
            "</script>")
    List<Map<String, Object>> getZPosReadCostPage(IPage page, @Param("dto") ZPosReadCostQueryDTO dto);


    @Select("<script>" +
            "SELECT OW.KOSTL AS \"kostl\",\n" +
            "       OW.WERKS AS \"werks\",\n" +
            "       OW.LTEXT AS \"ltext\"\n" +
            "FROM Z_POS_READ_COST  OW " +
            "WHERE 1=1 " +
            " <when test='dto.werks!=null and dto.werks != \"\"'> AND OW.WERKS = #{dto.werks}</when>" +
            " <when test='dto.kostl!=null and dto.kostl != \"\"'> AND OW.KOSTL = #{dto.kostl}</when>" +
            "<when test='dto.kostlList!=null'> AND OW.KOSTL IN \n" +
            "   <foreach item='item' index='index' collection='dto.kostlList' open='(' separator=',' close=')'>\n" +
            "       #{item} \n" +
            "   </foreach>" +
            "</when> \n" +
            " GROUP BY OW.KOSTL,OW.WERKS,OW.LTEXT    " +
            "</script>")
    List<Map<String, Object>> getZPosReadCost(@Param("dto") ZPosReadCostQueryDTO dto);
}
