廖井涛
2024-09-06 10a26b9b670efef0a2adba675c794c539846aa3c
north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml
@@ -16,13 +16,14 @@
        <result property="thisWornQuantity" column="this_worn_quantity"/>
        <result property="deviceName" column="device_name"/>
        <result property="teamsGroupsName" column="teams_groups_name"/>
        <result property="reviewedState" column="reviewed_state"/>
        <result property="reportingWorkId" column="reporting_work_id"/>
        <result property="processId" column="process_id"/>
        <result property="completedArea" column="completedArea"/>
        <result property="wornArea" column="wornArea"/>
        <result property="qualityInspector" column="quality_inspector"/>
        <result property="qualityInsTime" column="quality_ins_time"/>
        <result property="notes" column="notes"/>
        <result property="reviewed" column="reviewed"/>
        <association property="order" javaType="com.example.erp.entity.sd.Order">
            <result property="customerId" column="customer_id"/>
@@ -82,11 +83,14 @@
                          process_id,a.reporting_work_id
                   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 reviewed_state=0 and process_id=#{processIdStr} and b.technology_number=#{technologyStr}) as rw
                   where this_process=#{previousProcess} and reviewed_state=0 and process_id=#{processIdStr}
                     and  POSITION(b.technology_number in #{technologyStr})
                   ) as rw
        on rw.process_id = fc.process_id
        left join reporting_work_detail as rwd on rw.reporting_work_id = rwd.reporting_work_id and rwd.technology_number=fc.technology_number
        where fc.process_id = #{processIdStr}
          and fc.technology_number = #{technologyStr}
          and POSITION(fc.technology_number in #{technologyStr})
          and if(#{reportType}=1,o.order_type!='样品订单',o.order_id!='')
        GROUP BY fc.process_id
    </select>
@@ -104,11 +108,13 @@
    <!--    查询流程卡工艺流程-->
    <select id="SelectTechnologicalProcess">
        select ogd.process
        from sd.order_glass_detail as ogd
        where ogd.production_id = LEFT(#{processIdStr}, 11)
          and ogd.technology_number=#{technologyStr}
        limit 1
        select ifnull((select ogd.process
                       from sd.order_glass_detail as ogd
                       left join sd.`order` as o on o.order_id=ogd.order_id
                       where ogd.production_id = LEFT(#{processIdStr}, 11)
                         and o.create_order>0
                         and POSITION(ogd.technology_number in #{technologyStr})
                       limit 1),'') as  process
    </select>
@@ -129,8 +135,8 @@
            ogd.child_width,
            ogd.child_height,
            if(od.shape=1,'普形',if(od.shape=2,'异形','')) as shape,
            fc.quantity -odpd.reporting_work_num -odpd.broken_num  as quantity,
            fc.quantity -odpd.reporting_work_num -odpd.broken_num  as completedQuantity,
            fc.quantity -odpd.reporting_work_num -odpd.broken_num + ifnull(patch.patch_num,0)  as quantity,
            fc.quantity -odpd.reporting_work_num -odpd.broken_num + ifnull(patch.patch_num,0)   as completedQuantity,
            odpd.reporting_work_num as completed,
            odpd.broken_num as onceBroken,
            if(fc.quantity -odpd.reporting_work_num = 0 ,true,false) as saveFlag, -- 判断是否已经完成,已经完成不序号和同序号数量相同才能提交
@@ -150,10 +156,30 @@
            AND odpd.order_number = fc.order_number
            AND odpd.technology_number = fc.technology_number
            and  odpd.process_id = fc.process_id
        left join (
                select ifnull(sum(a.patch_num),0) as patch_num,a.process_id,a.technology_number,a.order_sort
                from patch_log as a
                right join  reporting_work
                on a.reporting_work_id=reporting_work.reporting_work_id
                where
                reporting_work.this_process = #{process}
                and a.process_id=#{processIdStr}
                and POSITION(a.technology_number in #{technologyStr})
                and a.review_status = 1
                group by a.process_id,a.order_sort,a.technology_number
            ) as patch
        on patch.process_id = fc.process_id
        and patch.order_sort = fc.order_number
        and patch.technology_number = fc.technology_number
        left join sd.`order` as o on o.order_id=od.order_id
        WHERE
            fc.process_id = #{processIdStr}
          AND fc.technology_number = #{technologyStr}
          AND  POSITION(fc.technology_number in #{technologyStr})
          AND odpd.process = #{process}
          and if(#{reportType}=1,o.order_type!='样品订单',o.order_id!='')
        group by fc.order_number,
                 ogd.technology_number
        order by fc.order_number
    </select>
@@ -178,21 +204,23 @@
            odpd.broken_num as onceBroken,
            ogd.`group`,
            if(fc.quantity -odpd.reporting_work_num = 0 ,true,false) as saveFlag, -- 判断是否已经完成,已经完成不序号和同序号数量相同才能提交
            od.other_columns
            od.other_columns,
            ogd.id as 'glassId'
        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
        <if test="process == '夹胶'">
        <if test="process == '夹胶' or (process == '打胶和粘框' and previousProcess=='夹胶')">
            AND ogd.`group` = (select `group`
                               from sd.order_glass_detail
                               where order_id = ogd.order_id
                               and order_number = ogd.order_number
                               and technology_number =#{technologyStr}
                               and POSITION(technology_number in #{technologyStr})
                               limit 1)
        </if>
        LEFT JOIN flow_card AS fc
                ON fc.order_id = ogd.order_id
@@ -226,8 +254,8 @@
        WHERE
            fc.process_id = #{processIdStr}
        <if test="process != '中空' and process != '夹胶' and process != '包装'">
           AND fc.technology_number = #{technologyStr}
        <if test="process != '中空' and process != '夹胶' and process != '包装' and process != '打胶和粘框' ">
           AND POSITION(fc.technology_number in #{technologyStr})
        </if>
        AND odpd.process = #{process}
        order by fc.order_number
@@ -261,24 +289,24 @@
        SELECT
            bdp.id,
            bdp.basic_type,
            bdp.basic_name,
            rw.teams  as basic_name,
            bd.basic_name,bd.id AS basic_category,
            rw.process
        FROM
            sd.basic_data AS bd
        LEFT JOIN `basic_data_produce` AS bdp
            ON bd.id = bdp.basic_category
        right join (
                    select distinct process from
                        (   select distinct rw.this_process as  process
                            from reporting_work as rw where rw.process_id=#{processIdStr}
                            UNION
                            select #{process}
                        ) as t
                    ) as  rw
        on rw.process=bd.basic_name
                LEFT JOIN `basic_data_produce` AS bdp
                          ON bd.id = bdp.basic_category
                right join (
                select distinct process,teams from
                    (   select distinct rw.this_process as  process,rw.teams_groups_name as teams
                        from reporting_work as rw where rw.process_id=#{processIdStr} and rw.reviewed_state>=0
                    ) as t
            ) as  rw
                           on rw.process=bd.basic_name
        WHERE
           bdp.basic_type = 'teamsgroups'
            bdp.basic_type = 'teamsgroups'
        GROUP BY rw.process,rw.teams
    </select>
    <select id="SelectHistoryProcessMp">
@@ -361,14 +389,14 @@
                                   and b.order_id = SUBSTR(#{processId} from 1 for 10)
                                   and b.process = #{thisProcess}
                                   and b.process_id = a.process_id
                 left join (select sum(patch_num) as patchNumSum,order_sort,technology_number,process_id
                 left join (select sum(patch_num) as patchNumSum,order_sort,technology_number,process_id,patch_processes
                            from patch_log
                            group by order_sort,technology_number) as c
                            group by process_id,order_sort,technology_number,patch_processes) as c
                           on
                                       c.process_id = a.process_id
                                   and c.order_sort = a.order_number
                                   and c.technology_number = a.technology_number
                                   and c.patch_processes= #{thisProcess}
        where
            a.process_id=SUBSTR(#{processId} from 1 for 14)
          and a.order_number = #{orderNumber}
@@ -453,7 +481,7 @@
            and f.order_number = a.order_number
            and f.technology_number = a.technology_number
        <if test="nextProcess != null and nextProcess != ''">
            left join (select ifnull(sum(completed_quantity),0) as completed_quantity ,
            left join (select sum(ifnull(completed_quantity,0)+ifnull(breakage_quantity,0)) as completed_quantity ,
                            rw.process_id,
                            rwd.order_number,
                            rwd.technology_number,
@@ -461,6 +489,7 @@
                           from reporting_work as rw
                           left join  reporting_work_detail  as rwd
                           on rw.reporting_work_id = rwd.reporting_work_id
              where rw.reviewed_state>=0
                           group by rw.process_id,
                                    rw.this_process,
                                    rwd.order_number,
@@ -478,7 +507,7 @@
        select rw.reporting_work_id,
               (rw.reporting_work_time) as reporting_work_time,
               o.order_id,
               rw.process_id,
               CONCAT(rw.process_id,'/',GROUP_CONCAT(distinct rwd.technology_number SEPARATOR '')) as process_id,
               o.project,
               o.batch,
               rw.this_process,
@@ -488,7 +517,9 @@
               round(ogd.area * rw.this_worn_quantity,2)      as wornArea,
               rw.device_name,
               rw.teams_groups_name,
               rw.reviewed_state
               rw.reviewed_state,
               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
@@ -500,6 +531,7 @@
          and rw.reporting_work_time between #{selectTime1} and #{selectTime2}
          and position(#{orderId} in rw.order_id)
          and rw.reviewed_state!=-1
          and o.create_order>0
        <if test="reportingWork.reportingWorkId != null and reportingWork.reportingWorkId != ''">
            and rw.reporting_work_id regexp #{reportingWork.reportingWorkId}
        </if>
@@ -517,6 +549,12 @@
        </if>
        <if test="reportingWork.thisProcess != null and reportingWork.thisProcess != ''">
            and rw.this_process regexp #{reportingWork.thisProcess}
        </if>
        <if test="reportingWork.deviceName != null and reportingWork.deviceName != ''">
            and rw.device_name regexp #{reportingWork.deviceName}
        </if>
        <if test="reportingWork.teamsGroupsName != null and reportingWork.teamsGroupsName != ''">
            and rw.teams_groups_name regexp #{reportingWork.teamsGroupsName}
        </if>
        GROUP BY rw.reporting_work_id
        ORDER BY rw.reporting_work_id desc
@@ -535,6 +573,7 @@
        where rw.reviewed_state != 2
          and rw.reporting_work_time between #{selectTime1} and #{selectTime2} and position(#{orderId} in rw.order_id)
          and rw.reviewed_state!=-1
          and o.create_order>0
        <if test="reportingWork.reportingWorkId != null and reportingWork.reportingWorkId != ''">
            and rw.reporting_work_id regexp #{reportingWork.reportingWorkId}
        </if>
@@ -553,6 +592,12 @@
        <if test="reportingWork.thisProcess != null and reportingWork.thisProcess != ''">
            and rw.this_process regexp #{reportingWork.thisProcess}
        </if>
        <if test="reportingWork.deviceName != null and reportingWork.deviceName != ''">
            and rw.device_name regexp #{reportingWork.deviceName}
        </if>
        <if test="reportingWork.teamsGroupsName != null and reportingWork.teamsGroupsName != ''">
            and rw.teams_groups_name regexp #{reportingWork.teamsGroupsName}
        </if>
        ORDER BY rw.reporting_work_id desc
        limit #{offset},#{pageSize};
    </select>
@@ -562,7 +607,12 @@
    </select>
<!--    查询下工序是否报工-->
    <select id="selectCountByProcessId">
        select count(reporting_work_id) from reporting_work where this_process=#{nextProcess} and process_id=#{processId}
        select count(reporting_work_id)
        from reporting_work
        where
            this_process=#{nextProcess}
            and process_id=#{processId}
            and reviewed_state>-1
    </select>
<!--    查询完工次破数量-->
@@ -571,12 +621,10 @@
               rwd.order_number,
               rwd.technology_number,
               rwd.completed_quantity,
               IFNULL(SUM(dd.breakage_quantity), 0) as breakage_quantity
               rwd.breakage_quantity as breakage_quantity
        from reporting_work as rw
                 left join reporting_work_detail as rwd on rw.reporting_work_id = rwd.reporting_work_id
                 left join damage_details as dd
                           on dd.reporting_work_id = rwd.reporting_work_id and dd.order_number = rwd.order_number and
                              dd.technology_number = rwd.technology_number
        left join reporting_work_detail as rwd on rw.reporting_work_id = rwd.reporting_work_id
        where rw.reporting_work_id = #{reportingWorkId}
        GROUP BY rwd.order_number, rwd.technology_number
    </select>
@@ -755,8 +803,59 @@
    <update id="ReviewReportingWorkMp">
        update reporting_work as rw
            left join reporting_work_detail as rwd on rw.reporting_work_id = rwd.reporting_work_id
        set rw.reviewed_state = 1
        set rw.reviewed_state = 1 ,rw.reviewed=#{userName}
        where rw.process_id = #{substring} and rw.this_process=#{process}
          and rwd.technology_number = #{result} and reviewed_state=0
          and POSITION(rwd.technology_number in #{result}) and reviewed_state=0
    </update>
    <select id="getPatchConditionMp">
        select count(*) from damage_details where reporting_work_id=#{reportingWorkId} and patch_status>0
    </select>
    <select id="getFirstStep">
        SELECT
            fc.quantity -odpd.reporting_work_num -odpd.broken_num + ifnull(patch.patch_num,0)  as quantity
        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 (
                select ifnull(sum(a.patch_num),0) as patch_num,a.process_id,a.technology_number,a.order_sort
                from patch_log as a
                         right join  reporting_work
                                     on a.reporting_work_id=reporting_work.reporting_work_id
                where
                    reporting_work.this_process = #{interceptProcess}
                  and a.process_id=#{processId}
                  and a.order_sort=#{orderSort}
                  and POSITION(a.technology_number in #{technologyNumber})
                  and a.review_status = 1
                group by a.process_id,a.order_sort,a.technology_number
            ) as patch
                          on patch.process_id = fc.process_id
                              and patch.order_sort = fc.order_number
                              and patch.technology_number = fc.technology_number
                left join sd.`order` as o on o.order_id=od.order_id
        WHERE
            fc.process_id = #{processId}
          and fc.order_number=#{orderSort}
          AND  POSITION(fc.technology_number in #{technologyNumber})
          AND odpd.process = #{interceptProcess}
        group by fc.order_number,
                 ogd.technology_number
        order by fc.order_number
    </select>
</mapper>