chenlu
2025-07-03 b8202fa27280e1fc0ff962c874e94e625abeb7b8
north-glass-erp/src/main/resources/mapper/pp/Report.xml
@@ -169,6 +169,8 @@
               concat(c.process_id, '/', c.technology_number) as process_id,
               c.order_number,
               c.technology_number,
               b.child_width,
               b.child_height,
               c.quantity,
               e.reportWorkQuantity,
               e.reportWorkQuantityCount,
@@ -2171,55 +2173,69 @@
        select IFNULL(nickname,'') from sd.basic_data where basic_category='process' and basic_name=#{selectProcesses}
    </select>
    <select id="workInProgressOrderTotalNew" >
        select
        ifnull(count(distinct o.order_id),0)
    <select id="workInProgressMpdataList1" resultMap="workInProgressMap">
        select #{selectProcesses} as thisProcess,
               fc.process_id,
               o.customer_name,
               o.project,
               o.order_id,
               o.batch,
               od.shape,
               if(od.shape=2,JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S04')),od.bend_radius) as bend_radius,
               ogd.order_number,
               ogd.technology_number,
               ogd.process,
               od.quantity,
               ogd.child_width,
               ogd.child_height,
               odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
               odpd.broken_num as stockNum,
               ROUND(ogd.child_width * ogd.child_height *
                     (odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
                      odpd.broken_num) / 1000000, 2) as stockArea,
               od.product_name,
               od.bend_radius,
               ifnull(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')),'') AS glassNumber
        -- ,
        -- rws.teams_groups_name
        from sd.order_detail AS od
        LEFT JOIN sd.order_glass_detail AS ogd
        ON od.order_id = ogd.order_id
        AND od.order_number = ogd.order_number
        LEFT JOIN flow_card AS fc
        ON fc.order_id = ogd.order_id
        and fc.production_id = ogd.production_id
        AND fc.order_number = ogd.order_number
        AND fc.technology_number = ogd.technology_number
        left join sd.order_process_detail as odpd
        ON odpd.order_id = fc.order_id
        AND odpd.order_number = fc.order_number
        AND odpd.technology_number = fc.technology_number
        and odpd.process_id = fc.process_id
        left join sd.order_process_detail as odpds
        ON odpds.id = odpd.id - 1
        left join
        (SELECT sum(rw.rework_num) as 'patchNumSum',
        rw.process_id,
        rw.order_sort,
        rw.technology_number,
        rwk.this_process
        from rework as rw
        LEFT JOIN
        reporting_work as rwk
        on rw.reporting_work_id = rwk.reporting_work_id
        where rwk.this_process = #{selectProcesses}
        and rw.review_status >= 0
        GROUP BY rw.process_id, rw.order_sort, rw.technology_number) as c
        on c.process_id = fc.process_id
        and c.order_sort = fc.order_number
        and c.technology_number = fc.technology_number
        left join sd.`order` as o
        on o.order_id = od.order_id
        left join
        (
        select a.process_id,a.teams_groups_name,a.next_process,b.technology_number,b.order_number
        from reporting_work  as a
        left join reporting_work_detail as b on a.reporting_work_id=b.reporting_work_id
        GROUP BY a.process_id,a.teams_groups_name,a.next_process,b.order_number,b.technology_number
        ) as rws on rws.process_id=fc.process_id and rws.order_number=fc.order_number
        and  rws.technology_number=fc.technology_number and rws.next_process=#{selectProcesses}
                 LEFT JOIN sd.order_glass_detail AS ogd
                           ON od.order_id = ogd.order_id
                               AND od.order_number = ogd.order_number
                 LEFT JOIN pp.flow_card AS fc
                           ON fc.order_id = ogd.order_id
                               and fc.production_id = ogd.production_id
                               AND fc.order_number = ogd.order_number
                               AND fc.technology_number = ogd.technology_number
                 left join sd.order_process_detail as odpd
                           ON odpd.order_id = fc.order_id
                               AND odpd.order_number = fc.order_number
                               AND odpd.technology_number = fc.technology_number
                               and odpd.process_id = fc.process_id
                 left join sd.order_process_detail as odpds
                           ON odpds.id = odpd.id - 1
                 left join
             (SELECT sum(rw.rework_num) as 'patchNumSum',
                      rw.process_id,
                     rw.order_sort,
                     rw.technology_number,
                     rwk.this_process
              from pp.rework as rw
                       LEFT JOIN
                    pp.reporting_work as rwk
                   on rw.reporting_work_id = rwk.reporting_work_id
              where rwk.this_process = #{selectProcesses}
                and rw.review_status >= 0
              GROUP BY rw.process_id, rw.order_sort, rw.technology_number) as c
             on c.process_id = fc.process_id
                 and c.order_sort = fc.order_number
                 and c.technology_number = fc.technology_number
                 left join sd.`order` as o
                           on o.order_id = od.order_id
        where  o.create_order>0
        and odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
        odpd.broken_num != 0
          and odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
              odpd.broken_num != 0
        and odpd.process = #{selectProcesses}
        and position(#{orderId} in od.order_id)
        and position(#{inputProject} in o.project)
@@ -2235,23 +2251,46 @@
        <if test="workInProgressDTO.batch != null and workInProgressDTO.batch != ''">
            and o.batch regexp #{workInProgressDTO.batch}
        </if>
        <if test="workInProgressDTO.processId != null and workInProgressDTO.processId != ''">
            and fc.process_id regexp #{workInProgressDTO.processId}
        </if>
        <if test="workInProgressDTO.orderNumber != null and workInProgressDTO.orderNumber != ''">
            and ogd.order_number regexp #{workInProgressDTO.orderNumber}
        </if>
        <if test="workInProgressDTO.technologyNumber != null and workInProgressDTO.technologyNumber != ''">
            and ogd.technology_number regexp #{workInProgressDTO.technologyNumber}
        </if>
        <if test="workInProgressDTO.glassNumber != null and workInProgressDTO.glassNumber != ''">
            and ifnull(JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')),'') regexp #{workInProgressDTO.glassNumber}
        </if>
        group by fc.process_id, fc.order_number, fc.technology_number
        order by fc.process_id, fc.order_number, fc.technology_number
        limit #{offset},#{pageSize};
    </select>
    <select id="workInProgressOrderMpNew" resultMap="workInProgressMap">
    <select id="workInProgressMpdataList2" resultMap="workInProgressMap">
        select
            a.process_id,a.teams_groups_name,a.next_process,b.technology_number,b.order_number
        from pp.reporting_work  as a
                 left join pp.reporting_work_detail as b on a.reporting_work_id=b.reporting_work_id
        where a.next_process=#{selectProcesses}
        GROUP BY a.process_id,a.teams_groups_name,a.next_process,b.order_number,b.technology_number
    </select>
    <select id="workInProgressOrderMpList1" resultMap="workInProgressMap">
        select #{selectProcesses} as thisProcess,
        o.customer_name,
        o.project,
        o.order_id,
        o.batch,
        if(od.shape='' || ISNULL(od.shape),'普形',if(od.shape = 1, '普形', if(od.shape = 2, '异形', ''))) as shape,
        od.shape,
        sum(od.quantity) as quantity,
        sum(odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
        odpd.broken_num) as stockNum,
        sum(ROUND(ogd.child_width * ogd.child_height *
        (odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
        odpd.broken_num) / 1000000, 2)) as stockArea,
        od.product_name,
        rws.teams_groups_name
        od.product_name
        from sd.order_detail AS od
        LEFT JOIN sd.order_glass_detail AS ogd
@@ -2287,14 +2326,6 @@
        and c.technology_number = fc.technology_number
        left join sd.`order` as o
        on o.order_id = od.order_id
        left join
        (
        select a.process_id,a.teams_groups_name,a.next_process,b.technology_number,b.order_number
        from reporting_work  as a
        left join reporting_work_detail as b on a.reporting_work_id=b.reporting_work_id
        GROUP BY a.process_id,a.teams_groups_name,a.next_process,b.order_number,b.technology_number
        ) as rws on rws.process_id=fc.process_id and rws.order_number=fc.order_number
        and  rws.technology_number=fc.technology_number and rws.next_process=#{selectProcesses}
        where  o.create_order>0
        and odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
        odpd.broken_num != 0
@@ -2317,4 +2348,80 @@
        order by o.order_id
        limit #{offset},#{pageSize};
    </select>
    <select id="workInProgressProcessMpList1" resultMap="workInProgressMap">
        select #{selectProcesses} as thisProcess,
        o.customer_name,
        o.project,
        o.order_id,
        fc.process_id,
        o.batch,
        od.shape,
        sum(od.quantity) as quantity,
        sum(odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
        odpd.broken_num) as stockNum,
        sum(ROUND(ogd.child_width * ogd.child_height *
        (odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
        odpd.broken_num) / 1000000, 2)) as stockArea,
        od.product_name
        from sd.order_detail AS od
        LEFT JOIN sd.order_glass_detail AS ogd
        ON od.order_id = ogd.order_id
        AND od.order_number = ogd.order_number
        LEFT JOIN flow_card AS fc
        ON fc.order_id = ogd.order_id
        and fc.production_id = ogd.production_id
        AND fc.order_number = ogd.order_number
        AND fc.technology_number = ogd.technology_number
        left join sd.order_process_detail as odpd
        ON odpd.order_id = fc.order_id
        AND odpd.order_number = fc.order_number
        AND odpd.technology_number = fc.technology_number
        and odpd.process_id = fc.process_id
        left join sd.order_process_detail as odpds
        ON odpds.id = odpd.id - 1
        left join
        (SELECT sum(rw.rework_num) as 'patchNumSum',
        rw.process_id,
        rw.order_sort,
        rw.technology_number,
        rwk.this_process
        from rework as rw
        LEFT JOIN
        reporting_work as rwk
        on rw.reporting_work_id = rwk.reporting_work_id
        where rwk.this_process = #{selectProcesses}
        and rw.review_status >= 0
        GROUP BY rw.process_id, rw.order_sort, rw.technology_number) as c
        on c.process_id = fc.process_id
        and c.order_sort = fc.order_number
        and c.technology_number = fc.technology_number
        left join sd.`order` as o
        on o.order_id = od.order_id
        where  o.create_order>0
        and odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
        odpd.broken_num != 0
        and odpd.process = #{selectProcesses}
        and position(#{orderId} in od.order_id)
        and position(#{inputProject} in o.project)
        <if test="workInProgressDTO.customerName != null and workInProgressDTO.customerName != ''">
            and o.customer_name regexp #{workInProgressDTO.customerName}
        </if>
        <if test="workInProgressDTO.project != null and workInProgressDTO.project != ''">
            and o.project regexp #{workInProgressDTO.project}
        </if>
        <if test="workInProgressDTO.orderId != null and workInProgressDTO.orderId != ''">
            and o.order_id regexp #{workInProgressDTO.orderId}
        </if>
        <if test="workInProgressDTO.batch != null and workInProgressDTO.batch != ''">
            and o.batch regexp #{workInProgressDTO.batch}
        </if>
        <if test="workInProgressDTO.processId != null and workInProgressDTO.processId != ''">
            and fc.process_id regexp #{workInProgressDTO.processId}
        </if>
        group by o.order_id, fc.process_id
        order by o.order_id, fc.process_id
        limit #{offset},#{pageSize};
    </select>
</mapper>