廖井涛
2025-03-28 1f97acdb370414caa5303563f6c653a70a0e542b
north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml
@@ -189,56 +189,55 @@
<!--    非第一道工序报工明细查询-->
    <select id="SelectReworlDetailMp">
        SELECT
            fc.order_number,
            ogd.glass_child,
            ogd.technology_number,
            ogd.glass_address,
            fc.quantity AS quantity_card,
            ogd.child_width,
            ogd.child_height,
        fc.order_number,
        ogd.glass_child,
        ogd.technology_number,
        ogd.glass_address,
        fc.quantity AS quantity_card,
        ogd.child_width,
        ogd.child_height,
        if(od.shape=1,'普形',if(od.shape=2,'异形','')) as shape,
            if((odpds.reporting_work_num_count + ifnull(c.patchNumSum,0) -odpd.reporting_work_num_count -odpd.broken_num ) &lt; 0,
                0,
        if((odpds.reporting_work_num_count + ifnull(c.patchNumSum,0) -odpd.reporting_work_num_count -odpd.broken_num ) &lt; 0,
        0,
        odpds.reporting_work_num_count + ifnull(c.patchNumSum,0) -odpd.reporting_work_num_count -odpd.broken_num) as quantity,
            if((odpds.reporting_work_num_count + ifnull(c.patchNumSum,0) -odpd.reporting_work_num_count -odpd.broken_num) &lt; 0,
                0,
        if((odpds.reporting_work_num_count + ifnull(c.patchNumSum,0) -odpd.reporting_work_num_count -odpd.broken_num) &lt; 0,
        0,
        odpds.reporting_work_num_count + ifnull(c.patchNumSum,0) -odpd.reporting_work_num_count -odpd.broken_num) as completedQuantity,
            odpd.reporting_work_num as completed,
            odpd.broken_num as onceBroken,
            ogd.`group`,
            if(fc.quantity -odpd.reporting_work_num = 0 ,true,false) as saveFlag, -- 判断是否已经完成,已经完成不序号和同序号数量相同才能提交
            od.other_columns,
            ogd.id as 'glassId'
        odpd.reporting_work_num as completed,
        odpd.broken_num as onceBroken,
        ogd.`group`,
        if(fc.quantity -odpd.reporting_work_num = 0 ,true,false) as saveFlag, -- 判断是否已经完成,已经完成不序号和同序号数量相同才能提交
        od.other_columns,
        ogd.id as 'glassId',IFNULL(rws.reviewed_state,0) as reviewed_state
        FROM
            sd.order_detail AS od
        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
        <if test="process == '夹胶' or (process == '打胶和粘框')">
        ON od.order_id = ogd.order_id
        AND od.order_number = ogd.order_number
        <if test="process == '夹胶'">
            AND ogd.`group` = (select `group`
                               from sd.order_glass_detail
                               where order_id = ogd.order_id
                               and order_number = ogd.order_number
                               and POSITION(technology_number in #{technologyStr})
                               limit 1)
            from sd.order_glass_detail
            where order_id = ogd.order_id
            and order_number = ogd.order_number
            and POSITION(technology_number in #{technologyStr})
            limit 1)
        </if>
        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
        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
        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
        ON  odpds.id = odpd.id-1
        left join
            (SELECT
        (SELECT
        sum(rw.rework_num) as 'patchNumSum',
        rw.process_id,rw.order_sort,rw.technology_number,
        rwk.this_process
@@ -251,16 +250,27 @@
        and rw.review_status=1
        and rw.process_id = #{processIdStr}
        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
        WHERE
            fc.process_id = #{processIdStr}
        on c.process_id = fc.process_id
        and c.order_sort = fc.order_number
        and c.technology_number = fc.technology_number
        left join (select reviewed_state as reviewed_state ,
        process_id,a.reporting_work_id,b.technology_number,b.order_number
        from reporting_work as a
        left join reporting_work_detail as b on a.reporting_work_id = b.reporting_work_id
        where this_process=#{previousProcess} and process_id= #{processIdStr}
        <if test="laminating != 'laminating'">
           AND POSITION(fc.technology_number in #{technologyStr})
            AND POSITION(b.technology_number in #{technologyStr})
        </if>
        GROUP BY b.order_number,b.technology_number
        ) as rws
        on rws.process_id = fc.process_id and rws.order_number=fc.order_number and rws.technology_number=fc.technology_number
        WHERE
        fc.process_id = #{processIdStr}
        AND odpd.process = #{process}
        <if test="laminating != 'laminating'">
            AND POSITION(fc.technology_number in #{technologyStr})
        </if>
        order by fc.order_number
    </select>
@@ -528,12 +538,10 @@
               rw.notes,
               rw.reviewed
        # (IF(rw.reviewed_state = 0, '未审核', IF(rw.reviewed_state = 1, '审核通过', '审核不通过'))) as reviewed_state
        from sd.order as o
                 left join sd.order_glass_detail as ogd on ogd.order_id = o.order_id
                 left join reporting_work as rw on rw.order_id = ogd.order_id and rw.production_id = ogd.production_id
                 left join reporting_work_detail as rwd
                           on rwd.reporting_work_id = rw.reporting_work_id and rwd.order_number = ogd.order_number and
                              rwd.technology_number = ogd.technology_number
        from
            reporting_work as rw left join reporting_work_detail as rwd on rw.reporting_work_id=rwd.reporting_work_id
            left join sd.order_glass_detail as ogd on ogd.order_id=rw.order_id and ogd.order_number=rwd.order_number and ogd.technology_number=rwd.technology_number
            left join sd.`order` as o on o.order_id=rw.order_id
        where rw.reviewed_state != 2
          and rw.reporting_work_time >= #{selectTime1}
    AND rw.reporting_work_time &lt;  #{selectTime2}
@@ -572,12 +580,9 @@
    <select id="getPageTotal">
        select CEILING(count(rw.reporting_work_id)/#{pageSize}) as 'pageTotal',
               count(distinct rw.reporting_work_id) as 'total'
             from sd.order as o
                 left join sd.order_glass_detail as ogd on ogd.order_id = o.order_id
                 left join reporting_work as rw on rw.order_id = ogd.order_id and rw.production_id = ogd.production_id
                 left join reporting_work_detail as rwd
                           on rwd.reporting_work_id = rw.reporting_work_id and rwd.order_number = ogd.order_number and
                              rwd.technology_number = ogd.technology_number
             from reporting_work as rw left join reporting_work_detail as rwd on rw.reporting_work_id=rwd.reporting_work_id
        left join sd.order_glass_detail as ogd on ogd.order_id=rw.order_id and ogd.order_number=rwd.order_number and ogd.technology_number=rwd.technology_number
        left join sd.`order` as o on o.order_id=rw.order_id
        where rw.reviewed_state != 2
          and rw.reporting_work_time >= #{selectTime1}
        AND rw.reporting_work_time &lt;  #{selectTime2} and position(#{orderId} in rw.order_id)
@@ -1027,12 +1032,9 @@
                     MAX(rw.this_worn_quantity) AS this_worn_quantity,
                     MAX(ogd.child_width) AS child_width,
                     MAX(ogd.child_height) AS child_height
                 FROM sd.order AS o
                          LEFT JOIN sd.order_glass_detail AS ogd
                                    ON ogd.order_id = o.order_id
                          LEFT JOIN reporting_work AS rw
                                    ON rw.order_id = ogd.order_id
                                        AND rw.production_id = ogd.production_id
                 FROM reporting_work as rw left join reporting_work_detail as rwd on rw.reporting_work_id=rwd.reporting_work_id
        left join sd.order_glass_detail as ogd on ogd.order_id=rw.order_id and ogd.order_number=rwd.order_number and ogd.technology_number=rwd.technology_number
        left join sd.`order` as o on o.order_id=rw.order_id
                 WHERE rw.reviewed_state != 2
      and rw.reporting_work_time >= #{selectTime1}
                   AND rw.reporting_work_time &lt;  #{selectTime2}
@@ -1068,4 +1070,8 @@
             ) AS subquery;
    </select>
    <select id="selectReviewedState">
        select reviewed_state from pp.reporting_work where reporting_work_id=#{reportingWorkId};
    </select>
</mapper>