package com.sunda.spmsorder.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.sunda.spmsorder.entity.MaterialPriceImport;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sunda.spmsorder.vo.MaterialPriceImportVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Component;

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

/**
 * <p>
 * 物料价格表-人工导入 Mapper 接口
 * </p>
 *
 * @author
 * @since 2024-04-27
 */
@Component
@Mapper
public interface MaterialPriceImportMapper extends BaseMapper<MaterialPriceImport> {

    @Select("<script>\n" +
            "SELECT\n" +
            "    mpi.MATERIAL_NO AS \"materialNo\",\n" +
            "    SAP.MATERIAL_ZH_DESC AS \"materialZhDesc\",\n" +
            "    SAP.MATERIAL_EN_DESC AS \"materialEnDesc\",\n" +
            "    mpi.FACTORY AS \"factory\",\n" +
            "    mpi.PRICE AS \"price\",\n" +
            "    mpi.CURRENCY AS \"currency\",\n" +
            "    mpi.PRICE_UNIT AS \"priceUnit\",\n" +
            "    mpi.START_DATE AS \"startDate\",\n" +
            "    mpi.END_DATE AS \"endDate\",\n" +
            "    mpi.CREATE_TIME AS \"createTime\",\n" +
            "    mpi.UPDATE_TIME AS \"updateTime\",\n" +
            "    mpi.CREATE_USERID AS \"createUser\",\n" +
            "    mpi.UPDATE_USERID AS \"updateUser\"\n" +
            "FROM\n" +
            "    MATERIAL_PRICE_IMPORT mpi \n" +
            "        LEFT JOIN MATERIAL_SAP SAP ON mpi.MATERIAL_NO = SAP.MATERIAL_NO\n" +
            "WHERE 1 = 1 \n" +
            "    <when test='dto.materialNo !=null and dto.materialNo != \"\" '> AND mpi.MATERIAL_NO like concat(concat('%',#{{dto.materialNo}),'%')  </when>\n" +
            "    <when test='dto.factory !=null and dto.factory != \"\" '> AND mpi.FACTORY = #{dto.factory} </when>\n" +
            "<when test='dto.materialName!=null'> AND " +
            "( " +
            " SAP.MATERIAL_ZH_DESC LIKE '%'||#{dto.materialName}||'%' \n" +
            " OR SAP.MATERIAL_EN_DESC LIKE '%'||#{dto.materialName}||'%' \n" +
            ")" +
            "</when> \n" +
            "    <when test='dto.endDate !=null '> AND TO_CHAR(mpi.END_DATE,'yyyy-MM-dd') &lt;= TO_CHAR(#{dto.endDate},'yyyy-MM-dd') </when>\n" +
            "    <when test='dto.startDate !=null  '> AND TO_CHAR(mpi.START_DATE,'yyyy-MM-dd') &gt;= TO_CHAR( #{dto.startDate},'yyyy-MM-dd') </when>\n" +
            "</script>")
    List<Map<String, Object>> selectMaterialPriceList(IPage<Map<String, Object>> iPage, @Param("dto") MaterialPriceImportVO dto);

}
