<?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="cn.wise.sc.cement.business.mapper.DataStatisticsMapper">

    <select id="countTeamByTime" resultType="cn.wise.sc.cement.business.model.vo.DataStatisticsVo">
        SELECT DATE_FORMAT(sd.create_time,'%Y-%m') as name, count(sd.id) as value
        FROM sample_distribution sd
        where sd.finish_time is not null
        <if test="params.startDate != null and params.startDate != ''">
            and DATE(sd.create_time) &gt;= #{params.startDate}
        </if>
        <if test="params.endDate != null and params.endDate != ''">
            and DATE(sd.create_time) &lt;= #{params.endDate}
        </if>
        group by name
    </select>

    <select id="countTeamByOrigin" resultType="cn.wise.sc.cement.business.model.vo.DataStatisticsVo">
        SELECT s.origin as name, count(sd.id) as value
        FROM sample_distribution sd
        left join sample s on s.id = sd.sample_id
        where sd.finish_time is not null
        <if test="params.startDate != null and params.startDate != ''">
            and DATE(sd.create_time) &gt;= #{params.startDate}
        </if>
        <if test="params.endDate != null and params.endDate != ''">
            and DATE(sd.create_time) &lt;= #{params.endDate}
        </if>
        group by s.origin
    </select>
    <select id="countItemDistributionSample"
            resultType="cn.wise.sc.cement.business.entity.ItemDistributionSample">
        SELECT COUNT(sd.team_id) as `count`,t.`name` FROM sample_distribution sd
        LEFT JOIN sample s ON sd.sample_id = s.id
        LEFT JOIN team t ON t.id = sd.team_id
        WHERE
        sd.finish_time BETWEEN #{start} AND #{end}
        <if test="origin != null and origin != '' ">
            AND s.origin = #{origin}
        </if>
        <if test="teamId != '' and teamId != null">
            AND sd.team_id = #{teamId}
        </if>
    </select>
    <select id="countItemDistribution" resultType="cn.wise.sc.cement.business.entity.ItemDistribution">
        SELECT COUNT(a.sample_id) as `count`,`key` from
        (SELECT sd.team_id,sd.sample_id,t.`name`,sd.finish_time,CONCAT(sd.team_id,',',s.origin,',',s.is_foreign) as
        `key` FROM sample_distribution sd
        LEFT JOIN sample s ON sd.sample_id = s.id
        LEFT JOIN team t ON t.id = sd.team_id
        WHERE (sd.finish_time between #{start} and #{end})
        <if test="origins != null">
            AND s.origin in
            <foreach collection="origins" item="item" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
        <if test="itemId != null">
            AND sd.team_id = #{itemId}
        </if>
        ) a GROUP BY a.`key`
    </select>


</mapper>