智慧农业后台管理
guoshilong
2022-11-08 72b971c98c46531064d74b68fc8fe8864ed0b544
src/main/java/org/springblade/modules/process/mapper/ProcessMapper.xml
@@ -23,7 +23,7 @@
    <select id="selectProcessPage" resultMap="processResultMap">
        SELECT    DISTINCT  p.id,
        SELECT DISTINCT p.id,
        p.strain_id,
        p.land_id,
        p.sale_time,
@@ -42,10 +42,10 @@
        LEFT JOIN (SELECT mm.id,mm.machining_type FROM sys_machining mm) a ON a.id = p.parent_id
        WHERE p.is_deleted = 0
        <if test="process.farmId!=null and process.farmId!=''">
            AND (sl.farm_id = #{process.farmId} or inv.fps_id = #{process.farmId})
            AND (sl.farm_id = #{process.farmId} or (inv.fps_id = #{process.farmId} AND p.land_id IS NULL))
        </if>
        <if test="process.strainId !=null and process.strainId !=''">
            and p.strain_id = #{process.strainId}
        <if test="process.kind !=null and process.kind !=''">
            and (p.strain_id = #{process.kind} OR p.parent_id = #{process.kind})
        </if>
        GROUP BY p.id
        ORDER BY p.create_time DESC
@@ -71,16 +71,20 @@
    </update>
    <select id="statistics" resultType="java.lang.Double">
    SELECT SUM(p.process_num) AS sum
    FROM sys_process p
    LEFT JOIN sys_land land ON land.id = p.land_id
    WHERE 1=1 AND p.is_deleted = 0
    <if test="year!=null and year!=''">
        and YEAR ( p.sale_time ) = #{year}
    </if>
    <if test="farmId!=null and farmId!=''">
        and land.farm_id = #{farmId}
    </if>
        SELECT SUM(a.process_num)as sum FROM
        (
        SELECT DISTINCT p.process_num
        FROM sys_process p
        LEFT JOIN sys_land land ON land.id = p.land_id
        LEFT JOIN sys_process_inv inv ON inv.product_id = p.process_id
        WHERE 1=1 AND p.is_deleted = 0
        <if test="year!=null and year!=''">
            and YEAR ( p.sale_time ) = #{year}
        </if>
        <if test="farmId!=null and farmId!=''">
            and (land.farm_id = #{farmId} or (inv.fps_id = #{farmId} AND p.land_id IS NULL))
        </if>
        ) a
    </select>
    <select id="statisticsMonth" resultType="java.util.Map">
        SELECT
@@ -164,17 +168,24 @@
        x.d &lt;= y.last
        AND ADDDATE( y.FIRST, x.d - 1 ) &lt;= CURDATE( )
        ) AS lefttable
        LEFT JOIN (
        SELECT
        IFNULL( sum( process.process_num ), 0 ) AS m,
        DATE_FORMAT( process.sale_time, '%Y-%c-%d' ) AS gptime
        FROM
        sys_process process
        left join sys_land sl on sl.id = process.land_id
        WHERE DATE_FORMAT( process.sale_time, '%Y-%m' ) = #{year}
        and sl.farm_id = #{farmId}
        GROUP BY
        gptime
        LEFT JOIN
        (
            SELECT
                IFNULL( sum( middle.process_num ), 0 ) AS m,
              middle.gptime
          FROM
          (
                SELECT DISTINCT
                    process.process_num,
                    DATE_FORMAT( process.sale_time, '%Y-%c-%d' ) AS gptime
                 FROM
                    sys_process process
                left join sys_land sl on sl.id = process.land_id
                LEFT JOIN sys_process_inv inv ON inv.product_id = process.process_id
                WHERE
                    DATE_FORMAT( process.sale_time, '%Y-%m' ) = #{year}
                    and (sl.farm_id = #{farmId} OR ( inv.fps_id =  #{farmId} AND process.land_id IS NULL ))
          )middle GROUP BY middle.gptime
        ) AS righttable ON DATE_FORMAT( lefttable.date, '%Y-%c-%d' ) = righttable.gptime
        ORDER BY time
@@ -198,11 +209,18 @@
                ) m
                left join
                (
                    select month(p.sale_time) a,sum(p.process_num) b from sys_process p
                    left join sys_land sl on sl.id = p.land_id
                    where  year(p.sale_time) = #{year}
                    and sl.farm_id = #{farmId}
                    GROUP BY month(p.sale_time)
                    SELECT middle.a,SUM(middle.process_num) b FROM
                         (
                            select DISTINCT
                                month(p.sale_time) a,
                                p.process_num
                            from sys_process p
                            left join sys_land sl on sl.id = p.land_id
                            LEFT JOIN sys_process_inv inv ON inv.product_id = p.process_id
                            where
                                year(p.sale_time) = #{year}
                                and (sl.farm_id = #{farmId} OR ( inv.fps_id =  #{farmId} AND p.land_id IS NULL ))
                        ) middle GROUP BY middle.a
                ) n
            on m.id = n.a
            order by id
@@ -226,12 +244,19 @@
        ) as a
        LEFT JOIN
        (
        SELECT HOUR(process.sale_time) AS order_hour, SUM(process.process_num) AS num from sys_process process
        left join sys_land sl on sl.id = process.land_id
        WHERE process.sale_time >= str_to_date(concat(#{year},' 00:00:00'),'%Y-%m-%d %T')
        AND process.sale_time &lt;= str_to_date(concat(#{year},' 23:59:59'),'%Y-%m-%d %T')
        and sl.farm_id = #{farmId}
        GROUP BY order_hour
        SELECT middle.order_hour,SUM(middle.process_num) num FROM
            (
                SELECT DISTINCT
                    HOUR(process.sale_time) AS order_hour,
                    process.process_num
                from sys_process process
                left join sys_land sl on sl.id = process.land_id
                LEFT JOIN sys_process_inv inv ON inv.product_id = process.process_id
                WHERE
                    process.sale_time >= str_to_date(concat(#{year},' 00:00:00'),'%Y-%m-%d %T')
                    AND process.sale_time &lt;= str_to_date(concat(#{year},' 23:59:59'),'%Y-%m-%d %T')
                    and (sl.farm_id = #{farmId} OR ( inv.fps_id =  #{farmId} AND process.land_id IS NULL ))
            ) middle GROUP BY middle.order_hour
        ) b ON a.order_hour=b.order_hour
        ORDER BY a.order_hour
    </select>