Ver código fonte

归档优化

xiaochan 10 meses atrás
pai
commit
23c37fb2ee

+ 1 - 1
src/main/java/thyyxxk/webserver/controller/archive/ArchiveController.java

@@ -15,8 +15,8 @@ import java.util.List;
 @RestController
 @RequestMapping("/thyy/archive")
 public class ArchiveController {
-    private final ArchiveServer server;
 
+    private final ArchiveServer server;
 
     public ArchiveController(ArchiveServer server) {
         this.server = server;

+ 4 - 0
src/main/java/thyyxxk/webserver/dao/his/archive/ArchiveTaskDao.java

@@ -37,4 +37,8 @@ public interface ArchiveTaskDao extends BaseMapper<ArchiveTask> {
         return this.selectList(null);
     }
 
+    default void delAll() {
+        this.delete(null);
+    }
+
 }

+ 0 - 7
src/main/java/thyyxxk/webserver/entity/archive/PatientArchive.java

@@ -84,13 +84,6 @@ public class PatientArchive implements Serializable {
     @TableField(value = "sort")
     private Integer sort;
 
-    public Integer getSortNull() {
-        if (sort == null) {
-            return Integer.MAX_VALUE;
-        }
-        return sort;
-    }
-
     /**
      * 一些其他信息
      */

+ 21 - 11
src/main/java/thyyxxk/webserver/service/archive/ArchiveServer.java

@@ -1,5 +1,6 @@
 package thyyxxk.webserver.service.archive;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.exceptions.UtilException;
 import cn.hutool.core.io.FileTypeUtil;
@@ -45,10 +46,7 @@ import thyyxxk.webserver.config.SpringBeanUtil;
 import thyyxxk.webserver.service.externalhttp.WebSocketService;
 import thyyxxk.webserver.service.inpatient.PatientService;
 import thyyxxk.webserver.service.redislike.RedisLikeService;
-import thyyxxk.webserver.utils.ListUtil;
-import thyyxxk.webserver.utils.ResultVoUtil;
-import thyyxxk.webserver.utils.TokenUtil;
-import thyyxxk.webserver.utils.TreeUtil;
+import thyyxxk.webserver.utils.*;
 
 import java.io.IOException;
 import java.lang.annotation.Annotation;
@@ -144,6 +142,9 @@ public class ArchiveServer {
             if (allData == null) {
                 return;
             }
+            // 正式环境才需要删除
+            if (isProd)
+                taskDao.delAll();
             List<List<ArchiveTask>> partition = ListUtils.partition(allData, 20);
             for (List<ArchiveTask> item : partition) {
                 String encrypt = rsa.encryptBase64(DateUtil.now(), KeyType.PublicKey);
@@ -316,9 +317,14 @@ public class ArchiveServer {
 
     public List<PatientArchive> getPatientArchives(String patNo, Integer times) {
         List<PatientArchive> array = patientArchiveDao.getPatientList(patNo, times);
-        TreeUtil.Option defaultOption = TreeUtil.getDefaultOption();
-        defaultOption.setSort("sortNull");
-        return TreeUtil.objectTree(array, defaultOption);
+
+        return TreeUtilV2.create(array)
+                .sort((a) -> {
+                    if (a.getSort() == null)
+                        return Integer.MAX_VALUE;
+                    return a.getSort();
+                })
+                .execute();
     }
 
     public ResultVo<String> ArchiveRecovery(ArchiveRecovery data) {
@@ -414,7 +420,7 @@ public class ArchiveServer {
         }
         PatientArchive oldData = patientArchiveDao.selectById(archive.getId());
         patientArchiveDao.deleteById(archive.getId());
-        logger.warn("删除文件:文件名 {}", oldData.getName());
+        logger.warn("删除{}:文件名 {}", oldData.getIsDir() ? "文件夹" : "文件", oldData.getName());
         logger.fileChangeSend(TokenUtil.getInstance().getTokenUserId(), "删除文件");
         return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_EL_MESSAGE);
     }
@@ -432,12 +438,14 @@ public class ArchiveServer {
     }
 
     public ResultVo<String> rename(String id, String name) {
+        PatientArchive oldData = patientArchiveDao.selectById(id);
         PatientArchive build = PatientArchive.builder()
                 .id(id)
                 .name(name)
+                .patNo(oldData.getPatNo())
+                .times(oldData.getTimes())
                 .build();
-        PatientArchive oldData = patientArchiveDao.selectById(id);
-        dirNameRepeat(oldData);
+        dirNameRepeat(build);
         ArchiveLog logger = getPatLog(oldData, "重命名");
         logger.info("文件id:{},原名称:【{}】,新名称:【{}】", id, oldData.getName(), name);
         logger.fileChangeSend(TokenUtil.getInstance().getTokenUserId(), "重命名文件");
@@ -460,6 +468,9 @@ public class ArchiveServer {
 
     public JSONArray getAllLog(String patNo, Integer times) {
         String path = archiveData.getEmrPatientPath(patNo, times) + "/archive.txt";
+        if (!FileUtil.exist(path)) {
+            return new JSONArray();
+        }
         String data = FileUtil.readString(path, StandardCharsets.UTF_8);
         return new JSONArray("[" + data + "]");
     }
@@ -473,7 +484,6 @@ public class ArchiveServer {
         return result;
     }
 
-
     private void dirNameRepeat(PatientArchive data) {
         boolean repeat = patientArchiveDao.dirNameRepeat(data);
         if (repeat) {

+ 10 - 9
src/main/java/thyyxxk/webserver/service/archive/archiveService/ArchiveJianYan.java

@@ -136,15 +136,7 @@ public class ArchiveJianYan {
         }
 
         String name = item.getString("examPurpose");
-        String parentId = null;
-
-        for (String s : 三大常规) {
-            if (name.contains(s)) {
-                parentId = 常规单id;
-            } else {
-                parentId = 生化单id;
-            }
-        }
+        String parentId = getId(name);
 
         PatientArchive build = info.defaultData()
                 .id(IdUtil.simpleUUID())
@@ -168,4 +160,13 @@ public class ArchiveJianYan {
         }
     }
 
+    public String getId(String name) {
+        for (String s : 三大常规) {
+            if (name.contains(s)) {
+                return 常规单id;
+            }
+        }
+        return 生化单id;
+    }
+
 }