chenlu
2025-11-28 189add7a28d273861f9e54c81fb0330da4327ca0
north-glass-erp/src/main/resources/mapper/pp/PatchLogMapper.xml
@@ -24,9 +24,10 @@
        od.product_name,
        r.technology_number,
        ogd.glass_address,
        ogd.glass_child,
        r.patch_num,
        od.width,
        od.height,
        ogd.child_width as width,
        ogd.child_height as height,
        od.shape,
        r.patch_type,
        r.patch_reason,
@@ -37,14 +38,94 @@
        r.quality_inspector,
        r.patch_processes,
        r.reviewer,
        date(r.create_time) as create_time,
        date(r.update_time) as update_time
        r.create_time as create_time,
        date(r.update_time) as update_time,
        JSON_UNQUOTE( JSON_EXTRACT( od.other_columns, '$.S01' )) AS glassNumber
        from pp.patch_log r left join sd.order_detail od on r.order_id=od.order_id and r.order_sort=od.order_number
        left join sd.`order` o on r.order_id = o.order_id
        left join (select * from sd.order_glass_detail group by order_id,order_number) as ogd
        on r.order_id = ogd.order_id and r.order_sort = ogd.order_number
        left join (select * from sd.order_glass_detail group by order_id,order_number,technology_number) as ogd
        on r.order_id = ogd.order_id and r.order_sort = ogd.order_number and r.technology_number=ogd.technology_number
        <where>
            date(r.create_time)>=#{startDate} and date(r.create_time) &lt;= #{endDate}
            and o.create_order>0
            <if test="patchLog.patchId != null and patchLog.patchId != ''">
                and r.patch_id regexp #{patchLog.patchId}
            </if>
            <if test="patchLog.orderId != null and patchLog.orderId != ''">
                and r.order_id regexp #{patchLog.orderId}
            </if>
            <if test="patchLog.reportingWorkId != null and patchLog.reportingWorkId != ''">
                and r.reporting_work_id regexp #{patchLog.reportingWorkId}
            </if>
            <if test="patchLog.processId != null and patchLog.processId != ''">
                and r.process_id regexp #{patchLog.processId}
            </if>
            <if test="patchLog.project != null and patchLog.project != ''">
                and o.project regexp #{patchLog.project}
            </if>
            <if test="patchLog.batch != null and patchLog.batch != ''">
                and o.batch regexp #{patchLog.batch}
            </if>
            <if test="patchLog.orderSort != null and patchLog.orderSort != ''">
                and r.order_sort regexp #{patchLog.orderSort}
            </if>
            <if test="patchLog.buildingNumber != null and patchLog.buildingNumber != ''">
                and od.building_number regexp #{patchLog.buildingNumber}
            </if>
            <if test="patchLog.productName != null and patchLog.productName != ''">
                and od.product_name regexp #{patchLog.productName}
            </if>
            <if test="patchLog.technologyNumber != null and patchLog.technologyNumber != ''">
                and r.technology_number regexp #{patchLog.technologyNumber}
            </if>
            <if test="patchLog.qualityInspector != null and patchLog.qualityInspector != ''">
                and r.quality_inspector regexp #{patchLog.qualityInspector}
            </if>
            <if test="patchLog.width != null and patchLog.width != ''">
                and ogd.child_width regexp REGEXP_REPLACE(#{patchLog.width},'\\.0+$','')
            </if>
            <if test="patchLog.height != null and patchLog.height != ''">
                and ogd.child_height regexp REGEXP_REPLACE(#{patchLog.height},'\\.0+$','')
            </if>
            <if test="patchLog.shape != null and patchLog.shape != ''">
                and od.shape regexp #{patchLog.shape}
            </if>
            <if test="patchLog.patchNum != null and patchLog.patchNum != ''">
                and r.patch_num regexp #{patchLog.patchNum}
            </if>
            <if test="patchLog.glassAddress != null and patchLog.glassAddress != ''">
                and ogd.glass_address regexp #{patchLog.glassAddress}
            </if>
            <if test="patchLog.glassChild != null and patchLog.glassChild != ''">
                and ogd.glass_child regexp #{patchLog.glassChild}
            </if>
            <if test="patchLog.responsibleTeam != null and patchLog.responsibleTeam != ''">
                and r.responsible_team like concat('%', #{patchLog.responsibleTeam}, '%')
            </if>
            <if test="patchLog.responsibleEquipment != null and patchLog.responsibleEquipment != ''">
                and r.responsible_equipment regexp #{patchLog.responsibleEquipment}
            </if>
            <if test="patchLog.responsiblePersonnel != null and patchLog.responsiblePersonnel != ''">
                and r.responsible_personnel regexp #{patchLog.responsiblePersonnel}
            </if>
            <if test="patchLog.patchType != null and patchLog.patchType != ''">
                and r.patch_type regexp #{patchLog.patchType}
            </if>
            <if test="patchLog.patchReason != null and patchLog.patchReason != ''">
                and r.patch_reason regexp #{patchLog.patchReason}
            </if>
            <if test="patchLog.patchArea != null and patchLog.patchArea != ''">
                and r.patch_area regexp #{patchLog.patchArea}
            </if>
            <if test="patchLog.qualityInspector != null and patchLog.qualityInspector != ''">
                and r.quality_inspector regexp #{patchLog.qualityInspector}
            </if>
            <if test="patchLog.patchProcesses != null and patchLog.patchProcesses != ''">
                and r.patch_processes regexp #{patchLog.patchProcesses}
            </if>
            <if test="patchLog.reviewer != null and patchLog.reviewer != ''">
                and r.reviewer like concat('%', #{patchLog.reviewer}, '%')
            </if>
        </where>
         order by r.review_status,r.id desc
        limit #{offset},#{pageSize};
@@ -56,20 +137,101 @@
        from (select r.id as id
        from pp.patch_log r left join sd.order_detail od on r.order_id=od.order_id and r.order_sort=od.order_number
        left join sd.`order` o on r.order_id = o.order_id
        left join (select * from sd.order_glass_detail group by order_id,order_number) as ogd
        on r.order_id = ogd.order_id and r.order_sort = ogd.order_number
        left join (select * from sd.order_glass_detail group by order_id,order_number,technology_number) as ogd
        on r.order_id = ogd.order_id and r.order_sort = ogd.order_number and r.technology_number=ogd.technology_number
        <where>
            date(r.create_time)>=#{startDate} and date(r.create_time) &lt;= #{endDate}
            <if test="patchLog.patchId != null and patchLog.patchId != ''">
                and r.patch_id regexp #{patchLog.patchId}
            </if>
            <if test="patchLog.orderId != null and patchLog.orderId != ''">
                and r.order_id regexp #{patchLog.orderId}
            </if>
            <if test="patchLog.reportingWorkId != null and patchLog.reportingWorkId != ''">
                and r.reporting_work_id regexp #{patchLog.reportingWorkId}
            </if>
            <if test="patchLog.processId != null and patchLog.processId != ''">
                and r.process_id regexp #{patchLog.processId}
            </if>
            <if test="patchLog.project != null and patchLog.project != ''">
                and o.project regexp #{patchLog.project}
            </if>
            <if test="patchLog.batch != null and patchLog.batch != ''">
                and o.batch regexp #{patchLog.batch}
            </if>
            <if test="patchLog.orderSort != null and patchLog.orderSort != ''">
                and r.order_sort regexp #{patchLog.orderSort}
            </if>
            <if test="patchLog.buildingNumber != null and patchLog.buildingNumber != ''">
                and od.building_number regexp #{patchLog.buildingNumber}
            </if>
            <if test="patchLog.productName != null and patchLog.productName != ''">
                and od.product_name regexp #{patchLog.productName}
            </if>
            <if test="patchLog.technologyNumber != null and patchLog.technologyNumber != ''">
                and r.technology_number regexp #{patchLog.technologyNumber}
            </if>
            <if test="patchLog.qualityInspector != null and patchLog.qualityInspector != ''">
                and r.quality_inspector regexp #{patchLog.qualityInspector}
            </if>
            <if test="patchLog.width != null and patchLog.width != ''">
                and ogd.child_width regexp REGEXP_REPLACE(#{patchLog.width},'\\.0+$','')
            </if>
            <if test="patchLog.height != null and patchLog.height != ''">
                and ogd.child_height regexp REGEXP_REPLACE(#{patchLog.height},'\\.0+$','')
            </if>
            <if test="patchLog.shape != null and patchLog.shape != ''">
                and od.shape regexp #{patchLog.shape}
            </if>
            <if test="patchLog.patchNum != null and patchLog.patchNum != ''">
                and r.patch_num regexp #{patchLog.patchNum}
            </if>
            <if test="patchLog.glassAddress != null and patchLog.glassAddress != ''">
                and ogd.glass_address regexp #{patchLog.glassAddress}
            </if>
            <if test="patchLog.glassChild != null and patchLog.glassChild != ''">
                and ogd.glass_child regexp #{patchLog.glassChild}
            </if>
            <if test="patchLog.responsibleTeam != null and patchLog.responsibleTeam != ''">
                and r.responsible_team like concat('%', #{patchLog.responsibleTeam}, '%')
            </if>
            <if test="patchLog.responsibleEquipment != null and patchLog.responsibleEquipment != ''">
                and r.responsible_equipment regexp #{patchLog.responsibleEquipment}
            </if>
            <if test="patchLog.responsiblePersonnel != null and patchLog.responsiblePersonnel != ''">
                and r.responsible_personnel regexp #{patchLog.responsiblePersonnel}
            </if>
            <if test="patchLog.patchType != null and patchLog.patchType != ''">
                and r.patch_type regexp #{patchLog.patchType}
            </if>
            <if test="patchLog.patchReason != null and patchLog.patchReason != ''">
                and r.patch_reason regexp #{patchLog.patchReason}
            </if>
            <if test="patchLog.patchArea != null and patchLog.patchArea != ''">
                and r.patch_area regexp #{patchLog.patchArea}
            </if>
            <if test="patchLog.qualityInspector != null and patchLog.qualityInspector != ''">
                and r.quality_inspector regexp #{patchLog.qualityInspector}
            </if>
            <if test="patchLog.patchProcesses != null and patchLog.patchProcesses != ''">
                and r.patch_processes regexp #{patchLog.patchProcesses}
            </if>
            <if test="patchLog.reviewer != null and patchLog.reviewer != ''">
                and r.reviewer like concat('%', #{patchLog.reviewer}, '%')
            </if>
        </where>
              ) as zu
        limit #{offset},#{pageSize};
        ) as zu
    </select>
    <select id="getMaximum" >
        select count(*) from pp.patch_log where  date(create_time)=CURDATE()
        SELECT IFNULL(patch_id,'00')
        FROM patch_log
        WHERE DATE(create_time) = CURDATE()
        ORDER BY create_time DESC
            LIMIT 1;
    </select>
@@ -110,6 +272,11 @@
        update pp.damage_details set quantity=quantity+#{patchLog.patchNum},patch_status=1 where id=#{patchLog.reviewer}
    </update>
    <update id="updateReportingWorkDetail"  >
        update pp.reporting_work_detail set patch_status=1 where reporting_work_id=#{reportingWorkId}
                                          and order_number=#{orderSort} and technology_number=#{technologyNumber}
    </update>
    <select id="getSelectReplenish">
        select date(rw.reporting_work_time) as reportingWorkTime,
@@ -126,8 +293,8 @@
               dd.technology_number as technologyNumber,
               ogd.glass_address as glassAddress,
               dd.breakage_quantity-dd.quantity as patchNum,
               od.width,
               od.height,
                ogd.child_width as width,
                ogd.child_height as height,
               od.shape,
               dd.responsible_process as responsibleProcess,
               rw.this_process as patchProcesses,
@@ -139,19 +306,172 @@
               dd.responsible_equipment as responsibleEquipment,
               dd.responsible_team as responsibleTeam,
               ROUND((dd.breakage_quantity-dd.quantity) * od.width * od.height / 1000000, 2) as patchArea,
               rw.quality_inspector as qualityInspector
               rw.quality_inspector as qualityInspector,
               ogd.glass_child as glassChild,
               if(dd.responsible_process=rw.this_process,2,dd.quality_ins_status) as qualityInsStatus,
               if(dd.quality_ins_status=1,1,2) as orderBy,
               dd.responsible_personnel as responsiblePersonnel
        from pp.damage_details dd
                 left join   pp.reporting_work_detail rwd 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 pp.reporting_work rw on dd.reporting_work_id = rw.reporting_work_id
                 left join sd.`order` o on rw.order_id = o.order_id
                 left join sd.order_detail od on rw.order_id = od.order_id and dd.order_number = od.order_number
                 left join (select * from sd.order_glass_detail group by order_id,order_number) as ogd
                           on rw.order_id = ogd.order_id and dd.order_number = ogd.order_number
                 left join (select * from sd.order_glass_detail group by order_id,order_number,technology_number) as ogd
                           on rw.order_id = ogd.order_id and dd.order_number = ogd.order_number and rwd.technology_number=ogd.technology_number
        where  dd.breakage_quantity-dd.quantity>0 and dd.available=0 and (dd.responsible_process=rw.this_process or (dd.quality_ins_status!=1))
        order by dd.id desc
        <where>  dd.breakage_quantity-dd.quantity>0 and dd.available=0 and rw.reviewed_state!=-1 /*(dd.responsible_process=rw.this_process or (dd.quality_ins_status!=1)) and */
                and o.create_order>0 and dd.patch_status=0
            <if test="patchLogAddDTO.orderId != null and patchLogAddDTO.orderId != ''">
                and o.order_id regexp #{patchLogAddDTO.orderId}
            </if>
            <if test="patchLogAddDTO.reportingWorkId != null and patchLogAddDTO.reportingWorkId != ''">
                and dd.reporting_work_id regexp #{patchLogAddDTO.reportingWorkId}
            </if>
            <if test="patchLogAddDTO.productionId != null and patchLogAddDTO.productionId != ''">
                and rw.production_id regexp #{patchLogAddDTO.productionId}
            </if>
            <if test="patchLogAddDTO.processId != null and patchLogAddDTO.processId != ''">
                and rw.process_id regexp #{patchLogAddDTO.processId}
            </if>
            <if test="patchLogAddDTO.project != null and patchLogAddDTO.project != ''">
                and o.project regexp #{patchLogAddDTO.project}
            </if>
            <if test="patchLogAddDTO.batch != null and patchLogAddDTO.batch != ''">
                and o.batch regexp #{patchLogAddDTO.batch}
            </if>
            <if test="patchLogAddDTO.orderSort != null and patchLogAddDTO.orderSort != ''">
                and dd.order_number regexp #{patchLogAddDTO.orderSort}
            </if>
            <if test="patchLogAddDTO.productName != null and patchLogAddDTO.productName != ''">
                and od.product_name regexp #{patchLogAddDTO.productName}
            </if>
            <if test="patchLogAddDTO.technologyNumber != null and patchLogAddDTO.technologyNumber != ''">
                and dd.technology_number regexp #{patchLogAddDTO.technologyNumber}
            </if>
            <if test="patchLogAddDTO.qualityInspector != null and patchLogAddDTO.qualityInspector != ''">
                and rw.quality_inspector regexp #{patchLogAddDTO.qualityInspector}
            </if>
            <if test="patchLogAddDTO.width != null and patchLogAddDTO.width != ''">
                and ogd.child_width regexp REGEXP_REPLACE(#{patchLogAddDTO.width},'\\.0+$','')
            </if>
            <if test="patchLogAddDTO.height != null and patchLogAddDTO.height != ''">
                and ogd.child_height regexp REGEXP_REPLACE(#{patchLogAddDTO.height},'\\.0+$','')
            </if>
            <if test="patchLogAddDTO.shape != null and patchLogAddDTO.shape != ''">
                and od.shape regexp #{patchLogAddDTO.shape}
            </if>
            <if test="patchLogAddDTO.glassAddress != null and patchLogAddDTO.glassAddress != ''">
                and ogd.glass_address regexp #{patchLogAddDTO.glassAddress}
            </if>
            <if test="patchLogAddDTO.glassChild != null and patchLogAddDTO.glassChild != ''">
                and ogd.glass_child regexp #{patchLogAddDTO.glassChild}
            </if>
            <if test="patchLogAddDTO.responsibleTeam != null and patchLogAddDTO.responsibleTeam != ''">
                and dd.responsible_team like concat('%', #{patchLogAddDTO.responsibleTeam}, '%')
            </if>
            <if test="patchLogAddDTO.responsibleEquipment != null and patchLogAddDTO.responsibleEquipment != ''">
                and dd.responsible_equipment regexp #{patchLogAddDTO.responsibleEquipment}
            </if>
            <if test="patchLogAddDTO.responsibleProcess != null and patchLogAddDTO.responsibleProcess != ''">
                and dd.responsible_process regexp #{patchLogAddDTO.responsibleProcess}
            </if>
            <if test="patchLogAddDTO.patchProcesses != null and patchLogAddDTO.patchProcesses != ''">
                and rw.this_process regexp #{patchLogAddDTO.patchProcesses}
            </if>
            <if test="patchLogAddDTO.patchType != null and patchLogAddDTO.patchType != ''">
                and dd.breakage_type regexp #{patchLogAddDTO.patchType}
            </if>
            <if test="patchLogAddDTO.patchReason != null and patchLogAddDTO.patchReason != ''">
                and dd.breakage_reason regexp #{patchLogAddDTO.patchReason}
            </if>
        </where>
        order by orderBy desc,dd.id desc
    </select>
    <delete id="deleteReplenishMp">
        delete from pp.patch_log where id=#{id}
    </delete>
    <delete id="updatePatchDdMp">
        delete from pp.damage_details
     where reporting_work_id=#{reportingWorkId} and order_number=#{orderSort} and technology_number=#{technologyNumber}
        and breakage_reason=#{patchReason}
    </delete>
    <update id="updatePatchBgMp">
        update pp.reporting_work_detail set patch_status=0
        where reporting_work_id=#{reportingWorkId} and order_number=#{orderSort} and technology_number=#{technologyNumber}
    </update>
    <update id="updateOrderProcessDetailCancel">
        update sd.order_process_detail
        set reporting_work_num=reporting_work_num + #{patchLog.patchNum}
        where order_id = #{patchLog.orderId}
          and process_id = #{patchLog.processId}
          and order_number = #{patchLog.orderSort}
          and technology_number = #{patchLog.technologyNumber}
          and id <![CDATA[<]]> (select a.opdid
                                from (select id as opdid
                                      from sd.order_process_detail opd
                                      where opd.order_id = #{patchLog.orderId}
                                        and opd.process_id = #{patchLog.processId}
                                        and opd.order_number = #{patchLog.orderSort}
                                        and opd.technology_number = #{patchLog.technologyNumber}
                                        and process = #{reportingWork.thisProcess}) as a)
    </update>
    <update id="updateReplenishCancel">
        update pp.patch_log set reviewer=null,review_status=0,update_time=now() where id=#{patchLog.id}
    </update>
    <select id="selectProjectCount">
        SELECT COUNT(*)
        FROM patch_log
        WHERE process_id= #{processId} and patch_id=#{patchId} and technology_number = #{technologyNumber}
          and project_no IS not NULL;
    </select>
    <select id="exportReplenishMp">
        select
        r.id,
        r.review_status,
        r.reporting_work_id,
        r.patch_id,
        r.process_id,
        r.order_id,
        r.order_sort,
        o.project,
        o.batch,
        od.building_number,
        od.product_name,
        r.technology_number,
        ogd.glass_address,
        ogd.glass_child,
        r.patch_num,
        ogd.child_width as width,
        ogd.child_height as height,
        od.shape,
        r.patch_type,
        r.patch_reason,
        r.responsible_team,
        r.responsible_personnel,
        r.responsible_equipment,
        r.patch_area,
        r.quality_inspector,
        r.patch_processes,
        r.reviewer,
        r.create_time as create_time,
        date(r.update_time) as update_time,
        JSON_UNQUOTE( JSON_EXTRACT( od.other_columns, '$.S01' )) AS glassNumber
        from pp.patch_log r left join sd.order_detail od on r.order_id=od.order_id and r.order_sort=od.order_number
        left join sd.`order` o on r.order_id = o.order_id
        left join (select * from sd.order_glass_detail group by order_id,order_number,technology_number) as ogd
        on r.order_id = ogd.order_id and r.order_sort = ogd.order_number and r.technology_number=ogd.technology_number
        <where>
            date(r.create_time)>=#{dates[0]} and date(r.create_time) &lt;= #{dates[1]}
            and o.create_order>0
        </where>
        order by r.review_status,r.id desc
    </select>
</mapper>