浏览代码

档案系统-案卷查询-排序规则调整,-,_分割的流水号调整

LHB 3 周之前
父节点
当前提交
3111cd23dc

+ 71 - 9
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.xml

@@ -305,7 +305,29 @@
     </select>
 
     <select id="selectArchivesAutoFilePage" resultMap="archivesAutoResultMap">
-        select * from u_archives_auto u LEFT JOIN m_archive_tree_contract m ON u.node_id = m.id where u.is_deleted = 0
+        select
+            * ,
+            CAST(
+                CASE
+                    WHEN SUBSTRING_INDEX(file_number, '-', -1) REGEXP '^[0-9]+$'
+                        THEN SUBSTRING_INDEX(file_number, '-', -1)
+                    WHEN SUBSTRING_INDEX(file_number, '•', -1) REGEXP '^[0-9]+$'
+                        THEN SUBSTRING_INDEX(file_number, '•', -1)
+                    WHEN SUBSTRING_INDEX(file_number, '·', -1) REGEXP '^[0-9]+$'
+                        THEN SUBSTRING_INDEX(file_number, '·', -1)
+                    WHEN SUBSTRING_INDEX(file_number, '_', -1) REGEXP '^[0-9]+$'
+                        THEN SUBSTRING_INDEX(file_number, '_', -1)
+                    ELSE
+                        REVERSE(
+                            SUBSTRING(
+                                REVERSE(file_number),
+                                1,
+                                LENGTH(REVERSE(file_number)) - LENGTH(TRIM(LEADING '0123456789' FROM REVERSE(file_number)))
+                            )
+                        )
+                END AS UNSIGNED
+            ) AS trailing_number
+        from u_archives_auto u LEFT JOIN m_archive_tree_contract m ON u.node_id = m.id where u.is_deleted = 0
         <if test="vo.projectId != null and vo.projectId != ''">
             and u.project_id = #{vo.projectId}
         </if>
@@ -350,12 +372,12 @@
                 ORDER BY
                     m.tree_sort,
                     CASE WHEN u.file_number IS NULL THEN 1 ELSE 0 END,
-                    CAST(SUBSTRING_INDEX(file_number, '_', -1) AS SIGNED)
+                    trailing_number
             </when>
             <when test="vo.sortRuleType != null and vo.sortRuleType == 2 and vo.isArchive != null and vo.isArchive != ''">
                 order by
                     CASE WHEN u.file_number IS NULL THEN 1 ELSE 0 END,
-                    CAST(SUBSTRING_INDEX(file_number, '_', -1) AS SIGNED)
+                    trailing_number
             </when>
             <otherwise>
                 order by m.tree_sort,u.auto_file_sort is null ,u.auto_file_sort,u.file_number is null,
@@ -631,7 +653,27 @@
         where project_id = #{projectId} and is_deleted = 0;
     </select>
     <select id="pageByArchivesAuto" resultMap="archivesAutoResultMap">
-        select uaa.*
+        select uaa.*,
+            CAST(
+                CASE
+                    WHEN SUBSTRING_INDEX(file_number, '-', -1) REGEXP '^[0-9]+$'
+                        THEN SUBSTRING_INDEX(file_number, '-', -1)
+                    WHEN SUBSTRING_INDEX(file_number, '•', -1) REGEXP '^[0-9]+$'
+                        THEN SUBSTRING_INDEX(file_number, '•', -1)
+                    WHEN SUBSTRING_INDEX(file_number, '·', -1) REGEXP '^[0-9]+$'
+                        THEN SUBSTRING_INDEX(file_number, '·', -1)
+                    WHEN SUBSTRING_INDEX(file_number, '_', -1) REGEXP '^[0-9]+$'
+                        THEN SUBSTRING_INDEX(file_number, '_', -1)
+                    ELSE
+                        REVERSE(
+                            SUBSTRING(
+                                REVERSE(file_number),
+                                1,
+                                LENGTH(REVERSE(file_number)) - LENGTH(TRIM(LEADING '0123456789' FROM REVERSE(file_number)))
+                            )
+                        )
+                END AS UNSIGNED
+            ) AS trailing_number
         from m_archive_tree_contract matc left join u_archives_auto uaa on matc.id = uaa.node_id left join
         u_archive_file uaf on uaa.id = uaf.archive_id
         where uaa.is_deleted = 0  and matc.is_deleted = 0 and uaa.is_archive = 1
@@ -697,12 +739,12 @@
                 ORDER BY
                 matc.tree_sort,
                 CASE WHEN uaa.file_number IS NULL THEN 1 ELSE 0 END,
-                CAST(SUBSTRING_INDEX(uaa.file_number, '_', -1) AS SIGNED)
+                trailing_number
             </when>
             <when test="vo.sortRuleType != null and vo.sortRuleType == 2">
                 ORDER BY
                 CASE WHEN uaa.file_number IS NULL THEN 1 ELSE 0 END,
-                CAST(SUBSTRING_INDEX(uaa.file_number, '_', -1) AS SIGNED)
+                trailing_number
             </when>
             <otherwise>
                 order by uaa.tree_sort,uaa.auto_file_sort,uaa.file_number asc
@@ -711,7 +753,27 @@
     </select>
 
     <select id="pageByArchivesAuto11" resultMap="archivesAutoResultMap">
-        select uaa.*
+        select uaa.*,
+            CAST(
+                CASE
+                    WHEN SUBSTRING_INDEX(file_number, '-', -1) REGEXP '^[0-9]+$'
+                        THEN SUBSTRING_INDEX(file_number, '-', -1)
+                    WHEN SUBSTRING_INDEX(file_number, '•', -1) REGEXP '^[0-9]+$'
+                        THEN SUBSTRING_INDEX(file_number, '•', -1)
+                    WHEN SUBSTRING_INDEX(file_number, '·', -1) REGEXP '^[0-9]+$'
+                        THEN SUBSTRING_INDEX(file_number, '·', -1)
+                    WHEN SUBSTRING_INDEX(file_number, '_', -1) REGEXP '^[0-9]+$'
+                        THEN SUBSTRING_INDEX(file_number, '_', -1)
+                    ELSE
+                        REVERSE(
+                            SUBSTRING(
+                                REVERSE(file_number),
+                                1,
+                                LENGTH(REVERSE(file_number)) - LENGTH(TRIM(LEADING '0123456789' FROM REVERSE(file_number)))
+                            )
+                        )
+                END AS UNSIGNED
+            ) AS trailing_number
         from m_archive_tree_contract matc left join u_archives_auto uaa on matc.id = uaa.node_id
         where uaa.is_deleted = 0 and matc.is_deleted = 0 and uaa.is_archive = 1
         <if test="vo.queryValue != null and vo.queryValue != ''">
@@ -771,12 +833,12 @@
                 ORDER BY
                 matc.tree_sort,
                 CASE WHEN uaa.file_number IS NULL THEN 1 ELSE 0 END,
-                CAST(SUBSTRING_INDEX(uaa.file_number, '_', -1) AS SIGNED)
+                trailing_number
             </when>
             <when test="vo.sortRuleType != null and vo.sortRuleType == 2">
                 ORDER BY
                 CASE WHEN uaa.file_number IS NULL THEN 1 ELSE 0 END,
-                CAST(SUBSTRING_INDEX(uaa.file_number, '_', -1) AS SIGNED)
+                trailing_number
             </when>
             <otherwise>
                 order by uaa.tree_sort,uaa.auto_file_sort,uaa.file_number asc