265 lines
12 KiB
XML
265 lines
12 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.zhwl.statistics.mapper.VerificationStaticsMapper">
|
|
|
|
<select id="touristSourcesStatistics" resultType="com.zhwl.statistics.domain.vo.ECharsVO">
|
|
SELECT za.`name`,
|
|
t.verification_num as `value`
|
|
FROM (SELECT LEFT
|
|
(zut.id_card, 2) short_code,
|
|
COUNT(DISTINCT ztod.id) AS verification_num
|
|
FROM zdy_ticket_order_detail ztod
|
|
LEFT JOIN zdy_ticket_order_detail_child ztodc ON ztod.id = ztodc.order_detail_id
|
|
LEFT JOIN zdy_ticket_order_item ztoi ON ztod.order_item_id = ztoi.id
|
|
LEFT JOIN zdy_user_tourist zut ON zut.id = ztod.user_tourist_id
|
|
WHERE ztod.del_flag = 0
|
|
AND ztod.payment_type = 200
|
|
AND (ztod.verification_time IS NOT NULL OR ztodc.verification_time IS NOT NULL)
|
|
AND zut.id_card IS NOT NULL
|
|
AND zut.id_card != ''
|
|
${params.dataScope}
|
|
GROUP BY LEFT(zut.id_card, 2)) t
|
|
LEFT JOIN zdy_area za ON za.short_code = t.short_code
|
|
ORDER BY t.verification_num desc
|
|
</select>
|
|
|
|
<select id="touristSumGroupByGender"
|
|
parameterType="com.zhwl.common.core.domain.BaseEntity"
|
|
resultType="com.zhwl.statistics.domain.vo.verification.ParkEntranceGenderDataVO">
|
|
SELECT IF(SUBSTR(zut.id_card, -2, 1) % 2 = 1, '1', '2') AS gender,
|
|
COUNT(DISTINCT ztod.id) AS verificationNum
|
|
FROM zdy_ticket_order_detail ztod
|
|
LEFT JOIN
|
|
zdy_ticket_order_detail_child ztodc ON ztod.id = ztodc.order_detail_id
|
|
LEFT JOIN
|
|
zdy_ticket_order_item ztoi ON ztod.order_item_id = ztoi.id
|
|
LEFT JOIN
|
|
zdy_user_tourist zut ON zut.id = ztod.user_tourist_id
|
|
WHERE ztod.del_flag = 0
|
|
AND ztod.payment_type = 200
|
|
AND (ztod.verification_time IS NOT NULL OR ztodc.verification_time IS NOT NULL)
|
|
AND zut.id_card IS NOT NULL
|
|
AND zut.id_card != ''
|
|
${params.dataScope}
|
|
GROUP BY IF(SUBSTR(zut.id_card, -2, 1) % 2 = 1, '1', '2')
|
|
</select>
|
|
|
|
<select id="touristSum"
|
|
parameterType="com.zhwl.common.core.domain.BaseEntity"
|
|
resultType="java.lang.Long">
|
|
SELECT COUNT(DISTINCT ztod.id)
|
|
FROM zdy_ticket_order_detail ztod
|
|
LEFT JOIN
|
|
zdy_ticket_order_detail_child ztodc ON ztod.id = ztodc.order_detail_id
|
|
LEFT JOIN
|
|
zdy_ticket_order_item ztoi ON ztod.order_item_id = ztoi.id
|
|
LEFT JOIN
|
|
zdy_user_tourist zut ON zut.id = ztod.user_tourist_id
|
|
<where>
|
|
ztod.del_flag = 0
|
|
AND ztod.payment_type = 200
|
|
AND (ztod.verification_time IS NOT NULL OR ztodc.verification_time IS NOT NULL)
|
|
${params.dataScope}
|
|
</where>
|
|
</select>
|
|
|
|
<select id="touristAgeSegment"
|
|
parameterType="com.zhwl.statistics.domain.dto.AgeGroupQueryDTO"
|
|
resultType="com.zhwl.statistics.domain.vo.verification.ParkEntranceAgeGroupDataVO">
|
|
SELECT
|
|
CASE
|
|
<foreach collection="ageGroupList" item="item">
|
|
WHEN TIMESTAMPDIFF(YEAR, STR_TO_DATE(SUBSTRING(zut.id_card, 7, 8), '%Y%m%d'), CURDATE())
|
|
<choose>
|
|
<when test="item.ageMin != null and item.ageMax != null">
|
|
BETWEEN #{item.ageMin} AND #{item.ageMax}
|
|
</when>
|
|
<otherwise>
|
|
<if test="item.ageMin != null">
|
|
>= #{item.ageMin}
|
|
</if>
|
|
<if test="item.ageMax != null">
|
|
<= #{item.ageMax}
|
|
</if>
|
|
</otherwise>
|
|
</choose>
|
|
THEN
|
|
#{item.value}
|
|
</foreach>
|
|
ELSE ''
|
|
END AS ageGroup,
|
|
COUNT(DISTINCT ztod.id) AS verificationNum
|
|
FROM zdy_ticket_order_detail ztod
|
|
LEFT JOIN
|
|
zdy_ticket_order_detail_child ztodc ON ztod.id = ztodc.order_detail_id
|
|
LEFT JOIN
|
|
zdy_ticket_order_item ztoi ON ztod.order_item_id = ztoi.id
|
|
LEFT JOIN
|
|
zdy_user_tourist zut ON zut.id = ztod.user_tourist_id
|
|
WHERE ztod.del_flag = 0
|
|
AND ztod.payment_type = 200
|
|
AND (ztod.verification_time IS NOT NULL OR ztodc.verification_time IS NOT NULL)
|
|
AND zut.id_card IS NOT NULL
|
|
AND zut.id_card != ''
|
|
${params.dataScope}
|
|
GROUP BY CASE
|
|
<foreach collection="ageGroupList" item="item">
|
|
WHEN TIMESTAMPDIFF(YEAR, STR_TO_DATE(SUBSTRING(zut.id_card, 7, 8), '%Y%m%d'), CURDATE())
|
|
<choose>
|
|
<when test="item.ageMin != null and item.ageMax != null">
|
|
BETWEEN #{item.ageMin} AND #{item.ageMax}
|
|
</when>
|
|
<otherwise>
|
|
<if test="item.ageMin != null">
|
|
>= #{item.ageMin}
|
|
</if>
|
|
<if test="item.ageMax != null">
|
|
<= #{item.ageMax}
|
|
</if>
|
|
</otherwise>
|
|
</choose>
|
|
THEN
|
|
#{item.value}
|
|
</foreach>
|
|
ELSE ''
|
|
END
|
|
</select>
|
|
|
|
<select id="touristCategorizeStatistics"
|
|
parameterType="com.zhwl.common.core.domain.BaseEntity"
|
|
resultType="com.zhwl.statistics.domain.vo.verification.TouristClassifyDataVO">
|
|
SELECT zt.classify,
|
|
COUNT(DISTINCT ztod.id) AS sum
|
|
FROM zdy_ticket_order_detail ztod
|
|
LEFT JOIN
|
|
zdy_ticket_order_detail_child ztodc ON ztod.id = ztodc.order_detail_id
|
|
LEFT JOIN
|
|
zdy_ticket_order_item ztoi ON ztod.order_item_id = ztoi.id
|
|
LEFT JOIN
|
|
zdy_ticket zt on zt.id = ztoi.ticket_id
|
|
<where>
|
|
ztod.del_flag = 0
|
|
AND ztod.payment_type = 200
|
|
AND (ztod.verification_time IS NOT NULL OR ztodc.verification_time IS NOT NULL)
|
|
${params.dataScope}
|
|
</where>
|
|
GROUP BY zt.classify
|
|
</select>
|
|
|
|
<select id="saleTicketCountAndSaleAmount" resultType="com.zhwl.statistics.domain.vo.verification.SaleDataVO"
|
|
parameterType="com.zhwl.statistics.domain.dto.SaleTimeDTO">
|
|
SELECT SUM(ztoi.buy_quantity) AS todaySaleNum,
|
|
SUM(ztoi.total_price) AS todaySaleAmount
|
|
FROM zdy_ticket_order zto
|
|
LEFT JOIN zdy_ticket_order_item ztoi ON zto.id = ztoi.order_id
|
|
where zto.payment_type = '200'
|
|
and zto.create_time between #{startDateTime} and #{endDateTime}
|
|
${params.dataScope}
|
|
</select>
|
|
|
|
<!--核销次数不为0 即为已核销,考虑套票和年卡情况-->
|
|
<select id="verificationOrderCount" resultType="Long"
|
|
parameterType="com.zhwl.statistics.domain.dto.SaleTimeDTO">
|
|
SELECT
|
|
COUNT( DISTINCT ztod_tmp.id )
|
|
FROM
|
|
zdy_ticket_order_detail ztod_tmp
|
|
LEFT JOIN zdy_ticket_order_detail_child ztodc_tmp ON ztodc_tmp.order_detail_id = ztod_tmp.id
|
|
LEFT JOIN zdy_ticket_order_item ztoi ON ztod_tmp.order_item_id = ztoi.id
|
|
<where>
|
|
IF( isnull( ztod_tmp.verification_time ), ztodc_tmp.verification_time, ztod_tmp.verification_time )
|
|
between #{startDateTime} and #{endDateTime}
|
|
${params.dataScope}
|
|
</where>
|
|
</select>
|
|
<select id="touristSourceStatics" resultType="com.zhwl.statistics.domain.dto.OrderSourceStaticsDTO"
|
|
parameterType="com.zhwl.statistics.domain.dto.SaleTimeDTO">
|
|
SELECT zto.order_source AS orderSource,
|
|
SUM(ztoi.buy_quantity) AS buyQuantity
|
|
FROM zdy_ticket_order_item ztoi
|
|
left join zdy_ticket_order zto on zto.id = ztoi.order_id
|
|
where zto.payment_type = '200'
|
|
and zto.create_time between #{startDateTime} and #{endDateTime}
|
|
${params.dataScope}
|
|
GROUP BY zto.order_source
|
|
</select>
|
|
<select id="checkPointVerificationStatics"
|
|
parameterType="com.zhwl.statistics.domain.dto.SaleTimeDTO"
|
|
resultType="com.zhwl.statistics.domain.vo.ECharsVO">
|
|
SELECT ifnull(SUM(ztovh.verification_num), 0) AS `value`,
|
|
zcp.point_name as `name`,
|
|
zcp.id
|
|
FROM zdy_ticket_order_verification_history ztovh
|
|
LEFT JOIN zdy_check_point_device zcpd ON zcpd.device_sn = ztovh.serial_no
|
|
LEFT JOIN zdy_check_point zcp ON zcpd.check_point_id = zcp.id
|
|
WHERE ztovh.serial_no IS NOT NULL
|
|
and ztovh.create_time between #{startDateTime} and #{endDateTime}
|
|
${params.dataScope}
|
|
GROUP BY zcp.id
|
|
</select>
|
|
|
|
<select id="todayTicketVerificationStatics"
|
|
resultType="com.zhwl.statistics.domain.vo.verification.SaleVerificationVo"
|
|
parameterType="com.zhwl.statistics.domain.dto.SaleTimeDTO">
|
|
SELECT
|
|
COUNT( DISTINCT ztod_tmp.id ) as verificationNum,
|
|
ztod_tmp.ticket_id as ticketId,
|
|
zt.name as ticketName
|
|
FROM
|
|
zdy_ticket_order_detail ztod_tmp
|
|
LEFT JOIN zdy_ticket_order_detail_child ztodc_tmp ON ztodc_tmp.order_detail_id = ztod_tmp.id
|
|
LEFT JOIN zdy_ticket_order_item ztoi ON ztod_tmp.order_item_id = ztoi.id
|
|
LEFT JOIN zdy_ticket zt ON zt.id = ztod_tmp.ticket_id
|
|
<where>
|
|
IF( isnull( ztod_tmp.verification_time ), ztodc_tmp.verification_time, ztod_tmp.verification_time )
|
|
between #{startDateTime} and #{endDateTime}
|
|
${params.dataScope}
|
|
</where>
|
|
GROUP BY ztod_tmp.ticket_id
|
|
</select>
|
|
<select id="todayTicketSaleStatics" resultType="com.zhwl.statistics.domain.vo.verification.SaleVerificationVo"
|
|
parameterType="com.zhwl.statistics.domain.dto.SaleTimeDTO">
|
|
SELECT ztoi.ticket_id as ticketId,
|
|
zt.name as ticketName,
|
|
SUM(ztoi.buy_quantity) AS buyQuantity
|
|
FROM zdy_ticket_order zto
|
|
LEFT JOIN zdy_ticket_order_item ztoi ON zto.id = ztoi.order_id
|
|
LEFT JOIN zdy_ticket zt ON zt.id = ztoi.ticket_id
|
|
where zto.payment_type = '200'
|
|
and zto.create_time between #{startDateTime} and #{endDateTime}
|
|
${params.dataScope}
|
|
group by ztoi.ticket_id
|
|
</select>
|
|
<select id="todayOtaSaleStatics" resultType="com.zhwl.statistics.domain.vo.verification.OtaSaleDataVO">
|
|
SELECT
|
|
zto.order_source AS orderSource,
|
|
SUM( ztoi.buy_quantity ) AS buyQuantity
|
|
FROM
|
|
zdy_ticket_order zto
|
|
LEFT JOIN zdy_ticket_order_item ztoi ON zto.id = ztoi.order_id
|
|
where
|
|
zto.payment_type = '200'
|
|
and zto.create_time between #{saleTimeDTO.startDateTime} and #{saleTimeDTO.endDateTime}
|
|
and zto.order_source in
|
|
<foreach item="otaOrderSource" collection="otaOrderSourceList" open="(" separator="," close=")">
|
|
#{otaOrderSource}
|
|
</foreach>
|
|
${saleTimeDTO.params.dataScope}
|
|
group by
|
|
zto.order_source
|
|
</select>
|
|
<select id="todayTimeVerificationStatics"
|
|
parameterType="com.zhwl.statistics.domain.dto.SaleTimeDTO"
|
|
resultType="com.zhwl.statistics.domain.vo.verification.ParkEntranceDataVO">
|
|
SELECT HOUR(ztovh.create_time) as hourValue,
|
|
ifnull(SUM(ztovh.verification_num), 0) as verificationNum
|
|
FROM zdy_ticket_order_verification_history ztovh
|
|
where ztovh.create_time between #{startDateTime} and #{endDateTime}
|
|
${params.dataScope}
|
|
group by HOUR(ztovh.create_time)
|
|
</select>
|
|
|
|
</mapper>
|