浏览代码

feat-[archives,consultation,economy,institution,press,publication,research,specialCollection,thesis]:新增相应模块,优化导入,批量导入功能抽出,新增excel读取工具类

seeseele 11 月之前
父节点
当前提交
4f7e339839
共有 91 个文件被更改,包括 6534 次插入1061 次删除
  1. 1 1
      pom.xml
  2. 11 0
      src/main/java/com/ruoyi/common/utils/excel/DataConverter.java
  3. 73 0
      src/main/java/com/ruoyi/common/utils/excel/ExcelReadUtil.java
  4. 32 0
      src/main/java/com/ruoyi/common/utils/excel/ImportListener.java
  5. 39 0
      src/main/java/com/ruoyi/common/utils/excel/TranslateImportListener.java
  6. 1 1
      src/main/java/com/ruoyi/common/utils/poi/NoticeImListener.java
  7. 0 41
      src/main/java/com/ruoyi/common/utils/poi/PressImportListener.java
  8. 0 40
      src/main/java/com/ruoyi/common/utils/poi/ResearchImportListener.java
  9. 1 2
      src/main/java/com/ruoyi/common/utils/poi/StudyImListener.java
  10. 0 42
      src/main/java/com/ruoyi/common/utils/poi/ThesisImportListener.java
  11. 139 0
      src/main/java/com/ruoyi/project/VRdemo/controller/ArchivesUnboundController.java
  12. 139 0
      src/main/java/com/ruoyi/project/VRdemo/controller/ConsultationController.java
  13. 3 103
      src/main/java/com/ruoyi/project/VRdemo/controller/DataIoController.java
  14. 140 0
      src/main/java/com/ruoyi/project/VRdemo/controller/EconomyController.java
  15. 139 0
      src/main/java/com/ruoyi/project/VRdemo/controller/InstitutionController.java
  16. 136 0
      src/main/java/com/ruoyi/project/VRdemo/controller/LiteratureController.java
  17. 64 15
      src/main/java/com/ruoyi/project/VRdemo/controller/PressController.java
  18. 139 0
      src/main/java/com/ruoyi/project/VRdemo/controller/PublicationController.java
  19. 76 29
      src/main/java/com/ruoyi/project/VRdemo/controller/ResearchController.java
  20. 139 0
      src/main/java/com/ruoyi/project/VRdemo/controller/SpecialCollectionController.java
  21. 74 28
      src/main/java/com/ruoyi/project/VRdemo/controller/ThesisController.java
  22. 95 0
      src/main/java/com/ruoyi/project/VRdemo/domain/ArchivesUnbound.java
  23. 138 0
      src/main/java/com/ruoyi/project/VRdemo/domain/Consultation.java
  24. 116 0
      src/main/java/com/ruoyi/project/VRdemo/domain/Economy.java
  25. 126 0
      src/main/java/com/ruoyi/project/VRdemo/domain/Institution.java
  26. 79 0
      src/main/java/com/ruoyi/project/VRdemo/domain/Literature.java
  27. 0 4
      src/main/java/com/ruoyi/project/VRdemo/domain/Press.java
  28. 115 0
      src/main/java/com/ruoyi/project/VRdemo/domain/Publication.java
  29. 4 4
      src/main/java/com/ruoyi/project/VRdemo/domain/Research.java
  30. 85 0
      src/main/java/com/ruoyi/project/VRdemo/domain/SpecialCollection.java
  31. 83 0
      src/main/java/com/ruoyi/project/VRdemo/domain/imData/ArchivesUnboundImData.java
  32. 7 0
      src/main/java/com/ruoyi/project/VRdemo/domain/imData/BaseImData.java
  33. 107 0
      src/main/java/com/ruoyi/project/VRdemo/domain/imData/ConsultationImData.java
  34. 95 0
      src/main/java/com/ruoyi/project/VRdemo/domain/imData/EconomyImData.java
  35. 108 0
      src/main/java/com/ruoyi/project/VRdemo/domain/imData/InstitutionImData.java
  36. 71 0
      src/main/java/com/ruoyi/project/VRdemo/domain/imData/LiteratureImData.java
  37. 1 3
      src/main/java/com/ruoyi/project/VRdemo/domain/NoticeImData.java
  38. 160 0
      src/main/java/com/ruoyi/project/VRdemo/domain/imData/PressImData.java
  39. 95 0
      src/main/java/com/ruoyi/project/VRdemo/domain/imData/PublicationImData.java
  40. 107 0
      src/main/java/com/ruoyi/project/VRdemo/domain/imData/ResearchImData.java
  41. 71 0
      src/main/java/com/ruoyi/project/VRdemo/domain/imData/SpecialCollectionImData.java
  42. 1 1
      src/main/java/com/ruoyi/project/VRdemo/domain/StudyImData.java
  43. 123 0
      src/main/java/com/ruoyi/project/VRdemo/domain/imData/ThesisImData.java
  44. 79 0
      src/main/java/com/ruoyi/project/VRdemo/mapper/ArchivesUnboundMapper.java
  45. 74 0
      src/main/java/com/ruoyi/project/VRdemo/mapper/ConsultationMapper.java
  46. 2 70
      src/main/java/com/ruoyi/project/VRdemo/mapper/DataExcelMapper.java
  47. 73 0
      src/main/java/com/ruoyi/project/VRdemo/mapper/EconomyMapper.java
  48. 74 0
      src/main/java/com/ruoyi/project/VRdemo/mapper/InstitutionMapper.java
  49. 82 0
      src/main/java/com/ruoyi/project/VRdemo/mapper/LiteratureMapper.java
  50. 32 15
      src/main/java/com/ruoyi/project/VRdemo/mapper/PressMapper.java
  51. 79 0
      src/main/java/com/ruoyi/project/VRdemo/mapper/PublicationMapper.java
  52. 32 15
      src/main/java/com/ruoyi/project/VRdemo/mapper/ResearchMapper.java
  53. 73 0
      src/main/java/com/ruoyi/project/VRdemo/mapper/SpecialCollectionMapper.java
  54. 28 15
      src/main/java/com/ruoyi/project/VRdemo/mapper/ThesisMapper.java
  55. 71 0
      src/main/java/com/ruoyi/project/VRdemo/service/IArchivesUnboundService.java
  56. 68 0
      src/main/java/com/ruoyi/project/VRdemo/service/IConsultationService.java
  57. 72 0
      src/main/java/com/ruoyi/project/VRdemo/service/IEconomyService.java
  58. 68 0
      src/main/java/com/ruoyi/project/VRdemo/service/IInstitutionService.java
  59. 68 0
      src/main/java/com/ruoyi/project/VRdemo/service/ILiteratureService.java
  60. 1 2
      src/main/java/com/ruoyi/project/VRdemo/service/INoticeDataService.java
  61. 21 21
      src/main/java/com/ruoyi/project/VRdemo/service/IPressService.java
  62. 71 0
      src/main/java/com/ruoyi/project/VRdemo/service/IPublicationService.java
  63. 20 21
      src/main/java/com/ruoyi/project/VRdemo/service/IResearchService.java
  64. 72 0
      src/main/java/com/ruoyi/project/VRdemo/service/ISpecialCollectionService.java
  65. 1 2
      src/main/java/com/ruoyi/project/VRdemo/service/IStudyDataService.java
  66. 12 12
      src/main/java/com/ruoyi/project/VRdemo/service/IThesisService.java
  67. 135 0
      src/main/java/com/ruoyi/project/VRdemo/service/impl/ArchivesUnboundServiceImpl.java
  68. 185 0
      src/main/java/com/ruoyi/project/VRdemo/service/impl/BulkImportService.java
  69. 126 0
      src/main/java/com/ruoyi/project/VRdemo/service/impl/ConsultationServiceImplImpl.java
  70. 133 0
      src/main/java/com/ruoyi/project/VRdemo/service/impl/EconomyServiceImpl.java
  71. 130 0
      src/main/java/com/ruoyi/project/VRdemo/service/impl/InstitutionServiceImpl.java
  72. 129 0
      src/main/java/com/ruoyi/project/VRdemo/service/impl/LiteratureServiceImpl.java
  73. 1 2
      src/main/java/com/ruoyi/project/VRdemo/service/impl/NoticeDataServiceImpl.java
  74. 50 127
      src/main/java/com/ruoyi/project/VRdemo/service/impl/PressServiceImpl.java
  75. 133 0
      src/main/java/com/ruoyi/project/VRdemo/service/impl/PublicationServiceImpl.java
  76. 49 110
      src/main/java/com/ruoyi/project/VRdemo/service/impl/ResearchServiceImpl.java
  77. 133 0
      src/main/java/com/ruoyi/project/VRdemo/service/impl/SpecialCollectionServiceImpl.java
  78. 2 3
      src/main/java/com/ruoyi/project/VRdemo/service/impl/StudyDataServiceImpl.java
  79. 37 89
      src/main/java/com/ruoyi/project/VRdemo/service/impl/ThesisServiceImpl.java
  80. 8 6
      src/main/resources/application-druid.yml
  81. 100 0
      src/main/resources/mybatis/VRdemo/ArchivesUnboundMapper.xml
  82. 111 0
      src/main/resources/mybatis/VRdemo/ConsultationMapper.xml
  83. 86 155
      src/main/resources/mybatis/VRdemo/DataExcelMapper.xml
  84. 106 0
      src/main/resources/mybatis/VRdemo/EconomyMapper.xml
  85. 110 0
      src/main/resources/mybatis/VRdemo/InstitutionMapper.xml
  86. 95 0
      src/main/resources/mybatis/VRdemo/LiteratureMapper.xml
  87. 62 32
      src/main/resources/mybatis/VRdemo/PressMapper.xml
  88. 119 0
      src/main/resources/mybatis/VRdemo/PublicationMapper.xml
  89. 43 24
      src/main/resources/mybatis/VRdemo/ResearchMapper.xml
  90. 95 0
      src/main/resources/mybatis/VRdemo/SpecialCollectionMapper.xml
  91. 50 26
      src/main/resources/mybatis/VRdemo/ThesisMapper.xml

+ 1 - 1
pom.xml

@@ -289,7 +289,7 @@
     </dependencies>
 
 	<build>
-	    <finalName>vrone</finalName>
+        <finalName>xmg</finalName>
 	    <plugins>
 	        <plugin>
 	            <groupId>org.springframework.boot</groupId>

+ 11 - 0
src/main/java/com/ruoyi/common/utils/excel/DataConverter.java

@@ -0,0 +1,11 @@
+package com.ruoyi.common.utils.excel;
+
+// 数据转换接口
+public abstract class DataConverter<T, R> {
+    public R getR(T t) {
+        return convert(t);
+    }
+
+    // 数据处理转换
+    protected abstract R convert(T t);
+}

+ 73 - 0
src/main/java/com/ruoyi/common/utils/excel/ExcelReadUtil.java

@@ -0,0 +1,73 @@
+package com.ruoyi.common.utils.excel;
+
+import com.alibaba.excel.EasyExcel;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.List;
+
+/**
+ * Excel工具类
+ */
+public class ExcelReadUtil {
+
+    public static <T> List<T> read(MultipartFile file, Class<T> clazz) throws IOException {
+        return read(file, clazz, 1);
+    }
+
+    /**
+     * 读取Excel文件
+     *
+     * @param file          文件
+     * @param clazz         目标数据类型
+     * @param headRowNumber 表头所在行数
+     * @throws IOException 读取文件异常
+     */
+    public static <T> List<T> read(MultipartFile file, Class<T> clazz, int headRowNumber) throws IOException {
+        ImportListener<T> listener = new ImportListener<>();
+
+        // 使用EasyExcel读取Excel文件内容
+        EasyExcel.read(file.getInputStream(), clazz, listener).sheet() // 默认读取第一个sheet
+                .headRowNumber(headRowNumber) // 指定表头所在行数
+                .doRead(); // 执行读取操作
+
+        return listener.getDataList();
+    }
+
+    public static <T, R> List<R> read(MultipartFile file, Class<T> tClazz, Class<R> rClazz) throws IOException{
+        return read(file, tClazz, rClazz, 1);
+    }
+
+    /**
+     * 读取Excel文件,并转换数据类型
+     *
+     * @param file          文件
+     * @param tClazz        源数据类型
+     * @param rClazz        目标数据类型
+     * @param headRowNumber 表头所在行数
+     * @throws IOException 读取文件异常
+     */
+    public static <T, R> List<R> read(MultipartFile file, Class<T> tClazz, Class<R> rClazz, int headRowNumber) throws IOException {
+        DataConverter<T, R> dataConverter;
+        try {
+            T t = tClazz.getDeclaredConstructor().newInstance();
+            Method instanceMethod = tClazz.getDeclaredMethod("getConverter");
+
+            dataConverter = (DataConverter<T, R>) instanceMethod.invoke(t);
+        } catch (InstantiationException | IllegalAccessException | NoSuchMethodException |
+                 InvocationTargetException e) {
+            throw new RuntimeException("实例化数据转化类失败: " + tClazz.getName(), e);
+        }
+
+        TranslateImportListener<T, R> listener = new TranslateImportListener<>(dataConverter);
+
+        // 使用EasyExcel读取Excel文件内容
+        EasyExcel.read(file.getInputStream(), tClazz, listener).sheet() // 默认读取第一个sheet
+                .headRowNumber(headRowNumber) // 指定表头所在行数
+                .doRead(); // 执行读取操作
+
+        return listener.getDataList();
+    }
+}

+ 32 - 0
src/main/java/com/ruoyi/common/utils/excel/ImportListener.java

@@ -0,0 +1,32 @@
+package com.ruoyi.common.utils.excel;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.ruoyi.project.VRdemo.mapper.DataExcelMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 导入监听器
+  */
+public class ImportListener<T> extends AnalysisEventListener<T> {
+
+    private final List<T> dataList = new ArrayList<>();
+
+    public List<T> getDataList(){
+        return dataList;
+    }
+
+    @Override
+    public void invoke(T t, AnalysisContext analysisContext) {
+        dataList.add(t);
+    }
+
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+
+    }
+
+}

+ 39 - 0
src/main/java/com/ruoyi/common/utils/excel/TranslateImportListener.java

@@ -0,0 +1,39 @@
+package com.ruoyi.common.utils.excel;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 导入监听器-数据转化
+// * @param <T> 目标对象类型
+ */
+public class TranslateImportListener<T, R> extends AnalysisEventListener<T> {
+
+    private final DataConverter<T, R> converter;
+
+    public TranslateImportListener(DataConverter<T, R> dataConverter){
+        this.converter = dataConverter;
+    }
+
+    private final List<R> dataList = new ArrayList<>();
+
+    public List<R> getDataList(){
+        return dataList;
+    }
+
+    @Override
+    public void invoke(T t, AnalysisContext analysisContext) {
+        R result = converter.getR(t);
+
+        dataList.add(result);
+    }
+
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+
+    }
+
+}

+ 1 - 1
src/main/java/com/ruoyi/common/utils/poi/NoticeImListener.java

@@ -2,7 +2,7 @@ package com.ruoyi.common.utils.poi;
 
 import com.alibaba.excel.context.AnalysisContext;
 import com.alibaba.excel.event.AnalysisEventListener;
-import com.ruoyi.project.VRdemo.domain.NoticeImData;
+import com.ruoyi.project.VRdemo.domain.imData.NoticeImData;
 import com.ruoyi.project.VRdemo.mapper.DataExcelMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 

+ 0 - 41
src/main/java/com/ruoyi/common/utils/poi/PressImportListener.java

@@ -1,41 +0,0 @@
-package com.ruoyi.common.utils.poi;
-
-import com.alibaba.excel.context.AnalysisContext;
-import com.alibaba.excel.event.AnalysisEventListener;
-import com.ruoyi.project.VRdemo.domain.Press;
-import com.ruoyi.project.VRdemo.mapper.DataExcelMapper;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.ArrayList;
-import java.util.List;
-@Component
-public class PressImportListener extends AnalysisEventListener<Press> {
-
-
-    @Autowired
-    private DataExcelMapper DataExcelMapper;
-
-
-    // 存储读取到的数据
-    private List<Press> dataList = new ArrayList<Press>();
-
-    public List<Press> getDataList() {
-        return dataList;
-    }
-
-    public PressImportListener(DataExcelMapper DataExcelMapper) {
-        this.DataExcelMapper = DataExcelMapper;
-    }
-
-    @Override
-    public void invoke(Press press, AnalysisContext analysisContext) {
-        dataList.add(press);
-    }
-
-    // 所有数据解析完成后的回调方法,其中analysisContext包含解析的统计信息
-    @Override
-    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
-
-    }
-}

+ 0 - 40
src/main/java/com/ruoyi/common/utils/poi/ResearchImportListener.java

@@ -1,40 +0,0 @@
-package com.ruoyi.common.utils.poi;
-
-import com.alibaba.excel.context.AnalysisContext;
-import com.alibaba.excel.event.AnalysisEventListener;
-import com.ruoyi.project.VRdemo.domain.Research;
-import com.ruoyi.project.VRdemo.mapper.DataExcelMapper;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class ResearchImportListener extends AnalysisEventListener<Research> {
-
-
-    @Autowired
-    private com.ruoyi.project.VRdemo.mapper.DataExcelMapper DataExcelMapper;
-
-
-    // 存储读取到的数据
-    private List<Research> dataList = new ArrayList<Research>();
-
-    public List<Research> getDataList() {
-        return dataList;
-    }
-
-    public ResearchImportListener(DataExcelMapper DataExcelMapper) {
-        this.DataExcelMapper = DataExcelMapper;
-    }
-
-    @Override
-    public void invoke(Research Research, AnalysisContext analysisContext) {
-        dataList.add(Research);
-    }
-
-    // 所有数据解析完成后的回调方法,其中analysisContext包含解析的统计信息
-    @Override
-    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
-
-    }
-}

+ 1 - 2
src/main/java/com/ruoyi/common/utils/poi/StudyImListener.java

@@ -2,8 +2,7 @@ package com.ruoyi.common.utils.poi;
 
 import com.alibaba.excel.context.AnalysisContext;
 import com.alibaba.excel.event.AnalysisEventListener;
-import com.ruoyi.project.VRdemo.domain.NoticeImData;
-import com.ruoyi.project.VRdemo.domain.StudyImData;
+import com.ruoyi.project.VRdemo.domain.imData.StudyImData;
 import com.ruoyi.project.VRdemo.mapper.DataExcelMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 

+ 0 - 42
src/main/java/com/ruoyi/common/utils/poi/ThesisImportListener.java

@@ -1,42 +0,0 @@
-package com.ruoyi.common.utils.poi;
-
-import com.alibaba.excel.context.AnalysisContext;
-import com.alibaba.excel.event.AnalysisEventListener;
-import com.ruoyi.project.VRdemo.domain.Thesis;
-import com.ruoyi.project.VRdemo.mapper.DataExcelMapper;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@Component
-public class ThesisImportListener extends AnalysisEventListener<Thesis> {
-
-
-    @Autowired
-    private DataExcelMapper DataExcelMapper;
-
-
-    // 存储读取到的数据
-    private List<Thesis> dataList = new ArrayList<Thesis>();
-
-    public List<Thesis> getDataList() {
-        return dataList;
-    }
-
-    public ThesisImportListener(DataExcelMapper DataExcelMapper) {
-        this.DataExcelMapper = DataExcelMapper;
-    }
-
-    @Override
-    public void invoke(Thesis Thesis, AnalysisContext analysisContext) {
-        dataList.add(Thesis);
-    }
-
-    // 所有数据解析完成后的回调方法,其中analysisContext包含解析的统计信息
-    @Override
-    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
-
-    }
-}

+ 139 - 0
src/main/java/com/ruoyi/project/VRdemo/controller/ArchivesUnboundController.java

@@ -0,0 +1,139 @@
+package com.ruoyi.project.VRdemo.controller;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.alibaba.excel.EasyExcel;
+import com.ruoyi.common.utils.excel.ExcelReadUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Anonymous;
+import com.ruoyi.project.VRdemo.domain.imData.ArchivesUnboundImData;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.project.VRdemo.domain.ArchivesUnbound;
+import com.ruoyi.project.VRdemo.service.IArchivesUnboundService;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * 博雅集 Archives Unbound(Gale)Controller
+ *
+ * @author ruoyi
+ * @date 2024-10-06
+ */
+@RestController
+@RequestMapping("/vr/archivesUnbound")
+public class ArchivesUnboundController extends BaseController {
+
+    private final IArchivesUnboundService archivesUnboundService;
+
+    public ArchivesUnboundController(@Autowired IArchivesUnboundService archivesUnboundService) {
+        this.archivesUnboundService = archivesUnboundService;
+    }
+
+    /**
+     * 查询博雅集 Archives Unbound(Gale)列表
+     */
+    @Anonymous
+    @GetMapping("/list")
+    public AjaxResult list(ArchivesUnbound archivesUnbound) {
+        List<ArchivesUnbound> list = archivesUnboundService.selectArchivesUnboundList(archivesUnbound);
+
+        AjaxResult ajaxResult = new AjaxResult();
+        ajaxResult.put("code", 200);
+        ajaxResult.put("rows", list);
+        ajaxResult.put("total", list.size());
+        return ajaxResult;
+    }
+
+    /**
+     * 获取博雅集 Archives Unbound(Gale)详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:ArchivesUnbound:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(archivesUnboundService.selectArchivesUnboundById(id));
+    }
+
+    /**
+     * 新增博雅集 Archives Unbound(Gale)
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:ArchivesUnbound:add')")
+    @Log(title = "博雅集 Archives Unbound(Gale)", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ArchivesUnbound archivesUnbound) {
+        return toAjax(archivesUnboundService.insertArchivesUnbound(archivesUnbound));
+    }
+
+    /**
+     * 修改博雅集 Archives Unbound(Gale)
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:ArchivesUnbound:edit')")
+    @Log(title = "博雅集 Archives Unbound(Gale)", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody ArchivesUnbound archivesUnbound) {
+        return toAjax(archivesUnboundService.updateArchivesUnbound(archivesUnbound));
+    }
+
+    /**
+     * 删除博雅集 Archives Unbound(Gale)
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:ArchivesUnbound:remove')")
+    @Log(title = "博雅集 Archives Unbound(Gale)", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(archivesUnboundService.deleteArchivesUnboundByIds(ids));
+    }
+
+    /**
+     * 导出博雅集 Archives Unbound(Gale)列表
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:ArchivesUnbound:export')")
+    @Log(title = "博雅集 Archives Unbound(Gale)", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, ArchivesUnbound archivesUnbound) {
+        List<ArchivesUnbound> list = archivesUnboundService.selectArchivesUnboundList(archivesUnbound);
+        ExcelUtil<ArchivesUnbound> util = new ExcelUtil<>(ArchivesUnbound.class);
+        util.exportExcel(response, list, "博雅集 Archives Unbound(Gale)数据");
+    }
+
+    /**
+     * 下载导入模板
+     */
+    @Anonymous
+    @PostMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response) throws IOException {
+        List<ArchivesUnboundImData> dataList = new ArrayList<>();
+        EasyExcel.write(response.getOutputStream(), ArchivesUnboundImData.class).sheet("Sheet1").doWrite(dataList);
+    }
+
+    /**
+     * 导入数据
+     */
+    @Anonymous
+    @PostMapping("/import")
+    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws IOException {
+
+        List<ArchivesUnbound> list = ExcelReadUtil.read(file, ArchivesUnboundImData.class, ArchivesUnbound.class);
+
+        // 调用服务层方法进行数据导入处理
+        String message = archivesUnboundService.importData(list, updateSupport);
+
+        // 返回成功响应,携带导入结果信息
+        return AjaxResult.success(message);
+    }
+}

+ 139 - 0
src/main/java/com/ruoyi/project/VRdemo/controller/ConsultationController.java

@@ -0,0 +1,139 @@
+package com.ruoyi.project.VRdemo.controller;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.alibaba.excel.EasyExcel;
+import com.ruoyi.common.utils.excel.ExcelReadUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Anonymous;
+import com.ruoyi.project.VRdemo.domain.imData.ConsultationImData;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.project.VRdemo.domain.Consultation;
+import com.ruoyi.project.VRdemo.service.IConsultationService;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * 博雅集南洋资讯检索Controller
+ *
+ * @author ruoyi
+ * @date 2024-09-26
+ */
+@RestController
+@RequestMapping("/vr/consultation")
+public class ConsultationController extends BaseController {
+
+    private final IConsultationService consultationService;
+
+    public ConsultationController(@Autowired IConsultationService consultationService) {
+        this.consultationService = consultationService;
+    }
+
+    /**
+     * 查询博雅集南洋资讯检索列表
+     */
+    @Anonymous
+    @GetMapping("/list")
+    public AjaxResult list(Consultation consultation) {
+        List<Consultation> list = consultationService.selectConsultationList(consultation);
+
+        AjaxResult ajaxResult = new AjaxResult();
+        ajaxResult.put("code", 200);
+        ajaxResult.put("rows", list);
+        ajaxResult.put("total", list.size());
+        return ajaxResult;
+    }
+
+    /**
+     * 获取博雅集南洋资讯检索详细信息
+     */
+    @Anonymous
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(consultationService.selectConsultationById(id));
+    }
+
+    /**
+     * 新增博雅集南洋资讯检索
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:consultation:add')")
+    @Log(title = "博雅集南洋资讯检索", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody Consultation consultation) {
+        return toAjax(consultationService.insertConsultation(consultation));
+    }
+
+    /**
+     * 修改博雅集南洋资讯检索
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:consultation:edit')")
+    @Log(title = "博雅集南洋资讯检索", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody Consultation consultation) {
+        return toAjax(consultationService.updateConsultation(consultation));
+    }
+
+    /**
+     * 删除博雅集南洋资讯检索
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:consultation:remove')")
+    @Log(title = "博雅集南洋资讯检索", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(consultationService.deleteConsultationByIds(ids));
+    }
+
+    /**
+     * 导出博雅集南洋资讯检索列表
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:consultation:export')")
+    @Log(title = "博雅集南洋资讯检索", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, Consultation consultation) {
+        List<Consultation> list = consultationService.selectConsultationList(consultation);
+        ExcelUtil<Consultation> util = new ExcelUtil<>(Consultation.class);
+        util.exportExcel(response, list, "博雅集南洋资讯检索数据");
+    }
+
+    /**
+     * 下载导入模板
+     */
+    @Anonymous
+    @PostMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response) throws IOException {
+        List<ConsultationImData> dataList = new ArrayList<>();
+        EasyExcel.write(response.getOutputStream(), ConsultationImData.class).sheet("Sheet1").doWrite(dataList);
+    }
+
+    /**
+     * 导入数据
+     */
+    @Anonymous
+    @PostMapping("/import")
+    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws IOException {
+
+        List<Consultation> list = ExcelReadUtil.read(file, ConsultationImData.class, Consultation.class);
+
+        // 调用服务层方法进行数据导入处理
+        String message = consultationService.importData(list, updateSupport);
+
+        // 返回成功响应,携带导入结果信息
+        return AjaxResult.success(message);
+    }
+}

+ 3 - 103
src/main/java/com/ruoyi/project/VRdemo/controller/DataIoController.java

@@ -2,13 +2,12 @@ package com.ruoyi.project.VRdemo.controller;
 
 import com.alibaba.excel.EasyExcel;
 import com.ruoyi.common.utils.poi.*;
-import com.ruoyi.framework.aspectj.lang.annotation.Anonymous;
 import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.project.VRdemo.domain.*;
+import com.ruoyi.project.VRdemo.domain.imData.*;
 import com.ruoyi.project.VRdemo.mapper.DataExcelMapper;
 import com.ruoyi.project.VRdemo.service.*;
