wms/nflg-wms-repository/src/main/resources/mapper/AdvertisementMapper.xml

48 lines
1.9 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nflg.wms.repository.mapper.AdvertisementMapper">
<select id="getByType" resultType="com.nflg.wms.repository.entity.Advertisement">
SELECT ad.*
FROM qms_advertisement ad
INNER JOIN dictionary_item di1 ON ad.type = di1.id
INNER JOIN dictionary_item di2 ON ad.position = di2.id
where di1.code = #{type} AND di2.code=#{position} and ad.enable
ORDER BY CAST(SUBSTRING(ad.version, 2) AS INTEGER) DESC
LIMIT 1
</select>
<select id="getList" resultType="com.nflg.wms.common.pojo.vo.AdvertisementListVO">
SELECT ranked.*
FROM (
SELECT ad.*,
di1.value AS "typeName",
di2.value AS "positionName",
ROW_NUMBER() OVER (
PARTITION BY ad.type, ad.position
ORDER BY CAST(SUBSTRING(ad.version, 2) AS INTEGER) DESC,
ad.create_time DESC,
ad.id DESC
) AS rn
FROM qms_advertisement ad
INNER JOIN dictionary_item di1 ON ad.type=di1.id
INNER JOIN dictionary_item di2 ON ad.position=di2.id
) ranked
WHERE ranked.rn = 1
</select>
<select id="getVersions" resultType="com.nflg.wms.common.pojo.vo.AdvertisementListVO">
SELECT ad.*,
di1.value AS "typeName",
di2.value AS "positionName"
FROM qms_advertisement ad
INNER JOIN dictionary_item di1 ON ad.type=di1.id
INNER JOIN dictionary_item di2 ON ad.position=di2.id
WHERE di1.code = #{type}
AND di2.code = #{position}
ORDER BY CAST(SUBSTRING(ad.version, 2) AS INTEGER) DESC,
ad.create_time DESC,
ad.id DESC
</select>
</mapper>