廖井涛
2025-11-17 fcbce36f8734813b13c8f9c5b26b4bd192274534
north-glass-erp/src/main/resources/mapper/sd/OrderProcessDetailMapper.xml
@@ -6,7 +6,7 @@
    <insert id="insertOrderProcessDetail" >
        insert into
            order_process_detail(
            sd.order_process_detail(
                order_id,
                order_number,
                technology_number,
@@ -71,10 +71,35 @@
    <!--查询筛选后唯一的流程卡号-->
    <select id="filterOrderProcess">
        select id,process,order_number,technology_number
      select a.* from( select id as id,process,order_number,technology_number,b.nickname,
                            case b.nickname when '' then 1
                            when null then 1
                            when 'stepC' then 2
                            when 'stepA' then 3
                            when 'stepD' then 4
                            when 'stepB' then 4
                     end as sort
        from order_process_detail
        left join (select DISTINCT basic_name,nickname from basic_data where basic_category = 'process') as b
        on b.basic_name = process
        where order_id = #{orderId}
        group by process
        group by process) as a
        left join (SELECT max(count) as count,process from (SELECT count(opd1.id) as count,opd.process
                                                    from order_process_detail as opd
                                                             LEFT JOIN (SELECT id,process_id,order_number,technology_number
                                                                        from order_process_detail
                                                                        where order_id = #{orderId}) as opd1
                                                                       on opd.process_id = opd1.process_id
                                                                           and opd.order_number = opd1.order_number
                                                                           and opd.technology_number = opd1.technology_number
                                                                           and opd.id>=opd1.id
                                                    where opd.order_id =#{orderId}
                                                    group by opd.id) as a
                    GROUP BY process)   as sort1
        on sort1.process = a.process
        order by sort,sort1.count,id
    </select>
@@ -93,19 +118,191 @@
    <select id="getGlassLRow">
        select
             max(a.technology_number) as rowCount,
             RowNum
        from order_process_detail as a
             RowNum,
             a.order_number,
             a.process_id
        from pp.flow_card as a
        left join
            (select min((@i:=@i+1)) AS RowNum,c.*
             from sd.order_glass_detail as c,
             from pp.flow_card  as c,
                  (SELECT @i:=-1) as d
             where order_id = #{orderId}
             GROUP BY order_number
             GROUP BY order_number,process_id
             ) as b
        on b.order_number = a.order_number
        on b.id = a.id
        where a.order_id = #{orderId}
        group by a.order_number
        group by a.order_number,a.process_id
        order by a.process_id,a.order_number
    </select>
    <select id="getProcessGlassLRow">
        select
            max(a.technology_number) as rowCount,
            RowNum
        from pp.flow_card as a
                 left join
             (select min((@i:=@i+1)) AS RowNum,c.*
              from pp.flow_card  as c,
                   (SELECT @i:=-1) as d
              where order_id = #{orderId}
              GROUP BY process_id
             ) as b
             on b.id = a.id
        where a.order_id = #{orderId}
        group by a.process_id
        order by RowNum
    </select>
    <update id="insertByReportingWorkDetail">
        update sd.order_process_detail as a
        set
            a.reporting_work_num_count=
                a.reporting_work_num_count+#{reportingWorkDetail.completedQuantity},
            a.reporting_work_num =a.reporting_work_num +#{reportingWorkDetail.completedQuantity},
            a.broken_num =a.broken_num +#{reportingWorkDetail.breakageQuantity}
        where
            a.process_id = #{processId}
            and a.order_number= #{reportingWorkDetail.orderNumber}
            and a.technology_number= #{reportingWorkDetail.technologyNumber}
            and a.process=#{thisProcess}
    </update>
    <select id="filterOrderProcessCollect">
        select a.id,process,order_number,technology_number,a.order_id
        from order_process_detail as a
        left join `order` as b on a.order_id=b.order_id
        where b.create_time BETWEEN #{selectTime1} and #{selectTime2}
          and position(#{orderId} in b.order_id)
        group by process
    </select>
    <select id="getGlassLRowCollect">
        select
            max(a.technology_number) as rowCount,
            RowNum
        from order_process_detail as a
                 left join
             (select min((@i:=@i+1)) AS RowNum,c.*
              from sd.order_glass_detail as c
                   left join sd.`order` o2 on c.order_id = o2.order_id,
                   (SELECT @i:=-1) as d
              where o2.create_time BETWEEN #{selectTime1} and #{selectTime2}
                and position(#{orderId} in o2.order_id)
              GROUP BY order_number
             ) as b
             on b.order_number = a.order_number
        left join sd.`order` o on a.order_id = o.order_id
        where o.create_time BETWEEN #{selectTime1} and #{selectTime2} and position(#{orderId} in o.order_id)
        group by a.order_number
    </select>
    <select id="selectNextProcess">
        select a.process from sd.order_process_detail as a,
                              (select id,process from sd.order_process_detail
                                  where process_id=#{processId}
                                    and position(technology_number in #{technologyNumber})
                                    and order_number=#{orderNumber}
                                    and process=#{thisProcess}
                                group by process) as b
        where a.id = b.id + 1
        and a.process_id=#{processId}
        and a.order_number=#{orderNumber}
        and position(a.technology_number in #{technologyNumber})
    </select>
    <select id="selectShiftQuantitySv">
        select *
        <if test="step != null and step != ''">
            ,sum(e.break) as 'breakage_quantity'
            ,Round(sum(e.break)*e.area,2) as 'breakage_area'
        </if>
        <if test="step == null || step == ''">
            ,e.break as 'breakage_quantity'
            ,Round(e.break*e.area,2) as 'breakage_area'
        </if>
        from(select CAST(concat(b.order_id,'/',a.order_number,'/',a.technology_number) as char ) as 'order_id',
               c.child_width,
               c.child_height,
               a.completed_quantity,
               a.breakage_quantity as break,
               a.order_number,
               b.reporting_work_id,
               round(c.area*a.completed_quantity,2) as finish_area,
               c.area
        from pp.reporting_work as b
        left join pp.reporting_work_detail as a
            on a.reporting_work_id = b.reporting_work_id
        left join sd.order_glass_detail as c
            on b.order_id = c.order_id
            and  c.order_number = a.order_number
            and c.technology_number = a.technology_number
        where b.reviewed_state >=0
        and b.creator_id = #{creatorId}
        and UNIX_TIMESTAMP(b.reporting_work_time) BETWEEN UNIX_TIMESTAMP(#{startDatetime}) and UNIX_TIMESTAMP(#{endDatetime})
        order by b.id desc ) as e
        <if test="step != null and step != ''">
            group by e.order_number,e.reporting_work_id
        </if>
    </select>
    <select id="getBehindProcess">
        select group_concat(process) from sd.order_process_detail as a
        where a.order_id = #{orderId}
        and a.process_id = #{processId}
        and a.order_number =#{orderNumber}
        and a.technology_number =#{technologyNumber}
        and a.id>(select id
                  from sd.order_process_detail as b
                  where b.order_id = #{orderId}
                    and b.process_id = #{processId}
                    and b.order_number =#{orderNumber}
                    and b.technology_number =#{technologyNumber}
                  and b.process = #{thisProcess}
                )
    </select>
    <select id="selectProcessCardProgressSv">
        select a.*,(b.quantity-b.termination_quantity) as '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
          <if test="orderId != null and orderId != ''">
            and a.order_id=#{orderId}
          </if>
          <if test="processId != null and processId != ''">
            and a.process_id=#{processId}
          </if>
          <if test="orderNumber != null and orderNumber != ''">
            and a.order_number=#{orderNumber}
          </if>
          <if test="technologyNumber != null and technologyNumber != ''">
            and a.technology_number=#{technologyNumber}
          </if>
          <if test="process != null and process != ''">
            and a.process=#{process}
          </if>
    </select>
    <select id="selectProcessSort">
        select a.process,
               ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS sort,
               ifnull(b.nickname,"") as recombination
        from sd.order_process_detail as a
        inner join sd.basic_data as b
                on a.process = b.basic_name and b.basic_category = 'process'
                where a.order_id = #{orderId}
                and a.process_id = #{processId}
                and a.order_number =#{orderNumber}
                and a.technology_number =#{technologyNumber}
    </select>
</mapper>