-import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -43,14 +42,6 @@ public class DataIoController extends BaseController {
     @Autowired
     private IStudyDataService studyDataService;
 
-    @Autowired
-    private IPressService pressService;
-
-    @Autowired
-    private IThesisService thesisService;
-
-    @Autowired
-    private IResearchService researchService;
 
     //        应用导出数据
     @PreAuthorize("@ss.hasAnyRoles('admin,company')")
@@ -69,18 +60,6 @@ public class DataIoController extends BaseController {
         EasyExcel.write(response.getOutputStream(), ExportApp.class).registerWriteHandler(new CustomCellWriteWeightConfig()).sheet("Sheet1").doWrite(dataList);
     }
 
-    //        应用导入数据
-//    @PreAuthorize("@ss.hasAnyRoles('admin,company')")
-//    @PostMapping("/import/app")
-//    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws IOException {
-//        AppImportListener appimportListener = new AppImportListener(DataExcelMapper);
-//        // 创建EasyExcel读取器4
-//        EasyExcel.read(file.getInputStream(), ImportApp.class, appimportListener).sheet().headRowNumber(1).doRead();
-//
-//        String message = appService.importUser(appimportListener.getAppDataList(), updateSupport);
-//        return success(message);
-//    }
-
     //      应用下载模板
     @PreAuthorize("@ss.hasAnyRoles('admin,company')")
     @PostMapping("/importTemplate/app")
@@ -148,11 +127,9 @@ public class DataIoController extends BaseController {
         List<Map<String, String>> monthDictDataList = DataExcelMapper.getDictDataByType("month_type");
 
         // 创建字典数据的映射,以便后续转换字段值
-        Map<String, String> yearDictMap = yearDictDataList.stream()
-                .collect(Collectors.toMap(map -> map.get("dict_value"), map -> map.get("dict_label")));
+        Map<String, String> yearDictMap = yearDictDataList.stream().collect(Collectors.toMap(map -> map.get("dict_value"), map -> map.get("dict_label")));
 
-        Map<String, String> monthDictMap = monthDictDataList.stream()
-                .collect(Collectors.toMap(map -> map.get("dict_value"), map -> map.get("dict_label")));
+        Map<String, String> monthDictMap = monthDictDataList.stream().collect(Collectors.toMap(map -> map.get("dict_value"), map -> map.get("dict_label")));
 
         // 处理字典字段,将字段值转换为标签
         for (StudyExData studyData : dataList) {
@@ -189,81 +166,4 @@ public class DataIoController extends BaseController {
         return success(message);
     }
 
-    //     研究下载模板
-    @PreAuthorize("@ss.hasAnyRoles('admin,company,xmg')")
-    @PostMapping("/importTemplate/study")
-    public void imStudyTemplate(HttpServletResponse response) throws IOException {
-        List<StudyImData> dataList = new ArrayList<>();
-        EasyExcel.write(response.getOutputStream(), StudyImData.class).sheet("Sheet1").doWrite(dataList);
-    }
-
-
-    /**
-     * 导入press数据
-     */
-    @PreAuthorize("@ss.hasAnyRoles('admin,company')")
-    @PostMapping("/import/press")
-    public AjaxResult importPressData(MultipartFile file, boolean updateSupport) throws IOException {
-        // 初始化监听器以处理导入逻辑
-        PressImportListener dataImportListener = new PressImportListener(DataExcelMapper);
-
-        // 使用EasyExcel读取Excel文件内容
-        EasyExcel.read(file.getInputStream(), Press.class, dataImportListener)
-                .sheet() // 默认读取第一个sheet
-                .headRowNumber(1) // 指定表头所在行数
-                .doRead(); // 执行读取操作
-
-        // 调用服务层方法进行数据导入处理
-        String message = pressService.importPress(dataImportListener.getDataList(), updateSupport);
-
-        // 返回成功响应,携带导入结果信息
-        return AjaxResult.success(message);
-    }
-
-    /**
-     * 导入Thesis数据
-     */
-//    @PreAuthorize("@ss.hasAnyRoles('admin,company')")
-    @Anonymous
-    @PostMapping("/import/thesis")
-    public AjaxResult importThesisData(MultipartFile file, boolean updateSupport) throws IOException {
-        // 初始化监听器以处理导入逻辑
-        ThesisImportListener dataImportListener = new ThesisImportListener(DataExcelMapper);
-
-        // 使用EasyExcel读取Excel文件内容
-        EasyExcel.read(file.getInputStream(), Thesis.class, dataImportListener)
-                .sheet() // 默认读取第一个sheet
-                .headRowNumber(1) // 指定表头所在行数
-                .doRead(); // 执行读取操作
-
-        // 调用服务层方法进行数据导入处理
-        String message = thesisService.importThesis(dataImportListener.getDataList(), updateSupport);
-
-        // 返回成功响应,携带导入结果信息
-        return AjaxResult.success(message);
-    }
-
-    /**
-     * 导入research数据
-     */
-//    @PreAuthorize("@ss.hasAnyRoles('admin,company')")
-    @Anonymous
-    @PostMapping("/import/research")
-    public AjaxResult importResearchData(MultipartFile file, boolean updateSupport) throws IOException {
-        // 初始化监听器以处理导入逻辑
-        ResearchImportListener dataImportListener = new ResearchImportListener(DataExcelMapper);
-
-        // 使用EasyExcel读取Excel文件内容
-        EasyExcel.read(file.getInputStream(), Research.class, dataImportListener)
-                .sheet() // 默认读取第一个sheet
-                .headRowNumber(1) // 指定表头所在行数
-                .doRead(); // 执行读取操作
-
-        // 调用服务层方法进行数据导入处理
-        String message = researchService.importResearch(dataImportListener.getDataList(), updateSupport);
-
-        // 返回成功响应,携带导入结果信息
-        return AjaxResult.success(message);
-    }
-
 }

+ 140 - 0
src/main/java/com/ruoyi/project/VRdemo/controller/EconomyController.java

@@ -0,0 +1,140 @@
+package com.ruoyi.project.VRdemo.controller;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.alibaba.excel.EasyExcel;
+import com.ruoyi.common.utils.excel.ExcelReadUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Anonymous;
+import com.ruoyi.project.VRdemo.domain.imData.EconomyImData;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.project.VRdemo.domain.Economy;
+import com.ruoyi.project.VRdemo.service.IEconomyService;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * 东南亚经济统计Controller
+ *
+ * @author ruoyi
+ * @date 2024-10-06
+ */
+@RestController
+@RequestMapping("/vr/economy")
+public class EconomyController extends BaseController {
+
+    private final IEconomyService economyService;
+
+    public EconomyController(@Autowired IEconomyService economyService) {
+        this.economyService = economyService;
+    }
+
+    /**
+     * 查询东南亚经济统计列表
+     */
+    @Anonymous
+    @GetMapping("/list")
+    public AjaxResult list(Economy economy) {
+        List<Economy> list = economyService.selectEconomyList(economy);
+
+        AjaxResult ajaxResult = new AjaxResult();
+        ajaxResult.put("code", 200);
+        ajaxResult.put("rows", list);
+        ajaxResult.put("total", list.size());
+        return ajaxResult;
+
+    }
+
+    /**
+     * 获取东南亚经济统计详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:economy:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(economyService.selectEconomyById(id));
+    }
+
+    /**
+     * 新增东南亚经济统计
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:economy:add')")
+    @Log(title = "东南亚经济统计", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody Economy economy) {
+        return toAjax(economyService.insertEconomy(economy));
+    }
+
+    /**
+     * 修改东南亚经济统计
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:economy:edit')")
+    @Log(title = "东南亚经济统计", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody Economy economy) {
+        return toAjax(economyService.updateEconomy(economy));
+    }
+
+    /**
+     * 删除东南亚经济统计
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:economy:remove')")
+    @Log(title = "东南亚经济统计", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(economyService.deleteEconomyByIds(ids));
+    }
+
+    /**
+     * 导出东南亚经济统计列表
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:economy:export')")
+    @Log(title = "东南亚经济统计", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, Economy economy) {
+        List<Economy> list = economyService.selectEconomyList(economy);
+        ExcelUtil<Economy> util = new ExcelUtil<>(Economy.class);
+        util.exportExcel(response, list, "东南亚经济统计数据");
+    }
+
+    /**
+     * 下载导入模板
+     */
+    @Anonymous
+    @PostMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response) throws IOException {
+        List<EconomyImData> dataList = new ArrayList<>();
+        EasyExcel.write(response.getOutputStream(), EconomyImData.class).sheet("Sheet1").doWrite(dataList);
+    }
+
+    /**
+     * 导入数据
+     */
+    @Anonymous
+    @PostMapping("/import")
+    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws IOException {
+
+        List<Economy> list = ExcelReadUtil.read(file, EconomyImData.class, Economy.class);
+
+        // 调用服务层方法进行数据导入处理
+        String message = economyService.importData(list, updateSupport);
+
+        // 返回成功响应,携带导入结果信息
+        return AjaxResult.success(message);
+    }
+}

+ 139 - 0
src/main/java/com/ruoyi/project/VRdemo/controller/InstitutionController.java

@@ -0,0 +1,139 @@
+package com.ruoyi.project.VRdemo.controller;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.alibaba.excel.EasyExcel;
+import com.ruoyi.common.utils.excel.ExcelReadUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Anonymous;
+import com.ruoyi.project.VRdemo.domain.imData.InstitutionImData;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.project.VRdemo.domain.Institution;
+import com.ruoyi.project.VRdemo.service.IInstitutionService;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * 博雅集东南亚研究机构Controller
+ *
+ * @author ruoyi
+ * @date 2024-09-26
+ */
+@RestController
+@RequestMapping("/vr/institution")
+public class InstitutionController extends BaseController {
+
+    private final IInstitutionService institutionService;
+
+    public InstitutionController(@Autowired IInstitutionService institutionService) {
+        this.institutionService = institutionService;
+    }
+
+    /**
+     * 查询博雅集东南亚研究机构列表
+     */
+    @Anonymous
+    @GetMapping("/list")
+    public AjaxResult list(Institution institution) {
+        List<Institution> list = institutionService.selectInstitutionList(institution);
+
+        AjaxResult ajaxResult = new AjaxResult();
+        ajaxResult.put("code", 200);
+        ajaxResult.put("rows", list);
+        ajaxResult.put("total", list.size());
+        return ajaxResult;
+    }
+
+    /**
+     * 获取博雅集东南亚研究机构详细信息
+     */
+    @Anonymous
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(institutionService.selectInstitutionById(id));
+    }
+
+    /**
+     * 新增博雅集东南亚研究机构
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:institution:add')")
+    @Log(title = "博雅集东南亚研究机构", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody Institution institution) {
+        return toAjax(institutionService.insertInstitution(institution));
+    }
+
+    /**
+     * 修改博雅集东南亚研究机构
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:institution:edit')")
+    @Log(title = "博雅集东南亚研究机构", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody Institution institution) {
+        return toAjax(institutionService.updateInstitution(institution));
+    }
+
+    /**
+     * 删除博雅集东南亚研究机构
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:institution:remove')")
+    @Log(title = "博雅集东南亚研究机构", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(institutionService.deleteInstitutionByIds(ids));
+    }
+
+    /**
+     * 导出博雅集东南亚研究机构列表
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:institution:export')")
+    @Log(title = "博雅集东南亚研究机构", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, Institution institution) {
+        List<Institution> list = institutionService.selectInstitutionList(institution);
+        ExcelUtil<Institution> util = new ExcelUtil<>(Institution.class);
+        util.exportExcel(response, list, "博雅集东南亚研究机构数据");
+    }
+
+    /**
+     * 下载导入模板
+     */
+    @Anonymous
+    @PostMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response) throws IOException {
+        List<InstitutionImData> dataList = new ArrayList<>();
+        EasyExcel.write(response.getOutputStream(), InstitutionImData.class).sheet("Sheet1").doWrite(dataList);
+    }
+
+    /**
+     * 导入数据
+     */
+    @Anonymous
+    @PostMapping("/import")
+    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws IOException {
+
+        List<Institution> list = ExcelReadUtil.read(file, InstitutionImData.class, Institution.class);
+
+        // 调用服务层方法进行数据导入处理
+        String message = institutionService.importData(list, updateSupport);
+
+        // 返回成功响应,携带导入结果信息
+        return AjaxResult.success(message);
+    }
+}

+ 136 - 0
src/main/java/com/ruoyi/project/VRdemo/controller/LiteratureController.java

@@ -0,0 +1,136 @@
+package com.ruoyi.project.VRdemo.controller;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.alibaba.excel.EasyExcel;
+import com.ruoyi.common.utils.excel.ExcelReadUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Anonymous;
+import com.ruoyi.project.VRdemo.domain.imData.LiteratureImData;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.project.VRdemo.domain.Literature;
+import com.ruoyi.project.VRdemo.service.ILiteratureService;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * 博雅集东南亚重要参考文献汇编Controller
+ *
+ * @author ruoyi
+ * @date 2024-09-26
+ */
+@RestController
+@RequestMapping("/vr/literature")
+public class LiteratureController extends BaseController {
+
+    private final ILiteratureService literatureService;
+
+    public LiteratureController(@Autowired ILiteratureService literatureService) {
+        this.literatureService = literatureService;
+    }
+
+    /**
+     * 查询博雅集东南亚重要参考文献汇编列表
+     */
+    @Anonymous
+    @GetMapping("/list")
+    public TableDataInfo list(Literature literature) {
+        startPage();
+        List<Literature> list = literatureService.selectLiteratureList(literature);
+        return getDataTable(list);
+    }
+
+    /**
+     * 获取博雅集东南亚重要参考文献汇编详细信息
+     */
+    @Anonymous
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(literatureService.selectLiteratureById(id));
+    }
+
+    /**
+     * 新增博雅集东南亚重要参考文献汇编
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:literature:add')")
+    @Log(title = "博雅集东南亚重要参考文献汇编", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody Literature literature) {
+        return toAjax(literatureService.insertLiterature(literature));
+    }
+
+    /**
+     * 修改博雅集东南亚重要参考文献汇编
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:literature:edit')")
+    @Log(title = "博雅集东南亚重要参考文献汇编", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody Literature literature) {
+        return toAjax(literatureService.updateLiterature(literature));
+    }
+
+    /**
+     * 删除博雅集东南亚重要参考文献汇编
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:literature:remove')")
+    @Log(title = "博雅集东南亚重要参考文献汇编", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(literatureService.deleteLiteratureByIds(ids));
+    }
+
+
+    /**
+     * 导出博雅集东南亚重要参考文献汇编列表
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:literature:export')")
+    @Log(title = "博雅集东南亚重要参考文献汇编", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, Literature literature) {
+        List<Literature> list = literatureService.selectLiteratureList(literature);
+        ExcelUtil<Literature> util = new ExcelUtil<>(Literature.class);
+        util.exportExcel(response, list, "博雅集东南亚重要参考文献汇编数据");
+    }
+
+    /**
+     * 下载导入模板
+     */
+    @Anonymous
+    @PostMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response) throws IOException {
+        List<LiteratureImData> dataList = new ArrayList<>();
+        EasyExcel.write(response.getOutputStream(), LiteratureImData.class).sheet("Sheet1").doWrite(dataList);
+    }
+
+    /**
+     * 导入数据
+     */
+    @Anonymous
+    @PostMapping("/import")
+    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws IOException {
+
+        List<Literature> list = ExcelReadUtil.read(file, LiteratureImData.class, Literature.class);
+
+        // 调用服务层方法进行数据导入处理
+        String message = literatureService.importData(list, updateSupport);
+
+        // 返回成功响应,携带导入结果信息
+        return AjaxResult.success(message);
+    }
+}

+ 64 - 15
src/main/java/com/ruoyi/project/VRdemo/controller/PressController.java

@@ -1,13 +1,15 @@
 package com.ruoyi.project.VRdemo.controller;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.List;
 import javax.servlet.http.HttpServletResponse;
 
 import com.alibaba.excel.EasyExcel;
-import com.ruoyi.common.utils.poi.StudyImListener;
+import com.ruoyi.common.utils.excel.ExcelReadUtil;
 import com.ruoyi.framework.aspectj.lang.annotation.Anonymous;
-import com.ruoyi.project.VRdemo.domain.StudyImData;
+import com.ruoyi.project.VRdemo.domain.Thesis;
+import com.ruoyi.project.VRdemo.domain.imData.PressImData;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -37,30 +39,37 @@ import org.springframework.web.multipart.MultipartFile;
 @RestController
 @RequestMapping("/vr/press")
 public class PressController extends BaseController {
-    @Autowired
-    private IPressService pressService;
+
+    private final IPressService pressService;
+
+    public PressController(@Autowired IPressService pressService) {
+        this.pressService = pressService;
+    }
 
     /**
      * 查询press列表
      */
-    @PreAuthorize("@ss.hasPermi('vr:press:list')")
+    @Anonymous
     @GetMapping("/list")
-    public TableDataInfo list(Press press) {
-        startPage();
+    public AjaxResult list(Press press) {
         List<Press> list = pressService.selectPressList(press);
-        return getDataTable(list);
+
+        AjaxResult ajaxResult = new AjaxResult();
+        ajaxResult.put("code", 200);
+        ajaxResult.put("rows", list);
+        ajaxResult.put("total", list.size());
+        return ajaxResult;
     }
 
     /**
-     * 导出press列表
+     * 查询论文列表
      */
-    @PreAuthorize("@ss.hasPermi('vr:press:export')")
-    @Log(title = "press", businessType = BusinessType.EXPORT)
-    @PostMapping("/export")
-    public void export(HttpServletResponse response, Press press) {
+    @PreAuthorize("@ss.hasPermi('VRdemo:thesis:list')")
+    @GetMapping("/allList")
+    public TableDataInfo allList(Press press) {
+        startPage();
         List<Press> list = pressService.selectPressList(press);
-        ExcelUtil<Press> util = new ExcelUtil<Press>(Press.class);
-        util.exportExcel(response, list, "press数据");
+        return getDataTable(list);
     }
 
     /**
@@ -101,4 +110,44 @@ public class PressController extends BaseController {
     public AjaxResult remove(@PathVariable Long[] pressIds) {
         return toAjax(pressService.deletePressByPressIds(pressIds));
     }
+
+    /**
+     * 导出press列表
+     */
+    @PreAuthorize("@ss.hasPermi('vr:press:export')")
+    @Log(title = "press", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, Press press) {
+        List<Press> list = pressService.selectPressList(press);
+        ExcelUtil<Press> util = new ExcelUtil<
+                >(Press.class);
+        util.exportExcel(response, list, "press数据");
+    }
+
+    /**
+     * 下载导入模板
+     */
+    @Anonymous
+    @PostMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response) throws IOException {
+        List<PressImData> dataList = new ArrayList<>();
+        EasyExcel.write(response.getOutputStream(), PressImData.class).sheet("Sheet1").doWrite(dataList);
+    }
+
+    /**
+     * 导入数据
+     */
+    @Anonymous
+    @PostMapping("/import")
+    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws IOException {
+
+        List<Press> list = ExcelReadUtil.read(file, PressImData.class, Press.class);
+
+        // 调用服务层方法进行数据导入处理
+        String message = pressService.importData(list, updateSupport);
+
+        // 返回成功响应,携带导入结果信息
+        return AjaxResult.success(message);
+    }
+
 }

+ 139 - 0
src/main/java/com/ruoyi/project/VRdemo/controller/PublicationController.java

@@ -0,0 +1,139 @@
+package com.ruoyi.project.VRdemo.controller;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.alibaba.excel.EasyExcel;
+import com.ruoyi.common.utils.excel.ExcelReadUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Anonymous;
+import com.ruoyi.project.VRdemo.domain.imData.PublicationImData;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.project.VRdemo.domain.Publication;
+import com.ruoyi.project.VRdemo.service.IPublicationService;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * 东南亚连续出版物Controller
+ *
+ * @author ruoyi
+ * @date 2024-10-06
+ */
+@RestController
+@RequestMapping("/vr/publication")
+public class PublicationController extends BaseController {
+
+    private final IPublicationService publicationService;
+
+    public PublicationController(@Autowired IPublicationService publicationService) {
+        this.publicationService = publicationService;
+    }
+
+    /**
+     * 查询东南亚连续出版物列表
+     */
+    @Anonymous
+    @GetMapping("/list")
+    public AjaxResult list(Publication publication) {
+        List<Publication> list = publicationService.selectPublicationList(publication);
+
+        AjaxResult ajaxResult = new AjaxResult();
+        ajaxResult.put("code", 200);
+        ajaxResult.put("rows", list);
+        ajaxResult.put("total", list.size());
+        return ajaxResult;
+    }
+
+    /**
+     * 获取东南亚连续出版物详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:publication:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(publicationService.selectPublicationById(id));
+    }
+
+    /**
+     * 新增东南亚连续出版物
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:publication:add')")
+    @Log(title = "东南亚连续出版物", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody Publication publication) {
+        return toAjax(publicationService.insertPublication(publication));
+    }
+
+    /**
+     * 修改东南亚连续出版物
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:publication:edit')")
+    @Log(title = "东南亚连续出版物", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody Publication publication) {
+        return toAjax(publicationService.updatePublication(publication));
+    }
+
+    /**
+     * 删除东南亚连续出版物
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:publication:remove')")
+    @Log(title = "东南亚连续出版物", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(publicationService.deletePublicationByIds(ids));
+    }
+
+    /**
+     * 导出东南亚连续出版物列表
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:publication:export')")
+    @Log(title = "东南亚连续出版物", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, Publication publication) {
+        List<Publication> list = publicationService.selectPublicationList(publication);
+        ExcelUtil<Publication> util = new ExcelUtil<>(Publication.class);
+        util.exportExcel(response, list, "东南亚连续出版物数据");
+    }
+
+    /**
+     * 下载导入模板
+     */
+    @Anonymous
+    @PostMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response) throws IOException {
+        List<PublicationImData> dataList = new ArrayList<>();
+        EasyExcel.write(response.getOutputStream(), PublicationImData.class).sheet("Sheet1").doWrite(dataList);
+    }
+
+    /**
+     * 导入数据
+     */
+    @Anonymous
+    @PostMapping("/import")
+    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws IOException {
+
+        List<Publication> list = ExcelReadUtil.read(file, PublicationImData.class, Publication.class);
+
+        // 调用服务层方法进行数据导入处理
+        String message = publicationService.importData(list, updateSupport);
+
+        // 返回成功响应,携带导入结果信息
+        return AjaxResult.success(message);
+    }
+}

+ 76 - 29
src/main/java/com/ruoyi/project/VRdemo/controller/ResearchController.java

@@ -1,7 +1,16 @@
 package com.ruoyi.project.VRdemo.controller;
 
+import java.io.IOException;
+import java.util.ArrayList;
 import java.util.List;
 import javax.servlet.http.HttpServletResponse;
+
+import com.alibaba.excel.EasyExcel;
+import com.ruoyi.common.utils.excel.ExcelReadUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Anonymous;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.VRdemo.domain.Thesis;
+import com.ruoyi.project.VRdemo.domain.imData.ResearchImData;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -19,44 +28,48 @@ import com.ruoyi.project.VRdemo.service.IResearchService;
 import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.framework.web.page.TableDataInfo;
+import org.springframework.web.multipart.MultipartFile;
 
 /**
  * 研究Controller
- * 
+ *
  * @author ruoyi
  * @date 2024-06-23
  */
 @RestController
