廖井涛
2024-05-09 ad03e69a942f88e8c7d0c4002532a6ec18360f4e
north-glass-erp/src/main/resources/mapper/pp/Report.xml
@@ -66,6 +66,26 @@
    </resultMap>
    <resultMap id="reportMap" type="com.example.erp.entity.pp.Report">
        <result column="process_id" property="processId"/>
        <result column="customer_name" property="customerName"/>
        <result column="project" property="project"/>
        <result column="order_id" property="orderId"/>
        <result column="batch" property="batch"/>
        <result column="shape" property="shape"/>
        <result column="order_number" property="orderNumber"/>
        <result column="technology_number" property="technologyNumber"/>
        <result column="process" property="technologyFlow"/>
        <result column="quantity" property="orderNum"/>
        <result column="child_width" property="childWidth"/>
        <result column="child_height" property="childHeight"/>
        <result column="stockNum" property="stockNum"/>
        <result column="stockArea" property="stockArea"/>
        <result column="product_name" property="productName"/>
        <result column="bend_radius" property="bendRadius"/>
    </resultMap>
<!--    流程卡进度-->
    <select id="processCardProgressMp">
        select
@@ -160,4 +180,188 @@
        order by dd.id desc
    </select>
    <select id="workInProgressMp">
        select #{selectProcesses} as thisProcess,
               fc.process_id,
               o.customer_name,
               o.project,
               o.order_id,
               o.batch,
               od.shape,
               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
        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 = 1
              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 LENGTH(fc.process_id) = 14
          and odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count -
              odpd.broken_num != 0
          and odpd.process = #{selectProcesses} and o.create_time between #{selectTime1} and #{selectTime2}
          and position(#{orderId} in od.order_id) and position(#{inputProject} in o.project)
        group by fc.process_id, fc.order_number, fc.technology_number
        order by fc.process_id, fc.order_number, fc.technology_number
    </select>
    <!--
    <if test="Report.processId != null and Report.processId != ''">
            and fc.process_id regexp #{Report.processId}
        </if>
        <if test="Report.customerName != null and Report.customerName != ''">
            and o.customer_name regexp #{Report.customerName}
        </if>
        <if test="Report.project != null and Report.project != ''">
            and o.project regexp #{Report.project}
        </if>
        <if test="Report.batch != null and Report.batch != ''">
            and o.batch regexp #{Report.batch}
        </if>
        <if test="Report.shape != null and Report.shape != ''">
            and od.shape regexp #{Report.shape}
        </if>
    -->
<!--     <select id="getWorkInProgressTotal">-->
<!--        select CEILING(count(fc.id) / #{pageSize}) as 'pageTotal',-->
<!--               count(distinct fc.id)               as 'total'-->
<!--        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 = 1-->
<!--              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 LENGTH(fc.process_id) = 14-->
<!--          and odpds.reporting_work_num_count + ifnull(c.patchNumSum, 0) - odpd.reporting_work_num_count - -->
<!--              odpd.broken_num != 0-->
<!--          and odpd.process = #{selectProcesses}-->
<!--          and o.create_time between #{selectTime1} and #{selectTime2}-->
<!--          and position(#{orderId} in od.order_id)-->
<!--          and position(#{inputProject} in o.project)-->
<!--        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="processToBeCompletedMp">
        select DATE(o.create_time) as create_time,
               DATE(o.delivery_date) as delivery_date,
               o.order_id,
               fc.process_id,
               o.customer_name,
               o.project,
               o.batch,
               od.order_number,
               ogd.technology_number,
               ogd.glass_child,
               ogd.child_width,
               ogd.child_height,
               od.quantity,
               ROUND(ogd.child_width * ogd.child_height / 1000000, 2)                 as childArea,
               ROUND(ogd.child_width * ogd.child_height * od.quantity / 1000000, 2)   as actualArea,
               odpd.reporting_work_num                                                as completeNum,
               ROUND(ogd.child_width * ogd.child_height * odpd.reporting_work_num / 1000000,
                     2)                                                               as completeArea,
               od.quantity - odpd.reporting_work_num                                  as incompleteNum,
               ROUND(ogd.child_width * ogd.child_height * (od.quantity - odpd.reporting_work_num) / 1000000,
                     2)                                                               as incompleteArea,
               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` as o
                           on o.order_id = od.order_id
        where LENGTH(fc.process_id) = 14
          and odpd.process = #{selectProcesses}
          and o.create_time between #{selectTime1} and #{selectTime2}
          and position(#{orderId} in od.order_id)
          and position(#{inputProject} in o.project)
          and od.quantity > odpd.reporting_work_num
        group by fc.process_id, fc.order_number, fc.technology_number
        order by fc.process_id, fc.order_number, fc.technology_number
    </select>
</mapper>