ZengTao
2025-11-29 4dc1abb37aec033fdbd09d290c6f62d082ba774a
hangzhoumesParent/common/servicebase/src/main/resources/mapper/OrderMapper.xml
@@ -25,8 +25,7 @@
               a.area,
               a.quantity,
               a.create_time,
               round(ifnull(d.finishNum, 0) / a.quantity * 100) as 'percent',
                ifnull(d.finishNum, 0)
               round(ifnull(d.finishNum, 0) / a.quantity * 100) as 'percent', ifnull(d.finishNum, 0)
        from sd.`order` as a
                 LEFT JOIN (
            SELECT sum(c.reporting_work_num) as 'finishNum',order_id
@@ -38,16 +37,15 @@
        ) as d
                           on a.order_id = d.order_id
        where a.warehousing != 2 and a.warehousing >= 0
        ORDER BY  a.order_id desc
        ORDER BY a.order_id desc
    </select>
    <select id="queryOrderByFlowCardId" resultType="com.mes.order.entity.HollowOrderDTO">
        select t1.*
        from pp.flow_card t
                 inner join sd.order t1 on t.order_id = t1.order_id
        where t.process_id = #{flowCardId}
            limit 1
        where t.process_id = #{flowCardId} limit 1
    </select>
    <select id="queryFlowCardIdMaxLayerGlassInfo"  resultMap="baseMapHollowDetail">
    <select id="queryFlowCardIdMaxLayerGlassInfo" resultMap="baseMapHollowDetail">
        with temp_flow as (SELECT t.process_id,
                                  t.order_id,
                                  t.order_number,
@@ -137,7 +135,51 @@
            select min(order_id) as order_id, min(order_number) as order_number
            from pp.flow_card
            where process_id = #{flowCardId}
        )
            limit 1
        ) limit 1
    </select>
    <select id="queryLackByERP" resultType="com.mes.order.entity.ProcessCardReport">
        select a.*,
               (b.quantity - b.termination_quantity) as 'quantity',
                (b.quantity - b.termination_quantity - reporting_work_num) as 'lack_quantity'
        from order_process_detail as a
                 inner join pp.flow_card as b
                            on a.order_id = b.order_id
                                and a.process_id = b.process_id
                                and a.order_number = b.order_number
                                and a.technology_number = b.technology_number
        where termination_status = 0
          and a.process_id = #{flowCardId}
          and a.process = "中空"
          and (b.quantity - b.termination_quantity) > reporting_work_num
    </select>
    <select id="queryInterlayerByERP" resultType="com.mes.order.entity.dto.InterlayerDTO">
        WITH flow_order AS (
            SELECT ORDER_ID, ORDER_NUMBER
            FROM pp.flow_card
            WHERE process_id = #{flowCardId}
            ORDER BY  ORDER_NUMBER /* 添加适当的排序字段,确保结果确定性 */
            LIMIT 1
        ),
             product_ids AS (
                 SELECT od.PRODUCT_ID
                 FROM sd.order_detail od
                          inner JOIN flow_order fo ON od.ORDER_id = fo.ORDER_ID AND od.ORDER_NUMBER = fo.ORDER_NUMBER
             ),
             ranked AS (
                 SELECT
                     detail_type,
                     LAG(glass_sort) OVER (PARTITION BY prod_id ORDER BY sort_num) AS prev_sort,
                     LEAD(glass_sort) OVER (PARTITION BY prod_id ORDER BY sort_num) AS next_sort
                 FROM sd.product_detail
                 WHERE prod_id IN (SELECT PRODUCT_ID FROM product_ids)
             )
        SELECT
            prev_sort,
            next_sort
        FROM ranked
        where detail_type = 'Interlayer'
    </select>
</mapper>