-@RequestMapping("/VRdemo/research")
-public class ResearchController extends BaseController
-{
-    @Autowired
-    private IResearchService researchService;
+@RequestMapping("/vr/research")
+public class ResearchController extends BaseController {
+
+    private final IResearchService researchService;
+
+    public ResearchController(@Autowired IResearchService researchService) {
+        this.researchService = researchService;
+    }
 
     /**
      * 查询研究列表
      */
-    @PreAuthorize("@ss.hasPermi('VRdemo:research:list')")
+    @Anonymous
     @GetMapping("/list")
-    public TableDataInfo list(Research research)
-    {
-        startPage();
+    public AjaxResult list(Research research) {
         List<Research> list = researchService.selectResearchList(research);
-        return getDataTable(list);
+
+        AjaxResult ajaxResult = new AjaxResult();
+        ajaxResult.put("code", 200);
+        ajaxResult.put("rows", list);
+        ajaxResult.put("total", list.size());
+        return ajaxResult;
     }
 
     /**
-     * 导出研究列表
+     * 查询论文列表
      */
-    @PreAuthorize("@ss.hasPermi('VRdemo:research:export')")
-    @Log(title = "研究", businessType = BusinessType.EXPORT)
-    @PostMapping("/export")
-    public void export(HttpServletResponse response, Research research)
-    {
+    @PreAuthorize("@ss.hasPermi('VRdemo:thesis:list')")
+    @GetMapping("/allList")
+    public TableDataInfo allList(Research research) {
+        startPage();
         List<Research> list = researchService.selectResearchList(research);
-        ExcelUtil<Research> util = new ExcelUtil<Research>(Research.class);
-        util.exportExcel(response, list, "研究数据");
+        return getDataTable(list);
     }
 
     /**
@@ -64,8 +77,7 @@ public class ResearchController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('VRdemo:research:query')")
     @GetMapping(value = "/{id}")
-    public AjaxResult getInfo(@PathVariable("id") Long id)
-    {
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
         return success(researchService.selectResearchById(id));
     }
 
@@ -75,8 +87,7 @@ public class ResearchController extends BaseController
     @PreAuthorize("@ss.hasPermi('VRdemo:research:add')")
     @Log(title = "研究", businessType = BusinessType.INSERT)
     @PostMapping
-    public AjaxResult add(@RequestBody Research research)
-    {
+    public AjaxResult add(@RequestBody Research research) {
         return toAjax(researchService.insertResearch(research));
     }
 
@@ -86,8 +97,7 @@ public class ResearchController extends BaseController
     @PreAuthorize("@ss.hasPermi('VRdemo:research:edit')")
     @Log(title = "研究", businessType = BusinessType.UPDATE)
     @PutMapping
-    public AjaxResult edit(@RequestBody Research research)
-    {
+    public AjaxResult edit(@RequestBody Research research) {
         return toAjax(researchService.updateResearch(research));
     }
 
@@ -96,9 +106,46 @@ public class ResearchController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('VRdemo:research:remove')")
     @Log(title = "研究", businessType = BusinessType.DELETE)
-	@DeleteMapping("/{ids}")
-    public AjaxResult remove(@PathVariable Long[] ids)
-    {
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
         return toAjax(researchService.deleteResearchByIds(ids));
     }
+
+    /**
+     * 导出研究列表
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:research:export')")
+    @Log(title = "研究", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, Research research) {
+        List<Research> list = researchService.selectResearchList(research);
+        ExcelUtil<Research> util = new ExcelUtil<>(Research.class);
+        util.exportExcel(response, list, "研究数据");
+    }
+
+    /**
+     * 下载导入模板
+     */
+    @Anonymous
+    @PostMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response) throws IOException {
+        List<ResearchImData> dataList = new ArrayList<>();
+        EasyExcel.write(response.getOutputStream(), ResearchImData.class).sheet("Sheet1").doWrite(dataList);
+    }
+
+    /**
+     * 导入数据
+     */
+    @Anonymous
+    @PostMapping("/import")
+    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws IOException {
+
+        List<Research> list = ExcelReadUtil.read(file, ResearchImData.class, Research.class);
+
+        // 调用服务层方法进行数据导入处理
+        String message = researchService.importData(list, updateSupport);
+
+        // 返回成功响应,携带导入结果信息
+        return AjaxResult.success(message);
+    }
 }

+ 139 - 0
src/main/java/com/ruoyi/project/VRdemo/controller/SpecialCollectionController.java

@@ -0,0 +1,139 @@
+package com.ruoyi.project.VRdemo.controller;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.alibaba.excel.EasyExcel;
+import com.ruoyi.common.utils.excel.ExcelReadUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Anonymous;
+import com.ruoyi.project.VRdemo.domain.SpecialCollection;
+import com.ruoyi.project.VRdemo.domain.imData.SpecialCollectionImData;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.project.VRdemo.service.ISpecialCollectionService;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * 东南亚大型特藏Controller
+ *
+ * @author ruoyi
+ * @date 2024-10-06
+ */
+@RestController
+@RequestMapping("/vr/specialCollection")
+public class SpecialCollectionController extends BaseController {
+
+    private final ISpecialCollectionService collectionService;
+
+    public SpecialCollectionController(@Autowired ISpecialCollectionService collectionService) {
+        this.collectionService = collectionService;
+    }
+
+    /**
+     * 查询东南亚大型特藏列表
+     */
+    @Anonymous
+    @GetMapping("/list")
+    public AjaxResult list(SpecialCollection specialCollection) {
+        List<SpecialCollection> list = collectionService.selectCollectionList(specialCollection);
+
+        AjaxResult ajaxResult = new AjaxResult();
+        ajaxResult.put("code", 200);
+        ajaxResult.put("rows", list);
+        ajaxResult.put("total", list.size());
+        return ajaxResult;
+    }
+
+    /**
+     * 获取东南亚大型特藏详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:collection:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(collectionService.selectCollectionById(id));
+    }
+
+    /**
+     * 新增东南亚大型特藏
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:collection:add')")
+    @Log(title = "东南亚大型特藏", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody SpecialCollection specialCollection) {
+        return toAjax(collectionService.insertCollection(specialCollection));
+    }
+
+    /**
+     * 修改东南亚大型特藏
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:collection:edit')")
+    @Log(title = "东南亚大型特藏", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody SpecialCollection specialCollection) {
+        return toAjax(collectionService.updateCollection(specialCollection));
+    }
+
+    /**
+     * 删除东南亚大型特藏
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:collection:remove')")
+    @Log(title = "东南亚大型特藏", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(collectionService.deleteCollectionByIds(ids));
+    }
+
+    /**
+     * 导出东南亚大型特藏列表
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:collection:export')")
+    @Log(title = "东南亚大型特藏", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, SpecialCollection specialCollection) {
+        List<SpecialCollection> list = collectionService.selectCollectionList(specialCollection);
+        ExcelUtil<SpecialCollection> util = new ExcelUtil<>(SpecialCollection.class);
+        util.exportExcel(response, list, "东南亚大型特藏数据");
+    }
+
+    /**
+     * 下载导入模板
+     */
+    @Anonymous
+    @PostMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response) throws IOException {
+        List<SpecialCollectionImData> dataList = new ArrayList<>();
+        EasyExcel.write(response.getOutputStream(), SpecialCollectionImData.class).sheet("Sheet1").doWrite(dataList);
+    }
+
+    /**
+     * 导入数据
+     */
+    @Anonymous
+    @PostMapping("/import")
+    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws IOException {
+
+        List<SpecialCollection> list = ExcelReadUtil.read(file, SpecialCollectionImData.class, SpecialCollection.class);
+
+        // 调用服务层方法进行数据导入处理
+        String message = collectionService.importData(list, updateSupport);
+
+        // 返回成功响应,携带导入结果信息
+        return AjaxResult.success(message);
+    }
+
+}

+ 74 - 28
src/main/java/com/ruoyi/project/VRdemo/controller/ThesisController.java

@@ -1,7 +1,14 @@
 package com.ruoyi.project.VRdemo.controller;
 
+import java.io.IOException;
+import java.util.ArrayList;
 import java.util.List;
 import javax.servlet.http.HttpServletResponse;
+
+import com.alibaba.excel.EasyExcel;
+import com.ruoyi.common.utils.excel.ExcelReadUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Anonymous;
+import com.ruoyi.project.VRdemo.domain.imData.ThesisImData;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -20,43 +27,48 @@ import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.web.page.TableDataInfo;
+import org.springframework.web.multipart.MultipartFile;
 
 /**
  * 论文Controller
- * 
+ *
  * @author ruoyi
  * @date 2024-06-23
  */
 @RestController
-@RequestMapping("/VRdemo/thesis")
-public class ThesisController extends BaseController
-{
-    @Autowired
-    private IThesisService thesisService;
+@RequestMapping("/vr/thesis")
+public class ThesisController extends BaseController {
+
+    private final IThesisService thesisService;
+
+    public ThesisController(@Autowired IThesisService thesisService) {
+        this.thesisService = thesisService;
+    }
 
     /**
      * 查询论文列表
      */
-    @PreAuthorize("@ss.hasPermi('VRdemo:thesis:list')")
+    @Anonymous
     @GetMapping("/list")
-    public TableDataInfo list(Thesis thesis)
-    {
-        startPage();
+    public AjaxResult list(Thesis thesis) {
         List<Thesis> list = thesisService.selectThesisList(thesis);
-        return getDataTable(list);
+
+        AjaxResult ajaxResult = new AjaxResult();
+        ajaxResult.put("code", 200);
+        ajaxResult.put("rows", list);
+        ajaxResult.put("total", list.size());
+        return ajaxResult;
     }
 
     /**
-     * 导出论文列表
+     * 查询论文列表
      */
-    @PreAuthorize("@ss.hasPermi('VRdemo:thesis:export')")
-    @Log(title = "论文", businessType = BusinessType.EXPORT)
-    @PostMapping("/export")
-    public void export(HttpServletResponse response, Thesis thesis)
-    {
+    @PreAuthorize("@ss.hasPermi('VRdemo:thesis:list')")
+    @GetMapping("/allList")
+    public TableDataInfo allList(Thesis thesis) {
+        startPage();
         List<Thesis> list = thesisService.selectThesisList(thesis);
-        ExcelUtil<Thesis> util = new ExcelUtil<Thesis>(Thesis.class);
-        util.exportExcel(response, list, "论文数据");
+        return getDataTable(list);
     }
 
     /**
@@ -64,8 +76,7 @@ public class ThesisController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('VRdemo:thesis:query')")
     @GetMapping(value = "/{id}")
-    public AjaxResult getInfo(@PathVariable("id") Long id)
-    {
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
         return success(thesisService.selectThesisById(id));
     }
 
@@ -75,8 +86,7 @@ public class ThesisController extends BaseController
     @PreAuthorize("@ss.hasPermi('VRdemo:thesis:add')")
     @Log(title = "论文", businessType = BusinessType.INSERT)
     @PostMapping
-    public AjaxResult add(@RequestBody Thesis thesis)
-    {
+    public AjaxResult add(@RequestBody Thesis thesis) {
         return toAjax(thesisService.insertThesis(thesis));
     }
 
@@ -86,8 +96,7 @@ public class ThesisController extends BaseController
     @PreAuthorize("@ss.hasPermi('VRdemo:thesis:edit')")
     @Log(title = "论文", businessType = BusinessType.UPDATE)
     @PutMapping
-    public AjaxResult edit(@RequestBody Thesis thesis)
-    {
+    public AjaxResult edit(@RequestBody Thesis thesis) {
         return toAjax(thesisService.updateThesis(thesis));
     }
 
@@ -96,9 +105,46 @@ public class ThesisController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('VRdemo:thesis:remove')")
     @Log(title = "论文", businessType = BusinessType.DELETE)
-	@DeleteMapping("/{ids}")
-    public AjaxResult remove(@PathVariable Long[] ids)
-    {
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
         return toAjax(thesisService.deleteThesisByIds(ids));
     }
+
+    /**
+     * 导出论文列表
+     */
+    @PreAuthorize("@ss.hasPermi('VRdemo:thesis:export')")
+    @Log(title = "论文", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, Thesis thesis) {
+        List<Thesis> list = thesisService.selectThesisList(thesis);
+        ExcelUtil<Thesis> util = new ExcelUtil<>(Thesis.class);
+        util.exportExcel(response, list, "论文数据");
+    }
+
+    /**
+     * 下载导入模板
+     */
+    @Anonymous
+    @PostMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response) throws IOException {
+        List<ThesisImData> dataList = new ArrayList<>();
+        EasyExcel.write(response.getOutputStream(), ThesisImData.class).sheet("Sheet1").doWrite(dataList);
+    }
+
+    /**
+     * 导入数据
+     */
+    @Anonymous
+    @PostMapping("/import")
+    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws IOException {
+
+        List<Thesis> list = ExcelReadUtil.read(file, ThesisImData.class, Thesis.class);
+
+        // 调用服务层方法进行数据导入处理
+        String message = thesisService.importData(list, updateSupport);
+
+        // 返回成功响应,携带导入结果信息
+        return AjaxResult.success(message);
+    }
 }

+ 95 - 0
src/main/java/com/ruoyi/project/VRdemo/domain/ArchivesUnbound.java

@@ -0,0 +1,95 @@
+package com.ruoyi.project.VRdemo.domain;
+
+import com.ruoyi.common.utils.StringUtils;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+
+/**
+ * 博雅集 Archives Unbound(Gale)对象 vr_archives_unbound
+ *
+ * @author ruoyi
+ * @date 2024-10-06
+ */
+public class ArchivesUnbound extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    private Long id;
+
+    /**
+     * 英文名
+     */
+    @Excel(name = "英文名")
+    private String englishName;
+
+    /**
+     * 中文名
+     */
+    @Excel(name = "中文名")
+    private String chineseName;
+
+    /**
+     * 简介
+     */
+    @Excel(name = "简介")
+    private String introduce;
+
+    /**
+     * 访问地址
+     */
+    @Excel(name = "访问地址")
+    private String link;
+
+    public String getTitle() {
+        return StringUtils.isEmpty(chineseName) ? englishName : chineseName;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setEnglishName(String englishName) {
+        this.englishName = englishName;
+    }
+
+    public String getEnglishName() {
+        return englishName;
+    }
+
+    public void setChineseName(String chineseName) {
+        this.chineseName = chineseName;
+    }
+
+    public String getChineseName() {
+        return chineseName;
+    }
+
+    public void setIntroduce(String introduce) {
+        this.introduce = introduce;
+    }
+
+    public String getIntroduce() {
+        return introduce;
+    }
+
+    public void setLink(String link) {
+        this.link = link;
+    }
+
+    public String getLink() {
+        return link;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).append("id", getId()).append("englishName", getEnglishName()).append("chineseName", getChineseName()).append("introduce", getIntroduce()).append("link", getLink()).append("createTime", getCreateTime()).append("createBy", getCreateBy()).append("updateTime", getUpdateTime()).append("updateBy", getUpdateBy()).toString();
+    }
+}

+ 138 - 0
src/main/java/com/ruoyi/project/VRdemo/domain/Consultation.java

@@ -0,0 +1,138 @@
+package com.ruoyi.project.VRdemo.domain;
+
+import com.ruoyi.common.utils.StringUtils;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+
+/**
+ * 博雅集南洋资讯检索对象 vr_consultation
+ *
+ * @author ruoyi
+ * @date 2024-09-26
+ */
+public class Consultation extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    private Long id;
+
+    /**
+     * 所属区
+     */
+    @Excel(name = "所属区")
+    private String affiliation;
+
+    /**
+     * 所属地
+     */
+    @Excel(name = "所属地")
+    private String location;
+
+    /**
+     * 机构中文名
+     */
+    @Excel(name = "机构中文名")
+    private String chineseName;
+
+    /**
+     * 机构英文名
+     */
+    @Excel(name = "机构英文名")
+    private String englishName;
+
+    /**
+     * 机构访问地址
+     */
+    @Excel(name = "机构访问地址")
+    private String link;
+
+    /**
+     * 机构介绍
+     */
+    @Excel(name = "机构介绍")
+    private String introduce;
+
+    public Consultation() {
+    }
+
+    public String getTitle() {
+        return StringUtils.isEmpty(chineseName) ? englishName : chineseName;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public String getAffiliation() {
+        return affiliation;
+    }
+
+    public void setAffiliation(String affiliation) {
+        this.affiliation = affiliation;
+    }
+
+    public String getLocation() {
+        return location;
+    }
+
+    public void setLocation(String location) {
+        this.location = location;
+    }
+
+    public void setChineseName(String chineseName) {
+        this.chineseName = chineseName;
+    }
+
+    public String getChineseName() {
+        return chineseName;
+    }
+
+    public void setEnglishName(String englishName) {
+        this.englishName = englishName;
+    }
+
+    public String getEnglishName() {
+        return englishName;
+    }
+
+    public void setLink(String link) {
+        this.link = link;
+    }
+
+    public String getLink() {
+        return link;
+    }
+
+    public void setIntroduce(String introduce) {
+        this.introduce = introduce;
+    }
+
+    public String getIntroduce() {
+        return introduce;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("affiliation", getAffiliation())
+                .append("location", getLocation())
+                .append("chineseName", getChineseName())
+                .append("englishName", getEnglishName())
+                .append("link", getLink())
+                .append("introduce", getIntroduce())
+                .append("createTime", getCreateTime())
+                .append("createBy", getCreateBy())
+                .append("updateTime", getUpdateTime())
+                .append("updateBy", getUpdateBy())
+                .toString();
+    }
+}

+ 116 - 0
src/main/java/com/ruoyi/project/VRdemo/domain/Economy.java

@@ -0,0 +1,116 @@
+package com.ruoyi.project.VRdemo.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+
+/**
+ * 东南亚经济统计对象 vr_economy
+ * 
+ * @author ruoyi
+ * @date 2024-10-06
+ */
+public class Economy extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    private Long id;
+
+    /**
+     * 所属区
+     */
+    @Excel(name = "所属区")
+    private String affiliation;
+
+    /**
+     * 所属地
+     */
+    @Excel(name = "所属地")
+    private String location;
+
+    /**
+     * 名称
+     */
+    @Excel(name = "名称")
+    private String title;
+
+    /**
+     * 链接
+     */
+    @Excel(name = "链接")
+    private String link;
+
+    /**
+     * 简介
+     */
+    @Excel(name = "简介")
+    private String introduce;
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setAffiliation(String affiliation) {
+        this.affiliation = affiliation;
+    }
+
+    public String getAffiliation() {
+        return affiliation;
+    }
+
+    public void setLocation(String location) {
+        this.location = location;
+    }
+
+    public String getLocation() {
+        return location;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setLink(String link) {
+        this.link = link;
+    }
+
+    public String getLink() {
+        return link;
+    }
+
+    public void setIntroduce(String introduce) {
+        this.introduce = introduce;
+    }
+
+    public String getIntroduce() {
+        return introduce;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("affiliation", getAffiliation())
+            .append("location", getLocation())
+            .append("title", getTitle())
+            .append("link", getLink())
+            .append("introduce", getIntroduce())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .toString();
+    }
+}

+ 126 - 0
src/main/java/com/ruoyi/project/VRdemo/domain/Institution.java

@@ -0,0 +1,126 @@
+package com.ruoyi.project.VRdemo.domain;
+
+import com.ruoyi.common.utils.StringUtils;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+
+/**
+ * 博雅集东南亚研究机构对象 vr_institution
+ *
+ * @author ruoyi
+ * @date 2024-09-26
+ */
+public class Institution extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    private Long id;
+
+    /**
+     * 所属区
+     */
+    @Excel(name = "所属区")
+    private String affiliation;
+
+    /**
+     * 所属地
+     */
+    @Excel(name = "所属地")
+    private String location;
+
+    /**
+     * 机构中文名
+     */
+    @Excel(name = "机构中文名")
+    private String chineseName;
+
+    /**
+     * 机构英文名
+     */
+    @Excel(name = "机构英文名")
+    private String englishName;
+
+    /**
+     * 机构访问地址
+     */
+    @Excel(name = "机构访问地址")
+    private String link;
+
+    /**
+     * 机构介绍
+     */
+    @Excel(name = "机构介绍")
+    private String introduce;
+
+    public Institution() {
+    }
+
+    public String getTitle() {
+        return StringUtils.isEmpty(chineseName) ? englishName : chineseName;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public String getAffiliation() {
+        return affiliation;
+    }
+
+    public void setAffiliation(String affiliation) {
+        this.affiliation = affiliation;
+    }
+
+    public String getLocation() {
+        return location;
+    }
+
+    public void setLocation(String location) {
+        this.location = location;
+    }
+
+    public void setChineseName(String chineseName) {
+        this.chineseName = chineseName;
+    }
+
+    public String getChineseName() {
+        return chineseName;
+    }
+
+    public void setEnglishName(String englishName) {
+        this.englishName = englishName;
+    }
+
+    public String getEnglishName() {
+        return englishName;
+    }
+
+    public void setLink(String link) {
+        this.link = link;
+    }
+
+    public String getLink() {
+        return link;
+    }
+
+    public void setIntroduce(String introduce) {
+        this.introduce = introduce;
+    }
+
+    public String getIntroduce() {
+        return introduce;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).append("id", getId()).append("affiliation", getAffiliation()).append("location", getLocation()).append("chineseName", getChineseName()).append("englishName", getEnglishName()).append("link", getLink()).append("introduce", getIntroduce()).append("createTime", getCreateTime()).append("createBy", getCreateBy()).append("updateTime", getUpdateTime()).append("updateBy", getUpdateBy()).toString();
+    }
+}

+ 79 - 0
src/main/java/com/ruoyi/project/VRdemo/domain/Literature.java

@@ -0,0 +1,79 @@
+package com.ruoyi.project.VRdemo.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+
+/**
+ * 博雅集东南亚重要参考文献汇编对象 vr_literature
+ *
+ * @author ruoyi
+ * @date 2024-09-26
+ */
+public class Literature extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    private Long id;
+
+    /**
+     * 文献名称
+     */
+    @Excel(name = "文献名称")
+    private String title;
+
+    /**
+     * 文献访问地址
+     */
+    @Excel(name = "文献访问地址")
+    private String url;
+
+    /**
+     * 出版日期
+     */
+    @Excel(name = "出版日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private String publicationTime;
+
+    public Literature() {
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setPublicationTime(String publicationTime) {
+        this.publicationTime = publicationTime;
+    }
+
+    public String getPublicationTime() {
+        return publicationTime;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).append("id", getId()).append("title", getTitle()).append("url", getUrl()).append("publicationTime", getPublicationTime()).append("createTime", getCreateTime()).append("createBy", getCreateBy()).append("updateTime", getUpdateTime()).append("updateBy", getUpdateBy()).toString();
+    }
+}

+ 0 - 4
src/main/java/com/ruoyi/project/VRdemo/domain/Press.java

@@ -4,15 +4,11 @@ import java.util.Date;
 
 import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelProperty;
-import com.alibaba.excel.annotation.format.DateTimeFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
-import com.ruoyi.framework.aspectj.lang.annotation.Excel;
 import com.ruoyi.framework.web.domain.BaseEntity;
 
-import static org.apache.xmlbeans.XmlBeans.getTitle;
-
 /**
  * press对象 vr_press
  *

+ 115 - 0
src/main/java/com/ruoyi/project/VRdemo/domain/Publication.java

@@ -0,0 +1,115 @@
+package com.ruoyi.project.VRdemo.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+
+/**
+ * 东南亚连续出版物对象 vr_publication
+ *
+ * @author ruoyi
+ * @date 2024-10-06
+ */
+public class Publication extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    private Long id;
+
+    /**
+     * 所属区
+     */
+    @Excel(name = "所属区")
+    private String affiliation;
+
+    /**
+     * 所属地
+     */
+    @Excel(name = "所属地")
+    private String location;
+
+    /**
+     * 名称
+     */
+    @Excel(name = "名称")
+    private String title;
+
+    /**
+     * 链接
+     */
+    @Excel(name = "链接")
+    private String link;
+
+    /**
+     * 简介
+     */
+    @Excel(name = "简介")
+    private String introduce;
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setAffiliation(String affiliation) {
+        this.affiliation = affiliation;
+    }
+
+    public String getAffiliation() {
+        return affiliation;
+    }
+
+    public void setLocation(String location) {
+        this.location = location;
+    }
+
+    public String getLocation() {
+        return location;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setLink(String link) {
+        this.link = link;
+    }
+
+    public String getLink() {
+        return link;
+    }
+
+    public void setIntroduce(String introduce) {
+        this.introduce = introduce;
+    }
+
+    public String getIntroduce() {
+        return introduce;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("affiliation", getAffiliation())
+                .append("location", getLocation())
+                .append("title", getTitle())
+                .append("link", getLink())
+                .append("introduce", getIntroduce())
+                .append("createBy", getCreateBy())
+                .append("createTime", getCreateTime())
+                .append("updateBy", getUpdateBy())
+                .append("updateTime", getUpdateTime())
+                .toString();
+    }
+}

+ 4 - 4
src/main/java/com/ruoyi/project/VRdemo/domain/Research.java

@@ -37,9 +37,9 @@ public class Research extends BaseEntity
     private String topic;
 
     /** 出版年 */
-    @JsonFormat(pattern = "yyyy")
+//    @JsonFormat(pattern = "yyyy")
     @Excel(name = "出版年")
-    private Date publicationTime;
+    private String publicationTime;
 
     /** 分类号 */
     @Excel(name = "分类号")
@@ -90,12 +90,12 @@ public class Research extends BaseEntity
     {
         return topic;
     }
-    public void setPublicationTime(Date publicationTime)
+    public void setPublicationTime(String publicationTime)
     {
         this.publicationTime = publicationTime;
     }
 
-    public Date getPublicationTime()
+    public String getPublicationTime()
     {
         return publicationTime;
     }

+ 85 - 0
src/main/java/com/ruoyi/project/VRdemo/domain/SpecialCollection.java

@@ -0,0 +1,85 @@
+package com.ruoyi.project.VRdemo.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+
+/**
+ * 东南亚大型特藏对象 vr_collection
+ *
+ * @author ruoyi
+ * @date 2024-10-06
+ */
+public class SpecialCollection extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    private Long id;
+
+    /**
+     * 标题
+     */
+    @Excel(name = "标题")
+    private String title;
+
+    /**
+     * 内容
+     */
+    @Excel(name = "内容")
+    private String content;
+
+    /**
+     * 网址
+     */
+    @Excel(name = "网址")
+    private String link;
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setLink(String link) {
+        this.link = link;
+    }
+
+    public String getLink() {
+        return link;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("title", getTitle())
+                .append("content", getContent())
+                .append("link", getLink())
+                .append("createTime", getCreateTime())
+                .append("createBy", getCreateBy())
+                .append("updateTime", getUpdateTime())
+                .append("updateBy", getUpdateBy())
+                .toString();
+    }
+}

+ 83 - 0
src/main/java/com/ruoyi/project/VRdemo/domain/imData/ArchivesUnboundImData.java

