chenlu
2025-07-25 a9ffa322f0cf794a7da8182e1be4ca34f5ea19b6
north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml
@@ -115,6 +115,8 @@
        <result column="product_id" property="orderDetail.productId"/>
        <result column="product_name" property="orderDetail.productName"/>
        <result column="order_id" property="orderDetail.orderId"/>
        <result column="width" property="orderDetail.edgingType"/>
        <result column="height" property="orderDetail.shape"/>
        <result column="contract_id" property="order.contractId"/>
@@ -1004,6 +1006,181 @@
        group by od.order_id,od.product_name,od.product_id
    </select>
    <select id="getSelectDeliveryPrintingMoney" resultMap="selectDeliveryDetailOrderDetail" >
        select dd.delivery_id,
               od.order_id,
               IF(#{type} = 'product_abbreviation', pt.remarks, od.product_name) as product_name,
               dd.price,
               sum(dd.area)                                                      as area,
               sum(dd.money)                                                     as money,
               sum(dd.quantity)                                                  as quantity,
               o.contract_id,
               od.width,
               od.height
        from delivery_detail dd
                 left join (select product_name,
                                   order_id,
                                   product_id,
                                   order_number,
                                   CASE
                                       WHEN height &lt; 4000 AND height >= 3660 and height>width THEN
                                           '3660&lt;H&lt;4000'
                                       WHEN height &lt; 5000 AND height >= 4000 and height>width THEN
                                           '4000&lt;H&lt;5000'
                                       WHEN height &lt; 6000 AND height >= 5000 and height>width THEN
                                           '5000&lt;H&lt;6000'
                                       WHEN height &lt; 7000 AND height >= 6000 and height>width THEN
                                           '6000&lt;H&lt;7000'
                                       WHEN height &lt; 8000 AND height >= 7000 and height>width THEN
                                           '7000&lt;H&lt;8000'
                                       WHEN height &lt; 9000 AND height >= 8000 and height>width THEN
                                           '8000&lt;H&lt;9000'
                                       WHEN height &lt; 10000 AND height >= 9000 and height>width THEN
                                           '9000&lt;H&lt;10000'
                                       WHEN height &lt; 11000 AND height >= 10000 and height>width THEN
                                           '10000&lt;H&lt;11000'
                                       WHEN height &lt; 12000 AND height >= 11000 and height>width THEN
                                           '11000&lt;H&lt;12000'
                                       ELSE
                                           ''
                                       END height,
                                   CASE
                                       WHEN width &lt; 4000 AND width >= 3660 and width>height THEN
                                           '3660&lt;H&lt;4000'
                                       WHEN width &lt; 5000 AND width >= 4000 and width>height THEN
                                           '4000&lt;H&lt;5000'
                                       WHEN width &lt; 6000 AND width >= 5000 and width>height THEN
                                           '5000&lt;H&lt;6000'
                                       WHEN width &lt; 7000 AND width >= 6000 and width>height THEN
                                           '6000&lt;H&lt;7000'
                                       WHEN width &lt; 8000 AND width >= 7000 and width>height THEN
                                           '7000&lt;H&lt;8000'
                                       WHEN width &lt; 9000 AND width >= 8000 and width>height THEN
                                           '8000&lt;H&lt;9000'
                                       WHEN width &lt; 10000 AND width >= 9000 and width>height THEN
                                           '9000&lt;H&lt;10000'
                                       WHEN width &lt; 11000 AND width >= 10000 and width>height THEN
                                           '10000&lt;H&lt;11000'
                                       WHEN width &lt; 12000 AND width >= 11000 and width>height THEN
                                           '11000&lt;H&lt;12000'
                                       ELSE
                                           ''
                                       END width
                            from order_detail) as od on dd.order_id = od.order_id and dd.order_number = od.order_number
                 left join product pt on pt.id = od.product_id
                 left join sd.`order` o on o.order_id = dd.order_id
        where dd.delivery_id like concat('%', #{deliveryId}, '%')
        group by od.order_id, od.product_name,od.width,od.height, dd.price
    </select>
    <select id="getSelectDeliveryPrintingNoMoney" resultMap="selectDeliveryDetailOrderDetail" >
        select dd.delivery_id,
               od.order_id,
               IF(#{type} = 'product_abbreviation', pt.remarks, od.product_name) as product_name,
               sum(dd.area)                                                      as area,
               sum(dd.quantity)                                                  as quantity,
               o.contract_id,
               od.width,
               od.height
        from delivery_detail dd
                 left join (select product_name,
                                   order_id,
                                   product_id,
                                   order_number,
                                   CASE
                                       WHEN height &lt; 4000 AND height >= 3660 and height>width THEN
                                           '3660&lt;H&lt;4000'
                                       WHEN height &lt; 5000 AND height >= 4000 and height>width THEN
                                           '4000&lt;H&lt;5000'
                                       WHEN height &lt; 6000 AND height >= 5000 and height>width THEN
                                           '5000&lt;H&lt;6000'
                                       WHEN height &lt; 7000 AND height >= 6000 and height>width THEN
                                           '6000&lt;H&lt;7000'
                                       WHEN height &lt; 8000 AND height >= 7000 and height>width THEN
                                           '7000&lt;H&lt;8000'
                                       WHEN height &lt; 9000 AND height >= 8000 and height>width THEN
                                           '8000&lt;H&lt;9000'
                                       WHEN height &lt; 10000 AND height >= 9000 and height>width THEN
                                           '9000&lt;H&lt;10000'
                                       WHEN height &lt; 11000 AND height >= 10000 and height>width THEN
                                           '10000&lt;H&lt;11000'
                                       WHEN height &lt; 12000 AND height >= 11000 and height>width THEN
                                           '11000&lt;H&lt;12000'
                                       ELSE
                                           ''
                                       END height,
                                   CASE
                                       WHEN width &lt; 4000 AND width >= 3660 and width>height THEN
                                           '3660&lt;H&lt;4000'
                                       WHEN width &lt; 5000 AND width >= 4000 and width>height THEN
                                           '4000&lt;H&lt;5000'
                                       WHEN width &lt; 6000 AND width >= 5000 and width>height THEN
                                           '5000&lt;H&lt;6000'
                                       WHEN width &lt; 7000 AND width >= 6000 and width>height THEN
                                           '6000&lt;H&lt;7000'
                                       WHEN width &lt; 8000 AND width >= 7000 and width>height THEN
                                           '7000&lt;H&lt;8000'
                                       WHEN width &lt; 9000 AND width >= 8000 and width>height THEN
                                           '8000&lt;H&lt;9000'
                                       WHEN width &lt; 10000 AND width >= 9000 and width>height THEN
                                           '9000&lt;H&lt;10000'
                                       WHEN width &lt; 11000 AND width >= 10000 and width>height THEN
                                           '10000&lt;H&lt;11000'
                                       WHEN width &lt; 12000 AND width >= 11000 and width>height THEN
                                           '11000&lt;H&lt;12000'
                                       ELSE
                                           ''
                                       END width
                            from order_detail) as od on dd.order_id = od.order_id and dd.order_number = od.order_number
                 left join product pt on pt.id = od.product_id
                 left join sd.`order` o on o.order_id = dd.order_id
        where dd.delivery_id like concat('%', #{deliveryId}, '%')
        group by od.order_id, od.product_name, width, height
    </select>
    <select id="getSelectDeliveryPrintingMoneySpecifications" >
        select od.order_id,
               od.width,
               od.height,
               od.product_name,
               sum(dd.area)                                                      as area,
               sum(dd.money)                                                     as money,
               sum(dd.quantity)                                                  as quantity,
               dd.price
        from delivery_detail dd
                 left join order_detail od on dd.order_id = od.order_id and dd.order_number = od.order_number
                 left join product p on od.product_id = p.id
        where delivery_id = #{deliveryId}
          and od.order_id = #{orderId}
          and od.product_id = #{productId}
        group by od.width,od.height, dd.price
    </select>
    <select id="getSelectDeliveryPrintingNoMoneySpecifications"  >
        select od.order_id,
               od.width,
               od.height,
               od.product_name,
               sum(dd.area)                                                     as area,
               sum(dd.quantity)                                                  as quantity
        from delivery_detail dd
                 left join order_detail od on dd.order_id = od.order_id and dd.order_number = od.order_number
                 left join product p on od.product_id = p.id
        where delivery_id = #{deliveryId}
          and od.order_id = #{orderId}
          and od.product_id = #{productId}
        group by od.width,od.height
    </select>
    <select id="getSelectOrderPrinting"  >
        select od.order_id,od.product_id,od.product_name,sum(od.compute_gross_area) as area,sum(od.gross_amount) as gross_amount ,sum(od.quantity) as quantity from
         order_detail od left join product p on od.product_id=p.id