guoyujie
9 小时以前 9ccc8bd3a53160a40cf60f14e5867f6ce9f6c58f
north-glass-erp/src/main/resources/mapper/pp/Report.xml
@@ -171,6 +171,7 @@
    <!--    流程卡进度-->
    <select id="processCardProgressMp">
        select a.product_name,
               a.building_number,
               b.glass_child,
               d.order_type,
               concat(c.process_id, '/', c.technology_number) as process_id,
@@ -833,7 +834,9 @@
        rw.this_process,
        rw.creator,
        rw.reporting_work_id,
        JSON_UNQUOTE(JSON_EXTRACT(pd.separation, '$.thickness')) AS thickness
        JSON_UNQUOTE(JSON_EXTRACT(pd.separation, '$.thickness')) AS thickness,
        ROUND(round( ogd.child_width * ogd.child_height * dd.breakage_quantity / 1000000, 2 )
        * SUBSTRING_INDEX(IFNULL(JSON_UNQUOTE(JSON_EXTRACT(pd.separation, '$.thickness')), '0'), 'mm', 1),2) AS pingfang
        FROM
        sd.ORDER AS o
        LEFT JOIN sd.order_glass_detail AS ogd ON ogd.order_id = o.order_id
@@ -1441,7 +1444,9 @@
               rw.this_process,
               rw.creator,
               rw.reporting_work_id,
               JSON_UNQUOTE(JSON_EXTRACT(pd.separation, '$.thickness')) AS thickness
               JSON_UNQUOTE(JSON_EXTRACT(pd.separation, '$.thickness')) AS thickness,
            ROUND(round( ogd.child_width * ogd.child_height * dd.breakage_quantity / 1000000, 2 )
            * SUBSTRING_INDEX(IFNULL(JSON_UNQUOTE(JSON_EXTRACT(pd.separation, '$.thickness')), '0'), 'mm', 1),2) AS pingfang
        FROM sd.ORDER AS o
                 LEFT JOIN sd.order_glass_detail AS ogd ON ogd.order_id = o.order_id
                 LEFT JOIN reporting_work AS rw ON rw.order_id = o.order_id
@@ -1839,7 +1844,7 @@
        AND rw.reviewed_state >= 0
        AND rwd.completed_quantity > 0
        AND rw.reporting_work_time &gt;= #{selectTime1}
        AND rw.reporting_work_time &lt;  #{selectTime2}
        AND rw.reporting_work_time &lt;=  #{selectTime2}
        <choose>
            <!-- 有传工序:精确匹配 -->
            <when test="selectProcesses != null and selectProcesses != ''">