@@ -0,0 +1,83 @@
+package com.ruoyi.project.VRdemo.domain.imData;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.utils.excel.DataConverter;
+import com.ruoyi.project.VRdemo.domain.ArchivesUnbound;
+
+public class ArchivesUnboundImData implements BaseImData<ArchivesUnboundImData, ArchivesUnbound> {
+
+    @ExcelProperty("id")
+    private Long id;
+
+    @ExcelProperty("英文名")
+    private String englishName;
+
+    @ExcelProperty("中文名")
+    private String chineseName;
+
+    @ExcelProperty("简介")
+    private String introduce;
+
+    @ExcelProperty("访问地址")
+    private String link;
+
+    @ExcelIgnore
+    DataConverter<ArchivesUnboundImData, ArchivesUnbound> converter = new DataConverter<>() {
+        @Override
+        protected ArchivesUnbound convert(ArchivesUnboundImData archivesUnboundImData) {
+            ArchivesUnbound archivesUnbound = new ArchivesUnbound();
+            archivesUnbound.setId(archivesUnboundImData.getId());
+            archivesUnbound.setChineseName(archivesUnboundImData.getChineseName());
+            archivesUnbound.setEnglishName(archivesUnboundImData.getEnglishName());
+            archivesUnbound.setLink(archivesUnboundImData.getLink());
+            archivesUnbound.setIntroduce(archivesUnboundImData.getIntroduce());
+            return archivesUnbound;
+        }
+    };
+
+    @Override
+    public DataConverter<ArchivesUnboundImData, ArchivesUnbound> getConverter() {
+        return converter;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getLink() {
+        return link;
+    }
+
+    public void setLink(String link) {
+        this.link = link;
+    }
+
+    public String getIntroduce() {
+        return introduce;
+    }
+
+    public void setIntroduce(String introduce) {
+        this.introduce = introduce;
+    }
+
+    public String getChineseName() {
+        return chineseName;
+    }
+
+    public void setChineseName(String chineseName) {
+        this.chineseName = chineseName;
+    }
+
+    public String getEnglishName() {
+        return englishName;
+    }
+
+    public void setEnglishName(String englishName) {
+        this.englishName = englishName;
+    }
+}

+ 7 - 0
src/main/java/com/ruoyi/project/VRdemo/domain/imData/BaseImData.java

@@ -0,0 +1,7 @@
+package com.ruoyi.project.VRdemo.domain.imData;
+
+import com.ruoyi.common.utils.excel.DataConverter;
+
+public interface BaseImData<T, R> {
+    DataConverter<T, R> getConverter();
+}

+ 107 - 0
src/main/java/com/ruoyi/project/VRdemo/domain/imData/ConsultationImData.java

@@ -0,0 +1,107 @@
+package com.ruoyi.project.VRdemo.domain.imData;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.utils.excel.DataConverter;
+import com.ruoyi.project.VRdemo.domain.Consultation;
+
+public class ConsultationImData implements BaseImData<ConsultationImData, Consultation> {
+
+    @ExcelProperty("序号")
+    private Long id;
+
+    @ExcelProperty("所属区")
+    private String affiliation;
+
+    @ExcelProperty("所属地")
+    private String location;
+
+    @ExcelProperty("机构中文名")
+    private String chineseName;
+
+    @ExcelProperty("机构英文名")
+    private String englishName;
+
+    @ExcelProperty("机构访问地址")
+    private String link;
+
+    @ExcelProperty("机构介绍")
+    private String introduce;
+
+    @ExcelIgnore
+    DataConverter<ConsultationImData, Consultation> converter = new DataConverter<>() {
+        @Override
+        protected Consultation convert(ConsultationImData consultationImData) {
+            Consultation consultation = new Consultation();
+            consultation.setId(consultationImData.getId());
+            consultation.setAffiliation(consultationImData.getAffiliation());
+            consultation.setLocation(consultationImData.getLocation());
+            consultation.setChineseName(consultationImData.getChineseName());
+            consultation.setEnglishName(consultationImData.getEnglishName());
+            consultation.setLink(consultationImData.getLink());
+            consultation.setIntroduce(consultationImData.getIntroduce());
+            return consultation;
+        }
+    };
+
+    @Override
+    public DataConverter<ConsultationImData, Consultation> getConverter() {
+        return converter;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public String getLocation() {
+        return location;
+    }
+
+    public void setLocation(String location) {
+        this.location = location;
+    }
+
+    public String getAffiliation() {
+        return affiliation;
+    }
+
+    public void setAffiliation(String affiliation) {
+        this.affiliation = affiliation;
+    }
+
+    public void setChineseName(String chineseName) {
+        this.chineseName = chineseName;
+    }
+
+    public String getChineseName() {
+        return chineseName;
+    }
+
+    public void setEnglishName(String englishName) {
+        this.englishName = englishName;
+    }
+
+    public String getEnglishName() {
+        return englishName;
+    }
+
+    public void setLink(String link) {
+        this.link = link;
+    }
+
+    public String getLink() {
+        return link;
+    }
+
+    public void setIntroduce(String introduce) {
+        this.introduce = introduce;
+    }
+
+    public String getIntroduce() {
+        return introduce;
+    }
+}

+ 95 - 0
src/main/java/com/ruoyi/project/VRdemo/domain/imData/EconomyImData.java

@@ -0,0 +1,95 @@
+package com.ruoyi.project.VRdemo.domain.imData;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.utils.excel.DataConverter;
+import com.ruoyi.project.VRdemo.domain.Economy;
+
+public class EconomyImData implements BaseImData<EconomyImData, Economy> {
+
+    @ExcelProperty("id")
+    private Long id;
+
+    @ExcelProperty("所属区")
+    private String affiliation;
+
+    @ExcelProperty("所属地")
+    private String location;
+
+    @ExcelProperty("名称")
+    private String title;
+
+    @ExcelProperty("链接")
+    private String link;
+
+    @ExcelProperty("简介")
+    private String introduce;
+
+    @ExcelIgnore
+    DataConverter<EconomyImData, Economy> converter = new DataConverter<>() {
+        @Override
+        protected Economy convert(EconomyImData economyImData) {
+            Economy economy = new Economy();
+            economy.setId(economyImData.getId());
+            economy.setAffiliation(economyImData.getAffiliation());
+            economy.setLocation(economyImData.getLocation());
+            economy.setTitle(economyImData.getTitle());
+            economy.setLink(economyImData.getLink());
+            economy.setIntroduce(economyImData.getIntroduce());
+            return economy;
+        }
+    };
+
+    @Override
+    public DataConverter<EconomyImData, Economy> getConverter() {
+        return converter;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setAffiliation(String affiliation) {
+        this.affiliation = affiliation;
+    }
+
+    public String getAffiliation() {
+        return affiliation;
+    }
+
+    public void setLocation(String location) {
+        this.location = location;
+    }
+
+    public String getLocation() {
+        return location;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setLink(String link) {
+        this.link = link;
+    }
+
+    public String getLink() {
+        return link;
+    }
+
+    public void setIntroduce(String introduce) {
+        this.introduce = introduce;
+    }
+
+    public String getIntroduce() {
+        return introduce;
+    }
+}

+ 108 - 0
src/main/java/com/ruoyi/project/VRdemo/domain/imData/InstitutionImData.java

@@ -0,0 +1,108 @@
+package com.ruoyi.project.VRdemo.domain.imData;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.utils.excel.DataConverter;
+import com.ruoyi.project.VRdemo.domain.Institution;
+
+public class InstitutionImData implements BaseImData<InstitutionImData, Institution> {
+
+    @ExcelProperty("序号")
+    private Long id;
+
+    @ExcelProperty("所属区")
+    private String affiliation;
+
+    @ExcelProperty("所属地")
+    private String location;
+
+    @ExcelProperty("机构中文名")
+    private String chineseName;
+
+    @ExcelProperty("机构英文名")
+    private String englishName;
+
+    @ExcelProperty("机构访问地址")
+    private String link;
+
+    @ExcelProperty("机构介绍")
+    private String introduce;
+
+    @ExcelIgnore
+    DataConverter<InstitutionImData, Institution> converter = new DataConverter<>() {
+        @Override
+        protected Institution convert(InstitutionImData institutionImData) {
+            Institution institution = new Institution();
+            institution.setId(institutionImData.getId());
+            institution.setChineseName(institutionImData.getChineseName());
+            institution.setEnglishName(institutionImData.getEnglishName());
+            institution.setLink(institutionImData.getLink());
+            institution.setIntroduce(institutionImData.getIntroduce());
+            institution.setAffiliation(institutionImData.getAffiliation());
+            institution.setLocation(institutionImData.getLocation());
+            return institution;
+        }
+    };
+
+    @Override
+    public DataConverter<InstitutionImData, Institution> getConverter() {
+        return converter;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public String getLocation() {
+        return location;
+    }
+
+    public void setLocation(String location) {
+        this.location = location;
+    }
+
+    public String getAffiliation() {
+        return affiliation;
+    }
+
+    public void setAffiliation(String affiliation) {
+        this.affiliation = affiliation;
+    }
+
+    public void setChineseName(String chineseName) {
+        this.chineseName = chineseName;
+    }
+
+    public String getChineseName() {
+        return chineseName;
+    }
+
+    public void setEnglishName(String englishName) {
+        this.englishName = englishName;
+    }
+
+    public String getEnglishName() {
+        return englishName;
+    }
+
+    public void setLink(String link) {
+        this.link = link;
+    }
+
+    public String getLink() {
+        return link;
+    }
+
+    public void setIntroduce(String introduce) {
+        this.introduce = introduce;
+    }
+
+    public String getIntroduce() {
+        return introduce;
+    }
+
+}

+ 71 - 0
src/main/java/com/ruoyi/project/VRdemo/domain/imData/LiteratureImData.java

@@ -0,0 +1,71 @@
+package com.ruoyi.project.VRdemo.domain.imData;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.utils.excel.DataConverter;
+import com.ruoyi.project.VRdemo.domain.Literature;
+
+public class LiteratureImData implements BaseImData<LiteratureImData, Literature> {
+
+    @ExcelProperty("序号")
+    private Long id;
+
+    @ExcelProperty("文献名称")
+    private String title;
+
+    @ExcelProperty("文献访问地址")
+    private String url;
+
+    @ExcelProperty("出版日期")
+    private String publicationTime;
+
+    @ExcelIgnore
+    DataConverter<LiteratureImData, Literature> converter = new DataConverter<>(){
+        @Override
+        protected Literature convert(LiteratureImData literatureImData) {
+            Literature literature = new Literature();
+            literature.setId(literatureImData.getId());
+            literature.setTitle(literatureImData.getTitle());
+            literature.setUrl(literatureImData.getUrl());
+            literature.setPublicationTime(literatureImData.getPublicationTime());
+            return literature;
+        }
+    };
+
+    @Override
+    public DataConverter<LiteratureImData, Literature> getConverter() {
+        return converter;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setPublicationTime(String publicationTime) {
+        this.publicationTime = publicationTime;
+    }
+
+    public String getPublicationTime() {
+        return publicationTime;
+    }
+}

+ 1 - 3
src/main/java/com/ruoyi/project/VRdemo/domain/NoticeImData.java

@@ -1,9 +1,7 @@
-package com.ruoyi.project.VRdemo.domain;
+package com.ruoyi.project.VRdemo.domain.imData;
 
 import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelProperty;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 
 public class NoticeImData {
     private static final long serialVersionUID = 1L;

+ 160 - 0
src/main/java/com/ruoyi/project/VRdemo/domain/imData/PressImData.java

@@ -0,0 +1,160 @@
+package com.ruoyi.project.VRdemo.domain.imData;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.utils.excel.DataConverter;
+import com.ruoyi.project.VRdemo.domain.Press;
+
+public class PressImData implements BaseImData<PressImData, Press> {
+
+    @ExcelProperty("序号")
+    private Long id;
+
+    @ExcelProperty("题目")
+    private String title;
+
+    @ExcelProperty("作者")
+    private String author;
+
+    @ExcelProperty("刊名")
+    private String pressTitle;
+
+//    @ExcelProperty("frequency")
+    @ExcelIgnore
+    private String date;
+
+    @ExcelProperty("刊期")
+    private String issue;
+
+    @ExcelProperty("起止页")
+    private String pages;
+
+    @ExcelProperty("关键词")
+    private String keyword;
+
+    @ExcelProperty("分类")
+    private String classify;
+
+    @ExcelProperty("地区")
+    private String area;
+
+    @ExcelIgnore
+    DataConverter<PressImData, Press> converter = new DataConverter<>() {
+        @Override
+        protected Press convert(PressImData pressImData) {
+            Press press = new Press();
+            press.setPressId(pressImData.getId());
+            press.setPressTitle(pressImData.getPressTitle());
+            press.setTitle(pressImData.getTitle());
+            press.setAuthor(pressImData.getAuthor());
+//        press.setDate(new Date(pressImData.getDate()));
+            press.setIssue(pressImData.getDate());
+            press.setPages(pressImData.getPages());
+            press.setKeyword(pressImData.getKeyword());
+            press.setClassify(pressImData.getClassify());
+            press.setArea(pressImData.getArea());
+            return press;
+        }
+    };
+
+    @Override
+    public DataConverter<PressImData, Press> getConverter() {
+        return converter;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getArea() {
+        return area;
+    }
+
+    public void setArea(String area) {
+        this.area = area;
+    }
+
+    public String getClassify() {
+        return classify;
+    }
+
+    public void setClassify(String classify) {
+        this.classify = classify;
+    }
+
+    public String getKeyword() {
+        return keyword;
+    }
+
+    public void setKeyword(String keyword) {
+        this.keyword = keyword;
+    }
+
+    public String getAuthor() {
+        return author;
+    }
+
+    public void setAuthor(String author) {
+        this.author = author;
+    }
+
+    public String getDate() {
+        return date;
+    }
+
+    public void setDate(String date) {
+        this.date = date;
+    }
+
+    public String getIssue() {
+        return issue;
+    }
+
+    public void setIssue(String issue) {
+        this.issue = issue;
+    }
+
+    public String getPages() {
+        return pages;
+    }
+
+    public void setPages(String pages) {
+        this.pages = pages;
+    }
+
+    public String getPressTitle() {
+        return pressTitle;
+    }
+
+    public void setPressTitle(String pressTitle) {
+        this.pressTitle = pressTitle;
+    }
+
+    @Override
+    public String toString() {
+        return "PressImData{" +
+                "id=" + id +
+                ", title='" + title + '\'' +
+                ", author='" + author + '\'' +
+                ", pressTitle='" + pressTitle + '\'' +
+                ", date='" + date + '\'' +
+                ", issue='" + issue + '\'' +
+                ", pages='" + pages + '\'' +
+                ", keyword='" + keyword + '\'' +
+                ", classify='" + classify + '\'' +
+                ", area='" + area + '\'' +
+                '}';
+    }
+}

+ 95 - 0
src/main/java/com/ruoyi/project/VRdemo/domain/imData/PublicationImData.java

@@ -0,0 +1,95 @@
+package com.ruoyi.project.VRdemo.domain.imData;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.utils.excel.DataConverter;
+import com.ruoyi.project.VRdemo.domain.Publication;
+
+public class PublicationImData implements BaseImData<PublicationImData, Publication> {
+
+    @ExcelProperty("id")
+    private Long id;
+
+    @ExcelProperty("所属区")
+    private String affiliation;
+
+    @ExcelProperty("所属地")
+    private String location;
+
+    @ExcelProperty("名称")
+    private String title;
+
+    @ExcelProperty("链接")
+    private String link;
+
+    @ExcelProperty("简介")
+    private String introduce;
+
+    @ExcelIgnore
+    DataConverter<PublicationImData, Publication> converter = new DataConverter<>() {
+        @Override
+        protected Publication convert(PublicationImData publicationImData) {
+            Publication publication = new Publication();
+            publication.setId(publicationImData.getId());
+            publication.setAffiliation(publicationImData.getAffiliation());
+            publication.setLocation(publicationImData.getLocation());
+            publication.setTitle(publicationImData.getTitle());
+            publication.setLink(publicationImData.getLink());
+            publication.setIntroduce(publicationImData.getIntroduce());
+            return publication;
+        }
+    };
+
+    @Override
+    public DataConverter<PublicationImData, Publication> getConverter() {
+        return converter;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setAffiliation(String affiliation) {
+        this.affiliation = affiliation;
+    }
+
+    public String getAffiliation() {
+        return affiliation;
+    }
+
+    public void setLocation(String location) {
+        this.location = location;
+    }
+
+    public String getLocation() {
+        return location;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setLink(String link) {
+        this.link = link;
+    }
+
+    public String getLink() {
+        return link;
+    }
+
+    public void setIntroduce(String introduce) {
+        this.introduce = introduce;
+    }
+
+    public String getIntroduce() {
+        return introduce;
+    }
+}

+ 107 - 0
src/main/java/com/ruoyi/project/VRdemo/domain/imData/ResearchImData.java

@@ -0,0 +1,107 @@
+package com.ruoyi.project.VRdemo.domain.imData;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.utils.excel.DataConverter;
+import com.ruoyi.project.VRdemo.domain.Research;
+
+public class ResearchImData implements BaseImData<ResearchImData, Research> {
+
+    @ExcelProperty("序号")
+    private Long id;
+
+    @ExcelProperty("书名")
+    private String title;
+
+    @ExcelProperty("作者")
+    private String author;
+
+    @ExcelProperty("出版机构")
+    private String institution;
+
+    @ExcelProperty("主题词")
+    private String topic;
+
+    @ExcelProperty("出版年")
+    private String publicationTime;
+
+    @ExcelProperty("分类号")
+    private String category;
+
+    @ExcelIgnore
+    DataConverter<ResearchImData, Research> converter = new DataConverter<>() {
+        @Override
+        protected Research convert(ResearchImData researchImData) {
+            Research research = new Research();
+            research.setId(researchImData.getId());
+            research.setTitle(researchImData.getTitle());
+            research.setAuthor(researchImData.getAuthor());
+            research.setInstitution(researchImData.getInstitution());
+            research.setTopic(researchImData.getTopic());
+            research.setPublicationTime(researchImData.getPublicationTime());
+            research.setCategory(researchImData.getCategory());
+            return research;
+        }
+    };
+
+    @Override
+    public DataConverter<ResearchImData, Research> getConverter() {
+        return converter;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getAuthor() {
+        return author;
+    }
+
+    public void setAuthor(String author) {
+        this.author = author;
+    }
+
+    public String getInstitution() {
+        return institution;
+    }
+
+    public void setInstitution(String institution) {
+        this.institution = institution;
+    }
+
+    public String getTopic() {
+        return topic;
+    }
+
+    public void setTopic(String topic) {
+        this.topic = topic;
+    }
+
+    public String getPublicationTime() {
+        return publicationTime;
+    }
+
+    public void setPublicationTime(String publicationTime) {
+        this.publicationTime = publicationTime;
+    }
+
+    public String getCategory() {
+        return category;
+    }
+
+    public void setCategory(String category) {
+        this.category = category;
+    }
+}

+ 71 - 0
src/main/java/com/ruoyi/project/VRdemo/domain/imData/SpecialCollectionImData.java

@@ -0,0 +1,71 @@
+package com.ruoyi.project.VRdemo.domain.imData;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.utils.excel.DataConverter;
+import com.ruoyi.project.VRdemo.domain.SpecialCollection;
+
+public class SpecialCollectionImData implements BaseImData<SpecialCollectionImData, SpecialCollection> {
+
+    @ExcelProperty("id")
+    private Long id;
+
+    @ExcelProperty("标题")
+    private String title;
+
+    @ExcelProperty("内容")
+    private String content;
+
+    @ExcelProperty("网址")
+    private String link;
+
+    @ExcelIgnore
+    DataConverter<SpecialCollectionImData, SpecialCollection> converter = new DataConverter<>() {
+        @Override
+        public SpecialCollection convert(SpecialCollectionImData collectionImData) {
+            SpecialCollection specialCollection = new SpecialCollection();
+            specialCollection.setId(collectionImData.getId());
+            specialCollection.setTitle(collectionImData.getTitle());
+            specialCollection.setContent(collectionImData.getContent());
+            specialCollection.setLink(collectionImData.getLink());
+            return specialCollection;
+        }
+    };
+
+    @Override
+    public DataConverter<SpecialCollectionImData, SpecialCollection> getConverter() {
+        return converter;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setLink(String link) {
+        this.link = link;
+    }
+
+    public String getLink() {
+        return link;
+    }
+}

+ 1 - 1
src/main/java/com/ruoyi/project/VRdemo/domain/StudyImData.java

@@ -1,4 +1,4 @@
-package com.ruoyi.project.VRdemo.domain;
+package com.ruoyi.project.VRdemo.domain.imData;
 
 import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelProperty;

+ 123 - 0
src/main/java/com/ruoyi/project/VRdemo/domain/imData/ThesisImData.java

@@ -0,0 +1,123 @@
+package com.ruoyi.project.VRdemo.domain.imData;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.utils.excel.DataConverter;
+import com.ruoyi.project.VRdemo.domain.Thesis;
+
+import java.util.Date;
+
+public class ThesisImData implements BaseImData<ThesisImData, Thesis> {
+
+    @ExcelProperty("序号")
+    private Long id;
+
+    @ExcelProperty("作者姓名")
+    private String name;
+
+    @ExcelProperty("指导教师")
+    private String teacher;
+
+    @ExcelProperty("专业")
+    private String major;
+
+    @ExcelProperty("题名")
+    private String title;
+
+    @ExcelProperty("关键词")
+    private String keyword;
+
+    @JsonFormat(pattern = "yyyy")
+    @ExcelProperty("答辩时间")
+    private Date replyTime;
+
+    @ExcelProperty("学位")
+    private String degree;
+
+    @ExcelIgnore
+    DataConverter<ThesisImData, Thesis> converter = new DataConverter<>() {
+        @Override
+        protected Thesis convert(ThesisImData thesisImData) {
+            Thesis thesis = new Thesis();
+            thesis.setId(thesisImData.getId());
+            thesis.setName(thesisImData.getName());
+            thesis.setTeacher(thesisImData.getTeacher());
+            thesis.setMajor(thesisImData.getMajor());
+            thesis.setTitle(thesisImData.getTitle());
+            thesis.setKeyword(thesisImData.getKeyword());
+            thesis.setReplyTime(thesisImData.getReplyTime());
+            thesis.setDegree(thesisImData.getDegree());
+            return thesis;
+        }
+    };
+
+    @Override
+    public DataConverter<ThesisImData, Thesis> getConverter() {
+        return converter;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Date getReplyTime() {
+        return replyTime;
+    }
+
+    public void setReplyTime(Date replyTime) {
+        this.replyTime = replyTime;
+    }
+
+    public String getDegree() {
+        return degree;
+    }
+
+    public void setDegree(String degree) {
+        this.degree = degree;
+    }
+
+    public String getKeyword() {
+        return keyword;
+    }
+
+    public void setKeyword(String keyword) {
+        this.keyword = keyword;
+    }
+
+    public String getMajor() {
+        return major;
+    }
+
+    public void setMajor(String major) {
+        this.major = major;
+    }
+
+    public String getTeacher() {
+        return teacher;
+    }
+
+    public void setTeacher(String teacher) {
+        this.teacher = teacher;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+}

+ 79 - 0
src/main/java/com/ruoyi/project/VRdemo/mapper/ArchivesUnboundMapper.java

@@ -0,0 +1,79 @@
+package com.ruoyi.project.VRdemo.mapper;
+
+import java.util.List;
+
+import com.ruoyi.project.VRdemo.domain.ArchivesUnbound;
+
+/**
+ * 博雅集 Archives Unbound(Gale)Mapper接口
+ *
+ * @author ruoyi
+ * @date 2024-10-06
+ */
+public interface ArchivesUnboundMapper {
+
+    /**
+     * 查询博雅集 Archives Unbound(Gale)
+     *
+     * @param id 博雅集 Archives Unbound(Gale)主键
+     * @return 博雅集 Archives Unbound(Gale)
+     */
+    ArchivesUnbound selectArchivesUnboundById(Long id);
+
+    /**
+     * 根据标题查询博雅集 Archives Unbound(Gale)
+     *
+     * @param title 博雅集 Archives Unbound(Gale)标题
+     * @return 博雅集 Archives Unbound(Gale)
+     */
+    ArchivesUnbound selectArchivesUnboundByTitle(String title);
+
+    /**
+     * 查询博雅集 Archives Unbound(Gale)列表
+     *
+     * @param archivesUnbound 博雅集 Archives Unbound(Gale)
+     * @return 博雅集 Archives Unbound(Gale)集合
+     */
+    List<ArchivesUnbound> selectArchivesUnboundList(ArchivesUnbound archivesUnbound);
+
+    /**
+     * 新增博雅集 Archives Unbound(Gale)
+     *
+     * @param archivesUnbound 博雅集 Archives Unbound(Gale)
+     * @return 结果
+     */
+    int insertArchivesUnbound(ArchivesUnbound archivesUnbound);
+
+    /**
+     * 批量新增博雅集 Archives Unbound(Gale)
+     *
+     * @param dataList 博雅集 Archives Unbound(Gale)数据集合
+     * @return 结果
+     */
+    int insertArchivesUnboundDataList(List<ArchivesUnbound> dataList);
+
+    /**
+     * 修改博雅集 Archives Unbound(Gale)
+     *
+     * @param archivesUnbound 博雅集 Archives Unbound(Gale)
+     * @return 结果
+     */
+    int updateArchivesUnbound(ArchivesUnbound archivesUnbound);
+
+    /**
+     * 删除博雅集 Archives Unbound(Gale)
+     *
+     * @param id 博雅集 Archives Unbound(Gale)主键
+     * @return 结果
+     */
+    int deleteArchivesUnboundById(Long id);
+
+    /**
+     * 批量删除博雅集 Archives Unbound(Gale)
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    int deleteArchivesUnboundByIds(Long[] ids);
+
+}

+ 74 - 0
src/main/java/com/ruoyi/project/VRdemo/mapper/ConsultationMapper.java

@@ -0,0 +1,74 @@
+package com.ruoyi.project.VRdemo.mapper;
+
+import java.util.List;
+
+import com.ruoyi.project.VRdemo.domain.Consultation;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 博雅集南洋资讯检索Mapper接口
+ *
+ * @author ruoyi
+ * @date 2024-09-26
+ */
+public interface ConsultationMapper {
+    
+    /**
+     * 查询博雅集南洋资讯检索
+     *
+     * @param id 博雅集南洋资讯检索主键
+     * @return 博雅集南洋资讯检索
+     */
+    Consultation selectConsultationById(Long id);
+
+    /**
+     * 根据标题查询咨询记录
+     */
+    Consultation selectConsultationByTitle(@Param("chineseName") String chineseName, @Param("englishName") String englishName);
+
+    /**
+     * 查询博雅集南洋资讯检索列表
+     *
+     * @param consultation 博雅集南洋资讯检索
+     * @return 博雅集南洋资讯检索集合
+     */
+    List<Consultation> selectConsultationList(Consultation consultation);
+
+    /**
+     * 新增博雅集南洋资讯检索
+     *
+     * @param consultation 博雅集南洋资讯检索
+     * @return 结果
+     */
+    int insertConsultation(Consultation consultation);
+
+    /**
+     * 批量新增博雅集南洋资讯检索
+     */
+    int insertConsultationDataList(List<Consultation> dataList);
+
+    /**
+     * 修改博雅集南洋资讯检索
+     *
+     * @param consultation 博雅集南洋资讯检索
+     * @return 结果
+     */
+    int updateConsultation(Consultation consultation);
+
+    /**
+     * 删除博雅集南洋资讯检索
+     *
+     * @param id 博雅集南洋资讯检索主键
+     * @return 结果
+     */
+    int deleteConsultationById(Long id);
+
+    /**
+     * 批量删除博雅集南洋资讯检索
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    int deleteConsultationByIds(Long[] ids);
+
+}

+ 2 - 70
src/main/java/com/ruoyi/project/VRdemo/mapper/DataExcelMapper.java

@@ -1,14 +1,14 @@
 package com.ruoyi.project.VRdemo.mapper;
 
 import com.ruoyi.project.VRdemo.domain.*;
+import com.ruoyi.project.VRdemo.domain.imData.NoticeImData;
+import com.ruoyi.project.VRdemo.domain.imData.StudyImData;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 
-import javax.servlet.ServletOutputStream;
 import java.util.List;
 import java.util.Map;
-import java.util.stream.Collectors;
 
 @Mapper
 public interface DataExcelMapper {
@@ -132,72 +132,4 @@ public interface DataExcelMapper {
     @Select("SELECT dict_value FROM sys_dict_data WHERE dict_type = #{dictType} AND dict_label = #{dictLabel}")
     String findValueByLabel(@Param("dictType") String dictType, @Param("dictLabel") String dictLabel);
 
-    /**
-     * press表根据题目进行查询
-     *
-     * @param titleAsLong 题目
-     * @return press数据对象
-     */
-    Press selectPressByTitle(String titleAsLong);
-
-    /**
-     * 更新press,根据标题进行更新操作。
-     *
-     * @param press
-     * @return 更新操作影响的行数
-     */
-    public int updatePressByImport(Press press);
-
-    /**
-     * 批量插入press
-     *
-     * @param dataList press列表
-     */
-    void insertPressDataList(List<Press> dataList);
-
-    /**
-     * thesis表根据题目进行查询
-     *
-     * @param titleAsLong 题目
-     * @return press数据对象
-     */
-    Thesis selectThesisByTitle(String titleAsLong);
-
-    /**
-     * 更新thesis,根据标题进行更新操作。
-     *
-     * @param thesis
-     * @return 更新操作影响的行数
-     */
-    int updateThesisByImport(Thesis thesis);
-
-    /**
-     * 批量插入thesis
-     *
-     * @param dataList thesis列表
-     */
-    void insertThesisDataList(List<Thesis> dataList);
-
-    /**
-     * research表根据题目进行查询
-     *
-     * @param titleAsLong 题目
-     * @return research数据对象
-     */
-    Research selectResearchByTitle(String titleAsLong);
-
-    /**
-     * 更新research,根据标题进行更新操作。
-     *
-     * @param research
-     * @return 更新操作影响的行数
-     */
-    int updateResearchByImport(Research research);
-
-    /**
-     * 批量插入research
-     *
-     * @param dataList research列表
-     */
-    void insertResearchDataList(List<Research> dataList);
 }

+ 73 - 0
src/main/java/com/ruoyi/project/VRdemo/mapper/EconomyMapper.java

@@ -0,0 +1,73 @@
+package com.ruoyi.project.VRdemo.mapper;
+
+import java.util.List;
+
+import com.ruoyi.project.VRdemo.domain.Economy;
+
+/**
+ * 东南亚经济统计Mapper接口
+ *
+ * @author ruoyi
+ * @date 2024-10-06
+ */
+public interface EconomyMapper {
+
+    /**
+     * 查询东南亚经济统计
+     *
+     * @param id 东南亚经济统计主键
+     * @return 东南亚经济统计
+     */
+    Economy selectEconomyById(Long id);
+
+    /**
+     * 根据标题查询
+     */
+    Economy selectEconomyByTitle(String title);
+
+    /**
+     * 查询东南亚经济统计列表
+     *
+     * @param economy 东南亚经济统计
+     * @return 东南亚经济统计集合
+     */
+    List<Economy> selectEconomyList(Economy economy);
+
+    /**
+     * 新增东南亚经济统计
+     *
+     * @param economy 东南亚经济统计
+     * @return 结果
+     */
+    int insertEconomy(Economy economy);
+
+    /**
+     * 批量插入数据
+     */
+    int insertEconomyDataList(List<Economy> dataList);
+
+    /**
+     * 修改东南亚经济统计
+     *
+     * @param economy 东南亚经济统计
+     * @return 结果
+     */
+    int updateEconomy(Economy economy);
+
+    /**
+     * 删除东南亚经济统计
+     *
+     * @param id 东南亚经济统计主键
+     * @return 结果
+     */
+    int deleteEconomyById(Long id);
+
+    /**
+     * 批量删除东南亚经济统计
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    int deleteEconomyByIds(Long[] ids);
+
+}

+ 74 - 0
src/main/java/com/ruoyi/project/VRdemo/mapper/InstitutionMapper.java

@@ -0,0 +1,74 @@
+package com.ruoyi.project.VRdemo.mapper;
+
+import java.util.List;
+import com.ruoyi.project.VRdemo.domain.Institution;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 博雅集东南亚研究机构Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2024-09-26
+ */
+public interface InstitutionMapper 
+{
+
+    /**
+     * 查询博雅集东南亚研究机构
+     * 
+     * @param id 博雅集东南亚研究机构主键
+     * @return 博雅集东南亚研究机构
+     */
+    Institution selectInstitutionById(Long id);
+
+    /**
+     * 根据标题查询博雅集东南亚研究机构
+     */
+    Institution selectInstitutionByTitle(@Param("chineseName") String chineseName, @Param("englishName") String englishName);
+
+    /**
+     * 查询博雅集东南亚研究机构列表
+     * 
+     * @param institution 博雅集东南亚研究机构
+     * @return 博雅集东南亚研究机构集合
+     */
+    List<Institution> selectInstitutionList(Institution institution);
+
+    /**
+     * 新增博雅集东南亚研究机构
+     * 
+     * @param institution 博雅集东南亚研究机构
+     * @return 结果
+     */
+    int insertInstitution(Institution institution);
+
+    /**
+     * 批量插入博雅集东南亚研究机构
+     */
+    int insertInstitutionDataList(List<Institution> dataList);
+
+    /**
+     * 修改博雅集东南亚研究机构
+     * 
+     * @param institution 博雅集东南亚研究机构
+     * @return 结果
+     */
+    int updateInstitution(Institution institution);
+
+    /**
+     * 删除博雅集东南亚研究机构
+     * 
+     * @param id 博雅集东南亚研究机构主键
+     * @return 结果
+     */
+    int deleteInstitutionById(Long id);
+
+    /**
+     * 批量删除博雅集东南亚研究机构
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    int deleteInstitutionByIds(Long[] ids);
+
+}

+ 82 - 0
src/main/java/com/ruoyi/project/VRdemo/mapper/LiteratureMapper.java

@@ -0,0 +1,82 @@
+package com.ruoyi.project.VRdemo.mapper;
+
+import java.util.List;
+
+import com.ruoyi.project.VRdemo.domain.Literature;
+import org.apache.ibatis.annotations.Mapper;
+
+
+/**
+ * 博雅集东南亚重要参考文献汇编Mapper接口
+ *
+ * @author ruoyi
+ * @date 2024-09-26
+ */
+@Mapper
+public interface LiteratureMapper {
+
+    /**
+     * 查询博雅集东南亚重要参考文献汇编
+     *
+     * @param id 博雅集东南亚重要参考文献汇编主键
+     * @return 博雅集东南亚重要参考文献汇编
+     */
+    Literature selectLiteratureById(Long id);
+
+    /**
+     * 根据标题查询博雅集东南亚重要参考文献汇编
+     *
+     * @param titleAsLong 博雅集东南亚重要参考文献汇编标题
+     * @return 博雅集东南亚重要参考文献汇编
+     */
+    Literature selectLiteratureByTitle(String titleAsLong);
+
+    /**
+     * 查询博雅集东南亚重要参考文献汇编列表
+     *
+     * @param literature 博雅集东南亚重要参考文献汇编
+     * @return 博雅集东南亚重要参考文献汇编集合
+     */
+    List<Literature> selectLiteratureList(Literature literature);
+
+    /**
+     * 新增博雅集东南亚重要参考文献汇编
+     *
+     * @param literature 博雅集东南亚重要参考文献汇编
+     * @return 结果
+     */
+    int insertLiterature(Literature literature);
+
+    /**
+     * 导入博雅集东南亚重要参考文献汇编数据
+     *
+     * @param literatureList 博雅集东南亚重要参考文献汇编数据列表
+     * @return 结果
+     */
+    int insertLiteratureDataList(List<Literature> literatureList);
+
+    /**
+     * 修改博雅集东南亚重要参考文献汇编
+     *
+     * @param literature 博雅集东南亚重要参考文献汇编
+     * @return 结果
+     */
+    int updateLiterature(Literature literature);
+
+    /**
+     * 删除博雅集东南亚重要参考文献汇编
+     *
+     * @param id 博雅集东南亚重要参考文献汇编主键
+     * @return 结果
+     */
+    int deleteLiteratureById(Long id);
+
+    /**
+     * 批量删除博雅集东南亚重要参考文献汇编
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    int deleteLiteratureByIds(Long[] ids);
+
+}

+ 32 - 15
src/main/java/com/ruoyi/project/VRdemo/mapper/PressMapper.java

@@ -1,61 +1,78 @@
 package com.ruoyi.project.VRdemo.mapper;
 
 import java.util.List;
+
 import com.ruoyi.project.VRdemo.domain.Press;
 
 /**
  * pressMapper接口
- * 
+ *
  * @author ruoyi
  * @date 2024-01-19
  */
-public interface PressMapper 
-{
+public interface PressMapper {
+
     /**
      * 查询press
-     * 
+     *
      * @param pressId press主键
      * @return press
      */
-    public Press selectPressByPressId(Long pressId);
+    Press selectPressByPressId(Long pressId);
+
+    /**
+     * 根据中文名或英文名查询press
+     *
+     * @return press
+     */
+    Press selectPressByTitle(String title);
 
     /**
      * 查询press列表
-     * 
+     *
      * @param press press
      * @return press集合
      */
-    public List<Press> selectPressList(Press press);
+    List<Press> selectPressList(Press press);
 
     /**
      * 新增press
-     * 
+     *
      * @param press press
      * @return 结果
      */
-    public int insertPress(Press press);
+    int insertPress(Press press);
+
+    /**
+     * 批量新增press
+     *
+     * @param dataList press集合
+     * @return 结果
+     */
+    int insertPressDataList(List<Press> dataList);
 
     /**
      * 修改press
-     * 
+     *
      * @param press press
      * @return 结果
      */
-    public int updatePress(Press press);
+    int updatePress(Press press);
 
     /**
      * 删除press
-     * 
+     *
      * @param pressId press主键
      * @return 结果
      */
-    public int deletePressByPressId(Long pressId);
+    int deletePressByPressId(Long pressId);
 
     /**
      * 批量删除press
-     * 
+     *
      * @param pressIds 需要删除的数据主键集合
      * @return 结果
      */
-    public int deletePressByPressIds(Long[] pressIds);
+    int deletePressByPressIds(Long[] pressIds);
+
 }

+ 79 - 0
src/main/java/com/ruoyi/project/VRdemo/mapper/PublicationMapper.java

@@ -0,0 +1,79 @@
+package com.ruoyi.project.VRdemo.mapper;
+
+import java.util.List;
+
+import com.ruoyi.project.VRdemo.domain.Publication;
+
+/**
+ * 东南亚连续出版物Mapper接口
+ *
+ * @author ruoyi
+ * @date 2024-10-06
+ */
+public interface PublicationMapper {
+
+    /**
+     * 查询东南亚连续出版物
+     *
+     * @param id 东南亚连续出版物主键
+     * @return 东南亚连续出版物
+     */
+    Publication selectPublicationById(Long id);
+
+    /**
+     * 根据标题查询 publication
+     *
+     * @param title publication标题
+     * @return publication对象
+     */
+    Publication selectPublicationByTitle(String title);
+
+    /**
+     * 查询东南亚连续出版物列表
+     *
+     * @param publication 东南亚连续出版物
+     * @return 东南亚连续出版物集合
+     */
+    List<Publication> selectPublicationList(Publication publication);
+
+    /**
+     * 新增东南亚连续出版物
+     *
+     * @param publication 东南亚连续出版物
+     * @return 结果
+     */
+    int insertPublication(Publication publication);
+
+    /**
+     * 批量插入 publication 数据
+     *
+     * @param dataList publication 数据集合
+     * @return 结果
+     */
+    int insertPublicationDataList(List<Publication> dataList);
+
+    /**
+     * 修改东南亚连续出版物
+     *
+     * @param publication 东南亚连续出版物
+     * @return 结果
+     */
+    int updatePublication(Publication publication);
+
+    /**
+     * 删除东南亚连续出版物
+     *
+     * @param id 东南亚连续出版物主键
+     * @return 结果
+     */
+    int deletePublicationById(Long id);
+
+    /**
+     * 批量删除东南亚连续出版物
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    int deletePublicationByIds(Long[] ids);
+
+}

+ 32 - 15
src/main/java/com/ruoyi/project/VRdemo/mapper/ResearchMapper.java

@@ -1,61 +1,78 @@
 package com.ruoyi.project.VRdemo.mapper;
 
 import java.util.List;
+
 import com.ruoyi.project.VRdemo.domain.Research;
 
 /**
  * 研究Mapper接口
- * 
+ *
  * @author ruoyi
  * @date 2024-06-23
  */
-public interface ResearchMapper 
-{
+public interface ResearchMapper {
     /**
      * 查询研究
-     * 
+     *
      * @param id 研究主键
      * @return 研究
      */
-    public Research selectResearchById(Long id);
+    Research selectResearchById(Long id);
+
+    /**
+     * 根据标题查询研究
+     *
+     * @param title 研究标题
+     * @return 研究
+     */
+    Research selectResearchByTitle(String title);
 
     /**
      * 查询研究列表
-     * 
+     *
      * @param research 研究
      * @return 研究集合
      */
-    public List<Research> selectResearchList(Research research);
+    List<Research> selectResearchList(Research research);
 
     /**
      * 新增研究
-     * 
+     *
      * @param research 研究
      * @return 结果
      */
-    public int insertResearch(Research research);
+    int insertResearch(Research research);
+
+    /**
+     * 批量插入研究数据
+     *
+     * @param dataList 研究数据集合
+     * @return 结果
+     */
+    int insertResearchDataList(List<Research> dataList);
 
     /**
      * 修改研究
-     * 
+     *
      * @param research 研究
      * @return 结果
      */
-    public int updateResearch(Research research);
+    int updateResearch(Research research);
 
     /**
      * 删除研究
-     * 
+     *
      * @param id 研究主键
      * @return 结果
      */
-    public int deleteResearchById(Long id);
+    int deleteResearchById(Long id);
 
     /**
      * 批量删除研究
-     * 
+     *
      * @param ids 需要删除的数据主键集合
      * @return 结果
      */
-    public int deleteResearchByIds(Long[] ids);
+    int deleteResearchByIds(Long[] ids);
+
 }

+ 73 - 0
src/main/java/com/ruoyi/project/VRdemo/mapper/SpecialCollectionMapper.java

@@ -0,0 +1,73 @@
+package com.ruoyi.project.VRdemo.mapper;
+
+import java.util.List;
+
+import com.ruoyi.project.VRdemo.domain.SpecialCollection;
+
+/**
+ * 东南亚大型特藏Mapper接口
+ *
+ * @author ruoyi
+ * @date 2024-10-06
+ */
+public interface SpecialCollectionMapper {
+
+    /**
+     * 查询东南亚大型特藏
+     *
+     * @param id 东南亚大型特藏主键
+     * @return 东南亚大型特藏
+     */
+    SpecialCollection selectCollectionById(Long id);
+
+    /**
+     * 根据链接查询
+     */
+    SpecialCollection selectCollectionByTitle(String title);
+
+    /**
+     * 查询东南亚大型特藏列表
+     *
+     * @param specialCollection 东南亚大型特藏
+     * @return 东南亚大型特藏集合
+     */
+    List<SpecialCollection> selectCollectionList(SpecialCollection specialCollection);
+
+    /**
+     * 新增东南亚大型特藏
+     *
+     * @param specialCollection 东南亚大型特藏
+     * @return 结果
+     */
+    int insertCollection(SpecialCollection specialCollection);
+
+    /**
+     * 批量插入数据
+     */
+    int insertCollectionDataList(List<SpecialCollection> dataList);
+
+    /**
+     * 修改东南亚大型特藏
+     *
+     * @param specialCollection 东南亚大型特藏
+     * @return 结果
+     */
+    int updateCollection(SpecialCollection specialCollection);
+
+    /**
+     * 删除东南亚大型特藏
+     *
+     * @param id 东南亚大型特藏主键
+     * @return 结果
+     */
+    int deleteCollectionById(Long id);
+
+    /**
+     * 批量删除东南亚大型特藏
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    int deleteCollectionByIds(Long[] ids);
+
+}

+ 28 - 15
src/main/java/com/ruoyi/project/VRdemo/mapper/ThesisMapper.java

@@ -1,61 +1,74 @@
 package com.ruoyi.project.VRdemo.mapper;
 
 import java.util.List;
+
 import com.ruoyi.project.VRdemo.domain.Thesis;
 
 /**
  * 论文Mapper接口
- * 
+ *
  * @author ruoyi
  * @date 2024-06-23
  */
-public interface ThesisMapper 
-{
+public interface ThesisMapper {
+
     /**
      * 查询论文
-     * 
+     *
      * @param id 论文主键
      * @return 论文
      */
-    public Thesis selectThesisById(Long id);
+    Thesis selectThesisById(Long id);
+
+    /**
+     * 根据标题查询论文
+     */
+    Thesis selectThesisByTitle(String title);
 
     /**
      * 查询论文列表
-     * 
+     *
      * @param thesis 论文
      * @return 论文集合
      */
-    public List<Thesis> selectThesisList(Thesis thesis);
+    List<Thesis> selectThesisList(Thesis thesis);
 
     /**
      * 新增论文
-     * 
+     *
      * @param thesis 论文
      * @return 结果
      */
-    public int insertThesis(Thesis thesis);
+    int insertThesis(Thesis thesis);
+
+    /**
+     * 批量插入论文数据
+     *
+     */
+    int insertThesisDataList(List<Thesis> dataList);
 
     /**
      * 修改论文
-     * 
+     *
      * @param thesis 论文
      * @return 结果
      */
-    public int updateThesis(Thesis thesis);
+    int updateThesis(Thesis thesis);
 
     /**
      * 删除论文
-     * 
+     *
      * @param id 论文主键
      * @return 结果
      */
-    public int deleteThesisById(Long id);
+    int deleteThesisById(Long id);
 
     /**
      * 批量删除论文
-     * 
+     *
      * @param ids 需要删除的数据主键集合
      * @return 结果
      */
-    public int deleteThesisByIds(Long[] ids);
+    int deleteThesisByIds(Long[] ids);
+
 }

+ 71 - 0
src/main/java/com/ruoyi/project/VRdemo/service/IArchivesUnboundService.java

@@ -0,0 +1,71 @@
+package com.ruoyi.project.VRdemo.service;
+
+import java.util.List;
+
+import com.ruoyi.project.VRdemo.domain.ArchivesUnbound;
+
+/**
+ * 博雅集 Archives Unbound(Gale)Service接口
+ *
+ * @author ruoyi
+ * @date 2024-10-06
+ */
+public interface IArchivesUnboundService {
+
+    /**
+     * 查询博雅集 Archives Unbound(Gale)
+     *
+     * @param id 博雅集 Archives Unbound(Gale)主键
+     * @return 博雅集 Archives Unbound(Gale)
+     */
+    ArchivesUnbound selectArchivesUnboundById(Long id);
+
+    /**
+     * 查询博雅集 Archives Unbound(Gale)列表
+     *
+     * @param archivesUnbound 博雅集 Archives Unbound(Gale)
+     * @return 博雅集 Archives Unbound(Gale)集合
+     */
+    List<ArchivesUnbound> selectArchivesUnboundList(ArchivesUnbound archivesUnbound);
+
+    /**
+     * 新增博雅集 Archives Unbound(Gale)
+     *
+     * @param archivesUnbound 博雅集 Archives Unbound(Gale)
+     * @return 结果
+     */
+    int insertArchivesUnbound(ArchivesUnbound archivesUnbound);
+
+    /**
+     * 新增博雅集 Archives Unbound(Gale)数据列表
+     *
+     * @param dataList 博雅集 Archives Unbound(Gale)数据列表
+     * @return 结果
+     */
+    String importData(List<ArchivesUnbound> dataList, boolean updateSupport);
+
+    /**
+     * 修改博雅集 Archives Unbound(Gale)
+     *
+     * @param archivesUnbound 博雅集 Archives Unbound(Gale)
+     * @return 结果
+     */
+    int updateArchivesUnbound(ArchivesUnbound archivesUnbound);
+
+    /**
+     * 批量删除博雅集 Archives Unbound(Gale)
+     *
+     * @param ids 需要删除的博雅集 Archives Unbound(Gale)主键集合
+     * @return 结果
+     */
+    int deleteArchivesUnboundByIds(Long[] ids);
+
+    /**
+     * 删除博雅集 Archives Unbound(Gale)信息
+     *
+     * @param id 博雅集 Archives Unbound(Gale)主键
+     * @return 结果
+     */
+    int deleteArchivesUnboundById(Long id);
+
+}

+ 68 - 0
src/main/java/com/ruoyi/project/VRdemo/service/IConsultationService.java

@@ -0,0 +1,68 @@
+package com.ruoyi.project.VRdemo.service;
+
+import java.util.List;
+
+import com.ruoyi.project.VRdemo.domain.Consultation;
+
+/**
+ * 博雅集南洋资讯检索Service接口
+ *
+ * @author ruoyi
+ * @date 2024-09-26
+ */
+public interface IConsultationService {
+
+    /**
+     * 查询博雅集南洋资讯检索
+     *
+     * @param id 博雅集南洋资讯检索主键
+     * @return 博雅集南洋资讯检索
+     */
+    Consultation selectConsultationById(Long id);
+
+    /**
+     * 查询博雅集南洋资讯检索列表
+     *
+     * @param consultation 博雅集南洋资讯检索
+     * @return 博雅集南洋资讯检索集合
+     */
+    List<Consultation> selectConsultationList(Consultation consultation);
+
+    /**
+     * 新增博雅集南洋资讯检索
+     *
+     * @param consultation 博雅集南洋资讯检索
+     * @return 结果
+     */
+    int insertConsultation(Consultation consultation);
+
+    /**
+     * 导入数据
+     */
+    String importData(List<Consultation> dataList, boolean updateSupport);
+
+    /**
+     * 修改博雅集南洋资讯检索
+     *
+     * @param consultation 博雅集南洋资讯检索
+     * @return 结果
+     */
+    int updateConsultation(Consultation consultation);
+
+    /**
+     * 批量删除博雅集南洋资讯检索
+     *
+     * @param ids 需要删除的博雅集南洋资讯检索主键集合
+     * @return 结果
+     */
+    int deleteConsultationByIds(Long[] ids);
+
+    /**
+     * 删除博雅集南洋资讯检索信息
+     *
+     * @param id 博雅集南洋资讯检索主键
+     * @return 结果
+     */
+    int deleteConsultationById(Long id);
+
+}

+ 72 - 0
src/main/java/com/ruoyi/project/VRdemo/service/IEconomyService.java

@@ -0,0 +1,72 @@
+package com.ruoyi.project.VRdemo.service;
+
+import java.util.List;
+
+import com.ruoyi.project.VRdemo.domain.Economy;
+
+/**
+ * 东南亚经济统计Service接口
+ *
+ * @author ruoyi
+ * @date 2024-10-06
+ */
+public interface IEconomyService {
+
+    /**
+     * 查询东南亚经济统计
+     *
+     * @param id 东南亚经济统计主键
+     * @return 东南亚经济统计
+     */
+    Economy selectEconomyById(Long id);
+
+    /**
+     * 查询东南亚经济统计列表
+     *
+     * @param economy 东南亚经济统计
+     * @return 东南亚经济统计集合
+     */
+    List<Economy> selectEconomyList(Economy economy);
+
+    /**
+     * 新增东南亚经济统计
+     *
+     * @param economy 东南亚经济统计
+     * @return 结果
+     */
+    int insertEconomy(Economy economy);
+
+    /**
+     * 导入数据
+     *
+     * @param dataList      导入数据列表
+     * @param updateSupport 是否更新已经存在的数据
+     * @return 结果
+     */
+    String importData(List<Economy> dataList, boolean updateSupport);
+
+    /**
+     * 修改东南亚经济统计
+     *
+     * @param economy 东南亚经济统计
+     * @return 结果
+     */
+    int updateEconomy(Economy economy);
+
+    /**
+     * 批量删除东南亚经济统计
+     *
+     * @param ids 需要删除的东南亚经济统计主键集合
+     * @return 结果
+     */
+    int deleteEconomyByIds(Long[] ids);
+
+    /**
+     * 删除东南亚经济统计信息
+     *
+     * @param id 东南亚经济统计主键
+     * @return 结果
+     */
+    int deleteEconomyById(Long id);
+
+}

+ 68 - 0
src/main/java/com/ruoyi/project/VRdemo/service/IInstitutionService.java

@@ -0,0 +1,68 @@
+package com.ruoyi.project.VRdemo.service;
+
+import java.util.List;
+
+import com.ruoyi.project.VRdemo.domain.Institution;
+
+/**
+ * 博雅集东南亚研究机构Service接口
+ *
+ * @author ruoyi
+ * @date 2024-09-26
+ */
+public interface IInstitutionService {
+
+    /**
+     * 查询博雅集东南亚研究机构
+     *
+     * @param id 博雅集东南亚研究机构主键
+     * @return 博雅集东南亚研究机构
+     */
+    Institution selectInstitutionById(Long id);
+
+    /**
+     * 查询博雅集东南亚研究机构列表
+     *
+     * @param institution 博雅集东南亚研究机构
+     * @return 博雅集东南亚研究机构集合
+     */
+    List<Institution> selectInstitutionList(Institution institution);
+
+    /**
+     * 新增博雅集东南亚研究机构
+     *
+     * @param institution 博雅集东南亚研究机构
+     * @return 结果
+     */
+    int insertInstitution(Institution institution);
+
+    /**
+     * 导入数据
+     */
+    String importData(List<Institution> dataList, boolean updateSupport);
+
+    /**
+     * 修改博雅集东南亚研究机构
+     *
+     * @param institution 博雅集东南亚研究机构
+     * @return 结果
+     */
+    int updateInstitution(Institution institution);
+
+    /**
+     * 批量删除博雅集东南亚研究机构
+     *
+     * @param ids 需要删除的博雅集东南亚研究机构主键集合
+     * @return 结果
+     */
+    int deleteInstitutionByIds(Long[] ids);
+
+    /**
+     * 删除博雅集东南亚研究机构信息
+     *
+     * @param id 博雅集东南亚研究机构主键
+     * @return 结果
+     */
+    int deleteInstitutionById(Long id);
+
+}

+ 68 - 0
src/main/java/com/ruoyi/project/VRdemo/service/ILiteratureService.java

@@ -0,0 +1,68 @@
+package com.ruoyi.project.VRdemo.service;
+
+import java.util.List;
+
+import com.ruoyi.project.VRdemo.domain.Literature;
+
+/**
+ * 博雅集东南亚重要参考文献汇编Service接口
+ *
+ * @author ruoyi
+ * @date 2024-09-26
+ */
+public interface ILiteratureService {
+
+    /**
+     * 查询博雅集东南亚重要参考文献汇编
+     *
+     * @param id 博雅集东南亚重要参考文献汇编主键
+     * @return 博雅集东南亚重要参考文献汇编
+     */
+    Literature selectLiteratureById(Long id);
+
+    /**
+     * 查询博雅集东南亚重要参考文献汇编列表
+     *
+     * @param literature 博雅集东南亚重要参考文献汇编
+     * @return 博雅集东南亚重要参考文献汇编集合
+     */
+    List<Literature> selectLiteratureList(Literature literature);
+
+    /**
+     * 新增博雅集东南亚重要参考文献汇编
+     *
+     * @param literature 博雅集东南亚重要参考文献汇编
+     * @return 结果
+     */
+    int insertLiterature(Literature literature);
+
+    /**
+     * 导入数据
+     */
+    String importData(List<Literature> dataList, boolean updateSupport);
+
+    /**
+     * 修改博雅集东南亚重要参考文献汇编
+     *
+     * @param literature 博雅集东南亚重要参考文献汇编
+     * @return 结果
+     */
+    int updateLiterature(Literature literature);
+
+    /**
+     * 批量删除博雅集东南亚重要参考文献汇编
+     *
+     * @param ids 需要删除的博雅集东南亚重要参考文献汇编主键集合
+     * @return 结果
+     */
+    int deleteLiteratureByIds(Long[] ids);
+
+    /**
+     * 删除博雅集东南亚重要参考文献汇编信息
+     *
+     * @param id 博雅集东南亚重要参考文献汇编主键
+     * @return 结果
+     */
+    int deleteLiteratureById(Long id);
+
+}

+ 1 - 2
src/main/java/com/ruoyi/project/VRdemo/service/INoticeDataService.java

@@ -1,8 +1,7 @@
 package com.ruoyi.project.VRdemo.service;
 
-import com.ruoyi.project.VRdemo.domain.NoteNationData;
 import com.ruoyi.project.VRdemo.domain.NoticeData;
-import com.ruoyi.project.VRdemo.domain.NoticeImData;
+import com.ruoyi.project.VRdemo.domain.imData.NoticeImData;
 import com.ruoyi.project.VRdemo.domain.vo.NoticeDataVo;
 
 import java.util.List;

+ 21 - 21
src/main/java/com/ruoyi/project/VRdemo/service/IPressService.java

@@ -1,68 +1,68 @@
 package com.ruoyi.project.VRdemo.service;
 
 import java.util.List;
+
 import com.ruoyi.project.VRdemo.domain.Press;
-import com.ruoyi.project.VRdemo.domain.StudyImData;
-import org.springframework.transaction.annotation.Isolation;
-import org.springframework.transaction.annotation.Transactional;
 
 /**
  * pressService接口
- * 
+ *
  * @author ruoyi
  * @date 2024-01-19
  */
-public interface IPressService 
-{
+public interface IPressService {
+
     /**
      * 查询press
-     * 
+     *
      * @param pressId press主键
      * @return press
      */
-    public Press selectPressByPressId(Long pressId);
+    Press selectPressByPressId(Long pressId);
 
     /**
      * 查询press列表
-     * 
+     *
      * @param press press
      * @return press集合
      */
-    public List<Press> selectPressList(Press press);
+    List<Press> selectPressList(Press press);
 
     /**
      * 新增press
-     * 
+     *
      * @param press press
      * @return 结果
      */
-    public int insertPress(Press press);
+    int insertPress(Press press);
+
+    /**
+     * 导入数据
+     */
+    String importData(List<Press> dataList, boolean updateSupport);
 
     /**
      * 修改press
-     * 
+     *
      * @param press press
      * @return 结果
      */
-    public int updatePress(Press press);
+    int updatePress(Press press);
 
     /**
      * 批量删除press
-     * 
+     *
      * @param pressIds 需要删除的press主键集合
      * @return 结果
      */
-    public int deletePressByPressIds(Long[] pressIds);
+    int deletePressByPressIds(Long[] pressIds);
 
     /**
      * 删除press信息
-     * 
+     *
      * @param pressId press主键
      * @return 结果
      */
-    public int deletePressByPressId(Long pressId);
+    int deletePressByPressId(Long pressId);
 
-    //EasyExcel批量导入
-    @Transactional(isolation = Isolation.READ_COMMITTED)
-    String importPress(List<Press> studyList, Boolean updateSupport);
 }

+ 71 - 0
src/main/java/com/ruoyi/project/VRdemo/service/IPublicationService.java

@@ -0,0 +1,71 @@
+package com.ruoyi.project.VRdemo.service;
+
+import java.util.List;
+
+import com.ruoyi.project.VRdemo.domain.Publication;
+
+/**
+ * 东南亚连续出版物Service接口
+ *
+ * @author ruoyi
+ * @date 2024-10-06
+ */
+public interface IPublicationService {
+
+    /**
+     * 查询东南亚连续出版物
+     *
+     * @param id 东南亚连续出版物主键
+     * @return 东南亚连续出版物
+     */
+    Publication selectPublicationById(Long id);
+
+    /**
+     * 查询东南亚连续出版物列表
+     *
+     * @param publication 东南亚连续出版物
+     * @return 东南亚连续出版物集合
+     */
+    List<Publication> selectPublicationList(Publication publication);
+
+    /**
+     * 新增东南亚连续出版物
+     *
+     * @param publication 东南亚连续出版物
+     * @return 结果
+     */
+    int insertPublication(Publication publication);
+
+    /**
+     * 导入数据
+     *
+     * @param dataList      导入数据列表
+     * @param updateSupport 是否更新已经存在的数据
+     * @return 结果
+     */
+    String importData(List<Publication> dataList, boolean updateSupport);
+
+    /**
+     * 修改东南亚连续出版物
+     *
+     * @param publication 东南亚连续出版物
+     * @return 结果
+     */
+    int updatePublication(Publication publication);
+
+    /**
+     * 批量删除东南亚连续出版物
+     *
+     * @param ids 需要删除的东南亚连续出版物主键集合
+     * @return 结果
+     */
+    int deletePublicationByIds(Long[] ids);
+
+    /**
+     * 删除东南亚连续出版物信息
+     *
+     * @param id 东南亚连续出版物主键
+     * @return 结果
+     */
+    int deletePublicationById(Long id);
+}

+ 20 - 21
src/main/java/com/ruoyi/project/VRdemo/service/IResearchService.java

@@ -3,67 +3,66 @@ package com.ruoyi.project.VRdemo.service;
 import java.util.List;
 
 import com.ruoyi.project.VRdemo.domain.Research;
-import com.ruoyi.project.VRdemo.domain.Research;
-import org.springframework.transaction.annotation.Isolation;
-import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 研究Service接口
- * 
+ *
  * @author ruoyi
  * @date 2024-06-23
  */
-public interface IResearchService 
-{
+public interface IResearchService {
+
     /**
      * 查询研究
-     * 
+     *
      * @param id 研究主键
      * @return 研究
      */
-    public Research selectResearchById(Long id);
+    Research selectResearchById(Long id);
 
     /**
      * 查询研究列表
-     * 
+     *
      * @param research 研究
      * @return 研究集合
      */
-    public List<Research> selectResearchList(Research research);
+    List<Research> selectResearchList(Research research);
 
     /**
      * 新增研究
-     * 
+     *
      * @param research 研究
      * @return 结果
      */
-    public int insertResearch(Research research);
+    int insertResearch(Research research);
+
+    /**
+     * 导入数据
+     */
+    String importData(List<Research> dataList, boolean updateSupport);
 
     /**
      * 修改研究
-     * 
+     *
      * @param research 研究
      * @return 结果
      */
-    public int updateResearch(Research research);
+    int updateResearch(Research research);
 
     /**
      * 批量删除研究
-     * 
+     *
      * @param ids 需要删除的研究主键集合
      * @return 结果
      */
-    public int deleteResearchByIds(Long[] ids);
+    int deleteResearchByIds(Long[] ids);
 
     /**
      * 删除研究信息
-     * 
+     *
      * @param id 研究主键
      * @return 结果
      */
-    public int deleteResearchById(Long id);
+    int deleteResearchById(Long id);
 
-    //EasyExcel批量导入
-    @Transactional(isolation = Isolation.READ_COMMITTED)
-    String importResearch(List<Research> studyList, Boolean updateSupport);
 }

+ 72 - 0
src/main/java/com/ruoyi/project/VRdemo/service/ISpecialCollectionService.java

@@ -0,0 +1,72 @@
+package com.ruoyi.project.VRdemo.service;
+
+import java.util.List;
+
+import com.ruoyi.project.VRdemo.domain.SpecialCollection;
+
+/**
+ * 东南亚大型特藏Service接口
+ *
+ * @author ruoyi
+ * @date 2024-10-06
+ */
+public interface ISpecialCollectionService {
+
+    /**
+     * 查询东南亚大型特藏
+     *
+     * @param id 东南亚大型特藏主键
+     * @return 东南亚大型特藏
+     */
+    SpecialCollection selectCollectionById(Long id);
+
+    /**
+     * 查询东南亚大型特藏列表
+     *
+     * @param specialCollection 东南亚大型特藏
+     * @return 东南亚大型特藏集合
+     */
+    List<SpecialCollection> selectCollectionList(SpecialCollection specialCollection);
+
+    /**
+     * 新增东南亚大型特藏
+     *
+     * @param specialCollection 东南亚大型特藏
+     * @return 结果
+     */
+    int insertCollection(SpecialCollection specialCollection);
+
+    /**
+     * 导入数据
+     *
+     * @param dataList      导入数据列表
+     * @param updateSupport 是否更新已经存在的数据
+     * @return 结果
+     */
+    String importData(List<SpecialCollection> dataList, boolean updateSupport);
+
+    /**
+     * 修改东南亚大型特藏
+     *
+     * @param specialCollection 东南亚大型特藏
+     * @return 结果
+     */
+    int updateCollection(SpecialCollection specialCollection);
+
+    /**
+     * 批量删除东南亚大型特藏
+     *
+     * @param ids 需要删除的东南亚大型特藏主键集合
+     * @return 结果
+     */
+    int deleteCollectionByIds(Long[] ids);
+
+    /**
+     * 删除东南亚大型特藏信息
+     *
+     * @param id 东南亚大型特藏主键
+     * @return 结果
+     */
+    int deleteCollectionById(Long id);
+
+}

+ 1 - 2
src/main/java/com/ruoyi/project/VRdemo/service/IStudyDataService.java

@@ -1,8 +1,7 @@
 package com.ruoyi.project.VRdemo.service;
 
-import com.ruoyi.project.VRdemo.domain.NoteNationData;
 import com.ruoyi.project.VRdemo.domain.StudyData;
-import com.ruoyi.project.VRdemo.domain.StudyImData;
+import com.ruoyi.project.VRdemo.domain.imData.StudyImData;
 import com.ruoyi.project.VRdemo.domain.vo.Catalog;
 import com.ruoyi.project.VRdemo.domain.vo.StudyDataVo;
 

+ 12 - 12
src/main/java/com/ruoyi/project/VRdemo/service/IThesisService.java

@@ -3,9 +3,6 @@ package com.ruoyi.project.VRdemo.service;
 import java.util.List;
 
 import com.ruoyi.project.VRdemo.domain.Thesis;
-import com.ruoyi.project.VRdemo.domain.Thesis;
-import org.springframework.transaction.annotation.Isolation;
-import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 论文Service接口
@@ -15,13 +12,14 @@ import org.springframework.transaction.annotation.Transactional;
  */
 public interface IThesisService 
 {
+
     /**
      * 查询论文
      * 
      * @param id 论文主键
      * @return 论文
      */
-    public Thesis selectThesisById(Long id);
+    Thesis selectThesisById(Long id);
 
     /**
      * 查询论文列表
@@ -29,7 +27,7 @@ public interface IThesisService
      * @param thesis 论文
      * @return 论文集合
      */
-    public List<Thesis> selectThesisList(Thesis thesis);
+    List<Thesis> selectThesisList(Thesis thesis);
 
     /**
      * 新增论文
@@ -37,7 +35,12 @@ public interface IThesisService
      * @param thesis 论文
      * @return 结果
      */
-    public int insertThesis(Thesis thesis);
+    int insertThesis(Thesis thesis);
+
+    /**
+     * 导入数据
+     */
+    String importData(List<Thesis> dataList, boolean updateSupport);
 
     /**
      * 修改论文
@@ -45,7 +48,7 @@ public interface IThesisService
      * @param thesis 论文
      * @return 结果
      */
-    public int updateThesis(Thesis thesis);
+    int updateThesis(Thesis thesis);
 
     /**
      * 批量删除论文
@@ -53,7 +56,7 @@ public interface IThesisService
      * @param ids 需要删除的论文主键集合
      * @return 结果
      */
-    public int deleteThesisByIds(Long[] ids);
+    int deleteThesisByIds(Long[] ids);
 
     /**
      * 删除论文信息
@@ -61,9 +64,6 @@ public interface IThesisService
      * @param id 论文主键
      * @return 结果
      */
-    public int deleteThesisById(Long id);
+    int deleteThesisById(Long id);
 
-    //EasyExcel批量导入
-    @Transactional(isolation = Isolation.READ_COMMITTED)
-    String importThesis(List<Thesis> studyList, Boolean updateSupport);
 }

+ 135 - 0
src/main/java/com/ruoyi/project/VRdemo/service/impl/ArchivesUnboundServiceImpl.java

@@ -0,0 +1,135 @@
+package com.ruoyi.project.VRdemo.service.impl;
+
+import java.util.List;
+
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.project.VRdemo.domain.ArchivesUnbound;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.VRdemo.mapper.ArchivesUnboundMapper;
+import com.ruoyi.project.VRdemo.service.IArchivesUnboundService;
+
+/**
+ * 博雅集 Archives Unbound(Gale)Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2024-10-06
+ */
+@Service
+public class ArchivesUnboundServiceImpl implements IArchivesUnboundService {
+
+    private final ArchivesUnboundMapper archivesUnboundMapper;
+
+    public ArchivesUnboundServiceImpl(@Autowired ArchivesUnboundMapper archivesUnboundMapper) {
+        this.archivesUnboundMapper = archivesUnboundMapper;
+    }
+
+    /**
+     * 查询博雅集 Archives Unbound(Gale)
+     *
+     * @param id 博雅集 Archives Unbound(Gale)主键
+     * @return 博雅集 Archives Unbound(Gale)
+     */
+    @Override
+    public ArchivesUnbound selectArchivesUnboundById(Long id) {
+        return archivesUnboundMapper.selectArchivesUnboundById(id);
+    }
+
+    /**
+     * 查询博雅集 Archives Unbound(Gale)列表
+     *
+     * @param archivesUnbound 博雅集 Archives Unbound(Gale)
+     * @return 博雅集 Archives Unbound(Gale)
+     */
+    @Override
+    public List<ArchivesUnbound> selectArchivesUnboundList(ArchivesUnbound archivesUnbound) {
+        return archivesUnboundMapper.selectArchivesUnboundList(archivesUnbound);
+    }
+
+    /**
+     * 新增博雅集 Archives Unbound(Gale)
+     *
+     * @param archivesUnbound 博雅集 Archives Unbound(Gale)
+     * @return 结果
+     */
+    @Override
+    public int insertArchivesUnbound(ArchivesUnbound archivesUnbound) {
+        archivesUnbound.setCreateTime(DateUtils.getNowDate());
+        return archivesUnboundMapper.insertArchivesUnbound(archivesUnbound);
+    }
+
+    /**
+     * 修改博雅集 Archives Unbound(Gale)
+     *
+     * @param archivesUnbound 博雅集 Archives Unbound(Gale)
+     * @return 结果
+     */
+    @Override
+    public int updateArchivesUnbound(ArchivesUnbound archivesUnbound) {
+        archivesUnbound.setUpdateTime(DateUtils.getNowDate());
+        return archivesUnboundMapper.updateArchivesUnbound(archivesUnbound);
+    }
+
+    /**
+     * 批量删除博雅集 Archives Unbound(Gale)
+     *
+     * @param ids 需要删除的博雅集 Archives Unbound(Gale)主键
+     * @return 结果
+     */
+    @Override
+    public int deleteArchivesUnboundByIds(Long[] ids) {
+        return archivesUnboundMapper.deleteArchivesUnboundByIds(ids);
+    }
+
+    /**
+     * 删除博雅集 Archives Unbound(Gale)信息
+     *
+     * @param id 博雅集 Archives Unbound(Gale)主键
+     * @return 结果
+     */
+    @Override
+    public int deleteArchivesUnboundById(Long id) {
+        return archivesUnboundMapper.deleteArchivesUnboundById(id);
+    }
+
+    /**
+     * 新增博雅集 Archives Unbound(Gale)数据列表
+     *
+     * @param dataList 博雅集 Archives Unbound(Gale)数据列表
+     * @return 结果
+     */
+    @Override
+    public String importData(List<ArchivesUnbound> dataList, boolean updateSupport) {
+        BulkImportService<ArchivesUnbound> importService = new BulkImportService<>() {
+            @Override
+            protected Long checkExistingItem(ArchivesUnbound item) {
+                ArchivesUnbound archivesUnbound = archivesUnboundMapper.selectArchivesUnboundByTitle(item.getTitle());
+                if (archivesUnbound != null) {
+                    return archivesUnbound.getId();
+                }
+                return 0L;
+            }
+
+            @Override
+            protected boolean updateItem(ArchivesUnbound item, Long id) {
+                item.setId(id);
+                item.setUpdateBy(SecurityUtils.getLoginUser().getUsername());
+                item.setUpdateTime(DateUtils.getNowDate());
+                return archivesUnboundMapper.updateArchivesUnbound(item) > 0;
+            }
+
+            @Override
+            protected boolean executeBatch(List<ArchivesUnbound> batchDataList) {
+                return archivesUnboundMapper.insertArchivesUnboundDataList(batchDataList) > 0;
+            }
+
+            @Override
+            protected String getItemTitle(ArchivesUnbound item) {
+                return item.getTitle();
+            }
+        };
+
+        return importService.importData(dataList, updateSupport);
+    }
+}

+ 185 - 0
src/main/java/com/ruoyi/project/VRdemo/service/impl/BulkImportService.java

@@ -0,0 +1,185 @@
+package com.ruoyi.project.VRdemo.service.impl;
+
+import com.ruoyi.common.exception.ServiceException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.transaction.annotation.Isolation;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 导入模板方法
+ */
+public abstract class BulkImportService<T> {
+
+    // 单次导入批次最大数
+    private static final int BATCH_COUNT = 500;
+
+    // 单次导入批次列表
+    private final List<T> batchDataList = new ArrayList<>();
+
+    private int successNum = 0;    // 成功消息数
+    // 成功消息详情
+    private final StringBuilder successMsg = new StringBuilder();
+
+    private int failureNum = 0;    // 失败消息数
+    // 失败消息详情
+    private final StringBuilder failureMsg = new StringBuilder();
+
+    private static final Logger logger = LoggerFactory.getLogger(BulkImportService.class);
+
+
+    /**
+     * 导入模板方法
+     *
+     * @param dataList      数据列表
+     * @param updateSupport 是否更新已存在的用户数据
+     */
+    @Transactional(isolation = Isolation.READ_COMMITTED)
+    public String importData(List<T> dataList, boolean updateSupport) {
+        //导入list校验
+        validateData(dataList);
+
+        for (T item : dataList) {
+            try {
+                // 进行导入操作
+                processItem(item, updateSupport);
+            } catch (Exception e) {
+                // 输出异常信息和上下文信息到日志
+                logger.error("导入数据时发生异常:", e);
+                logger.error("异常发生时的数据:{}", item); // 这里的 item 是导致异常的数据对象
+                // 处理导入失败的情况
+                handleImportFailure(item);
+            }
+        }
+
+        return returnMessage();
+    }
+
+    // 校验列表方法
+    protected void validateData(List<T> dataList) {
+        if (dataList == null || dataList.isEmpty()) {
+            throw new ServiceException("导入列表数据不能为空!");
+        }
+    }
+
+    // 校验具体数据方法-不重写即不校验
+    protected boolean isInvalid(T item) {
+        if (item == null) {
+            throw new ServiceException("导入数据不能为空!");
+        }
+        return true;
+    }
+
+    // 校验不通过操作
+    protected void handleInvalid(T item) {
+        handleImportFailure(item);
+        logger.error("导入数据时发生异常:{}", getInvalidMessage(item));
+        logger.error("校验不通过的数据:{}", item);
+    }
+
+    // 校验不通过返回消息方法
+    protected String getInvalidMessage(T item) {
+        return getItemTitle(item) + "校验不通过";
+    }
+
+    /**
+     * 校验数据,并插入数据库
+     */
+    protected void processItem(T item, Boolean updateSupport) {
+        if (!isInvalid(item)) {
+            handleInvalid(item); // 处理校验不通过的情况
+            return;
+        }
+
+        if (updateSupport) {
+            Long i = checkExistingItem(item);
+            if (i != 0) {
+                handleUpdate(item, i); // 更新数据
+            }
+        } else {
+            batchDataList.add(item); // 导入列表插入数据
+
+            if (batchDataList.size() >= BATCH_COUNT || isLastItem(item)) {
+                handleInsert(); // 进行数据导入
+                batchDataList.clear();
+            }
+        }
+    }
+
+    // 更新数据操作
+    protected void handleUpdate(T item, Long id) {
+        if (updateItem(item, id)) {
+            successNum++;
+            successMsg.append("成功更新数据:").append(getItemTitle(item)).append("\n");
+        } else {
+            failureNum++;
+            successMsg.append("更新数据失败:").append(getItemTitle(item)).append("\n");
+        }
+    }
+
+    // 插入数据操作
+    protected void handleInsert() {
+        boolean result = executeBatch(batchDataList); // 列表数据导入数据库
+        for (T t : batchDataList) {
+            if (result) {
+                handleImportSuccess(t);
+            } else {
+                handleImportFailure(t);
+            }
+        }
+    }
+
+    // 判断是否为最后一个数据方法
+    protected boolean isLastItem(T item) {
+        return batchDataList.indexOf(item) == batchDataList.size() - 1;
+    }
+
+    /**
+     * 校验数据是否已存在方法-进行查找数据操作
+     */
+    protected abstract Long checkExistingItem(T item);
+
+    /**
+     * 更新数据方法-进行更新数据操作
+     */
+    protected abstract boolean updateItem(T item, Long id);
+
+    /**
+     * 批量插入数据库方法-进行批量插入数据库操作
+     */
+    protected abstract boolean executeBatch(List<T> batchDataList);
+
+
+    protected void handleImportSuccess(T item) {
+        successMsg.append("导入成功,").append(getItemTitle(item)).append("\n");
+        successNum++;
+    }
+
+    protected void handleImportFailure(T item) {
+        failureMsg.append("导入失败,").append(getItemTitle(item)).append("\n");
+        failureNum++;
+    }
+
+    /**
+     * 获取具体数据标题方法
+     */
+    protected abstract String getItemTitle(T item);
+
+    /**
+     * 返回消息
+     */
+    protected String returnMessage() {
+        if (failureNum > 0) {
+            failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确或插入数据库出错,错误如下:\n");
+            throw new ServiceException(failureMsg.toString());
+        } else {
+            successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:\n");
+        }
+
+        return successMsg.toString();
+    }
+
+}

+ 126 - 0
src/main/java/com/ruoyi/project/VRdemo/service/impl/ConsultationServiceImplImpl.java

@@ -0,0 +1,126 @@
+package com.ruoyi.project.VRdemo.service.impl;
+
+import java.util.List;
+
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.VRdemo.mapper.ConsultationMapper;
+import com.ruoyi.project.VRdemo.domain.Consultation;
+import com.ruoyi.project.VRdemo.service.IConsultationService;
+
+/**
+ * 博雅集南洋资讯检索Service业务层处理
+ *
+ * @author ruoyi
+ */
+@Service
+public class ConsultationServiceImplImpl implements IConsultationService {
+
+    private final ConsultationMapper consultationMapper;
+
+    public ConsultationServiceImplImpl(@Autowired ConsultationMapper consultationMapper) {
+        this.consultationMapper = consultationMapper;
+    }
+
+    /**
+     * 查询博雅集南洋资讯检索
+     *
+     * @param id 博雅集南洋资讯检索主键
+     * @return 博雅集南洋资讯检索
+     */
+    @Override
+    public Consultation selectConsultationById(Long id) {
+        return consultationMapper.selectConsultationById(id);
+    }
+
+    /**
+     * 查询博雅集南洋资讯检索列表
+     *
+     * @param consultation 博雅集南洋资讯检索
+     * @return 博雅集南洋资讯检索
+     */
+    @Override
+    public List<Consultation> selectConsultationList(Consultation consultation) {
+        return consultationMapper.selectConsultationList(consultation);
+    }
+
+    /**
+     * 新增博雅集南洋资讯检索
+     *
+     * @param consultation 博雅集南洋资讯检索
+     * @return 结果
+     */
+    @Override
+    public int insertConsultation(Consultation consultation) {
+        consultation.setCreateTime(DateUtils.getNowDate());
+        return consultationMapper.insertConsultation(consultation);
+    }
+
+    /**
+     * 修改博雅集南洋资讯检索
+     *
+     * @param consultation 博雅集南洋资讯检索
+     * @return 结果
+     */
+    @Override
+    public int updateConsultation(Consultation consultation) {
+        consultation.setUpdateTime(DateUtils.getNowDate());
+        return consultationMapper.updateConsultation(consultation);
+    }
+
+    /**
+     * 批量删除博雅集南洋资讯检索
+     *
+     * @param ids 需要删除的博雅集南洋资讯检索主键
+     * @return 结果
+     */
+    @Override
+    public int deleteConsultationByIds(Long[] ids) {
+        return consultationMapper.deleteConsultationByIds(ids);
+    }
+
+    /**
+     * 删除博雅集南洋资讯检索信息
+     *
+     * @param id 博雅集南洋资讯检索主键
+     * @return 结果
+     */
+    @Override
+    public int deleteConsultationById(Long id) {
+        return consultationMapper.deleteConsultationById(id);
+    }
+
+    @Override
+    public String importData(List<Consultation> dataList, boolean updateSupport) {
+        BulkImportService<Consultation> importService = new BulkImportService<>() {
+            @Override
+            protected Long checkExistingItem(Consultation item) {
+                Consultation consultation = consultationMapper.selectConsultationByTitle(item.getChineseName(), item.getEnglishName());
+                return consultation == null ? 0L : consultation.getId();
+            }
+
+            @Override
+            protected boolean updateItem(Consultation item, Long id) {
+                item.setId(id);
+                item.setUpdateBy(SecurityUtils.getLoginUser().getUsername());
+                item.setUpdateTime(DateUtils.getNowDate());
+                return consultationMapper.updateConsultation(item) > 0;
+            }
+
+            @Override
+            protected boolean executeBatch(List<Consultation> batchDataList) {
+                return consultationMapper.insertConsultationDataList(batchDataList) > 0;
+            }
+
+            @Override
+            protected String getItemTitle(Consultation item) {
+                return item.getTitle();
+            }
+        };
+
+        return importService.importData(dataList, updateSupport);
+    }
+
+}

+ 133 - 0
src/main/java/com/ruoyi/project/VRdemo/service/impl/EconomyServiceImpl.java

@@ -0,0 +1,133 @@
+package com.ruoyi.project.VRdemo.service.impl;
+
+import java.util.List;
+
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.project.VRdemo.domain.Economy;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.VRdemo.mapper.EconomyMapper;
+import com.ruoyi.project.VRdemo.service.IEconomyService;
+
+/**
+ * 东南亚经济统计Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2024-10-06
+ */
+@Service
+public class EconomyServiceImpl implements IEconomyService {
+
+    private final EconomyMapper economyMapper;
+
+    public EconomyServiceImpl(@Autowired EconomyMapper economyMapper) {
+        this.economyMapper = economyMapper;
+    }
+
+    /**
+     * 查询东南亚经济统计
+     *
+     * @param id 东南亚经济统计主键
+     * @return 东南亚经济统计
+     */
+    @Override
+    public Economy selectEconomyById(Long id) {
+        return economyMapper.selectEconomyById(id);
+    }
+
+    /**
+     * 查询东南亚经济统计列表
+     *
+     * @param economy 东南亚经济统计
+     * @return 东南亚经济统计
+     */
+    @Override
+    public List<Economy> selectEconomyList(Economy economy) {
+        return economyMapper.selectEconomyList(economy);
+    }
+
+    /**
+     * 新增东南亚经济统计
+     *
+     * @param economy 东南亚经济统计
+     * @return 结果
+     */
+    @Override
+    public int insertEconomy(Economy economy) {
+        economy.setCreateTime(DateUtils.getNowDate());
+        return economyMapper.insertEconomy(economy);
+    }
+
+    /**
+     * 修改东南亚经济统计
+     *
+     * @param economy 东南亚经济统计
+     * @return 结果
+     */
+    @Override
+    public int updateEconomy(Economy economy) {
+        economy.setUpdateTime(DateUtils.getNowDate());
+        return economyMapper.updateEconomy(economy);
+    }
+
+    /**
+     * 批量删除东南亚经济统计
+     *
+     * @param ids 需要删除的东南亚经济统计主键
+     * @return 结果
+     */
+    @Override
+    public int deleteEconomyByIds(Long[] ids) {
+        return economyMapper.deleteEconomyByIds(ids);
+    }
+
+    /**
+     * 删除东南亚经济统计信息
+     *
+     * @param id 东南亚经济统计主键
+     * @return 结果
+     */
+    @Override
+    public int deleteEconomyById(Long id) {
+        return economyMapper.deleteEconomyById(id);
+    }
+
+    /**
+     * 导入数据
+     *
+     * @param dataList      数据列表
+     * @param updateSupport 是否更新
+     * @return 结果
+     */
+    @Override
+    public String importData(List<Economy> dataList, boolean updateSupport) {
+        BulkImportService<Economy> importService = new BulkImportService<>() {
+            @Override
+            protected Long checkExistingItem(Economy item) {
+                Economy economy = economyMapper.selectEconomyByTitle(item.getTitle());
+                return economy == null ? 0L : economy.getId();
+            }
+
+            @Override
+            protected boolean updateItem(Economy item, Long id) {
+                item.setId(id);
+                item.setUpdateBy(SecurityUtils.getLoginUser().getUsername());
+                item.setUpdateTime(DateUtils.getNowDate());
+                return economyMapper.updateEconomy(item) > 0;
+            }
+
+            @Override
+            protected boolean executeBatch(List<Economy> batchDataList) {
+                return economyMapper.insertEconomyDataList(batchDataList) > 0;
+            }
+
+            @Override
+            protected String getItemTitle(Economy item) {
+                return item.getTitle();
+            }
+        };
+
+        return importService.importData(dataList, updateSupport);
+    }
+}

+ 130 - 0
src/main/java/com/ruoyi/project/VRdemo/service/impl/InstitutionServiceImpl.java

@@ -0,0 +1,130 @@
+package com.ruoyi.project.VRdemo.service.impl;
+
+
+import java.util.List;
+
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.VRdemo.mapper.InstitutionMapper;
+import com.ruoyi.project.VRdemo.domain.Institution;
+import com.ruoyi.project.VRdemo.service.IInstitutionService;
+
+/**
+ * 博雅集东南亚研究机构Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2024-09-26
+ */
+@Service
+public class InstitutionServiceImpl implements IInstitutionService {
+
+    private final InstitutionMapper institutionMapper;
+
+    public InstitutionServiceImpl(@Autowired InstitutionMapper institutionMapper) {
+        this.institutionMapper = institutionMapper;
+    }
+
+    /**
+     * 查询博雅集东南亚研究机构
+     *
+     * @param id 博雅集东南亚研究机构主键
+     * @return 博雅集东南亚研究机构
+     */
+    @Override
+    public Institution selectInstitutionById(Long id) {
+        return institutionMapper.selectInstitutionById(id);
+    }
+
+    /**
+     * 查询博雅集东南亚研究机构列表
+     *
+     * @param institution 博雅集东南亚研究机构
+     * @return 博雅集东南亚研究机构
+     */
+    @Override
+    public List<Institution> selectInstitutionList(Institution institution) {
+        return institutionMapper.selectInstitutionList(institution);
+    }
+
+    /**
+     * 新增博雅集东南亚研究机构
+     *
+     * @param institution 博雅集东南亚研究机构
+     * @return 结果
+     */
+    @Override
+    public int insertInstitution(Institution institution) {
+        institution.setCreateTime(DateUtils.getNowDate());
+        return institutionMapper.insertInstitution(institution);
+    }
+
+    /**
+     * 修改博雅集东南亚研究机构
+     *
+     * @param institution 博雅集东南亚研究机构
+     * @return 结果
+     */
+    @Override
+    public int updateInstitution(Institution institution) {
+        institution.setUpdateTime(DateUtils.getNowDate());
+        return institutionMapper.updateInstitution(institution);
+    }
+
+    /**
+     * 批量删除博雅集东南亚研究机构
+     *
+     * @param ids 需要删除的博雅集东南亚研究机构主键
+     * @return 结果
+     */
+    @Override
+    public int deleteInstitutionByIds(Long[] ids) {
+        return institutionMapper.deleteInstitutionByIds(ids);
+    }
+
+    /**
+     * 删除博雅集东南亚研究机构信息
+     *
+     * @param id 博雅集东南亚研究机构主键
+     * @return 结果
+     */
+    @Override
+    public int deleteInstitutionById(Long id) {
+        return institutionMapper.deleteInstitutionById(id);
+    }
+
+    /**
+     * 导入数据
+     */
+    @Override
+    public String importData(List<Institution> dataList, boolean updateSupport) {
+        BulkImportService<Institution> importService = new BulkImportService<>() {
+            @Override
+            protected Long checkExistingItem(Institution item) {
+                Institution institution = institutionMapper.selectInstitutionByTitle(item.getChineseName(), item.getEnglishName());
+                return institution == null ? 0L : institution.getId();
+            }
+
+            @Override
+            protected boolean updateItem(Institution item, Long id) {
+                item.setId(id);
+                item.setUpdateBy(SecurityUtils.getLoginUser().getUsername());
+                item.setUpdateTime(DateUtils.getNowDate());
+                return institutionMapper.updateInstitution(item) > 0;
+            }
+
+            @Override
+            protected boolean executeBatch(List<Institution> batchDataList) {
+                return institutionMapper.insertInstitutionDataList(batchDataList) > 0;
+            }
+
+            @Override
+            protected String getItemTitle(Institution item) {
+                return item.getTitle();
+            }
+        };
+
+        return importService.importData(dataList, updateSupport);
+    }
+}

+ 129 - 0
src/main/java/com/ruoyi/project/VRdemo/service/impl/LiteratureServiceImpl.java

@@ -0,0 +1,129 @@
+package com.ruoyi.project.VRdemo.service.impl;
+
+import java.util.List;
+
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.VRdemo.mapper.LiteratureMapper;
+import com.ruoyi.project.VRdemo.domain.Literature;
+import com.ruoyi.project.VRdemo.service.ILiteratureService;
+
+/**
+ * 博雅集东南亚重要参考文献汇编Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2024-09-26
+ */
+@Service
+public class LiteratureServiceImpl implements ILiteratureService {
+
+    private final LiteratureMapper literatureMapper;
+
+    public LiteratureServiceImpl(@Autowired LiteratureMapper literatureMapper) {
+        this.literatureMapper = literatureMapper;
+    }
+
+    /**
+     * 查询博雅集东南亚重要参考文献汇编
+     *
+     * @param id 博雅集东南亚重要参考文献汇编主键
+     * @return 博雅集东南亚重要参考文献汇编
+     */
+    @Override
+    public Literature selectLiteratureById(Long id) {
+        return literatureMapper.selectLiteratureById(id);
+    }
+
+    /**
+     * 查询博雅集东南亚重要参考文献汇编列表
+     *
+     * @param literature 博雅集东南亚重要参考文献汇编
+     * @return 博雅集东南亚重要参考文献汇编
+     */
+    @Override
+    public List<Literature> selectLiteratureList(Literature literature) {
+        return literatureMapper.selectLiteratureList(literature);
+    }
+
+    /**
+     * 新增博雅集东南亚重要参考文献汇编
+     *
+     * @param literature 博雅集东南亚重要参考文献汇编
+     * @return 结果
+     */
+    @Override
+    public int insertLiterature(Literature literature) {
+        literature.setCreateTime(DateUtils.getNowDate());
+        return literatureMapper.insertLiterature(literature);
+    }
+
+    /**
+     * 修改博雅集东南亚重要参考文献汇编
+     *
+     * @param literature 博雅集东南亚重要参考文献汇编
+     * @return 结果
+     */
+    @Override
+    public int updateLiterature(Literature literature) {
+        literature.setUpdateTime(DateUtils.getNowDate());
+        return literatureMapper.updateLiterature(literature);
+    }
+
+    /**
+     * 批量删除博雅集东南亚重要参考文献汇编
+     *
+     * @param ids 需要删除的博雅集东南亚重要参考文献汇编主键
+     * @return 结果
+     */
+    @Override
+    public int deleteLiteratureByIds(Long[] ids) {
+        return literatureMapper.deleteLiteratureByIds(ids);
+    }
+
+    /**
+     * 删除博雅集东南亚重要参考文献汇编信息
+     *
+     * @param id 博雅集东南亚重要参考文献汇编主键
+     * @return 结果
+     */
+    @Override
+    public int deleteLiteratureById(Long id) {
+        return literatureMapper.deleteLiteratureById(id);
+    }
+
+    /**
+     * 导入数据
+     */
+    @Override
+    public String importData(List<Literature> dataList, boolean updateSupport) {
+        BulkImportService<Literature> importService = new BulkImportService<>() {
+            @Override
+            protected Long checkExistingItem(Literature item) {
+                Literature literature = literatureMapper.selectLiteratureByTitle(item.getTitle());
+                return literature == null ? 0L : literature.getId();
+            }
+
+            @Override
+            protected boolean updateItem(Literature item, Long id) {
+                item.setId(id);
+                item.setUpdateBy(SecurityUtils.getLoginUser().getUsername());
+                item.setUpdateTime(DateUtils.getNowDate());
+                return literatureMapper.updateLiterature(item) > 0;
+            }
+
+            @Override
+            protected boolean executeBatch(List<Literature> batchDataList) {
+                return literatureMapper.insertLiteratureDataList(batchDataList) > 0;
+            }
+
+            @Override
+            protected String getItemTitle(Literature item) {
+                return item.getTitle();
+            }
+        };
+
+        return importService.importData(dataList, updateSupport);
+    }
+}

+ 1 - 2
src/main/java/com/ruoyi/project/VRdemo/service/impl/NoticeDataServiceImpl.java

@@ -5,9 +5,8 @@ import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.StringUtils;
 
-import com.ruoyi.project.VRdemo.domain.NoteNationData;
 import com.ruoyi.project.VRdemo.domain.NoticeData;
-import com.ruoyi.project.VRdemo.domain.NoticeImData;
+import com.ruoyi.project.VRdemo.domain.imData.NoticeImData;
 import com.ruoyi.project.VRdemo.domain.vo.NoticeDataVo;
 import com.ruoyi.project.VRdemo.mapper.DataExcelMapper;
 import com.ruoyi.project.VRdemo.mapper.NoticeDataMapper;

+ 50 - 127
src/main/java/com/ruoyi/project/VRdemo/service/impl/PressServiceImpl.java

@@ -1,207 +1,130 @@
 package com.ruoyi.project.VRdemo.service.impl;
 
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
+
 import java.util.List;
 
-import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.project.VRdemo.domain.NoticeImData;
-import com.ruoyi.project.VRdemo.domain.StudyImData;
-import com.ruoyi.project.VRdemo.mapper.DataExcelMapper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.core.parameters.P;
 import org.springframework.stereotype.Service;
 import com.ruoyi.project.VRdemo.mapper.PressMapper;
 import com.ruoyi.project.VRdemo.domain.Press;
 import com.ruoyi.project.VRdemo.service.IPressService;
-import org.springframework.transaction.annotation.Isolation;
-import org.springframework.transaction.annotation.Transactional;
 
 /**
  * pressService业务层处理
- * 
+ *
  * @author ruoyi
  * @date 2024-01-19
  */
 @Service
-public class PressServiceImpl implements IPressService 
-{
-    @Autowired
-    private PressMapper pressMapper;
+public class PressServiceImpl implements IPressService {
+
+    private final PressMapper pressMapper;
 
-    @Autowired
-    private DataExcelMapper dataExcelMapper;
-    private static final Logger logger = LoggerFactory.getLogger(Press.class);
+    public PressServiceImpl(@Autowired PressMapper pressMapper) {
+        this.pressMapper = pressMapper;
+    }
 
-    private static final int BATCH_COUNT = 10000;
     /**
      * 查询press
-     * 
+     *
      * @param pressId press主键
      * @return press
      */
     @Override
-    public Press selectPressByPressId(Long pressId)
-    {
+    public Press selectPressByPressId(Long pressId) {
         return pressMapper.selectPressByPressId(pressId);
     }
 
     /**
      * 查询press列表
-     * 
+     *
      * @param press press
      * @return press
      */
     @Override
-    public List<Press> selectPressList(Press press)
-    {
+    public List<Press> selectPressList(Press press) {
         return pressMapper.selectPressList(press);
     }
 
     /**
      * 新增press
-     * 
+     *
      * @param press press
      * @return 结果
      */
     @Override
-    public int insertPress(Press press)
-    {
+    public int insertPress(Press press) {
         press.setCreateTime(DateUtils.getNowDate());
         return pressMapper.insertPress(press);
     }
 
     /**
      * 修改press
-     * 
+     *
      * @param press press
      * @return 结果
      */
     @Override
-    public int updatePress(Press press)
-    {
+    public int updatePress(Press press) {
         press.setUpdateTime(DateUtils.getNowDate());
         return pressMapper.updatePress(press);
     }
 
     /**
      * 批量删除press
-     * 
+     *
      * @param pressIds 需要删除的press主键
      * @return 结果
      */
     @Override
-    public int deletePressByPressIds(Long[] pressIds)
-    {
+    public int deletePressByPressIds(Long[] pressIds) {
         return pressMapper.deletePressByPressIds(pressIds);
     }
 
     /**
      * 删除press信息
-     * 
+     *
      * @param pressId press主键
      * @return 结果
      */
     @Override
-    public int deletePressByPressId(Long pressId)
-    {
+    public int deletePressByPressId(Long pressId) {
         return pressMapper.deletePressByPressId(pressId);
     }
 
-    //EasyExcel批量导入
+    /**
+     * 导入数据
+     */
     @Override
-    @Transactional(isolation = Isolation.READ_COMMITTED)
-    public String importPress(List<Press> pressList, Boolean updateSupport) {
-        if (StringUtils.isNull(pressList) || pressList.size() == 0) {
-            throw new ServiceException("导入用户数据不能为空!");
-        }
-
-        List<Press> batchDataList = new ArrayList<>();
-        int successNum = 0;
-        int failureNum = 0;
-        StringBuilder successMsg = new StringBuilder();
-        StringBuilder failureMsg = new StringBuilder();
-
-        // 遍历用户数据列表,逐条处理数据
-        for (Press press : pressList) {
-            try {
-                // 对每一条数据进行处理
-                // 根据title字段判断数据合法性
-                if (StringUtils.isEmpty(press.getTitle())) {
-                    throw new ServiceException("模板标题不能为空!");
-                }
-
-                // 分开时间和刊期
-                String dateAndIssue = press.getIssue();
-
-                String dateStr = dateAndIssue.substring(0, dateAndIssue.indexOf("(")).trim();
-                SimpleDateFormat ft = new SimpleDateFormat("yyyy");
-                Date date = ft.parse(dateStr);
-
-                String issue = dateAndIssue.substring(dateAndIssue.indexOf("(") + 1 ,dateAndIssue.indexOf(")")).trim();
-
-                System.out.println(dateStr+"+++++"+issue);
-
-                press.setDate(date);
-                press.setIssue(issue);
-
-
-                // 如果更新支持,检查数据库中是否存在相同的记录,如果存在,则进行更新操作
-                // 判断数据库中是否存在相同标题的记录
-                Press existingPress = null;
-                if(updateSupport){
-                    String titleAsString = press.getTitle();
-                    existingPress= dataExcelMapper.selectPressByTitle(titleAsString);
-                }
-                if (existingPress != null) {
-                    press.setUpdateBy(SecurityUtils.getLoginUser().getUsername());
-                    press.setUpdateTime(DateUtils.getNowDate());
-                    // 更新操作
-                    dataExcelMapper.updatePressByImport(press);
-                    successNum++;
-                    successMsg.append("成功更新数据:").append(press.getTitle()).append("\n");
-                } else {
-                    // 检查是否已经存在于 batchDataList 中,避免重复插入
-                    if (!batchDataList.contains(press)) {
-                        press.setCreateBy(SecurityUtils.getLoginUser().getUsername());
-                        press.setCreateTime(DateUtils.getNowDate());
-                        batchDataList.add(press);
-                    }
-                    // 判断是否达到BATCH_COUNT,或者已经是最后一个数据
-                    if (batchDataList.size() >= BATCH_COUNT || pressList.indexOf(press) == pressList.size() - 1) {
-                        System.out.println( "batchDataList size: " + batchDataList);
-                        // 执行批量插入操作
-                        dataExcelMapper.insertPressDataList(batchDataList);
-                        successNum += batchDataList.size();
-                        for (Press insertedPress : batchDataList) {
-                            successMsg.append("成功导入数据:").append(insertedPress.getTitle()).append("\n");
-                        }
-                        batchDataList.clear();
-                    }
-                }
-            } catch (Exception e) {
-                // 输出异常信息和上下文信息到日志
-                logger.error("导入数据时发生异常:", e);
-                logger.error("异常发生时的数据:{}", press); // 这里的 study 是导致异常的数据对象
-                // 处理导入失败的情况
-                failureNum++;
-                failureMsg.append("导入失败,模板标题为:").append(press.getTitle()).append("\n");
+    public String importData(List<Press> dataList, boolean updateSupport) {
+        BulkImportService<Press> importService = new BulkImportService<>() {
+            @Override
+            protected Long checkExistingItem(Press item) {
+                Press press = pressMapper.selectPressByTitle(item.getTitle());
+                return press == null ? 0L : press.getPressId();
+            }
+
+            @Override
+            protected boolean updateItem(Press item, Long id) {
+                item.setPressId(id);
+                item.setUpdateBy(SecurityUtils.getLoginUser().getUsername());
+                item.setUpdateTime(DateUtils.getNowDate());
+                return pressMapper.updatePress(item) > 0;
+            }
+
+            @Override
+            protected boolean executeBatch(List<Press> batchDataList) {
+                return pressMapper.insertPressDataList(batchDataList) > 0;
             }
-        }
-        // 判断是否有导入失败的数据
-        if (failureNum > 0) {
-            failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确或插入数据库出错,错误如下:\n");
-            throw new ServiceException(failureMsg.toString());
-        } else {
-            // 若全部数据导入成功,则返回成功导入的信息
-            successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:\n");
-        }
-        return successMsg.toString();
+
+            @Override
+            protected String getItemTitle(Press item) {
+                return item.getTitle();
+            }
+        };
+
+        return importService.importData(dataList, updateSupport);
     }
 }

+ 133 - 0
src/main/java/com/ruoyi/project/VRdemo/service/impl/PublicationServiceImpl.java

@@ -0,0 +1,133 @@
+package com.ruoyi.project.VRdemo.service.impl;
+
+import java.util.List;
+
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.project.VRdemo.domain.Publication;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.VRdemo.mapper.PublicationMapper;
+import com.ruoyi.project.VRdemo.service.IPublicationService;
+
+/**
+ * 东南亚连续出版物Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2024-10-06
+ */
+@Service
+public class PublicationServiceImpl implements IPublicationService {
+
+    private final PublicationMapper publicationMapper;
+
+    public PublicationServiceImpl(@Autowired PublicationMapper publicationMapper) {
+        this.publicationMapper = publicationMapper;
+    }
+
+    /**
+     * 查询东南亚连续出版物
+     *
+     * @param id 东南亚连续出版物主键
+     * @return 东南亚连续出版物
+     */
+    @Override
+    public Publication selectPublicationById(Long id) {
+        return publicationMapper.selectPublicationById(id);
+    }
+
+    /**
+     * 查询东南亚连续出版物列表
+     *
+     * @param publication 东南亚连续出版物
+     * @return 东南亚连续出版物
+     */
+    @Override
+    public List<Publication> selectPublicationList(Publication publication) {
+        return publicationMapper.selectPublicationList(publication);
+    }
+
+    /**
+     * 新增东南亚连续出版物
+     *
+     * @param publication 东南亚连续出版物
+     * @return 结果
+     */
+    @Override
+    public int insertPublication(Publication publication) {
+        publication.setCreateTime(DateUtils.getNowDate());
+        return publicationMapper.insertPublication(publication);
+    }
+
+    /**
+     * 修改东南亚连续出版物
+     *
+     * @param publication 东南亚连续出版物
+     * @return 结果
+     */
+    @Override
+    public int updatePublication(Publication publication) {
+        publication.setUpdateTime(DateUtils.getNowDate());
+        return publicationMapper.updatePublication(publication);
+    }
+
+    /**
+     * 批量删除东南亚连续出版物
+     *
+     * @param ids 需要删除的东南亚连续出版物主键
+     * @return 结果
+     */
+    @Override
+    public int deletePublicationByIds(Long[] ids) {
+        return publicationMapper.deletePublicationByIds(ids);
+    }
+
+    /**
+     * 删除东南亚连续出版物信息
+     *
+     * @param id 东南亚连续出版物主键
+     * @return 结果
+     */
+    @Override
+    public int deletePublicationById(Long id) {
+        return publicationMapper.deletePublicationById(id);
+    }
+
+    /**
+     * 导入数据
+     *
+     * @param dataList      导入数据列表
+     * @param updateSupport 是否更新已经存在的数据
+     * @return 结果
+     */
+    @Override
+    public String importData(List<Publication> dataList, boolean updateSupport) {
+        BulkImportService<Publication> importService = new BulkImportService<>() {
+            @Override
+            protected Long checkExistingItem(Publication item) {
+                Publication publication = publicationMapper.selectPublicationByTitle(item.getTitle());
+                return publication == null ? 0L : publication.getId();
+            }
+
+            @Override
+            protected boolean updateItem(Publication item, Long id) {
+                item.setId(id);
+                item.setUpdateBy(SecurityUtils.getLoginUser().getUsername());
+                item.setUpdateTime(DateUtils.getNowDate());
+                return publicationMapper.updatePublication(item) > 0;
+            }
+
+            @Override
+            protected boolean executeBatch(List<Publication> batchDataList) {
+                return publicationMapper.insertPublicationDataList(batchDataList) > 0;
+            }
+
+            @Override
+            protected String getItemTitle(Publication item) {
+                return item.getTitle();
+            }
+        };
+
+        return importService.importData(dataList, updateSupport);
+    }
+}

+ 49 - 110
src/main/java/com/ruoyi/project/VRdemo/service/impl/ResearchServiceImpl.java

@@ -1,189 +1,128 @@
 package com.ruoyi.project.VRdemo.service.impl;
 
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
+
 import java.util.List;
 
-import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.project.VRdemo.domain.Research;
-import com.ruoyi.project.VRdemo.mapper.DataExcelMapper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.project.VRdemo.mapper.ResearchMapper;
-import com.ruoyi.project.VRdemo.domain.Research;
 import com.ruoyi.project.VRdemo.service.IResearchService;
-import org.springframework.transaction.annotation.Isolation;
-import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 研究Service业务层处理
- * 
+ *
  * @author ruoyi
  * @date 2024-06-23
  */
 @Service
-public class ResearchServiceImpl implements IResearchService 
-{
-    @Autowired
-    private ResearchMapper researchMapper;
+public class ResearchServiceImpl implements IResearchService {
 
-    @Autowired
-    private DataExcelMapper dataExcelMapper;
-    private static final Logger logger = LoggerFactory.getLogger(Research.class);
+    private final ResearchMapper researchMapper;
 
-    private static final int BATCH_COUNT = 10000;
+    public ResearchServiceImpl(@Autowired ResearchMapper researchMapper) {
+        this.researchMapper = researchMapper;
+    }
 
     /**
      * 查询研究
-     * 
+     *
      * @param id 研究主键
      * @return 研究
      */
     @Override
-    public Research selectResearchById(Long id)
-    {
+    public Research selectResearchById(Long id) {
         return researchMapper.selectResearchById(id);
     }
 
     /**
      * 查询研究列表
-     * 
+     *
      * @param research 研究
      * @return 研究
      */
     @Override
-    public List<Research> selectResearchList(Research research)
-    {
+    public List<Research> selectResearchList(Research research) {
         return researchMapper.selectResearchList(research);
     }
 
     /**
      * 新增研究
-     * 
+     *
      * @param research 研究
      * @return 结果
      */
     @Override
-    public int insertResearch(Research research)
-    {
+    public int insertResearch(Research research) {
         return researchMapper.insertResearch(research);
     }
 
     /**
      * 修改研究
-     * 
+     *
      * @param research 研究
      * @return 结果
      */
     @Override
-    public int updateResearch(Research research)
-    {
+    public int updateResearch(Research research) {
         return researchMapper.updateResearch(research);
     }
 
     /**
      * 批量删除研究
-     * 
+     *
      * @param ids 需要删除的研究主键
      * @return 结果
      */
     @Override
-    public int deleteResearchByIds(Long[] ids)
-    {
+    public int deleteResearchByIds(Long[] ids) {
         return researchMapper.deleteResearchByIds(ids);
     }
 
     /**
      * 删除研究信息
-     * 
+     *
      * @param id 研究主键
      * @return 结果
      */
     @Override
-    public int deleteResearchById(Long id)
-    {
+    public int deleteResearchById(Long id) {
         return researchMapper.deleteResearchById(id);
     }
 
-    //EasyExcel批量导入
+    /**
+     * 导入数据
+     */
     @Override
-    @Transactional(isolation = Isolation.READ_COMMITTED)
-    public String importResearch(List<Research> researchList, Boolean updateSupport) {
-        if (StringUtils.isNull(researchList) || researchList.size() == 0) {
-            throw new ServiceException("导入用户数据不能为空!");
-        }
-
-        List<Research> batchDataList = new ArrayList<>();
-        int successNum = 0;
-        int failureNum = 0;
-        StringBuilder successMsg = new StringBuilder();
-        StringBuilder failureMsg = new StringBuilder();
-
-        // 遍历用户数据列表,逐条处理数据
-        for (Research research : researchList) {
-            try {
-                // 对每一条数据进行处理
-                // 根据title字段判断数据合法性
-                if (StringUtils.isEmpty(research.getTitle())) {
-                    throw new ServiceException("模板标题不能为空!");
-                }
-
-                // 如果更新支持,检查数据库中是否存在相同的记录,如果存在,则进行更新操作
-                // 判断数据库中是否存在相同标题的记录
-                Research existingResearch = null;
-                if(updateSupport){
-                    String titleAsString = research.getTitle();
-                    existingResearch= dataExcelMapper.selectResearchByTitle(titleAsString);
-                }
-                if (existingResearch != null) {
-                    research.setUpdateBy(SecurityUtils.getLoginUser().getUsername());
-                    research.setUpdateTime(DateUtils.getNowDate());
-                    // 更新操作
-                    dataExcelMapper.updateResearchByImport(research);
-                    successNum++;
-                    successMsg.append("成功更新数据:").append(research.getTitle()).append("\n");
-                } else {
-                    // 检查是否已经存在于 batchDataList 中,避免重复插入
-                    if (!batchDataList.contains(research)) {
-//                        research.setCreateBy(SecurityUtils.getLoginUser().getUsername());
-                        research.setCreateTime(DateUtils.getNowDate());
-                        batchDataList.add(research);
-                    }
-                    // 判断是否达到BATCH_COUNT,或者已经是最后一个数据
-                    if (batchDataList.size() >= BATCH_COUNT || researchList.indexOf(research) == researchList.size() - 1) {
-                        System.out.println( "batchDataList size: " + batchDataList);
-                        // 执行批量插入操作
-                        dataExcelMapper.insertResearchDataList(batchDataList);
-                        successNum += batchDataList.size();
-                        for (Research insertedResearch : batchDataList) {
-                            successMsg.append("成功导入数据:").append(insertedResearch.getTitle()).append("\n");
-                        }
-                        batchDataList.clear();
-                    }
-                }
-            } catch (Exception e) {
-                // 输出异常信息和上下文信息到日志
-                logger.error("导入数据时发生异常:", e);
-                logger.error("异常发生时的数据:{}", research); // 这里的 study 是导致异常的数据对象
-                // 处理导入失败的情况
-                failureNum++;
-                failureMsg.append("导入失败,模板标题为:").append(research.getTitle()).append("\n");
+    public String importData(List<Research> dataList, boolean updateSupport) {
+        BulkImportService<Research> importService = new BulkImportService<>() {
+            @Override
+            protected Long checkExistingItem(Research item) {
+                Research research = researchMapper.selectResearchByTitle(item.getTitle());
+                return research == null ? 0L : research.getId();
+            }
+
+            @Override
+            protected boolean updateItem(Research item, Long id) {
+                item.setId(id);
+                item.setUpdateBy(SecurityUtils.getLoginUser().getUsername());
+                item.setUpdateTime(DateUtils.getNowDate());
+                return researchMapper.updateResearch(item) > 0;
+            }
+
+            @Override
+            protected boolean executeBatch(List<Research> batchDataList) {
+                return researchMapper.insertResearchDataList(batchDataList) > 0;
             }
-        }
-        // 判断是否有导入失败的数据
-        if (failureNum > 0) {
-            failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确或插入数据库出错,错误如下:\n");
-            throw new ServiceException(failureMsg.toString());
-        } else {
-            // 若全部数据导入成功,则返回成功导入的信息
-            successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:\n");
-        }
-        return successMsg.toString();
+
+            @Override
+            protected String getItemTitle(Research item) {
+                return item.getTitle();
+            }
+        };
+
+        return importService.importData(dataList, updateSupport);
     }
 }

+ 133 - 0
src/main/java/com/ruoyi/project/VRdemo/service/impl/SpecialCollectionServiceImpl.java

@@ -0,0 +1,133 @@
+package com.ruoyi.project.VRdemo.service.impl;
+
+import java.util.List;
+
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.project.VRdemo.domain.SpecialCollection;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.VRdemo.mapper.SpecialCollectionMapper;
+import com.ruoyi.project.VRdemo.service.ISpecialCollectionService;
+
+/**
+ * 东南亚大型特藏Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2024-10-06
+ */
+@Service
+public class SpecialCollectionServiceImpl implements ISpecialCollectionService {
+
+    private final SpecialCollectionMapper specialCollectionMapper;
+
+    public SpecialCollectionServiceImpl(@Autowired SpecialCollectionMapper specialCollectionMapper) {
+        this.specialCollectionMapper = specialCollectionMapper;
+    }
+
+    /**
+     * 查询东南亚大型特藏
+     *
+     * @param id 东南亚大型特藏主键
+     * @return 东南亚大型特藏
+     */
+    @Override
+    public SpecialCollection selectCollectionById(Long id) {
+        return specialCollectionMapper.selectCollectionById(id);
+    }
+
+    /**
+     * 查询东南亚大型特藏列表
+     *
+     * @param specialCollection 东南亚大型特藏
+     * @return 东南亚大型特藏
+     */
+    @Override
+    public List<SpecialCollection> selectCollectionList(SpecialCollection specialCollection) {
+        return specialCollectionMapper.selectCollectionList(specialCollection);
+    }
+
+    /**
+     * 新增东南亚大型特藏
+     *
+     * @param specialCollection 东南亚大型特藏
+     * @return 结果
+     */
+    @Override
+    public int insertCollection(SpecialCollection specialCollection) {
+        specialCollection.setCreateTime(DateUtils.getNowDate());
+        return specialCollectionMapper.insertCollection(specialCollection);
+    }
+
+    /**
+     * 修改东南亚大型特藏
+     *
+     * @param specialCollection 东南亚大型特藏
+     * @return 结果
+     */
+    @Override
+    public int updateCollection(SpecialCollection specialCollection) {
+        specialCollection.setUpdateTime(DateUtils.getNowDate());
+        return specialCollectionMapper.updateCollection(specialCollection);
+    }
+
+    /**
+     * 批量删除东南亚大型特藏
+     *
+     * @param ids 需要删除的东南亚大型特藏主键
+     * @return 结果
+     */
+    @Override
+    public int deleteCollectionByIds(Long[] ids) {
+        return specialCollectionMapper.deleteCollectionByIds(ids);
+    }
+
+    /**
+     * 删除东南亚大型特藏信息
+     *
+     * @param id 东南亚大型特藏主键
+     * @return 结果
+     */
+    @Override
+    public int deleteCollectionById(Long id) {
+        return specialCollectionMapper.deleteCollectionById(id);
+    }
+
+    /**
+     * 导入数据
+     *
+     * @param dataList      导入数据列表
+     * @param updateSupport 是否更新已经存在的数据
+     * @return 结果
+     */
+    @Override
+    public String importData(List<SpecialCollection> dataList, boolean updateSupport) {
+        BulkImportService<SpecialCollection> importService = new BulkImportService<>() {
+            @Override
+            protected Long checkExistingItem(SpecialCollection item) {
+                SpecialCollection specialCollection = specialCollectionMapper.selectCollectionByTitle(item.getTitle());
+                return specialCollection == null ? 0L : specialCollection.getId();
+            }
+
+            @Override
+            protected boolean updateItem(SpecialCollection item, Long id) {
+                item.setId(id);
+                item.setUpdateBy(SecurityUtils.getLoginUser().getUsername());
+                item.setUpdateTime(DateUtils.getNowDate());
+                return specialCollectionMapper.updateCollection(item) > 0;
+            }
+
+            @Override
+            protected boolean executeBatch(List<SpecialCollection> batchDataList) {
+                return specialCollectionMapper.insertCollectionDataList(batchDataList) > 0;
+            }
+
+            @Override
+            protected String getItemTitle(SpecialCollection item) {
+                return item.getTitle();
+            }
+        };
+
+        return importService.importData(dataList, updateSupport);
+    }
+}

+ 2 - 3
src/main/java/com/ruoyi/project/VRdemo/service/impl/StudyDataServiceImpl.java

@@ -9,10 +9,9 @@ import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.file.FileUtils;
 import com.ruoyi.framework.config.RuoYiConfig;
-import com.ruoyi.project.VRdemo.domain.NoteNationData;
-import com.ruoyi.project.VRdemo.domain.NoticeImData;
+import com.ruoyi.project.VRdemo.domain.imData.NoticeImData;
 import com.ruoyi.project.VRdemo.domain.StudyData;
-import com.ruoyi.project.VRdemo.domain.StudyImData;
+import com.ruoyi.project.VRdemo.domain.imData.StudyImData;
 import com.ruoyi.project.VRdemo.domain.vo.Catalog;
 import com.ruoyi.project.VRdemo.domain.vo.StudyDataVo;
 import com.ruoyi.project.VRdemo.mapper.DataExcelMapper;

+ 37 - 89
src/main/java/com/ruoyi/project/VRdemo/service/impl/ThesisServiceImpl.java

@@ -1,24 +1,15 @@
 package com.ruoyi.project.VRdemo.service.impl;
 
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
+
 import java.util.List;
 
-import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.project.VRdemo.mapper.DataExcelMapper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import com.ruoyi.project.VRdemo.domain.Thesis;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.project.VRdemo.mapper.ThesisMapper;
-import com.ruoyi.project.VRdemo.domain.Thesis;
 import com.ruoyi.project.VRdemo.service.IThesisService;
-import org.springframework.transaction.annotation.Isolation;
-import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 论文Service业务层处理
@@ -28,14 +19,13 @@ import org.springframework.transaction.annotation.Transactional;
  */
 @Service
 public class ThesisServiceImpl implements IThesisService {
-    @Autowired
-    private ThesisMapper thesisMapper;
 
-    @Autowired
-    private DataExcelMapper dataExcelMapper;
-    private static final Logger logger = LoggerFactory.getLogger(Thesis.class);
+    private final ThesisMapper thesisMapper;
+
+    public ThesisServiceImpl(@Autowired ThesisMapper thesisMapper) {
+        this.thesisMapper = thesisMapper;
+    }
 
-    private static final int BATCH_COUNT = 10000;
 
     /**
      * 查询论文
@@ -103,79 +93,37 @@ public class ThesisServiceImpl implements IThesisService {
         return thesisMapper.deleteThesisById(id);
     }
 
-    //EasyExcel批量导入
+    /**
+     * 导入数据
+     */
     @Override
-    @Transactional(isolation = Isolation.READ_COMMITTED)
-    public String importThesis(List<Thesis> thesisList, Boolean updateSupport) {
-        if (StringUtils.isNull(thesisList) || thesisList.size() == 0) {
-            throw new ServiceException("导入用户数据不能为空!");
-        }
-
-        List<Thesis> batchDataList = new ArrayList<>();
-        int successNum = 0;
-        int failureNum = 0;
-        StringBuilder successMsg = new StringBuilder();
-        StringBuilder failureMsg = new StringBuilder();
-
-        // 遍历用户数据列表,逐条处理数据
-        for (Thesis thesis : thesisList) {
-            try {
-                // 对每一条数据进行处理
-                // 根据title字段判断数据合法性
-                if (StringUtils.isEmpty(thesis.getTitle())) {
-                    throw new ServiceException("模板标题不能为空!");
-                }
-
-                // 如果更新支持,检查数据库中是否存在相同的记录,如果存在,则进行更新操作
-                // 判断数据库中是否存在相同标题的记录
-                Thesis existingThesis = null;
-                if (updateSupport) {
-                    String titleAsString = thesis.getTitle();
-                    existingThesis = dataExcelMapper.selectThesisByTitle(titleAsString);
-                }
-                if (existingThesis != null) {
-                    thesis.setUpdateBy(SecurityUtils.getLoginUser().getUsername());
-                    thesis.setUpdateTime(DateUtils.getNowDate());
-                    // 更新操作
-                    dataExcelMapper.updateThesisByImport(thesis);
-                    successNum++;
-                    successMsg.append("成功更新数据:").append(thesis.getTitle()).append("\n");
-                } else {
-                    // 检查是否已经存在于 batchDataList 中,避免重复插入
-                    if (!batchDataList.contains(thesis)) {
-//                        thesis.setCreateBy(SecurityUtils.getLoginUser().getUsername());
-                        thesis.setCreateTime(DateUtils.getNowDate());
-                        batchDataList.add(thesis);
-                    }
-                    // 判断是否达到BATCH_COUNT,或者已经是最后一个数据
-                    if (batchDataList.size() >= BATCH_COUNT || thesisList.indexOf(thesis) == thesisList.size() - 1) {
-                        System.out.println("batchDataList size: " + batchDataList);
-                        // 执行批量插入操作
-                        dataExcelMapper.insertThesisDataList(batchDataList);
-                        successNum += batchDataList.size();
-                        for (Thesis insertedThesis : batchDataList) {
-                            successMsg.append("成功导入数据:").append(insertedThesis.getTitle()).append("\n");
-                        }
-                        batchDataList.clear();
-                    }
-                }
-            } catch (Exception e) {
-                // 输出异常信息和上下文信息到日志
-                logger.error("导入数据时发生异常:", e);
-                logger.error("异常发生时的数据:{}", thesis); // 这里的 study 是导致异常的数据对象
-                // 处理导入失败的情况
-                failureNum++;
-                failureMsg.append("导入失败,模板标题为:").append(thesis.getTitle()).append("\n");
+    public String importData(List<Thesis> dataList, boolean updateSupport) {
+        BulkImportService<Thesis> importService = new BulkImportService<>() {
+            @Override
+            protected Long checkExistingItem(Thesis item) {
+                Thesis thesis = thesisMapper.selectThesisByTitle(item.getTitle());
+                return thesis == null ? 0L : thesis.getId();
             }
-        }
-        // 判断是否有导入失败的数据
-        if (failureNum > 0) {
-            failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确或插入数据库出错,错误如下:\n");
-            throw new ServiceException(failureMsg.toString());
-        } else {
-            // 若全部数据导入成功,则返回成功导入的信息
-            successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:\n");
-        }
-        return successMsg.toString();
+
+            @Override
+            protected boolean updateItem(Thesis item, Long id) {
+                item.setId(id);
+                item.setUpdateBy(SecurityUtils.getLoginUser().getUsername());
+                item.setUpdateTime(DateUtils.getNowDate());
+                return thesisMapper.updateThesis(item) > 0;
+            }
+
+            @Override
+            protected boolean executeBatch(List<Thesis> batchDataList) {
+                return thesisMapper.insertThesisDataList(batchDataList) > 0;
+            }
+
+            @Override
+            protected String getItemTitle(Thesis item) {
+                return item.getTitle();
+            }
+        };
+
+        return importService.importData(dataList, updateSupport);
     }
 }

+ 8 - 6
src/main/resources/application-druid.yml

@@ -1,29 +1,31 @@
 # 项目相关配置-测试环境
 ruoyi:
   # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
-  profile: D:/ruoyi/uploadPat
+  profile: /home/project/xmg/uploadPath
+#  profile: C:/CodeProject/Xmg/uploadPath
 
 # 开发环境配置
 server:
   # 服务器的HTTP端口,默认为8080
-  port: 8080
+  port: 8110
 
 spring:
   # redis 配置
   redis:
     # 地址
-    host: 39.101.199.16
+    host: 175.178.124.133
     # 密码
-    password: lizhixian
+    password: seeseele
 
   # 数据源配置
   datasource:
     druid:
       # 主库数据源
       master:
-        url: jdbc:mysql://39.101.199.16:3306/vr-one?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+        # rewriteBatchedStatements=true : 将数据批量传输给mysql
+        url: jdbc:mysql://175.178.124.133:3306/xmg?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
         username: root
-        password: lizhixian
+        password: seeseele
 
 # 七牛云配置
 qiniu:

+ 100 - 0
src/main/resources/mybatis/VRdemo/ArchivesUnboundMapper.xml

@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.project.VRdemo.mapper.ArchivesUnboundMapper">
+    
+    <resultMap type="ArchivesUnbound" id="ArchivesUnboundResult">
+        <result property="id"    column="id"    />
+        <result property="englishName"    column="english_name"    />
+        <result property="chineseName"    column="chinese_name"    />
+        <result property="introduce"    column="introduce"    />
+        <result property="link"    column="link"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="updateBy"    column="update_by"    />
+    </resultMap>
+
+    <sql id="selectArchivesUnboundVo">
+        select id, english_name, chinese_name, introduce, link, create_time, create_by, update_time, update_by from vr_archives_unbound
+    </sql>
+
+    <select id="selectArchivesUnboundList" parameterType="ArchivesUnbound" resultMap="ArchivesUnboundResult">
+        <include refid="selectArchivesUnboundVo"/>
+        <where>  
+            <if test="englishName != null  and englishName != ''"> and english_name like concat('%', #{englishName}, '%')</if>
+            <if test="chineseName != null  and chineseName != ''"> and chinese_name like concat('%', #{chineseName}, '%')</if>
+            <if test="introduce != null  and introduce != ''"> and introduce = #{introduce}</if>
+            <if test="link != null  and link != ''"> and link = #{link}</if>
+        </where>
+    </select>
+    
+    <select id="selectArchivesUnboundById" parameterType="Long" resultMap="ArchivesUnboundResult">
+        <include refid="selectArchivesUnboundVo"/>
+        where id = #{id}
+    </select>
+
+    <select id="selectArchivesUnboundByTitle" parameterType="Long" resultMap="ArchivesUnboundResult">
+        <include refid="selectArchivesUnboundVo"/>
+        where title = #{title}
+    </select>
+        
+    <insert id="insertArchivesUnbound" parameterType="ArchivesUnbound" useGeneratedKeys="true" keyProperty="id">
+        insert into vr_archives_unbound
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="englishName != null">english_name,</if>
+            <if test="chineseName != null">chinese_name,</if>
+            <if test="introduce != null">introduce,</if>
+            <if test="link != null">link,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="updateBy != null">update_by,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="englishName != null">#{englishName},</if>
+            <if test="chineseName != null">#{chineseName},</if>
+            <if test="introduce != null">#{introduce},</if>
+            <if test="link != null">#{link},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+         </trim>
+    </insert>
+
+    <insert id="insertArchivesUnboundDataList" parameterType="java.util.List">
+        insert into vr_archives_unbound(english_name, chinese_name, introduce, link, create_time, create_by)
+        values
+        <foreach collection="list" item="item" separator=",">
+          (#{item.englishName}, #{item.chineseName}, #{item.introduce}, #{item.link}, #{item.createTime}, #{item.createBy})
+        </foreach>
+    </insert>
+
+    <update id="updateArchivesUnbound" parameterType="ArchivesUnbound">
+        update vr_archives_unbound
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="englishName != null">english_name = #{englishName},</if>
+            <if test="chineseName != null">chinese_name = #{chineseName},</if>
+            <if test="introduce != null">introduce = #{introduce},</if>
+            <if test="link != null">link = #{link},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteArchivesUnboundById" parameterType="Long">
+        delete from vr_archives_unbound where id = #{id}
+    </delete>
+
+    <delete id="deleteArchivesUnboundByIds" parameterType="String">
+        delete from vr_archives_unbound where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 111 - 0
src/main/resources/mybatis/VRdemo/ConsultationMapper.xml

@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.project.VRdemo.mapper.ConsultationMapper">
+    
+    <resultMap type="Consultation" id="ConsultationResult">
+        <result property="id"    column="id"    />
+        <result property="affiliation" column="affiliation"/>
+        <result property="location" column="location"/>
+        <result property="chineseName"    column="chinese_name"    />
+        <result property="englishName"    column="english_name"    />
+        <result property="link"    column="link"    />
+        <result property="introduce"    column="introduce"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="updateBy"    column="update_by"    />
+    </resultMap>
+
+    <sql id="selectConsultationVo">
+        select id, affiliation, location, chinese_name, english_name, link, introduce, create_time, create_by, update_time, update_by from vr_consultation
+    </sql>
+
+    <select id="selectConsultationList" parameterType="Consultation" resultMap="ConsultationResult">
+        <include refid="selectConsultationVo"/>
+        <where>
+            <if test="affiliation != null  and affiliation != ''">and affiliation = #{affiliation}</if>
+            <if test="location != null  and location != ''">and location = #{location}</if>
+            <if test="chineseName != null  and chineseName != ''"> and chinese_name like concat('%', #{chineseName}, '%')</if>
+            <if test="englishName != null  and englishName != ''"> and english_name like concat('%', #{englishName}, '%')</if>
+            <if test="link != null  and link != ''"> and link = #{link}</if>
+            <if test="introduce != null  and introduce != ''"> and introduce = #{introduce}</if>
+        </where>
+    </select>
+    
+    <select id="selectConsultationById" parameterType="Long" resultMap="ConsultationResult">
+        <include refid="selectConsultationVo"/>
+        where id = #{id}
+    </select>
+
+    <select id="selectConsultationByTitle" resultType="com.ruoyi.project.VRdemo.domain.Consultation">
+        <include refid="selectConsultationVo"/>
+        WHERE chinese_name = #{chineseName} and english_name = #{englishName}
+    </select>
+        
+    <insert id="insertConsultation" parameterType="Consultation" useGeneratedKeys="true" keyProperty="id">
+        insert into vr_consultation
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="affiliation != null">affiliation,</if>
+            <if test="location != null">location,</if>
+            <if test="chineseName != null">chinese_name,</if>
+            <if test="englishName != null">english_name,</if>
+            <if test="link != null">link,</if>
+            <if test="introduce != null">introduce,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="updateBy != null">update_by,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="affiliation != null">#{affiliation},</if>
+            <if test="location != null">#{location},</if>
+            <if test="chineseName != null">#{chineseName},</if>
+            <if test="englishName != null">#{englishName},</if>
+            <if test="link != null">#{link},</if>
+            <if test="introduce != null">#{introduce},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+         </trim>
+    </insert>
+
+    <insert id="insertConsultationDataList" parameterType="java.util.List">
+        INSERT INTO vr_consultation (affiliation, location, chinese_name, english_name, link, introduce, create_by,create_time)
+        VALUES
+        <foreach collection="list" item="item" separator=",">
+            (#{item.affiliation}, #{item.location}, #{item.chineseName}, #{item.englishName}, #{item.link}, #{item.introduce},
+            #{item.createBy}, #{item.createTime})
+        </foreach>
+    </insert>
+
+    <update id="updateConsultation" parameterType="Consultation">
+        update vr_consultation
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="affiliation != null">affiliation = #{affiliation},</if>
+            <if test="location != null">location = #{location},</if>
+            <if test="chineseName != null">chinese_name = #{chineseName},</if>
+            <if test="englishName != null">english_name = #{englishName},</if>
+            <if test="link != null">link = #{link},</if>
+            <if test="introduce != null">introduce = #{introduce},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteConsultationById" parameterType="Long">
+        delete from vr_consultation where id = #{id}
+    </delete>
+
+    <delete id="deleteConsultationByIds" parameterType="String">
+        delete from vr_consultation where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 86 - 155
src/main/resources/mybatis/VRdemo/DataExcelMapper.xml

@@ -4,71 +4,66 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.project.VRdemo.mapper.DataExcelMapper">
     <resultMap type="ExportApp" id="ExportResult">
-        <result property="appId"    column="app_id"    />
-        <result property="title"    column="title"    />
-        <result property="price"    column="price"    />
-        <result property="path"    column="path"    />
-        <result property="spots"    column="spots"    />
-        <result property="status"    column="status"    />
-        <result property="create_by"    column="create_by"    />
-        <result property="create_time"    column="create_time"    />
-        <result property="update_by"    column="update_by"    />
-        <result property="update_time"    column="update_time"    />
+        <result property="appId" column="app_id"/>
+        <result property="title" column="title"/>
+        <result property="price" column="price"/>
+        <result property="path" column="path"/>
+        <result property="spots" column="spots"/>
+        <result property="status" column="status"/>
+        <result property="create_by" column="create_by"/>
+        <result property="create_time" column="create_time"/>
+        <result property="update_by" column="update_by"/>
+        <result property="update_time" column="update_time"/>
     </resultMap>
 
     <resultMap type="NoticeExData" id="ExportNoticeResult">
-        <result property="id"    column="id"    />
-        <result property="companyId"    column="company_id"    />
-        <result property="title"    column="title"    />
-        <result property="speaker"    column="speaker"    />
-        <result property="sponsor"    column="sponsor"    />
-        <result property="host"    column="host"    />
-        <result property="panelist"    column="panelist"    />
-        <result property="holdingType"    column="holding_type"    />
-        <result property="holdingTime"    column="holding_time"    />
-        <result property="comment"    column="comment"    />
+        <result property="id" column="id"/>
+        <result property="companyId" column="company_id"/>
+        <result property="title" column="title"/>
+        <result property="speaker" column="speaker"/>
+        <result property="sponsor" column="sponsor"/>
+        <result property="host" column="host"/>
+        <result property="panelist" column="panelist"/>
+        <result property="holdingType" column="holding_type"/>
+        <result property="holdingTime" column="holding_time"/>
+        <result property="comment" column="comment"/>
     </resultMap>
 
     <resultMap type="StudyExData" id="StudyDataResult">
-        <result property="id"    column="id"    />
-        <result property="companyId"    column="company_id"    />
-        <result property="dataType"    column="data_type"    />
-        <result property="title"    column="title"    />
-        <result property="longTitle"    column="long_title"    />
-        <result property="year"    column="year"    />
-        <result property="month"    column="month"    />
-        <result property="author"    column="author"    />
-        <result property="path"    column="path"    />
-        <result property="url"    column="url"    />
-        <result property="create_time"    column="create_time"    />
-        <result property="update_time"    column="update_time"    />
-    </resultMap>
-
-    <resultMap type="Press" id="PressResult">
-        <result property="pressId"    column="press_id"    />
-        <result property="title"    column="title"    />
-        <result property="author"    column="author"    />
-        <result property="pressTitle"    column="press_title"    />
-        <result property="issue"    column="issue"    />
-        <result property="pages"    column="pages"    />
-        <result property="keyword"    column="keyword"    />
-        <result property="classify"    column="classify"    />
-        <result property="area"    column="area"    />
-        <result property="createBy"    column="create_by"    />
-        <result property="createTime"    column="create_time"    />
-        <result property="updateBy"    column="update_by"    />
-        <result property="updateTime"    column="update_time"    />
+        <result property="id" column="id"/>
+        <result property="companyId" column="company_id"/>
+        <result property="dataType" column="data_type"/>
+        <result property="title" column="title"/>
+        <result property="longTitle" column="long_title"/>
+        <result property="year" column="year"/>
+        <result property="month" column="month"/>
+        <result property="author" column="author"/>
+        <result property="path" column="path"/>
+        <result property="url" column="url"/>
+        <result property="create_time" column="create_time"/>
+        <result property="update_time" column="update_time"/>
     </resultMap>
 
     <select id="getAppData" resultMap="ExportResult">
-        select app_id, title, price, path, spots, status, create_by, create_time, update_by, update_time from vr_app
+        select app_id,
+               title,
+               price,
+               path,
+               spots,
+               status,
+               create_by,
+               create_time,
+               update_by,
+               update_time
+        from vr_app
     </select>
 
     <insert id="insertAppDataList" parameterType="java.util.List">
         INSERT INTO vr_app(title, price, path, spots, status, create_by, create_time, update_by, update_time)
         VALUES
         <foreach collection="list" item="item" separator=",">
-            (#{item.title}, #{item.price}, #{item.path}, #{item.spots}, #{item.status}, #{item.create_by}, #{item.create_time}, #{item.update_by}, #{item.update_time})
+            (#{item.title}, #{item.price}, #{item.path}, #{item.spots}, #{item.status}, #{item.create_by},
+            #{item.create_time}, #{item.update_by}, #{item.update_time})
         </foreach>
     </insert>
 
@@ -81,7 +76,8 @@
     <!-- 新增应用 -->
     <insert id="insertImApp" parameterType="com.ruoyi.project.VRdemo.domain.ImportApp">
         INSERT INTO vr_app(title, price, path, spots, status, create_by, create_time, update_by, update_time)
-        VALUES (#{title}, #{price}, #{path}, #{spots}, #{status}, #{create_by}, #{create_time}, #{update_by}, #{update_time})
+        VALUES (#{title}, #{price}, #{path}, #{spots}, #{status}, #{create_by}, #{create_time}, #{update_by},
+                #{update_time})
     </insert>
 
     <!-- 修改应用 -->
@@ -100,25 +96,37 @@
     </update>
 
     <select id="getNoticeData" resultMap="ExportNoticeResult">
-        select id, company_id, title, speaker, sponsor, host, panelist, holding_type,holding_time, comment from vr_notice_data
+        select id,
+               company_id,
+               title,
+               speaker,
+               sponsor,
+               host,
+               panelist,
+               holding_type,
+               holding_time,
+               comment
+        from vr_notice_data
     </select>
 
     <insert id="insertNoticeDataList" parameterType="java.util.List">
-        INSERT INTO vr_notice_data(company_id, title, speaker, sponsor, host, panelist, holding_type,holding_time, comment)
+        INSERT INTO vr_notice_data(company_id, title, speaker, sponsor, host, panelist, holding_type,holding_time,
+        comment)
         VALUES
         <foreach collection="list" item="item" separator=",">
-            (#{item.company_id}, #{item.title}, #{item.speaker}, #{item.sponsor},  #{item.host}, #{item.panelist}, #{item.holding_type}, #{item.holding_time}, #{item.comment})
+            (#{item.company_id}, #{item.title}, #{item.speaker}, #{item.sponsor}, #{item.host}, #{item.panelist},
+            #{item.holding_type}, #{item.holding_time}, #{item.comment})
         </foreach>
     </insert>
 
-    <select id="selectNoticeByTitle" resultType="com.ruoyi.project.VRdemo.domain.NoticeImData">
+    <select id="selectNoticeByTitle" resultType="com.ruoyi.project.VRdemo.domain.imData.NoticeImData">
         SELECT *
         FROM vr_notice_data
         WHERE title = #{title}
     </select>
 
     <!-- 修改应用 -->
-    <update id="updateImNotice" parameterType="com.ruoyi.project.VRdemo.domain.NoticeImData">
+    <update id="updateImNotice" parameterType="com.ruoyi.project.VRdemo.domain.imData.NoticeImData">
         update vr_notice_data
         <trim prefix="SET" suffixOverrides=",">
             <if test="company_id != null and company_id != ''">company_id = #{company_id},</if>
@@ -135,125 +143,48 @@
     </update>
 
     <select id="getStudyData" resultMap="StudyDataResult">
-        select id, company_id, data_type, title, long_title, year, month, author, path, url, create_time, update_time from vr_study_data
+        select id,
+               company_id,
+               data_type,
+               title,
+               long_title,
+               year,
+               month,
+               author,
+               path,
+               url,
+               create_time,
+               update_time
+        from vr_study_data
     </select>
 
-    <select id="selectStudyByTitle" resultType="com.ruoyi.project.VRdemo.domain.StudyImData">
+    <select id="selectStudyByTitle" resultType="com.ruoyi.project.VRdemo.domain.imData.StudyImData">
         SELECT *
         FROM vr_study_data
         WHERE title = #{title}
     </select>
 
-    <select id="selectPressByTitle" resultType="com.ruoyi.project.VRdemo.domain.Press">
-        SELECT *
-        FROM vr_press
-        WHERE title = #{titleAsLong}
-    </select>
-
-    <select id="selectThesisByTitle" resultType="com.ruoyi.project.VRdemo.domain.Thesis">
-        SELECT *
-        FROM vr_thesis
-        WHERE title = #{titleAsLong}
-    </select>
-
-    <select id="selectResearchByTitle" resultType="com.ruoyi.project.VRdemo.domain.Research">
-        SELECT *
-        FROM vr_research
-        WHERE title = #{titleAsLong}
-    </select>
-
     <!-- 批量插入活动预告数据列表 -->
     <insert id="insertStudyDataList" parameterType="java.util.List">
         INSERT INTO vr_study_data (title, long_title, year, month, author, create_time, update_time)
         VALUES
         <foreach collection="list" item="item" separator=",">
-            (#{item.title}, #{item.longTitle}, #{item.year}, #{item.month}, #{item.author}, #{item.create_time}, #{item.update_time})
+            (#{item.title}, #{item.longTitle}, #{item.year}, #{item.month}, #{item.author}, #{item.create_time},
+            #{item.update_time})
         </foreach>
     </insert>
 
     <!-- 更新研究数据 -->
-    <update id="updateImStudy" parameterType="com.ruoyi.project.VRdemo.domain.StudyImData">
+    <update id="updateImStudy" parameterType="com.ruoyi.project.VRdemo.domain.imData.StudyImData">
         UPDATE vr_study_data
-        SET
-            title = #{title},
-            long_title = #{longTitle},
-            year = #{year},
-            month = #{month},
-            author = #{author},
+        SET title       = #{title},
+            long_title  = #{longTitle},
+            year        = #{year},
+            month       = #{month},
+            author      = #{author},
             create_time = #{create_time},
             update_time = #{update_time}
         WHERE title = #{title}
     </update>
 
-    <update id="updatePressByImport" parameterType="com.ruoyi.project.VRdemo.domain.Press">
-        update vr_press
-        <trim prefix="SET" suffixOverrides=",">
-            <if test="title != null">title = #{title},</if>
-            <if test="author != null">author = #{author},</if>
-            <if test="pressTitle != null">press_title = #{pressTitle},</if>
-            <if test="issue != null">issue = #{issue},</if>
-            <if test="pages != null">pages = #{pages},</if>
-            <if test="keyword != null">keyword = #{keyword},</if>
-            <if test="classify != null">classify = #{classify},</if>
-            <if test="area != null">area = #{area},</if>
-            <if test="updateBy != null">update_by = #{updateBy},</if>
-            <if test="updateTime != null">update_time = #{updateTime},</if>
-        </trim>
-        where title = #{title}
-    </update>
-
-    <update id="updateThesisByImport" parameterType="com.ruoyi.project.VRdemo.domain.Thesis">
-        update vr_thesis
-        <trim prefix="SET" suffixOverrides=",">
-            <if test="title != null">name = #{name},</if>
-            <if test="author != null">teacher = #{teacher},</if>
-            <if test="pressTitle != null">major = #{major},</if>
-            <if test="issue != null">title = #{title},</if>
-            <if test="pages != null">keyword = #{keyword},</if>
-            <if test="keyword != null">reply_time = #{replyTime},</if>
-            <if test="classify != null">degree = #{degree},</if>
-            <if test="updateBy != null">update_by = #{updateBy},</if>
-            <if test="updateTime != null">update_time = #{updateTime},</if>
-        </trim>
-        where title = #{title}
-    </update>
-
-    <update id="updateResearchByImport" parameterType="com.ruoyi.project.VRdemo.domain.Research">
-        update vr_research
-        <trim prefix="SET" suffixOverrides=",">
-            <if test="title != null">title = #{title},</if>
-            <if test="author != null">author = #{author},</if>
-            <if test="pressTitle != null">institution = #{institution},</if>
-            <if test="issue != null">topic = #{topic},</if>
-            <if test="pages != null">publication_time = #{publicationTime},</if>
-            <if test="keyword != null">category = #{category},</if>
-            <if test="updateBy != null">update_by = #{updateBy},</if>
-            <if test="updateTime != null">update_time = #{updateTime},</if>
-        </trim>
-        where title = #{title}
-    </update>
-
-    <insert id="insertPressDataList" parameterType="java.util.List">
-        INSERT INTO vr_press (title, author, press_title, issue, date, pages, keyword, classify,area,create_by,create_time)
-        VALUES
-        <foreach collection="list" item="item" separator=",">
-            (#{item.title}, #{item.author}, #{item.pressTitle}, #{item.issue}, #{item.date}, #{item.pages}, #{item.keyword}, #{item.classify}, #{item.area}, #{item.createBy}, #{item.createTime})
-        </foreach>
-    </insert>
-
-    <insert id="insertThesisDataList" parameterType="java.util.List">
-        INSERT INTO vr_thesis (name, teacher, major, title, keyword, reply_time, degree, create_by,create_time)
-        VALUES
-        <foreach collection="list" item="item" separator=",">
-            (#{item.name}, #{item.teacher}, #{item.major}, #{item.title}, #{item.keyword}, #{item.replyTime}, #{item.degree}, #{item.createBy}, #{item.createTime})
-        </foreach>
-    </insert>
-
-    <insert id="insertResearchDataList" parameterType="java.util.List">
-        INSERT INTO vr_research (title, author, institution, topic, publication_time, category, create_by,create_time)
-        VALUES
-        <foreach collection="list" item="item" separator=",">
-            (#{item.title}, #{item.author}, #{item.institution}, #{item.topic}, #{item.publicationTime}, #{item.category}, #{item.createBy}, #{item.createTime})
-        </foreach>
-    </insert>
 </mapper>

+ 106 - 0
src/main/resources/mybatis/VRdemo/EconomyMapper.xml

@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.project.VRdemo.mapper.EconomyMapper">
+    
+    <resultMap type="Economy" id="EconomyResult">
+        <result property="id"    column="id"    />
+        <result property="affiliation"    column="affiliation"    />
+        <result property="location"    column="location"    />
+        <result property="title"    column="title"    />
+        <result property="link"    column="link"    />
+        <result property="introduce"    column="introduce"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+    </resultMap>
+
+    <sql id="selectEconomyVo">
+        select id, affiliation, location, title, link, introduce, create_by, create_time, update_by, update_time from vr_economy
+    </sql>
+
+    <select id="selectEconomyList" parameterType="Economy" resultMap="EconomyResult">
+        <include refid="selectEconomyVo"/>
+        <where>  
+            <if test="affiliation != null  and affiliation != ''"> and affiliation = #{affiliation}</if>
+            <if test="location != null  and location != ''"> and location = #{location}</if>
+            <if test="title != null  and title != ''"> and title = #{title}</if>
+            <if test="link != null  and link != ''"> and link = #{link}</if>
+            <if test="introduce != null  and introduce != ''"> and introduce = #{introduce}</if>
+        </where>
+    </select>
+    
+    <select id="selectEconomyById" parameterType="Long" resultMap="EconomyResult">
+        <include refid="selectEconomyVo"/>
+        where id = #{id}
+    </select>
+
+    <select id="selectEconomyByTitle" resultType="String" resultMap="EconomyResult">
+        <include refid="selectEconomyVo"/>
+        WHERE title = #{title}
+    </select>
+        
+    <insert id="insertEconomy" parameterType="Economy" useGeneratedKeys="true" keyProperty="id">
+        insert into vr_economy
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="affiliation != null">affiliation,</if>
+            <if test="location != null">location,</if>
+            <if test="title != null">title,</if>
+            <if test="link != null">link,</if>
+            <if test="introduce != null">introduce,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="affiliation != null">#{affiliation},</if>
+            <if test="location != null">#{location},</if>
+            <if test="title != null">#{title},</if>
+            <if test="link != null">#{link},</if>
+            <if test="introduce != null">#{introduce},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+         </trim>
+    </insert>
+
+    <insert id="insertEconomyDataList" parameterType="java.util.List">
+        INSERT INTO vr_economy (affiliation, location, title, link, introduce, create_by,create_time)
+        VALUES
+        <foreach collection="list" item="item" separator=",">
+            (#{item.affiliation}, #{item.location}, #{item.title}, #{item.link}, #{item.introduce},
+            #{item.createBy}, #{item.createTime})
+        </foreach>
+    </insert>
+
+    <update id="updateEconomy" parameterType="Economy">
+        update vr_economy
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="affiliation != null">affiliation = #{affiliation},</if>
+            <if test="location != null">location = #{location},</if>
+            <if test="title != null">title = #{title},</if>
+            <if test="link != null">link = #{link},</if>
+            <if test="introduce != null">introduce = #{introduce},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteEconomyById" parameterType="Long">
+        delete from vr_economy where id = #{id}
+    </delete>
+
+    <delete id="deleteEconomyByIds" parameterType="String">
+        delete from vr_economy where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 110 - 0
src/main/resources/mybatis/VRdemo/InstitutionMapper.xml

@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.project.VRdemo.mapper.InstitutionMapper">
+    
+    <resultMap type="Institution" id="InstitutionResult">
+        <result property="id"    column="id"    />
+        <result property="affiliation" column="affiliation"/>
+        <result property="location" column="location"/>
+        <result property="chineseName"    column="chinese_name"    />
+        <result property="englishName"    column="english_name"    />
+        <result property="link"    column="link"    />
+        <result property="introduce"    column="introduce"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="updateBy"    column="update_by"    />
+    </resultMap>
+
+    <sql id="selectInstitutionVo">
+        select id, affiliation, location, chinese_name, english_name, link, introduce, create_time, create_by, update_time, update_by from vr_institution
+    </sql>
+
+    <select id="selectInstitutionList" parameterType="Institution" resultMap="InstitutionResult">
+        <include refid="selectInstitutionVo"/>
+        <where>
+            <if test="affiliation != null  and affiliation != ''">and affiliation = #{affiliation}</if>
+            <if test="location != null  and location != ''">and location = #{location}</if>
+            <if test="chineseName != null  and chineseName != ''"> and chinese_name like concat('%', #{chineseName}, '%')</if>
+            <if test="englishName != null  and englishName != ''"> and english_name like concat('%', #{englishName}, '%')</if>
+            <if test="link != null  and link != ''"> and link = #{link}</if>
+            <if test="introduce != null  and introduce != ''"> and introduce = #{introduce}</if>
+        </where>
+    </select>
+    
+    <select id="selectInstitutionById" parameterType="Long" resultMap="InstitutionResult">
+        <include refid="selectInstitutionVo"/>
+        where id = #{id}
+    </select>
+
+    <select id="selectInstitutionByTitle" resultType="com.ruoyi.project.VRdemo.domain.Institution">
+        <include refid="selectInstitutionVo"/>
+        WHERE chinese_name = #{chineseName} and english_name = #{englishName}
+    </select>
+        
+    <insert id="insertInstitution" parameterType="Institution" useGeneratedKeys="true" keyProperty="id">
+        insert into vr_institution
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="affiliation != null">affiliation,</if>
+            <if test="location != null">location,</if>
+            <if test="chineseName != null">chinese_name,</if>
+            <if test="englishName != null">english_name,</if>
+            <if test="link != null">link,</if>
+            <if test="introduce != null">introduce,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="updateBy != null">update_by,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="affiliation != null">#{affiliation},</if>
+            <if test="location != null">#{location},</if>
+            <if test="chineseName != null">#{chineseName},</if>
+            <if test="englishName != null">#{englishName},</if>
+            <if test="link != null">#{link},</if>
+            <if test="introduce != null">#{introduce},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+         </trim>
+    </insert>
+
+    <insert id="insertInstitutionDataList" parameterType="java.util.List">
+        INSERT INTO vr_institution (affiliation, location, chinese_name, english_name, link, introduce, create_by,create_time)
+        VALUES
+        <foreach collection="list" item="item" separator=",">
+            (#{item.affiliation}, #{item.location}, #{item.chineseName}, #{item.englishName}, #{item.link}, #{item.introduce}, #{item.createBy}, #{item.createTime})
+        </foreach>
+    </insert>
+
+    <update id="updateInstitution" parameterType="Institution">
+        update vr_institution
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="affiliation != null">affiliation = #{affiliation},</if>
+            <if test="location != null">location = #{location},</if>
+            <if test="chineseName != null">chinese_name = #{chineseName},</if>
+            <if test="englishName != null">english_name = #{englishName},</if>
+            <if test="link != null">link = #{link},</if>
+            <if test="introduce != null">introduce = #{introduce},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteInstitutionById" parameterType="Long">
+        delete from vr_institution where id = #{id}
+    </delete>
+
+    <delete id="deleteInstitutionByIds" parameterType="String">
+        delete from vr_institution where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 95 - 0
src/main/resources/mybatis/VRdemo/LiteratureMapper.xml

@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.project.VRdemo.mapper.LiteratureMapper">
+    
+    <resultMap type="Literature" id="LiteratureResult">
+        <result property="id"    column="id"    />
+        <result property="title"    column="title"    />
+        <result property="url"    column="url"    />
+        <result property="publicationTime"    column="publication_time"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="updateBy"    column="update_by"    />
+    </resultMap>
+
+    <sql id="selectLiteratureVo">
+        select id, title, url, publication_time, create_time, create_by, update_time, update_by from vr_literature
+    </sql>
+
+    <select id="selectLiteratureList" parameterType="Literature" resultMap="LiteratureResult">
+        <include refid="selectLiteratureVo"/>
+        <where>  
+            <if test="title != null  and title != ''"> and title = #{title}</if>
+            <if test="url != null  and url != ''"> and url = #{url}</if>
+            <if test="publicationTime != null "> and publication_time = #{publicationTime}</if>
+        </where>
+    </select>
+    
+    <select id="selectLiteratureById" parameterType="Long" resultMap="LiteratureResult">
+        <include refid="selectLiteratureVo"/>
+        where id = #{id}
+    </select>
+
+    <select id="selectLiteratureByTitle" resultType="com.ruoyi.project.VRdemo.domain.Literature">
+        <include refid="selectLiteratureVo"/>
+        WHERE title = #{titleAsLong}
+    </select>
+        
+    <insert id="insertLiterature" parameterType="Literature" useGeneratedKeys="true" keyProperty="id">
+        insert into vr_literature
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="title != null">title,</if>
+            <if test="url != null">url,</if>
+            <if test="publicationTime != null">publication_time,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="updateBy != null">update_by,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="title != null">#{title},</if>
+            <if test="url != null">#{url},</if>
+            <if test="publicationTime != null">#{publicationTime},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+        </trim>
+    </insert>
+
+    <insert id="insertLiteratureDataList" parameterType="java.util.List">
+        INSERT INTO vr_literature (title, url, publication_time, create_by,create_time)
+        VALUES
+        <foreach collection="list" item="item" separator=",">
+            (#{item.title}, #{item.url}, #{item.publicationTime}, #{item.createBy}, #{item.createTime})
+        </foreach>
+    </insert>
+
+    <update id="updateLiterature" parameterType="Literature">
+        update vr_literature
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="title != null">title = #{title},</if>
+            <if test="url != null">url = #{url},</if>
+            <if test="publicationTime != null">publication_time = #{publicationTime},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteLiteratureById" parameterType="Long">
+        delete from vr_literature where id = #{id}
+    </delete>
+
+    <delete id="deleteLiteratureByIds" parameterType="String">
+        delete from vr_literature where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 62 - 32
src/main/resources/mybatis/VRdemo/PressMapper.xml

@@ -1,48 +1,66 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.project.VRdemo.mapper.PressMapper">
-    
+
     <resultMap type="Press" id="PressResult">
-        <result property="pressId"    column="press_id"    />
-        <result property="title"    column="title"    />
-        <result property="author"    column="author"    />
-        <result property="pressTitle"    column="press_title"    />
-        <result property="issue"    column="issue"    />
-        <result property="pages"    column="pages"    />
-        <result property="keyword"    column="keyword"    />
-        <result property="classify"    column="classify"    />
-        <result property="area"    column="area"    />
-        <result property="createBy"    column="create_by"    />
-        <result property="createTime"    column="create_time"    />
-        <result property="updateBy"    column="update_by"    />
-        <result property="updateTime"    column="update_time"    />
+        <result property="pressId" column="press_id"/>
+        <result property="title" column="title"/>
+        <result property="author" column="author"/>
+        <result property="pressTitle" column="press_title"/>
+        <result property="issue" column="issue"/>
+        <result property="pages" column="pages"/>
+        <result property="keyword" column="keyword"/>
+        <result property="classify" column="classify"/>
+        <result property="area" column="area"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
     </resultMap>
 
     <sql id="selectPressVo">
-        select press_id, title, author, press_title, issue, pages, keyword, classify, area, create_by, create_time, update_by, update_time from vr_press
+        select press_id,
+               title,
+               author,
+               press_title,
+               issue,
+               pages,
+               keyword,
+               classify,
+               area,
+               create_by,
+               create_time,
+               update_by,
+               update_time
+        from vr_press
     </sql>
 
     <select id="selectPressList" parameterType="Press" resultMap="PressResult">
         <include refid="selectPressVo"/>
-        <where>  
-            <if test="title != null  and title != ''"> and title = #{title}</if>
-            <if test="author != null  and author != ''"> and author = #{author}</if>
-            <if test="pressTitle != null  and pressTitle != ''"> and press_title = #{pressTitle}</if>
-            <if test="issue != null "> and issue = #{issue}</if>
-            <if test="pages != null  and pages != ''"> and pages = #{pages}</if>
-            <if test="keyword != null  and keyword != ''"> and keyword = #{keyword}</if>
-            <if test="classify != null  and classify != ''"> and classify = #{classify}</if>
-            <if test="area != null  and area != ''"> and area = #{area}</if>
+        <where>
+            <if test="title != null  and title != ''">and title = #{title}</if>
+            <if test="author != null  and author != ''">and author = #{author}</if>
+            <if test="pressTitle != null  and pressTitle != ''">and press_title = #{pressTitle}</if>
+            <if test="issue != null ">and issue = #{issue}</if>
+            <if test="pages != null  and pages != ''">and pages = #{pages}</if>
+            <if test="keyword != null  and keyword != ''">and keyword = #{keyword}</if>
+            <if test="classify != null  and classify != ''">and classify = #{classify}</if>
+            <if test="area != null  and area != ''">and area = #{area}</if>
         </where>
     </select>
-    
+
     <select id="selectPressByPressId" parameterType="Long" resultMap="PressResult">
         <include refid="selectPressVo"/>
         where press_id = #{pressId}
     </select>
-        
+
+    <select id="selectPressByTitle" resultType="com.ruoyi.project.VRdemo.domain.Press">
+        <include refid="selectPressVo"/>
+        WHERE title = #{title}
+    </select>
+
     <insert id="insertPress" parameterType="Press" useGeneratedKeys="true" keyProperty="pressId">
         insert into vr_press
         <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -58,7 +76,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createTime != null">create_time,</if>
             <if test="updateBy != null">update_by,</if>
             <if test="updateTime != null">update_time,</if>
-         </trim>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="title != null">#{title},</if>
             <if test="author != null">#{author},</if>
@@ -72,7 +90,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createTime != null">#{createTime},</if>
             <if test="updateBy != null">#{updateBy},</if>
             <if test="updateTime != null">#{updateTime},</if>
-         </trim>
+        </trim>
+    </insert>
+
+    <insert id="insertPressDataList" parameterType="java.util.List">
+        INSERT INTO vr_press (title, author, press_title, issue, date, pages, keyword,
+        classify,area,create_by,create_time)
+        VALUES
+        <foreach collection="list" item="item" separator=",">
+            (#{item.title}, #{item.author}, #{item.pressTitle}, #{item.issue}, #{item.date}, #{item.pages},
+            #{item.keyword}, #{item.classify}, #{item.area}, #{item.createBy}, #{item.createTime})
+        </foreach>
     </insert>
 
     <update id="updatePress" parameterType="Press">
@@ -95,11 +123,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </update>
 
     <delete id="deletePressByPressId" parameterType="Long">
-        delete from vr_press where press_id = #{pressId}
+        delete
+        from vr_press
+        where press_id = #{pressId}
     </delete>
 
     <delete id="deletePressByPressIds" parameterType="String">
-        delete from vr_press where press_id in 
+        delete from vr_press where press_id in
         <foreach item="pressId" collection="array" open="(" separator="," close=")">
             #{pressId}
         </foreach>

+ 119 - 0
src/main/resources/mybatis/VRdemo/PublicationMapper.xml

@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.project.VRdemo.mapper.PublicationMapper">
+
+    <resultMap type="Publication" id="PublicationResult">
+        <result property="id" column="id"/>
+        <result property="affiliation" column="affiliation"/>
+        <result property="location" column="location"/>
+        <result property="title" column="title"/>
+        <result property="link" column="link"/>
+        <result property="introduce" column="introduce"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+    </resultMap>
+
+    <sql id="selectPublicationVo">
+        select id,
+               affiliation,
+               location,
+               title,
+               link,
+               introduce,
+               create_by,
+               create_time,
+               update_by,
+               update_time
+        from vr_publication
+    </sql>
+
+    <select id="selectPublicationList" parameterType="Publication" resultMap="PublicationResult">
+        <include refid="selectPublicationVo"/>
+        <where>
+            <if test="affiliation != null  and affiliation != ''">and affiliation = #{affiliation}</if>
+            <if test="location != null  and location != ''">and location = #{location}</if>
+            <if test="title != null  and title != ''">and title = #{title}</if>
+            <if test="link != null  and link != ''">and link = #{link}</if>
+            <if test="introduce != null  and introduce != ''">and introduce = #{introduce}</if>
+        </where>
+    </select>
+
+    <select id="selectPublicationById" parameterType="Long" resultMap="PublicationResult">
+        <include refid="selectPublicationVo"/>
+        where id = #{id}
+    </select>
+
+    <select id="selectPublicationByTitle" parameterType="Long" resultMap="PublicationResult">
+        <include refid="selectPublicationVo"/>
+        where title = #{title}
+    </select>
+
+
+    <insert id="insertPublication" parameterType="Publication" useGeneratedKeys="true" keyProperty="id">
+        insert into vr_publication
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="affiliation != null">affiliation,</if>
+            <if test="location != null">location,</if>
+            <if test="title != null">title,</if>
+            <if test="link != null">link,</if>
+            <if test="introduce != null">introduce,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="affiliation != null">#{affiliation},</if>
+            <if test="location != null">#{location},</if>
+            <if test="title != null">#{title},</if>
+            <if test="link != null">#{link},</if>
+            <if test="introduce != null">#{introduce},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+        </trim>
+    </insert>
+
+    <insert id="insertPublicationDataList" parameterType="java.util.List">
+        INSERT INTO vr_publication (affiliation, location, title, link, introduce, create_by,create_time)
+        VALUES
+        <foreach collection="list" item="item" separator=",">
+            (#{item.affiliation}, #{item.location}, #{item.title}, #{item.link}, #{item.introduce},
+            #{item.createBy}, #{item.createTime})
+        </foreach>
+    </insert>
+
+    <update id="updatePublication" parameterType="Publication">
+        update vr_publication
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="affiliation != null">affiliation = #{affiliation},</if>
+            <if test="location != null">location = #{location},</if>
+            <if test="title != null">title = #{title},</if>
+            <if test="link != null">link = #{link},</if>
+            <if test="introduce != null">introduce = #{introduce},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deletePublicationById" parameterType="Long">
+        delete
+        from vr_publication
+        where id = #{id}
+    </delete>
+
+    <delete id="deletePublicationByIds" parameterType="String">
+        delete from vr_publication where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 43 - 24
src/main/resources/mybatis/VRdemo/ResearchMapper.xml

@@ -1,40 +1,48 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.project.VRdemo.mapper.ResearchMapper">
-    
+
     <resultMap type="Research" id="ResearchResult">
-        <result property="id"    column="id"    />
-        <result property="title"    column="title"    />
-        <result property="author"    column="author"    />
-        <result property="institution"    column="institution"    />
-        <result property="topic"    column="topic"    />
-        <result property="publicationTime"    column="publication_time"    />
-        <result property="category"    column="category"    />
+        <result property="id" column="id"/>
+        <result property="title" column="title"/>
+        <result property="author" column="author"/>
+        <result property="institution" column="institution"/>
+        <result property="topic" column="topic"/>
+        <result property="publicationTime" column="publication_time"/>
+        <result property="category" column="category"/>
     </resultMap>
 
     <sql id="selectResearchVo">
-        select id, title, author, institution, topic, publication_time, category from vr_research
+        select id, title, author, institution, topic, publication_time, category
+        from vr_research
     </sql>
 
     <select id="selectResearchList" parameterType="Research" resultMap="ResearchResult">
         <include refid="selectResearchVo"/>
-        <where>  
-            <if test="title != null  and title != ''"> and title like concat('%', #{title}, '%')</if>
-            <if test="author != null  and author != ''"> and author like concat('%', #{author}, '%')</if>
-            <if test="institution != null  and institution != ''"> and institution like concat('%', #{institution}, '%')</if>
-            <if test="topic != null  and topic != ''"> and topic like concat('%', #{topic}, '%')</if>
-            <if test="publicationTime != null "> and publication_time = #{publicationTime}</if>
-            <if test="category != null  and category != ''"> and category = #{category}</if>
+        <where>
+            <if test="title != null  and title != ''">and title like concat('%', #{title}, '%')</if>
+            <if test="author != null  and author != ''">and author like concat('%', #{author}, '%')</if>
+            <if test="institution != null  and institution != ''">and institution like concat('%', #{institution},
+                '%')
+            </if>
+            <if test="topic != null  and topic != ''">and topic like concat('%', #{topic}, '%')</if>
+            <if test="publicationTime != null ">and publication_time = #{publicationTime}</if>
+            <if test="category != null  and category != ''">and category = #{category}</if>
         </where>
     </select>
-    
+
     <select id="selectResearchById" parameterType="Long" resultMap="ResearchResult">
         <include refid="selectResearchVo"/>
         where id = #{id}
     </select>
-        
+
+    <select id="selectResearchByTitle" resultType="com.ruoyi.project.VRdemo.domain.Research">
+        <include refid="selectResearchVo"/>
+        WHERE title = #{title}
+    </select>
+
     <insert id="insertResearch" parameterType="Research" useGeneratedKeys="true" keyProperty="id">
         insert into vr_research
         <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -44,7 +52,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="topic != null">topic,</if>
             <if test="publicationTime != null">publication_time,</if>
             <if test="category != null">category,</if>
-         </trim>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="title != null">#{title},</if>
             <if test="author != null">#{author},</if>
@@ -52,7 +60,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="topic != null">#{topic},</if>
             <if test="publicationTime != null">#{publicationTime},</if>
             <if test="category != null">#{category},</if>
-         </trim>
+        </trim>
+    </insert>
+
+    <insert id="insertResearchDataList" parameterType="java.util.List">
+        INSERT INTO vr_research (title, author, institution, topic, publication_time, category, create_by,create_time)
+        VALUES
+        <foreach collection="list" item="item" separator=",">
+            (#{item.title}, #{item.author}, #{item.institution}, #{item.topic}, #{item.publicationTime},
+            #{item.category}, #{item.createBy}, #{item.createTime})
+        </foreach>
     </insert>
 
     <update id="updateResearch" parameterType="Research">
@@ -69,11 +86,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </update>
 
     <delete id="deleteResearchById" parameterType="Long">
-        delete from vr_research where id = #{id}
+        delete
+        from vr_research
+        where id = #{id}
     </delete>
 
     <delete id="deleteResearchByIds" parameterType="String">
-        delete from vr_research where id in 
+        delete from vr_research where id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>

+ 95 - 0
src/main/resources/mybatis/VRdemo/SpecialCollectionMapper.xml

@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.project.VRdemo.mapper.SpecialCollectionMapper">
+    
+    <resultMap type="SpecialCollection" id="SpecialCollectionResult">
+        <result property="id"    column="id"    />
+        <result property="title"    column="title"    />
+        <result property="content"    column="content"    />
+        <result property="link"    column="link"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="updateBy"    column="update_by"    />
+    </resultMap>
+
+    <sql id="selectCollectionVo">
+        select id, title, content, link, create_time, create_by, update_time, update_by from vr_special_collection
+    </sql>
+
+    <select id="selectCollectionList" parameterType="Collection" resultMap="SpecialCollectionResult">
+        <include refid="selectCollectionVo"/>
+        <where>  
+            <if test="title != null  and title != ''"> and title = #{title}</if>
+            <if test="content != null  and content != ''"> and content = #{content}</if>
+            <if test="link != null  and link != ''"> and link = #{link}</if>
+        </where>
+    </select>
+    
+    <select id="selectCollectionById" parameterType="Long" resultMap="SpecialCollectionResult">
+        <include refid="selectCollectionVo"/>
+        where id = #{id}
+    </select>
+
+    <select id="selectCollectionByTitle" resultType="String" resultMap="SpecialCollectionResult">
+        <include refid="selectCollectionVo"/>
+        WHERE title = #{title}
+    </select>
+        
+    <insert id="insertCollection" parameterType="Collection" useGeneratedKeys="true" keyProperty="id">
+        insert into vr_special_collection
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="title != null">title,</if>
+            <if test="content != null">content,</if>
+            <if test="link != null">link,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="updateBy != null">update_by,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="title != null">#{title},</if>
+            <if test="content != null">#{content},</if>
+            <if test="link != null">#{link},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+        </trim>
+    </insert>
+
+    <insert id="insertCollectionDataList" parameterType="java.util.List">
+        INSERT INTO vr_special_collection (title, content, link, create_by,create_time)
+        VALUES
+        <foreach collection="list" item="item" separator=",">
+            (#{item.title}, #{item.content}, #{item.link}, #{item.createBy}, #{item.createTime})
+        </foreach>
+    </insert>
+
+    <update id="updateCollection" parameterType="Collection">
+        update vr_special_collection
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="title != null">title = #{title},</if>
+            <if test="content != null">content = #{content},</if>
+            <if test="link != null">link = #{link},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteCollectionById" parameterType="Long">
+        delete from vr_special_collection where id = #{id}
+    </delete>
+
+    <delete id="deleteCollectionByIds" parameterType="String">
+        delete from vr_special_collection where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 50 - 26
src/main/resources/mybatis/VRdemo/ThesisMapper.xml

@@ -1,42 +1,55 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.project.VRdemo.mapper.ThesisMapper">
-    
+
     <resultMap type="Thesis" id="ThesisResult">
-        <result property="id"    column="id"    />
-        <result property="name"    column="name"    />
-        <result property="teacher"    column="teacher"    />
-        <result property="major"    column="major"    />
-        <result property="title"    column="title"    />
-        <result property="keyword"    column="keyword"    />
-        <result property="replyTime"    column="reply_time"    />
-        <result property="degree"    column="degree"    />
+        <result property="id" column="id"/>
+        <result property="name" column="name"/>
+        <result property="teacher" column="teacher"/>
+        <result property="major" column="major"/>
+        <result property="title" column="title"/>
+        <result property="keyword" column="keyword"/>
+        <result property="replyTime" column="reply_time"/>
+        <result property="degree" column="degree"/>
     </resultMap>
 
     <sql id="selectThesisVo">
-        select id, name, teacher, major, title, keyword, reply_time, degree from vr_thesis
+        select id,
+               name,
+               teacher,
+               major,
+               title,
+               keyword,
+               reply_time,
+               degree
+        from vr_thesis
     </sql>
 
     <select id="selectThesisList" parameterType="Thesis" resultMap="ThesisResult">
         <include refid="selectThesisVo"/>
-        <where>  
-            <if test="name != null  and name != ''"> and name like concat('%', #{name}, '%')</if>
-            <if test="teacher != null  and teacher != ''"> and teacher = #{teacher}</if>
-            <if test="major != null  and major != ''"> and major = #{major}</if>
-            <if test="title != null  and title != ''"> and title = #{title}</if>
-            <if test="keyword != null  and keyword != ''"> and keyword = #{keyword}</if>
-            <if test="replyTime != null  and replyTime != ''"> and reply_time = #{replyTime}</if>
-            <if test="degree != null  and degree != ''"> and degree = #{degree}</if>
+        <where>
+            <if test="name != null  and name != ''">and name like concat('%', #{name}, '%')</if>
+            <if test="teacher != null  and teacher != ''">and teacher = #{teacher}</if>
+            <if test="major != null  and major != ''">and major = #{major}</if>
+            <if test="title != null  and title != ''">and title = #{title}</if>
+            <if test="keyword != null  and keyword != ''">and keyword = #{keyword}</if>
+            <if test="replyTime != null  and replyTime != ''">and reply_time = #{replyTime}</if>
+            <if test="degree != null  and degree != ''">and degree = #{degree}</if>
         </where>
     </select>
-    
+
     <select id="selectThesisById" parameterType="Long" resultMap="ThesisResult">
         <include refid="selectThesisVo"/>
         where id = #{id}
     </select>
-        
+
+    <select id="selectThesisByTitle" resultType="com.ruoyi.project.VRdemo.domain.Thesis">
+        <include refid="selectThesisVo"/>
+        WHERE title = #{title}
+    </select>
+
     <insert id="insertThesis" parameterType="Thesis" useGeneratedKeys="true" keyProperty="id">
         insert into vr_thesis
         <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -47,7 +60,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="keyword != null">keyword,</if>
             <if test="replyTime != null">reply_time,</if>
             <if test="degree != null">degree,</if>
-         </trim>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="name != null">#{name},</if>
             <if test="teacher != null">#{teacher},</if>
@@ -56,7 +69,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="keyword != null">#{keyword},</if>
             <if test="replyTime != null">#{replyTime},</if>
             <if test="degree != null">#{degree},</if>
-         </trim>
+        </trim>
+    </insert>
+
+    <insert id="insertThesisDataList" parameterType="java.util.List">
+        INSERT INTO vr_thesis (name, teacher, major, title, keyword, reply_time, degree, create_by,create_time)
+        VALUES
+        <foreach collection="list" item="item" separator=",">
+            (#{item.name}, #{item.teacher}, #{item.major}, #{item.title}, #{item.keyword}, #{item.replyTime},
+            #{item.degree}, #{item.createBy}, #{item.createTime})
+        </foreach>
     </insert>
 
     <update id="updateThesis" parameterType="Thesis">
@@ -74,11 +96,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </update>
 
     <delete id="deleteThesisById" parameterType="Long">
-        delete from vr_thesis where id = #{id}
+        delete
+        from vr_thesis
+        where id = #{id}
     </delete>
 
     <delete id="deleteThesisByIds" parameterType="String">
-        delete from vr_thesis where id in 
+        delete from vr_thesis where id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>