diff --git a/emis-biz/src/main/resources/mapper/EmisTmsScanRecordMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsScanRecordMapper.xml index 3b7f57dda..93848a920 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsScanRecordMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsScanRecordMapper.xml @@ -264,14 +264,23 @@ and ( - scan_site_code in ( - SELECT t1.site_code FROM ( - SELECT * FROM emis_site WHERE parent_site_code IS NOT NULL ) t1,( SELECT @pid := - #{params.privSiteCode} ) pd - WHERE FIND_IN_SET( parent_site_code, @pid ) > 0 AND @pid := concat(@pid,',',site_code) + + scan_site_code in ( + SELECT + site_code + FROM ( + SELECT + t1.site_code, + t1.parent_site_code, + IF( FIND_IN_SET( parent_site_code, @pids ) > 0, @pids := concat( @pids, ',', site_code ), 0 ) AS child_path + FROM + ( SELECT site_code, parent_site_code FROM emis_site t WHERE del_flag = '0' ORDER BY site_code, parent_site_code ) t1, + ( SELECT @pids := #{params.privSiteCode} ) t2 + ) t3 + WHERE child_path > 0 UNION - SELECT #{params.privSiteCode} FROM dual - ) + SELECT #{params.privSiteCode} FROM DUAL + ) )