guoyujie
2025-11-24 1b804da07a72f4c93016975dac9c7183ff066509
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,21 +71,37 @@
    <!--查询筛选后唯一的流程卡号-->
    <select id="filterOrderProcess">
      select * from( select max(id) as id,process,order_number,technology_number,b.nickname,
      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
                            else 1
                     end as sort,
                    b.sort as 'sort2'
        from order_process_detail
        left join (select DISTINCT basic_name,nickname from basic_data where basic_category = 'process') as b
        left join (select DISTINCT basic_name,nickname,sort from basic_data where basic_category = 'process') as b
        on b.basic_name = process
        where order_id = #{orderId}
        group by process) as a
        order by sort,id
        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,sort2,sort1.count,id
    </select>
@@ -104,18 +120,40 @@
    <select id="getGlassLRow">
        select
             max(a.technology_number) as rowCount,
             RowNum
        from sd.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">
@@ -180,12 +218,24 @@
    </select>
    <select id="selectShiftQuantitySv">
        select * from(select CAST(concat(b.order_id,'/',a.order_number,'/',a.technology_number) as char ) as 'order_id',
        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,
               a.order_number
               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
@@ -198,7 +248,63 @@
        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
            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>