@@ -1901,7 +1906,7 @@
        ) t
        WHERE 1 = 1
        <if test="teamOutputDTO.workProcessName != null and teamOutputDTO.workProcessName != ''">
            AND t.workProcessName REGEXP #{teamOutputDTO.workProcessName}
            and t.workProcessName like concat('%', #{teamOutputDTO.workProcessName}, '%')
        </if>
        HAVING 1 = 1
        <if test="teamOutputDTO.thicknessSum != null and teamOutputDTO.thicknessSum != ''">
@@ -1986,7 +1991,7 @@
        AND rw.reviewed_state >= 0
        AND rwd.completed_quantity > 0
        AND rw.reporting_work_time &gt;= #{date[0]}
        AND rw.reporting_work_time &lt;  #{date[1]}
        AND rw.reporting_work_time &lt;=  #{date[1]}
        <choose>
            <!-- 有传工序:精确匹配 -->
            <when test="process != null and process != ''">
@@ -2566,10 +2571,9 @@
        from
        (
        SELECT (od.quantity) AS quantity,
        d.numCounts + d.patchNumSum - d.numCount -d.broken_num as stockNum,
        if(d.numCounts + d.patchNumSum - d.numCount -d.broken_num - fc.termination_quantity &lt;0,0,d.numCounts + d.patchNumSum - d.numCount -d.broken_num - fc.termination_quantity) as stockNum,
        ROUND(ogd.child_width * ogd.child_height *
        (d.numCounts + d.patchNumSum - d.numCount -
        d.broken_num) / 1000000, 2) as stockArea
        (if(d.numCounts + d.patchNumSum - d.numCount -d.broken_num - fc.termination_quantity &lt;0,0,d.numCounts + d.patchNumSum - d.numCount -d.broken_num - fc.termination_quantity)) / 1000000, 2) as stockArea
        FROM
        sd.order_detail AS od
        LEFT JOIN sd.order_glass_detail AS ogd
@@ -2626,7 +2630,7 @@
        and position(#{selectProcesses} in d.process)
        left join sd.`order` as o on o.order_id=od.order_id
        where  o.create_order>0
        and d.numCounts +d.patchNumSum - d.numCount - d.broken_num != 0
        and if(d.numCounts + d.patchNumSum - d.numCount -d.broken_num - fc.termination_quantity &lt;0,0,d.numCounts + d.patchNumSum - d.numCount -d.broken_num - fc.termination_quantity) != 0
        and d.process!=SUBSTRING_INDEX(ogd.process, '->', 1)
        and position(#{selectProcesses} in d.process)
        and position(#{orderId} in od.order_id)
@@ -2721,7 +2725,9 @@
    <select id="damageReportFootSum">
        SELECT
            SUM(dd.breakage_quantity) AS breakageQuantity,
            ROUND(SUM(ogd.child_width * ogd.child_height * dd.breakage_quantity) / 1000000, 2) AS area
            ROUND(SUM(ogd.child_width * ogd.child_height * dd.breakage_quantity) / 1000000, 2) AS area,
        SUM(ROUND(round( ogd.child_width * ogd.child_height * dd.breakage_quantity / 1000000, 2 )
        * SUBSTRING_INDEX(IFNULL(JSON_UNQUOTE(JSON_EXTRACT(pd.separation, '$.thickness')), '0'), 'mm', 1),2)) AS pingfang
        FROM
            sd.ORDER AS o
                LEFT JOIN sd.order_glass_detail AS ogd ON ogd.order_id = o.order_id
@@ -2973,10 +2979,9 @@
        od.quantity,
        ogd.child_width,
        ogd.child_height,
        d.numCounts + d.patchNumSum - d.numCount -d.broken_num as stockNum,
        if(d.numCounts + d.patchNumSum - d.numCount -d.broken_num-ifnull(fc.termination_quantity,0)&lt;0,0,d.numCounts + d.patchNumSum - d.numCount -d.broken_num-ifnull(fc.termination_quantity,0)) as stockNum,
        ROUND(ogd.child_width * ogd.child_height *
        (d.numCounts + d.patchNumSum - d.numCount -
        d.broken_num) / 1000000, 2) as stockArea,
        (if(d.numCounts + d.patchNumSum - d.numCount -d.broken_num-ifnull(fc.termination_quantity,0)&lt;0,0,d.numCounts + d.patchNumSum - d.numCount -d.broken_num-ifnull(fc.termination_quantity,0))) / 1000000, 2) as stockArea,
        od.product_name,
        od.bend_radius,
        ifnull(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')),'') AS glassNumber
@@ -3035,7 +3040,7 @@
        left join sd.`order` as o on o.order_id=od.order_id
        LEFT JOIN sd.basic_data AS bd ON bd.basic_name = d.process
        where  o.create_order>0
        and d.numCounts +d.patchNumSum - d.numCount - d.broken_num != 0
        and if(d.numCounts + d.patchNumSum - d.numCount -d.broken_num-ifnull(fc.termination_quantity,0)&lt;0,0,d.numCounts + d.patchNumSum - d.numCount -d.broken_num-ifnull(fc.termination_quantity,0)) != 0
        and d.process!=SUBSTRING_INDEX(ogd.process, '->', 1)
        and position(#{orderId} in od.order_id)
        and position(#{inputProject} in o.project)
@@ -3454,8 +3459,10 @@
                 SELECT g.*
                      ,GROUP_CONCAT(g.glass_child SEPARATOR '+')  as childName
                 from( SELECT f.*,
        e.reporting_work_num_count+f.patchNumSum-f.reporting_work_num_count-f.broken_num as quantity,
        (e.reporting_work_num_count+f.patchNumSum-f.reporting_work_num_count-f.broken_num)*f.area as glassArea
        if(e.reporting_work_num_count+f.patchNumSum-f.reporting_work_num_count-f.broken_num-f.termination_quantity&lt;0,
            0,e.reporting_work_num_count+f.patchNumSum-f.reporting_work_num_count-f.broken_num-f.termination_quantity) as quantity,
        round(if(e.reporting_work_num_count+f.patchNumSum-f.reporting_work_num_count-f.broken_num-f.termination_quantity&lt;0,0,
            e.reporting_work_num_count+f.patchNumSum-f.reporting_work_num_count-f.broken_num-f.termination_quantity)*f.area/1000000,2) as glassArea
                       from (SELECT a.order_id,
                                   if(a.batch!="",CONCAT(a.project,'(',a.batch,')'),a.project) as project,
                                    C.product_id,
@@ -3466,9 +3473,10 @@
                                    d.`group` ,
                                    b.broken_num,
                                    b.id,
                                    c.area,
                                    d.child_width * d.child_height as area,
                                    d.glass_child,
                                    ifnull(cb.patchNumSum,0) as patchNumSum
                                    ifnull(cb.patchNumSum,0) as patchNumSum,
                                    fc.termination_quantity
                             FROM sd.`order` as a
                                      LEFT JOIN sd.order_process_detail as b
@@ -3514,7 +3522,7 @@
        f.technology_number ORDER BY f.process_id, f.order_number,
        f.technology_number) as g
                            <choose>
                                <when test="laminating == 'stepC' and process == '预压'">
                                <when test="laminating == 'stepB'">
                                    GROUP BY g.process_id, g.order_number, g.technology_number
                                </when>
                                <when test="laminating == 'stepC'">
@@ -3530,6 +3538,7 @@
             ) as h
        where h.quantity >0
        <choose>
            <when test="optionVal == 1">
                GROUP BY thisProcess
@@ -3549,8 +3558,8 @@
        SELECT g.*
        ,GROUP_CONCAT(g.glass_child SEPARATOR '+')  as childName
        from( SELECT f.*,
        e.reporting_work_num_count+f.patchNumSum-f.reporting_work_num_count-f.broken_num as quantity,
        (e.reporting_work_num_count+f.patchNumSum-f.reporting_work_num_count-f.broken_num)*f.area as glassArea
        if(e.reporting_work_num_count+f.patchNumSum-f.reporting_work_num_count-f.broken_num-f.termination_quantity&lt;0,0,e.reporting_work_num_count+f.patchNumSum-f.reporting_work_num_count-f.broken_num-f.termination_quantity) as quantity,
        round(if(e.reporting_work_num_count+f.patchNumSum-f.reporting_work_num_count-f.broken_num-f.termination_quantity&lt;0,0,e.reporting_work_num_count+f.patchNumSum-f.reporting_work_num_count-f.broken_num-f.termination_quantity)*f.area/1000000,2) as glassArea
        from (SELECT a.order_id,
        a.project,
        C.product_id,
@@ -3561,9 +3570,10 @@
        d.`group` ,
        b.broken_num,
        b.id,
        c.area,
        d.child_width * d.child_height as area,
        d.glass_child,
        ifnull(cb.patchNumSum,0) as patchNumSum
        ifnull(cb.patchNumSum,0) as patchNumSum,
        fc.termination_quantity
        FROM sd.`order` as a
        LEFT JOIN sd.order_process_detail as b
@@ -3605,10 +3615,11 @@
        on e.id=(f.id-1) and e.process_id = f.process_id and e.order_number = f.order_number and e.technology_number =f.technology_number
        where
        e.id is not null
        and e.reporting_work_num_count-f.reporting_work_num_count>0 group by f.process_id, f.order_number,
        and (e.reporting_work_num_count+f.patchNumSum-f.reporting_work_num_count-f.broken_num)>0 group by f.process_id, f.order_number,
        f.technology_number ORDER BY f.process_id, f.order_number,
        f.technology_number) as g
        <choose>
            <when test="laminating == 'stepC' and process == '预压'">
            <when test="laminating == 'stepB'">
                GROUP BY g.process_id, g.order_number, g.technology_number
            </when>
            <when test="laminating == 'stepC'">
@@ -3699,7 +3710,7 @@
        e.id is not null
        and (e.reporting_work_num_count+f.patchNumSum-f.reporting_work_num_count-f.broken_num)>0 ) as g
        <choose>
            <when test="laminating == 'stepC' and process == '预压'">
            <when test="laminating == 'stepB'">
                GROUP BY g.process_id, g.order_number, g.technology_number
            </when>
            <when test="laminating == 'stepC'">
@@ -3998,4 +4009,395 @@
        GROUP BY
            t.this_process
    </select>
    <select id="TeamOutputSummaryMp">
        SELECT
        t.this_process,
        t.teams_groups_name,
        t.workProcessName,
        -- 数量汇总
        SUM(t.completed_quantity) AS completed_quantity,
        -- 面积汇总
        ROUND(SUM(t.area), 2) AS area
        FROM
        (
        /* ================= 内层子查询(保持不变) ================= */
        SELECT
        rw.reporting_work_time,
        rw.this_process,
        rw.teams_groups_name,
        o.project,
        o.order_id,
        rw.process_id,
        fc.order_number,
        MAX(ogd.child_width)  AS width,
        MAX(ogd.child_height) AS height,
        od.edging_type,
        rwd.completed_quantity AS completed_quantity,
        ROUND(
        MAX(ogd.child_width) * MAX(ogd.child_height)
        * rwd.completed_quantity / 1000000,
        2
        ) AS area,
        od.product_name,
        JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')) AS code,
        rw.reviewed,
        rw.examine_time,
        rw.device_name,
        o.order_type,
        CASE
        WHEN LOCATE('step', #{laminating}) > 0
        THEN GROUP_CONCAT(ogd.glass_child SEPARATOR '+')
        ELSE MAX(ogd.glass_child)
        END AS workProcessName,
        o.batch
        FROM
        pp.reporting_work AS rw
        LEFT JOIN pp.reporting_work_detail AS rwd
        ON rwd.reporting_work_id = rw.reporting_work_id
        LEFT JOIN pp.flow_card AS fc
        ON fc.order_id = rw.order_id
        AND fc.process_id = rw.process_id
        AND fc.order_number = rwd.order_number
        AND fc.technology_number = rwd.technology_number
        LEFT JOIN sd.order_glass_detail AS ogd
        ON ogd.order_id = fc.order_id
        AND ogd.order_number = fc.order_number
        AND ogd.technology_number = fc.technology_number
        LEFT JOIN sd.order_detail AS od
        ON od.order_id = ogd.order_id
        AND od.order_number = ogd.order_number
        LEFT JOIN sd.`order` AS o
        ON o.order_id = od.order_id
        WHERE
        o.create_order > 0
        AND rw.reviewed_state >= 0
        AND rwd.completed_quantity > 0
        AND rw.reporting_work_time >= #{selectTime1}
        AND rw.reporting_work_time &lt;= #{selectTime2}
        <choose>
            <!-- 有传工序:精确匹配 -->
            <when test="selectProcesses != null and selectProcesses != ''">
                AND rw.this_process = #{selectProcesses}
            </when>
            <!-- 未传工序:不加限制,查所有) -->
            <otherwise></otherwise>
        </choose>
        <if test="teamOutputDTO.thisProcess != null and teamOutputDTO.thisProcess != ''">
            AND rw.this_process REGEXP #{teamOutputDTO.thisProcess}
        </if>
        <if test="teamOutputDTO.teamsGroupsName != null and teamOutputDTO.teamsGroupsName != ''">
            AND rw.teams_groups_name LIKE CONCAT('%', #{teamOutputDTO.teamsGroupsName}, '%')
        </if>
        <if test="teamOutputDTO.project != null and teamOutputDTO.project != ''">
            AND o.project REGEXP #{teamOutputDTO.project}
        </if>
        <if test="teamOutputDTO.processId != null and teamOutputDTO.processId != ''">
            AND rw.process_id REGEXP #{teamOutputDTO.processId}
        </if>
        <if test="teamOutputDTO.edgingType != null and teamOutputDTO.edgingType != ''">
            AND od.edging_type REGEXP #{teamOutputDTO.edgingType}
        </if>
        <if test="teamOutputDTO.deviceName != null and teamOutputDTO.deviceName != ''">
            AND rw.device_name REGEXP #{teamOutputDTO.deviceName}
        </if>
        <if test="teamOutputDTO.batch != null and teamOutputDTO.batch != ''">
            AND o.batch REGEXP #{teamOutputDTO.batch}
        </if>
        <choose>
            <when test="laminating == ''">
                GROUP BY
                rw.reporting_work_id,
                rw.process_id,
                rw.this_process,
                rw.teams_groups_name,
                rwd.order_number,
                rwd.technology_number
            </when>
            <otherwise>
                GROUP BY
                <if test="laminating == 'stepA' || laminating == 'stepC'">
                    ogd.`group`,
                </if>
                rw.reporting_work_id,
                rw.process_id,
                rw.this_process,
                rw.teams_groups_name,
                rwd.order_number
            </otherwise>
        </choose>
        ) t
        WHERE 1 = 1
        <if test="teamOutputDTO.workProcessName != null and teamOutputDTO.workProcessName != ''">
            and t.workProcessName like concat('%', #{teamOutputDTO.workProcessName}, '%')
        </if>
        GROUP BY
        t.this_process,
        t.teams_groups_name,
        t.workProcessName
        ORDER BY
        t.this_process,
        t.teams_groups_name,
        t.workProcessName
        LIMIT #{offset}, #{pageSize};
    </select>
    <select id="teamOutputSummaryPageTotal">
        select CEILING(COUNT(*) / #{pageSize}) AS pageTotal,
        COUNT(*) AS total FROM(
        SELECT
        t.this_process,
        t.teams_groups_name,
        t.workProcessName,
        -- 数量汇总
        SUM(t.completed_quantity) AS completed_quantity,
        -- 面积汇总
        ROUND(SUM(t.area), 2) AS area
        FROM
        (
        /* ================= 内层子查询(保持不变) ================= */
        SELECT
        rw.reporting_work_time,
        rw.this_process,
        rw.teams_groups_name,
        o.project,
        o.order_id,
        rw.process_id,
        fc.order_number,
        MAX(ogd.child_width)  AS width,
        MAX(ogd.child_height) AS height,
        od.edging_type,
        rwd.completed_quantity AS completed_quantity,
        ROUND(
        MAX(ogd.child_width) * MAX(ogd.child_height)
        * rwd.completed_quantity / 1000000,
        2
        ) AS area,
        od.product_name,
        JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')) AS code,
        rw.reviewed,
        rw.examine_time,
        rw.device_name,
        o.order_type,
        CASE
        WHEN LOCATE('step', #{laminating}) > 0
        THEN GROUP_CONCAT(ogd.glass_child SEPARATOR '+')
        ELSE MAX(ogd.glass_child)
        END AS workProcessName,
        o.batch
        FROM
        pp.reporting_work AS rw
        LEFT JOIN pp.reporting_work_detail AS rwd
        ON rwd.reporting_work_id = rw.reporting_work_id
        LEFT JOIN pp.flow_card AS fc
        ON fc.order_id = rw.order_id
        AND fc.process_id = rw.process_id
        AND fc.order_number = rwd.order_number
        AND fc.technology_number = rwd.technology_number
        LEFT JOIN sd.order_glass_detail AS ogd
        ON ogd.order_id = fc.order_id
        AND ogd.order_number = fc.order_number
        AND ogd.technology_number = fc.technology_number
        LEFT JOIN sd.order_detail AS od
        ON od.order_id = ogd.order_id
        AND od.order_number = ogd.order_number
        LEFT JOIN sd.`order` AS o
        ON o.order_id = od.order_id
        WHERE
        o.create_order > 0
        AND rw.reviewed_state >= 0
        AND rwd.completed_quantity > 0
        AND rw.reporting_work_time >= #{selectTime1}
        AND rw.reporting_work_time &lt;= #{selectTime2}
        <choose>
            <!-- 有传工序:精确匹配 -->
            <when test="selectProcesses != null and selectProcesses != ''">
                AND rw.this_process = #{selectProcesses}
            </when>
            <!-- 未传工序:不加限制,查所有) -->
            <otherwise></otherwise>
        </choose>
        <if test="teamOutputDTO.thisProcess != null and teamOutputDTO.thisProcess != ''">
            AND rw.this_process REGEXP #{teamOutputDTO.thisProcess}
        </if>
        <if test="teamOutputDTO.teamsGroupsName != null and teamOutputDTO.teamsGroupsName != ''">
            AND rw.teams_groups_name LIKE CONCAT('%', #{teamOutputDTO.teamsGroupsName}, '%')
        </if>
        <if test="teamOutputDTO.project != null and teamOutputDTO.project != ''">
            AND o.project REGEXP #{teamOutputDTO.project}
        </if>
        <if test="teamOutputDTO.processId != null and teamOutputDTO.processId != ''">
            AND rw.process_id REGEXP #{teamOutputDTO.processId}
        </if>
        <if test="teamOutputDTO.edgingType != null and teamOutputDTO.edgingType != ''">
            AND od.edging_type REGEXP #{teamOutputDTO.edgingType}
        </if>
        <if test="teamOutputDTO.deviceName != null and teamOutputDTO.deviceName != ''">
            AND rw.device_name REGEXP #{teamOutputDTO.deviceName}
        </if>
        <if test="teamOutputDTO.batch != null and teamOutputDTO.batch != ''">
            AND o.batch REGEXP #{teamOutputDTO.batch}
        </if>
        <choose>
            <when test="laminating == ''">
                GROUP BY
                rw.reporting_work_id,
                rw.process_id,
                rw.this_process,
                rw.teams_groups_name,
                rwd.order_number,
                rwd.technology_number
            </when>
            <otherwise>
                GROUP BY
                <if test="laminating == 'stepA' || laminating == 'stepC'">
                    ogd.`group`,
                </if>
                rw.reporting_work_id,
                rw.process_id,
                rw.this_process,
                rw.teams_groups_name,
                rwd.order_number
            </otherwise>
        </choose>
        ) t
        WHERE 1 = 1
        <if test="teamOutputDTO.workProcessName != null and teamOutputDTO.workProcessName != ''">
            and t.workProcessName like concat('%', #{teamOutputDTO.workProcessName}, '%')
        </if>
        GROUP BY
        t.this_process,
        t.teams_groups_name,
        t.workProcessName
        ORDER BY
        t.this_process,
        t.teams_groups_name,
        t.workProcessName
        ) as b
        LIMIT #{offset}, #{pageSize};
    </select>
    <select id="exportTeamOutputSummaryMp">
        SELECT
        t.this_process,
        t.teams_groups_name,
        t.workProcessName,
        -- 数量汇总
        SUM(t.completed_quantity) AS completed_quantity,
        -- 面积汇总
        ROUND(SUM(t.area), 2) AS area
        FROM
        (
        SELECT
        rw.reporting_work_time,
        rw.this_process,
        rw.teams_groups_name,
        o.project,
        o.order_id,
        rw.process_id,
        fc.order_number,
        MAX(ogd.child_width)  AS width,
        MAX(ogd.child_height) AS height,
        od.edging_type,
        rwd.completed_quantity AS completed_quantity,
        ROUND(
        MAX(ogd.child_width) * MAX(ogd.child_height)
        * rwd.completed_quantity / 1000000,
        2
        ) AS area,
        od.product_name,
        JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')) AS code,
        rw.reviewed,
        rw.examine_time,
        rw.device_name,
        o.order_type,
        CASE
        WHEN LOCATE('step', #{laminating}) > 0
        THEN GROUP_CONCAT(ogd.glass_child SEPARATOR '+')
        ELSE MAX(ogd.glass_child)
        END AS workProcessName,
        o.batch
        FROM
        pp.reporting_work AS rw
        LEFT JOIN pp.reporting_work_detail AS rwd
        ON rwd.reporting_work_id = rw.reporting_work_id
        LEFT JOIN pp.flow_card AS fc
        ON fc.order_id = rw.order_id
        AND fc.process_id = rw.process_id
        AND fc.order_number = rwd.order_number
        AND fc.technology_number = rwd.technology_number
        LEFT JOIN sd.order_glass_detail AS ogd
        ON ogd.order_id = fc.order_id
        AND ogd.order_number = fc.order_number
        AND ogd.technology_number = fc.technology_number
        LEFT JOIN sd.order_detail AS od
        ON od.order_id = ogd.order_id
        AND od.order_number = ogd.order_number
        LEFT JOIN sd.`order` AS o
        ON o.order_id = od.order_id
        WHERE
        o.create_order > 0
        AND rw.reviewed_state >= 0
        AND rwd.completed_quantity > 0
        AND rw.reporting_work_time &gt;= #{date[0]}
        AND rw.reporting_work_time &lt;=  #{date[1]}
        <choose>
            <!-- 有传工序:精确匹配 -->
            <when test="selectProcesses != null and selectProcesses != ''">
                AND rw.this_process = #{selectProcesses}
            </when>
            <!-- 未传工序:不加限制,查所有) -->
            <otherwise></otherwise>
        </choose>
        <choose>
            <when test="laminating == ''">
                GROUP BY
                rw.reporting_work_id,
                rw.process_id,
                rw.this_process,
                rw.teams_groups_name,
                rwd.order_number,
                rwd.technology_number
            </when>
            <otherwise>
                GROUP BY
                <if test="laminating == 'stepA' || laminating == 'stepC'">
                    ogd.`group`,
                </if>
                rw.reporting_work_id,
                rw.process_id,
                rw.this_process,
                rw.teams_groups_name,
                rwd.order_number
            </otherwise>
        </choose>
        ) t
        GROUP BY
        t.this_process,
        t.teams_groups_name,
        t.workProcessName
        ORDER BY
        t.this_process,
        t.teams_groups_name,
        t.workProcessName
    </select>
</mapper>