From 1fb7fc160753c4283f7b84c14f931d87b6c922e4 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期四, 10 七月 2025 14:58:05 +0800
Subject: [PATCH] 代码提交

---
 smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java |   48 +++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 47 insertions(+), 1 deletions(-)

diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
index 73f905f..c8e8bb5 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
@@ -826,6 +826,9 @@
     @Override
     public Boolean addFinshJZInfo(Map dataMap) {
         log.info("ServiceExternalServiceImpl---addFinshJZInfo鐨勬柊澧炵殑鍊间负锛歿}", dataMap);
+        //鍏堝琛ㄨ繘琛岀淮鎶�
+        tableMaintenance();
+
         Map yeWuXX = (Map) dataMap.get("YeWuXX");
         Map XiaoXiTou = (Map) dataMap.get("XiaoXiTou");
         String FaSongJGID = ObjectUtils.isNotEmpty(XiaoXiTou.get("FaSongJGID")) ? XiaoXiTou.get("FaSongJGID").toString() : null;
@@ -908,10 +911,53 @@
         if (i > 0) {
             return true;
         }
-
         return false;
     }
 
+
+    public void tableMaintenance() {
+        // 1. 鍒ゆ柇琛ㄦ暟鎹噺
+        int count = patMedOuthospMapper.countPatMedOuthosp();
+        if (count > 3000000) {
+            // 2. 鍐疯棌琛ㄥ苟鏂板缓
+            String timeSuffix = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
+            String oldName = "pat_med_outhosp";
+            String newName = oldName + "_" + timeSuffix;
+
+            // 鍐疯棌
+            patMedOuthospMapper.renameTable(oldName, newName);
+
+            // 3. 璁$畻鎵�鏈夎〃鐨勬渶澶d
+            List<String> tableNames = patMedOuthospMapper.getAllOuthospTableNames();
+            long maxId = 0;
+            for (String tableName : tableNames) {
+                Long tableMaxId = patMedOuthospMapper.getMaxIdFromTable(tableName);
+                if (tableMaxId != null && tableMaxId > maxId) {
+                    maxId = tableMaxId;
+                }
+            }
+
+            // 4. 鏂板缓
+            patMedOuthospMapper.createPatMedOuthosp(oldName, newName);
+
+            // 5. 璁剧疆鏂拌〃鑷璧峰鍊�
+            patMedOuthospMapper.setAutoIncrement(oldName, maxId + 1);
+
+            // 6. 鏇存柊/鏂板缓瑙嗗浘
+            // 閲嶆柊鑾峰彇鎵�鏈夎〃鍚嶏紙鍖呭惈鍒氭柊寤虹殑涓昏〃锛�
+            List<String> allTables = patMedOuthospMapper.getAllOuthospTableNames();
+            StringBuilder sb = new StringBuilder();
+            sb.append("CREATE OR REPLACE VIEW v_pat_med_outhosp AS ");
+            for (int i = 0; i < allTables.size(); i++) {
+                sb.append("SELECT * FROM ").append(allTables.get(i));
+                if (i < allTables.size() - 1) {
+                    sb.append(" UNION ALL ");
+                }
+            }
+            patMedOuthospMapper.createOrReplaceView(sb.toString());
+        }
+    }
+
     @Override
     public Boolean addDiseaseInfo(Map dataMap) {
         log.info("ServiceExternalServiceImpl---addDiseaseInfo鐨勬柊澧炵殑鍊间负锛歿}", dataMap);

--
Gitblit v1.9.3